deepcode-ai 1.1.7 → 1.1.9

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/index.js CHANGED
@@ -2085,32 +2085,7 @@ var DeepCodeConfigSchema = z.object({
2085
2085
  blacklist: z.array(z.string()).default([])
2086
2086
  }).strict().default({}),
2087
2087
  lsp: z.object({
2088
- servers: z.array(LspServerConfigSchema).default([
2089
- {
2090
- languages: ["typescript", "javascript"],
2091
- command: "typescript-language-server",
2092
- args: ["--stdio"],
2093
- fileExtensions: [".ts", ".tsx", ".js", ".jsx", ".mjs", ".cjs"]
2094
- },
2095
- {
2096
- languages: ["python"],
2097
- command: "pylsp",
2098
- args: [],
2099
- fileExtensions: [".py"]
2100
- },
2101
- {
2102
- languages: ["rust"],
2103
- command: "rust-analyzer",
2104
- args: [],
2105
- fileExtensions: [".rs"]
2106
- },
2107
- {
2108
- languages: ["go"],
2109
- command: "gopls",
2110
- args: [],
2111
- fileExtensions: [".go"]
2112
- }
2113
- ])
2088
+ servers: z.array(LspServerConfigSchema).default([])
2114
2089
  }).strict().default({}),
2115
2090
  github: z.object({
2116
2091
  token: z.string().optional(),
@@ -4480,6 +4455,9 @@ var McpManager = class {
4480
4455
  }
4481
4456
  return tools;
4482
4457
  }
4458
+ get connectedCount() {
4459
+ return this.clients.length;
4460
+ }
4483
4461
  stop() {
4484
4462
  for (const { client } of this.clients) {
4485
4463
  try {
@@ -7650,8 +7628,8 @@ import path32 from "path";
7650
7628
  import { jsx, jsxs } from "react/jsx-runtime";
7651
7629
  import fs6 from "fs";
7652
7630
  import path112 from "path";
7653
- import { isValidElement, useCallback as useCallback22, useEffect as useEffect24, useMemo as useMemo15, useRef as useRef16, useState as useState25 } from "react";
7654
- import { Box as Box38, Text as Text44, useInput as useInput4, useStdin as useStdin3 } from "ink";
7631
+ import { isValidElement, useCallback as useCallback22, useEffect as useEffect25, useMemo as useMemo15, useRef as useRef16, useState as useState26 } from "react";
7632
+ import { Box as Box38, Text as Text45, useInput as useInput4, useStdin as useStdin3 } from "ink";
7655
7633
  import os4 from "os";
7656
7634
  import path62 from "path";
7657
7635
  import fs from "fs";
@@ -9571,8 +9549,8 @@ import { jsx as jsx26, jsxs as jsxs20 } from "react/jsx-runtime";
9571
9549
  import { Box as Box22, Text as Text25 } from "ink";
9572
9550
  import { jsxs as jsxs21 } from "react/jsx-runtime";
9573
9551
  import { jsx as jsx27, jsxs as jsxs22 } from "react/jsx-runtime";
9574
- import { Box as Box31, Text as Text37, useIsScreenReaderEnabled as useIsScreenReaderEnabled3 } from "ink";
9575
- import { useCallback as useCallback16, useState as useState20 } from "react";
9552
+ import { Box as Box31, Text as Text38, useIsScreenReaderEnabled as useIsScreenReaderEnabled3 } from "ink";
9553
+ import { useCallback as useCallback16, useState as useState21 } from "react";
9576
9554
  import { useRef as useRef7 } from "react";
9577
9555
  import { Box as Box24, Text as Text26 } from "ink";
9578
9556
  import { useEffect as useEffect13, useState as useState11 } from "react";
@@ -9605,45 +9583,50 @@ import { Box as Box26, Text as Text29 } from "ink";
9605
9583
  import chalk2 from "chalk";
9606
9584
  import { jsx as jsx31, jsxs as jsxs26 } from "react/jsx-runtime";
9607
9585
  import { Fragment as Fragment7, jsx as jsx32, jsxs as jsxs27 } from "react/jsx-runtime";
9608
- import { Box as Box28, Text as Text34 } from "ink";
9586
+ import { Box as Box28, Text as Text35 } from "ink";
9609
9587
  import { Text as Text31 } from "ink";
9610
9588
  import { Fragment as Fragment8, jsx as jsx33, jsxs as jsxs28 } from "react/jsx-runtime";
9611
9589
  import { Text as Text32 } from "ink";
9612
9590
  import { jsx as jsx34, jsxs as jsxs29 } from "react/jsx-runtime";
9613
9591
  import { Text as Text33 } from "ink";
9614
9592
  import { jsx as jsx35, jsxs as jsxs30 } from "react/jsx-runtime";
9593
+ import { Text as Text34 } from "ink";
9594
+ import { jsxs as jsxs31 } from "react/jsx-runtime";
9595
+ import { useState as useState19, useEffect as useEffect222 } from "react";
9596
+ import { execFile as execFile22 } from "child_process";
9597
+ import os42 from "os";
9615
9598
  import {
9616
9599
  createContext as createContext8,
9617
9600
  useCallback as useCallback15,
9618
9601
  useContext as useContext9,
9619
- useState as useState19
9602
+ useState as useState20
9620
9603
  } from "react";
9621
9604
  import { jsx as jsx36 } from "react/jsx-runtime";
9622
- import { jsx as jsx37, jsxs as jsxs31 } from "react/jsx-runtime";
9605
+ import { jsx as jsx37, jsxs as jsxs32 } from "react/jsx-runtime";
9623
9606
  import { useRef as useRef12 } from "react";
9624
- import { Box as Box29, Text as Text35 } from "ink";
9625
- import { jsx as jsx38, jsxs as jsxs32 } from "react/jsx-runtime";
9626
- import { Box as Box30, Text as Text36 } from "ink";
9627
- import { jsx as jsx39, jsxs as jsxs33 } from "react/jsx-runtime";
9628
- import { jsx as jsx40, jsxs as jsxs34 } from "react/jsx-runtime";
9629
- import { Box as Box32, Text as Text38 } from "ink";
9630
- import { jsx as jsx41, jsxs as jsxs35 } from "react/jsx-runtime";
9607
+ import { Box as Box29, Text as Text36 } from "ink";
9608
+ import { jsx as jsx38, jsxs as jsxs33 } from "react/jsx-runtime";
9609
+ import { Box as Box30, Text as Text37 } from "ink";
9610
+ import { jsx as jsx39, jsxs as jsxs34 } from "react/jsx-runtime";
9611
+ import { jsx as jsx40, jsxs as jsxs35 } from "react/jsx-runtime";
9612
+ import { Box as Box32, Text as Text39 } from "ink";
9613
+ import { jsx as jsx41, jsxs as jsxs36 } from "react/jsx-runtime";
9631
9614
  import { useCallback as useCallback17, useMemo as useMemo10, useRef as useRef13 } from "react";
9632
- import { Box as Box33, Text as Text39 } from "ink";
9633
- import { jsx as jsx42, jsxs as jsxs36 } from "react/jsx-runtime";
9634
- import { useCallback as useCallback18, useMemo as useMemo11, useState as useState21 } from "react";
9635
- import { Box as Box34, Text as Text40, useInput as useInput2 } from "ink";
9636
- import { Fragment as Fragment9, jsx as jsx43, jsxs as jsxs37 } from "react/jsx-runtime";
9637
- import { useCallback as useCallback19, useMemo as useMemo12, useState as useState222 } from "react";
9638
- import { Box as Box35, Text as Text41 } from "ink";
9639
- import { jsx as jsx44, jsxs as jsxs38 } from "react/jsx-runtime";
9640
- import { useCallback as useCallback20, useEffect as useEffect222, useMemo as useMemo13, useRef as useRef14, useState as useState23 } from "react";
9641
- import { Box as Box36, Text as Text42 } from "ink";
9642
- import { jsx as jsx45, jsxs as jsxs39 } from "react/jsx-runtime";
9643
- import { useCallback as useCallback21, useEffect as useEffect23, useMemo as useMemo14, useRef as useRef15, useState as useState24 } from "react";
9644
- import { Box as Box37, Text as Text43, useInput as useInput3 } from "ink";
9645
- import { jsx as jsx46, jsxs as jsxs40 } from "react/jsx-runtime";
9646
- import { jsx as jsx47, jsxs as jsxs41 } from "react/jsx-runtime";
9615
+ import { Box as Box33, Text as Text40 } from "ink";
9616
+ import { jsx as jsx42, jsxs as jsxs37 } from "react/jsx-runtime";
9617
+ import { useCallback as useCallback18, useMemo as useMemo11, useState as useState222 } from "react";
9618
+ import { Box as Box34, Text as Text41, useInput as useInput2 } from "ink";
9619
+ import { Fragment as Fragment9, jsx as jsx43, jsxs as jsxs38 } from "react/jsx-runtime";
9620
+ import { useCallback as useCallback19, useMemo as useMemo12, useState as useState23 } from "react";
9621
+ import { Box as Box35, Text as Text42 } from "ink";
9622
+ import { jsx as jsx44, jsxs as jsxs39 } from "react/jsx-runtime";
9623
+ import { useCallback as useCallback20, useEffect as useEffect23, useMemo as useMemo13, useRef as useRef14, useState as useState24 } from "react";
9624
+ import { Box as Box36, Text as Text43 } from "ink";
9625
+ import { jsx as jsx45, jsxs as jsxs40 } from "react/jsx-runtime";
9626
+ import { useCallback as useCallback21, useEffect as useEffect24, useMemo as useMemo14, useRef as useRef15, useState as useState25 } from "react";
9627
+ import { Box as Box37, Text as Text44, useInput as useInput3 } from "ink";
9628
+ import { jsx as jsx46, jsxs as jsxs41 } from "react/jsx-runtime";
9629
+ import { jsx as jsx47, jsxs as jsxs42 } from "react/jsx-runtime";
9647
9630
  import { jsx as jsx48 } from "react/jsx-runtime";
9648
9631
  async function createRuntime(options) {
9649
9632
  const worktree = path9.resolve(options.cwd);
@@ -24948,12 +24931,9 @@ var parseSlashCommand = (query, commands) => {
24948
24931
  let pathIndex = 0;
24949
24932
  const canonicalPath = [];
24950
24933
  for (const part of commandPath) {
24951
- let foundCommand = currentCommands.find((cmd) => cmd.name === part);
24952
- if (!foundCommand) {
24953
- foundCommand = currentCommands.find(
24954
- (cmd) => cmd.altNames?.includes(part)
24955
- );
24956
- }
24934
+ const foundCommand = currentCommands.find(
24935
+ (cmd) => cmd.name === part || cmd.altNames?.includes(part)
24936
+ );
24957
24937
  if (foundCommand) {
24958
24938
  commandToExecute = foundCommand;
24959
24939
  canonicalPath.push(foundCommand.name);
@@ -26878,10 +26858,35 @@ function BackgroundTasksPill() {
26878
26858
  return null;
26879
26859
  }
26880
26860
  function MCPHealthPill() {
26881
- return null;
26861
+ const { mcpConnected, mcpTotal } = useUIState();
26862
+ if (mcpTotal === 0) return null;
26863
+ const color = mcpConnected === mcpTotal ? theme.status.success : theme.status.warning;
26864
+ return /* @__PURE__ */ jsxs31(Text34, { color, children: [
26865
+ " MCP ",
26866
+ mcpConnected,
26867
+ "/",
26868
+ mcpTotal
26869
+ ] });
26882
26870
  }
26883
26871
  function useStatusLine() {
26884
- return { lines: [] };
26872
+ const config = useConfig();
26873
+ const cwd = config.getWorkingDir();
26874
+ const [line, setLine] = useState19(null);
26875
+ useEffect222(() => {
26876
+ let cancelled = false;
26877
+ execFile22("git", ["branch", "--show-current"], { cwd }, (err, stdout) => {
26878
+ if (cancelled) return;
26879
+ const branch = err ? null : stdout.trim();
26880
+ if (!branch) return;
26881
+ const home = os42.homedir();
26882
+ const displayCwd = cwd.startsWith(home) ? `~${cwd.slice(home.length)}` : cwd;
26883
+ setLine(`${displayCwd} [${branch}]`);
26884
+ });
26885
+ return () => {
26886
+ cancelled = true;
26887
+ };
26888
+ }, [cwd]);
26889
+ return { lines: line ? [line] : [] };
26885
26890
  }
26886
26891
  function useConfigInitMessage(_isConfigInitialized) {
26887
26892
  return null;
@@ -26891,8 +26896,8 @@ var VimModeProvider = ({
26891
26896
  children,
26892
26897
  initialVimEnabled = false
26893
26898
  }) => {
26894
- const [vimEnabled, setVimEnabled] = useState19(initialVimEnabled);
26895
- const [vimMode, setVimMode] = useState19(
26899
+ const [vimEnabled, setVimEnabled] = useState20(initialVimEnabled);
26900
+ const [vimMode, setVimMode] = useState20(
26896
26901
  initialVimEnabled ? "NORMAL" : "INSERT"
26897
26902
  );
26898
26903
  const toggleVimEnabled = useCallback15(async () => {
@@ -26933,16 +26938,16 @@ var Footer = () => {
26933
26938
  const debugMode = config.getDebugMode();
26934
26939
  const contextWindowSize = config.getContentGeneratorConfig()?.contextWindowSize;
26935
26940
  const suppressHint = statusLineLines.length > 0;
26936
- const leftBottomContent = uiState.ctrlCPressedOnce ? /* @__PURE__ */ jsx37(Text34, { color: theme.status.warning, children: t("Press Ctrl+C again to exit.") }) : uiState.ctrlDPressedOnce ? /* @__PURE__ */ jsx37(Text34, { color: theme.status.warning, children: t("Press Ctrl+D again to exit.") }) : uiState.showEscapePrompt ? /* @__PURE__ */ jsx37(Text34, { color: theme.text.secondary, children: t("Press Esc again to clear.") }) : uiState.rewindEscPending ? /* @__PURE__ */ jsx37(Text34, { color: theme.text.secondary, children: t("Press Esc again to rewind conversation.") }) : vimEnabled && vimMode === "INSERT" ? /* @__PURE__ */ jsx37(Text34, { color: theme.text.secondary, children: "-- INSERT --" }) : uiState.shellModeActive ? /* @__PURE__ */ jsx37(ShellModeIndicator, {}) : configInitMessage ? /* @__PURE__ */ jsxs31(Text34, { color: theme.text.secondary, children: [
26941
+ const leftBottomContent = uiState.ctrlCPressedOnce ? /* @__PURE__ */ jsx37(Text35, { color: theme.status.warning, children: t("Press Ctrl+C again to exit.") }) : uiState.ctrlDPressedOnce ? /* @__PURE__ */ jsx37(Text35, { color: theme.status.warning, children: t("Press Ctrl+D again to exit.") }) : uiState.showEscapePrompt ? /* @__PURE__ */ jsx37(Text35, { color: theme.text.secondary, children: t("Press Esc again to clear.") }) : uiState.rewindEscPending ? /* @__PURE__ */ jsx37(Text35, { color: theme.text.secondary, children: t("Press Esc again to rewind conversation.") }) : vimEnabled && vimMode === "INSERT" ? /* @__PURE__ */ jsx37(Text35, { color: theme.text.secondary, children: "-- INSERT --" }) : uiState.shellModeActive ? /* @__PURE__ */ jsx37(ShellModeIndicator, {}) : configInitMessage ? /* @__PURE__ */ jsxs32(Text35, { color: theme.text.secondary, children: [
26937
26942
  /* @__PURE__ */ jsx37(GeminiSpinner, {}),
26938
26943
  " ",
26939
26944
  configInitMessage
26940
- ] }) : showAutoAcceptIndicator !== void 0 && showAutoAcceptIndicator !== "default" ? /* @__PURE__ */ jsx37(AutoAcceptIndicator, { approvalMode: showAutoAcceptIndicator }) : suppressHint ? null : /* @__PURE__ */ jsx37(Text34, { color: theme.text.secondary, children: t("? for shortcuts") });
26945
+ ] }) : showAutoAcceptIndicator !== void 0 && showAutoAcceptIndicator !== "default" ? /* @__PURE__ */ jsx37(AutoAcceptIndicator, { approvalMode: showAutoAcceptIndicator }) : suppressHint ? null : /* @__PURE__ */ jsx37(Text35, { color: theme.text.secondary, children: t("? for shortcuts") });
26941
26946
  const rightItems = [];
26942
26947
  if (sandboxInfo) {
26943
26948
  rightItems.push({
26944
26949
  key: "sandbox",
26945
- node: /* @__PURE__ */ jsxs31(Text34, { color: theme.status.success, children: [
26950
+ node: /* @__PURE__ */ jsxs32(Text35, { color: theme.status.success, children: [
26946
26951
  "\u{1F512} ",
26947
26952
  sandboxInfo
26948
26953
  ] })
@@ -26951,13 +26956,13 @@ var Footer = () => {
26951
26956
  if (debugMode) {
26952
26957
  rightItems.push({
26953
26958
  key: "debug",
26954
- node: /* @__PURE__ */ jsx37(Text34, { color: theme.status.warning, children: "Debug Mode" })
26959
+ node: /* @__PURE__ */ jsx37(Text35, { color: theme.status.warning, children: "Debug Mode" })
26955
26960
  });
26956
26961
  }
26957
26962
  if (promptTokenCount > 0 && contextWindowSize) {
26958
26963
  rightItems.push({
26959
26964
  key: "context",
26960
- node: /* @__PURE__ */ jsx37(Text34, { color: theme.text.accent, children: /* @__PURE__ */ jsx37(
26965
+ node: /* @__PURE__ */ jsx37(Text35, { color: theme.text.accent, children: /* @__PURE__ */ jsx37(
26961
26966
  ContextUsageDisplay,
26962
26967
  {
26963
26968
  promptTokenCount,
@@ -26967,7 +26972,7 @@ var Footer = () => {
26967
26972
  ) })
26968
26973
  });
26969
26974
  }
26970
- return /* @__PURE__ */ jsxs31(
26975
+ return /* @__PURE__ */ jsxs32(
26971
26976
  Box28,
26972
26977
  {
26973
26978
  flexDirection: isNarrow ? "column" : "row",
@@ -26976,16 +26981,16 @@ var Footer = () => {
26976
26981
  paddingX: 2,
26977
26982
  gap: isNarrow ? 0 : 1,
26978
26983
  children: [
26979
- /* @__PURE__ */ jsxs31(Box28, { flexDirection: "column", flexShrink: isNarrow ? 0 : 1, children: [
26980
- statusLineLines.length > 0 && !uiState.ctrlCPressedOnce && !uiState.ctrlDPressedOnce && statusLineLines.map((line, i) => /* @__PURE__ */ jsx37(Text34, { dimColor: true, wrap: "truncate", children: line }, `status-line-${i}`)),
26981
- /* @__PURE__ */ jsxs31(Box28, { flexDirection: "row", flexShrink: 1, children: [
26982
- /* @__PURE__ */ jsx37(Text34, { wrap: "truncate", children: leftBottomContent }),
26984
+ /* @__PURE__ */ jsxs32(Box28, { flexDirection: "column", flexShrink: isNarrow ? 0 : 1, children: [
26985
+ statusLineLines.length > 0 && !uiState.ctrlCPressedOnce && !uiState.ctrlDPressedOnce && statusLineLines.map((line, i) => /* @__PURE__ */ jsx37(Text35, { dimColor: true, wrap: "truncate", children: line }, `status-line-${i}`)),
26986
+ /* @__PURE__ */ jsxs32(Box28, { flexDirection: "row", flexShrink: 1, children: [
26987
+ /* @__PURE__ */ jsx37(Text35, { wrap: "truncate", children: leftBottomContent }),
26983
26988
  /* @__PURE__ */ jsx37(BackgroundTasksPill, {}),
26984
26989
  /* @__PURE__ */ jsx37(MCPHealthPill, {})
26985
26990
  ] })
26986
26991
  ] }),
26987
- /* @__PURE__ */ jsx37(Box28, { flexShrink: 0, gap: 1, alignItems: "flex-start", children: rightItems.map(({ key, node }, index) => /* @__PURE__ */ jsxs31(Box28, { alignItems: "center", children: [
26988
- index > 0 && /* @__PURE__ */ jsx37(Text34, { color: theme.text.secondary, children: " | " }),
26992
+ /* @__PURE__ */ jsx37(Box28, { flexShrink: 0, gap: 1, alignItems: "flex-start", children: rightItems.map(({ key, node }, index) => /* @__PURE__ */ jsxs32(Box28, { alignItems: "center", children: [
26993
+ index > 0 && /* @__PURE__ */ jsx37(Text35, { color: theme.text.secondary, children: " | " }),
26989
26994
  node
26990
26995
  ] }, key)) })
26991
26996
  ]
@@ -27008,17 +27013,17 @@ var QueuedMessageDisplay = ({
27008
27013
  wasEmptyRef.current = false;
27009
27014
  }
27010
27015
  const showHint = hintSeenCountRef.current <= NUM_TIMES_QUEUE_HINT_SHOWN;
27011
- return /* @__PURE__ */ jsxs32(Box29, { flexDirection: "column", marginTop: 1, children: [
27016
+ return /* @__PURE__ */ jsxs33(Box29, { flexDirection: "column", marginTop: 1, children: [
27012
27017
  messageQueue.slice(0, MAX_DISPLAYED_QUEUED_MESSAGES).map((message, index) => {
27013
27018
  const preview = message.replace(/\s+/g, " ");
27014
- return /* @__PURE__ */ jsx38(Box29, { paddingLeft: 2, width: "100%", children: /* @__PURE__ */ jsx38(Text35, { dimColor: true, wrap: "truncate", children: preview }) }, index);
27019
+ return /* @__PURE__ */ jsx38(Box29, { paddingLeft: 2, width: "100%", children: /* @__PURE__ */ jsx38(Text36, { dimColor: true, wrap: "truncate", children: preview }) }, index);
27015
27020
  }),
27016
- messageQueue.length > MAX_DISPLAYED_QUEUED_MESSAGES && /* @__PURE__ */ jsx38(Box29, { paddingLeft: 2, children: /* @__PURE__ */ jsxs32(Text35, { dimColor: true, children: [
27021
+ messageQueue.length > MAX_DISPLAYED_QUEUED_MESSAGES && /* @__PURE__ */ jsx38(Box29, { paddingLeft: 2, children: /* @__PURE__ */ jsxs33(Text36, { dimColor: true, children: [
27017
27022
  "... (+",
27018
27023
  messageQueue.length - MAX_DISPLAYED_QUEUED_MESSAGES,
27019
27024
  " more)"
27020
27025
  ] }) }),
27021
- showHint && /* @__PURE__ */ jsx38(Box29, { paddingLeft: 2, children: /* @__PURE__ */ jsx38(Text35, { dimColor: true, italic: true, children: t("Press \u2191 to edit queued messages") }) })
27026
+ showHint && /* @__PURE__ */ jsx38(Box29, { paddingLeft: 2, children: /* @__PURE__ */ jsx38(Text36, { dimColor: true, italic: true, children: t("Press \u2191 to edit queued messages") }) })
27022
27027
  ] });
27023
27028
  };
27024
27029
  var getNewlineKey = () => process.platform === "win32" ? "ctrl+enter" : "ctrl+j";
@@ -27046,8 +27051,8 @@ var getShortcuts = () => [
27046
27051
  { key: getExternalEditorKey(), description: t("for external editor") },
27047
27052
  { key: "ctrl+o", description: t("to toggle compact mode") }
27048
27053
  ];
27049
- var ShortcutItem = ({ shortcut }) => /* @__PURE__ */ jsxs33(Text36, { color: theme.text.secondary, children: [
27050
- /* @__PURE__ */ jsx39(Text36, { color: theme.text.accent, children: shortcut.key }),
27054
+ var ShortcutItem = ({ shortcut }) => /* @__PURE__ */ jsxs34(Text37, { color: theme.text.secondary, children: [
27055
+ /* @__PURE__ */ jsx39(Text37, { color: theme.text.accent, children: shortcut.key }),
27051
27056
  " ",
27052
27057
  shortcut.description
27053
27058
  ] });
@@ -27131,11 +27136,11 @@ var Composer = () => {
27131
27136
  }
27132
27137
  }
27133
27138
  }
27134
- const [showShortcuts, setShowShortcuts] = useState20(false);
27139
+ const [showShortcuts, setShowShortcuts] = useState21(false);
27135
27140
  const handleToggleShortcuts = useCallback16(() => {
27136
27141
  setShowShortcuts((prev) => !prev);
27137
27142
  }, []);
27138
- const [showSuggestions, setShowSuggestions] = useState20(false);
27143
+ const [showSuggestions, setShowSuggestions] = useState21(false);
27139
27144
  const handleSuggestionsVisibilityChange = useCallback16(
27140
27145
  (visible) => {
27141
27146
  setShowSuggestions(visible);
@@ -27143,7 +27148,7 @@ var Composer = () => {
27143
27148
  },
27144
27149
  [uiActions]
27145
27150
  );
27146
- return /* @__PURE__ */ jsxs34(Box31, { flexDirection: "column", marginTop: 1, children: [
27151
+ return /* @__PURE__ */ jsxs35(Box31, { flexDirection: "column", marginTop: 1, children: [
27147
27152
  !uiState.embeddedShellFocused && !suppressBottomLoadingIndicator && /* @__PURE__ */ jsx40(
27148
27153
  LoadingIndicator,
27149
27154
  {
@@ -27156,7 +27161,7 @@ var Composer = () => {
27156
27161
  isReceivingContent
27157
27162
  }
27158
27163
  ),
27159
- !uiState.embeddedShellFocused && suppressBottomLoadingIndicator && /* @__PURE__ */ jsx40(Box31, { paddingLeft: 2, children: /* @__PURE__ */ jsxs34(Text37, { color: theme.text.secondary, children: [
27164
+ !uiState.embeddedShellFocused && suppressBottomLoadingIndicator && /* @__PURE__ */ jsx40(Box31, { paddingLeft: 2, children: /* @__PURE__ */ jsxs35(Text38, { color: theme.text.secondary, children: [
27160
27165
  "(",
27161
27166
  t("Esc to cancel"),
27162
27167
  ")"
@@ -27564,10 +27569,10 @@ var CommandDialog = ({
27564
27569
  title,
27565
27570
  lines,
27566
27571
  footerText = "Press Esc or Enter to close."
27567
- }) => /* @__PURE__ */ jsx41(Box32, { marginLeft: 2, marginRight: 2, marginTop: 1, flexDirection: "column", children: /* @__PURE__ */ jsxs35(Box32, { borderStyle: "round", borderColor: theme.border.default, padding: 1, flexDirection: "column", children: [
27568
- /* @__PURE__ */ jsx41(Text38, { bold: true, color: theme.text.accent, children: title }),
27569
- /* @__PURE__ */ jsx41(Box32, { marginTop: 1, flexDirection: "column", children: lines.map((line, index) => /* @__PURE__ */ jsx41(Text38, { color: theme.text.primary, children: line }, index)) }),
27570
- /* @__PURE__ */ jsx41(Box32, { marginTop: 1, children: /* @__PURE__ */ jsx41(Text38, { color: theme.text.secondary, children: footerText }) })
27572
+ }) => /* @__PURE__ */ jsx41(Box32, { marginLeft: 2, marginRight: 2, marginTop: 1, flexDirection: "column", children: /* @__PURE__ */ jsxs36(Box32, { borderStyle: "round", borderColor: theme.border.default, padding: 1, flexDirection: "column", children: [
27573
+ /* @__PURE__ */ jsx41(Text39, { bold: true, color: theme.text.accent, children: title }),
27574
+ /* @__PURE__ */ jsx41(Box32, { marginTop: 1, flexDirection: "column", children: lines.map((line, index) => /* @__PURE__ */ jsx41(Text39, { color: theme.text.primary, children: line }, index)) }),
27575
+ /* @__PURE__ */ jsx41(Box32, { marginTop: 1, children: /* @__PURE__ */ jsx41(Text39, { color: theme.text.secondary, children: footerText }) })
27571
27576
  ] }) });
27572
27577
  var ThemeDialog = ({ onSelect, onClose, onPreview }) => {
27573
27578
  const originalTheme = useRef13(themeManager.getActiveTheme().name);
@@ -27604,7 +27609,7 @@ var ThemeDialog = ({ onSelect, onClose, onPreview }) => {
27604
27609
  },
27605
27610
  [onPreview]
27606
27611
  );
27607
- return /* @__PURE__ */ jsxs36(
27612
+ return /* @__PURE__ */ jsxs37(
27608
27613
  Box33,
27609
27614
  {
27610
27615
  flexDirection: "column",
@@ -27614,7 +27619,7 @@ var ThemeDialog = ({ onSelect, onClose, onPreview }) => {
27614
27619
  marginLeft: 2,
27615
27620
  marginRight: 2,
27616
27621
  children: [
27617
- /* @__PURE__ */ jsx42(Text39, { bold: true, color: theme.text.accent, children: "Select theme" }),
27622
+ /* @__PURE__ */ jsx42(Text40, { bold: true, color: theme.text.accent, children: "Select theme" }),
27618
27623
  /* @__PURE__ */ jsx42(
27619
27624
  RadioButtonSelect,
27620
27625
  {
@@ -27625,7 +27630,7 @@ var ThemeDialog = ({ onSelect, onClose, onPreview }) => {
27625
27630
  isFocused: true
27626
27631
  }
27627
27632
  ),
27628
- /* @__PURE__ */ jsx42(Text39, { color: theme.text.secondary, children: "\u2191\u2193 navigate \xB7 Enter apply \xB7 Esc cancel" })
27633
+ /* @__PURE__ */ jsx42(Text40, { color: theme.text.secondary, children: "\u2191\u2193 navigate \xB7 Enter apply \xB7 Esc cancel" })
27629
27634
  ]
27630
27635
  }
27631
27636
  );
@@ -27662,12 +27667,12 @@ var ProviderDialog = ({
27662
27667
  onTestProvider,
27663
27668
  onClose
27664
27669
  }) => {
27665
- const [phase, setPhase] = useState21("providers");
27666
- const [selectedProvider, setSelectedProvider] = useState21(currentProvider);
27667
- const [apiKeyInput, setApiKeyInput] = useState21("");
27668
- const [isBusy, setIsBusy] = useState21(false);
27669
- const [status, setStatus] = useState21(null);
27670
- const [testLatencyMs, setTestLatencyMs] = useState21(void 0);
27670
+ const [phase, setPhase] = useState222("providers");
27671
+ const [selectedProvider, setSelectedProvider] = useState222(currentProvider);
27672
+ const [apiKeyInput, setApiKeyInput] = useState222("");
27673
+ const [isBusy, setIsBusy] = useState222(false);
27674
+ const [status, setStatus] = useState222(null);
27675
+ const [testLatencyMs, setTestLatencyMs] = useState222(void 0);
27671
27676
  const isLocal = CREDENTIAL_FREE_PROVIDERS.has(selectedProvider);
27672
27677
  const keyIsSet = hasApiKey(selectedProvider);
27673
27678
  const keyHint = getProviderKeyHint(selectedProvider);
@@ -27855,7 +27860,7 @@ var ProviderDialog = ({
27855
27860
  );
27856
27861
  const statusColor2 = status ? status.ok ? status.text.startsWith("\u2713") ? theme.status.success : theme.text.secondary : theme.status.error : void 0;
27857
27862
  const footer = phase === "apiKey" ? "Enter save Ctrl+U clear Esc cancel" : phase === "providers" ? "\u2191\u2193 navigate Enter select Esc close" : "\u2191\u2193 navigate Enter confirm Esc back";
27858
- return /* @__PURE__ */ jsxs37(
27863
+ return /* @__PURE__ */ jsxs38(
27859
27864
  Box34,
27860
27865
  {
27861
27866
  flexDirection: "column",
@@ -27867,13 +27872,13 @@ var ProviderDialog = ({
27867
27872
  marginRight: 2,
27868
27873
  minWidth: 44,
27869
27874
  children: [
27870
- /* @__PURE__ */ jsxs37(Box34, { marginBottom: 1, gap: 1, children: [
27871
- /* @__PURE__ */ jsx43(Text40, { bold: true, color: theme.text.accent, children: "Providers" }),
27872
- phase !== "providers" && /* @__PURE__ */ jsxs37(Fragment9, { children: [
27873
- /* @__PURE__ */ jsx43(Text40, { color: theme.text.secondary, children: "\u203A" }),
27874
- /* @__PURE__ */ jsx43(Text40, { bold: true, color: theme.text.primary, children: selectedProvider })
27875
+ /* @__PURE__ */ jsxs38(Box34, { marginBottom: 1, gap: 1, children: [
27876
+ /* @__PURE__ */ jsx43(Text41, { bold: true, color: theme.text.accent, children: "Providers" }),
27877
+ phase !== "providers" && /* @__PURE__ */ jsxs38(Fragment9, { children: [
27878
+ /* @__PURE__ */ jsx43(Text41, { color: theme.text.secondary, children: "\u203A" }),
27879
+ /* @__PURE__ */ jsx43(Text41, { bold: true, color: theme.text.primary, children: selectedProvider })
27875
27880
  ] }),
27876
- phase === "providers" && currentModel && /* @__PURE__ */ jsxs37(Text40, { color: theme.text.secondary, children: [
27881
+ phase === "providers" && currentModel && /* @__PURE__ */ jsxs38(Text41, { color: theme.text.secondary, children: [
27877
27882
  " (",
27878
27883
  currentModel,
27879
27884
  ")"
@@ -27889,23 +27894,23 @@ var ProviderDialog = ({
27889
27894
  maxItemsToShow: 8,
27890
27895
  renderItem: (item, { titleColor }) => {
27891
27896
  const { icon, color, label } = getStatusMark(item.provider, item.keyIsSet);
27892
- return /* @__PURE__ */ jsxs37(Box34, { gap: 1, children: [
27893
- /* @__PURE__ */ jsx43(Text40, { color, children: icon }),
27894
- /* @__PURE__ */ jsx43(Text40, { color: titleColor, bold: item.isCurrent, children: item.provider.padEnd(12) }),
27895
- /* @__PURE__ */ jsx43(Text40, { color, dimColor: !item.keyIsSet && !item.isLocal, children: label }),
27896
- item.isCurrent && /* @__PURE__ */ jsx43(Text40, { color: theme.text.accent, children: "\u25B6" })
27897
+ return /* @__PURE__ */ jsxs38(Box34, { gap: 1, children: [
27898
+ /* @__PURE__ */ jsx43(Text41, { color, children: icon }),
27899
+ /* @__PURE__ */ jsx43(Text41, { color: titleColor, bold: item.isCurrent, children: item.provider.padEnd(12) }),
27900
+ /* @__PURE__ */ jsx43(Text41, { color, dimColor: !item.keyIsSet && !item.isLocal, children: label }),
27901
+ item.isCurrent && /* @__PURE__ */ jsx43(Text41, { color: theme.text.accent, children: "\u25B6" })
27897
27902
  ] });
27898
27903
  }
27899
27904
  }
27900
27905
  ),
27901
- phase === "actions" && /* @__PURE__ */ jsxs37(Fragment9, { children: [
27902
- /* @__PURE__ */ jsxs37(Box34, { marginBottom: 1, gap: 1, children: [
27903
- /* @__PURE__ */ jsx43(Text40, { color: theme.ui.comment, children: "session" }),
27904
- /* @__PURE__ */ jsx43(Text40, { color: selectedProvider === currentProvider ? theme.text.accent : theme.text.secondary, children: selectedProvider === currentProvider ? "active" : `still using ${currentProvider}` })
27906
+ phase === "actions" && /* @__PURE__ */ jsxs38(Fragment9, { children: [
27907
+ /* @__PURE__ */ jsxs38(Box34, { marginBottom: 1, gap: 1, children: [
27908
+ /* @__PURE__ */ jsx43(Text41, { color: theme.ui.comment, children: "session" }),
27909
+ /* @__PURE__ */ jsx43(Text41, { color: selectedProvider === currentProvider ? theme.text.accent : theme.text.secondary, children: selectedProvider === currentProvider ? "active" : `still using ${currentProvider}` })
27905
27910
  ] }),
27906
- /* @__PURE__ */ jsxs37(Box34, { marginBottom: 1, gap: 1, children: [
27907
- /* @__PURE__ */ jsx43(Text40, { color: theme.ui.comment, children: "key" }),
27908
- isLocal ? /* @__PURE__ */ jsx43(Text40, { color: theme.text.accent, children: "no key required" }) : keyHint ? /* @__PURE__ */ jsx43(Text40, { color: theme.text.secondary, children: keyHint }) : /* @__PURE__ */ jsx43(Text40, { color: theme.ui.comment, dimColor: true, children: "not configured" })
27911
+ /* @__PURE__ */ jsxs38(Box34, { marginBottom: 1, gap: 1, children: [
27912
+ /* @__PURE__ */ jsx43(Text41, { color: theme.ui.comment, children: "key" }),
27913
+ isLocal ? /* @__PURE__ */ jsx43(Text41, { color: theme.text.accent, children: "no key required" }) : keyHint ? /* @__PURE__ */ jsx43(Text41, { color: theme.text.secondary, children: keyHint }) : /* @__PURE__ */ jsx43(Text41, { color: theme.ui.comment, dimColor: true, children: "not configured" })
27909
27914
  ] }),
27910
27915
  /* @__PURE__ */ jsx43(
27911
27916
  BaseSelectionList,
@@ -27915,10 +27920,10 @@ var ProviderDialog = ({
27915
27920
  isFocused: !isBusy,
27916
27921
  showNumbers: false,
27917
27922
  maxItemsToShow: 6,
27918
- renderItem: (item, { titleColor }) => /* @__PURE__ */ jsxs37(Box34, { gap: 1, children: [
27919
- /* @__PURE__ */ jsx43(Text40, { color: titleColor, children: item.icon }),
27920
- /* @__PURE__ */ jsx43(Text40, { color: titleColor, children: item.label }),
27921
- item.hint && /* @__PURE__ */ jsxs37(Text40, { color: theme.ui.comment, dimColor: true, children: [
27923
+ renderItem: (item, { titleColor }) => /* @__PURE__ */ jsxs38(Box34, { gap: 1, children: [
27924
+ /* @__PURE__ */ jsx43(Text41, { color: titleColor, children: item.icon }),
27925
+ /* @__PURE__ */ jsx43(Text41, { color: titleColor, children: item.label }),
27926
+ item.hint && /* @__PURE__ */ jsxs38(Text41, { color: theme.ui.comment, dimColor: true, children: [
27922
27927
  "(",
27923
27928
  item.hint,
27924
27929
  ")"
@@ -27927,23 +27932,23 @@ var ProviderDialog = ({
27927
27932
  }
27928
27933
  )
27929
27934
  ] }),
27930
- phase === "apiKey" && /* @__PURE__ */ jsxs37(Box34, { flexDirection: "column", gap: 1, marginBottom: 1, children: [
27931
- /* @__PURE__ */ jsxs37(Box34, { gap: 1, children: [
27932
- /* @__PURE__ */ jsx43(Text40, { color: theme.ui.comment, children: "current" }),
27933
- isLocal ? /* @__PURE__ */ jsx43(Text40, { color: theme.text.accent, children: "no key required" }) : keyHint ? /* @__PURE__ */ jsx43(Text40, { color: theme.text.secondary, children: keyHint }) : /* @__PURE__ */ jsx43(Text40, { color: theme.ui.comment, dimColor: true, children: "not set" })
27935
+ phase === "apiKey" && /* @__PURE__ */ jsxs38(Box34, { flexDirection: "column", gap: 1, marginBottom: 1, children: [
27936
+ /* @__PURE__ */ jsxs38(Box34, { gap: 1, children: [
27937
+ /* @__PURE__ */ jsx43(Text41, { color: theme.ui.comment, children: "current" }),
27938
+ isLocal ? /* @__PURE__ */ jsx43(Text41, { color: theme.text.accent, children: "no key required" }) : keyHint ? /* @__PURE__ */ jsx43(Text41, { color: theme.text.secondary, children: keyHint }) : /* @__PURE__ */ jsx43(Text41, { color: theme.ui.comment, dimColor: true, children: "not set" })
27934
27939
  ] }),
27935
- /* @__PURE__ */ jsxs37(Box34, { gap: 1, children: [
27936
- /* @__PURE__ */ jsx43(Text40, { color: theme.ui.comment, children: "new key" }),
27937
- /* @__PURE__ */ jsx43(Box34, { borderStyle: "single", borderColor: theme.border.focused, paddingX: 1, children: /* @__PURE__ */ jsx43(Text40, { color: theme.text.accent, children: apiKeyInput.length > 0 ? maskApiKeyInput(apiKeyInput.length) : /* @__PURE__ */ jsx43(Text40, { color: theme.ui.comment, dimColor: true, children: "paste or type\u2026" }) }) })
27940
+ /* @__PURE__ */ jsxs38(Box34, { gap: 1, children: [
27941
+ /* @__PURE__ */ jsx43(Text41, { color: theme.ui.comment, children: "new key" }),
27942
+ /* @__PURE__ */ jsx43(Box34, { borderStyle: "single", borderColor: theme.border.focused, paddingX: 1, children: /* @__PURE__ */ jsx43(Text41, { color: theme.text.accent, children: apiKeyInput.length > 0 ? maskApiKeyInput(apiKeyInput.length) : /* @__PURE__ */ jsx43(Text41, { color: theme.ui.comment, dimColor: true, children: "paste or type\u2026" }) }) })
27938
27943
  ] })
27939
27944
  ] }),
27940
- status && /* @__PURE__ */ jsx43(Box34, { marginTop: 1, children: /* @__PURE__ */ jsx43(Text40, { color: statusColor2, children: status.text }) }),
27941
- phase === "actions" && testLatencyMs !== void 0 && /* @__PURE__ */ jsxs37(Box34, { marginTop: 0, gap: 1, children: [
27942
- /* @__PURE__ */ jsxs37(Text40, { color: getLatencyColor(testLatencyMs), bold: true, children: [
27945
+ status && /* @__PURE__ */ jsx43(Box34, { marginTop: 1, children: /* @__PURE__ */ jsx43(Text41, { color: statusColor2, children: status.text }) }),
27946
+ phase === "actions" && testLatencyMs !== void 0 && /* @__PURE__ */ jsxs38(Box34, { marginTop: 0, gap: 1, children: [
27947
+ /* @__PURE__ */ jsxs38(Text41, { color: getLatencyColor(testLatencyMs), bold: true, children: [
27943
27948
  testLatencyMs,
27944
27949
  "ms"
27945
27950
  ] }),
27946
- /* @__PURE__ */ jsx43(Text40, { color: theme.text.secondary, children: testLatencyMs < 300 ? "excellent" : testLatencyMs < 800 ? "good" : "slow" })
27951
+ /* @__PURE__ */ jsx43(Text41, { color: theme.text.secondary, children: testLatencyMs < 300 ? "excellent" : testLatencyMs < 800 ? "good" : "slow" })
27947
27952
  ] }),
27948
27953
  /* @__PURE__ */ jsx43(
27949
27954
  Box34,
@@ -27955,7 +27960,7 @@ var ProviderDialog = ({
27955
27960
  borderLeft: false,
27956
27961
  borderRight: false,
27957
27962
  borderColor: theme.ui.comment,
27958
- children: /* @__PURE__ */ jsxs37(Text40, { color: theme.ui.comment, dimColor: true, children: [
27963
+ children: /* @__PURE__ */ jsxs38(Text41, { color: theme.ui.comment, dimColor: true, children: [
27959
27964
  footer,
27960
27965
  phase === "actions" && " Test does not change the session."
27961
27966
  ] })
@@ -27984,7 +27989,7 @@ var PermissionsDialog = ({
27984
27989
  onSave,
27985
27990
  onClose
27986
27991
  }) => {
27987
- const [modes, setModes] = useState222(current);
27992
+ const [modes, setModes] = useState23(current);
27988
27993
  const dirty = useMemo12(
27989
27994
  () => PERMISSION_KEYS.some((key) => modes[key] !== current[key]),
27990
27995
  [modes, current]
@@ -28023,7 +28028,7 @@ var PermissionsDialog = ({
28023
28028
  [onClose]
28024
28029
  );
28025
28030
  useKeypress(handleEscape, { isActive: true });
28026
- return /* @__PURE__ */ jsxs38(
28031
+ return /* @__PURE__ */ jsxs39(
28027
28032
  Box35,
28028
28033
  {
28029
28034
  flexDirection: "column",
@@ -28033,9 +28038,9 @@ var PermissionsDialog = ({
28033
28038
  marginLeft: 2,
28034
28039
  marginRight: 2,
28035
28040
  children: [
28036
- /* @__PURE__ */ jsx44(Text41, { bold: true, color: theme.text.accent, children: "Permission policy" }),
28041
+ /* @__PURE__ */ jsx44(Text42, { bold: true, color: theme.text.accent, children: "Permission policy" }),
28037
28042
  /* @__PURE__ */ jsx44(RadioButtonSelect, { items, onSelect: handleSelect, isFocused: true, showNumbers: false }),
28038
- /* @__PURE__ */ jsx44(Text41, { color: theme.text.secondary, children: "\u2191\u2193 navigate \xB7 Enter cycles allow/ask/deny \xB7 Esc cancel" })
28043
+ /* @__PURE__ */ jsx44(Text42, { color: theme.text.secondary, children: "\u2191\u2193 navigate \xB7 Enter cycles allow/ask/deny \xB7 Esc cancel" })
28039
28044
  ]
28040
28045
  }
28041
28046
  );
@@ -28050,9 +28055,9 @@ var AuthDialog = ({
28050
28055
  onPersistToken,
28051
28056
  onClose
28052
28057
  }) => {
28053
- const [phase, setPhase] = useState23("menu");
28054
- const [deviceCode, setDeviceCode] = useState23(null);
28055
- const [message, setMessage] = useState23("");
28058
+ const [phase, setPhase] = useState24("menu");
28059
+ const [deviceCode, setDeviceCode] = useState24(null);
28060
+ const [message, setMessage] = useState24("");
28056
28061
  const abortRef = useRef14(null);
28057
28062
  const items = useMemo13(
28058
28063
  () => [
@@ -28128,7 +28133,7 @@ var AuthDialog = ({
28128
28133
  },
28129
28134
  [clearToken, onClose, startLogin]
28130
28135
  );
28131
- useEffect222(() => () => {
28136
+ useEffect23(() => () => {
28132
28137
  abortRef.current?.abort();
28133
28138
  }, []);
28134
28139
  const handleEscape = useCallback20(
@@ -28143,7 +28148,7 @@ var AuthDialog = ({
28143
28148
  [onClose, phase]
28144
28149
  );
28145
28150
  useKeypress(handleEscape, { isActive: true });
28146
- return /* @__PURE__ */ jsxs39(
28151
+ return /* @__PURE__ */ jsxs40(
28147
28152
  Box36,
28148
28153
  {
28149
28154
  flexDirection: "column",
@@ -28153,32 +28158,32 @@ var AuthDialog = ({
28153
28158
  marginLeft: 2,
28154
28159
  marginRight: 2,
28155
28160
  children: [
28156
- /* @__PURE__ */ jsx45(Text42, { bold: true, color: theme.text.accent, children: "GitHub authentication" }),
28157
- /* @__PURE__ */ jsx45(Text42, { color: theme.text.secondary, children: statusSummary }),
28161
+ /* @__PURE__ */ jsx45(Text43, { bold: true, color: theme.text.accent, children: "GitHub authentication" }),
28162
+ /* @__PURE__ */ jsx45(Text43, { color: theme.text.secondary, children: statusSummary }),
28158
28163
  phase === "menu" && /* @__PURE__ */ jsx45(RadioButtonSelect, { items, onSelect: handleSelect, isFocused: true, showNumbers: false }),
28159
- deviceCode && phase === "running" && /* @__PURE__ */ jsxs39(Box36, { flexDirection: "column", marginTop: 1, children: [
28160
- /* @__PURE__ */ jsxs39(Text42, { children: [
28164
+ deviceCode && phase === "running" && /* @__PURE__ */ jsxs40(Box36, { flexDirection: "column", marginTop: 1, children: [
28165
+ /* @__PURE__ */ jsxs40(Text43, { children: [
28161
28166
  "Open: ",
28162
- /* @__PURE__ */ jsx45(Text42, { color: theme.text.accent, children: deviceCode.verificationUri })
28167
+ /* @__PURE__ */ jsx45(Text43, { color: theme.text.accent, children: deviceCode.verificationUri })
28163
28168
  ] }),
28164
- /* @__PURE__ */ jsxs39(Text42, { children: [
28169
+ /* @__PURE__ */ jsxs40(Text43, { children: [
28165
28170
  "Code: ",
28166
- /* @__PURE__ */ jsx45(Text42, { bold: true, color: theme.text.accent, children: deviceCode.userCode })
28171
+ /* @__PURE__ */ jsx45(Text43, { bold: true, color: theme.text.accent, children: deviceCode.userCode })
28167
28172
  ] }),
28168
- /* @__PURE__ */ jsxs39(Text42, { color: theme.text.secondary, children: [
28173
+ /* @__PURE__ */ jsxs40(Text43, { color: theme.text.secondary, children: [
28169
28174
  "Expires in ",
28170
28175
  Math.round(deviceCode.expiresIn / 60),
28171
28176
  " minutes."
28172
28177
  ] })
28173
28178
  ] }),
28174
28179
  message && /* @__PURE__ */ jsx45(
28175
- Text42,
28180
+ Text43,
28176
28181
  {
28177
28182
  color: phase === "error" ? theme.status.error : phase === "done" ? theme.status.success : theme.text.secondary,
28178
28183
  children: message
28179
28184
  }
28180
28185
  ),
28181
- /* @__PURE__ */ jsx45(Text42, { color: theme.text.secondary, children: phase === "running" ? "Esc cancel login" : phase === "menu" ? "\u2191\u2193 navigate \xB7 Enter select \xB7 Esc close" : "Esc close" })
28186
+ /* @__PURE__ */ jsx45(Text43, { color: theme.text.secondary, children: phase === "running" ? "Esc cancel login" : phase === "menu" ? "\u2191\u2193 navigate \xB7 Enter select \xB7 Esc close" : "Esc close" })
28182
28187
  ]
28183
28188
  }
28184
28189
  );
@@ -28224,13 +28229,13 @@ var ModelDialog = ({
28224
28229
  onSelectModel,
28225
28230
  onClose
28226
28231
  }) => {
28227
- const [loadState, setLoadState] = useState24("loading");
28228
- const [models, setModels] = useState24([]);
28229
- const [errorMsg, setErrorMsg] = useState24("");
28230
- const [search, setSearch] = useState24("");
28231
- const [activeSelIndex, setActiveSelIndex] = useState24(0);
28232
+ const [loadState, setLoadState] = useState25("loading");
28233
+ const [models, setModels] = useState25([]);
28234
+ const [errorMsg, setErrorMsg] = useState25("");
28235
+ const [search, setSearch] = useState25("");
28236
+ const [activeSelIndex, setActiveSelIndex] = useState25(0);
28232
28237
  const abortRef = useRef15(null);
28233
- useEffect23(() => {
28238
+ useEffect24(() => {
28234
28239
  const ctrl = new AbortController();
28235
28240
  abortRef.current = ctrl;
28236
28241
  onFetchModels(currentProvider, ctrl.signal).then((fetched) => {
@@ -28250,7 +28255,7 @@ var ModelDialog = ({
28250
28255
  );
28251
28256
  const selectableCount = rows.filter((r) => r.kind === "item").length;
28252
28257
  const clampedIndex = Math.min(activeSelIndex, Math.max(0, selectableCount - 1));
28253
- useEffect23(() => {
28258
+ useEffect24(() => {
28254
28259
  setActiveSelIndex(0);
28255
28260
  }, [search]);
28256
28261
  const activeRowPos = useMemo14(
@@ -28305,7 +28310,7 @@ var ModelDialog = ({
28305
28310
  }, { isActive: true });
28306
28311
  const canScrollUp = scrollTop > 0;
28307
28312
  const canScrollDown = scrollTop + MAX_VISIBLE < rows.length;
28308
- return /* @__PURE__ */ jsxs40(
28313
+ return /* @__PURE__ */ jsxs41(
28309
28314
  Box37,
28310
28315
  {
28311
28316
  flexDirection: "column",
@@ -28317,15 +28322,15 @@ var ModelDialog = ({
28317
28322
  marginRight: 1,
28318
28323
  minWidth: 58,
28319
28324
  children: [
28320
- /* @__PURE__ */ jsxs40(Box37, { justifyContent: "space-between", marginBottom: 1, children: [
28321
- /* @__PURE__ */ jsxs40(Box37, { gap: 1, children: [
28322
- /* @__PURE__ */ jsx46(Text43, { bold: true, color: theme.text.primary, children: "Select model" }),
28323
- /* @__PURE__ */ jsx46(Text43, { color: theme.text.secondary, children: "for" }),
28324
- /* @__PURE__ */ jsx46(Text43, { color: theme.text.accent, children: currentProvider })
28325
+ /* @__PURE__ */ jsxs41(Box37, { justifyContent: "space-between", marginBottom: 1, children: [
28326
+ /* @__PURE__ */ jsxs41(Box37, { gap: 1, children: [
28327
+ /* @__PURE__ */ jsx46(Text44, { bold: true, color: theme.text.primary, children: "Select model" }),
28328
+ /* @__PURE__ */ jsx46(Text44, { color: theme.text.secondary, children: "for" }),
28329
+ /* @__PURE__ */ jsx46(Text44, { color: theme.text.accent, children: currentProvider })
28325
28330
  ] }),
28326
- /* @__PURE__ */ jsx46(Text43, { color: theme.ui.comment, dimColor: true, children: "esc" })
28331
+ /* @__PURE__ */ jsx46(Text44, { color: theme.ui.comment, dimColor: true, children: "esc" })
28327
28332
  ] }),
28328
- /* @__PURE__ */ jsxs40(
28333
+ /* @__PURE__ */ jsxs41(
28329
28334
  Box37,
28330
28335
  {
28331
28336
  borderStyle: "single",
@@ -28333,57 +28338,57 @@ var ModelDialog = ({
28333
28338
  paddingX: 1,
28334
28339
  marginBottom: 1,
28335
28340
  children: [
28336
- /* @__PURE__ */ jsx46(Text43, { color: theme.ui.comment, children: "\u2315 " }),
28337
- search ? /* @__PURE__ */ jsxs40(Text43, { color: theme.text.primary, children: [
28341
+ /* @__PURE__ */ jsx46(Text44, { color: theme.ui.comment, children: "\u2315 " }),
28342
+ search ? /* @__PURE__ */ jsxs41(Text44, { color: theme.text.primary, children: [
28338
28343
  search,
28339
- /* @__PURE__ */ jsx46(Text43, { color: theme.text.accent, children: "\u258C" })
28340
- ] }) : /* @__PURE__ */ jsxs40(Text43, { color: theme.ui.comment, dimColor: true, children: [
28344
+ /* @__PURE__ */ jsx46(Text44, { color: theme.text.accent, children: "\u258C" })
28345
+ ] }) : /* @__PURE__ */ jsxs41(Text44, { color: theme.ui.comment, dimColor: true, children: [
28341
28346
  "Search",
28342
- /* @__PURE__ */ jsx46(Text43, { color: theme.text.accent, children: "\u258C" })
28347
+ /* @__PURE__ */ jsx46(Text44, { color: theme.text.accent, children: "\u258C" })
28343
28348
  ] })
28344
28349
  ]
28345
28350
  }
28346
28351
  ),
28347
- loadState === "loading" && /* @__PURE__ */ jsx46(Box37, { marginY: 1, children: /* @__PURE__ */ jsx46(Text43, { color: theme.text.secondary, children: "Loading models\u2026" }) }),
28348
- loadState === "error" && /* @__PURE__ */ jsxs40(Box37, { flexDirection: "column", marginY: 1, children: [
28349
- /* @__PURE__ */ jsx46(Text43, { color: theme.status.error, children: "\u2717 Could not load models" }),
28350
- /* @__PURE__ */ jsx46(Text43, { color: theme.ui.comment, dimColor: true, children: errorMsg })
28352
+ loadState === "loading" && /* @__PURE__ */ jsx46(Box37, { marginY: 1, children: /* @__PURE__ */ jsx46(Text44, { color: theme.text.secondary, children: "Loading models\u2026" }) }),
28353
+ loadState === "error" && /* @__PURE__ */ jsxs41(Box37, { flexDirection: "column", marginY: 1, children: [
28354
+ /* @__PURE__ */ jsx46(Text44, { color: theme.status.error, children: "\u2717 Could not load models" }),
28355
+ /* @__PURE__ */ jsx46(Text44, { color: theme.ui.comment, dimColor: true, children: errorMsg })
28351
28356
  ] }),
28352
- loadState === "ready" && selectableCount === 0 && /* @__PURE__ */ jsx46(Box37, { marginY: 1, children: /* @__PURE__ */ jsxs40(Text43, { color: theme.ui.comment, dimColor: true, children: [
28357
+ loadState === "ready" && selectableCount === 0 && /* @__PURE__ */ jsx46(Box37, { marginY: 1, children: /* @__PURE__ */ jsxs41(Text44, { color: theme.ui.comment, dimColor: true, children: [
28353
28358
  'No models match "',
28354
28359
  search,
28355
28360
  '"'
28356
28361
  ] }) }),
28357
- loadState === "ready" && selectableCount > 0 && /* @__PURE__ */ jsxs40(Box37, { flexDirection: "column", children: [
28358
- canScrollUp && /* @__PURE__ */ jsx46(Text43, { color: theme.ui.comment, dimColor: true, children: " \u2191" }),
28362
+ loadState === "ready" && selectableCount > 0 && /* @__PURE__ */ jsxs41(Box37, { flexDirection: "column", children: [
28363
+ canScrollUp && /* @__PURE__ */ jsx46(Text44, { color: theme.ui.comment, dimColor: true, children: " \u2191" }),
28359
28364
  visibleRows.map((row, i) => {
28360
28365
  if (row.kind === "header") {
28361
- return /* @__PURE__ */ jsx46(Box37, { marginTop: i === 0 ? 0 : 1, children: /* @__PURE__ */ jsx46(Text43, { color: theme.text.accent, bold: true, children: row.label }) }, `h${i}`);
28366
+ return /* @__PURE__ */ jsx46(Box37, { marginTop: i === 0 ? 0 : 1, children: /* @__PURE__ */ jsx46(Text44, { color: theme.text.accent, bold: true, children: row.label }) }, `h${i}`);
28362
28367
  }
28363
28368
  const { model, selIndex } = row;
28364
28369
  const isActive = selIndex === clampedIndex;
28365
28370
  const isCurrent = model.id === currentModel;
28366
28371
  const free = isFree(model);
28367
28372
  const group = providerGroup(model);
28368
- return /* @__PURE__ */ jsxs40(Box37, { gap: 1, children: [
28369
- /* @__PURE__ */ jsx46(Text43, { color: isActive ? theme.text.accent : theme.ui.comment, children: isCurrent ? "\u25CF" : isActive ? "\u203A" : " " }),
28370
- /* @__PURE__ */ jsxs40(Box37, { flexGrow: 1, gap: 1, children: [
28373
+ return /* @__PURE__ */ jsxs41(Box37, { gap: 1, children: [
28374
+ /* @__PURE__ */ jsx46(Text44, { color: isActive ? theme.text.accent : theme.ui.comment, children: isCurrent ? "\u25CF" : isActive ? "\u203A" : " " }),
28375
+ /* @__PURE__ */ jsxs41(Box37, { flexGrow: 1, gap: 1, children: [
28371
28376
  /* @__PURE__ */ jsx46(
28372
- Text43,
28377
+ Text44,
28373
28378
  {
28374
28379
  color: isActive ? theme.text.primary : theme.text.secondary,
28375
28380
  bold: isActive,
28376
28381
  children: model.name
28377
28382
  }
28378
28383
  ),
28379
- /* @__PURE__ */ jsx46(Text43, { color: theme.text.accent, dimColor: true, children: group })
28384
+ /* @__PURE__ */ jsx46(Text44, { color: theme.text.accent, dimColor: true, children: group })
28380
28385
  ] }),
28381
- free && /* @__PURE__ */ jsx46(Text43, { color: theme.status.success, dimColor: !isActive, children: "Free" })
28386
+ free && /* @__PURE__ */ jsx46(Text44, { color: theme.status.success, dimColor: !isActive, children: "Free" })
28382
28387
  ] }, model.id);
28383
28388
  }),
28384
- canScrollDown && /* @__PURE__ */ jsx46(Text43, { color: theme.ui.comment, dimColor: true, children: " \u2193" })
28389
+ canScrollDown && /* @__PURE__ */ jsx46(Text44, { color: theme.ui.comment, dimColor: true, children: " \u2193" })
28385
28390
  ] }),
28386
- loadState === "ready" && /* @__PURE__ */ jsx46(Box37, { marginTop: 1, children: /* @__PURE__ */ jsxs40(Text43, { color: theme.ui.comment, dimColor: true, children: [
28391
+ loadState === "ready" && /* @__PURE__ */ jsx46(Box37, { marginTop: 1, children: /* @__PURE__ */ jsxs41(Text44, { color: theme.ui.comment, dimColor: true, children: [
28387
28392
  selectableCount,
28388
28393
  " model",
28389
28394
  selectableCount !== 1 ? "s" : "",
@@ -28399,7 +28404,7 @@ var ModelDialog = ({
28399
28404
  borderLeft: false,
28400
28405
  borderRight: false,
28401
28406
  borderColor: theme.ui.comment,
28402
- children: /* @__PURE__ */ jsx46(Text43, { color: theme.ui.comment, dimColor: true, children: "\u2191\u2193 navigate type to search Enter use for session Esc close" })
28407
+ children: /* @__PURE__ */ jsx46(Text44, { color: theme.ui.comment, dimColor: true, children: "\u2191\u2193 navigate type to search Enter use for session Esc close" })
28403
28408
  }
28404
28409
  )
28405
28410
  ]
@@ -28537,50 +28542,52 @@ function resolveSlashInvocation(rawInput, commands) {
28537
28542
  var AppContainer = ({ cwd, config, provider, model }) => {
28538
28543
  const historyManager = useHistory();
28539
28544
  const addHistoryItem = historyManager.addItem;
28540
- const [initError, setInitError] = useState25(null);
28541
- const [isInitializing, setIsInitializing] = useState25(true);
28542
- const [isRunning, setIsRunning] = useState25(false);
28543
- const [pendingAssistantText, setPendingAssistantText] = useState25("");
28544
- const [approvalQueue, setApprovalQueue] = useState25([]);
28545
- const [providerLabel, setProviderLabel] = useState25("(unconfigured)");
28546
- const [targetSource, setTargetSource] = useState25("config");
28547
- const [currentModel, setCurrentModel] = useState25("(unconfigured)");
28548
- const [agentMode, setAgentMode] = useState25("build");
28549
- const [streamingState, setStreamingState] = useState25(
28545
+ const [initError, setInitError] = useState26(null);
28546
+ const [isInitializing, setIsInitializing] = useState26(true);
28547
+ const [isRunning, setIsRunning] = useState26(false);
28548
+ const [pendingAssistantText, setPendingAssistantText] = useState26("");
28549
+ const [approvalQueue, setApprovalQueue] = useState26([]);
28550
+ const [providerLabel, setProviderLabel] = useState26("(unconfigured)");
28551
+ const [targetSource, setTargetSource] = useState26("config");
28552
+ const [currentModel, setCurrentModel] = useState26("(unconfigured)");
28553
+ const [agentMode, setAgentMode] = useState26("build");
28554
+ const [streamingState, setStreamingState] = useState26(
28550
28555
  "idle"
28551
28556
  /* Idle */
28552
28557
  );
28553
- const [compactMode, setCompactMode] = useState25(false);
28554
- const [shellModeActive, setShellModeActive] = useState25(false);
28555
- const [showEscapePrompt, setShowEscapePrompt] = useState25(false);
28556
- const [messageQueue, setMessageQueue] = useState25([]);
28557
- const [historyRemountKey, setHistoryRemountKey] = useState25(0);
28558
- const [pendingItem, setPendingItem] = useState25(null);
28559
- const [isFeedbackDialogOpen, setIsFeedbackDialogOpen] = useState25(false);
28560
- const [lastPromptTokenCount, setLastPromptTokenCount] = useState25(0);
28561
- const [lastOutputTokenCount, setLastOutputTokenCount] = useState25(0);
28562
- const [elapsedTime, setElapsedTime] = useState25(0);
28563
- const [isReceivingContent, setIsReceivingContent] = useState25(false);
28564
- const [iterationInfo, setIterationInfo] = useState25(null);
28565
- const [liveToolCalls, setLiveToolCalls] = useState25([]);
28566
- const [taskPlan, setTaskPlan] = useState25(null);
28567
- const [taskStreams, setTaskStreams] = useState25({});
28568
- const [recentSlashCommandsState, setRecentSlashCommandsState] = useState25(/* @__PURE__ */ new Map());
28569
- const [activeDialog, setActiveDialog] = useState25(null);
28570
- const [themeName, setThemeName] = useState25("(unknown)");
28571
- const [permissionSummary, setPermissionSummary] = useState25("(unknown)");
28572
- const [authSummary, setAuthSummary] = useState25("(unknown)");
28573
- const [permissionModes, setPermissionModes] = useState25({
28558
+ const [compactMode, setCompactMode] = useState26(false);
28559
+ const [shellModeActive, setShellModeActive] = useState26(false);
28560
+ const [showEscapePrompt, setShowEscapePrompt] = useState26(false);
28561
+ const [messageQueue, setMessageQueue] = useState26([]);
28562
+ const [historyRemountKey, setHistoryRemountKey] = useState26(0);
28563
+ const [pendingItem, setPendingItem] = useState26(null);
28564
+ const [isFeedbackDialogOpen, setIsFeedbackDialogOpen] = useState26(false);
28565
+ const [lastPromptTokenCount, setLastPromptTokenCount] = useState26(0);
28566
+ const [lastOutputTokenCount, setLastOutputTokenCount] = useState26(0);
28567
+ const [elapsedTime, setElapsedTime] = useState26(0);
28568
+ const [isReceivingContent, setIsReceivingContent] = useState26(false);
28569
+ const [iterationInfo, setIterationInfo] = useState26(null);
28570
+ const [liveToolCalls, setLiveToolCalls] = useState26([]);
28571
+ const [taskPlan, setTaskPlan] = useState26(null);
28572
+ const [taskStreams, setTaskStreams] = useState26({});
28573
+ const [recentSlashCommandsState, setRecentSlashCommandsState] = useState26(/* @__PURE__ */ new Map());
28574
+ const [activeDialog, setActiveDialog] = useState26(null);
28575
+ const [themeName, setThemeName] = useState26("(unknown)");
28576
+ const [permissionSummary, setPermissionSummary] = useState26("(unknown)");
28577
+ const [authSummary, setAuthSummary] = useState26("(unknown)");
28578
+ const [permissionModes, setPermissionModes] = useState26({
28574
28579
  read: "allow",
28575
28580
  write: "ask",
28576
28581
  gitLocal: "allow",
28577
28582
  shell: "ask",
28578
28583
  dangerous: "ask"
28579
28584
  });
28580
- const [providerConfigVersion, setProviderConfigVersion] = useState25(0);
28581
- const [, setThemeVersion] = useState25(0);
28582
- const [, setDrainTick] = useState25(0);
28583
- const [pendingCommandConfirmation, setPendingCommandConfirmation] = useState25(null);
28585
+ const [providerConfigVersion, setProviderConfigVersion] = useState26(0);
28586
+ const [, setThemeVersion] = useState26(0);
28587
+ const [mcpConnected, setMcpConnected] = useState26(0);
28588
+ const [mcpTotal, setMcpTotal] = useState26(0);
28589
+ const [, setDrainTick] = useState26(0);
28590
+ const [pendingCommandConfirmation, setPendingCommandConfirmation] = useState26(null);
28584
28591
  const runtimeRef = useRef16(null);
28585
28592
  const sessionRef = useRef16(null);
28586
28593
  const configAdapterRef = useRef16(null);
@@ -28761,10 +28768,10 @@ var AppContainer = ({ cwd, config, provider, model }) => {
28761
28768
  }),
28762
28769
  [configAdapter, historyManager, pendingItem, sessionCommandServices]
28763
28770
  );
28764
- useEffect24(() => {
28771
+ useEffect25(() => {
28765
28772
  messageQueueRef.current = messageQueue;
28766
28773
  }, [messageQueue]);
28767
- useEffect24(() => {
28774
+ useEffect25(() => {
28768
28775
  if (approvalQueue.length > 0) {
28769
28776
  setStreamingState(
28770
28777
  "waiting_for_confirmation"
@@ -28784,7 +28791,7 @@ var AppContainer = ({ cwd, config, provider, model }) => {
28784
28791
  /* Idle */
28785
28792
  );
28786
28793
  }, [approvalQueue.length, isRunning]);
28787
- useEffect24(() => {
28794
+ useEffect25(() => {
28788
28795
  if (!isRunning) {
28789
28796
  runStartedAtRef.current = null;
28790
28797
  setElapsedTime(0);
@@ -28800,7 +28807,7 @@ var AppContainer = ({ cwd, config, provider, model }) => {
28800
28807
  }, 250);
28801
28808
  return () => clearInterval(interval);
28802
28809
  }, [isRunning]);
28803
- useEffect24(() => {
28810
+ useEffect25(() => {
28804
28811
  let mounted = true;
28805
28812
  const initialize = async () => {
28806
28813
  try {
@@ -28833,6 +28840,8 @@ var AppContainer = ({ cwd, config, provider, model }) => {
28833
28840
  setTargetSource(provider || model ? "cli" : "config");
28834
28841
  setCurrentModel(session.model ?? "(unconfigured)");
28835
28842
  setProviderLabel(formatProviderLabel(session.provider, session.model));
28843
+ setMcpConnected(runtime.mcp.connectedCount);
28844
+ setMcpTotal(runtime.config.mcpServers.length);
28836
28845
  const unsubscribers = [];
28837
28846
  unsubscribers.push(
28838
28847
  runtime.events.on("approval:request", (request) => {
@@ -29538,7 +29547,7 @@ var AppContainer = ({ cwd, config, provider, model }) => {
29538
29547
  );
29539
29548
  const closeDialog = useCallback22(() => setActiveDialog(null), []);
29540
29549
  const previewTheme = useCallback22(() => setThemeVersion((version) => version + 1), []);
29541
- useEffect24(() => {
29550
+ useEffect25(() => {
29542
29551
  if (drainingQueueRef.current || isRunning || isInitializing || Boolean(initError) || approvalQueue.length > 0 || messageQueue.length === 0) {
29543
29552
  return;
29544
29553
  }
@@ -29716,8 +29725,9 @@ var AppContainer = ({ cwd, config, provider, model }) => {
29716
29725
  isProviderDialogOpen: activeDialog === "provider",
29717
29726
  isPermissionsDialogOpen: activeDialog === "permissions",
29718
29727
  isFeedbackDialogOpen,
29719
- showAutoAcceptIndicator: "default"
29720
- /* DEFAULT */
29728
+ showAutoAcceptIndicator: "default",
29729
+ mcpConnected,
29730
+ mcpTotal
29721
29731
  }),
29722
29732
  [
29723
29733
  approvalQueue.length,
@@ -29739,6 +29749,8 @@ var AppContainer = ({ cwd, config, provider, model }) => {
29739
29749
  lastOutputTokenCount,
29740
29750
  lastPromptTokenCount,
29741
29751
  mainAreaWidth,
29752
+ mcpConnected,
29753
+ mcpTotal,
29742
29754
  messageQueue,
29743
29755
  pendingCommandConfirmation,
29744
29756
  pendingGeminiHistoryItems,
@@ -29754,37 +29766,37 @@ var AppContainer = ({ cwd, config, provider, model }) => {
29754
29766
  userMessages
29755
29767
  ]
29756
29768
  );
29757
- return /* @__PURE__ */ jsx47(CompactModeProvider, { value: { compactMode }, children: /* @__PURE__ */ jsx47(ConfigContext.Provider, { value: configAdapter, children: /* @__PURE__ */ jsx47(SettingsContext.Provider, { value: loadedSettings, children: /* @__PURE__ */ jsx47(StreamingContext.Provider, { value: streamingState, children: /* @__PURE__ */ jsx47(VimModeProvider, { initialVimEnabled: loadedSettings.merged.general?.vimMode ?? false, children: /* @__PURE__ */ jsx47(KeypressProvider, { kittyProtocolEnabled: false, config: configAdapter, children: /* @__PURE__ */ jsx47(ShellFocusContext.Provider, { value: true, children: /* @__PURE__ */ jsx47(AgentViewProvider, { children: /* @__PURE__ */ jsx47(BackgroundTaskViewProvider, { children: /* @__PURE__ */ jsx47(UIStateContext.Provider, { value: uiState, children: /* @__PURE__ */ jsx47(UIActionsContext.Provider, { value: uiActions, children: /* @__PURE__ */ jsxs41(Box38, { flexDirection: "column", flexGrow: 1, children: [
29758
- /* @__PURE__ */ jsxs41(Box38, { marginLeft: 2, marginRight: 2, marginTop: 1, marginBottom: 1, children: [
29759
- /* @__PURE__ */ jsx47(Text44, { bold: true, color: theme.text.accent, children: "DeepCode" }),
29760
- /* @__PURE__ */ jsx47(Text44, { color: theme.text.secondary, children: " Target: " }),
29761
- /* @__PURE__ */ jsx47(Text44, { color: theme.text.primary, children: providerLabel }),
29762
- /* @__PURE__ */ jsxs41(Text44, { color: theme.text.secondary, children: [
29769
+ return /* @__PURE__ */ jsx47(CompactModeProvider, { value: { compactMode }, children: /* @__PURE__ */ jsx47(ConfigContext.Provider, { value: configAdapter, children: /* @__PURE__ */ jsx47(SettingsContext.Provider, { value: loadedSettings, children: /* @__PURE__ */ jsx47(StreamingContext.Provider, { value: streamingState, children: /* @__PURE__ */ jsx47(VimModeProvider, { initialVimEnabled: loadedSettings.merged.general?.vimMode ?? false, children: /* @__PURE__ */ jsx47(KeypressProvider, { kittyProtocolEnabled: false, config: configAdapter, children: /* @__PURE__ */ jsx47(ShellFocusContext.Provider, { value: true, children: /* @__PURE__ */ jsx47(AgentViewProvider, { children: /* @__PURE__ */ jsx47(BackgroundTaskViewProvider, { children: /* @__PURE__ */ jsx47(UIStateContext.Provider, { value: uiState, children: /* @__PURE__ */ jsx47(UIActionsContext.Provider, { value: uiActions, children: /* @__PURE__ */ jsxs42(Box38, { flexDirection: "column", flexGrow: 1, children: [
29770
+ /* @__PURE__ */ jsxs42(Box38, { marginLeft: 2, marginRight: 2, marginTop: 1, marginBottom: 1, children: [
29771
+ /* @__PURE__ */ jsx47(Text45, { bold: true, color: theme.text.accent, children: "DeepCode" }),
29772
+ /* @__PURE__ */ jsx47(Text45, { color: theme.text.secondary, children: " Target: " }),
29773
+ /* @__PURE__ */ jsx47(Text45, { color: theme.text.primary, children: providerLabel }),
29774
+ /* @__PURE__ */ jsxs42(Text45, { color: theme.text.secondary, children: [
29763
29775
  " (",
29764
29776
  targetSource,
29765
29777
  ")"
29766
29778
  ] }),
29767
- /* @__PURE__ */ jsx47(Text44, { color: theme.text.secondary, children: " Mode: " }),
29779
+ /* @__PURE__ */ jsx47(Text45, { color: theme.text.secondary, children: " Mode: " }),
29768
29780
  /* @__PURE__ */ jsx47(
29769
- Text44,
29781
+ Text45,
29770
29782
  {
29771
29783
  bold: true,
29772
29784
  color: agentMode === "build" ? theme.status.success : theme.status.warning,
29773
29785
  children: agentMode.toUpperCase()
29774
29786
  }
29775
29787
  ),
29776
- /* @__PURE__ */ jsxs41(Text44, { color: theme.text.secondary, children: [
29788
+ /* @__PURE__ */ jsxs42(Text45, { color: theme.text.secondary, children: [
29777
29789
  " ",
29778
29790
  streamingState === "responding" ? "running" : streamingState === "waiting_for_confirmation" ? "waiting-approval" : "idle"
29779
29791
  ] }),
29780
- iterationInfo && /* @__PURE__ */ jsxs41(Text44, { color: theme.text.secondary, children: [
29792
+ iterationInfo && /* @__PURE__ */ jsxs42(Text45, { color: theme.text.secondary, children: [
29781
29793
  " ",
29782
29794
  "iter ",
29783
29795
  iterationInfo.round,
29784
29796
  "/",
29785
29797
  iterationInfo.max
29786
29798
  ] }),
29787
- lastPromptTokenCount > 0 && /* @__PURE__ */ jsxs41(Text44, { color: theme.text.secondary, children: [
29799
+ lastPromptTokenCount > 0 && /* @__PURE__ */ jsxs42(Text45, { color: theme.text.secondary, children: [
29788
29800
  " ",
29789
29801
  "\u2191",
29790
29802
  formatTokenCount(lastPromptTokenCount),
@@ -29792,7 +29804,7 @@ var AppContainer = ({ cwd, config, provider, model }) => {
29792
29804
  formatTokenCount(lastOutputTokenCount)
29793
29805
  ] })
29794
29806
  ] }),
29795
- initError ? /* @__PURE__ */ jsx47(Box38, { marginLeft: 2, marginRight: 2, children: /* @__PURE__ */ jsxs41(Text44, { color: theme.status.error, children: [
29807
+ initError ? /* @__PURE__ */ jsx47(Box38, { marginLeft: 2, marginRight: 2, children: /* @__PURE__ */ jsxs42(Text45, { color: theme.status.error, children: [
29796
29808
  "Failed to initialize runtime: ",
29797
29809
  initError
29798
29810
  ] }) }) : /* @__PURE__ */ jsx47(
@@ -29979,22 +29991,22 @@ function formatAuthSummary(config) {
29979
29991
  var ApprovalPrompt = ({ request }) => {
29980
29992
  if (!request) return null;
29981
29993
  const operationLabel = formatApprovalOperationLabel(request);
29982
- return /* @__PURE__ */ jsxs41(Box38, { flexDirection: "column", marginTop: 1, children: [
29983
- /* @__PURE__ */ jsxs41(Text44, { color: theme.status.warning, children: [
29994
+ return /* @__PURE__ */ jsxs42(Box38, { flexDirection: "column", marginTop: 1, children: [
29995
+ /* @__PURE__ */ jsxs42(Text45, { color: theme.status.warning, children: [
29984
29996
  "\u26A0 Allow ",
29985
29997
  operationLabel,
29986
29998
  "?"
29987
29999
  ] }),
29988
- request.path && /* @__PURE__ */ jsxs41(Text44, { color: theme.text.secondary, children: [
30000
+ request.path && /* @__PURE__ */ jsxs42(Text45, { color: theme.text.secondary, children: [
29989
30001
  " ",
29990
30002
  request.path
29991
30003
  ] }),
29992
- request.preview?.command && /* @__PURE__ */ jsxs41(Text44, { color: theme.text.secondary, children: [
30004
+ request.preview?.command && /* @__PURE__ */ jsxs42(Text45, { color: theme.text.secondary, children: [
29993
30005
  " $ ",
29994
30006
  request.preview.command,
29995
30007
  request.preview.args?.length ? ` ${request.preview.args.join(" ")}` : ""
29996
30008
  ] }),
29997
- /* @__PURE__ */ jsx47(Text44, { color: theme.text.secondary, children: " [\u21B5/y] once [s] session [a] always [n] deny" })
30009
+ /* @__PURE__ */ jsx47(Text45, { color: theme.text.secondary, children: " [\u21B5/y] once [s] session [a] always [n] deny" })
29998
30010
  ] });
29999
30011
  };
30000
30012
  function formatApprovalOperationLabel(request) {