deepcode-ai 0.1.0 → 0.1.2

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/index.js +187 -50
  2. package/dist/index.js.map +1 -1
  3. package/package.json +11 -12
  4. package/dist/chunk-4KEEGKT2.js +0 -5060
  5. package/dist/chunk-4KEEGKT2.js.map +0 -1
  6. package/dist/chunk-AAXRI5RV.js +0 -5129
  7. package/dist/chunk-AAXRI5RV.js.map +0 -1
  8. package/dist/chunk-APWRVQPJ.js +0 -5173
  9. package/dist/chunk-APWRVQPJ.js.map +0 -1
  10. package/dist/chunk-CAHOGANP.js +0 -5168
  11. package/dist/chunk-CAHOGANP.js.map +0 -1
  12. package/dist/chunk-FJJL7EIW.js +0 -5168
  13. package/dist/chunk-FJJL7EIW.js.map +0 -1
  14. package/dist/chunk-GJCDWQFZ.js +0 -5168
  15. package/dist/chunk-GJCDWQFZ.js.map +0 -1
  16. package/dist/chunk-KOC7P5XI.js +0 -5112
  17. package/dist/chunk-KOC7P5XI.js.map +0 -1
  18. package/dist/chunk-RM2LOG7S.js +0 -5173
  19. package/dist/chunk-RM2LOG7S.js.map +0 -1
  20. package/dist/chunk-RZVJYHLY.js +0 -5094
  21. package/dist/chunk-RZVJYHLY.js.map +0 -1
  22. package/dist/chunk-U7CBV2OO.js +0 -5077
  23. package/dist/chunk-U7CBV2OO.js.map +0 -1
  24. package/dist/chunk-ULBBL2CT.js +0 -5173
  25. package/dist/chunk-ULBBL2CT.js.map +0 -1
  26. package/dist/dist-666VPXNY.js +0 -134
  27. package/dist/dist-666VPXNY.js.map +0 -1
  28. package/dist/dist-6KFIWVBN.js +0 -134
  29. package/dist/dist-6KFIWVBN.js.map +0 -1
  30. package/dist/dist-GZFQHTL6.js +0 -130
  31. package/dist/dist-GZFQHTL6.js.map +0 -1
  32. package/dist/dist-JJUMR3R7.js +0 -130
  33. package/dist/dist-JJUMR3R7.js.map +0 -1
  34. package/dist/dist-O5DFAJW3.js +0 -130
  35. package/dist/dist-O5DFAJW3.js.map +0 -1
  36. package/dist/dist-OJ34KP2R.js +0 -134
  37. package/dist/dist-OJ34KP2R.js.map +0 -1
  38. package/dist/dist-SYNK3FFE.js +0 -130
  39. package/dist/dist-SYNK3FFE.js.map +0 -1
  40. package/dist/dist-VGP7VJCS.js +0 -130
  41. package/dist/dist-VGP7VJCS.js.map +0 -1
  42. package/dist/dist-WGPZ5MGT.js +0 -130
  43. package/dist/dist-WGPZ5MGT.js.map +0 -1
  44. package/dist/dist-WRI7RF64.js +0 -130
  45. package/dist/dist-WRI7RF64.js.map +0 -1
  46. package/dist/dist-ZKESO7K3.js +0 -130
  47. package/dist/dist-ZKESO7K3.js.map +0 -1
package/dist/index.js CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  // ../../packages/cli/dist/index.js
4
4
  import { render } from "ink";
5
- import React15 from "react";
5
+ import React16 from "react";
6
6
  import { Command } from "commander";
7
7
 
8
8
  // ../../packages/core/dist/index.js
@@ -5182,8 +5182,8 @@ import path12 from "path";
5182
5182
  import { mkdtemp, rm as rm3 } from "fs/promises";
5183
5183
  import { tmpdir } from "os";
5184
5184
  import path23 from "path";
5185
- import React14, { useEffect as useEffect12, useRef as useRef9, useMemo as useMemo6, useCallback as useCallback12 } from "react";
5186
- import { Box as Box30, Text as Text30, useApp, useInput as useInput17, useStdout as useStdout5 } from "ink";
5185
+ import React15, { useEffect as useEffect13, useRef as useRef9, useMemo as useMemo6, useCallback as useCallback12 } from "react";
5186
+ import { Box as Box32, Text as Text32, useApp, useInput as useInput19, useStdout as useStdout5 } from "ink";
5187
5187
  import { Box } from "ink";
