@tutti-os/agent-gui 0.0.81 → 0.0.83

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.
Files changed (47) hide show
  1. package/dist/agent-conversation/index.js +7 -7
  2. package/dist/agent-message-center/index.js +9 -9
  3. package/dist/app/renderer/agentactivity.css +1 -3
  4. package/dist/app/renderer/assets/icons/agents/agent-colorful.png +0 -0
  5. package/dist/app/renderer/assets/icons/agents/cursor-colorful.png +0 -0
  6. package/dist/app/renderer/assets/icons/agents/opencode-rounded.png +0 -0
  7. package/dist/app/renderer/assets/icons/agents/provider-rail-opencode-colorful.png +0 -0
  8. package/dist/{chunk-AIYGF64O.js → chunk-3355GEBI.js} +2 -2
  9. package/dist/{chunk-PVLUSXH5.js → chunk-6YLA7R4S.js} +2 -2
  10. package/dist/{chunk-Z7KHS6LK.js → chunk-A2JPL5N6.js} +2 -2
  11. package/dist/{chunk-5WZEOARY.js → chunk-AA75BOX3.js} +3 -1
  12. package/dist/chunk-AA75BOX3.js.map +1 -0
  13. package/dist/{chunk-5BFYTHJB.js → chunk-CVPWQHQH.js} +2 -2
  14. package/dist/{chunk-YXFKEOEI.js → chunk-CXJEQQR5.js} +3 -3
  15. package/dist/{chunk-4SARLGMK.js → chunk-DBIJRSFG.js} +2 -2
  16. package/dist/{chunk-PGQ3RUPL.js → chunk-HUNUSBQQ.js} +3 -3
  17. package/dist/{chunk-RIRFNGPB.js → chunk-LR4FA5X6.js} +2 -2
  18. package/dist/{chunk-T56L2H2H.js → chunk-MQ6WW3CD.js} +2 -2
  19. package/dist/{chunk-7BMLQJMI.js → chunk-N7EX6XK3.js} +4 -4
  20. package/dist/{chunk-Z6YBAL2O.js → chunk-UNLTQUPO.js} +5 -5
  21. package/dist/{chunk-RAFZ2LKU.js → chunk-XCO6DDLR.js} +5 -5
  22. package/dist/{chunk-SYWMKIRW.js → chunk-XDV4ZRVK.js} +5 -5
  23. package/dist/context-mention-palette/index.js +8 -8
  24. package/dist/i18n/index.d.ts +2 -0
  25. package/dist/i18n/index.js +2 -2
  26. package/dist/index.d.ts +1 -0
  27. package/dist/index.js +224 -50
  28. package/dist/index.js.map +1 -1
  29. package/dist/workbench/contribution.js +2 -2
  30. package/dist/workbench/index.js +5 -5
  31. package/dist/workbench/sessionTitle.js +3 -3
  32. package/dist/workspace-agent-generated-files.js +3 -3
  33. package/package.json +12 -12
  34. package/dist/chunk-5WZEOARY.js.map +0 -1
  35. /package/dist/{chunk-AIYGF64O.js.map → chunk-3355GEBI.js.map} +0 -0
  36. /package/dist/{chunk-PVLUSXH5.js.map → chunk-6YLA7R4S.js.map} +0 -0
  37. /package/dist/{chunk-Z7KHS6LK.js.map → chunk-A2JPL5N6.js.map} +0 -0
  38. /package/dist/{chunk-5BFYTHJB.js.map → chunk-CVPWQHQH.js.map} +0 -0
  39. /package/dist/{chunk-YXFKEOEI.js.map → chunk-CXJEQQR5.js.map} +0 -0
  40. /package/dist/{chunk-4SARLGMK.js.map → chunk-DBIJRSFG.js.map} +0 -0
  41. /package/dist/{chunk-PGQ3RUPL.js.map → chunk-HUNUSBQQ.js.map} +0 -0
  42. /package/dist/{chunk-RIRFNGPB.js.map → chunk-LR4FA5X6.js.map} +0 -0
  43. /package/dist/{chunk-T56L2H2H.js.map → chunk-MQ6WW3CD.js.map} +0 -0
  44. /package/dist/{chunk-7BMLQJMI.js.map → chunk-N7EX6XK3.js.map} +0 -0
  45. /package/dist/{chunk-Z6YBAL2O.js.map → chunk-UNLTQUPO.js.map} +0 -0
  46. /package/dist/{chunk-RAFZ2LKU.js.map → chunk-XCO6DDLR.js.map} +0 -0
  47. /package/dist/{chunk-SYWMKIRW.js.map → chunk-XDV4ZRVK.js.map} +0 -0
