@trydecember/cli 0.2.21 → 0.2.22

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 (2) hide show
  1. package/dist/december.js +936 -1031
  2. package/package.json +1 -1
package/dist/december.js CHANGED
@@ -182404,23 +182404,36 @@ function parseErrorMessage(err) {
182404
182404
  return null;
182405
182405
  };
182406
182406
  const extracted = extractMessage(errMsg);
182407
- if (extracted && extracted !== "[object Object]")
182408
- return extracted;
182409
- if (errMsg === "[object Object]" && err && typeof err === "object") {
182410
- try {
182411
- const inspected = util5.inspect(err);
182412
- if (inspected && inspected !== "{}" && inspected !== "{ cause: {} }") {
182413
- return inspected;
182414
- }
182415
- } catch {}
182407
+ let finalResult = extracted && extracted !== "[object Object]" ? extracted : "";
182408
+ if (!finalResult) {
182409
+ if (errMsg === "[object Object]" && err && typeof err === "object") {
182410
+ try {
182411
+ const inspected = util5.inspect(err);
182412
+ if (inspected && inspected !== "{}" && inspected !== "{ cause: {} }") {
182413
+ finalResult = inspected;
182414
+ }
182415
+ } catch {}
182416
+ }
182416
182417
  }
182417
- const result2 = errMsg.replace(/^\[.*?Error\]:\s*/, "").trim();
182418
- if (result2 === `{
182418
+ if (!finalResult) {
182419
+ const cleaned = errMsg.replace(/^\[.*?Error\]:\s*/, "").trim();
182420
+ if (cleaned === `{
182419
182421
  "cause": {}
182420
- }` || result2 === '{"cause":{}}' || result2 === "{}" || result2 === "{ cause: {} }") {
182421
- return "An unknown error occurred while communicating with the model provider.";
182422
+ }` || cleaned === '{"cause":{}}' || cleaned === "{}" || cleaned === "{ cause: {} }") {
182423
+ finalResult = "An unknown error occurred while communicating with the model provider.";
182424
+ } else {
182425
+ finalResult = cleaned;
182426
+ }
182422
182427
  }
182423
- return result2;
182428
+ const rateLimitNotice = `Rate limit or quota exhausted from LLM provider. Please upgrade your API key tier with your provider (OpenAI, Anthropic, Gemini) or switch to December Cloud Subscription at https://trydecember.com/pricing
182429
+
182430
+ `;
182431
+ const lowerStr = (errMsg + " " + (finalResult || "")).toLowerCase();
182432
+ const isRateLimit = lowerStr.includes("429") || lowerStr.includes("quota") || lowerStr.includes("rate limit") || lowerStr.includes("rate_limit") || lowerStr.includes("resource_exhausted") || lowerStr.includes("generativelanguage.googleapis.com");
182433
+ if (isRateLimit && !finalResult.includes("Rate limit or quota exhausted from LLM provider")) {
182434
+ return rateLimitNotice + finalResult;
182435
+ }
182436
+ return finalResult;
182424
182437
  }
182425
182438
  var init_error_parser = () => {};
182426
182439
 
