@tutti-os/agent-gui 0.0.108 → 0.0.109

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.
@@ -392,6 +392,7 @@ interface AgentGUIConversationSummary {
392
392
  updatedAtUnixMs: number;
393
393
  hasUnreadCompletion?: boolean;
394
394
  unreadCompletionKey?: string | null;
395
+ needsUserAction?: boolean;
395
396
  projectionSource?: "pending_activation";
396
397
  isImported?: boolean;
397
398
  activeTurn?: AgentActivitySession["activeTurn"];
@@ -9187,7 +9187,7 @@ html[data-theme="light"] [data-message-center-item-id].agent-gui-edge-glow {
9187
9187
  }
9188
9188
 
9189
9189
  .agent-gui-node__provider-rail-config-footer {
9190
- padding-bottom: 8px;
9190
+ padding-bottom: 4px;
9191
9191
  }
9192
9192
 
9193
9193
  .agent-gui-node__provider-rail-config-footer:last-child {
@@ -9732,8 +9732,8 @@ html[data-theme="light"] [data-message-center-item-id].agent-gui-edge-glow {
9732
9732
  pointer-events: none;
9733
9733
  transform: translate(-50%, -50%) rotate(-30deg) scale(1.9);
9734
9734
  transform-origin: center;
9735
- animation: agent-gui-vinyl-player-beta-slap 420ms cubic-bezier(0.34, 1.56, 0.64, 1)
9736
- both;
9735
+ animation: agent-gui-vinyl-player-beta-slap 420ms
9736
+ cubic-bezier(0.34, 1.56, 0.64, 1) both;
9737
9737
  }
9738
9738
 
9739
9739
  /* Sticker "slap": drops in oversized and transparent, then snaps down to size
@@ -81,7 +81,7 @@ import {
81
81
  import {
82
82
  AgentFileMentionPalette,
83
83
  agentMentionItemKey
84
- } from "./chunk-QTW5CH62.js";
84
+ } from "./chunk-A5UXTAYJ.js";
85
85
  import {
86
86
  normalizeAgentGUIAgents,
87
87
  projectAgentGUIAgentsToInternalTargets
@@ -92,7 +92,7 @@ import {
92
92
  DEFAULT_AGENT_MENTION_FILTER,
93
93
  agentGuiScheduler,
94
94
  buildWorkspaceAgentActivityListViewModel
95
- } from "./chunk-UFD2QKGC.js";
95
+ } from "./chunk-K7WFXVSD.js";
96
96
  import {
97
97
  AGENT_RICH_TEXT_CARET_ANCHOR,
98
98
  createAgentSessionMarkdownLink,
@@ -3320,6 +3320,7 @@ function conversationSummaryFromAgentSession(session, options = {}) {
3320
3320
  project: resolveConversationProject(session, projectResolver),
3321
3321
  ...isExternalImportNoProjectSession(session) ? { projectMode: "none" } : {},
3322
3322
  pinnedAtUnixMs: session.pinnedAtUnixMs ?? null,
3323
+ needsUserAction: options.needsUserAction ?? false,
3323
3324
  sortTimeUnixMs: resolveWorkspaceAgentSessionSortTimeUnixMs(session),
3324
3325
  updatedAtUnixMs: session.updatedAtUnixMs || session.createdAtUnixMs || Date.now()
3325
3326
  };
@@ -5365,7 +5366,7 @@ function conversationSummariesRenderEqual(left, right) {
5365
5366
  return left.id === right.id && left.userId === right.userId && left.provider === right.provider && left.title === right.title && left.titleLeadingMentionKind === right.titleLeadingMentionKind && conversationTitleFallbacksRenderEqual(
5366
5367
  left.titleFallback,
5367
5368
  right.titleFallback
5368
- ) && left.status === right.status && left.cwd === right.cwd && left.railSectionKey === right.railSectionKey && left.pinnedAtUnixMs === right.pinnedAtUnixMs && left.sortTimeUnixMs === right.sortTimeUnixMs && left.updatedAtUnixMs === right.updatedAtUnixMs && left.projectionSource === right.projectionSource && left.isImported === right.isImported && left.hasUnreadCompletion === right.hasUnreadCompletion && left.unreadCompletionKey === right.unreadCompletionKey && conversationProjectsRenderEqual(left.project, right.project);
5369
+ ) && left.status === right.status && left.cwd === right.cwd && left.railSectionKey === right.railSectionKey && left.pinnedAtUnixMs === right.pinnedAtUnixMs && left.sortTimeUnixMs === right.sortTimeUnixMs && left.updatedAtUnixMs === right.updatedAtUnixMs && left.projectionSource === right.projectionSource && left.isImported === right.isImported && left.hasUnreadCompletion === right.hasUnreadCompletion && left.unreadCompletionKey === right.unreadCompletionKey && left.needsUserAction === right.needsUserAction && conversationProjectsRenderEqual(left.project, right.project);
5369
5370
  }
5370
5371
  function conversationTitleFallbacksRenderEqual(left, right) {
5371
5372
  return left === right || JSON.stringify(left ?? null) === JSON.stringify(right ?? null);
@@ -6526,8 +6527,9 @@ import { useMemo as useMemo6, useRef as useRef7, useState as useState3 } from "r
6526
6527
  import { useMemo as useMemo5 } from "react";
6527
6528
  import {
6528
6529
  isPendingActivationViable as isPendingActivationViable4,
6529
- selectWorkspaceAgentConsumerSessions,
6530
6530
  selectPendingActivations,
6531
+ selectRootAgentSessionIdsWithPendingInteractions,
6532
+ selectWorkspaceAgentConsumerSessions,
6531
6533
  selectWorkspaceReconcileState
6532
6534
  } from "@tutti-os/agent-activity-core";
6533
6535
 
@@ -6562,7 +6564,7 @@ function agentGUIConversationRailTitlePromptsEqual(left, right) {
6562
6564
 
6563
6565
  // contexts/workspace/presentation/renderer/agentGuiConversationList/useAgentGuiConversationList.ts
6564
6566
  var EMPTY_AGENT_GUI_AGENT_TARGETS = [];
6565
- function projectCanonicalAgentGUIConversationSummaries(sessions, firstUserDisplayPromptsBySessionId = {}) {
6567
+ function projectCanonicalAgentGUIConversationSummaries(sessions, firstUserDisplayPromptsBySessionId = {}, rootSessionIdsAwaitingUserAction) {
6566
6568
  return sessions.map((item) => {
6567
6569
  const provider = resolveAgentGUIProviderIdentity({
6568
6570
  sessionProvider: item.session.provider
@@ -6587,6 +6589,7 @@ function projectCanonicalAgentGUIConversationSummaries(sessions, firstUserDispla
6587
6589
  agentTargetId: item.session.agentTargetId ?? null,
6588
6590
  cwd: item.session.cwd,
6589
6591
  id: item.session.agentSessionId,
6592
+ needsUserAction: rootSessionIdsAwaitingUserAction?.has(item.session.agentSessionId) ?? item.pendingInteractions.length > 0,
6590
6593
  pinnedAtUnixMs: item.session.pinnedAtUnixMs ?? null,
6591
6594
  provider,
6592
6595
  railSectionKey: item.session.railSectionKey,
@@ -6614,6 +6617,11 @@ function useAgentGuiConversationList(engine, query, agentTargets = EMPTY_AGENT_G
6614
6617
  selectWorkspaceAgentConsumerSessions,
6615
6618
  consumerSessionsEqual
6616
6619
  );
6620
+ const rootAgentSessionIdsWithPendingInteractions = useEngineSelector(
6621
+ engine,
6622
+ selectRootAgentSessionIdsWithPendingInteractions,
6623
+ stringArraysEqual
6624
+ );
6617
6625
  const pendingActivations = useEngineSelector(
6618
6626
  engine,
6619
6627
  selectPendingActivations,
@@ -6630,6 +6638,9 @@ function useAgentGuiConversationList(engine, query, agentTargets = EMPTY_AGENT_G
6630
6638
  );
6631
6639
  return useMemo5(() => {
6632
6640
  if (!query) return null;
6641
+ const rootSessionIdsAwaitingUserAction = new Set(
6642
+ rootAgentSessionIdsWithPendingInteractions
6643
+ );
6633
6644
  const canonicalIds = new Set(
6634
6645
  sessions.map((item) => item.session.agentSessionId)
6635
6646
  );
@@ -6685,7 +6696,8 @@ function useAgentGuiConversationList(engine, query, agentTargets = EMPTY_AGENT_G
6685
6696
  sessions.filter(
6686
6697
  (item) => item.session.workspaceId === query.workspaceId
6687
6698
  ),
6688
- firstUserDisplayPromptsBySessionId
6699
+ firstUserDisplayPromptsBySessionId,
6700
+ rootSessionIdsAwaitingUserAction
6689
6701
  ).map((conversation) => {
6690
6702
  const canonicalUpdatedAtUnixMs = conversation.updatedAtUnixMs;
6691
6703
  const activation = latestNewActivationBySessionId.get(conversation.id);
@@ -6748,6 +6760,7 @@ function useAgentGuiConversationList(engine, query, agentTargets = EMPTY_AGENT_G
6748
6760
  firstUserDisplayPromptsBySessionId,
6749
6761
  pendingActivations,
6750
6762
  query,
6763
+ rootAgentSessionIdsWithPendingInteractions,
6751
6764
  sessions,
6752
6765
  workspaceReconcile
6753
6766
  ]);
@@ -6764,6 +6777,9 @@ function consumerSessionsEqual(left, right) {
6764
6777
  ) && item.displayStatus === other.displayStatus;
6765
6778
  });
6766
6779
  }
6780
+ function stringArraysEqual(left, right) {
6781
+ return left.length === right.length && left.every((item, index) => item === right[index]);
6782
+ }
6767
6783
 
6768
6784
  // agent-gui/agentGuiNode/controller/useAgentGUIConversationListState.ts
6769
6785
  function useAgentGUIConversationListState({
@@ -12574,10 +12590,12 @@ function useAgentGUINodeController({
12574
12590
  }
12575
12591
  return conversationSummaryFromAgentSession(session, {
12576
12592
  isNoProjectPath,
12593
+ needsUserAction: activeRelatedPendingInteractions.length > 0,
12577
12594
  userProjects
12578
12595
  });
12579
12596
  }, [
12580
12597
  activeEngineSession,
12598
+ activeRelatedPendingInteractions.length,
12581
12599
  agentActivityDisplayStatuses,
12582
12600
  conversations,
12583
12601
  isNoProjectPath,
@@ -27212,7 +27230,7 @@ function comparePinnedConversations(left, right) {
27212
27230
  return (right.pinnedAtUnixMs ?? 0) - (left.pinnedAtUnixMs ?? 0) || (right.sortTimeUnixMs ?? right.updatedAtUnixMs) - (left.sortTimeUnixMs ?? left.updatedAtUnixMs) || left.id.localeCompare(right.id);
27213
27231
  }
27214
27232
  function conversationSummariesRenderEqual2(left, right) {
27215
- return left.id === right.id && left.agentTargetId === right.agentTargetId && left.provider === right.provider && left.title === right.title && left.titleLeadingMentionKind === right.titleLeadingMentionKind && left.titleFallback === right.titleFallback && left.status === right.status && left.cwd === right.cwd && left.railSectionKey === right.railSectionKey && left.pinnedAtUnixMs === right.pinnedAtUnixMs && left.sortTimeUnixMs === right.sortTimeUnixMs && left.updatedAtUnixMs === right.updatedAtUnixMs && left.projectionSource === right.projectionSource && left.isImported === right.isImported && left.hasUnreadCompletion === right.hasUnreadCompletion && left.unreadCompletionKey === right.unreadCompletionKey && conversationProjectsRenderEqual2(left.project, right.project);
27233
+ return left.id === right.id && left.agentTargetId === right.agentTargetId && left.provider === right.provider && left.title === right.title && left.titleLeadingMentionKind === right.titleLeadingMentionKind && left.titleFallback === right.titleFallback && left.status === right.status && left.cwd === right.cwd && left.railSectionKey === right.railSectionKey && left.pinnedAtUnixMs === right.pinnedAtUnixMs && left.sortTimeUnixMs === right.sortTimeUnixMs && left.updatedAtUnixMs === right.updatedAtUnixMs && left.projectionSource === right.projectionSource && left.isImported === right.isImported && left.hasUnreadCompletion === right.hasUnreadCompletion && left.unreadCompletionKey === right.unreadCompletionKey && left.needsUserAction === right.needsUserAction && conversationProjectsRenderEqual2(left.project, right.project);
27216
27234
  }
27217
27235
  function conversationProjectsRenderEqual2(left, right) {
27218
27236
  return left === right || (!left || !right ? !left && !right : left.id === right.id && left.path === right.path && left.sectionKey === right.sectionKey && left.label === right.label && left.createdAtUnixMs === right.createdAtUnixMs && left.updatedAtUnixMs === right.updatedAtUnixMs && left.lastUsedAtUnixMs === right.lastUsedAtUnixMs && left.sectionKey === right.sectionKey);
@@ -27420,12 +27438,12 @@ function ConversationMeta({
27420
27438
  );
27421
27439
  }
27422
27440
  function conversationMetaKind(conversation) {
27423
- if (conversation.status === "working") {
27424
- return "loading";
27425
- }
27426
- if (conversation.status === "waiting") {
27441
+ if (conversation.needsUserAction) {
27427
27442
  return "waiting";
27428
27443
  }
27444
+ if (conversation.status === "working" || conversation.status === "waiting") {
27445
+ return "loading";
27446
+ }
27429
27447
  if (conversation.status === "failed") {
27430
27448
  return "failed";
27431
27449
  }
@@ -35312,4 +35330,4 @@ export {
35312
35330
  resolveAgentGUIAgentTarget,
35313
35331
  AgentGUI
35314
35332
  };
35315
- //# sourceMappingURL=chunk-KXZMIZ5H.js.map
35333
+ //# sourceMappingURL=chunk-34JD75OB.js.map