@@ -4,19 +4,19 @@ import {
4
4
  AgentMentionSearchController,
5
5
  flattenAgentMentionPaletteEntries,
6
6
  groupStartKeys
7
- } from "../chunk-Z6YBAL2O.js";
8
- import "../chunk-Z7KHS6LK.js";
9
- import "../chunk-5BFYTHJB.js";
7
+ } from "../chunk-UNLTQUPO.js";
8
+ import "../chunk-A2JPL5N6.js";
9
+ import "../chunk-CVPWQHQH.js";
10
10
  import "../chunk-IBIMGLCD.js";
11
- import "../chunk-YXFKEOEI.js";
11
+ import "../chunk-CXJEQQR5.js";
12
12
  import "../chunk-Y35GDLP2.js";
13
13
  import "../chunk-LUGELG5V.js";
14
- import "../chunk-RIRFNGPB.js";
14
+ import "../chunk-LR4FA5X6.js";
15
15
  import "../chunk-4HP6V2YA.js";
16
- import "../chunk-T56L2H2H.js";
16
+ import "../chunk-MQ6WW3CD.js";
17
17
  import "../chunk-PJP5BUU6.js";
18
- import "../chunk-SYWMKIRW.js";
19
- import "../chunk-5WZEOARY.js";
18
+ import "../chunk-XDV4ZRVK.js";
19
+ import "../chunk-AA75BOX3.js";
20
20
  import {
21
21
  AGENT_CONTEXT_MENTION_PROVIDER_IDS
22
22
  } from "../chunk-JM24HADP.js";
@@ -370,6 +370,7 @@ declare const agentGuiI18nResources: {
370
370
  readonly reasoningOptionHigh: "High";
371
371
  readonly reasoningOptionXHigh: "X-High";
372
372
  readonly reasoningOptionMax: "Max";
373
+ readonly reasoningOptionUltra: "Ultra";
373
374
  readonly speedLabel: "Speed";
374
375
  readonly speedSelectionLabel: "Speed";
375
376
  readonly speedOptionStandard: "Standard";
@@ -2835,6 +2836,7 @@ declare const agentGuiI18nResources: {
2835
2836
  readonly reasoningOptionHigh: "高";
2836
2837
  readonly reasoningOptionXHigh: "超高";
2837
2838
  readonly reasoningOptionMax: "最高";
2839
+ readonly reasoningOptionUltra: "极致";
2838
2840
  readonly speedLabel: "速度";
2839
2841
  readonly speedSelectionLabel: "速度";
2840
2842
  readonly speedOptionStandard: "标准";
@@ -6,8 +6,8 @@ import {
6
6
  translate,
7
7
  translateInUiLanguage,
8
8
  useTranslation
9
- } from "../chunk-T56L2H2H.js";
10
- import "../chunk-5WZEOARY.js";
9
+ } from "../chunk-MQ6WW3CD.js";
10
+ import "../chunk-AA75BOX3.js";
11
11
  export {
12
12
  AgentGuiI18nProvider,
13
13
  agentGuiI18nModule,
package/dist/index.d.ts CHANGED
@@ -691,6 +691,7 @@ interface AgentComposerProps {
691
691
  reasoningOptionHigh: string;
692
692
  reasoningOptionXHigh: string;
693
693
  reasoningOptionMax: string;
694
+ reasoningOptionUltra: string;
694
695
  speedLabel: string;
695
696
  speedSelectionLabel: string;
696
697
  speedOptionStandard: string;
package/dist/index.js CHANGED
@@ -11,7 +11,7 @@ import {
11
11
  resolveAgentGuiSessionProviderFlatIconUrl,
12
12
  resolveNextAgentGUIConversationRailWidthPx,
13
13
  shouldAutoCollapseAgentGUIConversationRail
14
- } from "./chunk-4SARLGMK.js";
14
+ } from "./chunk-DBIJRSFG.js";
15
15
  import {
16
16
  agentGUIDefaultTargetProviders,
17
17
  agentGUIProviderTargetRefsEqual,
@@ -32,7 +32,7 @@ import {
32
32
  import {
33
33
  AgentInteractivePromptSurface,
34
34
  approvalOptionDisplayLabel
35
- } from "./chunk-7BMLQJMI.js";
35
+ } from "./chunk-N7EX6XK3.js";
36
36
  import {
37
37
  PLAN_IMPLEMENTATION_ACTION_FEEDBACK,
38
38
  PLAN_IMPLEMENTATION_ACTION_IMPLEMENT,
@@ -51,7 +51,7 @@ import {
51
51
  resolveAgentGUIExplicitConversationTitle,
52
52
  resolveAgentGUIProviderDisplayLabel,
53
53
  resolveAgentGUIProviderIdentity
54
- } from "./chunk-AIYGF64O.js";
54
+ } from "./chunk-3355GEBI.js";
55
55
  import {
56
56
  AGENT_PASTED_TEXT_BLOCK_KIND,
57
57
  AGENT_PASTED_TEXT_MENTION_KIND,
@@ -88,14 +88,14 @@ import {
88
88
  textPromptContent,
89
89
  toLocalShortDateTime,
90
90
  useProjectedAgentConversation
91
- } from "./chunk-RAFZ2LKU.js";
91
+ } from "./chunk-XCO6DDLR.js";
92
92
  import {
93
93
  AgentMessageMarkdown,
94
94
  AgentTargetPresentationProvider,
95
95
  ZoomableImage,
96
96
  cn,
97
97
  resolveWorkspaceLinkAction
98
- } from "./chunk-PGQ3RUPL.js";
98
+ } from "./chunk-HUNUSBQQ.js";
99
99
  import {
100
100
  openAgentEnvPanel
101
101
  } from "./chunk-PSLAWU25.js";
@@ -106,12 +106,12 @@ import {
106
106
  DEFAULT_AGENT_MENTION_FILTER,
107
107
  agentMentionItemKey,
108
108
  preloadAgentMentionBrowse
109
- } from "./chunk-Z6YBAL2O.js";
109
+ } from "./chunk-UNLTQUPO.js";
110
110
  import {
111
111
  buildWorkspaceAgentActivityListViewModel,
112
112
  isWorkspaceAgentUntitledTask
113
- } from "./chunk-Z7KHS6LK.js";
114
- import "./chunk-5BFYTHJB.js";
113
+ } from "./chunk-A2JPL5N6.js";
114
+ import "./chunk-CVPWQHQH.js";
115
115
  import {
116
116
  resolveWorkspaceAgentSessionSortTimeUnixMs
117
117
  } from "./chunk-IBIMGLCD.js";