@@ -196206,6 +196219,10 @@ function openaiProvider(baseURL, apiKey, defaultHeaders) {
196206
196219
  const choice = chunk.choices[0];
196207
196220
  if (!choice)
196208
196221
  continue;
196222
+ const reasoning = choice.delta.reasoning_content || choice.delta.reasoning || choice.delta.thought || choice.delta.thinking;
196223
+ if (reasoning && typeof reasoning === "string") {
196224
+ yield { type: "thinking_delta", text: reasoning };
196225
+ }
196209
196226
  if (choice.delta.content) {
196210
196227
  yield { type: "text", text: choice.delta.content };
196211
196228
  }
@@ -221420,7 +221437,12 @@ function geminiProvider(apiKey) {
221420
221437
  const parts = chunk.candidates?.[0]?.content?.parts || [];
221421
221438
  let chunkText = "";
221422
221439
  for (const part of parts) {
221423
- if (part.text && typeof part.text === "string") {
221440
+ if (part.thought || part.thoughtText) {
221441
+ const thoughtContent = part.thoughtText || part.text || "";
221442
+ if (thoughtContent) {
221443
+ yield { type: "thinking_delta", text: thoughtContent };
221444
+ }
221445
+ } else if (part.text && typeof part.text === "string") {
221424
221446
  chunkText += part.text;
221425
221447
  }
221426
221448
  }
@@ -222253,12 +222275,15 @@ async function streamAssistantResponse(agent, eventQueue, signal) {
222253
222275
  const actualError = error3.error || error3.originalError || error3;
222254
222276
  const status = actualError.status || actualError.statusCode || error3.status;
222255
222277
  const msg = (actualError.message || error3.message || String(actualError)).toLowerCase();
222278
+ const isHighDemand = status === 503 || status === 529 || msg.includes("503") || msg.includes("529") || msg.includes("high demand") || msg.includes("overloaded") || msg.includes("capacity");
222256
222279
  const isRateLimit = status === 429 || msg.includes("429") || msg.includes("quota") || msg.includes("rate limit") || msg.includes("rate_limit");
222257
- if (isRateLimit) {
222280
+ if (isHighDemand || isRateLimit) {
222258
222281
  const delaySeconds = Math.round(Math.pow(2, error3.attemptNumber - 1) * 2);
222282
+ const hitType = isHighDemand ? "LLM Provider high demand" : "LLM Provider rate limit";
222259
222283
  eventQueue.push({
222260
222284
  type: "AgentStatus",
222261
- message: `Rate limit hit, waiting ~${delaySeconds}s to retry... (${error3.retriesLeft} retries left)`
222285
+ message: `${hitType} hit. Retrying in ~${delaySeconds}s... (${error3.retriesLeft} retries left)
222286
+ `
222262
222287
  });
222263
222288
  } else {
222264
222289
  const errStr = formatError(error3);
@@ -222294,15 +222319,23 @@ Interrupted · What should December do instead?`,
222294
222319
  await agent.saveContext();
222295
222320
  return { assistantMessage, toolCalls, error: "Aborted" };
222296
222321
  }
222297
- if (errorMsg.includes("429") || errorMsg.toLowerCase().includes("quota") || errorMsg.toLowerCase().includes("rate limit")) {
222298
- errorMsg = `Rate limit exhausted after multiple retries. Please wait a few minutes or provide a different API key.
222322
+ if (errorMsg.includes("402") || errorMsg.toLowerCase().includes("insufficient credits")) {
222323
+ errorMsg = `Insufficient credits in December Wallet. Please add credits at https://trydecember.com/settings/billing to continue using December Cloud.
222324
+
222325
+ ` + errorMsg;
222326
+ } else if (errorMsg.includes("429") || errorMsg.toLowerCase().includes("quota") || errorMsg.toLowerCase().includes("rate limit")) {
222327
+ errorMsg = `Rate limit or quota exhausted from LLM provider. Please upgrade your API key tier with your provider (OpenAI, Anthropic, Gemini) or switch to December Cloud Subscription at https://trydecember.com/pricing
222328
+
222329
+ ` + errorMsg;
222330
+ } else if (errorMsg.includes("503") || errorMsg.includes("529") || errorMsg.toLowerCase().includes("high demand") || errorMsg.toLowerCase().includes("overloaded") || errorMsg.toLowerCase().includes("capacity")) {
222331
+ errorMsg = `This model is currently experiencing high demand or capacity limits from the provider. Spikes in demand are usually temporary. Please try again in a few moments or switch to a different model at https://trydecember.com/pricing
222299
222332
 
222300
222333
  ` + errorMsg;
222301
222334
  }
222302
222335
  eventQueue.push({ type: "AgentError", error: errorMsg });
222303
222336
  agent.addMessage({
222304
222337
  role: "assistant",
222305
- content: `Failed due to API error: ${errorMsg}`,
222338
+ content: errorMsg,
222306
222339
  isUI: true,
222307
222340
  errorMessage: errorMsg
222308
222341
  });
@@ -222417,11 +222450,15 @@ You operate across two environments seamlessly: locally via a terminal CLI, and
222417
222450
 
222418
222451
  Guidelines:
222419
222452
  - Plan carefully before making broad changes.
222420
- - Use bash tools to explore the environment before guessing file paths.
222453
+ - Code & Symbol Search: Use 'grep_search' to find functions, error strings, symbols, or imports across files instead of reading files one by one.
222454
+ - File Discovery: Use 'find_files' with glob patterns (e.g. "**/*.ts") to locate matching files instead of stepping through folders with list_dir.
222455
+ - File Editing: Use 'edit_file' or 'edit_diff' when modifying existing files to preserve untouched lines. Use 'write_file' primarily for creating new files.
222456
+ - Web & Docs: Use 'web_search' to look up current documentation, library APIs, or external error tracebacks.
222457
+ - Background Tasks: Use 'manage_task' to monitor or stop background processes started by bash.
222421
222458
  - Be extremely concise in your responses. The user is a developer who values speed and exactness.
222422
222459
  - ALWAYS show absolute file paths when viewing or editing files.
222423
222460
  - Before using a tool, you MUST enclose your thought process inside <thought>...</thought> tags.
222424
- - At the end of your work, provide a summary of what you did, highlighting important keywords.`);
222461
+ - At the end of your work, provide a concise summary of what you did (4-5 lines maximum, written as a single cohesive paragraph), highlighting key actions and results.`);
222425
222462
  const rules = this.discoverRules();
222426
222463
  let finalPrompt = `${systemPrompt}
222427
222464
 
@@ -225243,17 +225280,44 @@ var editSchema = Type2.Object({
225243
225280
  });
225244
225281
  var EditFileTool = {
225245
225282
  name: "edit_file",
225246
- description: "Edits an existing file by searching for a specific block of text (targetContent) and replacing it exactly with replacementContent. targetContent must match exactly.",
225283
+ description: "Edits an existing file by searching for a specific block of text (targetContent) and replacing it with replacementContent. Preserves unchanged lines.",
225247
225284
  inputSchema: editSchema,
225248
225285
  execute: async ({ path: path8, targetContent, replacementContent }, context) => {
225249
225286
  try {
225250
225287
  const content = await context.operations.fs.readFile(path8);
225251
- if (!content.includes(targetContent)) {
225252
- return `Error: targetContent not found in file. Ensure exact whitespace and line breaks match.`;
225288
+ if (content.includes(targetContent)) {
225289
+ const updated = content.replace(targetContent, replacementContent);
225290
+ await context.operations.fs.writeFile(path8, updated);
225291
+ return `Successfully edited file: ${path8}`;
225253
225292
  }
225254
- const updated = content.replace(targetContent, replacementContent);
225255
- await context.operations.fs.writeFile(path8, updated);
225256
- return `Successfully edited file: ${path8}`;
225293
+ const contentLines = content.replace(/\r\n/g, `
225294
+ `).split(`
225295
+ `);
225296
+ const targetLines = targetContent.replace(/\r\n/g, `
225297
+ `).split(`
225298
+ `).map((l) => l.trimEnd());
225299
+ if (targetLines.length > 0) {
225300
+ const targetLen = targetLines.length;
225301
+ for (let i2 = 0;i2 <= contentLines.length - targetLen; i2++) {
225302
+ let match2 = true;
225303
+ for (let j = 0;j < targetLen; j++) {
225304
+ const line = contentLines[i2 + j];
225305
+ if (!line || line.trimEnd() !== targetLines[j]) {
225306
+ match2 = false;
225307
+ break;
225308
+ }
225309
+ }
225310
+ if (match2) {
225311
+ const originalLines = content.split(/\r?\n/);
225312
+ originalLines.splice(i2, targetLen, ...replacementContent.split(/\r?\n/));
225313
+ const updated = originalLines.join(`
225314
+ `);
225315
+ await context.operations.fs.writeFile(path8, updated);
225316
+ return `Successfully edited file (matched with normalized whitespace): ${path8}`;
225317
+ }
225318
+ }
225319
+ }
225320
+ return `Error: targetContent not found in file '${path8}'. Ensure line breaks and indentation match, or view the file using read_file.`;
225257
225321
  } catch (error3) {
225258
225322
  return `Failed to edit file: ${error3.message}`;
225259
225323
  }
@@ -225824,15 +225888,18 @@ var EditDiffTool = {
225824
225888
  execute: async ({ path: path8, diff }, context) => {
225825
225889
  try {
225826
225890
  const content = await context.operations.fs.readFile(path8);
225827
- let formattedDiff = diff;
225891
+ let formattedDiff = diff.replace(/\r\n/g, `
225892
+ `);
225828
225893
  if (!formattedDiff.startsWith("--- ")) {
225829
225894
  formattedDiff = `--- a/${path8}
225830
225895
  +++ b/${path8}
225831
225896
  ` + formattedDiff;
225832
225897
  }
225833
- const updated = applyPatch(content, formattedDiff);
225898
+ const normalizedContent = content.replace(/\r\n/g, `
225899
+ `);
225900
+ const updated = applyPatch(normalizedContent, formattedDiff);
225834
225901
  if (updated === false) {
225835
- return `Error: Failed to apply unified diff patch. Ensure the context lines match the existing file exactly.`;
225902
+ return `Error: Failed to apply unified diff patch to '${path8}'. Ensure context lines match the existing file exactly, or use edit_file instead.`;
225836
225903
  }
225837
225904
  await context.operations.fs.writeFile(path8, updated);
225838
225905
  return `Successfully patched file: ${path8}`;
@@ -225851,9 +225918,17 @@ var FindFilesTool = {
225851
225918
  inputSchema: findSchema,
225852
225919
  execute: async ({ pattern }, context) => {
225853
225920
  try {
225854
- const result = await context.operations.search.find(".", pattern);
225921
+ let normalizedPattern = pattern.trim();
225922
+ if (!normalizedPattern.includes("*") && !normalizedPattern.includes("?")) {
225923
+ if (normalizedPattern.endsWith("/") || normalizedPattern.endsWith("\\")) {
225924
+ normalizedPattern = `${normalizedPattern}**/*`;
225925
+ } else {
225926
+ normalizedPattern = `**/*${normalizedPattern}*`;
225927
+ }
225928
+ }
225929
+ const result = await context.operations.search.find(".", normalizedPattern);
225855
225930
  if (!result)
225856
- return "No files found matching pattern.";
225931
+ return `No files found matching pattern '${pattern}'.`;
225857
225932
  return truncateOutput(result, 1e4, 100).text;
225858
225933
  } catch (error3) {
225859
225934
  return `Error finding files: ${error3.message}`;
@@ -248022,25 +248097,6 @@ var getInstance = (stdout, createInstance) => {
248022
248097
  var import_constants5 = __toESM(require_constants8(), 1);
248023
248098
  // ../../node_modules/.bun/ink@7.1.0+90ffd46201e3176f/node_modules/ink/build/components/Static.js
248024
248099
  var import_react17 = __toESM(require_react(), 1);
248025
- function Static15(props) {
248026
- const { items, children: render4, style: customStyle } = props;
248027
- const [index2, setIndex] = import_react17.useState(0);
248028
- const itemsToRender = import_react17.useMemo(() => {
248029
- return items.slice(index2);
248030
- }, [items, index2]);
248031
- import_react17.useLayoutEffect(() => {
248032
- setIndex(items.length);
248033
- }, [items.length]);
248034
- const children2 = itemsToRender.map((item, itemIndex) => {
248035
- return render4(item, index2 + itemIndex);
248036
- });
248037
- const style = import_react17.useMemo(() => ({
248038
- position: "absolute",
248039
- flexDirection: "column",
248040
- ...customStyle
248041
- }), [customStyle]);
248042
- return import_react17.default.createElement("ink-box", { internal_static: true, style }, children2);
248043
- }
248044
248100
  // ../../node_modules/.bun/ink@7.1.0+90ffd46201e3176f/node_modules/ink/build/components/Transform.js
248045
248101
  var import_react18 = __toESM(require_react(), 1);
248046
248102
  // ../../node_modules/.bun/ink@7.1.0+90ffd46201e3176f/node_modules/ink/build/components/Newline.js
@@ -248765,7 +248821,7 @@ function useToast() {
248765
248821
  }
248766
248822
  return value;
248767
248823
  }
248768
- function ToastProvider({ children: children2 }) {
248824
+ function ToastProvider({ children: children2, onToast }) {
248769
248825
  const [currentToast, setCurrentToast] = import_react37.useState(null);
248770
248826
  const timeoutHandleRef = import_react37.useRef(null);
248771
248827
  const clearCurrentTimeout = import_react37.useCallback(() => {
@@ -248777,15 +248833,19 @@ function ToastProvider({ children: children2 }) {
248777
248833
  const show = import_react37.useCallback((options) => {
248778
248834
  const duration3 = options.duration ?? DEFAULT_DURATION;
248779
248835
  clearCurrentTimeout();
248780
- setCurrentToast({
248836
+ const toastObj = {
248781
248837
  variant: options.variant ?? "info",
248782
248838
  ...options,
248783
248839
  duration: duration3
248784
- });
248840
+ };
248841
+ setCurrentToast(toastObj);
248842
+ if (onToast) {
248843
+ onToast(toastObj);
248844
+ }
248785
248845
  timeoutHandleRef.current = setTimeout(() => {
248786
248846
  setCurrentToast(null);
248787
248847
  }, duration3);
248788
- }, [clearCurrentTimeout]);
248848
+ }, [clearCurrentTimeout, onToast]);
248789
248849
  const value = {
248790
248850
  currentToast,
248791
248851
  show
@@ -248798,7 +248858,7 @@ function ToastProvider({ children: children2 }) {
248798
248858
 
248799
248859
  // ../../packages/tui/src/components/command-menu/commands.tsx
248800
248860
  init_clipboard();
248801
- import { execSync, exec as exec3, spawn as spawn4 } from "child_process";
248861
+ import { execSync, exec as exec3 } from "child_process";
248802
248862
  import fs9 from "node:fs";
248803
248863
  import os4 from "node:os";
248804
248864
  import path8 from "node:path";
@@ -249067,7 +249127,7 @@ var COMMANDS = [
249067
249127
  description: "Update to the latest version",
249068
249128
  value: "/update",
249069
249129
  action: (ctx) => {
249070
- ctx.toast.show({ message: "Updating CLI... The app will automatically restart." });
249130
+ ctx.toast.show({ message: "Updating CLI..." });
249071
249131
  exec3("npm install -g @trydecember/cli", async (err) => {
249072
249132
  if (err) {
249073
249133
  ctx.toast.show({
@@ -249079,13 +249139,10 @@ var COMMANDS = [
249079
249139
  if (ctx.agent) {
249080
249140
  await ctx.agent.saveContext();
249081
249141
  }
249082
- console.clear();
249083
- const child = spawn4(process.argv[0], process.argv.slice(1), {
249084
- stdio: "inherit",
249085
- detached: true
249142
+ ctx.toast.show({
249143
+ variant: "success",
249144
+ message: "December CLI updated successfully! Please restart the CLI in your terminal."
249086
249145
  });
249087
- child.unref();
249088
- ctx.exit();
249089
249146
  });
249090
249147
  }
249091
249148
  },
@@ -249649,11 +249706,13 @@ function InputBar({
249649
249706
  onInterrupt,
249650
249707
  onCopy,
249651
249708
  contextTokens,
249652
- showExitConfirm = false
249709
+ showExitConfirm = false,
249710
+ toasts
249653
249711
  }) {
249654
249712
  const [value, setValue] = import_react41.useState("");
249655
249713
  const toast = useToast();
249656
249714
  const dialog = useDialog();
249715
+ const activeToast = toasts && toasts.length > 0 ? toasts[toasts.length - 1] : toast.currentToast ? { message: toast.currentToast.message, variant: toast.currentToast.variant } : null;
249657
249716
  const {
249658
249717
  showCommandMenu,
249659
249718
  commandQuery,
@@ -249758,6 +249817,7 @@ function InputBar({
249758
249817
  return /* @__PURE__ */ jsx_dev_runtime7.jsxDEV(Box_default, {
249759
249818
  flexDirection: "column",
249760
249819
  paddingX: 2,
249820
+ marginTop: 1,
249761
249821
  children: [
249762
249822
  dialog.isOpen && dialog.currentDialog && /* @__PURE__ */ jsx_dev_runtime7.jsxDEV(Box_default, {
249763
249823
  justifyContent: "flex-end",
@@ -249811,48 +249871,50 @@ function InputBar({
249811
249871
  children: sep4
249812
249872
  }, undefined, false, undefined, this)
249813
249873
  }, undefined, false, undefined, this),
249814
- !showCommandMenu && !showShortcutsMenu && !authUI && /* @__PURE__ */ jsx_dev_runtime7.jsxDEV(Box_default, {
249874
+ !showCommandMenu && !showShortcutsMenu && /* @__PURE__ */ jsx_dev_runtime7.jsxDEV(Box_default, {
249815
249875
  width: "100%",
249816
249876
  justifyContent: "space-between",
249817
249877
  children: [
249818
249878
  /* @__PURE__ */ jsx_dev_runtime7.jsxDEV(Box_default, {
249819
249879
  gap: 2,
249820
249880
  alignItems: "center",
249821
- children: [
249822
- /* @__PURE__ */ jsx_dev_runtime7.jsxDEV(Box_default, {
249823
- gap: 1,
249824
- children: [
249825
- /* @__PURE__ */ jsx_dev_runtime7.jsxDEV(Text3, {
249826
- color: "#AAAAAA",
249827
- children: [
249828
- activeModel,
249829
- hasBothAuth && authMethod ? ` (via ${authMethod === "december" ? "December Cloud" : "BYOK"})` : ""
249830
- ]
249831
- }, undefined, true, undefined, this),
249832
- showExitConfirm ? /* @__PURE__ */ jsx_dev_runtime7.jsxDEV(Text3, {
249833
- color: "gray",
249834
- children: "· Press Ctrl+C again to exit"
249835
- }, undefined, false, undefined, this) : contextTokens !== undefined && contextTokens > 0 && /* @__PURE__ */ jsx_dev_runtime7.jsxDEV(Text3, {
249836
- color: "#AAAAAA",
249837
- children: [
249838
- "· ",
249839
- contextTokens,
249840
- " tokens"
249841
- ]
249842
- }, undefined, true, undefined, this)
249843
- ]
249844
- }, undefined, true, undefined, this),
249845
- toast.currentToast && /* @__PURE__ */ jsx_dev_runtime7.jsxDEV(Box_default, {
249846
- gap: 1,
249847
- children: /* @__PURE__ */ jsx_dev_runtime7.jsxDEV(Text3, {
249848
- color: toast.currentToast.variant === "success" ? "#6EE7B7" : toast.currentToast.variant === "error" ? "#FCA5A5" : "gray",
249849
- children: toast.currentToast.message
249850
- }, undefined, false, undefined, this)
249851
- }, undefined, false, undefined, this)
249852
- ]
249853
- }, undefined, true, undefined, this),
249881
+ flexShrink: 1,
249882
+ children: /* @__PURE__ */ jsx_dev_runtime7.jsxDEV(Box_default, {
249883
+ gap: 1,
249884
+ flexShrink: 1,
249885
+ children: [
249886
+ /* @__PURE__ */ jsx_dev_runtime7.jsxDEV(Text3, {
249887
+ color: "#AAAAAA",
249888
+ children: [
249889
+ activeModel,
249890
+ hasBothAuth && authMethod ? ` (via ${authMethod === "december" ? "December Cloud" : "BYOK"})` : ""
249891
+ ]
249892
+ }, undefined, true, undefined, this),
249893
+ activeToast ? /* @__PURE__ */ jsx_dev_runtime7.jsxDEV(Text3, {
249894
+ wrap: "truncate",
249895
+ color: activeToast.variant === "success" ? "#6EE7B7" : activeToast.variant === "error" ? "#FCA5A5" : "gray",
249896
+ children: [
249897
+ "· ",
249898
+ activeToast.message.replace(/\s+/g, " ").trim()
249899
+ ]
249900
+ }, undefined, true, undefined, this) : showExitConfirm ? /* @__PURE__ */ jsx_dev_runtime7.jsxDEV(Text3, {
249901
+ color: "gray",
249902
+ children: "· Press Ctrl+C again to exit"
249903
+ }, undefined, false, undefined, this) : contextTokens !== undefined && contextTokens > 0 && /* @__PURE__ */ jsx_dev_runtime7.jsxDEV(Text3, {
249904
+ color: "#AAAAAA",
249905
+ children: [
249906
+ "· ",
249907
+ contextTokens,
249908
+ " tokens"
249909
+ ]
249910
+ }, undefined, true, undefined, this)
249911
+ ]
249912
+ }, undefined, true, undefined, this)
249913
+ }, undefined, false, undefined, this),
249854
249914
  /* @__PURE__ */ jsx_dev_runtime7.jsxDEV(Box_default, {
249855
249915
  gap: 0,
249916
+ flexShrink: 0,
249917
+ marginLeft: 2,
249856
249918
  children: /* @__PURE__ */ jsx_dev_runtime7.jsxDEV(Text3, {
249857
249919
  color: "#AAAAAA",
249858
249920
  children: "? for shortcuts"
@@ -249885,22 +249947,7 @@ function InputBar({
249885
249947
  }, undefined, true, undefined, this);
249886
249948
  }
249887
249949
  // ../../packages/tui/src/components/messages/bot-message.tsx
249888
- var import_react45 = __toESM(require_react(), 1);
249889
-
249890
- // ../../packages/tui/src/components/pill.tsx
249891
- var jsx_dev_runtime8 = __toESM(require_jsx_dev_runtime(), 1);
249892
- function Pill({ label, color = "white", backgroundColor = "#333333", dimColor }) {
249893
- return /* @__PURE__ */ jsx_dev_runtime8.jsxDEV(Box_default, {
249894
- backgroundColor,
249895
- paddingX: 1,
249896
- marginX: 1,
249897
- children: /* @__PURE__ */ jsx_dev_runtime8.jsxDEV(Text3, {
249898
- color,
249899
- dimColor,
249900
- children: label
249901
- }, undefined, false, undefined, this)
249902
- }, undefined, false, undefined, this);
249903
- }
249950
+ var import_react44 = __toESM(require_react(), 1);
249904
249951
 
249905
249952
  // ../../node_modules/.bun/ink-spinner@5.0.0+99d24c251f842efe/node_modules/ink-spinner/build/index.js
249906
249953
  var import_react42 = __toESM(require_react(), 1);
@@ -249924,30 +249971,26 @@ function Spinner({ type = "dots" }) {
249924
249971
  var build_default = Spinner;
249925
249972
 
249926
249973
  // ../../packages/tui/src/components/spinner.tsx
249927
- var jsx_dev_runtime9 = __toESM(require_jsx_dev_runtime(), 1);
249974
+ var jsx_dev_runtime8 = __toESM(require_jsx_dev_runtime(), 1);
249928
249975
  function Spinner2({ label }) {
249929
- return /* @__PURE__ */ jsx_dev_runtime9.jsxDEV(Box_default, {
249976
+ return /* @__PURE__ */ jsx_dev_runtime8.jsxDEV(Box_default, {
249930
249977
  gap: 1,
249931
249978
  alignItems: "center",
249932
249979
  children: [
249933
- /* @__PURE__ */ jsx_dev_runtime9.jsxDEV(Text3, {
249934
- dimColor: true,
249935
- color: "cyan",
249936
- children: /* @__PURE__ */ jsx_dev_runtime9.jsxDEV(build_default, {
249980
+ /* @__PURE__ */ jsx_dev_runtime8.jsxDEV(Text3, {
249981
+ color: "gray",
249982
+ children: /* @__PURE__ */ jsx_dev_runtime8.jsxDEV(build_default, {
249937
249983
  type: "dots"
249938
249984
  }, undefined, false, undefined, this)
249939
249985
  }, undefined, false, undefined, this),
249940
- label && /* @__PURE__ */ jsx_dev_runtime9.jsxDEV(Text3, {
249941
- dimColor: true,
249986
+ label && /* @__PURE__ */ jsx_dev_runtime8.jsxDEV(Text3, {
249987
+ color: "gray",
249942
249988
  children: label
249943
249989
  }, undefined, false, undefined, this)
249944
249990
  ]
249945
249991
  }, undefined, true, undefined, this);
249946
249992
  }
249947
249993
 
249948
- // ../../packages/tui/src/components/messages/smooth-markdown.tsx
249949
- var import_react44 = __toESM(require_react(), 1);
249950
-
249951
249994
  // ../../packages/tui/src/components/markdown.tsx
249952
249995
  var import_cli_highlight = __toESM(require_dist5(), 1);
249953
249996
 
@@ -251286,34 +251329,34 @@ var Yt = x2.lex;
251286
251329
 
251287
251330
  // ../../packages/tui/src/components/markdown.tsx
251288
251331
  var import_react43 = __toESM(require_react(), 1);
251289
- var jsx_dev_runtime10 = __toESM(require_jsx_dev_runtime(), 1);
251332
+ var jsx_dev_runtime9 = __toESM(require_jsx_dev_runtime(), 1);
251290
251333
  var renderToken = (token, index2) => {
251291
251334
  switch (token.type) {
251292
251335
  case "paragraph":
251293
- return /* @__PURE__ */ jsx_dev_runtime10.jsxDEV(Text3, {
251336
+ return /* @__PURE__ */ jsx_dev_runtime9.jsxDEV(Text3, {
251294
251337
  children: token.tokens?.map((t2, i2) => renderToken(t2, i2))
251295
251338
  }, index2, false, undefined, this);
251296
251339
  case "text":
251297
251340
  if ("tokens" in token && token.tokens) {
251298
- return /* @__PURE__ */ jsx_dev_runtime10.jsxDEV(Text3, {
251341
+ return /* @__PURE__ */ jsx_dev_runtime9.jsxDEV(Text3, {
251299
251342
  children: token.tokens.map((t2, i2) => renderToken(t2, i2))
251300
251343
  }, index2, false, undefined, this);
251301
251344
  }
251302
- return /* @__PURE__ */ jsx_dev_runtime10.jsxDEV(Text3, {
251345
+ return /* @__PURE__ */ jsx_dev_runtime9.jsxDEV(Text3, {
251303
251346
  children: token.text || token.raw
251304
251347
  }, index2, false, undefined, this);
251305
251348
  case "strong":
251306
- return /* @__PURE__ */ jsx_dev_runtime10.jsxDEV(Text3, {
251349
+ return /* @__PURE__ */ jsx_dev_runtime9.jsxDEV(Text3, {
251307
251350
  bold: true,
251308
251351
  children: token.tokens?.map((t2, i2) => renderToken(t2, i2))
251309
251352
  }, index2, false, undefined, this);
251310
251353
  case "em":
251311
- return /* @__PURE__ */ jsx_dev_runtime10.jsxDEV(Text3, {
251354
+ return /* @__PURE__ */ jsx_dev_runtime9.jsxDEV(Text3, {
251312
251355
  italic: true,
251313
251356
  children: token.tokens?.map((t2, i2) => renderToken(t2, i2))
251314
251357
  }, index2, false, undefined, this);
251315
251358
  case "codespan":
251316
- return /* @__PURE__ */ jsx_dev_runtime10.jsxDEV(Text3, {
251359
+ return /* @__PURE__ */ jsx_dev_runtime9.jsxDEV(Text3, {
251317
251360
  backgroundColor: "#303030",
251318
251361
  color: "#89B4F8",
251319
251362
  bold: false,
@@ -251327,40 +251370,40 @@ var renderToken = (token, index2) => {
251327
251370
  return null;
251328
251371
  case "code":
251329
251372
  if (token.lang === "mermaid") {
251330
- return /* @__PURE__ */ jsx_dev_runtime10.jsxDEV(Box_default, {
251373
+ return /* @__PURE__ */ jsx_dev_runtime9.jsxDEV(Box_default, {
251331
251374
  flexDirection: "column",
251332
251375
  paddingX: 2,
251333
251376
  paddingY: 1,
251334
251377
  borderStyle: "round",
251335
251378
  borderColor: "#A78BFA",
251336
251379
  children: [
251337
- /* @__PURE__ */ jsx_dev_runtime10.jsxDEV(Text3, {
251380
+ /* @__PURE__ */ jsx_dev_runtime9.jsxDEV(Text3, {
251338
251381
  color: "#A78BFA",
251339
251382
  bold: true,
251340
251383
  children: "Mermaid Diagram"
251341
251384
  }, undefined, false, undefined, this),
251342
- /* @__PURE__ */ jsx_dev_runtime10.jsxDEV(Text3, {
251385
+ /* @__PURE__ */ jsx_dev_runtime9.jsxDEV(Text3, {
251343
251386
  color: "#AAAAAA",
251344
251387
  children: token.text
251345
251388
  }, undefined, false, undefined, this)
251346
251389
  ]
251347
251390
  }, index2, true, undefined, this);
251348
251391
  }
251349
- return /* @__PURE__ */ jsx_dev_runtime10.jsxDEV(CodeBlock, {
251392
+ return /* @__PURE__ */ jsx_dev_runtime9.jsxDEV(CodeBlock, {
251350
251393
  token
251351
251394
  }, index2, false, undefined, this);
251352
251395
  case "list":
251353
- return /* @__PURE__ */ jsx_dev_runtime10.jsxDEV(Box_default, {
251396
+ return /* @__PURE__ */ jsx_dev_runtime9.jsxDEV(Box_default, {
251354
251397
  flexDirection: "column",
251355
251398
  paddingLeft: 1,
251356
- children: token.items.map((item, i2) => /* @__PURE__ */ jsx_dev_runtime10.jsxDEV(Box_default, {
251399
+ children: token.items.map((item, i2) => /* @__PURE__ */ jsx_dev_runtime9.jsxDEV(Box_default, {
251357
251400
  flexDirection: "row",
251358
251401
  children: [
251359
- /* @__PURE__ */ jsx_dev_runtime10.jsxDEV(Text3, {
251402
+ /* @__PURE__ */ jsx_dev_runtime9.jsxDEV(Text3, {
251360
251403
  color: "gray",
251361
251404
  children: "• "
251362
251405
  }, undefined, false, undefined, this),
251363
- /* @__PURE__ */ jsx_dev_runtime10.jsxDEV(Box_default, {
251406
+ /* @__PURE__ */ jsx_dev_runtime9.jsxDEV(Box_default, {
251364
251407
  flexDirection: "column",
251365
251408
  children: item.tokens.map((t2, j2) => renderToken(t2, j2))
251366
251409
  }, undefined, false, undefined, this)
@@ -251368,8 +251411,8 @@ var renderToken = (token, index2) => {
251368
251411
  }, i2, true, undefined, this))
251369
251412
  }, index2, false, undefined, this);
251370
251413
  case "heading":
251371
- return /* @__PURE__ */ jsx_dev_runtime10.jsxDEV(Box_default, {
251372
- children: /* @__PURE__ */ jsx_dev_runtime10.jsxDEV(Text3, {
251414
+ return /* @__PURE__ */ jsx_dev_runtime9.jsxDEV(Box_default, {
251415
+ children: /* @__PURE__ */ jsx_dev_runtime9.jsxDEV(Text3, {
251373
251416
  bold: true,
251374
251417
  color: "white",
251375
251418
  underline: true,
@@ -251377,31 +251420,31 @@ var renderToken = (token, index2) => {
251377
251420
  }, undefined, false, undefined, this)
251378
251421
  }, index2, false, undefined, this);
251379
251422
  case "link":
251380
- return /* @__PURE__ */ jsx_dev_runtime10.jsxDEV(Text3, {
251423
+ return /* @__PURE__ */ jsx_dev_runtime9.jsxDEV(Text3, {
251381
251424
  color: "blue",
251382
251425
  underline: true,
251383
251426
  children: token.tokens?.map((t2, i2) => renderToken(t2, i2))
251384
251427
  }, index2, false, undefined, this);
251385
251428
  case "html":
251386
- return /* @__PURE__ */ jsx_dev_runtime10.jsxDEV(Text3, {
251429
+ return /* @__PURE__ */ jsx_dev_runtime9.jsxDEV(Text3, {
251387
251430
  children: token.text
251388
251431
  }, index2, false, undefined, this);
251389
251432
  case "escape":
251390
- return /* @__PURE__ */ jsx_dev_runtime10.jsxDEV(Text3, {
251433
+ return /* @__PURE__ */ jsx_dev_runtime9.jsxDEV(Text3, {
251391
251434
  children: token.text
251392
251435
  }, index2, false, undefined, this);
251393
251436
  case "table":
251394
- return /* @__PURE__ */ jsx_dev_runtime10.jsxDEV(Box_default, {
251437
+ return /* @__PURE__ */ jsx_dev_runtime9.jsxDEV(Box_default, {
251395
251438
  paddingX: 2,
251396
251439
  paddingY: 1,
251397
251440
  borderStyle: "round",
251398
251441
  borderColor: "#555555",
251399
- children: /* @__PURE__ */ jsx_dev_runtime10.jsxDEV(Text3, {
251442
+ children: /* @__PURE__ */ jsx_dev_runtime9.jsxDEV(Text3, {
251400
251443
  children: token.raw
251401
251444
  }, undefined, false, undefined, this)
251402
251445
  }, index2, false, undefined, this);
251403
251446
  default:
251404
- return /* @__PURE__ */ jsx_dev_runtime10.jsxDEV(Text3, {
251447
+ return /* @__PURE__ */ jsx_dev_runtime9.jsxDEV(Text3, {
251405
251448
  children: token.raw
251406
251449
  }, index2, false, undefined, this);
251407
251450
  }
@@ -251433,43 +251476,43 @@ function CodeBlock({ token }) {
251433
251476
  ignoreIllegals: true
251434
251477
  });
251435
251478
  }, [contentToHighlight, lang]);
251436
- return /* @__PURE__ */ jsx_dev_runtime10.jsxDEV(Box_default, {
251479
+ return /* @__PURE__ */ jsx_dev_runtime9.jsxDEV(Box_default, {
251437
251480
  flexDirection: "column",
251438
251481
  paddingY: 1,
251439
251482
  children: [
251440
- /* @__PURE__ */ jsx_dev_runtime10.jsxDEV(Text3, {
251483
+ /* @__PURE__ */ jsx_dev_runtime9.jsxDEV(Text3, {
251441
251484
  color: isFocused ? "#89B4F8" : "#475569",
251442
251485
  children: topBar
251443
251486
  }, undefined, false, undefined, this),
251444
- /* @__PURE__ */ jsx_dev_runtime10.jsxDEV(Box_default, {
251487
+ /* @__PURE__ */ jsx_dev_runtime9.jsxDEV(Box_default, {
251445
251488
  flexDirection: "column",
251446
251489
  paddingLeft: 2,
251447
- children: /* @__PURE__ */ jsx_dev_runtime10.jsxDEV(Text3, {
251490
+ children: /* @__PURE__ */ jsx_dev_runtime9.jsxDEV(Text3, {
251448
251491
  children: highlighted
251449
251492
  }, undefined, false, undefined, this)
251450
251493
  }, undefined, false, undefined, this),
251451
- isLarge && !expanded ? /* @__PURE__ */ jsx_dev_runtime10.jsxDEV(Box_default, {
251494
+ isLarge && !expanded ? /* @__PURE__ */ jsx_dev_runtime9.jsxDEV(Box_default, {
251452
251495
  flexDirection: "column",
251453
251496
  paddingLeft: 2,
251454
251497
  children: [
251455
- /* @__PURE__ */ jsx_dev_runtime10.jsxDEV(Text3, {
251498
+ /* @__PURE__ */ jsx_dev_runtime9.jsxDEV(Text3, {
251456
251499
  color: "#475569",
251457
251500
  children: "..."
251458
251501
  }, undefined, false, undefined, this),
251459
- /* @__PURE__ */ jsx_dev_runtime10.jsxDEV(Text3, {
251502
+ /* @__PURE__ */ jsx_dev_runtime9.jsxDEV(Text3, {
251460
251503
  color: isFocused ? "#89B4F8" : "#888888",
251461
251504
  children: isFocused ? "> Press Enter to expand (" + (lines.length - 15) + " more lines)" : "... (truncated, tab to focus)"
251462
251505
  }, undefined, false, undefined, this)
251463
251506
  ]
251464
- }, undefined, true, undefined, this) : isLarge && expanded ? /* @__PURE__ */ jsx_dev_runtime10.jsxDEV(Box_default, {
251507
+ }, undefined, true, undefined, this) : isLarge && expanded ? /* @__PURE__ */ jsx_dev_runtime9.jsxDEV(Box_default, {
251465
251508
  flexDirection: "column",
251466
251509
  paddingLeft: 2,
251467
- children: /* @__PURE__ */ jsx_dev_runtime10.jsxDEV(Text3, {
251510
+ children: /* @__PURE__ */ jsx_dev_runtime9.jsxDEV(Text3, {
251468
251511
  color: isFocused ? "#89B4F8" : "#888888",
251469
251512
  children: isFocused ? "> Press Enter to collapse" : ""
251470
251513
  }, undefined, false, undefined, this)
251471
251514
  }, undefined, false, undefined, this) : null,
251472
- /* @__PURE__ */ jsx_dev_runtime10.jsxDEV(Text3, {
251515
+ /* @__PURE__ */ jsx_dev_runtime9.jsxDEV(Text3, {
251473
251516
  color: isFocused ? "#89B4F8" : "#475569",
251474
251517
  children: bottomBar
251475
251518
  }, undefined, false, undefined, this)
@@ -251480,7 +251523,7 @@ function Markdown({ children: children2 }) {
251480
251523
  if (!children2)
251481
251524
  return null;
251482
251525
  const tokens = g.lexer(children2).filter((t2) => t2.type !== "space");
251483
- return /* @__PURE__ */ jsx_dev_runtime10.jsxDEV(Box_default, {
251526
+ return /* @__PURE__ */ jsx_dev_runtime9.jsxDEV(Box_default, {
251484
251527
  flexDirection: "column",
251485
251528
  gap: 1,
251486
251529
  children: tokens.map((token, index2) => renderToken(token, index2))
@@ -251488,115 +251531,80 @@ function Markdown({ children: children2 }) {
251488
251531
  }
251489
251532
 
251490
251533
  // ../../packages/tui/src/components/messages/smooth-markdown.tsx
251491
- var jsx_dev_runtime11 = __toESM(require_jsx_dev_runtime(), 1);
251534
+ var jsx_dev_runtime10 = __toESM(require_jsx_dev_runtime(), 1);
251492
251535
  function SmoothMarkdown({ text: text3, isRunning }) {
251493
- const [displayedText, setDisplayedText] = import_react44.useState(text3);
251494
- import_react44.useEffect(() => {
251495
- if (!isRunning) {
251496
- setDisplayedText(text3);
251497
- return;
251498
- }
251499
- if (displayedText.length >= text3.length) {
251500
- if (displayedText !== text3 && text3.length < displayedText.length) {
251501
- setDisplayedText(text3);
251502
- }
251503
- return;
251504
- }
251505
- const interval = setInterval(() => {
251506
- setDisplayedText((prev2) => {
251507
- if (prev2.length >= text3.length) {
251508
- clearInterval(interval);
251509
- return text3;
251510
- }
251511
- const remaining = text3.length - prev2.length;
251512
- const charsToAdd = Math.max(1, Math.min(3, Math.ceil(remaining / 5)));
251513
- return text3.slice(0, prev2.length + charsToAdd);
251514
- });
251515
- }, 20);
251516
- return () => clearInterval(interval);
251517
- }, [text3, isRunning, displayedText]);
251518
- import_react44.useEffect(() => {
251519
- if (text3.length - displayedText.length > 500) {
251520
- setDisplayedText(text3);
251521
- }
251522
- }, [text3]);
251523
- return /* @__PURE__ */ jsx_dev_runtime11.jsxDEV(Markdown, {
251524
- children: displayedText
251536
+ return /* @__PURE__ */ jsx_dev_runtime10.jsxDEV(Markdown, {
251537
+ children: text3
251525
251538
  }, undefined, false, undefined, this);
251526
251539
  }
251527
251540
 
251528
251541
  // ../../packages/tui/src/components/messages/bot-message.tsx
251529
- var jsx_dev_runtime12 = __toESM(require_jsx_dev_runtime(), 1);
251530
- function CollapsibleThought({ content }) {
251531
- const { isFocused } = use_focus_default({ autoFocus: false });
251532
- const [expanded, setExpanded] = import_react45.useState(false);
251542
+ var jsx_dev_runtime11 = __toESM(require_jsx_dev_runtime(), 1);
251543
+ function CollapsibleThought({ content, isStreaming }) {
251544
+ const [expanded, setExpanded] = import_react44.useState(false);
251545
+ const words2 = content.trim() ? content.trim().split(/\s+/).length : 0;
251546
+ const tokenCount = Math.max(1, Math.round(words2 * 1.33));
251533
251547
  use_input_default((input, key) => {
251534
- if (isFocused && key.return) {
251548
+ if (key.ctrl && input.toLowerCase() === "o" || input === "\x0F") {
251535
251549
  setExpanded((prev2) => !prev2);
251536
251550
  }
251537
251551
  });
251538
- const lines = content.split(`
251539
- `);
251540
- const isLarge = lines.length > 5;
251541
- return /* @__PURE__ */ jsx_dev_runtime12.jsxDEV(Box_default, {
251542
- flexDirection: "row",
251543
- paddingBottom: 1,
251552
+ if (isStreaming) {
251553
+ return /* @__PURE__ */ jsx_dev_runtime11.jsxDEV(Box_default, {
251554
+ flexDirection: "column",
251555
+ marginY: 0.5,
251556
+ children: /* @__PURE__ */ jsx_dev_runtime11.jsxDEV(Text3, {
251557
+ color: "gray",
251558
+ children: content
251559
+ }, undefined, false, undefined, this)
251560
+ }, undefined, false, undefined, this);
251561
+ }
251562
+ return /* @__PURE__ */ jsx_dev_runtime11.jsxDEV(Box_default, {
251563
+ flexDirection: "column",
251564
+ marginY: 0.5,
251544
251565
  children: [
251545
- /* @__PURE__ */ jsx_dev_runtime12.jsxDEV(Box_default, {
251546
- width: 2,
251547
- flexShrink: 0,
251548
- children: /* @__PURE__ */ jsx_dev_runtime12.jsxDEV(Text3, {
251549
- color: isFocused ? "#89B4F8" : "#475569",
251550
- children: "│"
251551
- }, undefined, false, undefined, this)
251552
- }, undefined, false, undefined, this),
251553
- /* @__PURE__ */ jsx_dev_runtime12.jsxDEV(Box_default, {
251554
- flexDirection: "column",
251566
+ /* @__PURE__ */ jsx_dev_runtime11.jsxDEV(Text3, {
251567
+ color: "gray",
251568
+ italic: true,
251555
251569
  children: [
251556
- /* @__PURE__ */ jsx_dev_runtime12.jsxDEV(Text3, {
251557
- color: isFocused ? "#89B4F8" : "#64748b",
251558
- italic: true,
251559
- children: [
251560
- "Thinking...",
251561
- " ",
251562
- isFocused ? expanded ? "(Enter to collapse)" : "(Enter to expand)" : ""
251563
- ]
251564
- }, undefined, true, undefined, this),
251565
- /* @__PURE__ */ jsx_dev_runtime12.jsxDEV(Box_default, {
251566
- paddingY: 0.5,
251567
- children: /* @__PURE__ */ jsx_dev_runtime12.jsxDEV(Text3, {
251568
- color: "#475569",
251569
- dimColor: true,
251570
- children: isLarge && !expanded ? lines.slice(0, 3).join(`
251571
- `) + `
251572
- ...` : content
251573
- }, undefined, false, undefined, this)
251574
- }, undefined, false, undefined, this)
251570
+ "Thoughts (",
251571
+ tokenCount,
251572
+ " tokens",
251573
+ expanded ? " · ctrl+o to collapse" : "",
251574
+ ")"
251575
251575
  ]
251576
- }, undefined, true, undefined, this)
251576
+ }, undefined, true, undefined, this),
251577
+ expanded && /* @__PURE__ */ jsx_dev_runtime11.jsxDEV(Box_default, {
251578
+ paddingLeft: 1,
251579
+ paddingTop: 0.5,
251580
+ children: /* @__PURE__ */ jsx_dev_runtime11.jsxDEV(Text3, {
251581
+ color: "gray",
251582
+ children: content
251583
+ }, undefined, false, undefined, this)
251584
+ }, undefined, false, undefined, this)
251577
251585
  ]
251578
251586
  }, undefined, true, undefined, this);
251579
251587
  }
251580
251588
  function StyledCommand({ command, truncate: truncate3 = true }) {
251581
- const match2 = command.match(/^([A-Za-z_]+)\((.*)\)$/);
251589
+ const match2 = command.match(/^([A-Za-z_]+)\(([\s\S]*)\)$/);
251582
251590
  if (match2) {
251583
- let args = match2[2] || "";
251591
+ let args = (match2[2] || "").replace(/\r?\n/g, " ");
251584
251592
  if (truncate3 && args.length > 80) {
251585
251593
  args = args.substring(0, 80) + "...";
251586
251594
  }
251587
251595
  const cmdColor = "#fef08a";
251588
- return /* @__PURE__ */ jsx_dev_runtime12.jsxDEV(Text3, {
251596
+ return /* @__PURE__ */ jsx_dev_runtime11.jsxDEV(Text3, {
251589
251597
  children: [
251590
- /* @__PURE__ */ jsx_dev_runtime12.jsxDEV(Text3, {
251598
+ /* @__PURE__ */ jsx_dev_runtime11.jsxDEV(Text3, {
251591
251599
  color: cmdColor,
251592
251600
  children: "● "
251593
251601
  }, undefined, false, undefined, this),
251594
- /* @__PURE__ */ jsx_dev_runtime12.jsxDEV(Text3, {
251602
+ /* @__PURE__ */ jsx_dev_runtime11.jsxDEV(Text3, {
251595
251603
  color: cmdColor,
251596
251604
  bold: true,
251597
251605
  children: match2[1]
251598
251606
  }, undefined, false, undefined, this),
251599
- /* @__PURE__ */ jsx_dev_runtime12.jsxDEV(Text3, {
251607
+ /* @__PURE__ */ jsx_dev_runtime11.jsxDEV(Text3, {
251600
251608
  color: "#cbd5e1",
251601
251609
  children: [
251602
251610
  "(",
@@ -251607,55 +251615,133 @@ function StyledCommand({ command, truncate: truncate3 = true }) {
251607
251615
  ]
251608
251616
  }, undefined, true, undefined, this);
251609
251617
  }
251610
- let displayCmd = command;
251611
- if (truncate3 && command.length > 80) {
251612
- displayCmd = command.substring(0, 80) + "...";
251618
+ let displayCmd = command.replace(/\r?\n/g, " ");
251619
+ if (truncate3 && displayCmd.length > 80) {
251620
+ displayCmd = displayCmd.substring(0, 80) + "...";
251613
251621
  }
251614
- return /* @__PURE__ */ jsx_dev_runtime12.jsxDEV(Text3, {
251622
+ return /* @__PURE__ */ jsx_dev_runtime11.jsxDEV(Text3, {
251615
251623
  color: "white",
251616
251624
  children: displayCmd
251617
251625
  }, undefined, false, undefined, this);
251618
251626
  }
251619
- function BotMessage({ blocks, usage }) {
251620
- return /* @__PURE__ */ jsx_dev_runtime12.jsxDEV(Box_default, {
251627
+ function CollapsibleCommandOutput({
251628
+ command,
251629
+ output,
251630
+ forceExpanded
251631
+ }) {
251632
+ const { isFocused } = use_focus_default({ autoFocus: true });
251633
+ const [userExpanded, setUserExpanded] = import_react44.useState(false);
251634
+ const isExpanded = userExpanded || Boolean(forceExpanded);
251635
+ use_input_default((input, key) => {
251636
+ if (key.ctrl && (key.name === "o" || input?.toLowerCase() === "o") || input === "\x0F") {
251637
+ setUserExpanded((prev2) => !prev2);
251638
+ }
251639
+ });
251640
+ const lines = output ? output.trim().split(/\r?\n/) : [];
251641
+ return /* @__PURE__ */ jsx_dev_runtime11.jsxDEV(Box_default, {
251642
+ flexDirection: "column",
251643
+ marginY: 0,
251644
+ children: [
251645
+ /* @__PURE__ */ jsx_dev_runtime11.jsxDEV(Box_default, {
251646
+ alignItems: "center",
251647
+ gap: 1,
251648
+ children: [
251649
+ /* @__PURE__ */ jsx_dev_runtime11.jsxDEV(StyledCommand, {
251650
+ command
251651
+ }, undefined, false, undefined, this),
251652
+ lines.length > 0 && /* @__PURE__ */ jsx_dev_runtime11.jsxDEV(Text3, {
251653
+ color: "gray",
251654
+ children: [
251655
+ "(",
251656
+ isExpanded ? "ctrl+o to collapse" : "ctrl+o to expand",
251657
+ ")"
251658
+ ]
251659
+ }, undefined, true, undefined, this)
251660
+ ]
251661
+ }, undefined, true, undefined, this),
251662
+ isExpanded && lines.length > 0 && /* @__PURE__ */ jsx_dev_runtime11.jsxDEV(Box_default, {
251663
+ flexDirection: "column",
251664
+ marginTop: 0,
251665
+ paddingX: 1,
251666
+ children: lines.map((line, lidx) => {
251667
+ let color = "#d1d5db";
251668
+ let bgColor = undefined;
251669
+ if (line.startsWith("+")) {
251670
+ color = "#6EE7B7";
251671
+ bgColor = "#122f1e";
251672
+ } else if (line.startsWith("-")) {
251673
+ color = "#FCA5A5";
251674
+ bgColor = "#3f1316";
251675
+ } else if (line.startsWith("@@") || line.startsWith("diff --git") || line.startsWith("---") || line.startsWith("+++")) {
251676
+ color = "#d1d5db";
251677
+ }
251678
+ return /* @__PURE__ */ jsx_dev_runtime11.jsxDEV(Box_default, {
251679
+ backgroundColor: bgColor,
251680
+ flexDirection: "row",
251681
+ children: /* @__PURE__ */ jsx_dev_runtime11.jsxDEV(Text3, {
251682
+ color,
251683
+ wrap: "truncate-end",
251684
+ children: line
251685
+ }, undefined, false, undefined, this)
251686
+ }, lidx, false, undefined, this);
251687
+ })
251688
+ }, undefined, false, undefined, this)
251689
+ ]
251690
+ }, undefined, true, undefined, this);
251691
+ }
251692
+ function BotMessage({ blocks, usage, expandCommands }) {
251693
+ return /* @__PURE__ */ jsx_dev_runtime11.jsxDEV(Box_default, {
251621
251694
  flexDirection: "column",
251622
251695
  paddingX: 4,
251623
251696
  paddingY: 0,
251624
- gap: 1,
251625
- marginTop: 1,
251697
+ gap: 0,
251698
+ marginTop: 0.5,
251626
251699
  children: blocks.map((block, idx) => {
251627
251700
  switch (block.type) {
251628
251701
  case "text": {
251702
+ if (!block.content || block.content.trim() === "")
251703
+ return null;
251629
251704
  const isThinking = block.content === "Thinking..." || block.content === "Working..." || block.content === "Generating...";
251630
251705
  if (isThinking) {
251631
251706
  if (idx !== blocks.length - 1)
251632
251707
  return null;
251633
- return /* @__PURE__ */ jsx_dev_runtime12.jsxDEV(Box_default, {
251708
+ return /* @__PURE__ */ jsx_dev_runtime11.jsxDEV(Box_default, {
251634
251709
  gap: 1,
251635
251710
  alignItems: "center",
251636
251711
  children: [
251637
- /* @__PURE__ */ jsx_dev_runtime12.jsxDEV(Spinner2, {}, undefined, false, undefined, this),
251638
- /* @__PURE__ */ jsx_dev_runtime12.jsxDEV(Text3, {
251712
+ /* @__PURE__ */ jsx_dev_runtime11.jsxDEV(Spinner2, {}, undefined, false, undefined, this),
251713
+ /* @__PURE__ */ jsx_dev_runtime11.jsxDEV(Text3, {
251639
251714
  color: "gray",
251640
251715
  children: block.content
251641
251716
  }, undefined, false, undefined, this)
251642
251717
  ]
251643
251718
  }, idx, true, undefined, this);
251644
251719
  }
251720
+ if (block.color) {
251721
+ return /* @__PURE__ */ jsx_dev_runtime11.jsxDEV(Box_default, {
251722
+ children: /* @__PURE__ */ jsx_dev_runtime11.jsxDEV(Text3, {
251723
+ color: block.color,
251724
+ children: block.content
251725
+ }, undefined, false, undefined, this)
251726
+ }, idx, false, undefined, this);
251727
+ }
251645
251728
  const parts = block.content.split(/(<thought(?:>| [^>]*>)[\s\S]*?<\/thought>|<thought(?:>| [^>]*>)[\s\S]*)/i);
251646
- return /* @__PURE__ */ jsx_dev_runtime12.jsxDEV(Box_default, {
251729
+ return /* @__PURE__ */ jsx_dev_runtime11.jsxDEV(Box_default, {
251647
251730
  flexDirection: "column",
251648
251731
  children: parts.map((part, pidx) => {
251649
251732
  if (/^<thought(?:>| [^>]*>)/i.test(part)) {
251733
+ const isClosed = /<\/thought>$/i.test(part);
251734
+ const isStreaming = !isClosed && idx === blocks.length - 1 && pidx === parts.length - 1;
251650
251735
  const thoughtContent = part.replace(/^<thought(?:>| [^>]*>)/i, "").replace(/<\/thought>$/i, "").trim();
251651
- return /* @__PURE__ */ jsx_dev_runtime12.jsxDEV(CollapsibleThought, {
251652
- content: thoughtContent
251736
+ return /* @__PURE__ */ jsx_dev_runtime11.jsxDEV(CollapsibleThought, {
251737
+ content: thoughtContent,
251738
+ isStreaming
251653
251739
  }, pidx, false, undefined, this);
251654
251740
  }
251655
251741
  if (part.trim() === "")
251656
251742
  return null;
251657
- return /* @__PURE__ */ jsx_dev_runtime12.jsxDEV(Box_default, {
251658
- children: /* @__PURE__ */ jsx_dev_runtime12.jsxDEV(SmoothMarkdown, {
251743
+ return /* @__PURE__ */ jsx_dev_runtime11.jsxDEV(Box_default, {
251744
+ children: /* @__PURE__ */ jsx_dev_runtime11.jsxDEV(SmoothMarkdown, {
251659
251745
  text: part.trim(),
251660
251746
  isRunning: true
251661
251747
  }, undefined, false, undefined, this)
@@ -251664,61 +251750,52 @@ function BotMessage({ blocks, usage }) {
251664
251750
  }, idx, false, undefined, this);
251665
251751
  }
251666
251752
  case "error": {
251667
- return /* @__PURE__ */ jsx_dev_runtime12.jsxDEV(Box_default, {
251753
+ return /* @__PURE__ */ jsx_dev_runtime11.jsxDEV(Box_default, {
251668
251754
  flexDirection: "column",
251669
- paddingLeft: 1,
251670
- marginY: 1,
251671
- children: /* @__PURE__ */ jsx_dev_runtime12.jsxDEV(Text3, {
251672
- color: "white",
251673
- children: [
251674
- "Agent Error: ",
251675
- block.error
251676
- ]
251677
- }, undefined, true, undefined, this)
251755
+ marginY: 0.5,
251756
+ children: /* @__PURE__ */ jsx_dev_runtime11.jsxDEV(Text3, {
251757
+ color: "#FCA5A5",
251758
+ children: block.error
251759
+ }, undefined, false, undefined, this)
251678
251760
  }, idx, false, undefined, this);
251679
251761
  }
251680
251762
  case "interrupt": {
251681
- return /* @__PURE__ */ jsx_dev_runtime12.jsxDEV(Box_default, {
251763
+ return /* @__PURE__ */ jsx_dev_runtime11.jsxDEV(Box_default, {
251682
251764
  flexDirection: "row",
251683
251765
  paddingY: 1,
251684
- children: /* @__PURE__ */ jsx_dev_runtime12.jsxDEV(Text3, {
251766
+ children: /* @__PURE__ */ jsx_dev_runtime11.jsxDEV(Text3, {
251767
+ color: "gray",
251685
251768
  children: "Interrupted · What should December do instead?"
251686
251769
  }, undefined, false, undefined, this)
251687
251770
  }, idx, false, undefined, this);
251688
251771
  }
251689
251772
  case "thinking": {
251690
- return /* @__PURE__ */ jsx_dev_runtime12.jsxDEV(CollapsibleThought, {
251691
- content: block.content
251773
+ const isStreaming = block.isStreaming ?? idx === blocks.length - 1;
251774
+ return /* @__PURE__ */ jsx_dev_runtime11.jsxDEV(CollapsibleThought, {
251775
+ content: block.content,
251776
+ isStreaming
251692
251777
  }, idx, false, undefined, this);
251693
251778
  }
251694
251779
  case "compaction": {
251695
- return /* @__PURE__ */ jsx_dev_runtime12.jsxDEV(Box_default, {
251780
+ return /* @__PURE__ */ jsx_dev_runtime11.jsxDEV(Box_default, {
251696
251781
  flexDirection: "column",
251697
251782
  paddingY: 1,
251698
251783
  children: [
251699
- /* @__PURE__ */ jsx_dev_runtime12.jsxDEV(Box_default, {
251784
+ /* @__PURE__ */ jsx_dev_runtime11.jsxDEV(Box_default, {
251700
251785
  flexDirection: "row",
251701
251786
  gap: 1,
251702
251787
  alignItems: "center",
251703
- children: [
251704
- /* @__PURE__ */ jsx_dev_runtime12.jsxDEV(Pill, {
251705
- label: "SYSTEM",
251706
- backgroundColor: "#303030",
251707
- color: "#a78bfa"
251708
- }, undefined, false, undefined, this),
251709
- /* @__PURE__ */ jsx_dev_runtime12.jsxDEV(Text3, {
251710
- color: "#a78bfa",
251711
- italic: true,
251712
- children: "Context Compacted"
251713
- }, undefined, false, undefined, this)
251714
- ]
251715
- }, undefined, true, undefined, this),
251716
- /* @__PURE__ */ jsx_dev_runtime12.jsxDEV(Box_default, {
251788
+ children: /* @__PURE__ */ jsx_dev_runtime11.jsxDEV(Text3, {
251789
+ color: "#fef08a",
251790
+ italic: true,
251791
+ children: "Context Compacted"
251792
+ }, undefined, false, undefined, this)
251793
+ }, undefined, false, undefined, this),
251794
+ /* @__PURE__ */ jsx_dev_runtime11.jsxDEV(Box_default, {
251717
251795
  paddingLeft: 1,
251718
251796
  paddingTop: 1,
251719
- children: /* @__PURE__ */ jsx_dev_runtime12.jsxDEV(Text3, {
251720
- color: "#94a3b8",
251721
- dimColor: true,
251797
+ children: /* @__PURE__ */ jsx_dev_runtime11.jsxDEV(Text3, {
251798
+ color: "gray",
251722
251799
  children: block.summary.replace(/^\[COMPACTED HISTORY SUMMARY\]\n/, "")
251723
251800
  }, undefined, false, undefined, this)
251724
251801
  }, undefined, false, undefined, this)
@@ -251733,115 +251810,46 @@ function BotMessage({ blocks, usage }) {
251733
251810
  parsedInput = JSON.parse(block.toolInput || "{}");
251734
251811
  } catch {}
251735
251812
  if (!isRunning) {
251736
- if (block.toolName === "read_file" || block.toolName === "view_file") {
251737
- const lines = block.output ? block.output.split(/\r?\n/).length : 0;
251738
- return /* @__PURE__ */ jsx_dev_runtime12.jsxDEV(Box_default, {
251813
+ const isNoOutputTool = block.toolName === "read_file" || block.toolName === "view_file" || block.toolName === "write_file" || block.toolName === "write_to_file" || block.toolName === "ask_permission" || block.toolName === "list_permissions";
251814
+ if (isNoOutputTool) {
251815
+ return /* @__PURE__ */ jsx_dev_runtime11.jsxDEV(Box_default, {
251739
251816
  flexDirection: "column",
251740
- children: /* @__PURE__ */ jsx_dev_runtime12.jsxDEV(Box_default, {
251741
- gap: 1,
251817
+ children: /* @__PURE__ */ jsx_dev_runtime11.jsxDEV(Box_default, {
251742
251818
  alignItems: "center",
251743
- children: /* @__PURE__ */ jsx_dev_runtime12.jsxDEV(StyledCommand, {
251819
+ gap: 1,
251820
+ children: /* @__PURE__ */ jsx_dev_runtime11.jsxDEV(StyledCommand, {
251744
251821
  command: block.command
251745
251822
  }, undefined, false, undefined, this)
251746
251823
  }, undefined, false, undefined, this)
251747
251824
  }, idx, false, undefined, this);
251748
251825
  }
251749
- if (block.toolName === "edit_file" || block.toolName === "edit_diff" || block.toolName === "write_file" || block.toolName === "write_to_file" || block.toolName === "multi_replace_file_content" || block.toolName === "replace_file_content") {
251750
- const path9 = parsedInput.path || parsedInput.filePath || parsedInput.TargetFile || "";
251751
- const diffStr = block.toolName === "write_file" || block.toolName === "write_to_file" ? parsedInput.content || parsedInput.CodeContent : parsedInput.diff;
251752
- const isWrite = block.toolName === "write_file" || block.toolName === "write_to_file";
251753
- const lines = diffStr ? diffStr.replace(/\r?\n$/, "").split(/\r?\n/) : [];
251754
- return /* @__PURE__ */ jsx_dev_runtime12.jsxDEV(Box_default, {
251755
- flexDirection: "column",
251756
- children: [
251757
- /* @__PURE__ */ jsx_dev_runtime12.jsxDEV(Box_default, {
251758
- gap: 1,
251759
- alignItems: "center",
251760
- children: /* @__PURE__ */ jsx_dev_runtime12.jsxDEV(StyledCommand, {
251761
- command: block.command
251762
- }, undefined, false, undefined, this)
251763
- }, undefined, false, undefined, this),
251764
- isSuccess && lines.length > 0 && !isWrite && /* @__PURE__ */ jsx_dev_runtime12.jsxDEV(Box_default, {
251765
- flexDirection: "column",
251766
- paddingLeft: 0,
251767
- children: [
251768
- lines.slice(0, 40).map((line, lidx) => {
251769
- let prefixColor = "#d1d5db";
251770
- let bgColor = undefined;
251771
- let prefix = " ";
251772
- let rest2 = line;
251773
- if (isWrite) {
251774
- prefixColor = "#4ade80";
251775
- bgColor = "#122f1e";
251776
- prefix = "+";
251777
- rest2 = line;
251778
- } else {
251779
- prefix = " ";
251780
- if (line.startsWith("+")) {
251781
- prefixColor = "#4ade80";
251782
- bgColor = "#122f1e";
251783
- prefix = "+";
251784
- rest2 = line.slice(1);
251785
- } else if (line.startsWith("-")) {
251786
- prefixColor = "#f87171";
251787
- bgColor = "#3f1316";
251788
- prefix = "-";
251789
- rest2 = line.slice(1);
251790
- } else if (line.startsWith("@@")) {
251791
- prefixColor = "#a78bfa";
251792
- prefix = "@";
251793
- rest2 = line.slice(1);
251794
- } else if (line.startsWith(" ")) {
251795
- rest2 = line.slice(1);
251796
- }
251797
- }
251798
- return /* @__PURE__ */ jsx_dev_runtime12.jsxDEV(Box_default, {
251799
- backgroundColor: bgColor,
251800
- flexDirection: "row",
251801
- paddingLeft: 2,
251802
- children: [
251803
- /* @__PURE__ */ jsx_dev_runtime12.jsxDEV(Box_default, {
251804
- width: 2,
251805
- flexShrink: 0,
251806
- children: /* @__PURE__ */ jsx_dev_runtime12.jsxDEV(Text3, {
251807
- color: prefixColor,
251808
- children: prefix
251809
- }, undefined, false, undefined, this)
251810
- }, undefined, false, undefined, this),
251811
- /* @__PURE__ */ jsx_dev_runtime12.jsxDEV(Text3, {
251812
- color: bgColor ? "white" : "#d1d5db",
251813
- wrap: "truncate-end",
251814
- children: rest2
251815
- }, undefined, false, undefined, this)
251816
- ]
251817
- }, lidx, true, undefined, this);
251818
- }),
251819
- lines.length > 40 && /* @__PURE__ */ jsx_dev_runtime12.jsxDEV(Box_default, {
251820
- paddingLeft: 1,
251821
- children: /* @__PURE__ */ jsx_dev_runtime12.jsxDEV(Text3, {
251822
- color: "#94a3b8",
251823
- children: [
251824
- "... (",
251825
- lines.length - 40,
251826
- " more lines)"
251827
- ]
251828
- }, undefined, true, undefined, this)
251829
- }, undefined, false, undefined, this)
251830
- ]
251831
- }, undefined, true, undefined, this)
251832
- ]
251833
- }, idx, true, undefined, this);
251826
+ let displayOutput = block.output;
251827
+ if (block.toolName === "replace_file_content" || block.toolName === "multi_replace_file_content" || block.toolName === "edit_file" || block.toolName === "edit_diff") {
251828
+ if (parsedInput.TargetContent || parsedInput.ReplacementContent) {
251829
+ const target = (parsedInput.TargetContent || "").split(/\r?\n/).map((l3) => l3.startsWith("-") ? l3 : `-${l3}`).join(`
251830
+ `);
251831
+ const replacement = (parsedInput.ReplacementContent || "").split(/\r?\n/).map((l3) => l3.startsWith("+") ? l3 : `+${l3}`).join(`
251832
+ `);
251833
+ displayOutput = `${target}
251834
+ ${replacement}`;
251835
+ } else if (parsedInput.ReplacementChunks && Array.isArray(parsedInput.ReplacementChunks)) {
251836
+ displayOutput = parsedInput.ReplacementChunks.map((chunk2) => {
251837
+ const t2 = (chunk2.TargetContent || "").split(/\r?\n/).map((l3) => l3.startsWith("-") ? l3 : `-${l3}`).join(`
251838
+ `);
251839
+ const r2 = (chunk2.ReplacementContent || "").split(/\r?\n/).map((l3) => l3.startsWith("+") ? l3 : `+${l3}`).join(`
251840
+ `);
251841
+ return `${t2}
251842
+ ${r2}`;
251843
+ }).join(`
251844
+ `);
251845
+ } else if (parsedInput.diff) {
251846
+ displayOutput = parsedInput.diff;
251847
+ }
251834
251848
  }
251835
- return /* @__PURE__ */ jsx_dev_runtime12.jsxDEV(Box_default, {
251836
- flexDirection: "column",
251837
- gap: 1,
251838
- children: /* @__PURE__ */ jsx_dev_runtime12.jsxDEV(Box_default, {
251839
- alignItems: "center",
251840
- gap: 1,
251841
- children: /* @__PURE__ */ jsx_dev_runtime12.jsxDEV(StyledCommand, {
251842
- command: block.command
251843
- }, undefined, false, undefined, this)
251844
- }, undefined, false, undefined, this)
251849
+ return /* @__PURE__ */ jsx_dev_runtime11.jsxDEV(CollapsibleCommandOutput, {
251850
+ command: block.command,
251851
+ output: displayOutput,
251852
+ forceExpanded: expandCommands
251845
251853
  }, idx, false, undefined, this);
251846
251854
  }
251847
251855
  let statusLabel = "Working...";
@@ -251871,32 +251879,27 @@ function BotMessage({ blocks, usage }) {
251871
251879
  statusLabel = "Sending message...";
251872
251880
  else if (block.toolName === "schedule")
251873
251881
  statusLabel = "Scheduling timer...";
251874
- return /* @__PURE__ */ jsx_dev_runtime12.jsxDEV(Box_default, {
251882
+ return /* @__PURE__ */ jsx_dev_runtime11.jsxDEV(Box_default, {
251875
251883
  flexDirection: "column",
251876
251884
  children: [
251877
- /* @__PURE__ */ jsx_dev_runtime12.jsxDEV(Box_default, {
251885
+ /* @__PURE__ */ jsx_dev_runtime11.jsxDEV(Box_default, {
251878
251886
  gap: 1,
251879
251887
  alignItems: "center",
251880
251888
  children: [
251881
- /* @__PURE__ */ jsx_dev_runtime12.jsxDEV(Spinner2, {}, undefined, false, undefined, this),
251882
- /* @__PURE__ */ jsx_dev_runtime12.jsxDEV(Text3, {
251883
- color: "cyan",
251889
+ /* @__PURE__ */ jsx_dev_runtime11.jsxDEV(Spinner2, {}, undefined, false, undefined, this),
251890
+ /* @__PURE__ */ jsx_dev_runtime11.jsxDEV(Text3, {
251891
+ color: "gray",
251884
251892
  children: statusLabel
251885
- }, undefined, false, undefined, this),
251886
- /* @__PURE__ */ jsx_dev_runtime12.jsxDEV(StyledCommand, {
251887
- command: block.command,
251888
- truncate: false
251889
251893
  }, undefined, false, undefined, this)
251890
251894
  ]
251891
251895
  }, undefined, true, undefined, this),
251892
- block.output && /* @__PURE__ */ jsx_dev_runtime12.jsxDEV(Box_default, {
251896
+ block.output && /* @__PURE__ */ jsx_dev_runtime11.jsxDEV(Box_default, {
251893
251897
  flexDirection: "column",
251894
251898
  marginLeft: 0,
251895
251899
  marginTop: 0.5,
251896
251900
  paddingX: 1,
251897
251901
  paddingY: 0.5,
251898
- backgroundColor: "#1e293b",
251899
- children: block.output.trim().split(/\r?\n/).slice(-2).map((line, lidx) => /* @__PURE__ */ jsx_dev_runtime12.jsxDEV(Text3, {
251902
+ children: block.output.trim().split(/\r?\n/).slice(-2).map((line, lidx) => /* @__PURE__ */ jsx_dev_runtime11.jsxDEV(Text3, {
251900
251903
  color: "#94a3b8",
251901
251904
  wrap: "truncate-end",
251902
251905
  children: [
@@ -251912,18 +251915,21 @@ function BotMessage({ blocks, usage }) {
251912
251915
  const isCreated = block.action === "created";
251913
251916
  const isDeleted = block.action === "deleted";
251914
251917
  const actionLabel = isCreated ? "CREATED" : isDeleted ? "DELETED" : "MODIFIED";
251915
- const fgColor = isCreated ? "#4ade80" : isDeleted ? "#f87171" : "#89B4F8";
251916
- return /* @__PURE__ */ jsx_dev_runtime12.jsxDEV(Box_default, {
251918
+ return /* @__PURE__ */ jsx_dev_runtime11.jsxDEV(Box_default, {
251917
251919
  gap: 1,
251918
251920
  alignItems: "center",
251919
251921
  children: [
251920
- /* @__PURE__ */ jsx_dev_runtime12.jsxDEV(Pill, {
251921
- label: actionLabel,
251922
- backgroundColor: "#303030",
251923
- color: fgColor
251922
+ /* @__PURE__ */ jsx_dev_runtime11.jsxDEV(Text3, {
251923
+ color: "#fef08a",
251924
+ children: "● "
251924
251925
  }, undefined, false, undefined, this),
251925
- /* @__PURE__ */ jsx_dev_runtime12.jsxDEV(Text3, {
251926
- color: "white",
251926
+ /* @__PURE__ */ jsx_dev_runtime11.jsxDEV(Text3, {
251927
+ color: "#fef08a",
251928
+ bold: true,
251929
+ children: actionLabel
251930
+ }, undefined, false, undefined, this),
251931
+ /* @__PURE__ */ jsx_dev_runtime11.jsxDEV(Text3, {
251932
+ color: "#cbd5e1",
251927
251933
  children: block.filePath
251928
251934
  }, undefined, false, undefined, this)
251929
251935
  ]
@@ -251932,24 +251938,24 @@ function BotMessage({ blocks, usage }) {
251932
251938
  case "code": {
251933
251939
  const borderLength = Math.max(10, 60 - (block.filename?.length ?? 0));
251934
251940
  const borderLine = "─".repeat(borderLength);
251935
- return /* @__PURE__ */ jsx_dev_runtime12.jsxDEV(Box_default, {
251941
+ return /* @__PURE__ */ jsx_dev_runtime11.jsxDEV(Box_default, {
251936
251942
  flexDirection: "column",
251937
251943
  paddingLeft: 1,
251938
251944
  children: [
251939
- /* @__PURE__ */ jsx_dev_runtime12.jsxDEV(Text3, {
251945
+ /* @__PURE__ */ jsx_dev_runtime11.jsxDEV(Text3, {
251940
251946
  color: "#4A5568",
251941
251947
  wrap: "truncate",
251942
251948
  children: block.filename ? `┌── ${block.filename} ${borderLine}` : `┌${borderLine}`
251943
251949
  }, undefined, false, undefined, this),
251944
- /* @__PURE__ */ jsx_dev_runtime12.jsxDEV(Box_default, {
251950
+ /* @__PURE__ */ jsx_dev_runtime11.jsxDEV(Box_default, {
251945
251951
  flexDirection: "column",
251946
251952
  paddingLeft: 2,
251947
- children: block.code.split(/\r?\n/).map((line, lidx) => /* @__PURE__ */ jsx_dev_runtime12.jsxDEV(Text3, {
251953
+ children: block.code.split(/\r?\n/).map((line, lidx) => /* @__PURE__ */ jsx_dev_runtime11.jsxDEV(Text3, {
251948
251954
  color: "#E2E8F0",
251949
251955
  children: line
251950
251956
  }, lidx, false, undefined, this))
251951
251957
  }, undefined, false, undefined, this),
251952
- /* @__PURE__ */ jsx_dev_runtime12.jsxDEV(Text3, {
251958
+ /* @__PURE__ */ jsx_dev_runtime11.jsxDEV(Text3, {
251953
251959
  color: "#4A5568",
251954
251960
  children: "└──"
251955
251961
  }, undefined, false, undefined, this)
@@ -251957,22 +251963,14 @@ function BotMessage({ blocks, usage }) {
251957
251963
  }, idx, true, undefined, this);
251958
251964
  }
251959
251965
  case "status": {
251960
- return /* @__PURE__ */ jsx_dev_runtime12.jsxDEV(Box_default, {
251966
+ return /* @__PURE__ */ jsx_dev_runtime11.jsxDEV(Box_default, {
251961
251967
  gap: 1,
251962
251968
  alignItems: "center",
251963
- children: [
251964
- /* @__PURE__ */ jsx_dev_runtime12.jsxDEV(Pill, {
251965
- label: block.success ? "SUCCESS" : "FAILED",
251966
- backgroundColor: "#303030",
251967
- color: block.success ? "#4ade80" : "#f87171"
251968
- }, undefined, false, undefined, this),
251969
- /* @__PURE__ */ jsx_dev_runtime12.jsxDEV(Text3, {
251970
- color: "white",
251971
- bold: block.success,
251972
- children: block.label
251973
- }, undefined, false, undefined, this)
251974
- ]
251975
- }, idx, true, undefined, this);
251969
+ children: /* @__PURE__ */ jsx_dev_runtime11.jsxDEV(Text3, {
251970
+ color: block.success ? "#6EE7B7" : "#FCA5A5",
251971
+ children: block.label
251972
+ }, undefined, false, undefined, this)
251973
+ }, idx, false, undefined, this);
251976
251974
  }
251977
251975
  default:
251978
251976
  return null;
@@ -251983,7 +251981,7 @@ function BotMessage({ blocks, usage }) {
251983
251981
  // ../../packages/tui/src/components/header.tsx
251984
251982
  import { execSync as execSync2 } from "node:child_process";
251985
251983
  import { homedir } from "node:os";
251986
- var jsx_dev_runtime13 = __toESM(require_jsx_dev_runtime(), 1);
251984
+ var jsx_dev_runtime12 = __toESM(require_jsx_dev_runtime(), 1);
251987
251985
  function getGitBranch() {
251988
251986
  try {
251989
251987
  return execSync2("git rev-parse --abbrev-ref HEAD", { stdio: "pipe" }).toString().trim();
@@ -252006,13 +252004,13 @@ function Header({
252006
252004
  }) {
252007
252005
  const cwd2 = getCwd();
252008
252006
  const branch = getGitBranch();
252009
- return /* @__PURE__ */ jsx_dev_runtime13.jsxDEV(Box_default, {
252007
+ return /* @__PURE__ */ jsx_dev_runtime12.jsxDEV(Box_default, {
252010
252008
  flexDirection: "column",
252011
252009
  paddingLeft: 2,
252012
252010
  paddingTop: 1,
252013
- paddingBottom: 1,
252011
+ paddingBottom: 0,
252014
252012
  children: [
252015
- /* @__PURE__ */ jsx_dev_runtime13.jsxDEV(Text3, {
252013
+ /* @__PURE__ */ jsx_dev_runtime12.jsxDEV(Text3, {
252016
252014
  bold: true,
252017
252015
  color: "white",
252018
252016
  children: [
@@ -252020,18 +252018,18 @@ function Header({
252020
252018
  cliVersion.replace(/^v/, "")
252021
252019
  ]
252022
252020
  }, undefined, true, undefined, this),
252023
- userEmail && /* @__PURE__ */ jsx_dev_runtime13.jsxDEV(Text3, {
252021
+ userEmail && /* @__PURE__ */ jsx_dev_runtime12.jsxDEV(Text3, {
252024
252022
  color: "gray",
252025
252023
  children: userEmail
252026
252024
  }, undefined, false, undefined, this),
252027
- /* @__PURE__ */ jsx_dev_runtime13.jsxDEV(Box_default, {
252025
+ /* @__PURE__ */ jsx_dev_runtime12.jsxDEV(Box_default, {
252028
252026
  gap: 1,
252029
252027
  children: [
252030
- /* @__PURE__ */ jsx_dev_runtime13.jsxDEV(Text3, {
252028
+ /* @__PURE__ */ jsx_dev_runtime12.jsxDEV(Text3, {
252031
252029
  color: "gray",
252032
252030
  children: cwd2
252033
252031
  }, undefined, false, undefined, this),
252034
- branch && /* @__PURE__ */ jsx_dev_runtime13.jsxDEV(Text3, {
252032
+ branch && /* @__PURE__ */ jsx_dev_runtime12.jsxDEV(Text3, {
252035
252033
  color: "gray",
252036
252034
  children: [
252037
252035
  "(",
@@ -252041,19 +252039,19 @@ function Header({
252041
252039
  }, undefined, true, undefined, this)
252042
252040
  ]
252043
252041
  }, undefined, true, undefined, this),
252044
- /* @__PURE__ */ jsx_dev_runtime13.jsxDEV(Box_default, {
252042
+ /* @__PURE__ */ jsx_dev_runtime12.jsxDEV(Box_default, {
252045
252043
  flexDirection: "column",
252046
252044
  marginTop: 1,
252047
252045
  children: [
252048
- /* @__PURE__ */ jsx_dev_runtime13.jsxDEV(Text3, {
252046
+ /* @__PURE__ */ jsx_dev_runtime12.jsxDEV(Text3, {
252049
252047
  color: "#89B4F8",
252050
252048
  children: "Tips for getting started"
252051
252049
  }, undefined, false, undefined, this),
252052
- /* @__PURE__ */ jsx_dev_runtime13.jsxDEV(Text3, {
252050
+ /* @__PURE__ */ jsx_dev_runtime12.jsxDEV(Text3, {
252053
252051
  color: "gray",
252054
252052
  children: "Run /init to scaffold .december workspace for custom rules and skills"
252055
252053
  }, undefined, false, undefined, this),
252056
- /* @__PURE__ */ jsx_dev_runtime13.jsxDEV(Text3, {
252054
+ /* @__PURE__ */ jsx_dev_runtime12.jsxDEV(Text3, {
252057
252055
  color: "gray",
252058
252056
  children: "Use /handoff to continue this session in December (trydecember.com)"
252059
252057
  }, undefined, false, undefined, this)
@@ -252064,12 +252062,12 @@ function Header({
252064
252062
  }
252065
252063
 
252066
252064
  // ../../packages/tui/src/components/messages/error-message.tsx
252067
- var jsx_dev_runtime14 = __toESM(require_jsx_dev_runtime(), 1);
252065
+ var jsx_dev_runtime13 = __toESM(require_jsx_dev_runtime(), 1);
252068
252066
  function ErrorMessage({ message }) {
252069
- return /* @__PURE__ */ jsx_dev_runtime14.jsxDEV(Box_default, {
252067
+ return /* @__PURE__ */ jsx_dev_runtime13.jsxDEV(Box_default, {
252070
252068
  paddingX: 4,
252071
- paddingY: 1,
252072
- children: /* @__PURE__ */ jsx_dev_runtime14.jsxDEV(Text3, {
252069
+ paddingY: 0.5,
252070
+ children: /* @__PURE__ */ jsx_dev_runtime13.jsxDEV(Text3, {
252073
252071
  color: "#FCA5A5",
252074
252072
  children: message
252075
252073
  }, undefined, false, undefined, this)
@@ -252077,28 +252075,26 @@ function ErrorMessage({ message }) {
252077
252075
  }
252078
252076
 
252079
252077
  // ../../packages/tui/src/components/messages/user-message.tsx
252080
- var jsx_dev_runtime15 = __toESM(require_jsx_dev_runtime(), 1);
252078
+ var jsx_dev_runtime14 = __toESM(require_jsx_dev_runtime(), 1);
252081
252079
  function UserMessage({ message }) {
252082
- return /* @__PURE__ */ jsx_dev_runtime15.jsxDEV(Box_default, {
252080
+ return /* @__PURE__ */ jsx_dev_runtime14.jsxDEV(Box_default, {
252083
252081
  paddingLeft: 2,
252084
252082
  paddingRight: 4,
252085
252083
  paddingY: 0,
252086
252084
  marginTop: 1,
252087
- marginBottom: 0,
252085
+ marginBottom: 0.5,
252088
252086
  flexDirection: "row",
252089
252087
  children: [
252090
- /* @__PURE__ */ jsx_dev_runtime15.jsxDEV(Box_default, {
252088
+ /* @__PURE__ */ jsx_dev_runtime14.jsxDEV(Box_default, {
252091
252089
  marginRight: 1,
252092
- children: /* @__PURE__ */ jsx_dev_runtime15.jsxDEV(Text3, {
252093
- bold: true,
252090
+ children: /* @__PURE__ */ jsx_dev_runtime14.jsxDEV(Text3, {
252094
252091
  color: "#89B4F8",
252095
252092
  children: "❭"
252096
252093
  }, undefined, false, undefined, this)
252097
252094
  }, undefined, false, undefined, this),
252098
- /* @__PURE__ */ jsx_dev_runtime15.jsxDEV(Box_default, {
252095
+ /* @__PURE__ */ jsx_dev_runtime14.jsxDEV(Box_default, {
252099
252096
  flexShrink: 1,
252100
- children: /* @__PURE__ */ jsx_dev_runtime15.jsxDEV(Text3, {
252101
- bold: true,
252097
+ children: /* @__PURE__ */ jsx_dev_runtime14.jsxDEV(Text3, {
252102
252098
  color: "#89B4F8",
252103
252099
  children: message
252104
252100
  }, undefined, false, undefined, this)
@@ -252108,57 +252104,41 @@ function UserMessage({ message }) {
252108
252104
  }
252109
252105
 
252110
252106
  // ../../packages/tui/src/components/message-list.tsx
252111
- var jsx_dev_runtime16 = __toESM(require_jsx_dev_runtime(), 1);
252107
+ var jsx_dev_runtime15 = __toESM(require_jsx_dev_runtime(), 1);
252112
252108
  function MessageList({
252113
252109
  staticKey,
252114
252110
  staticMessages,
252115
252111
  activeMessages,
252116
252112
  isAuthenticated,
252117
252113
  cliVersion,
252118
- userEmail
252114
+ userEmail,
252115
+ expandCommands
252119
252116
  }) {
252120
- return /* @__PURE__ */ jsx_dev_runtime16.jsxDEV(jsx_dev_runtime16.Fragment, {
252121
- children: [
252122
- /* @__PURE__ */ jsx_dev_runtime16.jsxDEV(Static15, {
252123
- items: staticMessages,
252124
- style: { flexDirection: "column" },
252125
- children: (msg) => {
252126
- if (msg.role === "header") {
252127
- return /* @__PURE__ */ jsx_dev_runtime16.jsxDEV(Header, {
252128
- cliVersion,
252129
- userEmail
252130
- }, msg.id, false, undefined, this);
252131
- }
252132
- if (msg.role === "user")
252133
- return /* @__PURE__ */ jsx_dev_runtime16.jsxDEV(UserMessage, {
252134
- message: msg.text ?? ""
252135
- }, msg.id, false, undefined, this);
252136
- if (msg.role === "error")
252137
- return /* @__PURE__ */ jsx_dev_runtime16.jsxDEV(ErrorMessage, {
252138
- message: msg.text ?? ""
252139
- }, msg.id, false, undefined, this);
252140
- return /* @__PURE__ */ jsx_dev_runtime16.jsxDEV(BotMessage, {
252141
- blocks: msg.blocks ?? [],
252142
- usage: msg.usage
252143
- }, msg.id, false, undefined, this);
252144
- }
252145
- }, staticKey, false, undefined, this),
252146
- activeMessages.map((msg) => {
252147
- if (msg.role === "user")
252148
- return /* @__PURE__ */ jsx_dev_runtime16.jsxDEV(UserMessage, {
252149
- message: msg.text ?? ""
252150
- }, msg.id, false, undefined, this);
252151
- if (msg.role === "error")
252152
- return /* @__PURE__ */ jsx_dev_runtime16.jsxDEV(ErrorMessage, {
252153
- message: msg.text ?? ""
252154
- }, msg.id, false, undefined, this);
252155
- return /* @__PURE__ */ jsx_dev_runtime16.jsxDEV(BotMessage, {
252156
- blocks: msg.blocks ?? [],
252157
- usage: msg.usage
252117
+ const allMessages = [...staticMessages, ...activeMessages];
252118
+ return /* @__PURE__ */ jsx_dev_runtime15.jsxDEV(Box_default, {
252119
+ flexDirection: "column",
252120
+ children: allMessages.map((msg) => {
252121
+ if (msg.role === "header") {
252122
+ return /* @__PURE__ */ jsx_dev_runtime15.jsxDEV(Header, {
252123
+ cliVersion,
252124
+ userEmail
252158
252125
  }, msg.id, false, undefined, this);
252159
- })
252160
- ]
252161
- }, undefined, true, undefined, this);
252126
+ }
252127
+ if (msg.role === "user")
252128
+ return /* @__PURE__ */ jsx_dev_runtime15.jsxDEV(UserMessage, {
252129
+ message: msg.text ?? ""
252130
+ }, msg.id, false, undefined, this);
252131
+ if (msg.role === "error")
252132
+ return /* @__PURE__ */ jsx_dev_runtime15.jsxDEV(ErrorMessage, {
252133
+ message: msg.text ?? ""
252134
+ }, msg.id, false, undefined, this);
252135
+ return /* @__PURE__ */ jsx_dev_runtime15.jsxDEV(BotMessage, {
252136
+ blocks: msg.blocks ?? [],
252137
+ usage: msg.usage,
252138
+ expandCommands
252139
+ }, msg.id, false, undefined, this);
252140
+ })
252141
+ }, undefined, false, undefined, this);
252162
252142
  }
252163
252143
  // ../../packages/tui/src/theme.ts
252164
252144
  var COLORS = {
@@ -252170,23 +252150,24 @@ var COLORS = {
252170
252150
  info: "gray"
252171
252151
  };
252172
252152
  // ../../packages/tui/src/providers/theme/index.tsx
252173
- var import_react46 = __toESM(require_react(), 1);
252174
- var jsx_dev_runtime17 = __toESM(require_jsx_dev_runtime(), 1);
252175
- var ThemeContext = import_react46.createContext({ colors: COLORS });
252153
+ var import_react45 = __toESM(require_react(), 1);
252154
+ var jsx_dev_runtime16 = __toESM(require_jsx_dev_runtime(), 1);
252155
+ var ThemeContext = import_react45.createContext({ colors: COLORS });
252176
252156
  function ThemeProvider({ children: children2 }) {
252177
- return /* @__PURE__ */ jsx_dev_runtime17.jsxDEV(ThemeContext.Provider, {
252157
+ return /* @__PURE__ */ jsx_dev_runtime16.jsxDEV(ThemeContext.Provider, {
252178
252158
  value: { colors: COLORS },
252179
252159
  children: children2
252180
252160
  }, undefined, false, undefined, this);
252181
252161
  }
252182
252162
 
252183
252163
  // ../../packages/tui/src/layouts/root-layout.tsx
252184
- var jsx_dev_runtime18 = __toESM(require_jsx_dev_runtime(), 1);
252185
- function RootLayout({ children: children2 }) {
252186
- return /* @__PURE__ */ jsx_dev_runtime18.jsxDEV(ThemeProvider, {
252187
- children: /* @__PURE__ */ jsx_dev_runtime18.jsxDEV(KeyboardLayerProvider, {
252188
- children: /* @__PURE__ */ jsx_dev_runtime18.jsxDEV(ToastProvider, {
252189
- children: /* @__PURE__ */ jsx_dev_runtime18.jsxDEV(DialogProvider, {
252164
+ var jsx_dev_runtime17 = __toESM(require_jsx_dev_runtime(), 1);
252165
+ function RootLayout({ children: children2, onToast }) {
252166
+ return /* @__PURE__ */ jsx_dev_runtime17.jsxDEV(ThemeProvider, {
252167
+ children: /* @__PURE__ */ jsx_dev_runtime17.jsxDEV(KeyboardLayerProvider, {
252168
+ children: /* @__PURE__ */ jsx_dev_runtime17.jsxDEV(ToastProvider, {
252169
+ onToast,
252170
+ children: /* @__PURE__ */ jsx_dev_runtime17.jsxDEV(DialogProvider, {
252190
252171
  children: children2
252191
252172
  }, undefined, false, undefined, this)
252192
252173
  }, undefined, false, undefined, this)
@@ -252194,27 +252175,27 @@ function RootLayout({ children: children2 }) {
252194
252175
  }, undefined, false, undefined, this);
252195
252176
  }
252196
252177
  // ../../packages/tui/src/components/menus/menu-items.tsx
252197
- var jsx_dev_runtime19 = __toESM(require_jsx_dev_runtime(), 1);
252198
- var CustomIndicator = ({ isSelected }) => /* @__PURE__ */ jsx_dev_runtime19.jsxDEV(Box_default, {
252178
+ var jsx_dev_runtime18 = __toESM(require_jsx_dev_runtime(), 1);
252179
+ var CustomIndicator = ({ isSelected }) => /* @__PURE__ */ jsx_dev_runtime18.jsxDEV(Box_default, {
252199
252180
  marginRight: 1,
252200
- children: /* @__PURE__ */ jsx_dev_runtime19.jsxDEV(Text3, {
252181
+ children: /* @__PURE__ */ jsx_dev_runtime18.jsxDEV(Text3, {
252201
252182
  color: "#89B4F8",
252202
252183
  children: isSelected ? "❯" : " "
252203
252184
  }, undefined, false, undefined, this)
252204
252185
  }, undefined, false, undefined, this);
252205
- var CustomItem = ({ label, isSelected }) => /* @__PURE__ */ jsx_dev_runtime19.jsxDEV(Text3, {
252186
+ var CustomItem = ({ label, isSelected }) => /* @__PURE__ */ jsx_dev_runtime18.jsxDEV(Text3, {
252206
252187
  color: isSelected ? "#89B4F8" : "white",
252207
252188
  children: isSelected ? label : label
252208
252189
  }, undefined, false, undefined, this);
252209
252190
  // ../../node_modules/.bun/ink-text-input@6.0.0+99d24c251f842efe/node_modules/ink-text-input/build/index.js
252210
- var import_react47 = __toESM(require_react(), 1);
252191
+ var import_react46 = __toESM(require_react(), 1);
252211
252192
  function TextInput({ value: originalValue, placeholder = "", focus = true, mask, highlightPastedText = false, showCursor = true, onChange, onSubmit }) {
252212
- const [state, setState] = import_react47.useState({
252193
+ const [state, setState] = import_react46.useState({
252213
252194
  cursorOffset: (originalValue || "").length,
252214
252195
  cursorWidth: 0
252215
252196
  });
252216
252197
  const { cursorOffset, cursorWidth } = state;
252217
- import_react47.useEffect(() => {
252198
+ import_react46.useEffect(() => {
252218
252199
  setState((previousState) => {
252219
252200
  if (!focus || !showCursor) {
252220
252201
  return previousState;
@@ -252292,21 +252273,21 @@ function TextInput({ value: originalValue, placeholder = "", focus = true, mask,
252292
252273
  onChange(nextValue);
252293
252274
  }
252294
252275
  }, { isActive: focus });
252295
- return import_react47.default.createElement(Text3, null, placeholder ? value.length > 0 ? renderedValue : renderedPlaceholder : renderedValue);
252276
+ return import_react46.default.createElement(Text3, null, placeholder ? value.length > 0 ? renderedValue : renderedPlaceholder : renderedValue);
252296
252277
  }
252297
252278
  var build_default2 = TextInput;
252298
252279
 
252299
252280
  // ../../packages/tui/src/components/menus/byok-key-menu.tsx
252300
- var jsx_dev_runtime20 = __toESM(require_jsx_dev_runtime(), 1);
252281
+ var jsx_dev_runtime19 = __toESM(require_jsx_dev_runtime(), 1);
252301
252282
  function ByokKeyMenu(props) {
252302
252283
  const { selectedProvider, apiKey, setApiKey, handleKeySubmit } = props;
252303
- return /* @__PURE__ */ jsx_dev_runtime20.jsxDEV(Box_default, {
252284
+ return /* @__PURE__ */ jsx_dev_runtime19.jsxDEV(Box_default, {
252304
252285
  flexDirection: "column",
252305
252286
  paddingX: 1,
252306
252287
  children: [
252307
- /* @__PURE__ */ jsx_dev_runtime20.jsxDEV(Box_default, {
252288
+ /* @__PURE__ */ jsx_dev_runtime19.jsxDEV(Box_default, {
252308
252289
  marginBottom: 1,
252309
- children: /* @__PURE__ */ jsx_dev_runtime20.jsxDEV(Text3, {
252290
+ children: /* @__PURE__ */ jsx_dev_runtime19.jsxDEV(Text3, {
252310
252291
  color: "white",
252311
252292
  children: [
252312
252293
  "Enter API Key for ",
@@ -252315,9 +252296,9 @@ function ByokKeyMenu(props) {
252315
252296
  ]
252316
252297
  }, undefined, true, undefined, this)
252317
252298
  }, undefined, false, undefined, this),
252318
- /* @__PURE__ */ jsx_dev_runtime20.jsxDEV(Box_default, {
252299
+ /* @__PURE__ */ jsx_dev_runtime19.jsxDEV(Box_default, {
252319
252300
  children: [
252320
- /* @__PURE__ */ jsx_dev_runtime20.jsxDEV(Text3, {
252301
+ /* @__PURE__ */ jsx_dev_runtime19.jsxDEV(Text3, {
252321
252302
  color: "#89B4F8",
252322
252303
  bold: false,
252323
252304
  children: [
@@ -252325,7 +252306,7 @@ function ByokKeyMenu(props) {
252325
252306
  " "
252326
252307
  ]
252327
252308
  }, undefined, true, undefined, this),
252328
- /* @__PURE__ */ jsx_dev_runtime20.jsxDEV(build_default2, {
252309
+ /* @__PURE__ */ jsx_dev_runtime19.jsxDEV(build_default2, {
252329
252310
  focus: true,
252330
252311
  value: apiKey,
252331
252312
  onChange: setApiKey,
@@ -252334,28 +252315,28 @@ function ByokKeyMenu(props) {
252334
252315
  }, undefined, false, undefined, this)
252335
252316
  ]
252336
252317
  }, undefined, true, undefined, this),
252337
- /* @__PURE__ */ jsx_dev_runtime20.jsxDEV(Box_default, {
252318
+ /* @__PURE__ */ jsx_dev_runtime19.jsxDEV(Box_default, {
252338
252319
  paddingTop: 1,
252339
- children: /* @__PURE__ */ jsx_dev_runtime20.jsxDEV(Box_default, {
252320
+ children: /* @__PURE__ */ jsx_dev_runtime19.jsxDEV(Box_default, {
252340
252321
  gap: 1,
252341
252322
  children: [
252342
- /* @__PURE__ */ jsx_dev_runtime20.jsxDEV(Text3, {
252323
+ /* @__PURE__ */ jsx_dev_runtime19.jsxDEV(Text3, {
252343
252324
  color: "#89B4F8",
252344
252325
  children: "enter"
252345
252326
  }, undefined, false, undefined, this),
252346
- /* @__PURE__ */ jsx_dev_runtime20.jsxDEV(Text3, {
252327
+ /* @__PURE__ */ jsx_dev_runtime19.jsxDEV(Text3, {
252347
252328
  color: "#AAAAAA",
252348
252329
  children: "Submit"
252349
252330
  }, undefined, false, undefined, this),
252350
- /* @__PURE__ */ jsx_dev_runtime20.jsxDEV(Text3, {
252331
+ /* @__PURE__ */ jsx_dev_runtime19.jsxDEV(Text3, {
252351
252332
  color: "#AAAAAA",
252352
252333
  children: "·"
252353
252334
  }, undefined, false, undefined, this),
252354
- /* @__PURE__ */ jsx_dev_runtime20.jsxDEV(Text3, {
252335
+ /* @__PURE__ */ jsx_dev_runtime19.jsxDEV(Text3, {
252355
252336
  color: "#89B4F8",
252356
252337
  children: "esc"
252357
252338
  }, undefined, false, undefined, this),
252358
- /* @__PURE__ */ jsx_dev_runtime20.jsxDEV(Text3, {
252339
+ /* @__PURE__ */ jsx_dev_runtime19.jsxDEV(Text3, {
252359
252340
  color: "#AAAAAA",
252360
252341
  children: "Cancel"
252361
252342
  }, undefined, false, undefined, this)
@@ -252367,7 +252348,7 @@ function ByokKeyMenu(props) {
252367
252348
  }
252368
252349
 
252369
252350
  // ../../node_modules/.bun/ink-select-input@6.2.0+99d24c251f842efe/node_modules/ink-select-input/build/Indicator.js
252370
- var import_react48 = __toESM(require_react(), 1);
252351
+ var import_react47 = __toESM(require_react(), 1);
252371
252352
 
252372
252353
  // ../../node_modules/.bun/is-unicode-supported@2.1.0/node_modules/is-unicode-supported/index.js
252373
252354
  import process16 from "node:process";
@@ -252658,17 +252639,17 @@ var replacements = Object.entries(specialMainSymbols);
252658
252639
 
252659
252640
  // ../../node_modules/.bun/ink-select-input@6.2.0+99d24c251f842efe/node_modules/ink-select-input/build/Indicator.js
252660
252641
  function Indicator({ isSelected = false }) {
252661
- return import_react48.default.createElement(Box_default, { marginRight: 1 }, isSelected ? import_react48.default.createElement(Text3, { color: "blue" }, figures_default.pointer) : import_react48.default.createElement(Text3, null, " "));
252642
+ return import_react47.default.createElement(Box_default, { marginRight: 1 }, isSelected ? import_react47.default.createElement(Text3, { color: "blue" }, figures_default.pointer) : import_react47.default.createElement(Text3, null, " "));
252662
252643
  }
252663
252644
  var Indicator_default = Indicator;
252664
252645
  // ../../node_modules/.bun/ink-select-input@6.2.0+99d24c251f842efe/node_modules/ink-select-input/build/Item.js
252665
- var React20 = __toESM(require_react(), 1);
252646
+ var React19 = __toESM(require_react(), 1);
252666
252647
  function Item({ isSelected = false, label }) {
252667
- return React20.createElement(Text3, { color: isSelected ? "blue" : undefined }, label);
252648
+ return React19.createElement(Text3, { color: isSelected ? "blue" : undefined }, label);
252668
252649
  }
252669
252650
  var Item_default = Item;
252670
252651
  // ../../node_modules/.bun/ink-select-input@6.2.0+99d24c251f842efe/node_modules/ink-select-input/build/SelectInput.js
252671
- var import_react49 = __toESM(require_react(), 1);
252652
+ var import_react48 = __toESM(require_react(), 1);
252672
252653
  import { isDeepStrictEqual } from "node:util";
252673
252654
 
252674
252655
  // ../../node_modules/.bun/to-rotated@1.0.0/node_modules/to-rotated/index.js
@@ -252698,17 +252679,17 @@ function SelectInput({ items = [], isFocused = true, initialIndex = 0, indicator
252698
252679
  const hasLimit = typeof customLimit === "number" && items.length > customLimit;
252699
252680
  const limit3 = hasLimit ? Math.min(customLimit, items.length) : items.length;
252700
252681
  const lastIndex = limit3 - 1;
252701
- const [rotateIndex, setRotateIndex] = import_react49.useState(initialIndex > lastIndex ? lastIndex - initialIndex : 0);
252702
- const [selectedIndex, setSelectedIndex] = import_react49.useState(initialIndex ? initialIndex > lastIndex ? lastIndex : initialIndex : 0);
252703
- const previousItems = import_react49.useRef(items);
252704
- import_react49.useEffect(() => {
252682
+ const [rotateIndex, setRotateIndex] = import_react48.useState(initialIndex > lastIndex ? lastIndex - initialIndex : 0);
252683
+ const [selectedIndex, setSelectedIndex] = import_react48.useState(initialIndex ? initialIndex > lastIndex ? lastIndex : initialIndex : 0);
252684
+ const previousItems = import_react48.useRef(items);
252685
+ import_react48.useEffect(() => {
252705
252686
  if (!isDeepStrictEqual(previousItems.current.map((item) => item.value), items.map((item) => item.value))) {
252706
252687
  setRotateIndex(0);
252707
252688
  setSelectedIndex(0);
252708
252689
  }
252709
252690
  previousItems.current = items;
252710
252691
  }, [items]);
252711
- use_input_default(import_react49.useCallback((input, key) => {
252692
+ use_input_default(import_react48.useCallback((input, key) => {
252712
252693
  if (input === "k" || key.upArrow) {
252713
252694
  const lastIndex2 = (hasLimit ? limit3 : items.length) - 1;
252714
252695
  const atFirstIndex = selectedIndex === 0;
@@ -252760,28 +252741,28 @@ function SelectInput({ items = [], isFocused = true, initialIndex = 0, indicator
252760
252741
  onHighlight
252761
252742
  ]), { isActive: isFocused });
252762
252743
  const slicedItems = hasLimit ? toRotated(items, rotateIndex).slice(0, limit3) : items;
252763
- return import_react49.default.createElement(Box_default, { flexDirection: "column" }, slicedItems.map((item, index2) => {
252744
+ return import_react48.default.createElement(Box_default, { flexDirection: "column" }, slicedItems.map((item, index2) => {
252764
252745
  const isSelected = index2 === selectedIndex;
252765
- return import_react49.default.createElement(Box_default, { key: item.key ?? item.value }, import_react49.default.createElement(indicatorComponent, { isSelected }), import_react49.default.createElement(itemComponent, { ...item, isSelected }));
252746
+ return import_react48.default.createElement(Box_default, { key: item.key ?? item.value }, import_react48.default.createElement(indicatorComponent, { isSelected }), import_react48.default.createElement(itemComponent, { ...item, isSelected }));
252766
252747
  }));
252767
252748
  }
252768
252749
  var SelectInput_default = SelectInput;
252769
252750
  // ../../packages/tui/src/components/menus/byok-provider-menu.tsx
252770
- var jsx_dev_runtime21 = __toESM(require_jsx_dev_runtime(), 1);
252751
+ var jsx_dev_runtime20 = __toESM(require_jsx_dev_runtime(), 1);
252771
252752
  function ByokProviderMenu(props) {
252772
252753
  const { handleProviderSelect } = props;
252773
- return /* @__PURE__ */ jsx_dev_runtime21.jsxDEV(Box_default, {
252754
+ return /* @__PURE__ */ jsx_dev_runtime20.jsxDEV(Box_default, {
252774
252755
  flexDirection: "column",
252775
252756
  paddingX: 1,
252776
252757
  children: [
252777
- /* @__PURE__ */ jsx_dev_runtime21.jsxDEV(Box_default, {
252758
+ /* @__PURE__ */ jsx_dev_runtime20.jsxDEV(Box_default, {
252778
252759
  marginBottom: 1,
252779
- children: /* @__PURE__ */ jsx_dev_runtime21.jsxDEV(Text3, {
252760
+ children: /* @__PURE__ */ jsx_dev_runtime20.jsxDEV(Text3, {
252780
252761
  color: "white",
252781
252762
  children: "Select API Provider:"
252782
252763
  }, undefined, false, undefined, this)
252783
252764
  }, undefined, false, undefined, this),
252784
- /* @__PURE__ */ jsx_dev_runtime21.jsxDEV(SelectInput_default, {
252765
+ /* @__PURE__ */ jsx_dev_runtime20.jsxDEV(SelectInput_default, {
252785
252766
  items: [
252786
252767
  { label: "Anthropic", value: "anthropic" },
252787
252768
  { label: "DeepSeek", value: "deepseek" },
@@ -252800,40 +252781,40 @@ function ByokProviderMenu(props) {
252800
252781
  indicatorComponent: CustomIndicator,
252801
252782
  itemComponent: CustomItem
252802
252783
  }, undefined, false, undefined, this),
252803
- /* @__PURE__ */ jsx_dev_runtime21.jsxDEV(Box_default, {
252784
+ /* @__PURE__ */ jsx_dev_runtime20.jsxDEV(Box_default, {
252804
252785
  paddingTop: 1,
252805
- children: /* @__PURE__ */ jsx_dev_runtime21.jsxDEV(Box_default, {
252786
+ children: /* @__PURE__ */ jsx_dev_runtime20.jsxDEV(Box_default, {
252806
252787
  gap: 1,
252807
252788
  children: [
252808
- /* @__PURE__ */ jsx_dev_runtime21.jsxDEV(Text3, {
252789
+ /* @__PURE__ */ jsx_dev_runtime20.jsxDEV(Text3, {
252809
252790
  color: "#89B4F8",
252810
252791
  children: "↑↓"
252811
252792
  }, undefined, false, undefined, this),
252812
- /* @__PURE__ */ jsx_dev_runtime21.jsxDEV(Text3, {
252793
+ /* @__PURE__ */ jsx_dev_runtime20.jsxDEV(Text3, {
252813
252794
  color: "#AAAAAA",
252814
252795
  children: "Navigate"
252815
252796
  }, undefined, false, undefined, this),
252816
- /* @__PURE__ */ jsx_dev_runtime21.jsxDEV(Text3, {
252797
+ /* @__PURE__ */ jsx_dev_runtime20.jsxDEV(Text3, {
252817
252798
  color: "#AAAAAA",
252818
252799
  children: "·"
252819
252800
  }, undefined, false, undefined, this),
252820
- /* @__PURE__ */ jsx_dev_runtime21.jsxDEV(Text3, {
252801
+ /* @__PURE__ */ jsx_dev_runtime20.jsxDEV(Text3, {
252821
252802
  color: "#89B4F8",
252822
252803
  children: "enter"
252823
252804
  }, undefined, false, undefined, this),
252824
- /* @__PURE__ */ jsx_dev_runtime21.jsxDEV(Text3, {
252805
+ /* @__PURE__ */ jsx_dev_runtime20.jsxDEV(Text3, {
252825
252806
  color: "#AAAAAA",
252826
252807
  children: "Select"
252827
252808
  }, undefined, false, undefined, this),
252828
- /* @__PURE__ */ jsx_dev_runtime21.jsxDEV(Text3, {
252809
+ /* @__PURE__ */ jsx_dev_runtime20.jsxDEV(Text3, {
252829
252810
  color: "#AAAAAA",
252830
252811
  children: "·"
252831
252812
  }, undefined, false, undefined, this),
252832
- /* @__PURE__ */ jsx_dev_runtime21.jsxDEV(Text3, {
252813
+ /* @__PURE__ */ jsx_dev_runtime20.jsxDEV(Text3, {
252833
252814
  color: "#89B4F8",
252834
252815
  children: "esc"
252835
252816
  }, undefined, false, undefined, this),
252836
- /* @__PURE__ */ jsx_dev_runtime21.jsxDEV(Text3, {
252817
+ /* @__PURE__ */ jsx_dev_runtime20.jsxDEV(Text3, {
252837
252818
  color: "#AAAAAA",
252838
252819
  children: "Cancel"
252839
252820
  }, undefined, false, undefined, this)
@@ -252845,7 +252826,7 @@ function ByokProviderMenu(props) {
252845
252826
  }
252846
252827
 
252847
252828
  // ../../packages/tui/src/components/menus/context-select-menu.tsx
252848
- var jsx_dev_runtime22 = __toESM(require_jsx_dev_runtime(), 1);
252829
+ var jsx_dev_runtime21 = __toESM(require_jsx_dev_runtime(), 1);
252849
252830
  function getModelLabel(id) {
252850
252831
  return id;
252851
252832
  }
@@ -252867,7 +252848,7 @@ function ContextSelectMenu(props) {
252867
252848
  let filled = 0;
252868
252849
  const addSquares = (count, char, color) => {
252869
252850
  for (let i2 = 0;i2 < count && filled < totalSquares; i2++) {
252870
- squares.push(/* @__PURE__ */ jsx_dev_runtime22.jsxDEV(Text3, {
252851
+ squares.push(/* @__PURE__ */ jsx_dev_runtime21.jsxDEV(Text3, {
252871
252852
  color,
252872
252853
  children: char
252873
252854
  }, filled, false, undefined, this));
@@ -252879,7 +252860,7 @@ function ContextSelectMenu(props) {
252879
252860
  addSquares(Math.round(toolTokens / maxTokens * totalSquares), "●", "#FCD34D");
252880
252861
  addSquares(Math.round(sysTokens / maxTokens * totalSquares), "●", "#AAAAAA");
252881
252862
  while (filled < totalSquares) {
252882
- squares.push(/* @__PURE__ */ jsx_dev_runtime22.jsxDEV(Text3, {
252863
+ squares.push(/* @__PURE__ */ jsx_dev_runtime21.jsxDEV(Text3, {
252883
252864
  color: "#444444",
252884
252865
  children: "□"
252885
252866
  }, filled, false, undefined, this));
@@ -252887,37 +252868,37 @@ function ContextSelectMenu(props) {
252887
252868
  }
252888
252869
  const gridRows = [];
252889
252870
  for (let i2 = 0;i2 < totalSquares; i2 += 20) {
252890
- gridRows.push(/* @__PURE__ */ jsx_dev_runtime22.jsxDEV(Box_default, {
252871
+ gridRows.push(/* @__PURE__ */ jsx_dev_runtime21.jsxDEV(Box_default, {
252891
252872
  gap: 1,
252892
252873
  children: squares.slice(i2, i2 + 20)
252893
252874
  }, i2, false, undefined, this));
252894
252875
  }
252895
- return /* @__PURE__ */ jsx_dev_runtime22.jsxDEV(Box_default, {
252876
+ return /* @__PURE__ */ jsx_dev_runtime21.jsxDEV(Box_default, {
252896
252877
  flexDirection: "column",
252897
252878
  paddingX: 1,
252898
252879
  children: [
252899
- /* @__PURE__ */ jsx_dev_runtime22.jsxDEV(Box_default, {
252880
+ /* @__PURE__ */ jsx_dev_runtime21.jsxDEV(Box_default, {
252900
252881
  marginBottom: 1,
252901
- children: /* @__PURE__ */ jsx_dev_runtime22.jsxDEV(Text3, {
252882
+ children: /* @__PURE__ */ jsx_dev_runtime21.jsxDEV(Text3, {
252902
252883
  bold: true,
252903
252884
  color: "white",
252904
252885
  children: "Context"
252905
252886
  }, undefined, false, undefined, this)
252906
252887
  }, undefined, false, undefined, this),
252907
- /* @__PURE__ */ jsx_dev_runtime22.jsxDEV(Box_default, {
252888
+ /* @__PURE__ */ jsx_dev_runtime21.jsxDEV(Box_default, {
252908
252889
  flexDirection: "row",
252909
252890
  gap: 4,
252910
252891
  children: [
252911
- /* @__PURE__ */ jsx_dev_runtime22.jsxDEV(Box_default, {
252892
+ /* @__PURE__ */ jsx_dev_runtime21.jsxDEV(Box_default, {
252912
252893
  flexDirection: "column",
252913
252894
  children: gridRows
252914
252895
  }, undefined, false, undefined, this),
252915
- /* @__PURE__ */ jsx_dev_runtime22.jsxDEV(Box_default, {
252896
+ /* @__PURE__ */ jsx_dev_runtime21.jsxDEV(Box_default, {
252916
252897
  flexDirection: "column",
252917
252898
  children: [
252918
- /* @__PURE__ */ jsx_dev_runtime22.jsxDEV(Box_default, {
252899
+ /* @__PURE__ */ jsx_dev_runtime21.jsxDEV(Box_default, {
252919
252900
  gap: 1,
252920
- children: /* @__PURE__ */ jsx_dev_runtime22.jsxDEV(Text3, {
252901
+ children: /* @__PURE__ */ jsx_dev_runtime21.jsxDEV(Text3, {
252921
252902
  color: "#AAAAAA",
252922
252903
  children: [
252923
252904
  currentModelName,
@@ -252931,24 +252912,24 @@ function ContextSelectMenu(props) {
252931
252912
  ]
252932
252913
  }, undefined, true, undefined, this)
252933
252914
  }, undefined, false, undefined, this),
252934
- /* @__PURE__ */ jsx_dev_runtime22.jsxDEV(Box_default, {
252915
+ /* @__PURE__ */ jsx_dev_runtime21.jsxDEV(Box_default, {
252935
252916
  marginTop: 1,
252936
- children: /* @__PURE__ */ jsx_dev_runtime22.jsxDEV(Text3, {
252917
+ children: /* @__PURE__ */ jsx_dev_runtime21.jsxDEV(Text3, {
252937
252918
  color: "white",
252938
252919
  children: "Token usage by category"
252939
252920
  }, undefined, false, undefined, this)
252940
252921
  }, undefined, false, undefined, this),
252941
- /* @__PURE__ */ jsx_dev_runtime22.jsxDEV(Box_default, {
252922
+ /* @__PURE__ */ jsx_dev_runtime21.jsxDEV(Box_default, {
252942
252923
  flexDirection: "column",
252943
252924
  children: [
252944
- /* @__PURE__ */ jsx_dev_runtime22.jsxDEV(Box_default, {
252925
+ /* @__PURE__ */ jsx_dev_runtime21.jsxDEV(Box_default, {
252945
252926
  gap: 1,
252946
252927
  children: [
252947
- /* @__PURE__ */ jsx_dev_runtime22.jsxDEV(Text3, {
252928
+ /* @__PURE__ */ jsx_dev_runtime21.jsxDEV(Text3, {
252948
252929
  color: "#89B4F8",
252949
252930
  children: "●"
252950
252931
  }, undefined, false, undefined, this),
252951
- /* @__PURE__ */ jsx_dev_runtime22.jsxDEV(Text3, {
252932
+ /* @__PURE__ */ jsx_dev_runtime21.jsxDEV(Text3, {
252952
252933
  color: "#AAAAAA",
252953
252934
  children: [
252954
252935
  "User messages: ",
@@ -252960,14 +252941,14 @@ function ContextSelectMenu(props) {
252960
252941
  }, undefined, true, undefined, this)
252961
252942
  ]
252962
252943
  }, undefined, true, undefined, this),
252963
- /* @__PURE__ */ jsx_dev_runtime22.jsxDEV(Box_default, {
252944
+ /* @__PURE__ */ jsx_dev_runtime21.jsxDEV(Box_default, {
252964
252945
  gap: 1,
252965
252946
  children: [
252966
- /* @__PURE__ */ jsx_dev_runtime22.jsxDEV(Text3, {
252947
+ /* @__PURE__ */ jsx_dev_runtime21.jsxDEV(Text3, {
252967
252948
  color: "#6EE7B7",
252968
252949
  children: "●"
252969
252950
  }, undefined, false, undefined, this),
252970
- /* @__PURE__ */ jsx_dev_runtime22.jsxDEV(Text3, {
252951
+ /* @__PURE__ */ jsx_dev_runtime21.jsxDEV(Text3, {
252971
252952
  color: "#AAAAAA",
252972
252953
  children: [
252973
252954
  "Agent responses: ",
@@ -252979,14 +252960,14 @@ function ContextSelectMenu(props) {
252979
252960
  }, undefined, true, undefined, this)
252980
252961
  ]
252981
252962
  }, undefined, true, undefined, this),
252982
- /* @__PURE__ */ jsx_dev_runtime22.jsxDEV(Box_default, {
252963
+ /* @__PURE__ */ jsx_dev_runtime21.jsxDEV(Box_default, {
252983
252964
  gap: 1,
252984
252965
  children: [
252985
- /* @__PURE__ */ jsx_dev_runtime22.jsxDEV(Text3, {
252966
+ /* @__PURE__ */ jsx_dev_runtime21.jsxDEV(Text3, {
252986
252967
  color: "#FCD34D",
252987
252968
  children: "●"
252988
252969
  }, undefined, false, undefined, this),
252989
- /* @__PURE__ */ jsx_dev_runtime22.jsxDEV(Text3, {
252970
+ /* @__PURE__ */ jsx_dev_runtime21.jsxDEV(Text3, {
252990
252971
  color: "#AAAAAA",
252991
252972
  children: [
252992
252973
  "Tool calls: ",
@@ -252998,14 +252979,14 @@ function ContextSelectMenu(props) {
252998
252979
  }, undefined, true, undefined, this)
252999
252980
  ]
253000
252981
  }, undefined, true, undefined, this),
253001
- /* @__PURE__ */ jsx_dev_runtime22.jsxDEV(Box_default, {
252982
+ /* @__PURE__ */ jsx_dev_runtime21.jsxDEV(Box_default, {
253002
252983
  gap: 1,
253003
252984
  children: [
253004
- /* @__PURE__ */ jsx_dev_runtime22.jsxDEV(Text3, {
252985
+ /* @__PURE__ */ jsx_dev_runtime21.jsxDEV(Text3, {
253005
252986
  color: "#AAAAAA",
253006
252987
  children: "●"
253007
252988
  }, undefined, false, undefined, this),
253008
- /* @__PURE__ */ jsx_dev_runtime22.jsxDEV(Text3, {
252989
+ /* @__PURE__ */ jsx_dev_runtime21.jsxDEV(Text3, {
253009
252990
  color: "#AAAAAA",
253010
252991
  children: [
253011
252992
  "System prompt: ",
@@ -253017,14 +252998,14 @@ function ContextSelectMenu(props) {
253017
252998
  }, undefined, true, undefined, this)
253018
252999
  ]
253019
253000
  }, undefined, true, undefined, this),
253020
- /* @__PURE__ */ jsx_dev_runtime22.jsxDEV(Box_default, {
253001
+ /* @__PURE__ */ jsx_dev_runtime21.jsxDEV(Box_default, {
253021
253002
  gap: 1,
253022
253003
  children: [
253023
- /* @__PURE__ */ jsx_dev_runtime22.jsxDEV(Text3, {
253004
+ /* @__PURE__ */ jsx_dev_runtime21.jsxDEV(Text3, {
253024
253005
  color: "#444444",
253025
253006
  children: "□"
253026
253007
  }, undefined, false, undefined, this),
253027
- /* @__PURE__ */ jsx_dev_runtime22.jsxDEV(Text3, {
253008
+ /* @__PURE__ */ jsx_dev_runtime21.jsxDEV(Text3, {
253028
253009
  color: "#AAAAAA",
253029
253010
  children: [
253030
253011
  "Free space: ",
@@ -253042,16 +253023,16 @@ function ContextSelectMenu(props) {
253042
253023
  }, undefined, true, undefined, this)
253043
253024
  ]
253044
253025
  }, undefined, true, undefined, this),
253045
- /* @__PURE__ */ jsx_dev_runtime22.jsxDEV(Box_default, {
253026
+ /* @__PURE__ */ jsx_dev_runtime21.jsxDEV(Box_default, {
253046
253027
  paddingTop: 1,
253047
- children: /* @__PURE__ */ jsx_dev_runtime22.jsxDEV(Box_default, {
253028
+ children: /* @__PURE__ */ jsx_dev_runtime21.jsxDEV(Box_default, {
253048
253029
  gap: 1,
253049
253030
  children: [
253050
- /* @__PURE__ */ jsx_dev_runtime22.jsxDEV(Text3, {
253031
+ /* @__PURE__ */ jsx_dev_runtime21.jsxDEV(Text3, {
253051
253032
  color: "#89B4F8",
253052
253033
  children: "esc"
253053
253034
  }, undefined, false, undefined, this),
253054
- /* @__PURE__ */ jsx_dev_runtime22.jsxDEV(Text3, {
253035
+ /* @__PURE__ */ jsx_dev_runtime21.jsxDEV(Text3, {
253055
253036
  color: "#AAAAAA",
253056
253037
  children: "Cancel"
253057
253038
  }, undefined, false, undefined, this)
@@ -253063,21 +253044,21 @@ function ContextSelectMenu(props) {
253063
253044
  }
253064
253045
 
253065
253046
  // ../../packages/tui/src/components/menus/december-login-select-menu.tsx
253066
- var jsx_dev_runtime23 = __toESM(require_jsx_dev_runtime(), 1);
253047
+ var jsx_dev_runtime22 = __toESM(require_jsx_dev_runtime(), 1);
253067
253048
  function DecemberLoginSelectMenu(props) {
253068
253049
  const { handleAuthMenuSelect } = props;
253069
- return /* @__PURE__ */ jsx_dev_runtime23.jsxDEV(Box_default, {
253050
+ return /* @__PURE__ */ jsx_dev_runtime22.jsxDEV(Box_default, {
253070
253051
  flexDirection: "column",
253071
253052
  paddingX: 1,
253072
253053
  children: [
253073
- /* @__PURE__ */ jsx_dev_runtime23.jsxDEV(Box_default, {
253054
+ /* @__PURE__ */ jsx_dev_runtime22.jsxDEV(Box_default, {
253074
253055
  marginBottom: 1,
253075
- children: /* @__PURE__ */ jsx_dev_runtime23.jsxDEV(Text3, {
253056
+ children: /* @__PURE__ */ jsx_dev_runtime22.jsxDEV(Text3, {
253076
253057
  color: "white",
253077
253058
  children: "Select December login method:"
253078
253059
  }, undefined, false, undefined, this)
253079
253060
  }, undefined, false, undefined, this),
253080
- /* @__PURE__ */ jsx_dev_runtime23.jsxDEV(SelectInput_default, {
253061
+ /* @__PURE__ */ jsx_dev_runtime22.jsxDEV(SelectInput_default, {
253081
253062
  items: [
253082
253063
  { label: "Login via Browser (Local)", value: "december_browser" },
253083
253064
  {
@@ -253089,40 +253070,40 @@ function DecemberLoginSelectMenu(props) {
253089
253070
  indicatorComponent: CustomIndicator,
253090
253071
  itemComponent: CustomItem
253091
253072
  }, undefined, false, undefined, this),
253092
- /* @__PURE__ */ jsx_dev_runtime23.jsxDEV(Box_default, {
253073
+ /* @__PURE__ */ jsx_dev_runtime22.jsxDEV(Box_default, {
253093
253074
  paddingTop: 1,
253094
- children: /* @__PURE__ */ jsx_dev_runtime23.jsxDEV(Box_default, {
253075
+ children: /* @__PURE__ */ jsx_dev_runtime22.jsxDEV(Box_default, {
253095
253076
  gap: 1,
253096
253077
  children: [
253097
- /* @__PURE__ */ jsx_dev_runtime23.jsxDEV(Text3, {
253078
+ /* @__PURE__ */ jsx_dev_runtime22.jsxDEV(Text3, {
253098
253079
  color: "#89B4F8",
253099
253080
  children: "↑↓"
253100
253081
  }, undefined, false, undefined, this),
253101
- /* @__PURE__ */ jsx_dev_runtime23.jsxDEV(Text3, {
253082
+ /* @__PURE__ */ jsx_dev_runtime22.jsxDEV(Text3, {
253102
253083
  color: "#AAAAAA",
253103
253084
  children: "Navigate"
253104
253085
  }, undefined, false, undefined, this),
253105
- /* @__PURE__ */ jsx_dev_runtime23.jsxDEV(Text3, {
253086
+ /* @__PURE__ */ jsx_dev_runtime22.jsxDEV(Text3, {
253106
253087
  color: "#AAAAAA",
253107
253088
  children: "·"
253108
253089
  }, undefined, false, undefined, this),
253109
- /* @__PURE__ */ jsx_dev_runtime23.jsxDEV(Text3, {
253090
+ /* @__PURE__ */ jsx_dev_runtime22.jsxDEV(Text3, {
253110
253091
  color: "#89B4F8",
253111
253092
  children: "enter"
253112
253093
  }, undefined, false, undefined, this),
253113
- /* @__PURE__ */ jsx_dev_runtime23.jsxDEV(Text3, {
253094
+ /* @__PURE__ */ jsx_dev_runtime22.jsxDEV(Text3, {
253114
253095
  color: "#AAAAAA",
253115
253096
  children: "Select"
253116
253097
  }, undefined, false, undefined, this),
253117
- /* @__PURE__ */ jsx_dev_runtime23.jsxDEV(Text3, {
253098
+ /* @__PURE__ */ jsx_dev_runtime22.jsxDEV(Text3, {
253118
253099
  color: "#AAAAAA",
253119
253100
  children: "·"
253120
253101
  }, undefined, false, undefined, this),
253121
- /* @__PURE__ */ jsx_dev_runtime23.jsxDEV(Text3, {
253102
+ /* @__PURE__ */ jsx_dev_runtime22.jsxDEV(Text3, {
253122
253103
  color: "#89B4F8",
253123
253104
  children: "esc"
253124
253105
  }, undefined, false, undefined, this),
253125
- /* @__PURE__ */ jsx_dev_runtime23.jsxDEV(Text3, {
253106
+ /* @__PURE__ */ jsx_dev_runtime22.jsxDEV(Text3, {
253126
253107
  color: "#AAAAAA",
253127
253108
  children: "Cancel"
253128
253109
  }, undefined, false, undefined, this)
@@ -253134,7 +253115,7 @@ function DecemberLoginSelectMenu(props) {
253134
253115
  }
253135
253116
 
253136
253117
  // ../../packages/tui/src/components/menus/grill-question-menu.tsx
253137
- var jsx_dev_runtime24 = __toESM(require_jsx_dev_runtime(), 1);
253118
+ var jsx_dev_runtime23 = __toESM(require_jsx_dev_runtime(), 1);
253138
253119
  function GrillQuestionMenu(props) {
253139
253120
  const {
253140
253121
  grillQuestions,
@@ -253155,15 +253136,15 @@ function GrillQuestionMenu(props) {
253155
253136
  ...q2.options.map((opt, i2) => ({ label: `${i2 + 1}. ${opt}`, value: opt })),
253156
253137
  { label: `${q2.options.length + 1}. Write-in...`, value: "custom" }
253157
253138
  ];
253158
- return /* @__PURE__ */ jsx_dev_runtime24.jsxDEV(Box_default, {
253139
+ return /* @__PURE__ */ jsx_dev_runtime23.jsxDEV(Box_default, {
253159
253140
  flexDirection: "column",
253160
253141
  paddingX: 1,
253161
253142
  children: [
253162
- /* @__PURE__ */ jsx_dev_runtime24.jsxDEV(Box_default, {
253143
+ /* @__PURE__ */ jsx_dev_runtime23.jsxDEV(Box_default, {
253163
253144
  marginBottom: 1,
253164
253145
  flexDirection: "column",
253165
253146
  children: [
253166
- /* @__PURE__ */ jsx_dev_runtime24.jsxDEV(Text3, {
253147
+ /* @__PURE__ */ jsx_dev_runtime23.jsxDEV(Text3, {
253167
253148
  color: "#89B4F8",
253168
253149
  bold: true,
253169
253150
  children: [
@@ -253174,55 +253155,55 @@ function GrillQuestionMenu(props) {
253174
253155
  ":"
253175
253156
  ]
253176
253157
  }, undefined, true, undefined, this),
253177
- /* @__PURE__ */ jsx_dev_runtime24.jsxDEV(Text3, {
253158
+ /* @__PURE__ */ jsx_dev_runtime23.jsxDEV(Text3, {
253178
253159
  color: "white",
253179
253160
  bold: true,
253180
253161
  children: q2.question
253181
253162
  }, undefined, false, undefined, this)
253182
253163
  ]
253183
253164
  }, undefined, true, undefined, this),
253184
- !customInputMode ? /* @__PURE__ */ jsx_dev_runtime24.jsxDEV(jsx_dev_runtime24.Fragment, {
253165
+ !customInputMode ? /* @__PURE__ */ jsx_dev_runtime23.jsxDEV(jsx_dev_runtime23.Fragment, {
253185
253166
  children: [
253186
- /* @__PURE__ */ jsx_dev_runtime24.jsxDEV(SelectInput_default, {
253167
+ /* @__PURE__ */ jsx_dev_runtime23.jsxDEV(SelectInput_default, {
253187
253168
  items,
253188
253169
  onSelect: handleGrillSelect,
253189
253170
  indicatorComponent: CustomIndicator,
253190
253171
  itemComponent: CustomItem
253191
253172
  }, undefined, false, undefined, this),
253192
- /* @__PURE__ */ jsx_dev_runtime24.jsxDEV(Box_default, {
253173
+ /* @__PURE__ */ jsx_dev_runtime23.jsxDEV(Box_default, {
253193
253174
  paddingTop: 1,
253194
- children: /* @__PURE__ */ jsx_dev_runtime24.jsxDEV(Box_default, {
253175
+ children: /* @__PURE__ */ jsx_dev_runtime23.jsxDEV(Box_default, {
253195
253176
  gap: 1,
253196
253177
  children: [
253197
- /* @__PURE__ */ jsx_dev_runtime24.jsxDEV(Text3, {
253178
+ /* @__PURE__ */ jsx_dev_runtime23.jsxDEV(Text3, {
253198
253179
  color: "#89B4F8",
253199
253180
  children: "↑↓"
253200
253181
  }, undefined, false, undefined, this),
253201
- /* @__PURE__ */ jsx_dev_runtime24.jsxDEV(Text3, {
253182
+ /* @__PURE__ */ jsx_dev_runtime23.jsxDEV(Text3, {
253202
253183
  color: "#AAAAAA",
253203
253184
  children: "Navigate"
253204
253185
  }, undefined, false, undefined, this),
253205
- /* @__PURE__ */ jsx_dev_runtime24.jsxDEV(Text3, {
253186
+ /* @__PURE__ */ jsx_dev_runtime23.jsxDEV(Text3, {
253206
253187
  color: "#AAAAAA",
253207
253188
  children: "·"
253208
253189
  }, undefined, false, undefined, this),
253209
- /* @__PURE__ */ jsx_dev_runtime24.jsxDEV(Text3, {
253190
+ /* @__PURE__ */ jsx_dev_runtime23.jsxDEV(Text3, {
253210
253191
  color: "#89B4F8",
253211
253192
  children: "enter"
253212
253193
  }, undefined, false, undefined, this),
253213
- /* @__PURE__ */ jsx_dev_runtime24.jsxDEV(Text3, {
253194
+ /* @__PURE__ */ jsx_dev_runtime23.jsxDEV(Text3, {
253214
253195
  color: "#AAAAAA",
253215
253196
  children: "Select"
253216
253197
  }, undefined, false, undefined, this),
253217
- /* @__PURE__ */ jsx_dev_runtime24.jsxDEV(Text3, {
253198
+ /* @__PURE__ */ jsx_dev_runtime23.jsxDEV(Text3, {
253218
253199
  color: "#AAAAAA",
253219
253200
  children: "·"
253220
253201
  }, undefined, false, undefined, this),
253221
- /* @__PURE__ */ jsx_dev_runtime24.jsxDEV(Text3, {
253202
+ /* @__PURE__ */ jsx_dev_runtime23.jsxDEV(Text3, {
253222
253203
  color: "#89B4F8",
253223
253204
  children: "esc"
253224
253205
  }, undefined, false, undefined, this),
253225
- /* @__PURE__ */ jsx_dev_runtime24.jsxDEV(Text3, {
253206
+ /* @__PURE__ */ jsx_dev_runtime23.jsxDEV(Text3, {
253226
253207
  color: "#AAAAAA",
253227
253208
  children: "Cancel"
253228
253209
  }, undefined, false, undefined, this)
@@ -253230,19 +253211,19 @@ function GrillQuestionMenu(props) {
253230
253211
  }, undefined, true, undefined, this)
253231
253212
  }, undefined, false, undefined, this)
253232
253213
  ]
253233
- }, undefined, true, undefined, this) : /* @__PURE__ */ jsx_dev_runtime24.jsxDEV(Box_default, {
253214
+ }, undefined, true, undefined, this) : /* @__PURE__ */ jsx_dev_runtime23.jsxDEV(Box_default, {
253234
253215
  flexDirection: "column",
253235
253216
  gap: 1,
253236
253217
  children: [
253237
- /* @__PURE__ */ jsx_dev_runtime24.jsxDEV(Box_default, {
253218
+ /* @__PURE__ */ jsx_dev_runtime23.jsxDEV(Box_default, {
253238
253219
  flexDirection: "row",
253239
253220
  gap: 1,
253240
253221
  children: [
253241
- /* @__PURE__ */ jsx_dev_runtime24.jsxDEV(Text3, {
253222
+ /* @__PURE__ */ jsx_dev_runtime23.jsxDEV(Text3, {
253242
253223
  color: "#89B4F8",
253243
253224
  children: "Your answer:"
253244
253225
  }, undefined, false, undefined, this),
253245
- /* @__PURE__ */ jsx_dev_runtime24.jsxDEV(build_default2, {
253226
+ /* @__PURE__ */ jsx_dev_runtime23.jsxDEV(build_default2, {
253246
253227
  focus: true,
253247
253228
  value: customAnswer,
253248
253229
  onChange: setCustomAnswer,
@@ -253263,28 +253244,28 @@ function GrillQuestionMenu(props) {
253263
253244
  }, undefined, false, undefined, this)
253264
253245
  ]
253265
253246
  }, undefined, true, undefined, this),
253266
- /* @__PURE__ */ jsx_dev_runtime24.jsxDEV(Box_default, {
253247
+ /* @__PURE__ */ jsx_dev_runtime23.jsxDEV(Box_default, {
253267
253248
  paddingTop: 1,
253268
- children: /* @__PURE__ */ jsx_dev_runtime24.jsxDEV(Box_default, {
253249
+ children: /* @__PURE__ */ jsx_dev_runtime23.jsxDEV(Box_default, {
253269
253250
  gap: 1,
253270
253251
  children: [
253271
- /* @__PURE__ */ jsx_dev_runtime24.jsxDEV(Text3, {
253252
+ /* @__PURE__ */ jsx_dev_runtime23.jsxDEV(Text3, {
253272
253253
  color: "#89B4F8",
253273
253254
  children: "enter"
253274
253255
  }, undefined, false, undefined, this),
253275
- /* @__PURE__ */ jsx_dev_runtime24.jsxDEV(Text3, {
253256
+ /* @__PURE__ */ jsx_dev_runtime23.jsxDEV(Text3, {
253276
253257
  color: "#AAAAAA",
253277
253258
  children: "Submit"
253278
253259
  }, undefined, false, undefined, this),
253279
- /* @__PURE__ */ jsx_dev_runtime24.jsxDEV(Text3, {
253260
+ /* @__PURE__ */ jsx_dev_runtime23.jsxDEV(Text3, {
253280
253261
  color: "#AAAAAA",
253281
253262
  children: "·"
253282
253263
  }, undefined, false, undefined, this),
253283
- /* @__PURE__ */ jsx_dev_runtime24.jsxDEV(Text3, {
253264
+ /* @__PURE__ */ jsx_dev_runtime23.jsxDEV(Text3, {
253284
253265
  color: "#89B4F8",
253285
253266
  children: "esc"
253286
253267
  }, undefined, false, undefined, this),
253287
- /* @__PURE__ */ jsx_dev_runtime24.jsxDEV(Text3, {
253268
+ /* @__PURE__ */ jsx_dev_runtime23.jsxDEV(Text3, {
253288
253269
  color: "#AAAAAA",
253289
253270
  children: "Cancel"
253290
253271
  }, undefined, false, undefined, this)
@@ -253300,60 +253281,60 @@ function GrillQuestionMenu(props) {
253300
253281
  }
253301
253282
 
253302
253283
  // ../../packages/tui/src/components/menus/logout-select-menu.tsx
253303
- var jsx_dev_runtime25 = __toESM(require_jsx_dev_runtime(), 1);
253284
+ var jsx_dev_runtime24 = __toESM(require_jsx_dev_runtime(), 1);
253304
253285
  function LogoutSelectMenu(props) {
253305
253286
  const { handleLogoutSelect, logoutItems } = props;
253306
- return /* @__PURE__ */ jsx_dev_runtime25.jsxDEV(Box_default, {
253287
+ return /* @__PURE__ */ jsx_dev_runtime24.jsxDEV(Box_default, {
253307
253288
  flexDirection: "column",
253308
253289
  paddingX: 1,
253309
253290
  children: [
253310
- /* @__PURE__ */ jsx_dev_runtime25.jsxDEV(Box_default, {
253291
+ /* @__PURE__ */ jsx_dev_runtime24.jsxDEV(Box_default, {
253311
253292
  marginBottom: 1,
253312
- children: /* @__PURE__ */ jsx_dev_runtime25.jsxDEV(Text3, {
253293
+ children: /* @__PURE__ */ jsx_dev_runtime24.jsxDEV(Text3, {
253313
253294
  color: "white",
253314
253295
  children: "Select credential to remove:"
253315
253296
  }, undefined, false, undefined, this)
253316
253297
  }, undefined, false, undefined, this),
253317
- /* @__PURE__ */ jsx_dev_runtime25.jsxDEV(SelectInput_default, {
253298
+ /* @__PURE__ */ jsx_dev_runtime24.jsxDEV(SelectInput_default, {
253318
253299
  items: logoutItems,
253319
253300
  onSelect: (item) => handleLogoutSelect(item.value),
253320
253301
  indicatorComponent: CustomIndicator,
253321
253302
  itemComponent: CustomItem
253322
253303
  }, undefined, false, undefined, this),
253323
- /* @__PURE__ */ jsx_dev_runtime25.jsxDEV(Box_default, {
253304
+ /* @__PURE__ */ jsx_dev_runtime24.jsxDEV(Box_default, {
253324
253305
  paddingTop: 1,
253325
- children: /* @__PURE__ */ jsx_dev_runtime25.jsxDEV(Box_default, {
253306
+ children: /* @__PURE__ */ jsx_dev_runtime24.jsxDEV(Box_default, {
253326
253307
  gap: 1,
253327
253308
  children: [
253328
- /* @__PURE__ */ jsx_dev_runtime25.jsxDEV(Text3, {
253309
+ /* @__PURE__ */ jsx_dev_runtime24.jsxDEV(Text3, {
253329
253310
  color: "#89B4F8",
253330
253311
  children: "↑↓"
253331
253312
  }, undefined, false, undefined, this),
253332
- /* @__PURE__ */ jsx_dev_runtime25.jsxDEV(Text3, {
253313
+ /* @__PURE__ */ jsx_dev_runtime24.jsxDEV(Text3, {
253333
253314
  color: "#AAAAAA",
253334
253315
  children: "Navigate"
253335
253316
  }, undefined, false, undefined, this),
253336
- /* @__PURE__ */ jsx_dev_runtime25.jsxDEV(Text3, {
253317
+ /* @__PURE__ */ jsx_dev_runtime24.jsxDEV(Text3, {
253337
253318
  color: "#AAAAAA",
253338
253319
  children: "·"
253339
253320
  }, undefined, false, undefined, this),
253340
- /* @__PURE__ */ jsx_dev_runtime25.jsxDEV(Text3, {
253321
+ /* @__PURE__ */ jsx_dev_runtime24.jsxDEV(Text3, {
253341
253322
  color: "#89B4F8",
253342
253323
  children: "enter"
253343
253324
  }, undefined, false, undefined, this),
253344
- /* @__PURE__ */ jsx_dev_runtime25.jsxDEV(Text3, {
253325
+ /* @__PURE__ */ jsx_dev_runtime24.jsxDEV(Text3, {
253345
253326
  color: "#AAAAAA",
253346
253327
  children: "Select"
253347
253328
  }, undefined, false, undefined, this),
253348
- /* @__PURE__ */ jsx_dev_runtime25.jsxDEV(Text3, {
253329
+ /* @__PURE__ */ jsx_dev_runtime24.jsxDEV(Text3, {
253349
253330
  color: "#AAAAAA",
253350
253331
  children: "·"
253351
253332
  }, undefined, false, undefined, this),
253352
- /* @__PURE__ */ jsx_dev_runtime25.jsxDEV(Text3, {
253333
+ /* @__PURE__ */ jsx_dev_runtime24.jsxDEV(Text3, {
253353
253334
  color: "#89B4F8",
253354
253335
  children: "esc"
253355
253336
  }, undefined, false, undefined, this),
253356
- /* @__PURE__ */ jsx_dev_runtime25.jsxDEV(Text3, {
253337
+ /* @__PURE__ */ jsx_dev_runtime24.jsxDEV(Text3, {
253357
253338
  color: "#AAAAAA",
253358
253339
  children: "Cancel"
253359
253340
  }, undefined, false, undefined, this)
@@ -253365,21 +253346,21 @@ function LogoutSelectMenu(props) {
253365
253346
  }
253366
253347
 
253367
253348
  // ../../packages/tui/src/components/menus/menu-menu.tsx
253368
- var jsx_dev_runtime26 = __toESM(require_jsx_dev_runtime(), 1);
253349
+ var jsx_dev_runtime25 = __toESM(require_jsx_dev_runtime(), 1);
253369
253350
  function MenuMenu(props) {
253370
253351
  const { handleAuthMenuSelect } = props;
253371
- return /* @__PURE__ */ jsx_dev_runtime26.jsxDEV(Box_default, {
253352
+ return /* @__PURE__ */ jsx_dev_runtime25.jsxDEV(Box_default, {
253372
253353
  flexDirection: "column",
253373
253354
  paddingX: 1,
253374
253355
  children: [
253375
- /* @__PURE__ */ jsx_dev_runtime26.jsxDEV(Box_default, {
253356
+ /* @__PURE__ */ jsx_dev_runtime25.jsxDEV(Box_default, {
253376
253357
  marginBottom: 1,
253377
- children: /* @__PURE__ */ jsx_dev_runtime26.jsxDEV(Text3, {
253358
+ children: /* @__PURE__ */ jsx_dev_runtime25.jsxDEV(Text3, {
253378
253359
  color: "white",
253379
253360
  children: "Select authentication method:"
253380
253361
  }, undefined, false, undefined, this)
253381
253362
  }, undefined, false, undefined, this),
253382
- /* @__PURE__ */ jsx_dev_runtime26.jsxDEV(SelectInput_default, {
253363
+ /* @__PURE__ */ jsx_dev_runtime25.jsxDEV(SelectInput_default, {
253383
253364
  items: [
253384
253365
  { label: "Login via December (Cloud Wallet)", value: "december" },
253385
253366
  { label: "Bring Your Own Key (BYOK)", value: "byok" }
@@ -253388,40 +253369,40 @@ function MenuMenu(props) {
253388
253369
  indicatorComponent: CustomIndicator,
253389
253370
  itemComponent: CustomItem
253390
253371
  }, undefined, false, undefined, this),
253391
- /* @__PURE__ */ jsx_dev_runtime26.jsxDEV(Box_default, {
253372
+ /* @__PURE__ */ jsx_dev_runtime25.jsxDEV(Box_default, {
253392
253373
  paddingTop: 1,
253393
- children: /* @__PURE__ */ jsx_dev_runtime26.jsxDEV(Box_default, {
253374
+ children: /* @__PURE__ */ jsx_dev_runtime25.jsxDEV(Box_default, {
253394
253375
  gap: 1,
253395
253376
  children: [
253396
- /* @__PURE__ */ jsx_dev_runtime26.jsxDEV(Text3, {
253377
+ /* @__PURE__ */ jsx_dev_runtime25.jsxDEV(Text3, {
253397
253378
  color: "#89B4F8",
253398
253379
  children: "↑↓"
253399
253380
  }, undefined, false, undefined, this),
253400
- /* @__PURE__ */ jsx_dev_runtime26.jsxDEV(Text3, {
253381
+ /* @__PURE__ */ jsx_dev_runtime25.jsxDEV(Text3, {
253401
253382
  color: "#AAAAAA",
253402
253383
  children: "Navigate"
253403
253384
  }, undefined, false, undefined, this),
253404
- /* @__PURE__ */ jsx_dev_runtime26.jsxDEV(Text3, {
253385
+ /* @__PURE__ */ jsx_dev_runtime25.jsxDEV(Text3, {
253405
253386
  color: "#AAAAAA",
253406
253387
  children: "·"
253407
253388
  }, undefined, false, undefined, this),
253408
- /* @__PURE__ */ jsx_dev_runtime26.jsxDEV(Text3, {
253389
+ /* @__PURE__ */ jsx_dev_runtime25.jsxDEV(Text3, {
253409
253390
  color: "#89B4F8",
253410
253391
  children: "enter"
253411
253392
  }, undefined, false, undefined, this),
253412
- /* @__PURE__ */ jsx_dev_runtime26.jsxDEV(Text3, {
253393
+ /* @__PURE__ */ jsx_dev_runtime25.jsxDEV(Text3, {
253413
253394
  color: "#AAAAAA",
253414
253395
  children: "Select"
253415
253396
  }, undefined, false, undefined, this),
253416
- /* @__PURE__ */ jsx_dev_runtime26.jsxDEV(Text3, {
253397
+ /* @__PURE__ */ jsx_dev_runtime25.jsxDEV(Text3, {
253417
253398
  color: "#AAAAAA",
253418
253399
  children: "·"
253419
253400
  }, undefined, false, undefined, this),
253420
- /* @__PURE__ */ jsx_dev_runtime26.jsxDEV(Text3, {
253401
+ /* @__PURE__ */ jsx_dev_runtime25.jsxDEV(Text3, {
253421
253402
  color: "#89B4F8",
253422
253403
  children: "esc"
253423
253404
  }, undefined, false, undefined, this),
253424
- /* @__PURE__ */ jsx_dev_runtime26.jsxDEV(Text3, {
253405
+ /* @__PURE__ */ jsx_dev_runtime25.jsxDEV(Text3, {
253425
253406
  color: "#AAAAAA",
253426
253407
  children: "Cancel"
253427
253408
  }, undefined, false, undefined, this)
@@ -253433,60 +253414,60 @@ function MenuMenu(props) {
253433
253414
  }
253434
253415
 
253435
253416
  // ../../packages/tui/src/components/menus/model-select-menu.tsx
253436
- var jsx_dev_runtime27 = __toESM(require_jsx_dev_runtime(), 1);
253417
+ var jsx_dev_runtime26 = __toESM(require_jsx_dev_runtime(), 1);
253437
253418
  function ModelSelectMenu(props) {
253438
253419
  const { handleModelSelect, selectedProvider, openRouterModels, getProviderModels } = props;
253439
- return /* @__PURE__ */ jsx_dev_runtime27.jsxDEV(Box_default, {
253420
+ return /* @__PURE__ */ jsx_dev_runtime26.jsxDEV(Box_default, {
253440
253421
  flexDirection: "column",
253441
253422
  paddingX: 1,
253442
253423
  children: [
253443
- /* @__PURE__ */ jsx_dev_runtime27.jsxDEV(Box_default, {
253424
+ /* @__PURE__ */ jsx_dev_runtime26.jsxDEV(Box_default, {
253444
253425
  marginBottom: 1,
253445
- children: /* @__PURE__ */ jsx_dev_runtime27.jsxDEV(Text3, {
253426
+ children: /* @__PURE__ */ jsx_dev_runtime26.jsxDEV(Text3, {
253446
253427
  color: "white",
253447
253428
  children: "Select Model:"
253448
253429
  }, undefined, false, undefined, this)
253449
253430
  }, undefined, false, undefined, this),
253450
- /* @__PURE__ */ jsx_dev_runtime27.jsxDEV(SelectInput_default, {
253431
+ /* @__PURE__ */ jsx_dev_runtime26.jsxDEV(SelectInput_default, {
253451
253432
  items: selectedProvider === "openrouter" ? openRouterModels || [{ label: "Loading models...", value: "loading" }] : getProviderModels(selectedProvider),
253452
253433
  onSelect: handleModelSelect,
253453
253434
  indicatorComponent: CustomIndicator,
253454
253435
  itemComponent: CustomItem
253455
253436
  }, undefined, false, undefined, this),
253456
- /* @__PURE__ */ jsx_dev_runtime27.jsxDEV(Box_default, {
253437
+ /* @__PURE__ */ jsx_dev_runtime26.jsxDEV(Box_default, {
253457
253438
  paddingTop: 1,
253458
- children: /* @__PURE__ */ jsx_dev_runtime27.jsxDEV(Box_default, {
253439
+ children: /* @__PURE__ */ jsx_dev_runtime26.jsxDEV(Box_default, {
253459
253440
  gap: 1,
253460
253441
  children: [
253461
- /* @__PURE__ */ jsx_dev_runtime27.jsxDEV(Text3, {
253442
+ /* @__PURE__ */ jsx_dev_runtime26.jsxDEV(Text3, {
253462
253443
  color: "#89B4F8",
253463
253444
  children: "↑↓"
253464
253445
  }, undefined, false, undefined, this),
253465
- /* @__PURE__ */ jsx_dev_runtime27.jsxDEV(Text3, {
253446
+ /* @__PURE__ */ jsx_dev_runtime26.jsxDEV(Text3, {
253466
253447
  color: "#AAAAAA",
253467
253448
  children: "Navigate"
253468
253449
  }, undefined, false, undefined, this),
253469
- /* @__PURE__ */ jsx_dev_runtime27.jsxDEV(Text3, {
253450
+ /* @__PURE__ */ jsx_dev_runtime26.jsxDEV(Text3, {
253470
253451
  color: "#AAAAAA",
253471
253452
  children: "·"
253472
253453
  }, undefined, false, undefined, this),
253473
- /* @__PURE__ */ jsx_dev_runtime27.jsxDEV(Text3, {
253454
+ /* @__PURE__ */ jsx_dev_runtime26.jsxDEV(Text3, {
253474
253455
  color: "#89B4F8",
253475
253456
  children: "enter"
253476
253457
  }, undefined, false, undefined, this),
253477
- /* @__PURE__ */ jsx_dev_runtime27.jsxDEV(Text3, {
253458
+ /* @__PURE__ */ jsx_dev_runtime26.jsxDEV(Text3, {
253478
253459
  color: "#AAAAAA",
253479
253460
  children: "Select"
253480
253461
  }, undefined, false, undefined, this),
253481
- /* @__PURE__ */ jsx_dev_runtime27.jsxDEV(Text3, {
253462
+ /* @__PURE__ */ jsx_dev_runtime26.jsxDEV(Text3, {
253482
253463
  color: "#AAAAAA",
253483
253464
  children: "·"
253484
253465
  }, undefined, false, undefined, this),
253485
- /* @__PURE__ */ jsx_dev_runtime27.jsxDEV(Text3, {
253466
+ /* @__PURE__ */ jsx_dev_runtime26.jsxDEV(Text3, {
253486
253467
  color: "#89B4F8",
253487
253468
  children: "esc"
253488
253469
  }, undefined, false, undefined, this),
253489
- /* @__PURE__ */ jsx_dev_runtime27.jsxDEV(Text3, {
253470
+ /* @__PURE__ */ jsx_dev_runtime26.jsxDEV(Text3, {
253490
253471
  color: "#AAAAAA",
253491
253472
  children: "Cancel"
253492
253473
  }, undefined, false, undefined, this)
@@ -253498,66 +253479,66 @@ function ModelSelectMenu(props) {
253498
253479
  }
253499
253480
 
253500
253481
  // ../../packages/tui/src/components/menus/plan-approve-menu.tsx
253501
- var jsx_dev_runtime28 = __toESM(require_jsx_dev_runtime(), 1);
253482
+ var jsx_dev_runtime27 = __toESM(require_jsx_dev_runtime(), 1);
253502
253483
  function PlanApproveMenu(props) {
253503
253484
  const { handlePlanApprovalSelect, planSummary } = props;
253504
253485
  const planItems = [
253505
253486
  { label: "1. Approve and Execute", value: "approve" },
253506
253487
  { label: "2. Reject / Cancel", value: "reject" }
253507
253488
  ];
253508
- return /* @__PURE__ */ jsx_dev_runtime28.jsxDEV(Box_default, {
253489
+ return /* @__PURE__ */ jsx_dev_runtime27.jsxDEV(Box_default, {
253509
253490
  flexDirection: "column",
253510
253491
  paddingX: 1,
253511
253492
  children: [
253512
- /* @__PURE__ */ jsx_dev_runtime28.jsxDEV(Box_default, {
253493
+ /* @__PURE__ */ jsx_dev_runtime27.jsxDEV(Box_default, {
253513
253494
  marginBottom: 1,
253514
253495
  flexDirection: "column",
253515
253496
  gap: 1,
253516
253497
  children: [
253517
- planSummary && /* @__PURE__ */ jsx_dev_runtime28.jsxDEV(Box_default, {
253498
+ planSummary && /* @__PURE__ */ jsx_dev_runtime27.jsxDEV(Box_default, {
253518
253499
  borderStyle: "round",
253519
253500
  borderColor: "cyan",
253520
253501
  paddingX: 1,
253521
- children: /* @__PURE__ */ jsx_dev_runtime28.jsxDEV(Text3, {
253502
+ children: /* @__PURE__ */ jsx_dev_runtime27.jsxDEV(Text3, {
253522
253503
  color: "cyan",
253523
253504
  children: planSummary
253524
253505
  }, undefined, false, undefined, this)
253525
253506
  }, undefined, false, undefined, this),
253526
- /* @__PURE__ */ jsx_dev_runtime28.jsxDEV(Text3, {
253507
+ /* @__PURE__ */ jsx_dev_runtime27.jsxDEV(Text3, {
253527
253508
  color: "white",
253528
253509
  bold: true,
253529
253510
  children: "Plan generated. Please approve or reject:"
253530
253511
  }, undefined, false, undefined, this)
253531
253512
  ]
253532
253513
  }, undefined, true, undefined, this),
253533
- /* @__PURE__ */ jsx_dev_runtime28.jsxDEV(SelectInput_default, {
253514
+ /* @__PURE__ */ jsx_dev_runtime27.jsxDEV(SelectInput_default, {
253534
253515
  items: planItems,
253535
253516
  onSelect: handlePlanApprovalSelect,
253536
253517
  indicatorComponent: CustomIndicator,
253537
253518
  itemComponent: CustomItem
253538
253519
  }, undefined, false, undefined, this),
253539
- /* @__PURE__ */ jsx_dev_runtime28.jsxDEV(Box_default, {
253520
+ /* @__PURE__ */ jsx_dev_runtime27.jsxDEV(Box_default, {
253540
253521
  paddingTop: 1,
253541
- children: /* @__PURE__ */ jsx_dev_runtime28.jsxDEV(Box_default, {
253522
+ children: /* @__PURE__ */ jsx_dev_runtime27.jsxDEV(Box_default, {
253542
253523
  gap: 1,
253543
253524
  children: [
253544
- /* @__PURE__ */ jsx_dev_runtime28.jsxDEV(Text3, {
253525
+ /* @__PURE__ */ jsx_dev_runtime27.jsxDEV(Text3, {
253545
253526
  color: "#89B4F8",
253546
253527
  children: "↑↓"
253547
253528
  }, undefined, false, undefined, this),
253548
- /* @__PURE__ */ jsx_dev_runtime28.jsxDEV(Text3, {
253529
+ /* @__PURE__ */ jsx_dev_runtime27.jsxDEV(Text3, {
253549
253530
  color: "#AAAAAA",
253550
253531
  children: "Navigate"
253551
253532
  }, undefined, false, undefined, this),
253552
- /* @__PURE__ */ jsx_dev_runtime28.jsxDEV(Text3, {
253533
+ /* @__PURE__ */ jsx_dev_runtime27.jsxDEV(Text3, {
253553
253534
  color: "#AAAAAA",
253554
253535
  children: "·"
253555
253536
  }, undefined, false, undefined, this),
253556
- /* @__PURE__ */ jsx_dev_runtime28.jsxDEV(Text3, {
253537
+ /* @__PURE__ */ jsx_dev_runtime27.jsxDEV(Text3, {
253557
253538
  color: "#89B4F8",
253558
253539
  children: "enter"
253559
253540
  }, undefined, false, undefined, this),
253560
- /* @__PURE__ */ jsx_dev_runtime28.jsxDEV(Text3, {
253541
+ /* @__PURE__ */ jsx_dev_runtime27.jsxDEV(Text3, {
253561
253542
  color: "#AAAAAA",
253562
253543
  children: "Select"
253563
253544
  }, undefined, false, undefined, this)
@@ -253569,7 +253550,7 @@ function PlanApproveMenu(props) {
253569
253550
  }
253570
253551
 
253571
253552
  // ../../packages/tui/src/components/menus/session-select-menu.tsx
253572
- var jsx_dev_runtime29 = __toESM(require_jsx_dev_runtime(), 1);
253553
+ var jsx_dev_runtime28 = __toESM(require_jsx_dev_runtime(), 1);
253573
253554
  function SessionSelectMenu(props) {
253574
253555
  const {
253575
253556
  sessionRenameMode,
@@ -253686,13 +253667,13 @@ function SessionSelectMenu(props) {
253686
253667
  }
253687
253668
  }
253688
253669
  });
253689
- return /* @__PURE__ */ jsx_dev_runtime29.jsxDEV(Box_default, {
253670
+ return /* @__PURE__ */ jsx_dev_runtime28.jsxDEV(Box_default, {
253690
253671
  flexDirection: "column",
253691
253672
  paddingX: 1,
253692
253673
  children: [
253693
- /* @__PURE__ */ jsx_dev_runtime29.jsxDEV(Box_default, {
253674
+ /* @__PURE__ */ jsx_dev_runtime28.jsxDEV(Box_default, {
253694
253675
  marginBottom: 1,
253695
- children: /* @__PURE__ */ jsx_dev_runtime29.jsxDEV(Text3, {
253676
+ children: /* @__PURE__ */ jsx_dev_runtime28.jsxDEV(Text3, {
253696
253677
  bold: true,
253697
253678
  color: "white",
253698
253679
  children: "Sessions"
@@ -253701,17 +253682,17 @@ function SessionSelectMenu(props) {
253701
253682
  visibleItems.map((session, idx) => {
253702
253683
  const isSelected = idx === sessionSelectedIndex;
253703
253684
  if (isSelected && sessionRenameMode) {
253704
- return /* @__PURE__ */ jsx_dev_runtime29.jsxDEV(Box_default, {
253685
+ return /* @__PURE__ */ jsx_dev_runtime28.jsxDEV(Box_default, {
253705
253686
  flexDirection: "row",
253706
253687
  children: [
253707
- /* @__PURE__ */ jsx_dev_runtime29.jsxDEV(Box_default, {
253688
+ /* @__PURE__ */ jsx_dev_runtime28.jsxDEV(Box_default, {
253708
253689
  width: 2,
253709
- children: /* @__PURE__ */ jsx_dev_runtime29.jsxDEV(Text3, {
253690
+ children: /* @__PURE__ */ jsx_dev_runtime28.jsxDEV(Text3, {
253710
253691
  color: "#89B4F8",
253711
253692
  children: "❭ "
253712
253693
  }, undefined, false, undefined, this)
253713
253694
  }, undefined, false, undefined, this),
253714
- /* @__PURE__ */ jsx_dev_runtime29.jsxDEV(build_default2, {
253695
+ /* @__PURE__ */ jsx_dev_runtime28.jsxDEV(build_default2, {
253715
253696
  value: sessionNewName,
253716
253697
  onChange: setSessionNewName,
253717
253698
  onSubmit: handleRenameSubmit,
@@ -253723,27 +253704,27 @@ function SessionSelectMenu(props) {
253723
253704
  const isCustomName = !session.id.startsWith("session-");
253724
253705
  const title = isCustomName ? session.id : session.preview || session.id;
253725
253706
  const timeStr = timeAgo(session.updatedAt).padStart(10);
253726
- return /* @__PURE__ */ jsx_dev_runtime29.jsxDEV(Box_default, {
253707
+ return /* @__PURE__ */ jsx_dev_runtime28.jsxDEV(Box_default, {
253727
253708
  flexDirection: "row",
253728
253709
  children: [
253729
- /* @__PURE__ */ jsx_dev_runtime29.jsxDEV(Box_default, {
253710
+ /* @__PURE__ */ jsx_dev_runtime28.jsxDEV(Box_default, {
253730
253711
  width: 2,
253731
- children: /* @__PURE__ */ jsx_dev_runtime29.jsxDEV(Text3, {
253712
+ children: /* @__PURE__ */ jsx_dev_runtime28.jsxDEV(Text3, {
253732
253713
  color: isSelected ? "#89B4F8" : "white",
253733
253714
  children: isSelected ? "❭ " : " "
253734
253715
  }, undefined, false, undefined, this)
253735
253716
  }, undefined, false, undefined, this),
253736
- /* @__PURE__ */ jsx_dev_runtime29.jsxDEV(Box_default, {
253717
+ /* @__PURE__ */ jsx_dev_runtime28.jsxDEV(Box_default, {
253737
253718
  width: 97,
253738
- children: /* @__PURE__ */ jsx_dev_runtime29.jsxDEV(Text3, {
253719
+ children: /* @__PURE__ */ jsx_dev_runtime28.jsxDEV(Text3, {
253739
253720
  color: isSelected ? "#89B4F8" : "#AAAAAA",
253740
253721
  wrap: "truncate",
253741
253722
  children: title
253742
253723
  }, undefined, false, undefined, this)
253743
253724
  }, undefined, false, undefined, this),
253744
- /* @__PURE__ */ jsx_dev_runtime29.jsxDEV(Box_default, {
253725
+ /* @__PURE__ */ jsx_dev_runtime28.jsxDEV(Box_default, {
253745
253726
  width: 12,
253746
- children: /* @__PURE__ */ jsx_dev_runtime29.jsxDEV(Text3, {
253727
+ children: /* @__PURE__ */ jsx_dev_runtime28.jsxDEV(Text3, {
253747
253728
  color: "#AAAAAA",
253748
253729
  children: timeStr
253749
253730
  }, undefined, false, undefined, this)
@@ -253751,17 +253732,17 @@ function SessionSelectMenu(props) {
253751
253732
  ]
253752
253733
  }, session.id, true, undefined, this);
253753
253734
  }),
253754
- totalItems === 0 && /* @__PURE__ */ jsx_dev_runtime29.jsxDEV(Box_default, {
253735
+ totalItems === 0 && /* @__PURE__ */ jsx_dev_runtime28.jsxDEV(Box_default, {
253755
253736
  paddingLeft: 2,
253756
- children: /* @__PURE__ */ jsx_dev_runtime29.jsxDEV(Text3, {
253737
+ children: /* @__PURE__ */ jsx_dev_runtime28.jsxDEV(Text3, {
253757
253738
  color: "#555555",
253758
253739
  children: "No sessions found."
253759
253740
  }, undefined, false, undefined, this)
253760
253741
  }, undefined, false, undefined, this),
253761
- totalItems > 0 && /* @__PURE__ */ jsx_dev_runtime29.jsxDEV(Box_default, {
253742
+ totalItems > 0 && /* @__PURE__ */ jsx_dev_runtime28.jsxDEV(Box_default, {
253762
253743
  marginTop: 1,
253763
253744
  paddingLeft: 2,
253764
- children: /* @__PURE__ */ jsx_dev_runtime29.jsxDEV(Text3, {
253745
+ children: /* @__PURE__ */ jsx_dev_runtime28.jsxDEV(Text3, {
253765
253746
  color: "#555555",
253766
253747
  children: [
253767
253748
  "[",
@@ -253775,76 +253756,76 @@ function SessionSelectMenu(props) {
253775
253756
  ]
253776
253757
  }, undefined, true, undefined, this)
253777
253758
  }, undefined, false, undefined, this),
253778
- /* @__PURE__ */ jsx_dev_runtime29.jsxDEV(Box_default, {
253759
+ /* @__PURE__ */ jsx_dev_runtime28.jsxDEV(Box_default, {
253779
253760
  paddingTop: 1,
253780
- children: /* @__PURE__ */ jsx_dev_runtime29.jsxDEV(Box_default, {
253761
+ children: /* @__PURE__ */ jsx_dev_runtime28.jsxDEV(Box_default, {
253781
253762
  gap: 1,
253782
253763
  children: [
253783
- /* @__PURE__ */ jsx_dev_runtime29.jsxDEV(Text3, {
253764
+ /* @__PURE__ */ jsx_dev_runtime28.jsxDEV(Text3, {
253784
253765
  color: "#89B4F8",
253785
253766
  children: "↑/↓"
253786
253767
  }, undefined, false, undefined, this),
253787
- /* @__PURE__ */ jsx_dev_runtime29.jsxDEV(Text3, {
253768
+ /* @__PURE__ */ jsx_dev_runtime28.jsxDEV(Text3, {
253788
253769
  color: "#AAAAAA",
253789
253770
  children: "Navigate"
253790
253771
  }, undefined, false, undefined, this),
253791
- /* @__PURE__ */ jsx_dev_runtime29.jsxDEV(Text3, {
253772
+ /* @__PURE__ */ jsx_dev_runtime28.jsxDEV(Text3, {
253792
253773
  color: "#AAAAAA",
253793
253774
  children: "·"
253794
253775
  }, undefined, false, undefined, this),
253795
- /* @__PURE__ */ jsx_dev_runtime29.jsxDEV(Text3, {
253776
+ /* @__PURE__ */ jsx_dev_runtime28.jsxDEV(Text3, {
253796
253777
  color: "#89B4F8",
253797
253778
  children: "←/→"
253798
253779
  }, undefined, false, undefined, this),
253799
- /* @__PURE__ */ jsx_dev_runtime29.jsxDEV(Text3, {
253780
+ /* @__PURE__ */ jsx_dev_runtime28.jsxDEV(Text3, {
253800
253781
  color: "#AAAAAA",
253801
253782
  children: "Page"
253802
253783
  }, undefined, false, undefined, this),
253803
- /* @__PURE__ */ jsx_dev_runtime29.jsxDEV(Text3, {
253784
+ /* @__PURE__ */ jsx_dev_runtime28.jsxDEV(Text3, {
253804
253785
  color: "#AAAAAA",
253805
253786
  children: "·"
253806
253787
  }, undefined, false, undefined, this),
253807
- /* @__PURE__ */ jsx_dev_runtime29.jsxDEV(Text3, {
253788
+ /* @__PURE__ */ jsx_dev_runtime28.jsxDEV(Text3, {
253808
253789
  color: "#89B4F8",
253809
253790
  children: "enter"
253810
253791
  }, undefined, false, undefined, this),
253811
- /* @__PURE__ */ jsx_dev_runtime29.jsxDEV(Text3, {
253792
+ /* @__PURE__ */ jsx_dev_runtime28.jsxDEV(Text3, {
253812
253793
  color: "#AAAAAA",
253813
253794
  children: "Select"
253814
253795
  }, undefined, false, undefined, this),
253815
- /* @__PURE__ */ jsx_dev_runtime29.jsxDEV(Text3, {
253796
+ /* @__PURE__ */ jsx_dev_runtime28.jsxDEV(Text3, {
253816
253797
  color: "#AAAAAA",
253817
253798
  children: "·"
253818
253799
  }, undefined, false, undefined, this),
253819
- /* @__PURE__ */ jsx_dev_runtime29.jsxDEV(Text3, {
253800
+ /* @__PURE__ */ jsx_dev_runtime28.jsxDEV(Text3, {
253820
253801
  color: "#89B4F8",
253821
253802
  children: "r"
253822
253803
  }, undefined, false, undefined, this),
253823
- /* @__PURE__ */ jsx_dev_runtime29.jsxDEV(Text3, {
253804
+ /* @__PURE__ */ jsx_dev_runtime28.jsxDEV(Text3, {
253824
253805
  color: "#AAAAAA",
253825
253806
  children: "Rename"
253826
253807
  }, undefined, false, undefined, this),
253827
- /* @__PURE__ */ jsx_dev_runtime29.jsxDEV(Text3, {
253808
+ /* @__PURE__ */ jsx_dev_runtime28.jsxDEV(Text3, {
253828
253809
  color: "#AAAAAA",
253829
253810
  children: "·"
253830
253811
  }, undefined, false, undefined, this),
253831
- /* @__PURE__ */ jsx_dev_runtime29.jsxDEV(Text3, {
253812
+ /* @__PURE__ */ jsx_dev_runtime28.jsxDEV(Text3, {
253832
253813
  color: "#89B4F8",
253833
253814
  children: "d"
253834
253815
  }, undefined, false, undefined, this),
253835
- /* @__PURE__ */ jsx_dev_runtime29.jsxDEV(Text3, {
253816
+ /* @__PURE__ */ jsx_dev_runtime28.jsxDEV(Text3, {
253836
253817
  color: "#AAAAAA",
253837
253818
  children: "Delete"
253838
253819
  }, undefined, false, undefined, this),
253839
- /* @__PURE__ */ jsx_dev_runtime29.jsxDEV(Text3, {
253820
+ /* @__PURE__ */ jsx_dev_runtime28.jsxDEV(Text3, {
253840
253821
  color: "#AAAAAA",
253841
253822
  children: "·"
253842
253823
  }, undefined, false, undefined, this),
253843
- /* @__PURE__ */ jsx_dev_runtime29.jsxDEV(Text3, {
253824
+ /* @__PURE__ */ jsx_dev_runtime28.jsxDEV(Text3, {
253844
253825
  color: "#89B4F8",
253845
253826
  children: "esc"
253846
253827
  }, undefined, false, undefined, this),
253847
- /* @__PURE__ */ jsx_dev_runtime29.jsxDEV(Text3, {
253828
+ /* @__PURE__ */ jsx_dev_runtime28.jsxDEV(Text3, {
253848
253829
  color: "#AAAAAA",
253849
253830
  children: "Cancel"
253850
253831
  }, undefined, false, undefined, this)
@@ -253856,7 +253837,7 @@ function SessionSelectMenu(props) {
253856
253837
  }
253857
253838
 
253858
253839
  // ../../packages/tui/src/components/menus/settings-main-menu.tsx
253859
- var jsx_dev_runtime30 = __toESM(require_jsx_dev_runtime(), 1);
253840
+ var jsx_dev_runtime29 = __toESM(require_jsx_dev_runtime(), 1);
253860
253841
  function SettingsMainMenu(props) {
253861
253842
  const {
253862
253843
  settingsNonWorkspace,
@@ -253901,58 +253882,58 @@ function SettingsMainMenu(props) {
253901
253882
  value: "authPriority"
253902
253883
  });
253903
253884
  }
253904
- return /* @__PURE__ */ jsx_dev_runtime30.jsxDEV(Box_default, {
253885
+ return /* @__PURE__ */ jsx_dev_runtime29.jsxDEV(Box_default, {
253905
253886
  flexDirection: "column",
253906
253887
  paddingX: 1,
253907
253888
  children: [
253908
- /* @__PURE__ */ jsx_dev_runtime30.jsxDEV(Box_default, {
253889
+ /* @__PURE__ */ jsx_dev_runtime29.jsxDEV(Box_default, {
253909
253890
  marginBottom: 1,
253910
- children: /* @__PURE__ */ jsx_dev_runtime30.jsxDEV(Text3, {
253891
+ children: /* @__PURE__ */ jsx_dev_runtime29.jsxDEV(Text3, {
253911
253892
  bold: true,
253912
253893
  color: "white",
253913
253894
  children: "Settings"
253914
253895
  }, undefined, false, undefined, this)
253915
253896
  }, undefined, false, undefined, this),
253916
- /* @__PURE__ */ jsx_dev_runtime30.jsxDEV(SelectInput_default, {
253897
+ /* @__PURE__ */ jsx_dev_runtime29.jsxDEV(SelectInput_default, {
253917
253898
  items: mainItems,
253918
253899
  onSelect: handleSettingsMainSelect,
253919
253900
  indicatorComponent: CustomIndicator,
253920
253901
  itemComponent: CustomItem
253921
253902
  }, undefined, false, undefined, this),
253922
- /* @__PURE__ */ jsx_dev_runtime30.jsxDEV(Box_default, {
253903
+ /* @__PURE__ */ jsx_dev_runtime29.jsxDEV(Box_default, {
253923
253904
  paddingTop: 1,
253924
- children: /* @__PURE__ */ jsx_dev_runtime30.jsxDEV(Box_default, {
253905
+ children: /* @__PURE__ */ jsx_dev_runtime29.jsxDEV(Box_default, {
253925
253906
  gap: 1,
253926
253907
  children: [
253927
- /* @__PURE__ */ jsx_dev_runtime30.jsxDEV(Text3, {
253908
+ /* @__PURE__ */ jsx_dev_runtime29.jsxDEV(Text3, {
253928
253909
  color: "#89B4F8",
253929
253910
  children: "↑↓"
253930
253911
  }, undefined, false, undefined, this),
253931
- /* @__PURE__ */ jsx_dev_runtime30.jsxDEV(Text3, {
253912
+ /* @__PURE__ */ jsx_dev_runtime29.jsxDEV(Text3, {
253932
253913
  color: "#AAAAAA",
253933
253914
  children: "Navigate"
253934
253915
  }, undefined, false, undefined, this),
253935
- /* @__PURE__ */ jsx_dev_runtime30.jsxDEV(Text3, {
253916
+ /* @__PURE__ */ jsx_dev_runtime29.jsxDEV(Text3, {
253936
253917
  color: "#AAAAAA",
253937
253918
  children: "·"
253938
253919
  }, undefined, false, undefined, this),
253939
- /* @__PURE__ */ jsx_dev_runtime30.jsxDEV(Text3, {
253920
+ /* @__PURE__ */ jsx_dev_runtime29.jsxDEV(Text3, {
253940
253921
  color: "#89B4F8",
253941
253922
  children: "enter"
253942
253923
  }, undefined, false, undefined, this),
253943
- /* @__PURE__ */ jsx_dev_runtime30.jsxDEV(Text3, {
253924
+ /* @__PURE__ */ jsx_dev_runtime29.jsxDEV(Text3, {
253944
253925
  color: "#AAAAAA",
253945
253926
  children: "Toggle"
253946
253927
  }, undefined, false, undefined, this),
253947
- /* @__PURE__ */ jsx_dev_runtime30.jsxDEV(Text3, {
253928
+ /* @__PURE__ */ jsx_dev_runtime29.jsxDEV(Text3, {
253948
253929
  color: "#AAAAAA",
253949
253930
  children: "·"
253950
253931
  }, undefined, false, undefined, this),
253951
- /* @__PURE__ */ jsx_dev_runtime30.jsxDEV(Text3, {
253932
+ /* @__PURE__ */ jsx_dev_runtime29.jsxDEV(Text3, {
253952
253933
  color: "#89B4F8",
253953
253934
  children: "esc"
253954
253935
  }, undefined, false, undefined, this),
253955
- /* @__PURE__ */ jsx_dev_runtime30.jsxDEV(Text3, {
253936
+ /* @__PURE__ */ jsx_dev_runtime29.jsxDEV(Text3, {
253956
253937
  color: "#AAAAAA",
253957
253938
  children: "Cancel"
253958
253939
  }, undefined, false, undefined, this)
@@ -253964,7 +253945,7 @@ function SettingsMainMenu(props) {
253964
253945
  }
253965
253946
 
253966
253947
  // ../../packages/tui/src/components/menus/tasks-mode-menu.tsx
253967
- var jsx_dev_runtime31 = __toESM(require_jsx_dev_runtime(), 1);
253948
+ var jsx_dev_runtime30 = __toESM(require_jsx_dev_runtime(), 1);
253968
253949
  function TasksModeMenu(props) {
253969
253950
  const { tasksData, taskViewingId, taskScrollOffset, taskSelectedIndex } = props;
253970
253951
  const getStatusColor = (status) => {
@@ -253986,15 +253967,15 @@ function TasksModeMenu(props) {
253986
253967
  if (task) {
253987
253968
  const outputLines = task.output.split("\\n");
253988
253969
  const visibleLines = outputLines.slice(taskScrollOffset, taskScrollOffset + 15);
253989
- return /* @__PURE__ */ jsx_dev_runtime31.jsxDEV(Box_default, {
253970
+ return /* @__PURE__ */ jsx_dev_runtime30.jsxDEV(Box_default, {
253990
253971
  flexDirection: "column",
253991
253972
  paddingX: 1,
253992
253973
  children: [
253993
- /* @__PURE__ */ jsx_dev_runtime31.jsxDEV(Box_default, {
253974
+ /* @__PURE__ */ jsx_dev_runtime30.jsxDEV(Box_default, {
253994
253975
  marginBottom: 1,
253995
253976
  justifyContent: "space-between",
253996
253977
  children: [
253997
- /* @__PURE__ */ jsx_dev_runtime31.jsxDEV(Text3, {
253978
+ /* @__PURE__ */ jsx_dev_runtime30.jsxDEV(Text3, {
253998
253979
  bold: true,
253999
253980
  color: "white",
254000
253981
  children: [
@@ -254002,7 +253983,7 @@ function TasksModeMenu(props) {
254002
253983
  task.id
254003
253984
  ]
254004
253985
  }, undefined, true, undefined, this),
254005
- /* @__PURE__ */ jsx_dev_runtime31.jsxDEV(Text3, {
253986
+ /* @__PURE__ */ jsx_dev_runtime30.jsxDEV(Text3, {
254006
253987
  bold: true,
254007
253988
  color: getStatusColor(task.status),
254008
253989
  children: [
@@ -254013,9 +253994,9 @@ function TasksModeMenu(props) {
254013
253994
  }, undefined, true, undefined, this)
254014
253995
  ]
254015
253996
  }, undefined, true, undefined, this),
254016
- /* @__PURE__ */ jsx_dev_runtime31.jsxDEV(Box_default, {
253997
+ /* @__PURE__ */ jsx_dev_runtime30.jsxDEV(Box_default, {
254017
253998
  marginBottom: 1,
254018
- children: /* @__PURE__ */ jsx_dev_runtime31.jsxDEV(Text3, {
253999
+ children: /* @__PURE__ */ jsx_dev_runtime30.jsxDEV(Text3, {
254019
254000
  color: "#AAAAAA",
254020
254001
  bold: true,
254021
254002
  children: [
@@ -254024,24 +254005,24 @@ function TasksModeMenu(props) {
254024
254005
  ]
254025
254006
  }, undefined, true, undefined, this)
254026
254007
  }, undefined, false, undefined, this),
254027
- /* @__PURE__ */ jsx_dev_runtime31.jsxDEV(Box_default, {
254008
+ /* @__PURE__ */ jsx_dev_runtime30.jsxDEV(Box_default, {
254028
254009
  borderColor: "#333333",
254029
254010
  borderStyle: "round",
254030
254011
  flexDirection: "column",
254031
254012
  minHeight: 8,
254032
254013
  paddingX: 1,
254033
- children: visibleLines.length === 0 || visibleLines.length === 1 && visibleLines[0] === "" ? /* @__PURE__ */ jsx_dev_runtime31.jsxDEV(Text3, {
254014
+ children: visibleLines.length === 0 || visibleLines.length === 1 && visibleLines[0] === "" ? /* @__PURE__ */ jsx_dev_runtime30.jsxDEV(Text3, {
254034
254015
  color: "gray",
254035
254016
  children: "[No output recorded yet]"
254036
- }, undefined, false, undefined, this) : visibleLines.map((line, idx) => /* @__PURE__ */ jsx_dev_runtime31.jsxDEV(Text3, {
254017
+ }, undefined, false, undefined, this) : visibleLines.map((line, idx) => /* @__PURE__ */ jsx_dev_runtime30.jsxDEV(Text3, {
254037
254018
  color: "white",
254038
254019
  children: line
254039
254020
  }, idx, false, undefined, this))
254040
254021
  }, undefined, false, undefined, this),
254041
- /* @__PURE__ */ jsx_dev_runtime31.jsxDEV(Box_default, {
254022
+ /* @__PURE__ */ jsx_dev_runtime30.jsxDEV(Box_default, {
254042
254023
  marginTop: 1,
254043
254024
  justifyContent: "space-between",
254044
- children: /* @__PURE__ */ jsx_dev_runtime31.jsxDEV(Text3, {
254025
+ children: /* @__PURE__ */ jsx_dev_runtime30.jsxDEV(Text3, {
254045
254026
  color: "gray",
254046
254027
  children: [
254047
254028
  "Showing lines ",
@@ -254054,9 +254035,9 @@ function TasksModeMenu(props) {
254054
254035
  ]
254055
254036
  }, undefined, true, undefined, this)
254056
254037
  }, undefined, false, undefined, this),
254057
- /* @__PURE__ */ jsx_dev_runtime31.jsxDEV(Box_default, {
254038
+ /* @__PURE__ */ jsx_dev_runtime30.jsxDEV(Box_default, {
254058
254039
  paddingTop: 1,
254059
- children: /* @__PURE__ */ jsx_dev_runtime31.jsxDEV(Text3, {
254040
+ children: /* @__PURE__ */ jsx_dev_runtime30.jsxDEV(Text3, {
254060
254041
  color: "#555555",
254061
254042
  children: "↑/↓ Scroll Line · ←/→ Page · esc Cancel"
254062
254043
  }, undefined, false, undefined, this)
@@ -254065,48 +254046,48 @@ function TasksModeMenu(props) {
254065
254046
  }, undefined, true, undefined, this);
254066
254047
  }
254067
254048
  } else {
254068
- return /* @__PURE__ */ jsx_dev_runtime31.jsxDEV(Box_default, {
254049
+ return /* @__PURE__ */ jsx_dev_runtime30.jsxDEV(Box_default, {
254069
254050
  flexDirection: "column",
254070
254051
  paddingX: 1,
254071
254052
  children: [
254072
- /* @__PURE__ */ jsx_dev_runtime31.jsxDEV(Box_default, {
254053
+ /* @__PURE__ */ jsx_dev_runtime30.jsxDEV(Box_default, {
254073
254054
  marginBottom: 1,
254074
- children: /* @__PURE__ */ jsx_dev_runtime31.jsxDEV(Text3, {
254055
+ children: /* @__PURE__ */ jsx_dev_runtime30.jsxDEV(Text3, {
254075
254056
  bold: true,
254076
254057
  color: "white",
254077
254058
  children: "Tasks"
254078
254059
  }, undefined, false, undefined, this)
254079
254060
  }, undefined, false, undefined, this),
254080
- tasksData.length === 0 ? /* @__PURE__ */ jsx_dev_runtime31.jsxDEV(Box_default, {
254061
+ tasksData.length === 0 ? /* @__PURE__ */ jsx_dev_runtime30.jsxDEV(Box_default, {
254081
254062
  paddingLeft: 2,
254082
- children: /* @__PURE__ */ jsx_dev_runtime31.jsxDEV(Text3, {
254063
+ children: /* @__PURE__ */ jsx_dev_runtime30.jsxDEV(Text3, {
254083
254064
  color: "#555555",
254084
254065
  children: "No background tasks."
254085
254066
  }, undefined, false, undefined, this)
254086
254067
  }, undefined, false, undefined, this) : tasksData.map((task, idx) => {
254087
254068
  const isSelected = idx === taskSelectedIndex;
254088
254069
  const truncatedCommand = task.command.length > 50 ? task.command.slice(0, 47) + "..." : task.command;
254089
- return /* @__PURE__ */ jsx_dev_runtime31.jsxDEV(Box_default, {
254070
+ return /* @__PURE__ */ jsx_dev_runtime30.jsxDEV(Box_default, {
254090
254071
  flexDirection: "row",
254091
254072
  children: [
254092
- /* @__PURE__ */ jsx_dev_runtime31.jsxDEV(Box_default, {
254073
+ /* @__PURE__ */ jsx_dev_runtime30.jsxDEV(Box_default, {
254093
254074
  width: 2,
254094
- children: /* @__PURE__ */ jsx_dev_runtime31.jsxDEV(Text3, {
254075
+ children: /* @__PURE__ */ jsx_dev_runtime30.jsxDEV(Text3, {
254095
254076
  color: isSelected ? "#89B4F8" : "white",
254096
254077
  children: isSelected ? "> " : " "
254097
254078
  }, undefined, false, undefined, this)
254098
254079
  }, undefined, false, undefined, this),
254099
- /* @__PURE__ */ jsx_dev_runtime31.jsxDEV(Box_default, {
254080
+ /* @__PURE__ */ jsx_dev_runtime30.jsxDEV(Box_default, {
254100
254081
  width: 25,
254101
- children: /* @__PURE__ */ jsx_dev_runtime31.jsxDEV(Text3, {
254082
+ children: /* @__PURE__ */ jsx_dev_runtime30.jsxDEV(Text3, {
254102
254083
  color: isSelected ? "white" : "#AAAAAA",
254103
254084
  wrap: "truncate",
254104
254085
  children: task.id
254105
254086
  }, undefined, false, undefined, this)
254106
254087
  }, undefined, false, undefined, this),
254107
- /* @__PURE__ */ jsx_dev_runtime31.jsxDEV(Box_default, {
254088
+ /* @__PURE__ */ jsx_dev_runtime30.jsxDEV(Box_default, {
254108
254089
  width: 15,
254109
- children: /* @__PURE__ */ jsx_dev_runtime31.jsxDEV(Text3, {
254090
+ children: /* @__PURE__ */ jsx_dev_runtime30.jsxDEV(Text3, {
254110
254091
  color: getStatusColor(task.status),
254111
254092
  children: [
254112
254093
  "[",
@@ -254115,8 +254096,8 @@ function TasksModeMenu(props) {
254115
254096
  ]
254116
254097
  }, undefined, true, undefined, this)
254117
254098
  }, undefined, false, undefined, this),
254118
- /* @__PURE__ */ jsx_dev_runtime31.jsxDEV(Box_default, {
254119
- children: /* @__PURE__ */ jsx_dev_runtime31.jsxDEV(Text3, {
254099
+ /* @__PURE__ */ jsx_dev_runtime30.jsxDEV(Box_default, {
254100
+ children: /* @__PURE__ */ jsx_dev_runtime30.jsxDEV(Text3, {
254120
254101
  color: isSelected ? "white" : "gray",
254121
254102
  children: truncatedCommand
254122
254103
  }, undefined, false, undefined, this)
@@ -254124,64 +254105,64 @@ function TasksModeMenu(props) {
254124
254105
  ]
254125
254106
  }, task.id, true, undefined, this);
254126
254107
  }),
254127
- /* @__PURE__ */ jsx_dev_runtime31.jsxDEV(Box_default, {
254108
+ /* @__PURE__ */ jsx_dev_runtime30.jsxDEV(Box_default, {
254128
254109
  paddingTop: 1,
254129
- children: /* @__PURE__ */ jsx_dev_runtime31.jsxDEV(Box_default, {
254110
+ children: /* @__PURE__ */ jsx_dev_runtime30.jsxDEV(Box_default, {
254130
254111
  gap: 1,
254131
254112
  children: [
254132
- /* @__PURE__ */ jsx_dev_runtime31.jsxDEV(Text3, {
254113
+ /* @__PURE__ */ jsx_dev_runtime30.jsxDEV(Text3, {
254133
254114
  color: "#89B4F8",
254134
254115
  children: "↑/↓"
254135
254116
  }, undefined, false, undefined, this),
254136
- /* @__PURE__ */ jsx_dev_runtime31.jsxDEV(Text3, {
254117
+ /* @__PURE__ */ jsx_dev_runtime30.jsxDEV(Text3, {
254137
254118
  color: "#AAAAAA",
254138
254119
  children: "Navigate"
254139
254120
  }, undefined, false, undefined, this),
254140
- /* @__PURE__ */ jsx_dev_runtime31.jsxDEV(Text3, {
254121
+ /* @__PURE__ */ jsx_dev_runtime30.jsxDEV(Text3, {
254141
254122
  color: "#AAAAAA",
254142
254123
  children: "·"
254143
254124
  }, undefined, false, undefined, this),
254144
- /* @__PURE__ */ jsx_dev_runtime31.jsxDEV(Text3, {
254125
+ /* @__PURE__ */ jsx_dev_runtime30.jsxDEV(Text3, {
254145
254126
  color: "#89B4F8",
254146
254127
  children: "←/→"
254147
254128
  }, undefined, false, undefined, this),
254148
- /* @__PURE__ */ jsx_dev_runtime31.jsxDEV(Text3, {
254129
+ /* @__PURE__ */ jsx_dev_runtime30.jsxDEV(Text3, {
254149
254130
  color: "#AAAAAA",
254150
254131
  children: "Page"
254151
254132
  }, undefined, false, undefined, this),
254152
- /* @__PURE__ */ jsx_dev_runtime31.jsxDEV(Text3, {
254133
+ /* @__PURE__ */ jsx_dev_runtime30.jsxDEV(Text3, {
254153
254134
  color: "#AAAAAA",
254154
254135
  children: "·"
254155
254136
  }, undefined, false, undefined, this),
254156
- /* @__PURE__ */ jsx_dev_runtime31.jsxDEV(Text3, {
254137
+ /* @__PURE__ */ jsx_dev_runtime30.jsxDEV(Text3, {
254157
254138
  color: "#89B4F8",
254158
254139
  children: "enter"
254159
254140
  }, undefined, false, undefined, this),
254160
- /* @__PURE__ */ jsx_dev_runtime31.jsxDEV(Text3, {
254141
+ /* @__PURE__ */ jsx_dev_runtime30.jsxDEV(Text3, {
254161
254142
  color: "#AAAAAA",
254162
254143
  children: "View output"
254163
254144
  }, undefined, false, undefined, this),
254164
- /* @__PURE__ */ jsx_dev_runtime31.jsxDEV(Text3, {
254145
+ /* @__PURE__ */ jsx_dev_runtime30.jsxDEV(Text3, {
254165
254146
  color: "#AAAAAA",
254166
254147
  children: "·"
254167
254148
  }, undefined, false, undefined, this),
254168
- /* @__PURE__ */ jsx_dev_runtime31.jsxDEV(Text3, {
254149
+ /* @__PURE__ */ jsx_dev_runtime30.jsxDEV(Text3, {
254169
254150
  color: "#89B4F8",
254170
254151
  children: "k"
254171
254152
  }, undefined, false, undefined, this),
254172
- /* @__PURE__ */ jsx_dev_runtime31.jsxDEV(Text3, {
254153
+ /* @__PURE__ */ jsx_dev_runtime30.jsxDEV(Text3, {
254173
254154
  color: "#AAAAAA",
254174
254155
  children: "Kill Task"
254175
254156
  }, undefined, false, undefined, this),
254176
- /* @__PURE__ */ jsx_dev_runtime31.jsxDEV(Text3, {
254157
+ /* @__PURE__ */ jsx_dev_runtime30.jsxDEV(Text3, {
254177
254158
  color: "#AAAAAA",
254178
254159
  children: "·"
254179
254160
  }, undefined, false, undefined, this),
254180
- /* @__PURE__ */ jsx_dev_runtime31.jsxDEV(Text3, {
254161
+ /* @__PURE__ */ jsx_dev_runtime30.jsxDEV(Text3, {
254181
254162
  color: "#89B4F8",
254182
254163
  children: "esc"
254183
254164
  }, undefined, false, undefined, this),
254184
- /* @__PURE__ */ jsx_dev_runtime31.jsxDEV(Text3, {
254165
+ /* @__PURE__ */ jsx_dev_runtime30.jsxDEV(Text3, {
254185
254166
  color: "#AAAAAA",
254186
254167
  children: "Cancel"
254187
254168
  }, undefined, false, undefined, this)
@@ -254194,7 +254175,7 @@ function TasksModeMenu(props) {
254194
254175
  }
254195
254176
 
254196
254177
  // ../../packages/tui/src/components/menus/tool-permission-menu.tsx
254197
- var jsx_dev_runtime32 = __toESM(require_jsx_dev_runtime(), 1);
254178
+ var jsx_dev_runtime31 = __toESM(require_jsx_dev_runtime(), 1);
254198
254179
  function ToolPermissionMenu({ questions, onComplete }) {
254199
254180
  const currentQ = questions[0];
254200
254181
  if (!currentQ)
@@ -254203,46 +254184,46 @@ function ToolPermissionMenu({ questions, onComplete }) {
254203
254184
  const handleSelect = (item) => {
254204
254185
  onComplete(item.value);
254205
254186
  };
254206
- return /* @__PURE__ */ jsx_dev_runtime32.jsxDEV(Box_default, {
254187
+ return /* @__PURE__ */ jsx_dev_runtime31.jsxDEV(Box_default, {
254207
254188
  flexDirection: "column",
254208
254189
  paddingX: 1,
254209
254190
  children: [
254210
- /* @__PURE__ */ jsx_dev_runtime32.jsxDEV(Box_default, {
254191
+ /* @__PURE__ */ jsx_dev_runtime31.jsxDEV(Box_default, {
254211
254192
  marginBottom: 1,
254212
- children: /* @__PURE__ */ jsx_dev_runtime32.jsxDEV(Text3, {
254193
+ children: /* @__PURE__ */ jsx_dev_runtime31.jsxDEV(Text3, {
254213
254194
  color: "white",
254214
254195
  bold: true,
254215
254196
  children: currentQ.question
254216
254197
  }, undefined, false, undefined, this)
254217
254198
  }, undefined, false, undefined, this),
254218
- /* @__PURE__ */ jsx_dev_runtime32.jsxDEV(SelectInput_default, {
254199
+ /* @__PURE__ */ jsx_dev_runtime31.jsxDEV(SelectInput_default, {
254219
254200
  items,
254220
254201
  onSelect: handleSelect,
254221
254202
  indicatorComponent: CustomIndicator,
254222
254203
  itemComponent: CustomItem
254223
254204
  }, undefined, false, undefined, this),
254224
- /* @__PURE__ */ jsx_dev_runtime32.jsxDEV(Box_default, {
254205
+ /* @__PURE__ */ jsx_dev_runtime31.jsxDEV(Box_default, {
254225
254206
  paddingTop: 1,
254226
- children: /* @__PURE__ */ jsx_dev_runtime32.jsxDEV(Box_default, {
254207
+ children: /* @__PURE__ */ jsx_dev_runtime31.jsxDEV(Box_default, {
254227
254208
  gap: 1,
254228
254209
  children: [
254229
- /* @__PURE__ */ jsx_dev_runtime32.jsxDEV(Text3, {
254210
+ /* @__PURE__ */ jsx_dev_runtime31.jsxDEV(Text3, {
254230
254211
  color: "#89B4F8",
254231
254212
  children: "↑↓"
254232
254213
  }, undefined, false, undefined, this),
254233
- /* @__PURE__ */ jsx_dev_runtime32.jsxDEV(Text3, {
254214
+ /* @__PURE__ */ jsx_dev_runtime31.jsxDEV(Text3, {
254234
254215
  color: "#AAAAAA",
254235
254216
  children: "Navigate"
254236
254217
  }, undefined, false, undefined, this),
254237
- /* @__PURE__ */ jsx_dev_runtime32.jsxDEV(Text3, {
254218
+ /* @__PURE__ */ jsx_dev_runtime31.jsxDEV(Text3, {
254238
254219
  color: "#AAAAAA",
254239
254220
  children: "·"
254240
254221
  }, undefined, false, undefined, this),
254241
- /* @__PURE__ */ jsx_dev_runtime32.jsxDEV(Text3, {
254222
+ /* @__PURE__ */ jsx_dev_runtime31.jsxDEV(Text3, {
254242
254223
  color: "#89B4F8",
254243
254224
  children: "enter"
254244
254225
  }, undefined, false, undefined, this),
254245
- /* @__PURE__ */ jsx_dev_runtime32.jsxDEV(Text3, {
254226
+ /* @__PURE__ */ jsx_dev_runtime31.jsxDEV(Text3, {
254246
254227
  color: "#AAAAAA",
254247
254228
  children: "Select"
254248
254229
  }, undefined, false, undefined, this)
@@ -254254,59 +254235,59 @@ function ToolPermissionMenu({ questions, onComplete }) {
254254
254235
  }
254255
254236
 
254256
254237
  // ../../packages/tui/src/components/menus/auth-menus.tsx
254257
- var jsx_dev_runtime33 = __toESM(require_jsx_dev_runtime(), 1);
254238
+ var jsx_dev_runtime32 = __toESM(require_jsx_dev_runtime(), 1);
254258
254239
  function AuthMenus(props) {
254259
254240
  switch (props.authMode) {
254260
254241
  case "menu":
254261
- return /* @__PURE__ */ jsx_dev_runtime33.jsxDEV(MenuMenu, {
254242
+ return /* @__PURE__ */ jsx_dev_runtime32.jsxDEV(MenuMenu, {
254262
254243
  ...props
254263
254244
  }, undefined, false, undefined, this);
254264
254245
  case "december_login_select":
254265
- return /* @__PURE__ */ jsx_dev_runtime33.jsxDEV(DecemberLoginSelectMenu, {
254246
+ return /* @__PURE__ */ jsx_dev_runtime32.jsxDEV(DecemberLoginSelectMenu, {
254266
254247
  ...props
254267
254248
  }, undefined, false, undefined, this);
254268
254249
  case "byok_provider":
254269
- return /* @__PURE__ */ jsx_dev_runtime33.jsxDEV(ByokProviderMenu, {
254250
+ return /* @__PURE__ */ jsx_dev_runtime32.jsxDEV(ByokProviderMenu, {
254270
254251
  ...props
254271
254252
  }, undefined, false, undefined, this);
254272
254253
  case "byok_key":
254273
- return /* @__PURE__ */ jsx_dev_runtime33.jsxDEV(ByokKeyMenu, {
254254
+ return /* @__PURE__ */ jsx_dev_runtime32.jsxDEV(ByokKeyMenu, {
254274
254255
  ...props
254275
254256
  }, undefined, false, undefined, this);
254276
254257
  case "model_select":
254277
- return /* @__PURE__ */ jsx_dev_runtime33.jsxDEV(ModelSelectMenu, {
254258
+ return /* @__PURE__ */ jsx_dev_runtime32.jsxDEV(ModelSelectMenu, {
254278
254259
  ...props
254279
254260
  }, undefined, false, undefined, this);
254280
254261
  case "context_select":
254281
- return /* @__PURE__ */ jsx_dev_runtime33.jsxDEV(ContextSelectMenu, {
254262
+ return /* @__PURE__ */ jsx_dev_runtime32.jsxDEV(ContextSelectMenu, {
254282
254263
  ...props
254283
254264
  }, undefined, false, undefined, this);
254284
254265
  case "logout_select":
254285
- return /* @__PURE__ */ jsx_dev_runtime33.jsxDEV(LogoutSelectMenu, {
254266
+ return /* @__PURE__ */ jsx_dev_runtime32.jsxDEV(LogoutSelectMenu, {
254286
254267
  ...props
254287
254268
  }, undefined, false, undefined, this);
254288
254269
  case "session_select":
254289
- return /* @__PURE__ */ jsx_dev_runtime33.jsxDEV(SessionSelectMenu, {
254270
+ return /* @__PURE__ */ jsx_dev_runtime32.jsxDEV(SessionSelectMenu, {
254290
254271
  ...props
254291
254272
  }, undefined, false, undefined, this);
254292
254273
  case "tasks_mode":
254293
- return /* @__PURE__ */ jsx_dev_runtime33.jsxDEV(TasksModeMenu, {
254274
+ return /* @__PURE__ */ jsx_dev_runtime32.jsxDEV(TasksModeMenu, {
254294
254275
  ...props
254295
254276
  }, undefined, false, undefined, this);
254296
254277
  case "plan_approve":
254297
- return /* @__PURE__ */ jsx_dev_runtime33.jsxDEV(PlanApproveMenu, {
254278
+ return /* @__PURE__ */ jsx_dev_runtime32.jsxDEV(PlanApproveMenu, {
254298
254279
  ...props
254299
254280
  }, undefined, false, undefined, this);
254300
254281
  case "grill_question":
254301
- return /* @__PURE__ */ jsx_dev_runtime33.jsxDEV(GrillQuestionMenu, {
254282
+ return /* @__PURE__ */ jsx_dev_runtime32.jsxDEV(GrillQuestionMenu, {
254302
254283
  ...props
254303
254284
  }, undefined, false, undefined, this);
254304
254285
  case "settings_main":
254305
- return /* @__PURE__ */ jsx_dev_runtime33.jsxDEV(SettingsMainMenu, {
254286
+ return /* @__PURE__ */ jsx_dev_runtime32.jsxDEV(SettingsMainMenu, {
254306
254287
  ...props
254307
254288
  }, undefined, false, undefined, this);
254308
254289
  case "tool_permission":
254309
- return /* @__PURE__ */ jsx_dev_runtime33.jsxDEV(ToolPermissionMenu, {
254290
+ return /* @__PURE__ */ jsx_dev_runtime32.jsxDEV(ToolPermissionMenu, {
254310
254291
  questions: props.pendingQuestions?.questions || [],
254311
254292
  onComplete: (answer) => {
254312
254293
  props.pendingQuestions?.resolve(answer);
@@ -254319,11 +254300,11 @@ function AuthMenus(props) {
254319
254300
  }
254320
254301
  }
254321
254302
  // ../../packages/tui/src/components/menus/ask-question-menu.tsx
254322
- var import_react50 = __toESM(require_react(), 1);
254323
- var jsx_dev_runtime34 = __toESM(require_jsx_dev_runtime(), 1);
254303
+ var import_react49 = __toESM(require_react(), 1);
254304
+ var jsx_dev_runtime33 = __toESM(require_jsx_dev_runtime(), 1);
254324
254305
  function AskQuestionMenu({ questions, onComplete }) {
254325
- const [currentQuestionIdx, setCurrentQuestionIdx] = import_react50.useState(0);
254326
- const [answers, setAnswers] = import_react50.useState([]);
254306
+ const [currentQuestionIdx, setCurrentQuestionIdx] = import_react49.useState(0);
254307
+ const [answers, setAnswers] = import_react49.useState([]);
254327
254308
  const currentQ = questions[currentQuestionIdx];
254328
254309
  if (!currentQ)
254329
254310
  return null;
@@ -254337,29 +254318,29 @@ function AskQuestionMenu({ questions, onComplete }) {
254337
254318
  onComplete(newAnswers.length === 1 ? newAnswers[0] : newAnswers);
254338
254319
  }
254339
254320
  };
254340
- return /* @__PURE__ */ jsx_dev_runtime34.jsxDEV(Box_default, {
254321
+ return /* @__PURE__ */ jsx_dev_runtime33.jsxDEV(Box_default, {
254341
254322
  flexDirection: "column",
254342
254323
  gap: 1,
254343
254324
  children: [
254344
- /* @__PURE__ */ jsx_dev_runtime34.jsxDEV(Box_default, {
254325
+ /* @__PURE__ */ jsx_dev_runtime33.jsxDEV(Box_default, {
254345
254326
  flexDirection: "row",
254346
254327
  gap: 1,
254347
254328
  children: [
254348
- /* @__PURE__ */ jsx_dev_runtime34.jsxDEV(Text3, {
254329
+ /* @__PURE__ */ jsx_dev_runtime33.jsxDEV(Text3, {
254349
254330
  color: "cyan",
254350
254331
  bold: true,
254351
254332
  children: `Q${currentQuestionIdx + 1}/${questions.length}:`
254352
254333
  }, undefined, false, undefined, this),
254353
- /* @__PURE__ */ jsx_dev_runtime34.jsxDEV(Text3, {
254334
+ /* @__PURE__ */ jsx_dev_runtime33.jsxDEV(Text3, {
254354
254335
  color: "white",
254355
254336
  bold: true,
254356
254337
  children: currentQ.question
254357
254338
  }, undefined, false, undefined, this)
254358
254339
  ]
254359
254340
  }, undefined, true, undefined, this),
254360
- /* @__PURE__ */ jsx_dev_runtime34.jsxDEV(Box_default, {
254341
+ /* @__PURE__ */ jsx_dev_runtime33.jsxDEV(Box_default, {
254361
254342
  paddingLeft: 2,
254362
- children: /* @__PURE__ */ jsx_dev_runtime34.jsxDEV(SelectInput_default, {
254343
+ children: /* @__PURE__ */ jsx_dev_runtime33.jsxDEV(SelectInput_default, {
254363
254344
  items,
254364
254345
  onSelect: handleSelect
254365
254346
  }, undefined, false, undefined, this)
@@ -254367,14 +254348,16 @@ function AskQuestionMenu({ questions, onComplete }) {
254367
254348
  ]
254368
254349
  }, undefined, true, undefined, this);
254369
254350
  }
254351
+ // ../../packages/tui/src/components/pill.tsx
254352
+ var jsx_dev_runtime34 = __toESM(require_jsx_dev_runtime(), 1);
254370
254353
  // ../../packages/tui/src/components/task-hud.tsx
254371
254354
  import fs10 from "fs";
254372
254355
  import path9 from "path";
254373
- var import_react51 = __toESM(require_react(), 1);
254356
+ var import_react50 = __toESM(require_react(), 1);
254374
254357
  var jsx_dev_runtime35 = __toESM(require_jsx_dev_runtime(), 1);
254375
254358
  function TaskHUD({ cwd: cwd2, showTasks = true }) {
254376
- const [taskLines, setTaskLines] = import_react51.useState([]);
254377
- import_react51.useEffect(() => {
254359
+ const [taskLines, setTaskLines] = import_react50.useState([]);
254360
+ import_react50.useEffect(() => {
254378
254361
  if (!showTasks)
254379
254362
  return;
254380
254363
  const taskPath = path9.join(cwd2, "task.md");
@@ -254425,7 +254408,7 @@ function TaskHUD({ cwd: cwd2, showTasks = true }) {
254425
254408
  }, undefined, true, undefined, this);
254426
254409
  }
254427
254410
  // ../../packages/tui/src/app.tsx
254428
- var import_react52 = __toESM(require_react(), 1);
254411
+ var import_react51 = __toESM(require_react(), 1);
254429
254412
  var jsx_dev_runtime36 = __toESM(require_jsx_dev_runtime(), 1);
254430
254413
  function ChatApp({
254431
254414
  agent: agent2,
@@ -254437,9 +254420,9 @@ function ChatApp({
254437
254420
  onLoginHeadless,
254438
254421
  session
254439
254422
  }) {
254440
- const [inputHistory, setInputHistory] = import_react52.useState([]);
254441
- const [exitConfirm, setExitConfirm] = import_react52.useState(false);
254442
- import_react52.useEffect(() => {
254423
+ const [inputHistory, setInputHistory] = import_react51.useState([]);
254424
+ const [exitConfirm, setExitConfirm] = import_react51.useState(false);
254425
+ import_react51.useEffect(() => {
254443
254426
  if (exitConfirm) {
254444
254427
  const timer = setTimeout(() => setExitConfirm(false), 3000);
254445
254428
  return () => clearTimeout(timer);
@@ -254471,7 +254454,7 @@ function ChatApp({
254471
254454
  agent: agent2,
254472
254455
  getProviderModels: session.getProviderModels
254473
254456
  }, undefined, false, undefined, this) : null;
254474
- const handleFormSubmit = import_react52.useCallback((text3) => {
254457
+ const handleFormSubmit = import_react51.useCallback((text3) => {
254475
254458
  if (text3 && !text3.startsWith("/")) {
254476
254459
  setInputHistory((prev2) => [...prev2, text3]);
254477
254460
  }
@@ -254501,7 +254484,8 @@ function ChatApp({
254501
254484
  activeMessages,
254502
254485
  isAuthenticated,
254503
254486
  cliVersion,
254504
- userEmail: currentEmail || userEmail
254487
+ userEmail: currentEmail || userEmail,
254488
+ expandCommands: session.expandCommands
254505
254489
  }, undefined, false, undefined, this),
254506
254490
  /* @__PURE__ */ jsx_dev_runtime36.jsxDEV(InputBar, {
254507
254491
  onSubmit: handleFormSubmit,
@@ -254536,11 +254520,13 @@ function ChatApp({
254536
254520
  hasBothAuth: session.hasBothAuth,
254537
254521
  authUI,
254538
254522
  agent: agent2,
254523
+ toasts: session.toasts,
254539
254524
  resetChat: () => {
254540
254525
  console.clear();
254541
254526
  setStaticMessages([{ id: "header-" + Date.now(), role: "header" }]);
254542
254527
  setStaticKey((k) => k + 1);
254543
254528
  setActiveMessages([]);
254529
+ session.addToast?.("Started a new conversation.", "success");
254544
254530
  },
254545
254531
  planMode,
254546
254532
  grillMode,
@@ -254663,19 +254649,23 @@ function GlobalShortcuts(session) {
254663
254649
  setAuthMode("settings");
254664
254650
  } else if (key.ctrl && input === "t") {
254665
254651
  setAuthMode("tasks_mode");
254652
+ } else if (key.ctrl && (key.name === "o" || input?.toLowerCase() === "o") || input === "\x0F") {
254653
+ if (session.toggleExpandCommands) {
254654
+ session.toggleExpandCommands();
254655
+ }
254666
254656
  }
254667
254657
  });
254668
254658
  return null;
254669
254659
  }
254670
254660
  // src/index.ts
254671
- var import_react55 = __toESM(require_react(), 1);
254661
+ var import_react54 = __toESM(require_react(), 1);
254672
254662
  // package.json
254673
254663
  var package_default = {
254674
254664
  name: "@trydecember/cli",
254675
254665
  module: "src/index.ts",
254676
254666
  type: "module",
254677
254667
  private: false,
254678
- version: "0.2.21",
254668
+ version: "0.2.22",
254679
254669
  description: "Turn ideas into reality.",
254680
254670
  author: "Chaitanya Sonawane",
254681
254671
  license: "Apache-2.0",
@@ -255335,7 +255325,7 @@ Execute ${toolCall.name}? (y/n): `);
255335
255325
  hasError = true;
255336
255326
  errorMessage = event.error;
255337
255327
  writeErr(`
255338
- [Agent Error: ${event.error}]
255328
+ [Error: ${event.error}]
255339
255329
  `);
255340
255330
  break;
255341
255331
  }
@@ -255354,7 +255344,7 @@ Headless task complete.
255354
255344
  }
255355
255345
  // src/hooks/use-agent-session.ts
255356
255346
  init_config();
255357
- var import_react54 = __toESM(require_react(), 1);
255347
+ var import_react53 = __toESM(require_react(), 1);
255358
255348
 
255359
255349
  // src/constants/prompts.ts
255360
255350
  var getGrillPrompt = (userPrompt) => `You are a product manager interviewing a developer.
@@ -255407,11 +255397,11 @@ var createStoreImpl = (createState) => {
255407
255397
  var createStore = (createState) => createState ? createStoreImpl(createState) : createStoreImpl;
255408
255398
 
255409
255399
  // ../../node_modules/.bun/zustand@5.0.14+93dbe784b8baa420/node_modules/zustand/esm/react.mjs
255410
- var import_react53 = __toESM(require_react(), 1);
255400
+ var import_react52 = __toESM(require_react(), 1);
255411
255401
  var identity2 = (arg) => arg;
255412
255402
  function useStore(api3, selector = identity2) {
255413
- const slice3 = import_react53.default.useSyncExternalStore(api3.subscribe, import_react53.default.useCallback(() => selector(api3.getState()), [api3, selector]), import_react53.default.useCallback(() => selector(api3.getInitialState()), [api3, selector]));
255414
- import_react53.default.useDebugValue(slice3);
255403
+ const slice3 = import_react52.default.useSyncExternalStore(api3.subscribe, import_react52.default.useCallback(() => selector(api3.getState()), [api3, selector]), import_react52.default.useCallback(() => selector(api3.getInitialState()), [api3, selector]));
255404
+ import_react52.default.useDebugValue(slice3);
255415
255405
  return slice3;
255416
255406
  }
255417
255407
  var createImpl = (createState) => {
@@ -255535,9 +255525,15 @@ var useCliStore = create4((set3) => ({
255535
255525
  pendingToolCall: null,
255536
255526
  setPendingToolCall: (pendingToolCall) => set3({ pendingToolCall }),
255537
255527
  toasts: [],
255538
- addToast: (message, variant = "info") => set3((state) => ({
255539
- toasts: [...state.toasts, { id: Date.now().toString(), message, variant }]
255540
- })),
255528
+ addToast: (message, variant = "info") => {
255529
+ const id = Date.now().toString() + Math.random().toString();
255530
+ set3((state) => ({
255531
+ toasts: [...state.toasts, { id, message, variant }]
255532
+ }));
255533
+ setTimeout(() => {
255534
+ set3((state) => ({ toasts: state.toasts.filter((t2) => t2.id !== id) }));
255535
+ }, 3000);
255536
+ },
255541
255537
  removeToast: (id) => set3((state) => ({ toasts: state.toasts.filter((t2) => t2.id !== id) })),
255542
255538
  shouldExit: false,
255543
255539
  setShouldExit: (shouldExit) => set3({ shouldExit })
@@ -255756,16 +255752,22 @@ function getToolSummary(name, inputStr) {
255756
255752
  const args = JSON.parse(inputStr || "{}");
255757
255753
  switch (name) {
255758
255754
  case "read_file":
255759
- case "view_file":
255760
- return `Read(${args.AbsolutePath || args.filePath || args.path || ""})`.trim();
255755
+ case "view_file": {
255756
+ const path13 = args.AbsolutePath || args.TargetFile || args.filePath || args.filepath || args.path || args.file || "";
255757
+ return `Read(${path13})`.trim();
255758
+ }
255761
255759
  case "write_file":
255762
- case "write_to_file":
255763
- return `Create(${args.TargetFile || args.filePath || args.path || ""})`.trim();
255760
+ case "write_to_file": {
255761
+ const path13 = args.TargetFile || args.AbsolutePath || args.filePath || args.filepath || args.path || args.file || "";
255762
+ return `Create(${path13})`.trim();
255763
+ }
255764
255764
  case "edit_file":
255765
255765
  case "edit_diff":
255766
255766
  case "replace_file_content":
255767
- case "multi_replace_file_content":
255768
- return `Edit(${args.TargetFile || args.filePath || args.path || ""})`.trim();
255767
+ case "multi_replace_file_content": {
255768
+ const path13 = args.TargetFile || args.AbsolutePath || args.filePath || args.filepath || args.path || args.file || "";
255769
+ return `Edit(${path13})`.trim();
255770
+ }
255769
255771
  case "list_dir":
255770
255772
  return `ListDir(${args.DirectoryPath || args.dirPath || args.path || ""})`.trim();
255771
255773
  case "bash":
@@ -255810,12 +255812,17 @@ async function processAgentStream({
255810
255812
  return msg;
255811
255813
  const blocks = [...msg.blocks || []];
255812
255814
  let finalMsg = { ...msg };
255815
+ const isStatusMessage = (content) => content === "Working..." || content === "Thinking..." || content.startsWith("Rate limit") || content.startsWith("High demand") || content.startsWith("LLM Provider rate limit") || content.startsWith("LLM Provider high demand");
255813
255816
  for (const event of eventsToProcess) {
255814
255817
  switch (event.type) {
255815
255818
  case "TurnStart":
255816
255819
  blocks.push({ type: "text", content: "Working..." });
255817
255820
  break;
255818
255821
  case "AgentError": {
255822
+ const lastBlock = blocks[blocks.length - 1];
255823
+ if (lastBlock && (lastBlock.type === "thinking" || lastBlock.type === "text" && isStatusMessage(lastBlock.content))) {
255824
+ blocks.pop();
255825
+ }
255819
255826
  const errMsg = parseErrorMessage({ message: event.error });
255820
255827
  blocks.push({
255821
255828
  type: "error",
@@ -255825,18 +255832,22 @@ async function processAgentStream({
255825
255832
  }
255826
255833
  case "AgentInterrupt": {
255827
255834
  const lastBlock = blocks[blocks.length - 1];
255828
- if (lastBlock && lastBlock.type === "text" && (lastBlock.content === "Working..." || lastBlock.content === "Thinking..." || lastBlock.content.startsWith("Rate limit hit"))) {
255835
+ if (lastBlock && lastBlock.type === "text" && isStatusMessage(lastBlock.content)) {
255829
255836
  lastBlock.content = "";
255830
255837
  }
255831
255838
  blocks.push({ type: "interrupt" });
255832
255839
  break;
255833
255840
  }
255834
255841
  case "AgentStatus": {
255842
+ const isRetryStatus = event.message?.startsWith("LLM Provider") || event.message?.startsWith("Rate limit") || event.message?.startsWith("High demand");
255843
+ const color = isRetryStatus ? "#FCA5A5" : undefined;
255835
255844
  const statusBlock = blocks[blocks.length - 1];
255836
- if (statusBlock && statusBlock.type === "text" && (statusBlock.content === "Working..." || statusBlock.content === "Thinking..." || statusBlock.content.startsWith("Rate limit hit"))) {
255845
+ if (statusBlock && statusBlock.type === "text" && isStatusMessage(statusBlock.content)) {
255837
255846
  statusBlock.content = event.message || "Working...";
255847
+ if (color)
255848
+ statusBlock.color = color;
255838
255849
  } else if (event.message) {
255839
- blocks.push({ type: "text", content: event.message });
255850
+ blocks.push({ type: "text", content: event.message, color });
255840
255851
  }
255841
255852
  break;
255842
255853
  }
@@ -255847,7 +255858,7 @@ async function processAgentStream({
255847
255858
  case "StreamChunk": {
255848
255859
  const lastBlock = blocks[blocks.length - 1];
255849
255860
  if (lastBlock && lastBlock.type === "text") {
255850
- lastBlock.content = (lastBlock.content === "Working..." || lastBlock.content === "Thinking..." || lastBlock.content.startsWith("Rate limit hit") ? "" : lastBlock.content) + event.content;
255861
+ lastBlock.content = (isStatusMessage(lastBlock.content) ? "" : lastBlock.content) + event.content;
255851
255862
  } else {
255852
255863
  blocks.push({ type: "text", content: event.content });
255853
255864
  }
@@ -255858,7 +255869,7 @@ async function processAgentStream({
255858
255869
  if (lastThinkBlock && lastThinkBlock.type === "thinking") {
255859
255870
  lastThinkBlock.content += event.content;
255860
255871
  } else {
255861
- if (blocks.length > 0 && blocks[blocks.length - 1].type === "text" && (blocks[blocks.length - 1].content === "Working..." || blocks[blocks.length - 1].content === "Thinking...")) {
255872
+ if (blocks.length > 0 && blocks[blocks.length - 1].type === "text" && isStatusMessage(blocks[blocks.length - 1].content)) {
255862
255873
  blocks.pop();
255863
255874
  }
255864
255875
  blocks.push({ type: "thinking", content: event.content });
@@ -255908,11 +255919,17 @@ async function processAgentStream({
255908
255919
  };
255909
255920
  for await (const event of stream) {
255910
255921
  pendingEvents.push(event);
255911
- if (!flushTimeout) {
255922
+ if (event.type === "StreamChunk" || event.type === "TextChunk" || event.type === "ThinkingChunk") {
255923
+ if (flushTimeout) {
255924
+ clearTimeout(flushTimeout);
255925
+ flushTimeout = null;
255926
+ }
255927
+ flush();
255928
+ } else if (!flushTimeout) {
255912
255929
  flushTimeout = setTimeout(() => {
255913
255930
  flush();
255914
255931
  flushTimeout = null;
255915
- }, 50);
255932
+ }, 16);
255916
255933
  }
255917
255934
  }
255918
255935
  if (flushTimeout) {
@@ -255938,6 +255955,11 @@ var MESSAGES = {
255938
255955
  CONFIG: {
255939
255956
  MODEL_UPDATED: (model) => `Default model updated to ${model}`,
255940
255957
  MAX_TOKENS_SET: (tokens) => `Max tokens set to ${tokens}`
255958
+ },
255959
+ ERROR: {
255960
+ RATE_LIMIT: `Rate limit or quota exhausted from LLM provider. Please upgrade your API key tier with your provider (OpenAI, Anthropic, Gemini) or switch to December Cloud Subscription at https://trydecember.com/pricing
255961
+
255962
+ `
255941
255963
  }
255942
255964
  };
255943
255965
 
@@ -255996,7 +256018,8 @@ function useAuthHandlers(agent2, onLogin, onLoginHeadless) {
255996
256018
  setHasBothAuth,
255997
256019
  setSettingsAuthPriority,
255998
256020
  setAuthMethod,
255999
- setStaticKey
256021
+ setStaticKey,
256022
+ addToast
256000
256023
  } = useCliStore();
256001
256024
  const handleAuthMenuSelect = async (item) => {
256002
256025
  if (item.value === "december") {
@@ -256004,14 +256027,7 @@ function useAuthHandlers(agent2, onLogin, onLoginHeadless) {
256004
256027
  } else if (item.value === "december_browser") {
256005
256028
  setAuthMode("none");
256006
256029
  setIsStreaming(true);
256007
- setStaticMessages((prev2) => [...prev2, ...activeMessages]);
256008
- setActiveMessages([
256009
- {
256010
- id: getNextMsgId(),
256011
- role: "assistant",
256012
- blocks: [{ type: "text", content: `Opening browser to log in...` }]
256013
- }
256014
- ]);
256030
+ addToast("Opening browser to log in...", "info");
256015
256031
  try {
256016
256032
  if (!onLogin) {
256017
256033
  throw new Error("Login functionality is not provided by the host environment.");
@@ -256046,19 +256062,9 @@ If it doesn't open automatically, please click here:
256046
256062
  agent2.setLLM(provider);
256047
256063
  setIsAuthenticated(true);
256048
256064
  }
256049
- setStaticMessages((prev2) => [...prev2, ...activeMessages]);
256050
- setActiveMessages([
256051
- {
256052
- id: getNextMsgId(),
256053
- role: "assistant",
256054
- blocks: [{ type: "text", content: MESSAGES.AUTH.LOGIN_SUCCESS_DECEMBER }]
256055
- }
256056
- ]);
256065
+ addToast(MESSAGES.AUTH.LOGIN_SUCCESS_DECEMBER, "success");
256057
256066
  } catch (err) {
256058
- setStaticMessages((prev2) => [...prev2, ...activeMessages]);
256059
- setActiveMessages([
256060
- { id: getNextMsgId(), role: "error", text: `Login failed: ${err.message}` }
256061
- ]);
256067
+ addToast(`Login failed: ${err.message}`, "error");
256062
256068
  } finally {
256063
256069
  setIsStreaming(false);
256064
256070
  }
@@ -256089,7 +256095,7 @@ If it doesn't open automatically, please click here:
256089
256095
  content: `Please open [${uri}](${uri}) on any device and enter code: \`${code}\``
256090
256096
  },
256091
256097
  {
256092
- type: "thinking",
256098
+ type: "text",
256093
256099
  content: "Waiting for authorization..."
256094
256100
  }
256095
256101
  ]
