@tutti-os/agent-gui 0.0.176 → 0.0.178

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-CLU6X2Hk.js';
5
+ import { d as AgentGUIProviderSkillOption, h as AgentMessageMarkdownWorkspaceAppIcon } from '../agentGuiNodeTypes-CbBAccKv.js';
6
6
  import { AgentActivityMessage } from '@tutti-os/agent-activity-core';
7
7
  import '@tutti-os/workspace-issue-manager/core';
8
8
  import '../types-CWFDZVkv.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-CWFDZVkv.js';
6
- import { A as AgentComposerDraft, i as AgentSessionCommand, d as AgentGUIProviderSkillOption, b as AgentGUIComposerSettingsVM, e as AgentGUIQueueStatus, f as AgentGUIQueuedPromptVM, h as AgentMessageMarkdownWorkspaceAppIcon, j as AgentSlashCommandCapability, c as AgentGUINodeViewModel, a as AgentComposerDraftFile, k as AgentUsageQuota, g as AgentHostInputApi } from './agentGuiNodeTypes-CLU6X2Hk.js';
6
+ import { A as AgentComposerDraft, i as AgentSessionCommand, d as AgentGUIProviderSkillOption, b as AgentGUIComposerSettingsVM, e as AgentGUIQueueStatus, f as AgentGUIQueuedPromptVM, h as AgentMessageMarkdownWorkspaceAppIcon, j as AgentSlashCommandCapability, c as AgentGUINodeViewModel, a as AgentComposerDraftFile, k as AgentUsageQuota, g as AgentHostInputApi } from './agentGuiNodeTypes-CbBAccKv.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';
@@ -885,6 +885,7 @@ interface AgentComposerProps {
885
885
  permissionModeId?: string | null;
886
886
  }) => void;
887
887
  capabilityMenuState?: AgentComposerCapabilityMenuState;
888
+ capabilityControlsReadOnly?: boolean;
888
889
  onCapabilitySettingsRequest?: (capability: AgentComposerCapabilitySettingsTarget) => void;
889
890
  onSlashStatusOpen?: () => void;
890
891
  onSlashStatusClose?: () => void;
@@ -1162,6 +1163,11 @@ interface AgentGUINodeHostCapabilities {
1162
1163
  /** Legacy Tutti Agent-only opt-in. Prefer an explicit catalog in new hosts. */
1163
1164
  referenceProvenanceFilterEnabled?: boolean;
1164
1165
  capabilityMenuState?: AgentComposerCapabilityMenuState;
1166
+ /**
1167
+ * Keeps owner-supported Browser/Computer capability entries visible while
1168
+ * preventing this host from mutating device-owned capability settings.
1169
+ */
1170
+ capabilityControlsReadOnly?: boolean;
1165
1171
  accountMenuState?: AgentGUIAccountMenuState | null;
1166
1172
  agentTargets?: readonly AgentGUIAgentTarget[];
1167
1173
  agentTargetsLoading?: boolean;
package/dist/agent-gui.js CHANGED
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  AgentGUI
3
- } from "./chunk-4OOALEBA.js";
3
+ } from "./chunk-WPV23OY7.js";
4
4
  import "./chunk-A4WCTHWS.js";
5
5
  import "./chunk-GZXOFYCW.js";
6
6
  import "./chunk-6II57C72.js";
