@tutti-os/agent-gui 0.0.229 → 0.0.231

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-gui.js CHANGED
@@ -1,10 +1,12 @@
1
1
  import {
2
2
  AgentGUI
3
- } from "./chunk-ZVSKNM6D.js";
3
+ } from "./chunk-5IFWKS7A.js";
4
+ import "./chunk-ZBI6R46N.js";
4
5
  import "./chunk-LB4AGT7B.js";
5
6
  import "./chunk-A4WCTHWS.js";
6
- import "./chunk-P2OOYHKQ.js";
7
- import "./chunk-2QF3RBR4.js";
7
+ import "./chunk-7AYFKNLD.js";
8
+ import "./chunk-T57ZZWTC.js";
9
+ import "./chunk-JA6XAKKE.js";
8
10
  import "./chunk-KDN6SLJM.js";
9
11
  import "./chunk-SUVMLCED.js";
10
12
  import "./chunk-MGSRWYRN.js";
@@ -1,3 +1,6 @@
1
+ import {
2
+ projectCanonicalAgentGUIConversationSummaries
3
+ } from "./chunk-ZBI6R46N.js";
1
4
  import {
2
5
  inspectAgentConversationBatchDeletionCapability
3
6
  } from "./chunk-LB4AGT7B.js";
@@ -7,7 +10,7 @@ import {
7
10
  import {
8
11
  AGENT_GUI_WORKBENCH_OPEN_EXTERNAL_IMPORT_EVENT,
9
12
  resolveAgentGuiSessionProviderFlatIconUrl
10
- } from "./chunk-P2OOYHKQ.js";
13
+ } from "./chunk-7AYFKNLD.js";
11
14
  import {
12
15
  AGENT_PROVIDERS,
13
16
  AGENT_PROVIDER_LABEL,
@@ -23,7 +26,7 @@ import {
23
26
  resolveAgentGUIFirstUserMessageDisplayPrompt,
24
27
  resolveAgentGUIProviderDisplayLabel,
25
28
  resolveAgentGUIProviderIdentity
26
- } from "./chunk-2QF3RBR4.js";
29
+ } from "./chunk-JA6XAKKE.js";
27
30
  import {
28
31
  resolveAgentGuiWorkbenchProviderLabel
29
32
  } from "./chunk-MGSRWYRN.js";