@@ -256143,14 +256149,7 @@ If it doesn't open automatically, please click here:
256143
256149
  await saveConfig(config2);
256144
256150
  agent2.modelOptions = { model: item.value };
256145
256151
  setAuthMode("none");
256146
- setStaticMessages((prev2) => [...prev2, ...activeMessages]);
256147
- setActiveMessages([
256148
- {
256149
- id: getNextMsgId(),
256150
- role: "assistant",
256151
- blocks: [{ type: "text", content: `Model successfully changed to ${item.value}!` }]
256152
- }
256153
- ]);
256152
+ addToast(`Model changed to ${item.value}`, "success");
256154
256153
  };
256155
256154
  const handleProviderSelect = async (item) => {
256156
256155
  const config2 = await loadConfig();
@@ -256170,19 +256169,7 @@ If it doesn't open automatically, please click here:
256170
256169
  setSettingsAuthPriority(authStatus.authPriority);
256171
256170
  setIsAuthenticated(true);
256172
256171
  setAuthMode("none");
256173
- setStaticMessages((prev2) => [...prev2, ...activeMessages]);
256174
- setActiveMessages([
256175
- {
256176
- id: getNextMsgId(),
256177
- role: "assistant",
256178
- blocks: [
256179
- {
256180
- type: "text",
256181
- content: `Switched active provider to ${item.value.toUpperCase()} (using saved key).`
256182
- }
256183
- ]
256184
- }
256185
- ]);
256172
+ addToast(`Switched active provider to ${item.value.toUpperCase()}`, "success");
256186
256173
  } else {
256187
256174
  setSelectedProvider(item.value);
256188
256175
  setAuthMode("byok_key");
@@ -256221,20 +256208,7 @@ If it doesn't open automatically, please click here:
256221
256208
  setSettingsAuthPriority(authStatus.authPriority);
256222
256209
  setAuthMode("none");
256223
256210
  setApiKey("");
256224
- setStaticMessages((prev2) => [...prev2, ...activeMessages]);
256225
- setActiveMessages([
256226
- {
256227
- id: getNextMsgId(),
256228
- role: "assistant",
256229
- blocks: [
256230
- {
256231
- type: "status",
256232
- success: true,
256233
- label: MESSAGES.AUTH.API_KEY_SAVED(selectedProvider)
256234
- }
256235
- ]
256236
- }
256237
- ]);
256211
+ addToast(MESSAGES.AUTH.API_KEY_SAVED(selectedProvider), "success");
256238
256212
  } catch (err) {
256239
256213
  const errStr = (err?.message || JSON.stringify(err) || String(err)).toLowerCase();
256240
256214
  if (errStr.includes("429") || errStr.includes("quota") || errStr.includes("rate limit") || errStr.includes("404") || errStr.includes("not found")) {
@@ -256256,22 +256230,8 @@ If it doesn't open automatically, please click here:
256256
256230
  setSettingsAuthPriority(authStatus.authPriority);
256257
256231
  setAuthMode("none");
256258
256232
  setApiKey("");
256259
- setStaticMessages((prev2) => [...prev2, ...activeMessages]);
256260
- setActiveMessages([
256261
- {
256262
- id: getNextMsgId(),
256263
- role: "assistant",
256264
- blocks: [
256265
- {
256266
- type: "status",
256267
- success: true,
256268
- label: `API Key saved for ${selectedProvider}`
256269
- }
256270
- ]
256271
- }
256272
- ]);
256233
+ addToast(`API Key saved for ${selectedProvider}`, "success");
256273
256234
  } else {
256274
- setStaticMessages((prev2) => [...prev2, ...activeMessages]);
256275
256235
  let cleanMessage = err?.message || String(err);
256276
256236
  try {
256277
256237
  const parsed = JSON.parse(cleanMessage);
@@ -256287,21 +256247,9 @@ If it doesn't open automatically, please click here:
256287
256247
  cleanMessage = parsed.message;
256288
256248
  }
256289
256249
  } catch {}
256290
- setActiveMessages([
256291
- {
256292
- id: getNextMsgId(),
256293
- role: "assistant",
256294
- blocks: [
256295
- {
256296
- type: "status",
256297
- success: false,
256298
- label: `Invalid API Key for ${selectedProvider}`
256299
- },
256300
- { type: "text", content: cleanMessage }
256301
- ]
256302
- }
256303
- ]);
256250
+ setAuthMode("none");
256304
256251
  setApiKey("");
256252
+ addToast(`Invalid API Key for ${selectedProvider}: ${cleanMessage}`, "error");
256305
256253
  }
