@tutti-os/agent-gui 0.0.16 → 0.0.17
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/agent-conversation/index.js +4 -4
- package/dist/agent-message-center/index.d.ts +4 -1
- package/dist/agent-message-center/index.js +172 -9
- package/dist/agent-message-center/index.js.map +1 -1
- package/dist/app/renderer/agentactivity.css +32 -0
- package/dist/{chunk-SIDWRR5I.js → chunk-65YMY2M3.js} +5 -1
- package/dist/chunk-65YMY2M3.js.map +1 -0
- package/dist/{chunk-EKATXC3W.js → chunk-CDTTIUPL.js} +2 -2
- package/dist/{chunk-267VY3EJ.js → chunk-HVOPJU2K.js} +4 -4
- package/dist/{chunk-FJYH2ZPX.js → chunk-K44WER5Z.js} +2 -2
- package/dist/{chunk-KWPL3JYS.js → chunk-KHTIC52P.js} +2 -2
- package/dist/{chunk-CABHBFYH.js → chunk-OJ5WX7SZ.js} +2 -2
- package/dist/{chunk-LWRYYGPZ.js → chunk-VNAQ6QFE.js} +4 -4
- package/dist/{chunk-LW2S255I.js → chunk-VO2TZNKV.js} +4 -4
- package/dist/context-mention-palette/index.js +5 -5
- package/dist/i18n/index.d.ts +4 -0
- package/dist/i18n/index.js +1 -1
- package/dist/index.js +194 -43
- package/dist/index.js.map +1 -1
- package/dist/workspace-agent-generated-files.js +2 -2
- package/package.json +12 -12
- package/dist/chunk-SIDWRR5I.js.map +0 -1
- /package/dist/{chunk-EKATXC3W.js.map → chunk-CDTTIUPL.js.map} +0 -0
- /package/dist/{chunk-267VY3EJ.js.map → chunk-HVOPJU2K.js.map} +0 -0
- /package/dist/{chunk-FJYH2ZPX.js.map → chunk-K44WER5Z.js.map} +0 -0
- /package/dist/{chunk-KWPL3JYS.js.map → chunk-KHTIC52P.js.map} +0 -0
- /package/dist/{chunk-CABHBFYH.js.map → chunk-OJ5WX7SZ.js.map} +0 -0
- /package/dist/{chunk-LWRYYGPZ.js.map → chunk-VNAQ6QFE.js.map} +0 -0
- /package/dist/{chunk-LW2S255I.js.map → chunk-VO2TZNKV.js.map} +0 -0
|
@@ -6,15 +6,15 @@ import {
|
|
|
6
6
|
projectAgentConversationVM,
|
|
7
7
|
reconcileProjectedAgentConversationVM,
|
|
8
8
|
useProjectedAgentConversation
|
|
9
|
-
} from "../chunk-
|
|
10
|
-
import "../chunk-
|
|
11
|
-
import "../chunk-
|
|
9
|
+
} from "../chunk-HVOPJU2K.js";
|
|
10
|
+
import "../chunk-K44WER5Z.js";
|
|
11
|
+
import "../chunk-KHTIC52P.js";
|
|
12
12
|
import "../chunk-XJ34OIEQ.js";
|
|
13
13
|
import "../chunk-O5TUTXHT.js";
|
|
14
14
|
import "../chunk-TYGL25EL.js";
|
|
15
15
|
import {
|
|
16
16
|
translate
|
|
17
|
-
} from "../chunk-
|
|
17
|
+
} from "../chunk-65YMY2M3.js";
|
|
18
18
|
import "../chunk-LUGELG5V.js";
|
|
19
19
|
import "../chunk-PJP5BUU6.js";
|
|
20
20
|
|
|
@@ -57,6 +57,7 @@ interface WorkspaceAgentMessageCenterTurnOutcome {
|
|
|
57
57
|
interface BuildWorkspaceAgentMessageCenterOptions {
|
|
58
58
|
avoidGroupingEdits?: boolean;
|
|
59
59
|
identityBySessionId?: Record<string, WorkspaceAgentMessageCenterIdentity>;
|
|
60
|
+
itemCutoffUnixMs?: number | null;
|
|
60
61
|
promptFallbackLabels?: WorkspaceAgentMessageCenterPromptFallbackLabels;
|
|
61
62
|
workspaceRoot?: string | null;
|
|
62
63
|
}
|
|
@@ -226,4 +227,6 @@ declare function approvalOptionDisplayLabel(option: {
|
|
|
226
227
|
feedback?: boolean;
|
|
227
228
|
}): string;
|
|
228
229
|
|
|
229
|
-
|
|
230
|
+
declare function stabilizeWorkspaceAgentMessageCenterModel(previous: WorkspaceAgentMessageCenterModel | null, next: WorkspaceAgentMessageCenterModel): WorkspaceAgentMessageCenterModel;
|
|
231
|
+
|
|
232
|
+
export { AgentInteractivePromptSurface, type BuildWorkspaceAgentMessageCenterOptions, type PromptToolDetail, WorkspaceAgentMessageCenterCard, type WorkspaceAgentMessageCenterCardProps, type WorkspaceAgentMessageCenterCounts, type WorkspaceAgentMessageCenterDigest, type WorkspaceAgentMessageCenterDigestPrimary, type WorkspaceAgentMessageCenterDigestPrimaryKind, type WorkspaceAgentMessageCenterIdentity, type WorkspaceAgentMessageCenterItem, type WorkspaceAgentMessageCenterModel, WorkspaceAgentMessageCenterPanel, type WorkspaceAgentMessageCenterPanelProps, approvalOptionDisplayLabel, buildWorkspaceAgentInteractivePromptLabels, buildWorkspaceAgentMessageCenterModel, getPromptToolDetails, isPromptRequestIdTitle, isWaitingMessageCenterItem, managedAgentRoundedIconUrl, stabilizeWorkspaceAgentMessageCenterModel, userAvatarPlaceholderUrl, workspaceAgentActivityStatusLabel };
|
|
@@ -3,7 +3,7 @@ import {
|
|
|
3
3
|
approvalOptionDisplayLabel,
|
|
4
4
|
getPromptToolDetails,
|
|
5
5
|
isPromptRequestIdTitle
|
|
6
|
-
} from "../chunk-
|
|
6
|
+
} from "../chunk-VO2TZNKV.js";
|
|
7
7
|
import {
|
|
8
8
|
PLAN_IMPLEMENTATION_ACTION_IMPLEMENT,
|
|
9
9
|
PLAN_IMPLEMENTATION_PROMPT,
|
|
@@ -16,12 +16,12 @@ import {
|
|
|
16
16
|
cn,
|
|
17
17
|
extractAgentMcpToolTarget,
|
|
18
18
|
normalizeAskUserQuestions
|
|
19
|
-
} from "../chunk-
|
|
19
|
+
} from "../chunk-K44WER5Z.js";
|
|
20
20
|
import {
|
|
21
21
|
managedAgentRoundedIconUrl,
|
|
22
22
|
userAvatarPlaceholderUrl,
|
|
23
23
|
workspaceAgentActivityStatusLabel
|
|
24
|
-
} from "../chunk-
|
|
24
|
+
} from "../chunk-CDTTIUPL.js";
|
|
25
25
|
import "../chunk-MTFSQWZ6.js";
|
|
26
26
|
import {
|
|
27
27
|
resolveWorkspaceAgentSessionSortTimeUnixMs
|
|
@@ -36,7 +36,7 @@ import {
|
|
|
36
36
|
import {
|
|
37
37
|
AgentGuiI18nProvider,
|
|
38
38
|
useTranslation
|
|
39
|
-
} from "../chunk-
|
|
39
|
+
} from "../chunk-65YMY2M3.js";
|
|
40
40
|
import "../chunk-PJP5BUU6.js";
|
|
41
41
|
|
|
42
42
|
// agent-message-center/WorkspaceAgentMessageCenterPanel.tsx
|
|
@@ -507,7 +507,9 @@ function buildWorkspaceAgentMessageCenterModel(snapshot, options = {}) {
|
|
|
507
507
|
latestTurnOutcome: latestTurnOutcome(session.agentSessionId, messages),
|
|
508
508
|
sortTimeUnixMs
|
|
509
509
|
};
|
|
510
|
-
})
|
|
510
|
+
}).filter(
|
|
511
|
+
(item) => isWithinMessageCenterItemCutoff(item, options.itemCutoffUnixMs)
|
|
512
|
+
);
|
|
511
513
|
return {
|
|
512
514
|
waitingCount: items.filter(isWaitingMessageCenterItem).length,
|
|
513
515
|
items: items.sort(compareMessageCenterItems),
|
|
@@ -539,6 +541,16 @@ function isWaitingMessageCenterItem(item) {
|
|
|
539
541
|
function isInteractiveMessageCenterItem(item) {
|
|
540
542
|
return item.pendingPrompt !== null;
|
|
541
543
|
}
|
|
544
|
+
function isWithinMessageCenterItemCutoff(item, cutoffUnixMs) {
|
|
545
|
+
if (!Number.isFinite(cutoffUnixMs)) {
|
|
546
|
+
return true;
|
|
547
|
+
}
|
|
548
|
+
if (isWaitingMessageCenterItem(item)) {
|
|
549
|
+
return true;
|
|
550
|
+
}
|
|
551
|
+
const timestamp = item.sortTimeUnixMs || item.lastAgentMessageAtUnixMs || 0;
|
|
552
|
+
return timestamp >= Number(cutoffUnixMs);
|
|
553
|
+
}
|
|
542
554
|
function selectMessageCenterAttentionDeckItems(items) {
|
|
543
555
|
return items.filter(isInteractiveMessageCenterItem);
|
|
544
556
|
}
|
|
@@ -1229,8 +1241,35 @@ var WorkspaceAgentMessageCenterStack = memo(
|
|
|
1229
1241
|
]
|
|
1230
1242
|
}
|
|
1231
1243
|
);
|
|
1232
|
-
}
|
|
1244
|
+
},
|
|
1245
|
+
areMessageCenterStackPropsEqual
|
|
1233
1246
|
);
|
|
1247
|
+
function areMessageCenterStackPropsEqual(previous, next) {
|
|
1248
|
+
if (previous.className !== next.className || previous.expanded !== next.expanded || previous.groupId !== next.groupId || previous.onCollapse !== next.onCollapse || previous.onExpand !== next.onExpand || previous.renderCard !== next.renderCard) {
|
|
1249
|
+
return false;
|
|
1250
|
+
}
|
|
1251
|
+
if (next.expanded) {
|
|
1252
|
+
return previous.highlightedItemId === next.highlightedItemId && previous.items === next.items;
|
|
1253
|
+
}
|
|
1254
|
+
return messageCenterCollapsedStackSignature(previous.items) === messageCenterCollapsedStackSignature(next.items);
|
|
1255
|
+
}
|
|
1256
|
+
function messageCenterCollapsedStackSignature(items) {
|
|
1257
|
+
const firstItem = items[0];
|
|
1258
|
+
if (!firstItem) {
|
|
1259
|
+
return "0";
|
|
1260
|
+
}
|
|
1261
|
+
const hasWaiting = items.some(isWaitingMessageCenterItem) ? "1" : "0";
|
|
1262
|
+
return [
|
|
1263
|
+
items.length,
|
|
1264
|
+
firstItem.id,
|
|
1265
|
+
firstItem.provider,
|
|
1266
|
+
firstItem.userId ?? "",
|
|
1267
|
+
firstItem.identity?.userName ?? "",
|
|
1268
|
+
firstItem.identity?.agentName ?? "",
|
|
1269
|
+
hasWaiting,
|
|
1270
|
+
messageCenterStackPreviewText(firstItem)
|
|
1271
|
+
].join(":");
|
|
1272
|
+
}
|
|
1234
1273
|
function useBatchedMessageCenterStackItems({
|
|
1235
1274
|
expanded,
|
|
1236
1275
|
highlightedItemId,
|
|
@@ -2043,6 +2082,40 @@ function messageCenterAgentUserStackId(item) {
|
|
|
2043
2082
|
const userId = item.userId?.trim() || "unknown-user";
|
|
2044
2083
|
return `agent-user:${provider}:${userId}`;
|
|
2045
2084
|
}
|
|
2085
|
+
function messageCenterStackRenderId(groupId, stackId) {
|
|
2086
|
+
return groupId === stackId ? stackId : `${groupId}:${stackId}`;
|
|
2087
|
+
}
|
|
2088
|
+
function messageCenterStackScrollSyncSegment({
|
|
2089
|
+
expanded,
|
|
2090
|
+
groupId,
|
|
2091
|
+
stack
|
|
2092
|
+
}) {
|
|
2093
|
+
const stackId = messageCenterStackRenderId(groupId, stack.id);
|
|
2094
|
+
if (expanded) {
|
|
2095
|
+
return `expanded:${stackId}:${stack.items.map((item) => item.id).join("|")}`;
|
|
2096
|
+
}
|
|
2097
|
+
return `collapsed:${stackId}:${messageCenterCollapsedStackSignature2(
|
|
2098
|
+
stack.items
|
|
2099
|
+
)}`;
|
|
2100
|
+
}
|
|
2101
|
+
function messageCenterCollapsedStackSignature2(items) {
|
|
2102
|
+
const firstItem = items[0];
|
|
2103
|
+
if (!firstItem) {
|
|
2104
|
+
return "0";
|
|
2105
|
+
}
|
|
2106
|
+
const hasWaiting = items.some(isWaitingMessageCenterItem) ? "1" : "0";
|
|
2107
|
+
const summary = firstItem.digest.primary.summary.trim() || firstItem.lastAgentMessageSummary.trim() || firstItem.title.trim();
|
|
2108
|
+
return [
|
|
2109
|
+
items.length,
|
|
2110
|
+
firstItem.id,
|
|
2111
|
+
firstItem.provider,
|
|
2112
|
+
firstItem.userId ?? "",
|
|
2113
|
+
firstItem.identity?.userName ?? "",
|
|
2114
|
+
firstItem.identity?.agentName ?? "",
|
|
2115
|
+
hasWaiting,
|
|
2116
|
+
summary
|
|
2117
|
+
].join(":");
|
|
2118
|
+
}
|
|
2046
2119
|
function buildMessageCenterStatusOptions(counts, t) {
|
|
2047
2120
|
return [
|
|
2048
2121
|
{
|
|
@@ -2502,6 +2575,24 @@ function WorkspaceAgentMessageCenterPanelContent({
|
|
|
2502
2575
|
[highlightedItemId, model.items]
|
|
2503
2576
|
);
|
|
2504
2577
|
const activeStatusSummary = statusFilterSummary(statusFilters, statusOptions);
|
|
2578
|
+
const scrollSyncKey = useMemo2(
|
|
2579
|
+
() => [
|
|
2580
|
+
groupBy,
|
|
2581
|
+
activeStatusSummary,
|
|
2582
|
+
...deckItems.map((item) => `deck:${item.id}`),
|
|
2583
|
+
...itemGroupStacks.flatMap(
|
|
2584
|
+
(group) => group.stacks.map((stack) => {
|
|
2585
|
+
const stackId = messageCenterStackRenderId(group.id, stack.id);
|
|
2586
|
+
return messageCenterStackScrollSyncSegment({
|
|
2587
|
+
expanded: expandedStackIds.has(stackId),
|
|
2588
|
+
groupId: group.id,
|
|
2589
|
+
stack
|
|
2590
|
+
});
|
|
2591
|
+
})
|
|
2592
|
+
)
|
|
2593
|
+
].join("|"),
|
|
2594
|
+
[activeStatusSummary, deckItems, expandedStackIds, groupBy, itemGroupStacks]
|
|
2595
|
+
);
|
|
2505
2596
|
const hasActiveFilters = statusFilters !== null || providerFilters !== null;
|
|
2506
2597
|
const headerSummary = useMemo2(() => {
|
|
2507
2598
|
if (hasActiveFilters) {
|
|
@@ -2652,7 +2743,7 @@ function WorkspaceAgentMessageCenterPanelContent({
|
|
|
2652
2743
|
for (const group of itemGroupStacks) {
|
|
2653
2744
|
for (const stack of group.stacks) {
|
|
2654
2745
|
if (stack.items.length > 1 && stack.items.some((item) => item.id === highlightedItemId)) {
|
|
2655
|
-
expandStack(
|
|
2746
|
+
expandStack(messageCenterStackRenderId(group.id, stack.id));
|
|
2656
2747
|
return;
|
|
2657
2748
|
}
|
|
2658
2749
|
}
|
|
@@ -2792,7 +2883,7 @@ function WorkspaceAgentMessageCenterPanelContent({
|
|
|
2792
2883
|
className: "min-h-0 flex-1",
|
|
2793
2884
|
viewportClassName: "flex h-full w-full flex-col px-3.5 pt-4 pb-4",
|
|
2794
2885
|
scrollbarClassName: "top-4 bottom-4",
|
|
2795
|
-
syncKey:
|
|
2886
|
+
syncKey: scrollSyncKey,
|
|
2796
2887
|
children: deckItems.length > 0 || listItems.length > 0 ? /* @__PURE__ */ jsxs4("div", { className: "flex w-full min-w-0 flex-col gap-4", children: [
|
|
2797
2888
|
deckItems.length > 0 ? /* @__PURE__ */ jsx5(
|
|
2798
2889
|
WorkspaceAgentMessageCenterAttentionDeck,
|
|
@@ -2822,7 +2913,10 @@ function WorkspaceAgentMessageCenterPanelContent({
|
|
|
2822
2913
|
if (stack.items.length === 1) {
|
|
2823
2914
|
return renderMessageCenterCard(firstItem);
|
|
2824
2915
|
}
|
|
2825
|
-
const stackId =
|
|
2916
|
+
const stackId = messageCenterStackRenderId(
|
|
2917
|
+
group.id,
|
|
2918
|
+
stack.id
|
|
2919
|
+
);
|
|
2826
2920
|
return /* @__PURE__ */ jsx5(
|
|
2827
2921
|
MessageCenterStack,
|
|
2828
2922
|
{
|
|
@@ -2945,6 +3039,74 @@ function MessageCenterGroupHeading({
|
|
|
2945
3039
|
group.items.length
|
|
2946
3040
|
] });
|
|
2947
3041
|
}
|
|
3042
|
+
|
|
3043
|
+
// agent-message-center/workspaceAgentMessageCenterModelStability.ts
|
|
3044
|
+
function stabilizeWorkspaceAgentMessageCenterModel(previous, next) {
|
|
3045
|
+
if (!previous) {
|
|
3046
|
+
return next;
|
|
3047
|
+
}
|
|
3048
|
+
const previousItemsById = new Map(
|
|
3049
|
+
previous.items.map((item) => [item.id, item])
|
|
3050
|
+
);
|
|
3051
|
+
let itemsChanged = previous.items.length !== next.items.length;
|
|
3052
|
+
const items = next.items.map((nextItem, index) => {
|
|
3053
|
+
const previousItem = previousItemsById.get(nextItem.id);
|
|
3054
|
+
const stableItem = previousItem && messageCenterItemsEqual(previousItem, nextItem) ? previousItem : nextItem;
|
|
3055
|
+
if (stableItem !== previous.items[index]) {
|
|
3056
|
+
itemsChanged = true;
|
|
3057
|
+
}
|
|
3058
|
+
return stableItem;
|
|
3059
|
+
});
|
|
3060
|
+
const stableItems = itemsChanged ? items : previous.items;
|
|
3061
|
+
const stableCounts = messageCenterCountsEqual(previous.counts, next.counts) ? previous.counts : next.counts;
|
|
3062
|
+
if (previous.waitingCount === next.waitingCount && stableItems === previous.items && stableCounts === previous.counts) {
|
|
3063
|
+
return previous;
|
|
3064
|
+
}
|
|
3065
|
+
return {
|
|
3066
|
+
...next,
|
|
3067
|
+
counts: stableCounts,
|
|
3068
|
+
items: stableItems
|
|
3069
|
+
};
|
|
3070
|
+
}
|
|
3071
|
+
function messageCenterItemsEqual(left, right) {
|
|
3072
|
+
return left.id === right.id && left.agentSessionId === right.agentSessionId && left.provider === right.provider && left.userId === right.userId && left.title === right.title && left.cwd === right.cwd && left.status === right.status && left.lastAgentMessageSummary === right.lastAgentMessageSummary && left.lastAgentMessageAtUnixMs === right.lastAgentMessageAtUnixMs && left.needsAttentionKind === right.needsAttentionKind && left.needsAttentionSummary === right.needsAttentionSummary && left.sortTimeUnixMs === right.sortTimeUnixMs && messageCenterIdentityEqual(left.identity, right.identity) && messageCenterDigestEqual(left.digest, right.digest) && messageCenterPromptEqual(left.pendingPrompt, right.pendingPrompt) && messageCenterTurnOutcomeEqual(
|
|
3073
|
+
left.latestTurnOutcome ?? null,
|
|
3074
|
+
right.latestTurnOutcome ?? null
|
|
3075
|
+
);
|
|
3076
|
+
}
|
|
3077
|
+
function messageCenterCountsEqual(left, right) {
|
|
3078
|
+
return left.all === right.all && left.working === right.working && left.waiting === right.waiting && left.completed === right.completed && left.failed === right.failed;
|
|
3079
|
+
}
|
|
3080
|
+
function messageCenterIdentityEqual(left, right) {
|
|
3081
|
+
if (left === right) {
|
|
3082
|
+
return true;
|
|
3083
|
+
}
|
|
3084
|
+
if (!left || !right) {
|
|
3085
|
+
return false;
|
|
3086
|
+
}
|
|
3087
|
+
return left.userName === right.userName && left.userAvatarUrl === right.userAvatarUrl && left.agentName === right.agentName && left.agentAvatarUrl === right.agentAvatarUrl;
|
|
3088
|
+
}
|
|
3089
|
+
function messageCenterDigestEqual(left, right) {
|
|
3090
|
+
return left.primary.kind === right.primary.kind && left.primary.summary === right.primary.summary && left.primary.occurredAtUnixMs === right.primary.occurredAtUnixMs;
|
|
3091
|
+
}
|
|
3092
|
+
function messageCenterTurnOutcomeEqual(left, right) {
|
|
3093
|
+
if (left === right) {
|
|
3094
|
+
return true;
|
|
3095
|
+
}
|
|
3096
|
+
if (!left || !right) {
|
|
3097
|
+
return false;
|
|
3098
|
+
}
|
|
3099
|
+
return left.notificationKey === right.notificationKey && left.status === right.status && left.turnId === right.turnId;
|
|
3100
|
+
}
|
|
3101
|
+
function messageCenterPromptEqual(left, right) {
|
|
3102
|
+
if (left === right) {
|
|
3103
|
+
return true;
|
|
3104
|
+
}
|
|
3105
|
+
if (!left || !right || left.kind !== right.kind) {
|
|
3106
|
+
return false;
|
|
3107
|
+
}
|
|
3108
|
+
return JSON.stringify(left) === JSON.stringify(right);
|
|
3109
|
+
}
|
|
2948
3110
|
export {
|
|
2949
3111
|
AgentInteractivePromptSurface,
|
|
2950
3112
|
PLAN_IMPLEMENTATION_ACTION_IMPLEMENT,
|
|
@@ -2958,6 +3120,7 @@ export {
|
|
|
2958
3120
|
isPromptRequestIdTitle,
|
|
2959
3121
|
isWaitingMessageCenterItem,
|
|
2960
3122
|
managedAgentRoundedIconUrl,
|
|
3123
|
+
stabilizeWorkspaceAgentMessageCenterModel,
|
|
2961
3124
|
userAvatarPlaceholderUrl,
|
|
2962
3125
|
workspaceAgentActivityStatusLabel
|
|
2963
3126
|
};
|