@@ -125,7 +125,7 @@ import {
125
125
  mentionItemToAttrs,
126
126
  normalizeAgentSessionMentionTitle,
127
127
  parseMentionItemFromHref
128
- } from "./chunk-YXFKEOEI.js";
128
+ } from "./chunk-CXJEQQR5.js";
129
129
  import "./chunk-Y35GDLP2.js";
130
130
  import "./chunk-LUGELG5V.js";
131
131
  import {
@@ -150,7 +150,7 @@ import {
150
150
  useAgentHostApi,
151
151
  useOptionalAgentActivityRuntime,
152
152
  useOptionalAgentHostApi
153
- } from "./chunk-RIRFNGPB.js";
153
+ } from "./chunk-LR4FA5X6.js";
154
154
  import {
155
155
  WORKSPACE_AGENT_ACTIVITY_RUNTIME_SESSION_ORIGIN,
156
156
  createWorkspaceAgentActivityUserMessageIdFromClientSubmitId,
@@ -166,14 +166,14 @@ import {
166
166
  agentGuiI18nResources,
167
167
  translate,
168
168
  useTranslation
169
- } from "./chunk-T56L2H2H.js";
169
+ } from "./chunk-MQ6WW3CD.js";
170
170
  import "./chunk-PJP5BUU6.js";
171
171
  import {
172
172
  agentColorfulUrl,
173
173
  cursorColorfulUrl,
174
174
  normalizeManagedAgentProvider
175
- } from "./chunk-SYWMKIRW.js";
176
- import "./chunk-5WZEOARY.js";
175
+ } from "./chunk-XDV4ZRVK.js";
176
+ import "./chunk-AA75BOX3.js";
177
177
  import {
178
178
  AGENT_CONTEXT_MENTION_PROVIDER_IDS
179
179
  } from "./chunk-JM24HADP.js";