256306
256254
  } finally {
256307
256255
  setIsStreaming(false);
@@ -256341,13 +256289,7 @@ If it doesn't open automatically, please click here:
256341
256289
  setAuthMethod(undefined);
256342
256290
  }
256343
256291
  setStaticMessages((prev2) => [...prev2, ...activeMessages]);
256344
- setActiveMessages([
256345
- {
256346
- id: getNextMsgId(),
256347
- role: "assistant",
256348
- blocks: [{ type: "text", content: `Removed credentials for: ${removedName}` }]
256349
- }
256350
- ]);
256292
+ addToast(`Removed credentials for: ${removedName}`, "success");
256351
256293
  };
256352
256294
  const handleSessionSelect = async (item) => {
256353
256295
  setAuthMode("none");
@@ -256396,22 +256338,10 @@ If it doesn't open automatically, please click here:
256396
256338
  }
256397
256339
  setStaticMessages([{ id: "header", role: "header" }, ...resumedMessages]);
256398
256340
  setStaticKey((k) => k + 1);
256399
- setActiveMessages([
256400
- {
256401
- id: getNextMsgId(),
256402
- role: "assistant",
256403
- blocks: [{ type: "text", content: `Resumed session: ${item.value}` }]
256404
- }
256405
- ]);
256341
+ setActiveMessages([]);
256342
+ addToast(`Resumed session: ${item.value}`, "success");
256406
256343
  } catch (err) {
256407
- setStaticMessages((prev2) => [...prev2, ...activeMessages]);
256408
- setActiveMessages([
256409
- {
256410
- id: getNextMsgId(),
256411
- role: "error",
256412
- text: `Failed to resume session: ${err.message}`
256413
- }
256414
- ]);
256344
+ addToast(`Failed to resume session: ${err.message}`, "error");
256415
256345
  }
