@tutti-os/agent-gui 0.0.160 → 0.0.161

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.
@@ -2,7 +2,7 @@ import * as react from 'react';
2
2
  import { ReactNode, JSX } from 'react';
3
3
  import { c as AgentConversationVM, g as WorkspaceLinkAction, f as WorkspaceAgentSessionDetailViewModel } from '../agentConversationVM-DWEy7jzx.js';
4
4
  export { B as BuildWorkspaceAgentSessionDetailInput, W as WorkspaceAgentActivityCard, e as WorkspaceAgentActivityTimelineItem, h as buildWorkspaceAgentSessionDetailViewModel } from '../agentConversationVM-DWEy7jzx.js';
5
- import { d as AgentGUIProviderSkillOption, h as AgentMessageMarkdownWorkspaceAppIcon } from '../agentGuiNodeTypes-2xRyhPBD.js';
5
+ import { d as AgentGUIProviderSkillOption, h as AgentMessageMarkdownWorkspaceAppIcon } from '../agentGuiNodeTypes-BxyRdJ8A.js';
6
6
  import { AgentActivityMessage } from '@tutti-os/agent-activity-core';
7
7
  import '@tutti-os/workspace-issue-manager/core';
8
8
  import '../types-DVmB_kyD.js';
@@ -3,7 +3,7 @@ import { ReactNode } from 'react';
3
3
  import { I18nRuntime } from '@tutti-os/ui-i18n-runtime';
4
4
  import { AgentActivityGoalControlInput, AgentActivityGoalControlResult, AgentActivityCreateSessionInput, AgentActivitySession, AgentActivityDeleteSessionInput, AgentActivityDeleteSessionResult, AgentActivitySendInput, AgentActivitySessionSettings, AgentActivityActivateSessionResult, AgentActivitySnapshot, AgentSessionEngine, AgentActivityMessageOrder, AgentActivityMessagePage, AgentActivitySendInputResult, AgentActivityRenameSessionInput, AgentActivitySubmitInteractiveInput, AgentActivitySubmitInteractiveResult, AgentActivitySnapshotListener, AgentActivitySubmitSettingsPatch } from '@tutti-os/agent-activity-core';
5
5
  import { k as AgentHostAgentSessionComposerSettings, o as AgentHostUnactivateAgentSessionResult, b as AgentGUIAgentTarget, f as AgentGUIProvider, p as AgentPromptContentBlock, e as AgentGUINodeData, P as Point, g as AgentGUIProviderRailAllPresentation, h as AgentGUIProviderRailMode, i as AgentGUIProviderReadinessGate, d as AgentGUIHomeSuggestionId, N as NodeFrame, a as AgentGUIAgentDirectorySnapshot, c as AgentGUIAllAgentsPresentation } from './types-DVmB_kyD.js';
6
- import { A as AgentComposerDraft, j as AgentSessionCommand, d as AgentGUIProviderSkillOption, b as AgentGUIComposerSettingsVM, e as AgentGUIQueueStatus, f as AgentGUIQueuedPromptVM, h as AgentMessageMarkdownWorkspaceAppIcon, k as AgentSlashCommandCapability, c as AgentGUINodeViewModel, i as AgentProbeSnapshot, a as AgentComposerDraftFile, g as AgentHostInputApi } from './agentGuiNodeTypes-2xRyhPBD.js';
6
+ import { A as AgentComposerDraft, j as AgentSessionCommand, d as AgentGUIProviderSkillOption, b as AgentGUIComposerSettingsVM, e as AgentGUIQueueStatus, f as AgentGUIQueuedPromptVM, h as AgentMessageMarkdownWorkspaceAppIcon, k as AgentSlashCommandCapability, c as AgentGUINodeViewModel, i as AgentProbeSnapshot, a as AgentComposerDraftFile, g as AgentHostInputApi } from './agentGuiNodeTypes-BxyRdJ8A.js';
7
7
  import { WorkspaceFileReference, ReferenceLocateTarget, WorkspaceFileReferenceAdapter, ReferenceProvenanceCatalog } from '@tutti-os/workspace-file-reference/contracts';