@@ -677,6 +677,8 @@ interface AgentGUIComposerSettingsVM {
677
677
  selectedProjectPath?: string | null;
678
678
  /** Persisted rail membership used to scope Agent-generated file mentions. */
679
679
  selectedProjectSectionKey?: string | null;
680
+ /** Resolve the durable default only before the home project intent is known. */
681
+ shouldApplyPreparedProjectSelection?: boolean;
680
682
  projectLocked?: boolean;
681
683
  projectPathIsRemote?: boolean;
682
684
  collapseModelOptionsToLatest?: boolean;
@@ -6366,6 +6366,8 @@ button.agent-gui-node__conversation-section-toggle:hover
6366
6366
 
6367
6367
  .agent-gui-node__conversation-item {
6368
6368
  --agent-gui-conversation-actions-width: 72px;
6369
+ --agent-gui-conversation-actions-inset: 4px;
6370
+ --agent-gui-conversation-actions-gap: 8px;
6369
6371
 
6370
6372
  position: relative;
6371
6373
  display: block;
@@ -6410,7 +6412,7 @@ button.agent-gui-node__conversation-section-toggle:hover
6410
6412
  display: grid;
6411
6413
  box-sizing: border-box;
6412
6414
  grid-template-columns: minmax(0, 1fr) auto;
6413
- gap: 8px;
6415
+ gap: var(--agent-gui-conversation-actions-gap);
6414
6416
  align-items: center;
6415
6417
  width: 100%;
6416
6418
  max-width: 100%;
@@ -6452,7 +6454,10 @@ button.agent-gui-node__conversation-section-toggle:hover
6452
6454
  )
6453
6455
  .agent-gui-node__conversation-select {
6454
6456
  grid-template-columns: minmax(0, 1fr) 0;
6455
- padding-right: calc(var(--agent-gui-conversation-actions-width) + 24px);
6457
+ padding-right: calc(
6458
+ var(--agent-gui-conversation-actions-width) +
6459
+ var(--agent-gui-conversation-actions-inset)
6460
+ );
6456
6461
  }
6457
6462
 
6458
6463
  .agent-gui-node__conversation-item[data-pending-delete="true"]
@@ -6486,7 +6491,7 @@ button.agent-gui-node__conversation-section-toggle:hover
6486
6491
  .agent-gui-node__conversation-actions {
6487
6492
  position: absolute;
6488
6493
  top: 50%;
6489
- right: 4px;
6494
+ right: var(--agent-gui-conversation-actions-inset);
6490
6495
  z-index: 1;
6491
6496
  display: inline-flex;
6492
6497
  align-items: center;
@@ -5263,7 +5263,7 @@ function arePermissionConfigsEqual(left, right) {
5263
5263
  );
5264
5264
  }
5265
5265
  function areComposerSettingsVMsEqual(left, right) {
5266
- return sameComposerSettings(left.sessionSettings, right.sessionSettings) && areComposerSettingsDraftsEqual(left.draftSettings, right.draftSettings) && left.supportsModel === right.supportsModel && left.supportsReasoningEffort === right.supportsReasoningEffort && left.supportsSpeed === right.supportsSpeed && (left.supportsPermissionMode ?? false) === (right.supportsPermissionMode ?? false) && left.supportsPlanMode === right.supportsPlanMode && (left.supportsBrowser ?? false) === (right.supportsBrowser ?? false) && (left.supportsComputerUse ?? false) === (right.supportsComputerUse ?? false) && (left.permissionModeChangeDuringTurn ?? false) === (right.permissionModeChangeDuringTurn ?? false) && slashCommandPoliciesEqual(left.slashCommandPolicy, right.slashCommandPolicy) && left.isSettingsLoading === right.isSettingsLoading && !!left.isCapabilityOptionsLoading === !!right.isCapabilityOptionsLoading && !!left.isModelOptionsLoading === !!right.isModelOptionsLoading && left.modelUnavailable === right.modelUnavailable && left.reasoningUnavailable === right.reasoningUnavailable && left.speedUnavailable === right.speedUnavailable && (left.permissionModeUnavailable ?? false) === (right.permissionModeUnavailable ?? false) && (left.planExclusiveWithPermissionMode ?? false) === (right.planExclusiveWithPermissionMode ?? false) && (left.selectedModelValue ?? null) === (right.selectedModelValue ?? null) && (left.selectedReasoningEffortValue ?? null) === (right.selectedReasoningEffortValue ?? null) && (left.selectedSpeedValue ?? null) === (right.selectedSpeedValue ?? null) && (left.selectedPermissionModeValue ?? null) === (right.selectedPermissionModeValue ?? null) && arePermissionConfigsEqual(left.permissionConfig, right.permissionConfig) && (left.selectedProjectPath ?? null) === (right.selectedProjectPath ?? null) && Boolean(left.projectLocked) === Boolean(right.projectLocked) && Boolean(left.projectPathIsRemote) === Boolean(right.projectPathIsRemote) && Boolean(left.collapseModelOptionsToLatest) === Boolean(right.collapseModelOptionsToLatest) && areComposerSettingOptionListsEqual(
5266
+ return sameComposerSettings(left.sessionSettings, right.sessionSettings) && areComposerSettingsDraftsEqual(left.draftSettings, right.draftSettings) && left.supportsModel === right.supportsModel && left.supportsReasoningEffort === right.supportsReasoningEffort && left.supportsSpeed === right.supportsSpeed && (left.supportsPermissionMode ?? false) === (right.supportsPermissionMode ?? false) && left.supportsPlanMode === right.supportsPlanMode && (left.supportsBrowser ?? false) === (right.supportsBrowser ?? false) && (left.supportsComputerUse ?? false) === (right.supportsComputerUse ?? false) && (left.permissionModeChangeDuringTurn ?? false) === (right.permissionModeChangeDuringTurn ?? false) && slashCommandPoliciesEqual(left.slashCommandPolicy, right.slashCommandPolicy) && left.isSettingsLoading === right.isSettingsLoading && !!left.isCapabilityOptionsLoading === !!right.isCapabilityOptionsLoading && !!left.isModelOptionsLoading === !!right.isModelOptionsLoading && left.modelUnavailable === right.modelUnavailable && left.reasoningUnavailable === right.reasoningUnavailable && left.speedUnavailable === right.speedUnavailable && (left.permissionModeUnavailable ?? false) === (right.permissionModeUnavailable ?? false) && (left.planExclusiveWithPermissionMode ?? false) === (right.planExclusiveWithPermissionMode ?? false) && (left.selectedModelValue ?? null) === (right.selectedModelValue ?? null) && (left.selectedReasoningEffortValue ?? null) === (right.selectedReasoningEffortValue ?? null) && (left.selectedSpeedValue ?? null) === (right.selectedSpeedValue ?? null) && (left.selectedPermissionModeValue ?? null) === (right.selectedPermissionModeValue ?? null) && arePermissionConfigsEqual(left.permissionConfig, right.permissionConfig) && (left.selectedProjectPath ?? null) === (right.selectedProjectPath ?? null) && Boolean(left.shouldApplyPreparedProjectSelection) === Boolean(right.shouldApplyPreparedProjectSelection) && Boolean(left.projectLocked) === Boolean(right.projectLocked) && Boolean(left.projectPathIsRemote) === Boolean(right.projectPathIsRemote) && Boolean(left.collapseModelOptionsToLatest) === Boolean(right.collapseModelOptionsToLatest) && areComposerSettingOptionListsEqual(
5267
5267
  left.availableModels,
5268
5268
  right.availableModels
5269
5269
  ) && areComposerSettingOptionListsEqual(
@@ -10729,6 +10729,7 @@ function useAgentGUIComposerPresentation(input) {
10729
10729
  input.selectedProjectPath,
10730
10730
  input.userProjects
10731
10731
  ),
10732
+ shouldApplyPreparedProjectSelection: input.activeConversationId === null && input.shouldApplyPreparedProjectSelection,
10732
10733
  projectLocked: input.activeConversationId !== null,
10733
10734
  projectPathIsRemote: input.agentActivityRuntime.projectPathIsRemote,
10734
10735
  collapseModelOptionsToLatest: input.providerComposerOptions?.behavior.collapseModelOptionsToLatest === true,
@@ -10755,6 +10756,7 @@ function useAgentGUIComposerPresentation(input) {
10755
10756
  input.providerComposerOptions,
10756
10757
  input.selectedComposerTargetData.agentTargetId,
10757
10758
  input.selectedProjectPath,
10759
+ input.shouldApplyPreparedProjectSelection,
10758
10760
  input.userProjects,
10759
10761
  optionsReasoningEffort,
10760
10762
  sessionSettings,
@@ -12753,7 +12755,11 @@ function useAgentGUISessionDetailTransport(input) {
12753
12755
  }
12754
12756
 
12755
12757
  // agent-gui/agentGuiNode/controller/useAgentGUILocalState.ts
12756
- import { useCallback as useCallback26, useRef as useRef19, useState as useState7 } from "react";
12758
+ import {
12759
+ useCallback as useCallback26,
12760
+ useRef as useRef19,
12761
+ useState as useState7
12762
+ } from "react";
12757
12763
  function useAgentGUILocalState({
12758
12764
  data,
12759
12765
  userProjectsApi
@@ -12766,9 +12772,15 @@ function useAgentGUILocalState({
12766
12772
  const [intent, setIntent] = useState7(
12767
12773
  () => data.lastActiveAgentSessionId ? { tag: "requested", id: data.lastActiveAgentSessionId } : { tag: "home" }
12768
12774
  );
12769
- const [selectedProjectPath, setSelectedProjectPath] = useState7(
12770
- null
12771
- );
12775
+ const [homeProjectSelection, setHomeProjectSelection] = useState7({ kind: "unresolved_default" });
12776
+ const selectedProjectPath = homeProjectSelection.kind === "resolved" ? homeProjectSelection.projectPath : null;
12777
+ const setSelectedProjectPath = useCallback26((nextProjectPath) => {
12778
+ setHomeProjectSelection((current) => {
12779
+ const currentProjectPath = current.kind === "resolved" ? current.projectPath : null;
12780
+ const projectPath = typeof nextProjectPath === "function" ? nextProjectPath(currentProjectPath) : nextProjectPath;
12781
+ return { kind: "resolved", projectPath };
12782
+ });
12783
+ }, []);
12772
12784
  const [isComposerHome, setIsComposerHome] = useState7(
12773
12785
  data.lastActiveAgentSessionId === null
12774
12786
  );
@@ -12824,6 +12836,7 @@ function useAgentGUILocalState({
12824
12836
  railRevealRequest,
12825
12837
  requestRailReveal,
12826
12838
  selectedProjectPath,
12839
+ shouldApplyPreparedProjectSelection: homeProjectSelection.kind === "unresolved_default",
12827
12840
  setActiveConversationId,
12828
12841
  setDetailError,
12829
12842
  setDraftByScopeKey,
@@ -18112,6 +18125,7 @@ function useComposerPaletteCatalog({
18112
18125
  compactSupported,
18113
18126
  composerSettings,
18114
18127
  capabilityMenuState,
18128
+ capabilityControlsReadOnly,
18115
18129
  labels,
18116
18130
  uiLanguage,
18117
18131
  editorHandleRef
@@ -18159,6 +18173,9 @@ function useComposerPaletteCatalog({
18159
18173
  [availableSkills, skillQueryMatch]
18160
18174
  );
18161
18175
  const availableCapabilities = useMemo22(() => {
18176
+ if (capabilityControlsReadOnly) {
18177
+ return [];
18178
+ }
18162
18179
  const entries = [];
18163
18180
  if (composerSettings.supportsBrowser) {
18164
18181
  entries.push({
@@ -18178,6 +18195,7 @@ function useComposerPaletteCatalog({
18178
18195
  }
18179
18196
  return entries;
18180
18197
  }, [
18198
+ capabilityControlsReadOnly,
18181
18199
  composerSettings.supportsBrowser,
18182
18200
  composerSettings.supportsComputerUse,
18183
18201
  labels.browserUseCapabilityLabel,
@@ -18199,6 +18217,7 @@ function useComposerPaletteCatalog({
18199
18217
  description: capDescription,
18200
18218
  settingsAriaLabel: capSettingsLabel,
18201
18219
  settingsLabel: labels.capabilityInlineSettingsLabel,
18220
+ disabled: capabilityControlsReadOnly,
18202
18221
  selectAction: command.capability === "computerUse" && (computerUseInstalled === false || computerUseInstalled === true && (computerUseAuthorization === "needs-authorization" || computerUseAuthorization === "unknown")) ? "settings" : "capability",
18203
18222
  capability: command
18204
18223
  };
@@ -18235,6 +18254,7 @@ function useComposerPaletteCatalog({
18235
18254
  capabilityMenuState?.browserUse?.connectionMode,
18236
18255
  capabilityMenuState?.computerUse?.authorization,
18237
18256
  capabilityMenuState?.computerUse?.installed,
18257
+ capabilityControlsReadOnly,
18238
18258
  filteredCommands,
18239
18259
  filteredSkills,
18240
18260
  labels.browserUseCapabilityDescription,
@@ -18753,6 +18773,7 @@ function useComposerSlashActions(input) {
18753
18773
  promptImagesSupported,
18754
18774
  availableSkills = [],
18755
18775
  composerSettings,
18776
+ capabilityControlsReadOnly = false,
18756
18777
  onDraftContentChange,
18757
18778
  onSettingsChange,
18758
18779
  onSubmit,
@@ -18975,6 +18996,9 @@ function useComposerSlashActions(input) {
18975
18996
  );
18976
18997
  const selectCapability = useCallback35(
18977
18998
  (capability) => {
18999
+ if (capabilityControlsReadOnly) {
19000
+ return;
19001
+ }
18978
19002
  const selectionEffect = resolveSlashCommandSelectionEffect({
18979
19003
  provider,
18980
19004
  policy: slashCommandPolicy,
@@ -18985,14 +19009,22 @@ function useComposerSlashActions(input) {
18985
19009
  executeSlashCommandEffect(selectionEffect);
18986
19010
  }
18987
19011
  },
18988
- [executeSlashCommandEffect, provider, slashCommandPolicy]
19012
+ [
19013
+ capabilityControlsReadOnly,
19014
+ executeSlashCommandEffect,
19015
+ provider,
19016
+ slashCommandPolicy
19017
+ ]
18989
19018
  );
18990
19019
  const selectCapabilitySettings = useCallback35(
18991
19020
  (capability) => {
19021
+ if (capabilityControlsReadOnly) {
19022
+ return;
19023
+ }
18992
19024
  onCapabilitySettingsRequest?.(capability.capability);
18993
19025
  setIsPaletteOpen(false);
18994
19026
  },
18995
- [onCapabilitySettingsRequest]
19027
+ [capabilityControlsReadOnly, onCapabilitySettingsRequest]
18996
19028
  );
18997
19029
  const selectSkill = useCallback35(
18998
19030
  (skill) => {
@@ -19064,6 +19096,9 @@ function useComposerSlashActions(input) {
19064
19096
  policy: slashCommandPolicy
19065
19097
  });
19066
19098
  if (slashCommandEffect) {
19099
+ if (capabilityControlsReadOnly && slashCommandEffect.kind === "submitPrompt" && (slashCommandEffect.requiredSettingsPatch?.browserUse !== void 0 || slashCommandEffect.requiredSettingsPatch?.computerUse !== void 0)) {
19100
+ return;
19101
+ }
19067
19102
  executeSlashCommandEffect(slashCommandEffect);
19068
19103
  return;
19069
19104
  }
@@ -19151,6 +19186,9 @@ function useComposerSlashActions(input) {
19151
19186
  if (event.key === "Tab" || event.key === "Enter") {
19152
19187
  event.preventDefault();
19153
19188
  const activeEntry = slashPaletteEntries[activeHighlight];
19189
+ if (activeEntry?.type === "capability" && activeEntry.disabled) {
19190
+ return true;
19191
+ }
19154
19192
  if (activeEntry?.type === "command") {
19155
19193
  selectCommand(activeEntry.command);
19156
19194
  } else if (activeEntry?.type === "capability") {
@@ -21715,6 +21753,7 @@ function AgentProjectDropdown({
21715
21753
  ),
21716
21754
  selectedProjectPath: composerSettings.selectedProjectPath,
21717
21755
  service: agentHostApi.userProjects?.service ?? null,
21756
+ shouldApplyPreparedSelection: composerSettings.shouldApplyPreparedProjectSelection === true,
21718
21757
  onDismissAutoFocus,
21719
21758
  onProjectMissingChange,
21720
21759
  onProjectPathChange
@@ -23809,6 +23848,7 @@ function AgentSlashCommandPalette({
23809
23848
  return /* @__PURE__ */ jsxs23("div", { className: paletteStyles.palette, role: "listbox", "aria-label": label, children: [
23810
23849
  entries.map((entry, index) => {
23811
23850
  const isHighlighted = index === highlightedIndex;
23851
+ const isDisabled = entry.type === "capability" && entry.disabled === true;
23812
23852
  const groupType = entryGroupType(entry);
23813
23853
  const entryIcon = slashPaletteEntryIcon(entry);
23814
23854
  const groupHeader = showGroupHeaders && firstEntryIndexByType.get(groupType) === index ? /* @__PURE__ */ jsx32(
@@ -23838,14 +23878,19 @@ function AgentSlashCommandPalette({
23838
23878
  ref: isHighlighted ? highlightedOptionRef : null,
23839
23879
  className: cn(
23840
23880
  paletteStyles.option,
23841
- isHighlighted && "bg-[var(--transparency-block)]"
23881
+ isHighlighted && "bg-[var(--transparency-block)]",
23882
+ isDisabled && "cursor-not-allowed text-[var(--agent-gui-text-tertiary)] opacity-60 hover:bg-transparent active:bg-transparent"
23842
23883
  ),
23843
23884
  role: "option",
23844
23885
  "aria-selected": isHighlighted,
23886
+ "aria-disabled": isDisabled || void 0,
23845
23887
  "data-highlighted": isHighlighted ? "" : void 0,
23846
23888
  onMouseEnter: () => onHighlightChange(index),
23847
23889
  onMouseDown: (event) => event.preventDefault(),
23848
23890
  onClick: () => {
23891
+ if (isDisabled) {
23892
+ return;
23893
+ }
23849
23894
  if (entry.type === "command") {
23850
23895
  onSelect(entry.command);
23851
23896
  return;
@@ -23874,6 +23919,7 @@ function AgentSlashCommandPalette({
23874
23919
  {
23875
23920
  "aria-label": entry.settingsAriaLabel ?? entry.settingsLabel,
23876
23921
  className: paletteStyles.settingsButton,
23922
+ disabled: isDisabled,
23877
23923
  title: entry.settingsAriaLabel ?? entry.settingsLabel,
23878
23924
  type: "button",
23879
23925
  onClick: (event) => {
@@ -27299,6 +27345,7 @@ function AgentComposer(props) {
27299
27345
  onDraftContentChange,
27300
27346
  onSettingsChange,
27301
27347
  capabilityMenuState,
27348
+ capabilityControlsReadOnly = false,
27302
27349
  onSubmit,
27303
27350
  onSubmitGuidance,
27304
27351
  onInterruptCurrentTurn,
@@ -27400,6 +27447,7 @@ function AgentComposer(props) {
27400
27447
  compactSupported,
27401
27448
  composerSettings,
27402
27449
  capabilityMenuState,
27450
+ capabilityControlsReadOnly,
27403
27451
  labels,
27404
27452
  uiLanguage,
27405
27453
  editorHandleRef
@@ -27497,6 +27545,7 @@ function AgentComposer(props) {
27497
27545
  promptImagesSupported: canUploadAttachment && promptImagesSupported,
27498
27546
  availableSkills,
27499
27547
  composerSettings,
27548
+ capabilityControlsReadOnly,
27500
27549
  onDraftContentChange,
27501
27550
  onSettingsChange,
27502
27551
  onSubmit,
@@ -36614,6 +36663,7 @@ var AgentGUIDetailPane = memo12(function AgentGUIDetailPane2({
36614
36663
  onLinkAction,
36615
36664
  onHandoffConversation,
36616
36665
  capabilityMenuState,
36666
+ capabilityControlsReadOnly = false,
36617
36667
  onCapabilitySettingsRequest,
36618
36668
  onAgentProviderLogin,
36619
36669
  onRequestWorkspaceReferences,
@@ -36868,6 +36918,7 @@ var AgentGUIDetailPane = memo12(function AgentGUIDetailPane2({
36868
36918
  labels: composerLabels,
36869
36919
  workspaceUserProjectI18n,
36870
36920
  capabilityMenuState,
36921
+ capabilityControlsReadOnly,
36871
36922
  onDraftContentChange: updateDraftContent,
36872
36923
  onProjectPathChange: updateSelectedProjectPath,
36873
36924
  onSettingsChange: updateComposerSettings,
@@ -36892,6 +36943,7 @@ var AgentGUIDetailPane = memo12(function AgentGUIDetailPane2({
36892
36943
  [
36893
36944
  canQueueWhileBusy,
36894
36945
  capabilityMenuState,
36946
+ capabilityControlsReadOnly,
36895
36947
  canSwitchComposerProvider,
36896
36948
  composerDisabled,
36897
36949
  composerDisabledReason,
@@ -37980,6 +38032,7 @@ function AgentGUINodeView({
37980
38032
  onLinkAction,
37981
38033
  onHandoffConversation,
37982
38034
  capabilityMenuState,
38035
+ capabilityControlsReadOnly = false,
37983
38036
  onCapabilitySettingsRequest,
37984
38037
  isActive = true,
37985
38038
  isVisible = true,
@@ -38568,6 +38621,7 @@ function AgentGUINodeView({
38568
38621
  onLinkAction,
38569
38622
  onHandoffConversation,
38570
38623
  capabilityMenuState,
38624
+ capabilityControlsReadOnly,
38571
38625
  onCapabilitySettingsRequest,
38572
38626
  onAgentProviderLogin,
38573
38627
  onRequestWorkspaceReferences: requestWorkspaceReferences,
@@ -38886,7 +38940,7 @@ function areAgentGUINodePropsEqual(previous, next) {
38886
38940
  const pc = previous.hostCapabilities, nc = next.hostCapabilities;
38887
38941
  const pa = previous.hostActions, na = next.hostActions;
38888
38942
  const ps = previous.renderSlots, ns = next.renderSlots;
38889
- return pi.nodeId === ni.nodeId && pi.workspaceId === ni.workspaceId && pi.currentUserId === ni.currentUserId && pi.title === ni.title && pw.path === nw.path && pw.fileReferenceAdapter === nw.fileReferenceAdapter && pw.onRequestGitBranches === nw.onRequestGitBranches && pw.selectProjectDirectory === nw.selectProjectDirectory && pw.resolveExternalPromptEntries === nw.resolveExternalPromptEntries && pw.prepareExternalPromptFiles === nw.prepareExternalPromptFiles && pw.promptAssetLimit === nw.promptAssetLimit && pw.projectDirectorySourceAggregator === nw.projectDirectorySourceAggregator && pw.referenceSourceAggregator === nw.referenceSourceAggregator && pw.resolveReferenceEntryIconUrl === nw.resolveReferenceEntryIconUrl && pw.resolveMentionReferenceTarget === nw.resolveMentionReferenceTarget && pw.resolveReferenceInitialTarget === nw.resolveReferenceInitialTarget && pw.onFileReferencesAdded === nw.onFileReferencesAdded && pw.agentSettings.avoidGroupingEdits === nw.agentSettings.avoidGroupingEdits && pc.referenceProvenanceFilterCatalog === nc.referenceProvenanceFilterCatalog && pc.referenceProvenanceFilterEnabled === nc.referenceProvenanceFilterEnabled && agentGuiStateEquals(previous.state, next.state) && pf.position.x === nf.position.x && pf.position.y === nf.position.y && pf.width === nf.width && pf.height === nf.height && pf.desktopSize.width === nf.desktopSize.width && pf.desktopSize.height === nf.desktopSize.height && pf.isMaximized === nf.isMaximized && pf.isActive === nf.isActive && pf.isVisible === nf.isVisible && pf.embedded === nf.embedded && pf.previewMode === nf.previewMode && pf.conversationRailAutoCollapseWidthPx === nf.conversationRailAutoCollapseWidthPx && pr.composerFocusSequence === nr.composerFocusSequence && pr.composerAppend === nr.composerAppend && pr.newConversationSequence === nr.newConversationSequence && pr.sessionAction === nr.sessionAction && pr.openSession === nr.openSession && pr.prefillPrompt === nr.prefillPrompt && pr.agentStatusController === nr.agentStatusController && pc.capabilityMenuState === nc.capabilityMenuState && pc.accountMenuState === nc.accountMenuState && pc.agentTargets === nc.agentTargets && pc.agentTargetsLoading === nc.agentTargetsLoading && pc.handoffAgentTargets === nc.handoffAgentTargets && pc.handoffAgentTargetsLoading === nc.handoffAgentTargetsLoading && pc.providerRailAllPresentation?.iconUrl === nc.providerRailAllPresentation?.iconUrl && pc.providerRailMode === nc.providerRailMode && pc.comingSoonProviders === nc.comingSoonProviders && pc.providerReadinessGates === nc.providerReadinessGates && pc.defaultAgentTargetId === nc.defaultAgentTargetId && pc.providerAuthAccountLabels === nc.providerAuthAccountLabels && pc.mentionService === nc.mentionService && pc.workspaceAppIcons === nc.workspaceAppIcons && pc.disabledHomeSuggestions === nc.disabledHomeSuggestions && pa.onLinkAction === na.onLinkAction && pa.onHandoffConversation === na.onHandoffConversation && pa.onCapabilitySettingsRequest === na.onCapabilitySettingsRequest && pa.onAgentProviderLogin === na.onAgentProviderLogin && pa.onAgentEnvPanelOpen === na.onAgentEnvPanelOpen && pa.onOpenConversationWindow === na.onOpenConversationWindow && pa.onClose === na.onClose && pa.onResize === na.onResize && pa.onUpdateNode === na.onUpdateNode && pa.onRememberComposerDefaults === na.onRememberComposerDefaults && pa.isMuted === na.isMuted && pa.onMinimize === na.onMinimize && pa.onToggleMaximize === na.onToggleMaximize && pa.onShowMessage === na.onShowMessage && pa.onEngagementEvent === na.onEngagementEvent && pa.onConversationRailLayoutChange === na.onConversationRailLayoutChange && ps.providerRailEmpty === ns.providerRailEmpty && ps.providerUnavailableState === ns.providerUnavailableState && ps.sidebarFooter === ns.sidebarFooter;
38943
+ return pi.nodeId === ni.nodeId && pi.workspaceId === ni.workspaceId && pi.currentUserId === ni.currentUserId && pi.title === ni.title && pw.path === nw.path && pw.fileReferenceAdapter === nw.fileReferenceAdapter && pw.onRequestGitBranches === nw.onRequestGitBranches && pw.selectProjectDirectory === nw.selectProjectDirectory && pw.resolveExternalPromptEntries === nw.resolveExternalPromptEntries && pw.prepareExternalPromptFiles === nw.prepareExternalPromptFiles && pw.promptAssetLimit === nw.promptAssetLimit && pw.projectDirectorySourceAggregator === nw.projectDirectorySourceAggregator && pw.referenceSourceAggregator === nw.referenceSourceAggregator && pw.resolveReferenceEntryIconUrl === nw.resolveReferenceEntryIconUrl && pw.resolveMentionReferenceTarget === nw.resolveMentionReferenceTarget && pw.resolveReferenceInitialTarget === nw.resolveReferenceInitialTarget && pw.onFileReferencesAdded === nw.onFileReferencesAdded && pw.agentSettings.avoidGroupingEdits === nw.agentSettings.avoidGroupingEdits && pc.referenceProvenanceFilterCatalog === nc.referenceProvenanceFilterCatalog && pc.referenceProvenanceFilterEnabled === nc.referenceProvenanceFilterEnabled && agentGuiStateEquals(previous.state, next.state) && pf.position.x === nf.position.x && pf.position.y === nf.position.y && pf.width === nf.width && pf.height === nf.height && pf.desktopSize.width === nf.desktopSize.width && pf.desktopSize.height === nf.desktopSize.height && pf.isMaximized === nf.isMaximized && pf.isActive === nf.isActive && pf.isVisible === nf.isVisible && pf.embedded === nf.embedded && pf.previewMode === nf.previewMode && pf.conversationRailAutoCollapseWidthPx === nf.conversationRailAutoCollapseWidthPx && pr.composerFocusSequence === nr.composerFocusSequence && pr.composerAppend === nr.composerAppend && pr.newConversationSequence === nr.newConversationSequence && pr.sessionAction === nr.sessionAction && pr.openSession === nr.openSession && pr.prefillPrompt === nr.prefillPrompt && pr.agentStatusController === nr.agentStatusController && pc.capabilityMenuState === nc.capabilityMenuState && pc.capabilityControlsReadOnly === nc.capabilityControlsReadOnly && pc.accountMenuState === nc.accountMenuState && pc.agentTargets === nc.agentTargets && pc.agentTargetsLoading === nc.agentTargetsLoading && pc.handoffAgentTargets === nc.handoffAgentTargets && pc.handoffAgentTargetsLoading === nc.handoffAgentTargetsLoading && pc.providerRailAllPresentation?.iconUrl === nc.providerRailAllPresentation?.iconUrl && pc.providerRailMode === nc.providerRailMode && pc.comingSoonProviders === nc.comingSoonProviders && pc.providerReadinessGates === nc.providerReadinessGates && pc.defaultAgentTargetId === nc.defaultAgentTargetId && pc.providerAuthAccountLabels === nc.providerAuthAccountLabels && pc.mentionService === nc.mentionService && pc.workspaceAppIcons === nc.workspaceAppIcons && pc.disabledHomeSuggestions === nc.disabledHomeSuggestions && pa.onLinkAction === na.onLinkAction && pa.onHandoffConversation === na.onHandoffConversation && pa.onCapabilitySettingsRequest === na.onCapabilitySettingsRequest && pa.onAgentProviderLogin === na.onAgentProviderLogin && pa.onAgentEnvPanelOpen === na.onAgentEnvPanelOpen && pa.onOpenConversationWindow === na.onOpenConversationWindow && pa.onClose === na.onClose && pa.onResize === na.onResize && pa.onUpdateNode === na.onUpdateNode && pa.onRememberComposerDefaults === na.onRememberComposerDefaults && pa.isMuted === na.isMuted && pa.onMinimize === na.onMinimize && pa.onToggleMaximize === na.onToggleMaximize && pa.onShowMessage === na.onShowMessage && pa.onEngagementEvent === na.onEngagementEvent && pa.onConversationRailLayoutChange === na.onConversationRailLayoutChange && ps.providerRailEmpty === ns.providerRailEmpty && ps.providerUnavailableState === ns.providerUnavailableState && ps.sidebarFooter === ns.sidebarFooter;
38890
38944
  }
38891
38945
 
38892
38946
  // agent-gui/agentGuiNode/AgentGUIMentionServiceBoundary.tsx
@@ -40033,6 +40087,7 @@ var AgentGUINode = memo14(function AgentGUINode2({
40033
40087
  } = runtimeRequests;
40034
40088
  const {
40035
40089
  capabilityMenuState,
40090
+ capabilityControlsReadOnly = false,
40036
40091
  accountMenuState = null,
40037
40092
  agentTargets,
40038
40093
  agentTargetsLoading = false,
@@ -40383,6 +40438,7 @@ var AgentGUINode = memo14(function AgentGUINode2({
40383
40438
  onLinkAction: handleLinkAction,
40384
40439
  onHandoffConversation,
40385
40440
  capabilityMenuState,
40441
+ capabilityControlsReadOnly,
40386
40442
  onCapabilitySettingsRequest,
40387
40443
  onAgentProviderLogin: onAgentProviderLogin ? handleAgentProviderLogin : void 0,
40388
40444
  onAgentEnvPanelOpen,
@@ -40523,4 +40579,4 @@ export {
40523
40579
  AgentHandoffMenu,
40524
40580
  AgentGUI
40525
40581
  };
40526
- //# sourceMappingURL=chunk-4OOALEBA.js.map
40582
+ //# sourceMappingURL=chunk-WPV23OY7.js.map