256416
256346
  };
256417
256347
  return {
@@ -256626,6 +256556,7 @@ function useAgentSession({
256626
256556
  setPendingQuestions,
256627
256557
  pendingToolCall,
256628
256558
  setPendingToolCall,
256559
+ toasts,
256629
256560
  addToast,
256630
256561
  setShouldExit,
256631
256562
  tasksData,
@@ -256675,7 +256606,11 @@ function useAgentSession({
256675
256606
  settingsFollowUpMode,
256676
256607
  setSettingsFollowUpMode
256677
256608
  } = state;
256678
- import_react54.useEffect(() => {
256609
+ const [expandCommands, setExpandCommands] = import_react53.useState(false);
256610
+ const toggleExpandCommands = import_react53.useCallback(() => {
256611
+ setExpandCommands((prev2) => !prev2);
256612
+ }, []);
256613
+ import_react53.useEffect(() => {
256679
256614
  setIsAuthenticated(initialAuth);
256680
256615
  setAuthMethod(initialAuthMethod);
256681
256616
  if (initialHasBothAuth !== undefined)
@@ -256696,7 +256631,7 @@ function useAgentSession({
256696
256631
  setSettingsAuthPriority,
256697
256632
  setCurrentEmail
256698
256633
  ]);
256699
- import_react54.useEffect(() => {
256634
+ import_react53.useEffect(() => {
256700
256635
  if (agent2) {
256701
256636
  if (!agent2.operations)
256702
256637
  agent2.operations = {};
@@ -256730,7 +256665,7 @@ function useAgentSession({
256730
256665
  };
256731
256666
  }
256732
256667
  }, [agent2]);
256733
- import_react54.useEffect(() => {
256668
+ import_react53.useEffect(() => {
256734
256669
  if (authMode === "tasks_mode") {
256735
256670
  const update3 = () => {
256736
256671
  setTasksData([...taskManager.getTasks()]);
@@ -256740,11 +256675,11 @@ function useAgentSession({
256740
256675
  return () => clearInterval(interval);
256741
256676
  }
256742
256677
  }, [authMode, setTasksData]);
256743
- const handleKillTask = import_react54.useCallback((taskId) => {
256678
+ const handleKillTask = import_react53.useCallback((taskId) => {
256744
256679
  taskManager.killTask(taskId);
256745
256680
  setTasksData([...taskManager.getTasks()]);
256746
256681
  }, [setTasksData]);
256747
- const generateGrillQuestions = import_react54.useCallback(async (userPrompt) => {
256682
+ const generateGrillQuestions = import_react53.useCallback(async (userPrompt) => {
256748
256683
  setIsStreaming(true);
256749
256684
  setStaticMessages((prev2) => [...prev2, ...activeMessages]);
256750
256685
  setActiveMessages([
@@ -256786,19 +256721,12 @@ function useAgentSession({
256786
256721
  setActiveMessages([]);
256787
256722
  } catch (err) {
256788
256723
  const cleanError = parseErrorMessage(err);
256789
- addToast("Failed to generate grill questions.");
256790
- setActiveMessages([
256791
- {
256792
- id: getNextMsgId(),
256793
- role: "error",
256794
- text: `Grill Failed: ${cleanError}`
256795
- }
256796
- ]);
256724
+ addToast(`Grill Failed: ${cleanError}`, "error");
256797
256725
  } finally {
256798
256726
  setIsStreaming(false);
256799
256727
  }
256800
256728
  }, [agent2, activeMessages]);
256801
- const generatePlanFromGrill = import_react54.useCallback(async (answers) => {
256729
+ const generatePlanFromGrill = import_react53.useCallback(async (answers) => {
256802
256730
  setAuthMode("none");
256803
256731
  const originalPrompt = grillPrompt;
256804
256732
  setGrillPrompt(null);
@@ -256832,7 +256760,7 @@ function useAgentSession({
256832
256760
  setAuthMode("plan_approve");
256833
256761
  }
256834
256762
  }, [agent2, grillPrompt, grillQuestions, activeMessages]);
256835
- const handleGrillSelect = import_react54.useCallback(async (item) => {
256763
+ const handleGrillSelect = import_react53.useCallback(async (item) => {
256836
256764
  if (item.value === "custom") {
256837
256765
  setCustomInputMode(true);
256838
256766
  return;
@@ -256845,7 +256773,7 @@ function useAgentSession({
256845
256773
  await generatePlanFromGrill(nextAnswers);
256846
256774
  }
256847
256775
  }, [grillAnswers, currentGrillIndex, grillQuestions, generatePlanFromGrill]);
256848
- const handleSubmit = import_react54.useCallback(async (text3) => {
256776
+ const handleSubmit = import_react53.useCallback(async (text3) => {
256849
256777
  if (text3.trim() === "/exit") {
256850
256778
  setShouldExit(true);
256851
256779
  process.exit(0);
@@ -256866,19 +256794,7 @@ function useAgentSession({
256866
256794
  }
256867
256795
  }
256868
256796
  if (items.length === 0) {
256869
- setStaticMessages((prev2) => [...prev2, ...activeMessages]);
256870
- setActiveMessages([
256871
- {
256872
- id: getNextMsgId(),
256873
- role: "assistant",
256874
- blocks: [
256875
- {
256876
- type: "text",
256877
- content: "No stored credentials to remove. `/logout` only removes credentials saved by `/login`."
256878
- }
256879
- ]
256880
- }
256881
- ]);
256797
+ addToast("No stored credentials to remove.", "info");
256882
256798
  } else {
256883
256799
  setLogoutItems(items);
256884
256800
  setAuthMode("logout_select");
@@ -256914,9 +256830,7 @@ function useAgentSession({
256914
256830
  blocks: [
256915
256831
  {
256916
256832
  type: "text",
256917
- content: `**Authentication Required**
256918
-
256919
- You are not logged in and have no custom API keys (BYOK) configured.
256833
+ content: `You are not logged in and have no custom API keys (BYOK) configured.
256920
256834
 
256921
256835
  Please run \`/login\` to:
256922
256836
  - Sign in with your December account (Cloud Wallet), or
@@ -256953,15 +256867,7 @@ Please run \`/login\` to:
256953
256867
  }
256954
256868
  sessionRepository.listSessions().then((sessions) => {
256955
256869
  if (sessions.length === 0) {
256956
- setStaticMessages((prev2) => [...prev2, ...activeMessages]);
256957
- setActiveMessages([
256958
- { id: getNextMsgId(), role: "user", text: text3 },
256959
- {
256960
- id: getNextMsgId(),
256961
- role: "assistant",
256962
- blocks: [{ type: "text", content: "No previous sessions found." }]
256963
- }
256964
- ]);
256870
+ addToast("No previous sessions found.", "info");
256965
256871
  return;
256966
256872
  }
256967
256873
  setSessionsData(sessions);
@@ -257057,9 +256963,7 @@ If it doesn't open automatically, please click here:
257057
256963
  blocks: [
257058
256964
  {
257059
256965
  type: "text",
257060
- content: `**Authentication Required**
257061
-
257062
- You are not logged in and have no custom API keys (BYOK) configured.
256966
+ content: `You are not logged in and have no custom API keys (BYOK) configured.
257063
256967
 
257064
256968
  Please run \`/login\` to:
257065
256969
  - Sign in with your December account (Cloud Wallet), or
@@ -257119,7 +257023,7 @@ Explain which files need to be created, modified, or deleted, and what the chang
257119
257023
  grillMode,
257120
257024
  planMode
257121
257025
  ]);
257122
- const handleAbort = import_react54.useCallback(() => {
257026
+ const handleAbort = import_react53.useCallback(() => {
257123
257027
  if (isStreaming && agent2) {
257124
257028
  agent2.abort();
257125
257029
  }
@@ -257138,7 +257042,7 @@ Explain which files need to be created, modified, or deleted, and what the chang
257138
257042
  handleLogoutSelect,
257139
257043
  handleSessionSelect
257140
257044
  } = useAuthHandlers(agent2, onLogin, onLoginHeadless);
257141
- const handlePlanApprovalSelect = import_react54.useCallback(async (item) => {
257045
+ const handlePlanApprovalSelect = import_react53.useCallback(async (item) => {
257142
257046
  setAuthMode("none");
257143
257047
  const originalPrompt = currentPlannedPrompt;
257144
257048
  setCurrentPlannedPrompt(null);
@@ -257147,17 +257051,9 @@ Explain which files need to be created, modified, or deleted, and what the chang
257147
257051
  await handleSubmit(originalPrompt);
257148
257052
  }
257149
257053
  } else {
257150
- addToast("Plan rejected.");
257151
- setActiveMessages((prev2) => [
257152
- ...prev2,
257153
- {
257154
- id: getNextMsgId(),
257155
- role: "assistant",
257156
- blocks: [{ type: "text", content: "*Plan rejected by user.*" }]
257157
- }
257158
- ]);
257054
+ addToast("Plan rejected.", "error");
257159
257055
  }
257160
- }, [currentPlannedPrompt, handleSubmit, addToast, setAuthMode, setActiveMessages]);
257056
+ }, [currentPlannedPrompt, handleSubmit, addToast, setAuthMode]);
257161
257057
  const handleContextSelect = () => {};
257162
257058
  return {
257163
257059
  currentPlannedPrompt,
@@ -257253,12 +257149,16 @@ Explain which files need to be created, modified, or deleted, and what the chang
257253
257149
  setPendingQuestions,
257254
257150
  getProviderModels,
257255
257151
  handleAbort,
257256
- handleKillTask
257152
+ handleKillTask,
257153
+ toasts,
257154
+ addToast,
257155
+ expandCommands,
257156
+ toggleExpandCommands
257257
257157
  };
257258
257158
  }
257259
257159
 
257260
257160
  // src/local-operations.ts
257261
- import { exec as exec5, spawn as spawn5 } from "node:child_process";
257161
+ import { exec as exec5, spawn as spawn4 } from "node:child_process";
257262
257162
  import fs14 from "node:fs/promises";
257263
257163
  import path13 from "node:path";
257264
257164
  import { promisify as promisify3 } from "node:util";
@@ -257269,7 +257169,7 @@ var localOperations = {
257269
257169
  bash: {
257270
257170
  exec: async (command, cwd2, options) => {
257271
257171
  return new Promise((resolve4, reject2) => {
257272
- const child = spawn5(command, {
257172
+ const child = spawn4(command, {
257273
257173
  cwd: cwd2,
257274
257174
  detached: process.platform !== "win32",
257275
257175
  env: options.env ?? process.env,
@@ -257295,14 +257195,15 @@ var localOperations = {
257295
257195
  taskManager.killTask(task.id);
257296
257196
  }, options.timeout * 1000);
257297
257197
  }
257298
- const bgTimeout = setTimeout(() => {
257198
+ const bgTimeout = options?.waitMsBeforeAsync ? setTimeout(() => {
257299
257199
  if (!resolved) {
257300
257200
  resolved = true;
257301
257201
  resolve4({ exitCode: null, output, taskId: task.id });
257302
257202
  }
257303
- }, 3000);
257203
+ }, options.waitMsBeforeAsync) : undefined;
257304
257204
  child.on("close", (code) => {
257305
- clearTimeout(bgTimeout);
257205
+ if (bgTimeout)
257206
+ clearTimeout(bgTimeout);
257306
257207
  if (timeoutHandle)
257307
257208
  clearTimeout(timeoutHandle);
257308
257209
  taskManager.markCompleted(task.id, code);
@@ -257412,7 +257313,7 @@ var localOperations = {
257412
257313
  // src/index.ts
257413
257314
  function AppWrapper(props) {
257414
257315
  const session = useAgentSession(props);
257415
- return import_react55.default.createElement(ChatApp, { ...props, session });
257316
+ return import_react54.default.createElement(ChatApp, { ...props, session });
257416
257317
  }
257417
257318
  async function main() {
257418
257319
  process.title = "december";
@@ -257464,11 +257365,15 @@ async function main() {
257464
257365
  baseSystemPrompt: `You are December, an autonomous, expert coding agent. You help the user by exploring codebases, executing terminal commands, editing files, and resolving complex tasks.
257465
257366
  Guidelines:
257466
257367
  - Plan carefully before making broad changes.
257467
- - Use bash tools to explore the environment before guessing file paths.
257368
+ - Code & Symbol Search: Use 'grep_search' to find functions, error strings, symbols, or imports across files instead of reading files one by one.
257369
+ - File Discovery: Use 'find_files' with glob patterns (e.g. "**/*.ts") to locate matching files instead of stepping through folders with list_dir.
257370
+ - File Editing: Use 'edit_file' or 'edit_diff' when modifying existing files to preserve untouched lines. Use 'write_file' primarily for creating new files.
257371
+ - Web & Docs: Use 'web_search' to look up current documentation, library APIs, or external error tracebacks.
257372
+ - Background Tasks: Use 'manage_task' to monitor or stop background processes started by bash.
257468
257373
  - Be extremely concise in your responses. The user is a developer who values speed and exactness.
257469
257374
  - ALWAYS show absolute file paths when viewing or editing files.
257470
257375
  - Before using a tool, you MUST enclose your thought process inside <thought>...</thought> tags.
257471
- - At the end of your work, provide a summary of what you did, highlighting important keywords.`,
257376
+ - At the end of your work, provide a concise summary of what you did (4-5 lines maximum, written as a single cohesive paragraph), highlighting key actions and results.`,
257472
257377
  llm,
257473
257378
  tools: [
257474
257379
  BashTool,
@@ -257520,7 +257425,7 @@ Executing Headless Task: "${parsedArgs.prompt}"
257520
257425
  const result2 = await runHeadlessTask(parsedArgs.prompt, { agent: agent2 });
257521
257426
  process.exit(result2.success ? 0 : 1);
257522
257427
  }
257523
- render_default(import_react55.default.createElement(RootLayout, null, import_react55.default.createElement(AppWrapper, {
257428
+ render_default(import_react54.default.createElement(RootLayout, null, import_react54.default.createElement(AppWrapper, {
257524
257429
  agent: agent2,
257525
257430
  isAuthenticated,
257526
257431
  authMethod: providerConfig?.authMethod,