@@ -6463,6 +6463,86 @@ function reasoningConfigOptionIdForProvider(provider) {
6463
6463
  function speedConfigOptionIdForProvider(provider) {
6464
6464
  return provider === "codex" ? "service_tier" : "fast";
6465
6465
  }
6466
+ function composerSettingOptionsFromActivity(options) {
6467
+ return options.map((option) => ({ ...option }));
6468
+ }
6469
+ function reasoningOptionsFromRuntimeConfig(runtimeContext) {
6470
+ const configOptions = runtimeContext?.configOptions;
6471
+ if (!Array.isArray(configOptions)) {
6472
+ return null;
6473
+ }
6474
+ for (const rawOption of configOptions) {
6475
+ const option = recordValue(rawOption);
6476
+ const id = normalizeConfigOptionValue(option?.id);
6477
+ if (!option || !id || !["reasoning_effort", "model_reasoning_effort", "effort"].includes(id)) {
6478
+ continue;
6479
+ }
6480
+ const rawEntries = option.options;
6481
+ if (!Array.isArray(rawEntries)) {
6482
+ return null;
6483
+ }
6484
+ const options = [];
6485
+ for (const rawEntry of rawEntries) {
6486
+ const entry = recordValue(rawEntry);
6487
+ const value = normalizeConfigOptionValue(entry?.value);
6488
+ if (!entry || !value || options.some((candidate) => candidate.value === value)) {
6489
+ continue;
6490
+ }
6491
+ const label = normalizeConfigOptionValue(entry.name) ?? normalizeConfigOptionValue(entry.label) ?? value;
6492
+ const description = normalizeConfigOptionValue(entry.description);
6493
+ options.push({
6494
+ value,
6495
+ label,
6496
+ ...description ? { description } : {}
6497
+ });
6498
+ }
6499
+ return {
6500
+ currentValue: normalizeConfigOptionValue(
6501
+ option.currentValue ?? option.current_value
6502
+ ),
6503
+ options
6504
+ };
6505
+ }
6506
+ return null;
6507
+ }
6508
+ function reasoningProfileForModel(options, model) {
6509
+ if (!options || !model) {
6510
+ return null;
6511
+ }
6512
+ const profiles = recordValue(
6513
+ options.runtimeContext?.modelReasoningOptionsByModel
6514
+ );
6515
+ const profile = recordValue(profiles?.[model]);
6516
+ if (!profile || !Array.isArray(profile.options)) {
6517
+ return null;
6518
+ }
6519
+ const runtime = reasoningOptionsFromRuntimeConfig({
6520
+ configOptions: [
6521
+ {
6522
+ id: "reasoning_effort",
6523
+ currentValue: profile.defaultValue,
6524
+ options: profile.options
6525
+ }
6526
+ ]
6527
+ });
6528
+ return runtime ? {
6529
+ defaultValue: normalizeConfigOptionValue(profile.defaultValue),
6530
+ options: runtime.options
6531
+ } : null;
6532
+ }
6533
+ function reasoningSelectionForModelFromComposerOptions(options, currentValue, selectedModel) {
6534
+ const modelProfile = reasoningProfileForModel(options, selectedModel);
6535
+ if (!modelProfile) {
6536
+ return null;
6537
+ }
6538
+ const supportedValues = new Set(
6539
+ modelProfile.options.map((option) => option.value)
6540
+ );
6541
+ return {
6542
+ options: modelProfile.options,
6543
+ currentValue: (currentValue && supportedValues.has(currentValue) ? currentValue : null) ?? modelProfile.defaultValue ?? modelProfile.options[0]?.value ?? null
6544
+ };
6545
+ }
6466
6546
  function liveModelOptionValuesFromRuntimeContext(runtimeContext) {
6467
6547
  const configOptions = runtimeContext?.configOptions;
6468
6548
  if (!Array.isArray(configOptions)) {
@@ -6503,6 +6583,25 @@ function composerOptionsMissingLiveModelValues(options, liveValues) {
6503
6583
  const known = new Set(options.models.map((option) => option.value));
6504
6584
  return liveValues.some((value) => !known.has(value));
6505
6585
  }
6586
+ function reasoningSelectionFromComposerOptions(options, currentValue, selectedModel = null, sessionRuntimeContext = null) {
6587
+ const liveConfig = reasoningOptionsFromRuntimeConfig(sessionRuntimeContext);
6588
+ const modelSelection = reasoningSelectionForModelFromComposerOptions(
6589
+ options,
6590
+ currentValue,
6591
+ selectedModel
6592
+ );
6593
+ const sourceOptions = liveConfig ? liveConfig.options : modelSelection ? modelSelection.options : options ? composerSettingOptionsFromActivity(options.reasoningEfforts) : [];
6594
+ if (!options && !liveConfig && !modelSelection) {
6595
+ return null;
6596
+ }
6597
+ const supportedValues = new Set(sourceOptions.map((option) => option.value));
6598
+ const supportedValue = (value) => value && supportedValues.has(value) ? value : null;
6599
+ const resolvedCurrentValue = supportedValue(currentValue) ?? supportedValue(liveConfig?.currentValue) ?? supportedValue(modelSelection?.currentValue) ?? sourceOptions[0]?.value ?? null;
6600
+ return {
6601
+ options: sourceOptions,
6602
+ currentValue: resolvedCurrentValue
6603
+ };
6604
+ }
6506
6605
  function resolveEffectiveComposerSettings(input) {
6507
6606
  return {
6508
6607
  model: normalizeOptionalText(input.settings.model) ?? null,
@@ -6852,20 +6951,29 @@ function sanitizeComposerSettingsForOptions(settings, options) {
6852
6951
  return settings;
6853
6952
  }
6854
6953
  const modelValues = composerOptionValues(options.models);
6855
- const reasoningValues = composerOptionValues(options.reasoningEfforts);
6954
+ const model = normalizeOptionalText2(settings.model);
6955
+ const reasoningEffort = normalizeOptionalText2(
6956
+ settings.reasoningEffort
6957
+ );
6958
+ const modelReasoningSelection = reasoningSelectionForModelFromComposerOptions(
6959
+ options,
6960
+ reasoningEffort,
6961
+ model
6962
+ );
6963
+ const reasoningValues = composerOptionValues(
6964
+ modelReasoningSelection?.options ?? options.reasoningEfforts
6965
+ );
6856
6966
  const speedValues = composerOptionValues(options.speeds ?? []);
6857
6967
  const permissionValues = new Set(
6858
6968
  options.permissionConfig?.modes.map((mode) => mode.id) ?? []
6859
6969
  );
6860
- const model = normalizeOptionalText2(settings.model);
6861
- const reasoningEffort = normalizeOptionalText2(settings.reasoningEffort);
6862
6970
  const speed = normalizeOptionalText2(settings.speed);
6863
6971
  const permissionModeId = normalizePermissionModeId(settings.permissionModeId);
6864
6972
  const modelOptionsAreAuthoritative = options.provider === "claude-code";
6865
6973
  return {
6866
6974
  ...settings,
6867
6975
  model: modelOptionsAreAuthoritative && model && modelValues.size > 0 && !modelValues.has(model) ? null : model,
6868
- reasoningEffort: reasoningEffort && reasoningValues.size > 0 && !reasoningValues.has(reasoningEffort) ? null : reasoningEffort,
6976
+ reasoningEffort: reasoningEffort && reasoningValues.size > 0 && !reasoningValues.has(reasoningEffort) ? modelReasoningSelection?.currentValue ?? null : reasoningEffort,
6869
6977
  speed: speed && speedValues.size > 0 && !speedValues.has(speed) ? null : speed,
6870
6978
  permissionModeId: permissionModeId && permissionValues.size > 0 && !permissionValues.has(permissionModeId) ? null : permissionModeId
6871
6979
  };
@@ -8126,7 +8234,7 @@ function draftAgentSessionIdFromComposerOptions(options) {
8126
8234
  options?.runtimeContext?.draftAgentSessionId
8127
8235
  );
8128
8236
  }
8129
- function composerSettingOptionsFromActivity(options) {
8237
+ function composerSettingOptionsFromActivity2(options) {
8130
8238
  return options.map((option) => ({ ...option }));
8131
8239
  }
8132
8240
  function modelSelectionFromComposerOptions(options, currentValue) {
@@ -8134,7 +8242,7 @@ function modelSelectionFromComposerOptions(options, currentValue) {
8134
8242
  return null;
8135
8243
  }
8136
8244
  return {
8137
- options: composerSettingOptionsFromActivity(options.models),
8245
+ options: composerSettingOptionsFromActivity2(options.models),
8138
8246
  currentValue
8139
8247
  };
8140
8248
  }
@@ -8156,21 +8264,12 @@ function configOptionCurrentValue(runtimeContext, ids) {
8156
8264
  }
8157
8265
  return null;
8158
8266
  }
8159
- function reasoningSelectionFromComposerOptions(options, currentValue) {
8160
- if (!options) {
8161
- return null;
8162
- }
8163
- return {
8164
- options: composerSettingOptionsFromActivity(options.reasoningEfforts),
8165
- currentValue
8166
- };
8167
- }
8168
8267
  function speedSelectionFromComposerOptions(options, currentValue) {
8169
8268
  if (!options) {
8170
8269
  return null;
8171
8270
  }
8172
8271
  return {
8173
- options: composerSettingOptionsFromActivity(options.speeds ?? []),
8272
+ options: composerSettingOptionsFromActivity2(options.speeds ?? []),
8174
8273
  currentValue
8175
8274
  };
8176
8275
  }
@@ -9275,6 +9374,10 @@ function useAgentGUINodeController({
9275
9374
  composerOptions: providerComposerOptions,
9276
9375
  sessionRuntimeContext: activeSessionState?.runtimeContext
9277
9376
  }) ?? false;
9377
+ const activeSessionRuntimeModel = configOptionCurrentValue(
9378
+ activeSessionRuntimeContext,
9379
+ ["model"]
9380
+ );
9278
9381
  const backgroundAgentCount = useMemo3(
9279
9382
  () => activeBackgroundAgentCount(activeSessionRuntimeContext),
9280
9383
  [activeSessionRuntimeContext]
@@ -11142,11 +11245,22 @@ function useAgentGUINodeController({
11142
11245
  if (isCreatingConversationRef.current) {
11143
11246
  return;
11144
11247
  }
11145
- const settings = readNodeDefaultDraftSettings({
11248
+ const defaultDraftSettings = readNodeDefaultDraftSettings({
11146
11249
  data: targetData.data,
11147
11250
  defaultReasoningEffort,
11148
11251
  drafts: draftSettingsBySessionIdRef.current
11149
11252
  });
11253
+ const activeAgentSessionId = activeConversationIdRef.current;
11254
+ const activeControlState = activeAgentSessionId ? getAgentSessionView(sessionViewRef(activeAgentSessionId))?.controlState ?? null : null;
11255
+ const activeSessionSettings = activeControlState?.settings ?? null;
11256
+ const activeRuntimeModel = configOptionCurrentValue(
11257
+ activeControlState?.runtimeContext,
11258
+ ["model"]
11259
+ );
11260
+ const settings = activeSessionSettings ? {
11261
+ ...activeSessionSettings,
11262
+ ...activeRuntimeModel ? { model: activeRuntimeModel } : {}
11263
+ } : defaultDraftSettings;
11150
11264
  const composerOptionsCwd = selectedProjectPathRef.current?.trim() || workspacePath.trim() || "";
11151
11265
  void Promise.resolve(
11152
11266
  agentActivityRuntime.getComposerOptions({
@@ -11159,7 +11273,13 @@ function useAgentGUINodeController({
11159
11273
  })
11160
11274
  ).catch(() => void 0);
11161
11275
  },
11162
- [agentActivityRuntime, defaultReasoningEffort, workspaceId, workspacePath]
11276
+ [
11277
+ agentActivityRuntime,
11278
+ defaultReasoningEffort,
11279
+ sessionViewRef,
11280
+ workspaceId,
11281
+ workspacePath
11282
+ ]
11163
11283
  );
11164
11284
  const loadDraftComposerOptions = useCallback4(
11165
11285
  (options) => {
@@ -11275,6 +11395,12 @@ function useAgentGUINodeController({
11275
11395
  );
11276
11396
  }, [
11277
11397
  activeConversationId,
11398
+ activeSessionRuntimeModel,
11399
+ activeSessionState?.settings?.model,
11400
+ activeSessionState?.settings?.permissionModeId,
11401
+ activeSessionState?.settings?.planMode,
11402
+ activeSessionState?.settings?.reasoningEffort,
11403
+ activeSessionState?.settings?.speed,
11278
11404
  composerTargetData.agentTargetId,
11279
11405
  composerTargetData.provider,
11280
11406
  isComposerHome,
@@ -15316,9 +15442,16 @@ function useAgentGUINodeController({
15316
15442
  const activeSessionReasoningSelection = useMemo3(
15317
15443
  () => reasoningSelectionFromComposerOptions(
15318
15444
  providerComposerOptions,
15319
- draftReasoningEffort
15445
+ draftReasoningEffort,
15446
+ draftModel,
15447
+ activeSessionRuntimeContext ?? null
15320
15448
  ),
15321
- [draftReasoningEffort, providerComposerOptions]
15449
+ [
15450
+ activeSessionRuntimeContext,
15451
+ draftModel,
15452
+ draftReasoningEffort,
15453
+ providerComposerOptions
15454
+ ]
15322
15455
  );
15323
15456
  const activeSessionModelSelection = useMemo3(
15324
15457
  () => modelSelectionFromComposerOptions(providerComposerOptions, draftModel),
@@ -15347,7 +15480,7 @@ function useAgentGUINodeController({
15347
15480
  composerTargetData.provider
15348
15481
  );
15349
15482
  const selectedModelValue = draftModel;
15350
- const selectedReasoningEffortValue = draftReasoningEffort;
15483
+ const selectedReasoningEffortValue = activeSessionReasoningSelection?.currentValue ?? draftReasoningEffort;
15351
15484
  const selectedSpeedValue = draftSpeed;
15352
15485
  const selectedPermissionModeValue = normalizePermissionModeId(draftSettings.permissionModeId) ?? normalizePermissionModeId(permissionConfig?.defaultValue);
15353
15486
  return {
@@ -16396,6 +16529,10 @@ import {
16396
16529
  Popover as Popover2,
16397
16530
  PopoverContent as PopoverContent2,
16398
16531
  PopoverTrigger,
16532
+ Select as Select3,
16533
+ SelectContent as SelectContent3,
16534
+ SelectItem as SelectItem3,
16535
+ SelectTrigger as SelectTrigger3,
16399
16536
  StatusDot,
16400
16537
  toastVariants,
16401
16538
  cn as cn3
@@ -18950,7 +19087,7 @@ function titleFromDescriptionPrefix(firstPart, contextText) {
18950
19087
  return void 0;
18951
19088
  }
18952
19089
  function effortFromText(text) {
18953
- const effortMatch = text.toLowerCase().match(/\b(minimal|low|medium|high|x[-\s]?high)\s+effort\b/);
19090
+ const effortMatch = text.toLowerCase().match(/\b(minimal|low|medium|high|x[-\s]?high|max|ultra)\s+effort\b/);
18954
19091
  if (!effortMatch?.[1]) {
18955
19092
  return void 0;
18956
19093
  }
@@ -19060,6 +19197,8 @@ function resolveReasoningOptionLabel(value, labels) {
19060
19197
  return labels.reasoningOptionXHigh;
19061
19198
  case "max":
19062
19199
  return labels.reasoningOptionMax;
19200
+ case "ultra":
19201
+ return labels.reasoningOptionUltra;
19063
19202
  default:
19064
19203
  return value;
19065
19204
  }
@@ -25134,6 +25273,7 @@ ${normalizedText}` : normalizedText;
25134
25273
  reasoningOptionHigh: labels.reasoningOptionHigh,
25135
25274
  reasoningOptionXHigh: labels.reasoningOptionXHigh,
25136
25275
  reasoningOptionMax: labels.reasoningOptionMax,
25276
+ reasoningOptionUltra: labels.reasoningOptionUltra,
25137
25277
  speedLabel: labels.speedLabel,
25138
25278
  speedSelectionLabel: labels.speedSelectionLabel,
25139
25279
  speedOptionStandard: labels.speedOptionStandard,
@@ -27317,6 +27457,7 @@ var AgentGUIDetailPane = memo2(function AgentGUIDetailPane2({
27317
27457
  reasoningOptionHigh: labels.reasoningOptionHigh,
27318
27458
  reasoningOptionXHigh: labels.reasoningOptionXHigh,
27319
27459
  reasoningOptionMax: labels.reasoningOptionMax,
27460
+ reasoningOptionUltra: labels.reasoningOptionUltra,
27320
27461
  speedLabel: labels.speedLabel,
27321
27462
  speedSelectionLabel: labels.speedSelectionLabel,
27322
27463
  speedOptionStandard: labels.speedOptionStandard,
@@ -27467,6 +27608,7 @@ var AgentGUIDetailPane = memo2(function AgentGUIDetailPane2({
27467
27608
  labels.reasoningOptionMax,
27468
27609
  labels.reasoningOptionMedium,
27469
27610
  labels.reasoningOptionMinimal,
27611
+ labels.reasoningOptionUltra,
27470
27612
  labels.reasoningOptionXHigh,
27471
27613
  labels.speedLabel,
27472
27614
  labels.speedSelectionLabel,
@@ -28823,13 +28965,13 @@ function EmptyHeroTitle({
28823
28965
  const providerName = label.slice(providerStart, providerEnd);
28824
28966
  return /* @__PURE__ */ jsxs21(Fragment9, { children: [
28825
28967
  label.slice(0, providerStart),
28826
- canSwitchProvider ? /* @__PURE__ */ jsx34(
28827
- "select",
28968
+ canSwitchProvider ? /* @__PURE__ */ jsxs21(
28969
+ Select3,
28828
28970
  {
28829
28971
  value: selectedProviderTargetId,
28830
- onChange: (event) => {
28972
+ onValueChange: (nextTargetId) => {
28831
28973
  const target = enabledProviderTargets.find(
28832
- (candidate) => candidate.targetId === event.currentTarget.value
28974
+ (candidate) => candidate.targetId === nextTargetId
28833
28975
  );
28834
28976
  if (!target) {
28835
28977
  return;
@@ -28839,17 +28981,48 @@ function EmptyHeroTitle({
28839
28981
  providerTargetId: target.targetId
28840
28982
  });
28841
28983
  },
28842
- "aria-label": providerSelectLabel,
28843
- title: providerSelectLabel,
28844
- className: AgentGUINode_styles_default.emptyHeroProviderSelect,
28845
- children: enabledProviderTargets.map((target) => /* @__PURE__ */ jsx34(
28846
- "option",
28847
- {
28848
- value: target.targetId,
28849
- children: target.label
28850
- },
28851
- `${target.provider}:${target.targetId}`
28852
- ))
28984
+ children: [
28985
+ /* @__PURE__ */ jsx34(
28986
+ SelectTrigger3,
28987
+ {
28988
+ size: "sm",
28989
+ "aria-label": providerSelectLabel,
28990
+ title: providerSelectLabel,
28991
+ className: AgentGUINode_styles_default.emptyHeroProviderSelect,
28992
+ children: /* @__PURE__ */ jsx34("span", { className: AgentGUINode_styles_default.emptyHeroProvider, children: providerName })
28993
+ }
28994
+ ),
28995
+ /* @__PURE__ */ jsx34(
28996
+ SelectContent3,
28997
+ {
28998
+ align: "center",
28999
+ className: cn3(AgentGUINode_styles_default.composerMenuContent, "min-w-[190px]"),
29000
+ children: enabledProviderTargets.map((target) => /* @__PURE__ */ jsx34(
29001
+ SelectItem3,
29002
+ {
29003
+ value: target.targetId,
29004
+ className: cn3(AgentGUINode_styles_default.composerMenuItem, "gap-2"),
29005
+ children: /* @__PURE__ */ jsxs21("span", { className: "flex min-w-0 items-center gap-1.5", children: [
29006
+ /* @__PURE__ */ jsx34(
29007
+ "img",
29008
+ {
29009
+ alt: "",
29010
+ "aria-hidden": "true",
29011
+ className: "size-4 shrink-0 rounded-[4px]",
29012
+ src: agentGUIProviderRailIconPresentation(
29013
+ target.provider,
29014
+ target.iconUrl
29015
+ ).iconUrl
29016
+ }
29017
+ ),
29018
+ /* @__PURE__ */ jsx34("span", { className: "min-w-0 truncate", children: target.label })
29019
+ ] })
29020
+ },
29021
+ `${target.provider}:${target.targetId}`
29022
+ ))
29023
+ }
29024
+ )
29025
+ ]
28853
29026
  }
28854
29027
  ) : /* @__PURE__ */ jsx34("span", { className: AgentGUINode_styles_default.emptyHeroProvider, children: providerName }),
28855
29028
  label.slice(providerEnd)
@@ -33041,6 +33214,7 @@ var AgentGUINode = memo3(function AgentGUINode2({
33041
33214
  reasoningOptionHigh: t("agentHost.agentGui.reasoningOptionHigh"),
33042
33215
  reasoningOptionXHigh: t("agentHost.agentGui.reasoningOptionXHigh"),
33043
33216
  reasoningOptionMax: t("agentHost.agentGui.reasoningOptionMax"),
33217
+ reasoningOptionUltra: t("agentHost.agentGui.reasoningOptionUltra"),
33044
33218
  speedLabel: t("agentHost.agentGui.speedLabel"),
33045
33219
  speedSelectionLabel: t("agentHost.agentGui.speedSelectionLabel"),
33046
33220
  speedOptionStandard: t("agentHost.agentGui.speedOptionStandard"),