8
8
  export { ReferenceProvenanceCatalog as AgentGUIReferenceProvenanceFilterCatalog } from '@tutti-os/workspace-file-reference/contracts';
9
9
  import { A as AgentContextMentionItem } from './agentFileMentionContracts-B0yQizXB.js';
package/dist/agent-gui.js CHANGED
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  AgentGUI
3
- } from "./chunk-HP4RM2SM.js";
3
+ } from "./chunk-MVVZPLI6.js";
4
4
  import "./chunk-A4WCTHWS.js";
5
5
  import "./chunk-2DGFRQEP.js";
6
6
  import "./chunk-6II57C72.js";
@@ -744,6 +744,7 @@ interface AgentGUIComposerViewModel {
744
744
  }
745
745
  interface AgentGUIInteractionViewModel {
746
746
  isRespondingApproval: boolean;
747
+ isRuntimeBlocked: boolean;
747
748
  pendingApproval: AgentGUIApprovalRequest | null;
748
749
  pendingInteractivePrompt: AgentGUIInteractivePrompt | null;
749
750
  sessionChrome: AgentGUISessionChrome;
@@ -753,6 +754,7 @@ interface AgentGUIReadinessViewModel {
753
754
  activeLiveState: "inactive" | "activating" | "active" | "failed";
754
755
  activationError: string | null;
755
756
  activeConversationBusy: boolean;
757
+ sessionRuntimeBlocked: boolean;
756
758
  providerReadinessGate: AgentGUIProviderReadinessGate | null;
757
759
  }
758
760
  interface AgentGUIOperationsViewModel {
@@ -10030,6 +10030,7 @@ function useAgentGUIViewModel(candidate) {
10030
10030
  () => candidate.interaction,
10031
10031
  [
10032
10032
  candidate.interaction.inlineNotice,
10033
+ candidate.interaction.isRuntimeBlocked,
10033
10034
  candidate.interaction.isRespondingApproval,
10034
10035
  candidate.interaction.pendingApproval,
10035
10036
  candidate.interaction.pendingInteractivePrompt,
@@ -10042,7 +10043,8 @@ function useAgentGUIViewModel(candidate) {
10042
10043
  candidate.readiness.activationError,
10043
10044
  candidate.readiness.activeConversationBusy,
10044
10045
  candidate.readiness.activeLiveState,
10045
- candidate.readiness.providerReadinessGate
10046
+ candidate.readiness.providerReadinessGate,
10047
+ candidate.readiness.sessionRuntimeBlocked
10046
10048
  ]
10047
10049
  );
10048
10050
  const operations = useMemo8(
@@ -11613,6 +11615,7 @@ function useAgentGUISessionPresentation(input) {
11613
11615
  input.activeConversationId && input.activeLatestPendingSubmitTurnId
11614
11616
  );
11615
11617
  const activeSubmitBlocked = input.activeEngineAvailability === "blocked";
11618
+ const sessionRuntimeBlocked = input.activeEngineRuntimeAvailability?.state === "blocked";
11616
11619
  const activeConversationBusy = input.activeEngineSession ? input.activeEngineAvailability === "blocked" : agentActivityDisplayStatusBusy(input.activityDisplayStatus) || conversationBusyStatus(input.activeConversation?.status ?? null) || activeHasPendingSubmittedTurn || activeSubmitBlocked;
11617
11620
  const activeSessionResumable = input.activeEngineSession?.resumable ?? input.activeConversation?.resumable ?? input.activeSessionState?.resumable;
11618
11621
  const activeConversationRequiresResume = input.activeConversationId !== null && input.activationState !== "active";
@@ -11681,7 +11684,7 @@ function useAgentGUISessionPresentation(input) {
11681
11684
  sessionChromeRawState
11682
11685
  ]);
11683
11686
  const canSubmit = !input.agentTargetsLoading && input.activeLiveState !== "activating" && input.activeLiveState !== "failed" && !activeConversationResumeUnavailable && input.pendingApproval === null && pendingInteractivePrompt === null && sessionChrome.auth === null && !activeConversationBusy && !input.isCreatingConversation && !input.isSubmitting && !input.isInterrupting;
11684
- const canQueueWhileBusy = input.activeConversationId !== null && (activeConversationBusy || input.isSubmitting || input.activeEngineHasPendingInteractions);
11687
+ const canQueueWhileBusy = input.activeConversationId !== null && !sessionRuntimeBlocked && (activeConversationBusy || input.isSubmitting || input.activeEngineHasPendingInteractions);
11685
11688
  const hasSentUserMessage = input.activeTimelineItems.some(
11686
11689
  (item) => item.role === "user"
11687
11690
  );
@@ -11762,6 +11765,7 @@ function useAgentGUISessionPresentation(input) {
11762
11765
  hasSentUserMessage,
11763
11766
  isRespondingApproval,
11764
11767
  pendingInteractivePrompt,
11768
+ sessionRuntimeBlocked,
11765
11769
  sessionChrome
11766
11770
  };
11767
11771
  }
@@ -11929,6 +11933,7 @@ function useAgentGUIViewAssembly(input) {
11929
11933
  },
11930
11934
  interaction: {
11931
11935
  isRespondingApproval: session.isRespondingApproval,
11936
+ isRuntimeBlocked: session.sessionRuntimeBlocked,
11932
11937
  pendingApproval: detail.pendingApproval,
11933
11938
  pendingInteractivePrompt: session.pendingInteractivePrompt,
11934
11939
  sessionChrome: session.sessionChrome,
@@ -11943,6 +11948,7 @@ function useAgentGUIViewAssembly(input) {
11943
11948
  activeLiveState: detail.activeLiveState,
11944
11949
  activationError: detail.activationError,
11945
11950
  activeConversationBusy: session.activeConversationBusy,
11951
+ sessionRuntimeBlocked: session.sessionRuntimeBlocked,
11946
11952
  providerReadinessGate
11947
11953
  },
11948
11954
  operations: {
@@ -12136,6 +12142,7 @@ import {
12136
12142
  selectEngineSessionDetailHydrated as selectEngineSessionDetailHydrated2,
12137
12143
  selectEngineSessionDetailLoading,
12138
12144
  selectEngineSessionOperationError,
12145
+ selectEngineSessionRuntimeAvailability,
12139
12146
  selectEngineSessionIsRespondingToInteraction,
12140
12147
  selectEngineSessionReconcile as selectEngineSessionReconcile2,
12141
12148
  selectEngineSessionSettingsUpdate as selectEngineSessionSettingsUpdate2,
@@ -12283,6 +12290,10 @@ function useAgentGUISessionEngineState(input) {
12283
12290
  sessionEngine,
12284
12291
  (state) => selectEngineSubmitAvailability(state, activeConversationId)?.state ?? "missing"
12285
12292
  );
12293
+ const activeEngineRuntimeAvailability = useEngineSelector(
12294
+ sessionEngine,
12295
+ (state) => selectEngineSessionRuntimeAvailability(state, activeConversationId)
12296
+ );
12286
12297
  const activeEngineHasPendingInteractions = useEngineSelector(
12287
12298
  sessionEngine,
12288
12299
  (state) => selectEngineHasPendingInteractions(state, activeConversationId)
@@ -12301,6 +12312,7 @@ function useAgentGUISessionEngineState(input) {
12301
12312
  activeEngineHasPendingInteractions,
12302
12313
  activeEngineLatestTurn,
12303
12314
  activeEnginePendingInteractions,
12315
+ activeEngineRuntimeAvailability,
12304
12316
  activeEngineSession,
12305
12317
  activeEngineSessionDeleted,
12306
12318
  activeLatestPendingSubmit,
@@ -12321,7 +12333,7 @@ function useAgentGUISessionEngineState(input) {
12321
12333
  };
12322
12334
  }
12323
12335
  function mergeOptimisticSessionSettings(canonical, update) {
12324
- if (!update || update.status !== "inFlight" && update.status !== "unknown") {
12336
+ if (!update || !SESSION_SETTINGS_STATUS_SHOWS_OPTIMISTIC_VALUE[update.status]) {
12325
12337
  return canonical;
12326
12338
  }
12327
12339
  const optimistic = {
@@ -12341,6 +12353,13 @@ function mergeOptimisticSessionSettings(canonical, update) {
12341
12353
  ...typeof optimistic.speed === "string" ? { speed: optimistic.speed } : {}
12342
12354
  };
12343
12355
  }
12356
+ var SESSION_SETTINGS_STATUS_SHOWS_OPTIMISTIC_VALUE = {
12357
+ failed: false,
12358
+ idle: false,
12359
+ inFlight: true,
12360
+ unknown: true,
12361
+ waitingForRuntime: true
12362
+ };
12344
12363
 
12345
12364
  // agent-gui/agentGuiNode/controller/useAgentGUISessionDetailTransport.ts
12346
12365
  import {
@@ -34969,10 +34988,10 @@ function useAgentGUIDetailModel(input) {
34969
34988
  currentUserId: viewModel.shell.currentUserId
34970
34989
  });
34971
34990
  const canQueueWhileBusy = viewModel.composer.canQueueWhileBusy && !isCollaboratorConversation;
34972
- const composerDisabledReason = isCollaboratorConversation ? labels.collaboratorSessionReadOnlyPlaceholder : null;
34991
+ const composerDisabledReason = isCollaboratorConversation ? labels.collaboratorSessionReadOnlyPlaceholder : viewModel.readiness.sessionRuntimeBlocked ? labels.activatingSession : null;
34973
34992
  const hasNonRetryableRecoveryFailure = sessionChrome.recovery?.kind === "failed" && sessionChrome.recovery.canRetry === false || sessionChrome.recovery?.kind === "resume-unavailable";
34974
- const submitDisabled = hasNonRetryableRecoveryFailure || isCollaboratorConversation || !viewModel.composer.canSubmit && !canQueueWhileBusy;
34975
- const composerDisabled = hasNonRetryableRecoveryFailure || isCollaboratorConversation || !canQueueWhileBusy && (viewModel.interaction.pendingApproval !== null || viewModel.interaction.pendingInteractivePrompt !== null || viewModel.composer.isSubmitting || viewModel.composer.isInterrupting || viewModel.composer.isCreatingConversation);
34993
+ const submitDisabled = hasNonRetryableRecoveryFailure || isCollaboratorConversation || viewModel.readiness.sessionRuntimeBlocked || !viewModel.composer.canSubmit && !canQueueWhileBusy;
34994
+ const composerDisabled = hasNonRetryableRecoveryFailure || isCollaboratorConversation || viewModel.readiness.sessionRuntimeBlocked || !canQueueWhileBusy && (viewModel.interaction.pendingApproval !== null || viewModel.interaction.pendingInteractivePrompt !== null || viewModel.composer.isSubmitting || viewModel.composer.isInterrupting || viewModel.composer.isCreatingConversation);
34976
34995
  const showStopButton = shouldShowAgentGUIStopButton({
34977
34996
  hasPendingApproval: viewModel.interaction.pendingApproval !== null,
34978
34997
  hasPendingInteractivePrompt: viewModel.interaction.pendingInteractivePrompt !== null,
@@ -34982,7 +35001,7 @@ function useAgentGUIDetailModel(input) {
34982
35001
  isCreatingConversation: viewModel.composer.isCreatingConversation,
34983
35002
  isInterrupting: viewModel.composer.isInterrupting,
34984
35003
  isSubmitting: viewModel.composer.isSubmitting,
34985
- isUnavailable: viewModel.readiness.activeLiveState === "failed"
35004
+ isUnavailable: viewModel.readiness.activeLiveState === "failed" || viewModel.readiness.sessionRuntimeBlocked
34986
35005
  });
34987
35006
  const conversationFlowLabels = useMemo38(
34988
35007
  () => ({
@@ -35626,6 +35645,7 @@ var AgentGUIDetailPane = memo12(function AgentGUIDetailPane2({
35626
35645
  [submitInteractivePrompt]
35627
35646
  );
35628
35647
  const canSwitchComposerProvider = true;
35648
+ const isInteractionPending = viewModel.interaction.isRespondingApproval || viewModel.interaction.isRuntimeBlocked;
35629
35649
  const homeComposerProviderTargets = homeTargetProjection.agentTargets;
35630
35650
  const selectedHomeComposerTarget = homeTargetProjection.selectedAgentTarget;
35631
35651
  const composerProviderTargets = viewModel.rail.activeConversationId === null ? homeComposerProviderTargets : viewModel.rail.agentTargets;
@@ -35704,7 +35724,7 @@ var AgentGUIDetailPane = memo12(function AgentGUIDetailPane2({
35704
35724
  handoffMenuLabel: labels.handoffConversationMenu,
35705
35725
  isInterrupting: viewModel.composer.isInterrupting || viewModel.composer.isCancelPending,
35706
35726
  isSendingTurn: isComposerSending,
35707
- isSubmittingPrompt: viewModel.interaction.isRespondingApproval,
35727
+ isSubmittingPrompt: isInteractionPending,
35708
35728
  uiLanguage,
35709
35729
  labels: composerLabels,
35710
35730
  workspaceUserProjectI18n,
@@ -35795,6 +35815,7 @@ var AgentGUIDetailPane = memo12(function AgentGUIDetailPane2({
35795
35815
  viewModel.detail.hasSentUserMessage,
35796
35816
  viewModel.composer.isInterrupting,
35797
35817
  viewModel.interaction.isRespondingApproval,
35818
+ viewModel.interaction.isRuntimeBlocked,
35798
35819
  viewModel.composer.promptImagesSupported,
35799
35820
  viewModel.composer.queueStatus,
35800
35821
  viewModel.composer.queuedPrompts,
@@ -35827,7 +35848,7 @@ var AgentGUIDetailPane = memo12(function AgentGUIDetailPane2({
35827
35848
  viewModel.composer.queuedPrompts.map((prompt) => prompt.id).join(","),
35828
35849
  viewModel.composer.queueStatus,
35829
35850
  viewModel.composer.drainingQueuedPromptId ?? "",
35830
- viewModel.interaction.isRespondingApproval ? "1" : "0"
35851
+ isInteractionPending ? "1" : "0"
35831
35852
  ].join("|");
35832
35853
  useEffect34(() => {
35833
35854
  setBottomDockDismissedPromptRequestId(null);
@@ -35895,7 +35916,7 @@ var AgentGUIDetailPane = memo12(function AgentGUIDetailPane2({
35895
35916
  selectedAgentTarget: composerSelectedProviderTarget,
35896
35917
  onProviderSelect: canSwitchComposerProvider && viewModel.rail.activeConversationId === null ? selectHomeComposerAgentTargetAndFocus : void 0,
35897
35918
  inlineNoticeChrome,
35898
- isRespondingApproval: viewModel.interaction.isRespondingApproval,
35919
+ isRespondingApproval: isInteractionPending,
35899
35920
  previewMode,
35900
35921
  onSubmitApprovalOption: submitApprovalOption,
35901
35922
  onRetryActivation: retryActivation,
@@ -35938,7 +35959,7 @@ var AgentGUIDetailPane = memo12(function AgentGUIDetailPane2({
35938
35959
  bottomDockReplacementPrompt,
35939
35960
  composerProps: bottomDockComposerProps,
35940
35961
  inlineNoticeChrome,
35941
- isRespondingApproval: viewModel.interaction.isRespondingApproval,
35962
+ isRespondingApproval: isInteractionPending,
35942
35963
  sessionChrome,
35943
35964
  keyboardShortcutsEnabled: isActive,
35944
35965
  chromeLabels,
@@ -39628,4 +39649,4 @@ export {
39628
39649
  AgentHandoffMenu,
39629
39650
  AgentGUI
39630
39651
  };
39631
- //# sourceMappingURL=chunk-HP4RM2SM.js.map
39652
+ //# sourceMappingURL=chunk-MVVZPLI6.js.map