@@ -6718,49 +6721,6 @@ function agentGUIConversationRailTitlePromptsEqual(left, right) {
6718
6721
 
6719
6722
  // contexts/workspace/presentation/renderer/agentGuiConversationList/useAgentGuiConversationList.ts
6720
6723
  var EMPTY_AGENT_GUI_AGENT_TARGETS = [];
6721
- function projectCanonicalAgentGUIConversationSummaries(sessions, firstUserDisplayPromptsBySessionId = {}, rootSessionIdsAwaitingUserAction) {
6722
- return sessions.map((item) => {
6723
- const provider = resolveAgentGUIProviderIdentity({
6724
- sessionProvider: item.session.provider
6725
- });
6726
- const { title: canonicalTitle } = resolveAgentGUIConversationTitle(
6727
- item.session.title
6728
- );
6729
- const firstUserDisplayPrompt = firstUserDisplayPromptsBySessionId[item.session.agentSessionId];
6730
- const titleDisplayPrompt = resolveAgentGUIConversationTitleDisplayPrompt({
6731
- firstUserDisplayPrompt,
6732
- title: canonicalTitle
6733
- });
6734
- const { title, titleFallback } = resolveAgentGUIConversationTitle(
6735
- resolveAgentGUIConversationBrowserFreeTitle({
6736
- firstUserDisplayPrompt,
6737
- title: canonicalTitle
6738
- })
6739
- );
6740
- const canonicalUpdatedAtUnixMs = item.session.updatedAtUnixMs ?? item.session.createdAtUnixMs ?? 0;
6741
- const titleLeadingMentionKind = resolveAgentGUIConversationTitleLeadingMentionKind(titleDisplayPrompt);
6742
- return {
6743
- agentTargetId: item.session.agentTargetId ?? null,
6744
- cwd: item.session.cwd,
6745
- id: item.session.agentSessionId,
6746
- needsUserAction: rootSessionIdsAwaitingUserAction?.has(item.session.agentSessionId) ?? item.pendingInteractions.length > 0,
6747
- pinnedAtUnixMs: item.session.pinnedAtUnixMs ?? null,
6748
- provider,
6749
- railSectionKey: item.session.railSectionKey,
6750
- resumable: item.session.resumable,
6751
- sortTimeUnixMs: resolveWorkspaceAgentSessionSortTimeUnixMs({
6752
- createdAtUnixMs: item.session.createdAtUnixMs,
6753
- latestTurn: item.latestTurn
6754
- }),
6755
- status: item.displayStatus === "idle" ? "ready" : item.displayStatus,
6756
- title,
6757
- titleLeadingMentionKind,
6758
- titleFallback,
6759
- updatedAtUnixMs: canonicalUpdatedAtUnixMs,
6760
- userId: item.session.userId?.trim() ?? ""
6761
- };
6762
- });
6763
- }
6764
6724
  function useAgentGuiConversationList(engine, query, agentTargets = EMPTY_AGENT_GUI_AGENT_TARGETS) {
6765
6725
  const workspaceReconcile = useEngineSelector(
6766
6726
  engine,
@@ -16825,6 +16785,7 @@ import { jsx as jsx16, jsxs as jsxs9 } from "react/jsx-runtime";
16825
16785
  var CAROUSEL_WHEEL_STEP_THRESHOLD = 42;
16826
16786
  var CAROUSEL_WHEEL_STEP_COOLDOWN_MS = 110;
16827
16787
  var CAROUSEL_DRAG_STEP_PX = 52;
16788
+ var CAROUSEL_SCENE_IDLE_TIMEOUT_MS = 1e3;
16828
16789
  function activeAgentIndex(props) {
16829
16790
  if (!props.activeAgentTargetId) {
16830
16791
  return -1;
@@ -16846,6 +16807,9 @@ var AgentGUIHeroAgentCarousel = class extends Component {
16846
16807
  canvasRef = createRef();
16847
16808
  scene = null;
16848
16809
  resizeObserver = null;
16810
+ firstPaintFrameId = null;
16811
+ firstPaintReady = false;
16812
+ sceneMountIdleId = null;
16849
16813
  imagePreloadGeneration = 0;
16850
16814
  imageLoad = null;
16851
16815
  wheelListenerAttached = false;
@@ -16863,6 +16827,7 @@ var AgentGUIHeroAgentCarousel = class extends Component {
16863
16827
  imagesReady: this.props.items.length === 0
16864
16828
  };
16865
16829
  componentDidMount() {
16830
+ this.waitForFirstPaint();
16866
16831
  this.preloadImages();
16867
16832
  this.syncWheelListener();
16868
16833
  }
@@ -16883,6 +16848,13 @@ var AgentGUIHeroAgentCarousel = class extends Component {
16883
16848
  );
16884
16849
  return;
16885
16850
  }
16851
+ if (previousProps.isVisible !== this.props.isVisible) {
16852
+ if (this.props.isVisible === false) {
16853
+ this.cancelScheduledSceneMount();
16854
+ } else {
16855
+ this.scheduleSceneMount();
16856
+ }
16857
+ }
16886
16858
  if (previousProps.activeAgentTargetId !== this.props.activeAgentTargetId || previousProps.items !== this.props.items) {
16887
16859
  const activeIndex = activeAgentIndex(this.props);
16888
16860
  if (activeIndex >= 0 && activeIndex !== this.state.centerIndex) {
@@ -16894,6 +16866,11 @@ var AgentGUIHeroAgentCarousel = class extends Component {
16894
16866
  }
16895
16867
  componentWillUnmount() {
16896
16868
  this.imagePreloadGeneration += 1;
16869
+ if (this.firstPaintFrameId !== null) {
16870
+ window.cancelAnimationFrame(this.firstPaintFrameId);
16871
+ this.firstPaintFrameId = null;
16872
+ }
16873
+ this.cancelScheduledSceneMount();
16897
16874
  this.removeWheelListener();
16898
16875
  this.disposeScene();
16899
16876
  this.imageLoad?.cancel();
@@ -16902,6 +16879,15 @@ var AgentGUIHeroAgentCarousel = class extends Component {
16902
16879
  interactive() {
16903
16880
  return this.props.onProviderSelect != null && this.props.items.length > 0;
16904
16881
  }
16882
+ waitForFirstPaint() {
16883
+ this.firstPaintFrameId = window.requestAnimationFrame(() => {
16884
+ this.firstPaintFrameId = window.requestAnimationFrame(() => {
16885
+ this.firstPaintFrameId = null;
16886
+ this.firstPaintReady = true;
16887
+ this.scheduleSceneMount();
16888
+ });
16889
+ });
16890
+ }
16905
16891
  preloadImages() {
16906
16892
  this.imageLoad?.cancel();
16907
16893
  this.imageLoad = null;
@@ -16924,7 +16910,7 @@ var AgentGUIHeroAgentCarousel = class extends Component {
16924
16910
  images: emptyPreloadedCarouselImages(items.length),
16925
16911
  imagesReady: true
16926
16912
  },
16927
- () => this.mountScene()
16913
+ () => this.scheduleSceneMount()
16928
16914
  );
16929
16915
  return;
16930
16916
  }
@@ -16947,14 +16933,36 @@ var AgentGUIHeroAgentCarousel = class extends Component {
16947
16933
  images: preloaded.icons,
16948
16934
  imagesReady: true
16949
16935
  },
16950
- () => this.mountScene()
16936
+ () => this.scheduleSceneMount()
16951
16937
  );
16952
16938
  });
16953
16939
  }
16940
+ scheduleSceneMount() {
16941
+ if (this.scene || this.sceneMountIdleId !== null || this.props.isVisible === false || !this.canvasRef.current || !this.stageRef.current || !this.firstPaintReady || !this.state.imagesReady || this.props.items.length === 0) {
16942
+ return;
16943
+ }
16944
+ if (typeof window.requestIdleCallback === "function") {
16945
+ this.sceneMountIdleId = window.requestIdleCallback(
16946
+ () => {
16947
+ this.sceneMountIdleId = null;
16948
+ this.mountScene();
16949
+ },
16950
+ { timeout: CAROUSEL_SCENE_IDLE_TIMEOUT_MS }
16951
+ );
16952
+ return;
16953
+ }
16954
+ this.mountScene();
16955
+ }
16956
+ cancelScheduledSceneMount() {
16957
+ if (this.sceneMountIdleId !== null) {
16958
+ window.cancelIdleCallback(this.sceneMountIdleId);
16959
+ this.sceneMountIdleId = null;
16960
+ }
16961
+ }
16954
16962
  mountScene() {
16955
16963
  const canvas = this.canvasRef.current;
16956
16964
  const stage = this.stageRef.current;
16957
- if (this.scene || !canvas || !stage || !this.state.imagesReady || this.props.items.length === 0) {
16965
+ if (this.scene || !canvas || !stage || this.props.isVisible === false || !this.firstPaintReady || !this.state.imagesReady || this.props.items.length === 0) {
16958
16966
  return;
16959
16967
  }
16960
16968
  const scene = AgentGuiHeroCarouselScene.create({
@@ -16978,6 +16986,7 @@ var AgentGUIHeroAgentCarousel = class extends Component {
16978
16986
  this.resizeObserver?.observe(stage);
16979
16987
  }
16980
16988
  disposeScene() {
16989
+ this.cancelScheduledSceneMount();
16981
16990
  this.resizeObserver?.disconnect();
16982
16991
  this.resizeObserver = null;
16983
16992
  this.scene?.dispose();
@@ -29258,6 +29267,7 @@ var AgentGUIEmptyHeroCarouselStage = class extends Component3 {
29258
29267
  const {
29259
29268
  activeAgentTargetId,
29260
29269
  children,
29270
+ isVisible,
29261
29271
  items,
29262
29272
  onProviderSelect,
29263
29273
  providerSelectLabel
@@ -29268,6 +29278,7 @@ var AgentGUIEmptyHeroCarouselStage = class extends Component3 {
29268
29278
  AgentGUIHeroAgentCarousel,
29269
29279
  {
29270
29280
  activeAgentTargetId,
29281
+ isVisible,
29271
29282
  items,
29272
29283
  onProviderSelect,
29273
29284
  providerSelectLabel
@@ -29943,6 +29954,7 @@ function shouldEmphasizeEmptyHeroProvider(label) {
29943
29954
  }
29944
29955
  var EMPTY_HOME_SUGGESTIONS = Object.freeze([]);
29945
29956
  var AgentGUIEmptyHomePane = memo2(function AgentGUIEmptyHomePane2({
29957
+ isVisible,
29946
29958
  provider,
29947
29959
  providerReadinessGate,
29948
29960
  showAllProviders,
@@ -29975,6 +29987,7 @@ var AgentGUIEmptyHomePane = memo2(function AgentGUIEmptyHomePane2({
29975
29987
  AgentGUIEmptyHeroCarouselStage,
29976
29988
  {
29977
29989
  activeAgentTargetId: presentedSelectedAgentTarget?.agentTargetId ?? presentedSelectedAgentTarget?.targetId,
29990
+ isVisible,
29978
29991
  items: avatarPresentations,
29979
29992
  onProviderSelect,
29980
29993
  providerSelectLabel: labels.providerSwitchLabel,
@@ -29985,6 +29998,7 @@ var AgentGUIEmptyHomePane = memo2(function AgentGUIEmptyHomePane2({
29985
29998
  children: providerReadinessGate ? /* @__PURE__ */ jsx50(
29986
29999
  AgentGUIProviderReadinessGatePane,
29987
30000
  {
30001
+ isVisible,
29988
30002
  provider,
29989
30003
  gate: providerReadinessGate,
29990
30004
  showAllProviders,
@@ -30002,6 +30016,7 @@ var AgentGUIEmptyHomePane = memo2(function AgentGUIEmptyHomePane2({
30002
30016
  AgentGUIEmptyHeroPane,
30003
30017
  {
30004
30018
  ...heroProps,
30019
+ isVisible,
30005
30020
  provider,
30006
30021
  emptyLabel,
30007
30022
  emptyProvider: providerLabel,
@@ -30020,6 +30035,7 @@ var AgentGUIEmptyHomePane = memo2(function AgentGUIEmptyHomePane2({
30020
30035
  );
30021
30036
  });
30022
30037
  var AgentGUIEmptyHeroPane = memo2(function AgentGUIEmptyHeroPane2({
30038
+ isVisible = true,
30023
30039
  provider,
30024
30040
  emptyLabel,
30025
30041
  emptyProvider,
@@ -30064,6 +30080,7 @@ var AgentGUIEmptyHeroPane = memo2(function AgentGUIEmptyHeroPane2({
30064
30080
  {
30065
30081
  activeAgentTargetId: selectedAgentTarget?.agentTargetId ?? selectedAgentTarget?.targetId,
30066
30082
  items: heroAvatarPresentations,
30083
+ isVisible,
30067
30084
  onProviderSelect,
30068
30085
  providerSelectLabel
30069
30086
  }
@@ -30115,6 +30132,7 @@ var AgentGUIEmptyHeroPane = memo2(function AgentGUIEmptyHeroPane2({
30115
30132
  });
30116
30133
  var AgentGUIProviderReadinessGatePane = memo2(
30117
30134
  function AgentGUIProviderReadinessGatePane2({
30135
+ isVisible = true,
30118
30136
  provider,
30119
30137
  gate,
30120
30138
  showAllProviders = false,
@@ -30166,6 +30184,7 @@ var AgentGUIProviderReadinessGatePane = memo2(
30166
30184
  {
30167
30185
  activeAgentTargetId: selectedAgentTarget?.agentTargetId ?? selectedAgentTarget?.targetId,
30168
30186
  items: heroAvatarPresentations,
30187
+ isVisible,
30169
30188
  onProviderSelect,
30170
30189
  providerSelectLabel
30171
30190
  }
@@ -40540,6 +40559,7 @@ var AgentGUIDetailPane = memo12(function AgentGUIDetailPane2({
40540
40559
  workspaceUserProjectI18n,
40541
40560
  uiLanguage,
40542
40561
  isActive,
40562
+ isVisible,
40543
40563
  workspaceReferencePickerOpen,
40544
40564
  composerFocusRequestSequence,
40545
40565
  slashStatusLimits,
@@ -41024,6 +41044,7 @@ var AgentGUIDetailPane = memo12(function AgentGUIDetailPane2({
41024
41044
  }) }) : /* @__PURE__ */ jsx82(
41025
41045
  AgentGUIEmptyHomePane,
41026
41046
  {
41047
+ isVisible,
41027
41048
  provider: emptyHeroProvider,
41028
41049
  providerReadinessGate: emptyProviderReadinessGate,
41029
41050
  showAllProviders: viewModel.rail.conversationFilter.kind === "all",
@@ -42510,6 +42531,7 @@ function AgentGUINodeView({
42510
42531
  labels,
42511
42532
  uiLanguage,
42512
42533
  isActive,
42534
+ isVisible,
42513
42535
  workspaceReferencePickerOpen,
42514
42536
  composerFocusRequestSequence: detailComposerFocusRequestSequence,
42515
42537
  slashStatusLimits,
@@ -44620,4 +44642,4 @@ export {
44620
44642
  AgentHandoffMenu,
44621
44643
  AgentGUI
44622
44644
  };
44623
- //# sourceMappingURL=chunk-ZVSKNM6D.js.map
44645
+ //# sourceMappingURL=chunk-5IFWKS7A.js.map