@tutti-os/agent-gui 0.0.52 → 0.0.53
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/agent-message-center/index.js +18 -0
- package/dist/agent-message-center/index.js.map +1 -1
- package/dist/{chunk-ARCM7YB2.js → chunk-GWHPTB4L.js} +12 -2
- package/dist/{chunk-ARCM7YB2.js.map → chunk-GWHPTB4L.js.map} +1 -1
- package/dist/context-mention-palette/index.js +1 -1
- package/dist/index.d.ts +2 -0
- package/dist/index.js +108 -53
- package/dist/index.js.map +1 -1
- package/dist/workspace-agent-generated-files.js +1 -1
- package/package.json +14 -14
package/dist/index.js
CHANGED
|
@@ -87,7 +87,7 @@ import {
|
|
|
87
87
|
isWorkspaceAgentUntitledTask,
|
|
88
88
|
mergeWorkspaceAgentActivityDurableAndOverlayMessages,
|
|
89
89
|
selectWorkspaceAgentActivityOverlayMessages
|
|
90
|
-
} from "./chunk-
|
|
90
|
+
} from "./chunk-GWHPTB4L.js";
|
|
91
91
|
import {
|
|
92
92
|
MANAGED_AGENT_ICON_FALLBACK_URL,
|
|
93
93
|
MANAGED_AGENT_ICON_URLS,
|
|
@@ -4100,7 +4100,7 @@ function setAgentSessionViewDetailMessages(ref, nextMessages, options = {}) {
|
|
|
4100
4100
|
return;
|
|
4101
4101
|
}
|
|
4102
4102
|
updateAgentSessionView(normalized, (current) => {
|
|
4103
|
-
const detailMessages = mergeMessages([], nextMessages);
|
|
4103
|
+
const detailMessages = mergeMessages([], durableOnlyMessages(nextMessages));
|
|
4104
4104
|
const oldestLoadedVersion = oldestMessageVersion(detailMessages);
|
|
4105
4105
|
if (sameMessages(current.detailMessages, detailMessages) && current.oldestLoadedVersion === oldestLoadedVersion && current.hasOlderMessages === (options.hasOlderMessages ?? current.hasOlderMessages) && current.isLoadingOlderMessages === (options.isLoadingOlderMessages ?? current.isLoadingOlderMessages)) {
|
|
4106
4106
|
return current;
|
|
@@ -4120,7 +4120,10 @@ function mergeAgentSessionViewDetailMessages(ref, nextMessages, options = {}) {
|
|
|
4120
4120
|
return;
|
|
4121
4121
|
}
|
|
4122
4122
|
updateAgentSessionView(normalized, (current) => {
|
|
4123
|
-
const detailMessages = mergeMessages(
|
|
4123
|
+
const detailMessages = mergeMessages(
|
|
4124
|
+
current.detailMessages,
|
|
4125
|
+
durableOnlyMessages(nextMessages)
|
|
4126
|
+
);
|
|
4124
4127
|
const oldestLoadedVersion = oldestMessageVersion(detailMessages);
|
|
4125
4128
|
if (sameMessages(current.detailMessages, detailMessages) && current.oldestLoadedVersion === oldestLoadedVersion && current.hasOlderMessages === (options.hasOlderMessages ?? current.hasOlderMessages) && current.isLoadingOlderMessages === (options.isLoadingOlderMessages ?? current.isLoadingOlderMessages)) {
|
|
4126
4129
|
return current;
|
|
@@ -4581,8 +4584,13 @@ function sameMessages(left, right) {
|
|
|
4581
4584
|
(item, index) => equivalentMessageValue(item, right[index])
|
|
4582
4585
|
);
|
|
4583
4586
|
}
|
|
4587
|
+
function durableOnlyMessages(messages) {
|
|
4588
|
+
return messages.filter(
|
|
4589
|
+
(message) => !isWorkspaceAgentActivityOptimisticMessage(message)
|
|
4590
|
+
);
|
|
4591
|
+
}
|
|
4584
4592
|
function oldestMessageVersion(messages) {
|
|
4585
|
-
const versions = messages.map((message) => message.version).filter((version) => Number.isFinite(version));
|
|
4593
|
+
const versions = messages.filter((message) => !isWorkspaceAgentActivityOptimisticMessage(message)).map((message) => message.version).filter((version) => Number.isFinite(version));
|
|
4586
4594
|
return versions.length === 0 ? null : Math.min(...versions);
|
|
4587
4595
|
}
|
|
4588
4596
|
function equivalentMessageValue(left, right) {
|
|
@@ -6096,6 +6104,42 @@ function useAgentGuiConversationList(query) {
|
|
|
6096
6104
|
);
|
|
6097
6105
|
}
|
|
6098
6106
|
|
|
6107
|
+
// agent-gui/agentGuiNode/controller/agentGuiController.promptHelpers.ts
|
|
6108
|
+
function createOptimisticPromptMessage(input) {
|
|
6109
|
+
const clientSubmitMessageId = input.clientSubmitId ? createWorkspaceAgentActivityUserMessageIdFromClientSubmitId(
|
|
6110
|
+
input.clientSubmitId
|
|
6111
|
+
) : null;
|
|
6112
|
+
return {
|
|
6113
|
+
id: 0,
|
|
6114
|
+
workspaceId: input.workspaceId,
|
|
6115
|
+
agentSessionId: input.agentSessionId,
|
|
6116
|
+
messageId: clientSubmitMessageId ?? `optimistic:user:${input.turnId}`,
|
|
6117
|
+
version: 0,
|
|
6118
|
+
turnId: input.turnId,
|
|
6119
|
+
role: "user",
|
|
6120
|
+
kind: "text",
|
|
6121
|
+
payload: {
|
|
6122
|
+
__agentGuiOptimisticPrompt: true,
|
|
6123
|
+
actorId: input.userId,
|
|
6124
|
+
...input.clientSubmitId ? { clientSubmitId: input.clientSubmitId } : {},
|
|
6125
|
+
content: input.content,
|
|
6126
|
+
text: input.prompt
|
|
6127
|
+
},
|
|
6128
|
+
occurredAtUnixMs: input.occurredAtUnixMs,
|
|
6129
|
+
startedAtUnixMs: input.occurredAtUnixMs
|
|
6130
|
+
};
|
|
6131
|
+
}
|
|
6132
|
+
function normalizeOptionalText(value) {
|
|
6133
|
+
if (typeof value !== "string") {
|
|
6134
|
+
return null;
|
|
6135
|
+
}
|
|
6136
|
+
const trimmed = value.trim();
|
|
6137
|
+
return trimmed ? trimmed : null;
|
|
6138
|
+
}
|
|
6139
|
+
function recordValue(value) {
|
|
6140
|
+
return value !== null && typeof value === "object" && !Array.isArray(value) ? value : null;
|
|
6141
|
+
}
|
|
6142
|
+
|
|
6099
6143
|
// agent-gui/agentGuiNode/controller/useAgentGUIActivation.ts
|
|
6100
6144
|
import { useCallback as useCallback3, useMemo as useMemo3, useState as useState3 } from "react";
|
|
6101
6145
|
function useAgentGUIActivation({
|
|
@@ -6305,18 +6349,6 @@ function composerSettingsSupportFromOptions(composerOptions, sessionRuntimeConte
|
|
|
6305
6349
|
};
|
|
6306
6350
|
}
|
|
6307
6351
|
|
|
6308
|
-
// agent-gui/agentGuiNode/controller/agentGuiController.promptHelpers.ts
|
|
6309
|
-
function normalizeOptionalText(value) {
|
|
6310
|
-
if (typeof value !== "string") {
|
|
6311
|
-
return null;
|
|
6312
|
-
}
|
|
6313
|
-
const trimmed = value.trim();
|
|
6314
|
-
return trimmed ? trimmed : null;
|
|
6315
|
-
}
|
|
6316
|
-
function recordValue(value) {
|
|
6317
|
-
return value !== null && typeof value === "object" && !Array.isArray(value) ? value : null;
|
|
6318
|
-
}
|
|
6319
|
-
|
|
6320
6352
|
// agent-gui/agentGuiNode/controller/agentGuiController.composerHelpers.ts
|
|
6321
6353
|
function normalizeConfigOptionValue(value) {
|
|
6322
6354
|
return typeof value === "string" && value.trim() ? value.trim() : null;
|
|
@@ -7410,17 +7442,46 @@ function messageActivityTimeUnixMs(message) {
|
|
|
7410
7442
|
function minFiniteMessageVersion(messages) {
|
|
7411
7443
|
let result = null;
|
|
7412
7444
|
for (const message of messages) {
|
|
7413
|
-
if (!Number.isFinite(message.version)) {
|
|
7445
|
+
if (!Number.isFinite(message.version) || isWorkspaceAgentActivityOptimisticMessage(message)) {
|
|
7414
7446
|
continue;
|
|
7415
7447
|
}
|
|
7416
7448
|
result = result === null ? message.version : Math.min(result, message.version);
|
|
7417
7449
|
}
|
|
7418
7450
|
return result;
|
|
7419
7451
|
}
|
|
7420
|
-
function
|
|
7421
|
-
return
|
|
7422
|
-
|
|
7423
|
-
|
|
7452
|
+
function isUserTextMessage(message) {
|
|
7453
|
+
return message.kind.trim().toLowerCase() === "text" && message.role.trim().toLowerCase() === "user" && workspaceAgentActivityMessageText(message).trim() !== "";
|
|
7454
|
+
}
|
|
7455
|
+
function windowHasTurnMissingUserPrompt(messages, newestPagedVersion) {
|
|
7456
|
+
if (newestPagedVersion === null) {
|
|
7457
|
+
return messages.length > 0 && !messages.some(isUserTextMessage);
|
|
7458
|
+
}
|
|
7459
|
+
const turnIdsWithUserPrompt = /* @__PURE__ */ new Set();
|
|
7460
|
+
const pagedTurnIds = /* @__PURE__ */ new Set();
|
|
7461
|
+
for (const message of messages) {
|
|
7462
|
+
if (isWorkspaceAgentActivityOptimisticMessage(message)) {
|
|
7463
|
+
continue;
|
|
7464
|
+
}
|
|
7465
|
+
const turnId = message.turnId?.trim() ?? "";
|
|
7466
|
+
if (!turnId) {
|
|
7467
|
+
continue;
|
|
7468
|
+
}
|
|
7469
|
+
if (Number.isFinite(message.version) && message.version <= newestPagedVersion) {
|
|
7470
|
+
pagedTurnIds.add(turnId);
|
|
7471
|
+
}
|
|
7472
|
+
if (isUserTextMessage(message)) {
|
|
7473
|
+
turnIdsWithUserPrompt.add(turnId);
|
|
7474
|
+
}
|
|
7475
|
+
}
|
|
7476
|
+
if (pagedTurnIds.size === 0) {
|
|
7477
|
+
return false;
|
|
7478
|
+
}
|
|
7479
|
+
for (const turnId of pagedTurnIds) {
|
|
7480
|
+
if (!turnIdsWithUserPrompt.has(turnId)) {
|
|
7481
|
+
return true;
|
|
7482
|
+
}
|
|
7483
|
+
}
|
|
7484
|
+
return false;
|
|
7424
7485
|
}
|
|
7425
7486
|
function workspaceAgentActivityMessageText(message) {
|
|
7426
7487
|
const payload = message.payload;
|
|
@@ -7450,7 +7511,7 @@ function workspaceAgentActivityMessageText(message) {
|
|
|
7450
7511
|
function maxFiniteMessageVersion(messages) {
|
|
7451
7512
|
let result = null;
|
|
7452
7513
|
for (const message of messages) {
|
|
7453
|
-
if (!Number.isFinite(message.version)) {
|
|
7514
|
+
if (!Number.isFinite(message.version) || isWorkspaceAgentActivityOptimisticMessage(message)) {
|
|
7454
7515
|
continue;
|
|
7455
7516
|
}
|
|
7456
7517
|
result = result === null ? message.version : Math.max(result, message.version);
|
|
@@ -7627,30 +7688,6 @@ function createAgentGUIConversationId() {
|
|
|
7627
7688
|
const fallbackHex = Math.random().toString(16).slice(2).padEnd(12, "0");
|
|
7628
7689
|
return `00000000-0000-4000-8000-${fallbackHex.slice(0, 12)}`;
|
|
7629
7690
|
}
|
|
7630
|
-
function createOptimisticPromptMessage(input) {
|
|
7631
|
-
const clientSubmitMessageId = input.clientSubmitId ? createWorkspaceAgentActivityUserMessageIdFromClientSubmitId(
|
|
7632
|
-
input.clientSubmitId
|
|
7633
|
-
) : null;
|
|
7634
|
-
return {
|
|
7635
|
-
id: Math.max(1, Math.floor(input.occurredAtUnixMs)),
|
|
7636
|
-
workspaceId: input.workspaceId,
|
|
7637
|
-
agentSessionId: input.agentSessionId,
|
|
7638
|
-
messageId: clientSubmitMessageId ?? `optimistic:user:${input.turnId}`,
|
|
7639
|
-
version: Math.max(1, Math.floor(input.occurredAtUnixMs)),
|
|
7640
|
-
turnId: input.turnId,
|
|
7641
|
-
role: "user",
|
|
7642
|
-
kind: "text",
|
|
7643
|
-
payload: {
|
|
7644
|
-
__agentGuiOptimisticPrompt: true,
|
|
7645
|
-
actorId: input.userId,
|
|
7646
|
-
...input.clientSubmitId ? { clientSubmitId: input.clientSubmitId } : {},
|
|
7647
|
-
content: input.content,
|
|
7648
|
-
text: input.prompt
|
|
7649
|
-
},
|
|
7650
|
-
occurredAtUnixMs: input.occurredAtUnixMs,
|
|
7651
|
-
startedAtUnixMs: input.occurredAtUnixMs
|
|
7652
|
-
};
|
|
7653
|
-
}
|
|
7654
7691
|
function createPendingOptimisticTurnId(clientSubmitId) {
|
|
7655
7692
|
return `pending:${clientSubmitId}`;
|
|
7656
7693
|
}
|
|
@@ -9987,7 +10024,10 @@ function useAgentGUINodeController({
|
|
|
9987
10024
|
);
|
|
9988
10025
|
let hasOlderMessages = page.hasMore && page.messages.length > 0;
|
|
9989
10026
|
let oldestLoadedVersion = minFiniteMessageVersion(detailMessages);
|
|
9990
|
-
for (let backfillPageIndex = 0; hasOlderMessages &&
|
|
10027
|
+
for (let backfillPageIndex = 0; hasOlderMessages && windowHasTurnMissingUserPrompt(
|
|
10028
|
+
detailMessages,
|
|
10029
|
+
maxFiniteMessageVersion(page.messages)
|
|
10030
|
+
) && oldestLoadedVersion !== null && backfillPageIndex < AGENT_GUI_DETAIL_MISSING_USER_BACKFILL_PAGE_LIMIT; backfillPageIndex += 1) {
|
|
9991
10031
|
reportAgentGUIMessagePageDiagnostic({
|
|
9992
10032
|
agentSessionId: normalizedAgentSessionId,
|
|
9993
10033
|
details: {
|
|
@@ -26228,13 +26268,20 @@ function getDockAgentProbeLineLabel(line) {
|
|
|
26228
26268
|
function AgentProbeInfoPopover({
|
|
26229
26269
|
lines,
|
|
26230
26270
|
testId = "agent-probe-info",
|
|
26231
|
-
className
|
|
26271
|
+
className,
|
|
26272
|
+
onOpen
|
|
26232
26273
|
}) {
|
|
26233
26274
|
"use memo";
|
|
26234
26275
|
const anchorRef = useRef13(null);
|
|
26235
26276
|
const popoverRef = useRef13(null);
|
|
26236
26277
|
const [isOpen, setIsOpen] = useState12(false);
|
|
26237
26278
|
const [popoverStyle, setPopoverStyle] = useState12(null);
|
|
26279
|
+
const openPopover = useCallback11(() => {
|
|
26280
|
+
if (!isOpen) {
|
|
26281
|
+
onOpen?.();
|
|
26282
|
+
}
|
|
26283
|
+
setIsOpen(true);
|
|
26284
|
+
}, [isOpen, onOpen]);
|
|
26238
26285
|
const closeIfPointerLeavesPopover = useCallback11((event) => {
|
|
26239
26286
|
const nextTarget = event.relatedTarget;
|
|
26240
26287
|
if (nextTarget instanceof Node && (anchorRef.current?.contains(nextTarget) || popoverRef.current?.contains(nextTarget))) {
|
|
@@ -26296,7 +26343,7 @@ function AgentProbeInfoPopover({
|
|
|
26296
26343
|
className: "desktop-dock-popup__agent-info-popover desktop-dock-popup__agent-info-popover--portal",
|
|
26297
26344
|
role: "status",
|
|
26298
26345
|
style: popoverStyle ?? void 0,
|
|
26299
|
-
onMouseEnter:
|
|
26346
|
+
onMouseEnter: openPopover,
|
|
26300
26347
|
onMouseLeave: closeIfPointerLeavesPopover,
|
|
26301
26348
|
children: /* @__PURE__ */ jsx32("ul", { className: "desktop-dock-popup__agent-info-list", children: lines.map((line) => {
|
|
26302
26349
|
const label = getDockAgentProbeLineLabel(line);
|
|
@@ -26334,12 +26381,12 @@ function AgentProbeInfoPopover({
|
|
|
26334
26381
|
"data-testid": testId,
|
|
26335
26382
|
onMouseEnter: () => {
|
|
26336
26383
|
updatePopoverPosition();
|
|
26337
|
-
|
|
26384
|
+
openPopover();
|
|
26338
26385
|
},
|
|
26339
26386
|
onMouseLeave: closeIfPointerLeavesPopover,
|
|
26340
26387
|
onFocus: () => {
|
|
26341
26388
|
updatePopoverPosition();
|
|
26342
|
-
|
|
26389
|
+
openPopover();
|
|
26343
26390
|
},
|
|
26344
26391
|
onBlur: () => setIsOpen(false),
|
|
26345
26392
|
children: [
|
|
@@ -26692,7 +26739,7 @@ function areAgentGUINodePropsEqual(previous, next) {
|
|
|
26692
26739
|
previous.workspaceAgentProbes,
|
|
26693
26740
|
next.workspaceAgentProbes,
|
|
26694
26741
|
previous.state.provider
|
|
26695
|
-
) && previous.onAgentProbeDemandChange === next.onAgentProbeDemandChange && 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;
|
|
26742
|
+
) && previous.onAgentProbeDemandChange === next.onAgentProbeDemandChange && previous.onAgentProbeRefreshRequest === next.onAgentProbeRefreshRequest && 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;
|
|
26696
26743
|
}
|
|
26697
26744
|
var AgentGUINode = memo2(function AgentGUINode2({
|
|
26698
26745
|
nodeId,
|
|
@@ -26738,6 +26785,7 @@ var AgentGUINode = memo2(function AgentGUINode2({
|
|
|
26738
26785
|
onShowMessage,
|
|
26739
26786
|
workspaceAgentProbes,
|
|
26740
26787
|
onAgentProbeDemandChange,
|
|
26788
|
+
onAgentProbeRefreshRequest,
|
|
26741
26789
|
managedAgentsState,
|
|
26742
26790
|
contextMentionProviders,
|
|
26743
26791
|
workspaceAppIcons,
|
|
@@ -27472,6 +27520,12 @@ var AgentGUINode = memo2(function AgentGUINode2({
|
|
|
27472
27520
|
onAgentProbeDemandChange(null, probeSourceId);
|
|
27473
27521
|
};
|
|
27474
27522
|
}, [activeProbeProvider, nodeId, onAgentProbeDemandChange, previewMode]);
|
|
27523
|
+
const handleAgentProbeInfoOpen = useCallback12(() => {
|
|
27524
|
+
if (previewMode || !onAgentProbeRefreshRequest) {
|
|
27525
|
+
return;
|
|
27526
|
+
}
|
|
27527
|
+
onAgentProbeRefreshRequest(activeProbeProvider, `agent-gui:${nodeId}`);
|
|
27528
|
+
}, [activeProbeProvider, nodeId, onAgentProbeRefreshRequest, previewMode]);
|
|
27475
27529
|
return /* @__PURE__ */ jsx33(
|
|
27476
27530
|
WorkspaceNodeWindow,
|
|
27477
27531
|
{
|
|
@@ -27504,7 +27558,8 @@ var AgentGUINode = memo2(function AgentGUINode2({
|
|
|
27504
27558
|
{
|
|
27505
27559
|
lines: agentProbeLines,
|
|
27506
27560
|
testId: "agent-gui-window-agent-info",
|
|
27507
|
-
className: AgentGUINode_styles_default.windowAgentInfo
|
|
27561
|
+
className: AgentGUINode_styles_default.windowAgentInfo,
|
|
27562
|
+
onOpen: handleAgentProbeInfoOpen
|
|
27508
27563
|
}
|
|
27509
27564
|
),
|
|
27510
27565
|
/* @__PURE__ */ jsx33(
|