5188
5188
  import { jsx, jsxs } from "react/jsx-runtime";
5189
5189
  import { Box as Box2, Text as Text2 } from "ink";
@@ -5935,7 +5935,12 @@ import { Box as Box28, Text as Text28, useInput as useInput16 } from "ink";
5935
5935
  import { jsx as jsx29, jsxs as jsxs29 } from "react/jsx-runtime";
5936
5936
  import { Box as Box29, Text as Text29 } from "ink";
5937
5937
  import { jsx as jsx30, jsxs as jsxs30 } from "react/jsx-runtime";
5938
- import { Fragment as Fragment6, jsx as jsx31, jsxs as jsxs31 } from "react/jsx-runtime";
5938
+ import { Box as Box30, Text as Text30, useInput as useInput17 } from "ink";
5939
+ import { jsx as jsx31, jsxs as jsxs31 } from "react/jsx-runtime";
5940
+ import { useState as useState24, useEffect as useEffect12 } from "react";
5941
+ import { Box as Box31, Text as Text31, useInput as useInput18 } from "ink";
5942
+ import { Fragment as Fragment6, jsx as jsx32, jsxs as jsxs32 } from "react/jsx-runtime";
5943
+ import { Fragment as Fragment7, jsx as jsx33, jsxs as jsxs33 } from "react/jsx-runtime";
5939
5944
  async function createRuntime(options) {
5940
5945
  const worktree = path12.resolve(options.cwd);
5941
5946
  const config = await new ConfigLoader().load({ cwd: worktree, configPath: options.configPath });
@@ -7100,6 +7105,11 @@ var en = {
7100
7105
  historySearchTitle: "Search History",
7101
7106
  previewTitle: "Change Preview",
7102
7107
  detailPanelPlaceholder: "Detail Panel",
7108
+ toolInspectorTitle: "Tool Inspector",
7109
+ toolInspectorHint: "\u2191\u2193 navigate \xB7 Esc close",
7110
+ toolInspectorEmpty: "No tool calls yet in this session.",
7111
+ toolInspectorExecuting: "Executing tool\u2026",
7112
+ toolInspectorResult: "Result:",
7103
7113
  contextPanelTitle: "Context",
7104
7114
  executionPanelTitle: "Execution",
7105
7115
  undoNotAvailable: "No file changes to undo in this session.",
@@ -7498,6 +7508,11 @@ var ptBR = {
7498
7508
  historySearchTitle: "Pesquisar Hist\xF3rico",
7499
7509
  previewTitle: "Preview de Altera\xE7\xF5es",
7500
7510
  detailPanelPlaceholder: "Painel de Detalhes",
7511
+ toolInspectorTitle: "Inspetor de Ferramentas",
7512
+ toolInspectorHint: "\u2191\u2193 navegar \xB7 Esc fechar",
7513
+ toolInspectorEmpty: "Nenhuma ferramenta executada nesta sess\xE3o.",
7514
+ toolInspectorExecuting: "Executando ferramenta\u2026",
7515
+ toolInspectorResult: "Resultado:",
7501
7516
  contextPanelTitle: "Contexto",
7502
7517
  executionPanelTitle: "Execu\xE7\xE3o",
7503
7518
  undoNotAvailable: "Nenhuma altera\xE7\xE3o de arquivo para desfazer nesta sess\xE3o.",
@@ -8359,7 +8374,7 @@ function AppLayout({
8359
8374
  const activePanel = useUIStore((s) => s.activePanel);
8360
8375
  const togglePanel = useUIStore((s) => s.togglePanel);
8361
8376
  const resizePanel = useUIStore((s) => s.resizePanel);
8362
- const setActivePanel = useUIStore((s) => s.setActivePanel);
8377
+ const _setActivePanel = useUIStore((s) => s.setActivePanel);
8363
8378
  useInput22((inputChar, key) => {
8364
8379
  if (key.ctrl && inputChar === "1") {
8365
8380
  togglePanel("context");
@@ -12936,6 +12951,108 @@ function FileTreePanel({ files, theme, cwd }) {
12936
12951
  files.length === 0 && /* @__PURE__ */ jsx30(Text29, { color: theme.fgMuted, dimColor: true, children: "Loading\u2026" })
12937
12952
  ] });
12938
12953
  }
12954
+ function DiffDetailPanel({ diff, theme, isActive, onClose }) {
12955
+ useInput17(
12956
+ (_, key) => {
12957
+ if (key.escape) onClose?.();
12958
+ },
12959
+ { isActive: Boolean(isActive) }
12960
+ );
12961
+ if (!diff) {
12962
+ return /* @__PURE__ */ jsx31(Box30, { paddingX: 1, paddingY: 1, children: /* @__PURE__ */ jsx31(Text30, { color: theme.fgMuted, dimColor: true, children: t("diffNoPendingChanges") }) });
12963
+ }
12964
+ return /* @__PURE__ */ jsxs31(Box30, { flexDirection: "column", children: [
12965
+ /* @__PURE__ */ jsx31(
12966
+ DiffView,
12967
+ {
12968
+ oldText: diff.before,
12969
+ newText: diff.after,
12970
+ oldPath: diff.filePath,
12971
+ newPath: diff.filePath,
12972
+ theme
12973
+ }
12974
+ ),
12975
+ /* @__PURE__ */ jsx31(Box30, { paddingX: 1, children: /* @__PURE__ */ jsx31(Text30, { color: theme.fgMuted, dimColor: true, children: "Esc close" }) })
12976
+ ] });
12977
+ }
12978
+ var LIST_SIZE = 6;
12979
+ function formatValue(v, max = 60) {
12980
+ const s = typeof v === "string" ? v : JSON.stringify(v) ?? "";
12981
+ return s.length > max ? `${s.slice(0, max)}\u2026` : s;
12982
+ }
12983
+ function ToolInspector({
12984
+ toolCalls,
12985
+ toolExecuting,
12986
+ theme,
12987
+ isActive,
12988
+ onClose
12989
+ }) {
12990
+ const [selectedIndex, setSelectedIndex] = useState24(Math.max(0, toolCalls.length - 1));
12991
+ useEffect12(() => {
12992
+ setSelectedIndex(Math.max(0, toolCalls.length - 1));
12993
+ }, [toolCalls.length]);
12994
+ const clamped = Math.max(0, Math.min(selectedIndex, Math.max(0, toolCalls.length - 1)));
12995
+ const selected = toolCalls[clamped];
12996
+ const windowStart = Math.max(0, Math.min(clamped - Math.floor(LIST_SIZE / 2), Math.max(0, toolCalls.length - LIST_SIZE)));
12997
+ const visible = toolCalls.slice(windowStart, windowStart + LIST_SIZE);
12998
+ useInput18(
12999
+ (_, key) => {
13000
+ if (key.escape) {
13001
+ onClose?.();
13002
+ return;
13003
+ }
13004
+ if (key.upArrow) setSelectedIndex((i) => Math.max(0, i - 1));
13005
+ if (key.downArrow) setSelectedIndex((i) => Math.min(toolCalls.length - 1, i + 1));
13006
+ },
13007
+ { isActive: Boolean(isActive) }
13008
+ );
13009
+ let parsedArgs = {};
13010
+ try {
13011
+ parsedArgs = JSON.parse(selected?.args ?? "{}");
13012
+ } catch {
13013
+ }
13014
+ return /* @__PURE__ */ jsxs32(Box31, { flexDirection: "column", paddingX: 1, paddingY: 1, children: [
13015
+ /* @__PURE__ */ jsxs32(Box31, { flexDirection: "row", justifyContent: "space-between", marginBottom: 1, children: [
13016
+ /* @__PURE__ */ jsx32(Text31, { bold: true, color: theme.primary, children: t("toolInspectorTitle") }),
13017
+ /* @__PURE__ */ jsx32(Text31, { color: theme.fgMuted, dimColor: true, children: t("toolInspectorHint") })
13018
+ ] }),
13019
+ toolCalls.length === 0 ? /* @__PURE__ */ jsx32(Text31, { color: theme.fgMuted, dimColor: true, children: toolExecuting ? t("toolInspectorExecuting") : t("toolInspectorEmpty") }) : /* @__PURE__ */ jsxs32(Fragment6, { children: [
13020
+ /* @__PURE__ */ jsx32(Box31, { flexDirection: "column", marginBottom: 1, children: visible.map((tc, i) => {
13021
+ const absIdx = windowStart + i;
13022
+ const sel = absIdx === clamped;
13023
+ const done = tc.result !== void 0;
13024
+ return /* @__PURE__ */ jsxs32(Box31, { flexDirection: "row", gap: 1, children: [
13025
+ /* @__PURE__ */ jsx32(Text31, { color: sel ? theme.primary : theme.fgMuted, children: sel ? "\u25B6" : " " }),
13026
+ /* @__PURE__ */ jsx32(Text31, { color: done ? theme.success : theme.warning, children: done ? "\u2713" : toolExecuting && absIdx === toolCalls.length - 1 ? "\u2026" : "\u25CB" }),
13027
+ /* @__PURE__ */ jsx32(Text31, { color: sel ? theme.fg : theme.fgMuted, bold: sel, children: tc.name })
13028
+ ] }, tc.id);
13029
+ }) }),
13030
+ selected && /* @__PURE__ */ jsxs32(Box31, { flexDirection: "column", borderStyle: "single", borderColor: theme.border, paddingX: 1, children: [
13031
+ /* @__PURE__ */ jsx32(Text31, { bold: true, color: theme.fg, children: selected.name }),
13032
+ /* @__PURE__ */ jsx32(Text31, { children: " " }),
13033
+ Object.entries(parsedArgs).slice(0, 5).map(([k, v]) => /* @__PURE__ */ jsxs32(Box31, { flexDirection: "row", gap: 1, children: [
13034
+ /* @__PURE__ */ jsxs32(Text31, { color: theme.accent, children: [
13035
+ k,
13036
+ ":"
13037
+ ] }),
13038
+ /* @__PURE__ */ jsx32(Text31, { color: theme.fgMuted, wrap: "truncate", children: formatValue(v) })
13039
+ ] }, k)),
13040
+ selected.result !== void 0 && /* @__PURE__ */ jsxs32(Fragment6, { children: [
13041
+ /* @__PURE__ */ jsx32(Text31, { children: " " }),
13042
+ /* @__PURE__ */ jsx32(Text31, { bold: true, color: theme.fg, children: t("toolInspectorResult") }),
13043
+ /* @__PURE__ */ jsx32(Text31, { color: theme.fgMuted, wrap: "wrap", children: formatValue(selected.result, 300) })
13044
+ ] })
13045
+ ] }),
13046
+ toolCalls.length > LIST_SIZE && /* @__PURE__ */ jsx32(Box31, { marginTop: 1, children: /* @__PURE__ */ jsxs32(Text31, { color: theme.fgMuted, dimColor: true, children: [
13047
+ windowStart + 1,
13048
+ "\u2013",
13049
+ Math.min(windowStart + LIST_SIZE, toolCalls.length),
13050
+ "/",
13051
+ toolCalls.length
13052
+ ] }) })
13053
+ ] })
13054
+ ] });
13055
+ }
12939
13056
  var useConfigStore = create()((set) => ({
12940
13057
  activeProvider: "openrouter",
12941
13058
  activeModel: "",
@@ -12951,7 +13068,7 @@ var useConfigStore = create()((set) => ({
12951
13068
  function App(props) {
12952
13069
  const { exit } = useApp();
12953
13070
  const { stdout } = useStdout5();
12954
- const [contextView, setContextView] = React14.useState("sidebar");
13071
+ const [contextView, setContextView] = React15.useState("sidebar");
12955
13072
  const runtime = useAgentStore((s) => s.runtime);
12956
13073
  const session = useAgentStore((s) => s.session);
12957
13074
  const input = useAgentStore((s) => s.input);
@@ -13011,7 +13128,7 @@ function App(props) {
13011
13128
  const activeSessionIdRef = useRef9(null);
13012
13129
  const telemetryRef = useRef9(null);
13013
13130
  const uiStateRef = useRef9(null);
13014
- const [telemetryCollector, setTelemetryCollector] = React14.useState(null);
13131
+ const [telemetryCollector, setTelemetryCollector] = React15.useState(null);
13015
13132
  const applyUpdatedConfig = useCallback12(
13016
13133
  (activeRuntime, updatedConfig) => {
13017
13134
  Object.assign(activeRuntime.config, updatedConfig);
@@ -13078,14 +13195,14 @@ function App(props) {
13078
13195
  recordTokenUsage,
13079
13196
  resetMetrics
13080
13197
  });
13081
- useEffect12(() => {
13198
+ useEffect13(() => {
13082
13199
  if (!stdout.isTTY) return;
13083
13200
  stdout.write("\x1B[?1049h\x1B[?25l");
13084
13201
  return () => {
13085
13202
  stdout.write("\x1B[?25h\x1B[?1049l");
13086
13203
  };
13087
13204
  }, [stdout]);
13088
- useEffect12(() => {
13205
+ useEffect13(() => {
13089
13206
  let mounted = true;
13090
13207
  let cleanupRuntime;
13091
13208
  createRuntime({ cwd: props.cwd, configPath: props.config, interactive: true }).then(async (created) => {
@@ -13178,13 +13295,13 @@ function App(props) {
13178
13295
  cleanupRuntime?.();
13179
13296
  };
13180
13297
  }, [activateTelemetrySession, props.cwd, props.config, setApprovals, dispatch]);
13181
- useEffect12(() => {
13298
+ useEffect13(() => {
13182
13299
  if (!currentPlan && sidebarTab === "plan") {
13183
13300
  setSidebarTab("activities");
13184
13301
  }
13185
13302
  }, [currentPlan, sidebarTab, setSidebarTab]);
13186
13303
  const firstApproval = approvals[0];
13187
- useEffect12(() => {
13304
+ useEffect13(() => {
13188
13305
  if (firstApproval?.diff) {
13189
13306
  openPreview(firstApproval.operation, [
13190
13307
  {
@@ -13198,18 +13315,18 @@ function App(props) {
13198
13315
  closePreview();
13199
13316
  }
13200
13317
  }, [firstApproval?.id, firstApproval?.diff]);
13201
- useEffect12(() => {
13318
+ useEffect13(() => {
13202
13319
  useAgentStore.getState().setSelectedSlashCommandIndex(0);
13203
13320
  useAgentStore.getState().setSlashMenuDismissed(false);
13204
13321
  }, [input]);
13205
- useEffect12(() => {
13322
+ useEffect13(() => {
13206
13323
  if (!session) return;
13207
13324
  const cs = useConfigStore.getState();
13208
13325
  cs.setActiveProvider(session.provider);
13209
13326
  cs.setActiveModel(session.model ?? "");
13210
13327
  cs.setAgentMode(agentMode);
13211
13328
  }, [session?.provider, session?.model, agentMode]);
13212
- useEffect12(() => {
13329
+ useEffect13(() => {
13213
13330
  const cs = useConfigStore.getState();
13214
13331
  cs.setGitBranch(gitStatus.branch);
13215
13332
  cs.setGitStatus(gitStatus.status);
@@ -13269,7 +13386,7 @@ function App(props) {
13269
13386
  };
13270
13387
  void uiStateRef.current.save(stateToSave);
13271
13388
  }, [session]);
13272
- useInput17((inputChar, key) => {
13389
+ useInput19((inputChar, key) => {
13273
13390
  if (key.ctrl && inputChar === "q") {
13274
13391
  saveUIState();
13275
13392
  abortRef.current?.abort();
@@ -13604,18 +13721,18 @@ function App(props) {
13604
13721
  setPendingInput("");
13605
13722
  }
13606
13723
  if (error) {
13607
- return /* @__PURE__ */ jsxs31(Box30, { flexDirection: "column", children: [
13608
- /* @__PURE__ */ jsx31(Text30, { color: theme.error, bold: true, children: t("appDeepCodeError") }),
13609
- /* @__PURE__ */ jsx31(Text30, { children: error })
13724
+ return /* @__PURE__ */ jsxs33(Box32, { flexDirection: "column", children: [
13725
+ /* @__PURE__ */ jsx33(Text32, { color: theme.error, bold: true, children: t("appDeepCodeError") }),
13726
+ /* @__PURE__ */ jsx33(Text32, { children: error })
13610
13727
  ] });
13611
13728
  }
13612
13729
  if (!runtime || !session) {
13613
- return /* @__PURE__ */ jsx31(Text30, { children: t("loadingDeepCode") });
13730
+ return /* @__PURE__ */ jsx33(Text32, { children: t("loadingDeepCode") });
13614
13731
  }
13615
13732
  const activeApproval = approvals[0];
13616
13733
  const hasParallelTasks = Object.keys(taskBuffers).length > 1;
13617
13734
  const approvalHasDiff = Boolean(activeApproval?.diff);
13618
- const detailPanelContent = detailContent === "timeline" ? /* @__PURE__ */ jsx31(
13735
+ const detailPanelContent = detailContent === "timeline" ? /* @__PURE__ */ jsx33(
13619
13736
  SessionTimeline,
13620
13737
  {
13621
13738
  activities,
@@ -13626,7 +13743,7 @@ function App(props) {
13626
13743
  useUIStore.getState().closePanel("detail");
13627
13744
  }
13628
13745
  }
13629
- ) : detailContent === "config" && runtime ? /* @__PURE__ */ jsx31(
13746
+ ) : detailContent === "config" && runtime ? /* @__PURE__ */ jsx33(
13630
13747
  ConfigPanel,
13631
13748
  {
13632
13749
  runtime,
@@ -13641,13 +13758,33 @@ function App(props) {
13641
13758
  if (field) await saveConfigEdit(runtime, field, value);
13642
13759
  }
13643
13760
  }
13644
- ) : /* @__PURE__ */ jsx31(Box30, { paddingX: 1, paddingY: 1, children: /* @__PURE__ */ jsx31(Text30, { color: theme.fgMuted, dimColor: true, children: t("detailPanelPlaceholder") }) });
13645
- return /* @__PURE__ */ jsx31(
13761
+ ) : detailContent === "diff" ? /* @__PURE__ */ jsx33(
13762
+ DiffDetailPanel,
13763
+ {
13764
+ diff: activeApproval?.diff ?? null,
13765
+ theme,
13766
+ isActive: !activeModal,
13767
+ onClose: () => {
13768
+ setDetailContent("none");
13769
+ useUIStore.getState().closePanel("detail");
13770
+ }
13771
+ }
13772
+ ) : /* @__PURE__ */ jsx33(
13773
+ ToolInspector,
13774
+ {
13775
+ toolCalls,
13776
+ toolExecuting,
13777
+ theme,
13778
+ isActive: detailContent === "none" && !activeModal,
13779
+ onClose: () => useUIStore.getState().closePanel("detail")
13780
+ }
13781
+ );
13782
+ return /* @__PURE__ */ jsx33(
13646
13783
  AppLayout,
13647
13784
  {
13648
13785
  height: stdout.rows,
13649
13786
  theme,
13650
- header: /* @__PURE__ */ jsx31(
13787
+ header: /* @__PURE__ */ jsx33(
13651
13788
  Header,
13652
13789
  {
13653
13790
  provider: activeModeSelection?.provider ?? activeProviderId,
@@ -13657,7 +13794,7 @@ function App(props) {
13657
13794
  providerStatus: activeProviderStatus
13658
13795
  }
13659
13796
  ),
13660
- contextPanel: contextView === "files" ? /* @__PURE__ */ jsx31(FileTreePanel, { files: fileTree, theme, cwd: props.cwd }) : /* @__PURE__ */ jsx31(
13797
+ contextPanel: contextView === "files" ? /* @__PURE__ */ jsx33(FileTreePanel, { files: fileTree, theme, cwd: props.cwd }) : /* @__PURE__ */ jsx33(
13661
13798
  Sidebar,
13662
13799
  {
13663
13800
  theme,
@@ -13688,8 +13825,8 @@ function App(props) {
13688
13825
  }
13689
13826
  ),
13690
13827
  detailPanel: detailPanelContent,
13691
- executionPanel: /* @__PURE__ */ jsxs31(Box30, { flexDirection: "column", flexGrow: 1, children: [
13692
- activeModal === "provider" && /* @__PURE__ */ jsx31(ErrorBoundary, { theme, onReset: () => setActiveModal(null), children: /* @__PURE__ */ jsx31(
13828
+ executionPanel: /* @__PURE__ */ jsxs33(Box32, { flexDirection: "column", flexGrow: 1, children: [
13829
+ activeModal === "provider" && /* @__PURE__ */ jsx33(ErrorBoundary, { theme, onReset: () => setActiveModal(null), children: /* @__PURE__ */ jsx33(
13693
13830
  ProviderModal,
13694
13831
  {
13695
13832
  theme,
@@ -13775,7 +13912,7 @@ function App(props) {
13775
13912
  }
13776
13913
  }
13777
13914
  ) }),
13778
- activeModal === "model" && /* @__PURE__ */ jsx31(ErrorBoundary, { theme, onReset: () => setActiveModal(null), children: /* @__PURE__ */ jsx31(
13915
+ activeModal === "model" && /* @__PURE__ */ jsx33(ErrorBoundary, { theme, onReset: () => setActiveModal(null), children: /* @__PURE__ */ jsx33(
13779
13916
  ModelSelector,
13780
13917
  {
13781
13918
  theme,
@@ -13821,7 +13958,7 @@ function App(props) {
13821
13958
  onClose: () => setActiveModal(null)
13822
13959
  }
13823
13960
  ) }),
13824
- activeModal === "telemetry" && /* @__PURE__ */ jsx31(ErrorBoundary, { theme, onReset: () => setActiveModal(null), children: /* @__PURE__ */ jsx31(
13961
+ activeModal === "telemetry" && /* @__PURE__ */ jsx33(ErrorBoundary, { theme, onReset: () => setActiveModal(null), children: /* @__PURE__ */ jsx33(
13825
13962
  TelemetryPanel,
13826
13963
  {
13827
13964
  theme,
@@ -13834,7 +13971,7 @@ function App(props) {
13834
13971
  onClose: () => setActiveModal(null)
13835
13972
  }
13836
13973
  ) }),
13837
- showInputPreview && /* @__PURE__ */ jsx31(
13974
+ showInputPreview && /* @__PURE__ */ jsx33(
13838
13975
  InputPreview,
13839
13976
  {
13840
13977
  theme,
@@ -13845,8 +13982,8 @@ function App(props) {
13845
13982
  estimatedTokens
13846
13983
  }
13847
13984
  ),
13848
- githubOAuth.status !== "idle" && /* @__PURE__ */ jsx31(OAuthWizard, { state: githubOAuth, theme }),
13849
- !activeModal && activeApproval && approvalHasDiff && previewState.open && /* @__PURE__ */ jsx31(
13985
+ githubOAuth.status !== "idle" && /* @__PURE__ */ jsx33(OAuthWizard, { state: githubOAuth, theme }),
13986
+ !activeModal && activeApproval && approvalHasDiff && previewState.open && /* @__PURE__ */ jsx33(
13850
13987
  PreviewOverlay,
13851
13988
  {
13852
13989
  summary: previewState.summary,
@@ -13866,7 +14003,7 @@ function App(props) {
13866
14003
  onPrev: prevFile
13867
14004
  }
13868
14005
  ),
13869
- !activeModal && activeApproval && !approvalHasDiff && /* @__PURE__ */ jsx31(
14006
+ !activeModal && activeApproval && !approvalHasDiff && /* @__PURE__ */ jsx33(
13870
14007
  ApprovalPanel,
13871
14008
  {
13872
14009
  request: activeApproval,
@@ -13875,7 +14012,7 @@ function App(props) {
13875
14012
  theme
13876
14013
  }
13877
14014
  ),
13878
- !activeModal && viewMode === "sessions" && /* @__PURE__ */ jsx31(
14015
+ !activeModal && viewMode === "sessions" && /* @__PURE__ */ jsx33(
13879
14016
  SessionSwitcher,
13880
14017
  {
13881
14018
  sessions: sessionList,
@@ -13884,7 +14021,7 @@ function App(props) {
13884
14021
  theme
13885
14022
  }
13886
14023
  ),
13887
- !activeModal && viewMode === "config" && /* @__PURE__ */ jsx31(
14024
+ !activeModal && viewMode === "config" && /* @__PURE__ */ jsx33(
13888
14025
  ConfigEditor,
13889
14026
  {
13890
14027
  runtime,
@@ -13895,9 +14032,9 @@ function App(props) {
13895
14032
  theme
13896
14033
  }
13897
14034
  ),
13898
- !activeModal && viewMode === "help" && /* @__PURE__ */ jsx31(HelpView, { theme }),
13899
- !activeModal && viewMode === "chat" && /* @__PURE__ */ jsxs31(Box30, { flexDirection: "column", flexGrow: 1, paddingX: 1, children: [
13900
- showHistorySearch && /* @__PURE__ */ jsx31(
14035
+ !activeModal && viewMode === "help" && /* @__PURE__ */ jsx33(HelpView, { theme }),
14036
+ !activeModal && viewMode === "chat" && /* @__PURE__ */ jsxs33(Box32, { flexDirection: "column", flexGrow: 1, paddingX: 1, children: [
14037
+ showHistorySearch && /* @__PURE__ */ jsx33(
13901
14038
  HistorySearch,
13902
14039
  {
13903
14040
  history: useAgentStore.getState().history,
@@ -13907,7 +14044,7 @@ function App(props) {
13907
14044
  onClose: () => setShowHistorySearch(false)
13908
14045
  }
13909
14046
  ),
13910
- hasParallelTasks && /* @__PURE__ */ jsx31(
14047
+ hasParallelTasks && /* @__PURE__ */ jsx33(
13911
14048
  ParallelTasksPanel,
13912
14049
  {
13913
14050
  taskBuffers,
@@ -13915,9 +14052,9 @@ function App(props) {
13915
14052
  theme
13916
14053
  }
13917
14054
  ),
13918
- executionTasks.length > 0 && /* @__PURE__ */ jsx31(TaskProgress, { tasks: executionTasks, theme }),
13919
- currentPlan && streaming && /* @__PURE__ */ jsx31(ProgressMatrix, { plan: currentPlan, theme }),
13920
- /* @__PURE__ */ jsx31(Box30, { flexDirection: "column", flexGrow: 1, children: visibleMessages.length === 0 && !streaming ? /* @__PURE__ */ jsx31(
14055
+ executionTasks.length > 0 && /* @__PURE__ */ jsx33(TaskProgress, { tasks: executionTasks, theme }),
14056
+ currentPlan && streaming && /* @__PURE__ */ jsx33(ProgressMatrix, { plan: currentPlan, theme }),
14057
+ /* @__PURE__ */ jsx33(Box32, { flexDirection: "column", flexGrow: 1, children: visibleMessages.length === 0 && !streaming ? /* @__PURE__ */ jsx33(
13921
14058
  EmptyChatState,
13922
14059
  {
13923
14060
  theme,
@@ -13928,8 +14065,8 @@ function App(props) {
13928
14065
  buildSelection: buildModeSelection,
13929
14066
  approvalCount: approvals.length
13930
14067
  }
13931
- ) : /* @__PURE__ */ jsxs31(Fragment6, { children: [
13932
- /* @__PURE__ */ jsx31(
14068
+ ) : /* @__PURE__ */ jsxs33(Fragment7, { children: [
14069
+ /* @__PURE__ */ jsx33(
13933
14070
  MessageList,
13934
14071
  {
13935
14072
  messages: visibleMessages,
@@ -13940,9 +14077,9 @@ function App(props) {
13940
14077
  vimMode
13941
14078
  }
13942
14079
  ),
13943
- approvals.length > 0 && activeApproval && /* @__PURE__ */ jsx31(ChatApprovalIndicator, { request: activeApproval, theme })
14080
+ approvals.length > 0 && activeApproval && /* @__PURE__ */ jsx33(ChatApprovalIndicator, { request: activeApproval, theme })
13944
14081
  ] }) }),
13945
- showSlashMenu && /* @__PURE__ */ jsx31(
14082
+ showSlashMenu && /* @__PURE__ */ jsx33(
13946
14083
  SlashCommandMenu,
13947
14084
  {
13948
14085
  commands: slashCommandSuggestions,
@@ -13950,7 +14087,7 @@ function App(props) {
13950
14087
  theme
13951
14088
  }
13952
14089
  ),
13953
- !showSlashMenu && !showHistorySearch && autocompleteSuggestions.length > 0 && /* @__PURE__ */ jsx31(
14090
+ !showSlashMenu && !showHistorySearch && autocompleteSuggestions.length > 0 && /* @__PURE__ */ jsx33(
13954
14091
  CommandSuggestions,
13955
14092
  {
13956
14093
  commands: [],
@@ -13959,7 +14096,7 @@ function App(props) {
13959
14096
  theme
13960
14097
  }
13961
14098
  ),
13962
- /* @__PURE__ */ jsx31(
14099
+ /* @__PURE__ */ jsx33(
13963
14100
  InputField,
13964
14101
  {
13965
14102
  value: input,
@@ -13973,7 +14110,7 @@ function App(props) {
13973
14110
  )
13974
14111
  ] })
13975
14112
  ] }),
13976
- statusBar: /* @__PURE__ */ jsx31(
14113
+ statusBar: /* @__PURE__ */ jsx33(
13977
14114
  StatusBar,
13978
14115
  {
13979
14116
  theme,
@@ -14103,7 +14240,7 @@ function createProgram() {
14103
14240
  });
14104
14241
  });
14105
14242
  program.command("chat", { isDefault: true }).description("open the terminal UI").action(() => {
14106
- render(React15.createElement(App, { cwd: program.opts().cwd, config: program.opts().config }));
14243
+ render(React16.createElement(App, { cwd: program.opts().cwd, config: program.opts().config }));
14107
14244
  });
14108
14245
  return program;
14109
14246
  }