@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.
- package/dist/december.js +936 -1031
- 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
|
-
|
|
182408
|
-
|
|
182409
|
-
|
|
182410
|
-
|
|
182411
|
-
|
|
182412
|
-
|
|
182413
|
-
|
|
182414
|
-
|
|
182415
|
-
|
|
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
|
-
|
|
182418
|
-
|
|
182418
|
+
if (!finalResult) {
|
|
182419
|
+
const cleaned = errMsg.replace(/^\[.*?Error\]:\s*/, "").trim();
|
|
182420
|
+
if (cleaned === `{
|
|
182419
182421
|
"cause": {}
|
|
182420
|
-
}` ||
|
|
182421
|
-
|
|
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
|
-
|
|
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.
|
|
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:
|
|
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("
|
|
222298
|
-
errorMsg = `
|
|
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:
|
|
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
|
|
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
|
|
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
|
|
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 (
|
|
225252
|
-
|
|
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
|
|
225255
|
-
|
|
225256
|
-
|
|
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
|
|
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
|
|
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
|
-
|
|
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
|
|
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
|
-
|
|
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
|
|
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...
|
|
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
|
-
|
|
249083
|
-
|
|
249084
|
-
|
|
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 &&
|
|
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
|
-
|
|
249822
|
-
|
|
249823
|
-
|
|
249824
|
-
|
|
249825
|
-
|
|
249826
|
-
|
|
249827
|
-
|
|
249828
|
-
|
|
249829
|
-
|
|
249830
|
-
|
|
249831
|
-
|
|
249832
|
-
|
|
249833
|
-
|
|
249834
|
-
|
|
249835
|
-
|
|
249836
|
-
|
|
249837
|
-
|
|
249838
|
-
|
|
249839
|
-
|
|
249840
|
-
|
|
249841
|
-
|
|
249842
|
-
|
|
249843
|
-
|
|
249844
|
-
|
|
249845
|
-
|
|
249846
|
-
|
|
249847
|
-
|
|
249848
|
-
|
|
249849
|
-
|
|
249850
|
-
}, undefined,
|
|
249851
|
-
|
|
249852
|
-
|
|
249853
|
-
}, undefined,
|
|
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
|
|
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
|
|
249974
|
+
var jsx_dev_runtime8 = __toESM(require_jsx_dev_runtime(), 1);
|
|
249928
249975
|
function Spinner2({ label }) {
|
|
249929
|
-
return /* @__PURE__ */
|
|
249976
|
+
return /* @__PURE__ */ jsx_dev_runtime8.jsxDEV(Box_default, {
|
|
249930
249977
|
gap: 1,
|
|
249931
249978
|
alignItems: "center",
|
|
249932
249979
|
children: [
|
|
249933
|
-
/* @__PURE__ */
|
|
249934
|
-
|
|
249935
|
-
|
|
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__ */
|
|
249941
|
-
|
|
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
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
251392
|
+
return /* @__PURE__ */ jsx_dev_runtime9.jsxDEV(CodeBlock, {
|
|
251350
251393
|
token
|
|
251351
251394
|
}, index2, false, undefined, this);
|
|
251352
251395
|
case "list":
|
|
251353
|
-
return /* @__PURE__ */
|
|
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__ */
|
|
251399
|
+
children: token.items.map((item, i2) => /* @__PURE__ */ jsx_dev_runtime9.jsxDEV(Box_default, {
|
|
251357
251400
|
flexDirection: "row",
|
|
251358
251401
|
children: [
|
|
251359
|
-
/* @__PURE__ */
|
|
251402
|
+
/* @__PURE__ */ jsx_dev_runtime9.jsxDEV(Text3, {
|
|
251360
251403
|
color: "gray",
|
|
251361
251404
|
children: "• "
|
|
251362
251405
|
}, undefined, false, undefined, this),
|
|
251363
|
-
/* @__PURE__ */
|
|
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__ */
|
|
251372
|
-
children: /* @__PURE__ */
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
251479
|
+
return /* @__PURE__ */ jsx_dev_runtime9.jsxDEV(Box_default, {
|
|
251437
251480
|
flexDirection: "column",
|
|
251438
251481
|
paddingY: 1,
|
|
251439
251482
|
children: [
|
|
251440
|
-
/* @__PURE__ */
|
|
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__ */
|
|
251487
|
+
/* @__PURE__ */ jsx_dev_runtime9.jsxDEV(Box_default, {
|
|
251445
251488
|
flexDirection: "column",
|
|
251446
251489
|
paddingLeft: 2,
|
|
251447
|
-
children: /* @__PURE__ */
|
|
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__ */
|
|
251494
|
+
isLarge && !expanded ? /* @__PURE__ */ jsx_dev_runtime9.jsxDEV(Box_default, {
|
|
251452
251495
|
flexDirection: "column",
|
|
251453
251496
|
paddingLeft: 2,
|
|
251454
251497
|
children: [
|
|
251455
|
-
/* @__PURE__ */
|
|
251498
|
+
/* @__PURE__ */ jsx_dev_runtime9.jsxDEV(Text3, {
|
|
251456
251499
|
color: "#475569",
|
|
251457
251500
|
children: "..."
|
|
251458
251501
|
}, undefined, false, undefined, this),
|
|
251459
|
-
/* @__PURE__ */
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
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
|
|
251534
|
+
var jsx_dev_runtime10 = __toESM(require_jsx_dev_runtime(), 1);
|
|
251492
251535
|
function SmoothMarkdown({ text: text3, isRunning }) {
|
|
251493
|
-
|
|
251494
|
-
|
|
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
|
|
251530
|
-
function CollapsibleThought({ content }) {
|
|
251531
|
-
const
|
|
251532
|
-
const
|
|
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 (
|
|
251548
|
+
if (key.ctrl && input.toLowerCase() === "o" || input === "\x0F") {
|
|
251535
251549
|
setExpanded((prev2) => !prev2);
|
|
251536
251550
|
}
|
|
251537
251551
|
});
|
|
251538
|
-
|
|
251539
|
-
|
|
251540
|
-
|
|
251541
|
-
|
|
251542
|
-
|
|
251543
|
-
|
|
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__ */
|
|
251546
|
-
|
|
251547
|
-
|
|
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
|
-
|
|
251557
|
-
|
|
251558
|
-
|
|
251559
|
-
|
|
251560
|
-
|
|
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__ */
|
|
251596
|
+
return /* @__PURE__ */ jsx_dev_runtime11.jsxDEV(Text3, {
|
|
251589
251597
|
children: [
|
|
251590
|
-
/* @__PURE__ */
|
|
251598
|
+
/* @__PURE__ */ jsx_dev_runtime11.jsxDEV(Text3, {
|
|
251591
251599
|
color: cmdColor,
|
|
251592
251600
|
children: "● "
|
|
251593
251601
|
}, undefined, false, undefined, this),
|
|
251594
|
-
/* @__PURE__ */
|
|
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__ */
|
|
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 &&
|
|
251612
|
-
displayCmd =
|
|
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__ */
|
|
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
|
|
251620
|
-
|
|
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:
|
|
251625
|
-
marginTop:
|
|
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__ */
|
|
251708
|
+
return /* @__PURE__ */ jsx_dev_runtime11.jsxDEV(Box_default, {
|
|
251634
251709
|
gap: 1,
|
|
251635
251710
|
alignItems: "center",
|
|
251636
251711
|
children: [
|
|
251637
|
-
/* @__PURE__ */
|
|
251638
|
-
/* @__PURE__ */
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
251658
|
-
children: /* @__PURE__ */
|
|
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__ */
|
|
251753
|
+
return /* @__PURE__ */ jsx_dev_runtime11.jsxDEV(Box_default, {
|
|
251668
251754
|
flexDirection: "column",
|
|
251669
|
-
|
|
251670
|
-
|
|
251671
|
-
|
|
251672
|
-
|
|
251673
|
-
|
|
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__ */
|
|
251763
|
+
return /* @__PURE__ */ jsx_dev_runtime11.jsxDEV(Box_default, {
|
|
251682
251764
|
flexDirection: "row",
|
|
251683
251765
|
paddingY: 1,
|
|
251684
|
-
children: /* @__PURE__ */
|
|
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
|
-
|
|
251691
|
-
|
|
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__ */
|
|
251780
|
+
return /* @__PURE__ */ jsx_dev_runtime11.jsxDEV(Box_default, {
|
|
251696
251781
|
flexDirection: "column",
|
|
251697
251782
|
paddingY: 1,
|
|
251698
251783
|
children: [
|
|
251699
|
-
/* @__PURE__ */
|
|
251784
|
+
/* @__PURE__ */ jsx_dev_runtime11.jsxDEV(Box_default, {
|
|
251700
251785
|
flexDirection: "row",
|
|
251701
251786
|
gap: 1,
|
|
251702
251787
|
alignItems: "center",
|
|
251703
|
-
children:
|
|
251704
|
-
|
|
251705
|
-
|
|
251706
|
-
|
|
251707
|
-
|
|
251708
|
-
|
|
251709
|
-
|
|
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__ */
|
|
251720
|
-
color: "
|
|
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
|
-
|
|
251737
|
-
|
|
251738
|
-
return /* @__PURE__ */
|
|
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__ */
|
|
251741
|
-
gap: 1,
|
|
251817
|
+
children: /* @__PURE__ */ jsx_dev_runtime11.jsxDEV(Box_default, {
|
|
251742
251818
|
alignItems: "center",
|
|
251743
|
-
|
|
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
|
-
|
|
251750
|
-
|
|
251751
|
-
|
|
251752
|
-
|
|
251753
|
-
|
|
251754
|
-
|
|
251755
|
-
|
|
251756
|
-
|
|
251757
|
-
|
|
251758
|
-
|
|
251759
|
-
|
|
251760
|
-
|
|
251761
|
-
|
|
251762
|
-
|
|
251763
|
-
|
|
251764
|
-
|
|
251765
|
-
|
|
251766
|
-
|
|
251767
|
-
|
|
251768
|
-
|
|
251769
|
-
|
|
251770
|
-
|
|
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__ */
|
|
251836
|
-
|
|
251837
|
-
|
|
251838
|
-
|
|
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__ */
|
|
251882
|
+
return /* @__PURE__ */ jsx_dev_runtime11.jsxDEV(Box_default, {
|
|
251875
251883
|
flexDirection: "column",
|
|
251876
251884
|
children: [
|
|
251877
|
-
/* @__PURE__ */
|
|
251885
|
+
/* @__PURE__ */ jsx_dev_runtime11.jsxDEV(Box_default, {
|
|
251878
251886
|
gap: 1,
|
|
251879
251887
|
alignItems: "center",
|
|
251880
251888
|
children: [
|
|
251881
|
-
/* @__PURE__ */
|
|
251882
|
-
/* @__PURE__ */
|
|
251883
|
-
color: "
|
|
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__ */
|
|
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
|
-
|
|
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
|
-
|
|
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__ */
|
|
251921
|
-
|
|
251922
|
-
|
|
251923
|
-
color: fgColor
|
|
251922
|
+
/* @__PURE__ */ jsx_dev_runtime11.jsxDEV(Text3, {
|
|
251923
|
+
color: "#fef08a",
|
|
251924
|
+
children: "● "
|
|
251924
251925
|
}, undefined, false, undefined, this),
|
|
251925
|
-
/* @__PURE__ */
|
|
251926
|
-
color: "
|
|
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__ */
|
|
251941
|
+
return /* @__PURE__ */ jsx_dev_runtime11.jsxDEV(Box_default, {
|
|
251936
251942
|
flexDirection: "column",
|
|
251937
251943
|
paddingLeft: 1,
|
|
251938
251944
|
children: [
|
|
251939
|
-
/* @__PURE__ */
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
251966
|
+
return /* @__PURE__ */ jsx_dev_runtime11.jsxDEV(Box_default, {
|
|
251961
251967
|
gap: 1,
|
|
251962
251968
|
alignItems: "center",
|
|
251963
|
-
children:
|
|
251964
|
-
|
|
251965
|
-
|
|
251966
|
-
|
|
251967
|
-
|
|
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
|
|
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__ */
|
|
252007
|
+
return /* @__PURE__ */ jsx_dev_runtime12.jsxDEV(Box_default, {
|
|
252010
252008
|
flexDirection: "column",
|
|
252011
252009
|
paddingLeft: 2,
|
|
252012
252010
|
paddingTop: 1,
|
|
252013
|
-
paddingBottom:
|
|
252011
|
+
paddingBottom: 0,
|
|
252014
252012
|
children: [
|
|
252015
|
-
/* @__PURE__ */
|
|
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__ */
|
|
252021
|
+
userEmail && /* @__PURE__ */ jsx_dev_runtime12.jsxDEV(Text3, {
|
|
252024
252022
|
color: "gray",
|
|
252025
252023
|
children: userEmail
|
|
252026
252024
|
}, undefined, false, undefined, this),
|
|
252027
|
-
/* @__PURE__ */
|
|
252025
|
+
/* @__PURE__ */ jsx_dev_runtime12.jsxDEV(Box_default, {
|
|
252028
252026
|
gap: 1,
|
|
252029
252027
|
children: [
|
|
252030
|
-
/* @__PURE__ */
|
|
252028
|
+
/* @__PURE__ */ jsx_dev_runtime12.jsxDEV(Text3, {
|
|
252031
252029
|
color: "gray",
|
|
252032
252030
|
children: cwd2
|
|
252033
252031
|
}, undefined, false, undefined, this),
|
|
252034
|
-
branch && /* @__PURE__ */
|
|
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__ */
|
|
252042
|
+
/* @__PURE__ */ jsx_dev_runtime12.jsxDEV(Box_default, {
|
|
252045
252043
|
flexDirection: "column",
|
|
252046
252044
|
marginTop: 1,
|
|
252047
252045
|
children: [
|
|
252048
|
-
/* @__PURE__ */
|
|
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__ */
|
|
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__ */
|
|
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
|
|
252065
|
+
var jsx_dev_runtime13 = __toESM(require_jsx_dev_runtime(), 1);
|
|
252068
252066
|
function ErrorMessage({ message }) {
|
|
252069
|
-
return /* @__PURE__ */
|
|
252067
|
+
return /* @__PURE__ */ jsx_dev_runtime13.jsxDEV(Box_default, {
|
|
252070
252068
|
paddingX: 4,
|
|
252071
|
-
paddingY:
|
|
252072
|
-
children: /* @__PURE__ */
|
|
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
|
|
252078
|
+
var jsx_dev_runtime14 = __toESM(require_jsx_dev_runtime(), 1);
|
|
252081
252079
|
function UserMessage({ message }) {
|
|
252082
|
-
return /* @__PURE__ */
|
|
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__ */
|
|
252088
|
+
/* @__PURE__ */ jsx_dev_runtime14.jsxDEV(Box_default, {
|
|
252091
252089
|
marginRight: 1,
|
|
252092
|
-
children: /* @__PURE__ */
|
|
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__ */
|
|
252095
|
+
/* @__PURE__ */ jsx_dev_runtime14.jsxDEV(Box_default, {
|
|
252099
252096
|
flexShrink: 1,
|
|
252100
|
-
children: /* @__PURE__ */
|
|
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
|
|
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
|
-
|
|
252121
|
-
|
|
252122
|
-
|
|
252123
|
-
|
|
252124
|
-
|
|
252125
|
-
|
|
252126
|
-
|
|
252127
|
-
|
|
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
|
-
|
|
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
|
|
252174
|
-
var
|
|
252175
|
-
var ThemeContext =
|
|
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__ */
|
|
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
|
|
252185
|
-
function RootLayout({ children: children2 }) {
|
|
252186
|
-
return /* @__PURE__ */
|
|
252187
|
-
children: /* @__PURE__ */
|
|
252188
|
-
children: /* @__PURE__ */
|
|
252189
|
-
|
|
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
|
|
252198
|
-
var CustomIndicator = ({ isSelected }) => /* @__PURE__ */
|
|
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__ */
|
|
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__ */
|
|
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
|
|
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] =
|
|
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
|
-
|
|
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
|
|
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
|
|
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__ */
|
|
252284
|
+
return /* @__PURE__ */ jsx_dev_runtime19.jsxDEV(Box_default, {
|
|
252304
252285
|
flexDirection: "column",
|
|
252305
252286
|
paddingX: 1,
|
|
252306
252287
|
children: [
|
|
252307
|
-
/* @__PURE__ */
|
|
252288
|
+
/* @__PURE__ */ jsx_dev_runtime19.jsxDEV(Box_default, {
|
|
252308
252289
|
marginBottom: 1,
|
|
252309
|
-
children: /* @__PURE__ */
|
|
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__ */
|
|
252299
|
+
/* @__PURE__ */ jsx_dev_runtime19.jsxDEV(Box_default, {
|
|
252319
252300
|
children: [
|
|
252320
|
-
/* @__PURE__ */
|
|
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__ */
|
|
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__ */
|
|
252318
|
+
/* @__PURE__ */ jsx_dev_runtime19.jsxDEV(Box_default, {
|
|
252338
252319
|
paddingTop: 1,
|
|
252339
|
-
children: /* @__PURE__ */
|
|
252320
|
+
children: /* @__PURE__ */ jsx_dev_runtime19.jsxDEV(Box_default, {
|
|
252340
252321
|
gap: 1,
|
|
252341
252322
|
children: [
|
|
252342
|
-
/* @__PURE__ */
|
|
252323
|
+
/* @__PURE__ */ jsx_dev_runtime19.jsxDEV(Text3, {
|
|
252343
252324
|
color: "#89B4F8",
|
|
252344
252325
|
children: "enter"
|
|
252345
252326
|
}, undefined, false, undefined, this),
|
|
252346
|
-
/* @__PURE__ */
|
|
252327
|
+
/* @__PURE__ */ jsx_dev_runtime19.jsxDEV(Text3, {
|
|
252347
252328
|
color: "#AAAAAA",
|
|
252348
252329
|
children: "Submit"
|
|
252349
252330
|
}, undefined, false, undefined, this),
|
|
252350
|
-
/* @__PURE__ */
|
|
252331
|
+
/* @__PURE__ */ jsx_dev_runtime19.jsxDEV(Text3, {
|
|
252351
252332
|
color: "#AAAAAA",
|
|
252352
252333
|
children: "·"
|
|
252353
252334
|
}, undefined, false, undefined, this),
|
|
252354
|
-
/* @__PURE__ */
|
|
252335
|
+
/* @__PURE__ */ jsx_dev_runtime19.jsxDEV(Text3, {
|
|
252355
252336
|
color: "#89B4F8",
|
|
252356
252337
|
children: "esc"
|
|
252357
252338
|
}, undefined, false, undefined, this),
|
|
252358
|
-
/* @__PURE__ */
|
|
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
|
|
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
|
|
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
|
|
252646
|
+
var React19 = __toESM(require_react(), 1);
|
|
252666
252647
|
function Item({ isSelected = false, label }) {
|
|
252667
|
-
return
|
|
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
|
|
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] =
|
|
252702
|
-
const [selectedIndex, setSelectedIndex] =
|
|
252703
|
-
const previousItems =
|
|
252704
|
-
|
|
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(
|
|
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
|
|
252744
|
+
return import_react48.default.createElement(Box_default, { flexDirection: "column" }, slicedItems.map((item, index2) => {
|
|
252764
252745
|
const isSelected = index2 === selectedIndex;
|
|
252765
|
-
return
|
|
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
|
|
252751
|
+
var jsx_dev_runtime20 = __toESM(require_jsx_dev_runtime(), 1);
|
|
252771
252752
|
function ByokProviderMenu(props) {
|
|
252772
252753
|
const { handleProviderSelect } = props;
|
|
252773
|
-
return /* @__PURE__ */
|
|
252754
|
+
return /* @__PURE__ */ jsx_dev_runtime20.jsxDEV(Box_default, {
|
|
252774
252755
|
flexDirection: "column",
|
|
252775
252756
|
paddingX: 1,
|
|
252776
252757
|
children: [
|
|
252777
|
-
/* @__PURE__ */
|
|
252758
|
+
/* @__PURE__ */ jsx_dev_runtime20.jsxDEV(Box_default, {
|
|
252778
252759
|
marginBottom: 1,
|
|
252779
|
-
children: /* @__PURE__ */
|
|
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__ */
|
|
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__ */
|
|
252784
|
+
/* @__PURE__ */ jsx_dev_runtime20.jsxDEV(Box_default, {
|
|
252804
252785
|
paddingTop: 1,
|
|
252805
|
-
children: /* @__PURE__ */
|
|
252786
|
+
children: /* @__PURE__ */ jsx_dev_runtime20.jsxDEV(Box_default, {
|
|
252806
252787
|
gap: 1,
|
|
252807
252788
|
children: [
|
|
252808
|
-
/* @__PURE__ */
|
|
252789
|
+
/* @__PURE__ */ jsx_dev_runtime20.jsxDEV(Text3, {
|
|
252809
252790
|
color: "#89B4F8",
|
|
252810
252791
|
children: "↑↓"
|
|
252811
252792
|
}, undefined, false, undefined, this),
|
|
252812
|
-
/* @__PURE__ */
|
|
252793
|
+
/* @__PURE__ */ jsx_dev_runtime20.jsxDEV(Text3, {
|
|
252813
252794
|
color: "#AAAAAA",
|
|
252814
252795
|
children: "Navigate"
|
|
252815
252796
|
}, undefined, false, undefined, this),
|
|
252816
|
-
/* @__PURE__ */
|
|
252797
|
+
/* @__PURE__ */ jsx_dev_runtime20.jsxDEV(Text3, {
|
|
252817
252798
|
color: "#AAAAAA",
|
|
252818
252799
|
children: "·"
|
|
252819
252800
|
}, undefined, false, undefined, this),
|
|
252820
|
-
/* @__PURE__ */
|
|
252801
|
+
/* @__PURE__ */ jsx_dev_runtime20.jsxDEV(Text3, {
|
|
252821
252802
|
color: "#89B4F8",
|
|
252822
252803
|
children: "enter"
|
|
252823
252804
|
}, undefined, false, undefined, this),
|
|
252824
|
-
/* @__PURE__ */
|
|
252805
|
+
/* @__PURE__ */ jsx_dev_runtime20.jsxDEV(Text3, {
|
|
252825
252806
|
color: "#AAAAAA",
|
|
252826
252807
|
children: "Select"
|
|
252827
252808
|
}, undefined, false, undefined, this),
|
|
252828
|
-
/* @__PURE__ */
|
|
252809
|
+
/* @__PURE__ */ jsx_dev_runtime20.jsxDEV(Text3, {
|
|
252829
252810
|
color: "#AAAAAA",
|
|
252830
252811
|
children: "·"
|
|
252831
252812
|
}, undefined, false, undefined, this),
|
|
252832
|
-
/* @__PURE__ */
|
|
252813
|
+
/* @__PURE__ */ jsx_dev_runtime20.jsxDEV(Text3, {
|
|
252833
252814
|
color: "#89B4F8",
|
|
252834
252815
|
children: "esc"
|
|
252835
252816
|
}, undefined, false, undefined, this),
|
|
252836
|
-
/* @__PURE__ */
|
|
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
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
252876
|
+
return /* @__PURE__ */ jsx_dev_runtime21.jsxDEV(Box_default, {
|
|
252896
252877
|
flexDirection: "column",
|
|
252897
252878
|
paddingX: 1,
|
|
252898
252879
|
children: [
|
|
252899
|
-
/* @__PURE__ */
|
|
252880
|
+
/* @__PURE__ */ jsx_dev_runtime21.jsxDEV(Box_default, {
|
|
252900
252881
|
marginBottom: 1,
|
|
252901
|
-
children: /* @__PURE__ */
|
|
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__ */
|
|
252888
|
+
/* @__PURE__ */ jsx_dev_runtime21.jsxDEV(Box_default, {
|
|
252908
252889
|
flexDirection: "row",
|
|
252909
252890
|
gap: 4,
|
|
252910
252891
|
children: [
|
|
252911
|
-
/* @__PURE__ */
|
|
252892
|
+
/* @__PURE__ */ jsx_dev_runtime21.jsxDEV(Box_default, {
|
|
252912
252893
|
flexDirection: "column",
|
|
252913
252894
|
children: gridRows
|
|
252914
252895
|
}, undefined, false, undefined, this),
|
|
252915
|
-
/* @__PURE__ */
|
|
252896
|
+
/* @__PURE__ */ jsx_dev_runtime21.jsxDEV(Box_default, {
|
|
252916
252897
|
flexDirection: "column",
|
|
252917
252898
|
children: [
|
|
252918
|
-
/* @__PURE__ */
|
|
252899
|
+
/* @__PURE__ */ jsx_dev_runtime21.jsxDEV(Box_default, {
|
|
252919
252900
|
gap: 1,
|
|
252920
|
-
children: /* @__PURE__ */
|
|
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__ */
|
|
252915
|
+
/* @__PURE__ */ jsx_dev_runtime21.jsxDEV(Box_default, {
|
|
252935
252916
|
marginTop: 1,
|
|
252936
|
-
children: /* @__PURE__ */
|
|
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__ */
|
|
252922
|
+
/* @__PURE__ */ jsx_dev_runtime21.jsxDEV(Box_default, {
|
|
252942
252923
|
flexDirection: "column",
|
|
252943
252924
|
children: [
|
|
252944
|
-
/* @__PURE__ */
|
|
252925
|
+
/* @__PURE__ */ jsx_dev_runtime21.jsxDEV(Box_default, {
|
|
252945
252926
|
gap: 1,
|
|
252946
252927
|
children: [
|
|
252947
|
-
/* @__PURE__ */
|
|
252928
|
+
/* @__PURE__ */ jsx_dev_runtime21.jsxDEV(Text3, {
|
|
252948
252929
|
color: "#89B4F8",
|
|
252949
252930
|
children: "●"
|
|
252950
252931
|
}, undefined, false, undefined, this),
|
|
252951
|
-
/* @__PURE__ */
|
|
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__ */
|
|
252944
|
+
/* @__PURE__ */ jsx_dev_runtime21.jsxDEV(Box_default, {
|
|
252964
252945
|
gap: 1,
|
|
252965
252946
|
children: [
|
|
252966
|
-
/* @__PURE__ */
|
|
252947
|
+
/* @__PURE__ */ jsx_dev_runtime21.jsxDEV(Text3, {
|
|
252967
252948
|
color: "#6EE7B7",
|
|
252968
252949
|
children: "●"
|
|
252969
252950
|
}, undefined, false, undefined, this),
|
|
252970
|
-
/* @__PURE__ */
|
|
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__ */
|
|
252963
|
+
/* @__PURE__ */ jsx_dev_runtime21.jsxDEV(Box_default, {
|
|
252983
252964
|
gap: 1,
|
|
252984
252965
|
children: [
|
|
252985
|
-
/* @__PURE__ */
|
|
252966
|
+
/* @__PURE__ */ jsx_dev_runtime21.jsxDEV(Text3, {
|
|
252986
252967
|
color: "#FCD34D",
|
|
252987
252968
|
children: "●"
|
|
252988
252969
|
}, undefined, false, undefined, this),
|
|
252989
|
-
/* @__PURE__ */
|
|
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__ */
|
|
252982
|
+
/* @__PURE__ */ jsx_dev_runtime21.jsxDEV(Box_default, {
|
|
253002
252983
|
gap: 1,
|
|
253003
252984
|
children: [
|
|
253004
|
-
/* @__PURE__ */
|
|
252985
|
+
/* @__PURE__ */ jsx_dev_runtime21.jsxDEV(Text3, {
|
|
253005
252986
|
color: "#AAAAAA",
|
|
253006
252987
|
children: "●"
|
|
253007
252988
|
}, undefined, false, undefined, this),
|
|
253008
|
-
/* @__PURE__ */
|
|
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__ */
|
|
253001
|
+
/* @__PURE__ */ jsx_dev_runtime21.jsxDEV(Box_default, {
|
|
253021
253002
|
gap: 1,
|
|
253022
253003
|
children: [
|
|
253023
|
-
/* @__PURE__ */
|
|
253004
|
+
/* @__PURE__ */ jsx_dev_runtime21.jsxDEV(Text3, {
|
|
253024
253005
|
color: "#444444",
|
|
253025
253006
|
children: "□"
|
|
253026
253007
|
}, undefined, false, undefined, this),
|
|
253027
|
-
/* @__PURE__ */
|
|
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__ */
|
|
253026
|
+
/* @__PURE__ */ jsx_dev_runtime21.jsxDEV(Box_default, {
|
|
253046
253027
|
paddingTop: 1,
|
|
253047
|
-
children: /* @__PURE__ */
|
|
253028
|
+
children: /* @__PURE__ */ jsx_dev_runtime21.jsxDEV(Box_default, {
|
|
253048
253029
|
gap: 1,
|
|
253049
253030
|
children: [
|
|
253050
|
-
/* @__PURE__ */
|
|
253031
|
+
/* @__PURE__ */ jsx_dev_runtime21.jsxDEV(Text3, {
|
|
253051
253032
|
color: "#89B4F8",
|
|
253052
253033
|
children: "esc"
|
|
253053
253034
|
}, undefined, false, undefined, this),
|
|
253054
|
-
/* @__PURE__ */
|
|
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
|
|
253047
|
+
var jsx_dev_runtime22 = __toESM(require_jsx_dev_runtime(), 1);
|
|
253067
253048
|
function DecemberLoginSelectMenu(props) {
|
|
253068
253049
|
const { handleAuthMenuSelect } = props;
|
|
253069
|
-
return /* @__PURE__ */
|
|
253050
|
+
return /* @__PURE__ */ jsx_dev_runtime22.jsxDEV(Box_default, {
|
|
253070
253051
|
flexDirection: "column",
|
|
253071
253052
|
paddingX: 1,
|
|
253072
253053
|
children: [
|
|
253073
|
-
/* @__PURE__ */
|
|
253054
|
+
/* @__PURE__ */ jsx_dev_runtime22.jsxDEV(Box_default, {
|
|
253074
253055
|
marginBottom: 1,
|
|
253075
|
-
children: /* @__PURE__ */
|
|
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__ */
|
|
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__ */
|
|
253073
|
+
/* @__PURE__ */ jsx_dev_runtime22.jsxDEV(Box_default, {
|
|
253093
253074
|
paddingTop: 1,
|
|
253094
|
-
children: /* @__PURE__ */
|
|
253075
|
+
children: /* @__PURE__ */ jsx_dev_runtime22.jsxDEV(Box_default, {
|
|
253095
253076
|
gap: 1,
|
|
253096
253077
|
children: [
|
|
253097
|
-
/* @__PURE__ */
|
|
253078
|
+
/* @__PURE__ */ jsx_dev_runtime22.jsxDEV(Text3, {
|
|
253098
253079
|
color: "#89B4F8",
|
|
253099
253080
|
children: "↑↓"
|
|
253100
253081
|
}, undefined, false, undefined, this),
|
|
253101
|
-
/* @__PURE__ */
|
|
253082
|
+
/* @__PURE__ */ jsx_dev_runtime22.jsxDEV(Text3, {
|
|
253102
253083
|
color: "#AAAAAA",
|
|
253103
253084
|
children: "Navigate"
|
|
253104
253085
|
}, undefined, false, undefined, this),
|
|
253105
|
-
/* @__PURE__ */
|
|
253086
|
+
/* @__PURE__ */ jsx_dev_runtime22.jsxDEV(Text3, {
|
|
253106
253087
|
color: "#AAAAAA",
|
|
253107
253088
|
children: "·"
|
|
253108
253089
|
}, undefined, false, undefined, this),
|
|
253109
|
-
/* @__PURE__ */
|
|
253090
|
+
/* @__PURE__ */ jsx_dev_runtime22.jsxDEV(Text3, {
|
|
253110
253091
|
color: "#89B4F8",
|
|
253111
253092
|
children: "enter"
|
|
253112
253093
|
}, undefined, false, undefined, this),
|
|
253113
|
-
/* @__PURE__ */
|
|
253094
|
+
/* @__PURE__ */ jsx_dev_runtime22.jsxDEV(Text3, {
|
|
253114
253095
|
color: "#AAAAAA",
|
|
253115
253096
|
children: "Select"
|
|
253116
253097
|
}, undefined, false, undefined, this),
|
|
253117
|
-
/* @__PURE__ */
|
|
253098
|
+
/* @__PURE__ */ jsx_dev_runtime22.jsxDEV(Text3, {
|
|
253118
253099
|
color: "#AAAAAA",
|
|
253119
253100
|
children: "·"
|
|
253120
253101
|
}, undefined, false, undefined, this),
|
|
253121
|
-
/* @__PURE__ */
|
|
253102
|
+
/* @__PURE__ */ jsx_dev_runtime22.jsxDEV(Text3, {
|
|
253122
253103
|
color: "#89B4F8",
|
|
253123
253104
|
children: "esc"
|
|
253124
253105
|
}, undefined, false, undefined, this),
|
|
253125
|
-
/* @__PURE__ */
|
|
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
|
|
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__ */
|
|
253139
|
+
return /* @__PURE__ */ jsx_dev_runtime23.jsxDEV(Box_default, {
|
|
253159
253140
|
flexDirection: "column",
|
|
253160
253141
|
paddingX: 1,
|
|
253161
253142
|
children: [
|
|
253162
|
-
/* @__PURE__ */
|
|
253143
|
+
/* @__PURE__ */ jsx_dev_runtime23.jsxDEV(Box_default, {
|
|
253163
253144
|
marginBottom: 1,
|
|
253164
253145
|
flexDirection: "column",
|
|
253165
253146
|
children: [
|
|
253166
|
-
/* @__PURE__ */
|
|
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__ */
|
|
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__ */
|
|
253165
|
+
!customInputMode ? /* @__PURE__ */ jsx_dev_runtime23.jsxDEV(jsx_dev_runtime23.Fragment, {
|
|
253185
253166
|
children: [
|
|
253186
|
-
/* @__PURE__ */
|
|
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__ */
|
|
253173
|
+
/* @__PURE__ */ jsx_dev_runtime23.jsxDEV(Box_default, {
|
|
253193
253174
|
paddingTop: 1,
|
|
253194
|
-
children: /* @__PURE__ */
|
|
253175
|
+
children: /* @__PURE__ */ jsx_dev_runtime23.jsxDEV(Box_default, {
|
|
253195
253176
|
gap: 1,
|
|
253196
253177
|
children: [
|
|
253197
|
-
/* @__PURE__ */
|
|
253178
|
+
/* @__PURE__ */ jsx_dev_runtime23.jsxDEV(Text3, {
|
|
253198
253179
|
color: "#89B4F8",
|
|
253199
253180
|
children: "↑↓"
|
|
253200
253181
|
}, undefined, false, undefined, this),
|
|
253201
|
-
/* @__PURE__ */
|
|
253182
|
+
/* @__PURE__ */ jsx_dev_runtime23.jsxDEV(Text3, {
|
|
253202
253183
|
color: "#AAAAAA",
|
|
253203
253184
|
children: "Navigate"
|
|
253204
253185
|
}, undefined, false, undefined, this),
|
|
253205
|
-
/* @__PURE__ */
|
|
253186
|
+
/* @__PURE__ */ jsx_dev_runtime23.jsxDEV(Text3, {
|
|
253206
253187
|
color: "#AAAAAA",
|
|
253207
253188
|
children: "·"
|
|
253208
253189
|
}, undefined, false, undefined, this),
|
|
253209
|
-
/* @__PURE__ */
|
|
253190
|
+
/* @__PURE__ */ jsx_dev_runtime23.jsxDEV(Text3, {
|
|
253210
253191
|
color: "#89B4F8",
|
|
253211
253192
|
children: "enter"
|
|
253212
253193
|
}, undefined, false, undefined, this),
|
|
253213
|
-
/* @__PURE__ */
|
|
253194
|
+
/* @__PURE__ */ jsx_dev_runtime23.jsxDEV(Text3, {
|
|
253214
253195
|
color: "#AAAAAA",
|
|
253215
253196
|
children: "Select"
|
|
253216
253197
|
}, undefined, false, undefined, this),
|
|
253217
|
-
/* @__PURE__ */
|
|
253198
|
+
/* @__PURE__ */ jsx_dev_runtime23.jsxDEV(Text3, {
|
|
253218
253199
|
color: "#AAAAAA",
|
|
253219
253200
|
children: "·"
|
|
253220
253201
|
}, undefined, false, undefined, this),
|
|
253221
|
-
/* @__PURE__ */
|
|
253202
|
+
/* @__PURE__ */ jsx_dev_runtime23.jsxDEV(Text3, {
|
|
253222
253203
|
color: "#89B4F8",
|
|
253223
253204
|
children: "esc"
|
|
253224
253205
|
}, undefined, false, undefined, this),
|
|
253225
|
-
/* @__PURE__ */
|
|
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__ */
|
|
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__ */
|
|
253218
|
+
/* @__PURE__ */ jsx_dev_runtime23.jsxDEV(Box_default, {
|
|
253238
253219
|
flexDirection: "row",
|
|
253239
253220
|
gap: 1,
|
|
253240
253221
|
children: [
|
|
253241
|
-
/* @__PURE__ */
|
|
253222
|
+
/* @__PURE__ */ jsx_dev_runtime23.jsxDEV(Text3, {
|
|
253242
253223
|
color: "#89B4F8",
|
|
253243
253224
|
children: "Your answer:"
|
|
253244
253225
|
}, undefined, false, undefined, this),
|
|
253245
|
-
/* @__PURE__ */
|
|
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__ */
|
|
253247
|
+
/* @__PURE__ */ jsx_dev_runtime23.jsxDEV(Box_default, {
|
|
253267
253248
|
paddingTop: 1,
|
|
253268
|
-
children: /* @__PURE__ */
|
|
253249
|
+
children: /* @__PURE__ */ jsx_dev_runtime23.jsxDEV(Box_default, {
|
|
253269
253250
|
gap: 1,
|
|
253270
253251
|
children: [
|
|
253271
|
-
/* @__PURE__ */
|
|
253252
|
+
/* @__PURE__ */ jsx_dev_runtime23.jsxDEV(Text3, {
|
|
253272
253253
|
color: "#89B4F8",
|
|
253273
253254
|
children: "enter"
|
|
253274
253255
|
}, undefined, false, undefined, this),
|
|
253275
|
-
/* @__PURE__ */
|
|
253256
|
+
/* @__PURE__ */ jsx_dev_runtime23.jsxDEV(Text3, {
|
|
253276
253257
|
color: "#AAAAAA",
|
|
253277
253258
|
children: "Submit"
|
|
253278
253259
|
}, undefined, false, undefined, this),
|
|
253279
|
-
/* @__PURE__ */
|
|
253260
|
+
/* @__PURE__ */ jsx_dev_runtime23.jsxDEV(Text3, {
|
|
253280
253261
|
color: "#AAAAAA",
|
|
253281
253262
|
children: "·"
|
|
253282
253263
|
}, undefined, false, undefined, this),
|
|
253283
|
-
/* @__PURE__ */
|
|
253264
|
+
/* @__PURE__ */ jsx_dev_runtime23.jsxDEV(Text3, {
|
|
253284
253265
|
color: "#89B4F8",
|
|
253285
253266
|
children: "esc"
|
|
253286
253267
|
}, undefined, false, undefined, this),
|
|
253287
|
-
/* @__PURE__ */
|
|
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
|
|
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__ */
|
|
253287
|
+
return /* @__PURE__ */ jsx_dev_runtime24.jsxDEV(Box_default, {
|
|
253307
253288
|
flexDirection: "column",
|
|
253308
253289
|
paddingX: 1,
|
|
253309
253290
|
children: [
|
|
253310
|
-
/* @__PURE__ */
|
|
253291
|
+
/* @__PURE__ */ jsx_dev_runtime24.jsxDEV(Box_default, {
|
|
253311
253292
|
marginBottom: 1,
|
|
253312
|
-
children: /* @__PURE__ */
|
|
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__ */
|
|
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__ */
|
|
253304
|
+
/* @__PURE__ */ jsx_dev_runtime24.jsxDEV(Box_default, {
|
|
253324
253305
|
paddingTop: 1,
|
|
253325
|
-
children: /* @__PURE__ */
|
|
253306
|
+
children: /* @__PURE__ */ jsx_dev_runtime24.jsxDEV(Box_default, {
|
|
253326
253307
|
gap: 1,
|
|
253327
253308
|
children: [
|
|
253328
|
-
/* @__PURE__ */
|
|
253309
|
+
/* @__PURE__ */ jsx_dev_runtime24.jsxDEV(Text3, {
|
|
253329
253310
|
color: "#89B4F8",
|
|
253330
253311
|
children: "↑↓"
|
|
253331
253312
|
}, undefined, false, undefined, this),
|
|
253332
|
-
/* @__PURE__ */
|
|
253313
|
+
/* @__PURE__ */ jsx_dev_runtime24.jsxDEV(Text3, {
|
|
253333
253314
|
color: "#AAAAAA",
|
|
253334
253315
|
children: "Navigate"
|
|
253335
253316
|
}, undefined, false, undefined, this),
|
|
253336
|
-
/* @__PURE__ */
|
|
253317
|
+
/* @__PURE__ */ jsx_dev_runtime24.jsxDEV(Text3, {
|
|
253337
253318
|
color: "#AAAAAA",
|
|
253338
253319
|
children: "·"
|
|
253339
253320
|
}, undefined, false, undefined, this),
|
|
253340
|
-
/* @__PURE__ */
|
|
253321
|
+
/* @__PURE__ */ jsx_dev_runtime24.jsxDEV(Text3, {
|
|
253341
253322
|
color: "#89B4F8",
|
|
253342
253323
|
children: "enter"
|
|
253343
253324
|
}, undefined, false, undefined, this),
|
|
253344
|
-
/* @__PURE__ */
|
|
253325
|
+
/* @__PURE__ */ jsx_dev_runtime24.jsxDEV(Text3, {
|
|
253345
253326
|
color: "#AAAAAA",
|
|
253346
253327
|
children: "Select"
|
|
253347
253328
|
}, undefined, false, undefined, this),
|
|
253348
|
-
/* @__PURE__ */
|
|
253329
|
+
/* @__PURE__ */ jsx_dev_runtime24.jsxDEV(Text3, {
|
|
253349
253330
|
color: "#AAAAAA",
|
|
253350
253331
|
children: "·"
|
|
253351
253332
|
}, undefined, false, undefined, this),
|
|
253352
|
-
/* @__PURE__ */
|
|
253333
|
+
/* @__PURE__ */ jsx_dev_runtime24.jsxDEV(Text3, {
|
|
253353
253334
|
color: "#89B4F8",
|
|
253354
253335
|
children: "esc"
|
|
253355
253336
|
}, undefined, false, undefined, this),
|
|
253356
|
-
/* @__PURE__ */
|
|
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
|
|
253349
|
+
var jsx_dev_runtime25 = __toESM(require_jsx_dev_runtime(), 1);
|
|
253369
253350
|
function MenuMenu(props) {
|
|
253370
253351
|
const { handleAuthMenuSelect } = props;
|
|
253371
|
-
return /* @__PURE__ */
|
|
253352
|
+
return /* @__PURE__ */ jsx_dev_runtime25.jsxDEV(Box_default, {
|
|
253372
253353
|
flexDirection: "column",
|
|
253373
253354
|
paddingX: 1,
|
|
253374
253355
|
children: [
|
|
253375
|
-
/* @__PURE__ */
|
|
253356
|
+
/* @__PURE__ */ jsx_dev_runtime25.jsxDEV(Box_default, {
|
|
253376
253357
|
marginBottom: 1,
|
|
253377
|
-
children: /* @__PURE__ */
|
|
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__ */
|
|
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__ */
|
|
253372
|
+
/* @__PURE__ */ jsx_dev_runtime25.jsxDEV(Box_default, {
|
|
253392
253373
|
paddingTop: 1,
|
|
253393
|
-
children: /* @__PURE__ */
|
|
253374
|
+
children: /* @__PURE__ */ jsx_dev_runtime25.jsxDEV(Box_default, {
|
|
253394
253375
|
gap: 1,
|
|
253395
253376
|
children: [
|
|
253396
|
-
/* @__PURE__ */
|
|
253377
|
+
/* @__PURE__ */ jsx_dev_runtime25.jsxDEV(Text3, {
|
|
253397
253378
|
color: "#89B4F8",
|
|
253398
253379
|
children: "↑↓"
|
|
253399
253380
|
}, undefined, false, undefined, this),
|
|
253400
|
-
/* @__PURE__ */
|
|
253381
|
+
/* @__PURE__ */ jsx_dev_runtime25.jsxDEV(Text3, {
|
|
253401
253382
|
color: "#AAAAAA",
|
|
253402
253383
|
children: "Navigate"
|
|
253403
253384
|
}, undefined, false, undefined, this),
|
|
253404
|
-
/* @__PURE__ */
|
|
253385
|
+
/* @__PURE__ */ jsx_dev_runtime25.jsxDEV(Text3, {
|
|
253405
253386
|
color: "#AAAAAA",
|
|
253406
253387
|
children: "·"
|
|
253407
253388
|
}, undefined, false, undefined, this),
|
|
253408
|
-
/* @__PURE__ */
|
|
253389
|
+
/* @__PURE__ */ jsx_dev_runtime25.jsxDEV(Text3, {
|
|
253409
253390
|
color: "#89B4F8",
|
|
253410
253391
|
children: "enter"
|
|
253411
253392
|
}, undefined, false, undefined, this),
|
|
253412
|
-
/* @__PURE__ */
|
|
253393
|
+
/* @__PURE__ */ jsx_dev_runtime25.jsxDEV(Text3, {
|
|
253413
253394
|
color: "#AAAAAA",
|
|
253414
253395
|
children: "Select"
|
|
253415
253396
|
}, undefined, false, undefined, this),
|
|
253416
|
-
/* @__PURE__ */
|
|
253397
|
+
/* @__PURE__ */ jsx_dev_runtime25.jsxDEV(Text3, {
|
|
253417
253398
|
color: "#AAAAAA",
|
|
253418
253399
|
children: "·"
|
|
253419
253400
|
}, undefined, false, undefined, this),
|
|
253420
|
-
/* @__PURE__ */
|
|
253401
|
+
/* @__PURE__ */ jsx_dev_runtime25.jsxDEV(Text3, {
|
|
253421
253402
|
color: "#89B4F8",
|
|
253422
253403
|
children: "esc"
|
|
253423
253404
|
}, undefined, false, undefined, this),
|
|
253424
|
-
/* @__PURE__ */
|
|
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
|
|
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__ */
|
|
253420
|
+
return /* @__PURE__ */ jsx_dev_runtime26.jsxDEV(Box_default, {
|
|
253440
253421
|
flexDirection: "column",
|
|
253441
253422
|
paddingX: 1,
|
|
253442
253423
|
children: [
|
|
253443
|
-
/* @__PURE__ */
|
|
253424
|
+
/* @__PURE__ */ jsx_dev_runtime26.jsxDEV(Box_default, {
|
|
253444
253425
|
marginBottom: 1,
|
|
253445
|
-
children: /* @__PURE__ */
|
|
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__ */
|
|
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__ */
|
|
253437
|
+
/* @__PURE__ */ jsx_dev_runtime26.jsxDEV(Box_default, {
|
|
253457
253438
|
paddingTop: 1,
|
|
253458
|
-
children: /* @__PURE__ */
|
|
253439
|
+
children: /* @__PURE__ */ jsx_dev_runtime26.jsxDEV(Box_default, {
|
|
253459
253440
|
gap: 1,
|
|
253460
253441
|
children: [
|
|
253461
|
-
/* @__PURE__ */
|
|
253442
|
+
/* @__PURE__ */ jsx_dev_runtime26.jsxDEV(Text3, {
|
|
253462
253443
|
color: "#89B4F8",
|
|
253463
253444
|
children: "↑↓"
|
|
253464
253445
|
}, undefined, false, undefined, this),
|
|
253465
|
-
/* @__PURE__ */
|
|
253446
|
+
/* @__PURE__ */ jsx_dev_runtime26.jsxDEV(Text3, {
|
|
253466
253447
|
color: "#AAAAAA",
|
|
253467
253448
|
children: "Navigate"
|
|
253468
253449
|
}, undefined, false, undefined, this),
|
|
253469
|
-
/* @__PURE__ */
|
|
253450
|
+
/* @__PURE__ */ jsx_dev_runtime26.jsxDEV(Text3, {
|
|
253470
253451
|
color: "#AAAAAA",
|
|
253471
253452
|
children: "·"
|
|
253472
253453
|
}, undefined, false, undefined, this),
|
|
253473
|
-
/* @__PURE__ */
|
|
253454
|
+
/* @__PURE__ */ jsx_dev_runtime26.jsxDEV(Text3, {
|
|
253474
253455
|
color: "#89B4F8",
|
|
253475
253456
|
children: "enter"
|
|
253476
253457
|
}, undefined, false, undefined, this),
|
|
253477
|
-
/* @__PURE__ */
|
|
253458
|
+
/* @__PURE__ */ jsx_dev_runtime26.jsxDEV(Text3, {
|
|
253478
253459
|
color: "#AAAAAA",
|
|
253479
253460
|
children: "Select"
|
|
253480
253461
|
}, undefined, false, undefined, this),
|
|
253481
|
-
/* @__PURE__ */
|
|
253462
|
+
/* @__PURE__ */ jsx_dev_runtime26.jsxDEV(Text3, {
|
|
253482
253463
|
color: "#AAAAAA",
|
|
253483
253464
|
children: "·"
|
|
253484
253465
|
}, undefined, false, undefined, this),
|
|
253485
|
-
/* @__PURE__ */
|
|
253466
|
+
/* @__PURE__ */ jsx_dev_runtime26.jsxDEV(Text3, {
|
|
253486
253467
|
color: "#89B4F8",
|
|
253487
253468
|
children: "esc"
|
|
253488
253469
|
}, undefined, false, undefined, this),
|
|
253489
|
-
/* @__PURE__ */
|
|
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
|
|
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__ */
|
|
253489
|
+
return /* @__PURE__ */ jsx_dev_runtime27.jsxDEV(Box_default, {
|
|
253509
253490
|
flexDirection: "column",
|
|
253510
253491
|
paddingX: 1,
|
|
253511
253492
|
children: [
|
|
253512
|
-
/* @__PURE__ */
|
|
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__ */
|
|
253498
|
+
planSummary && /* @__PURE__ */ jsx_dev_runtime27.jsxDEV(Box_default, {
|
|
253518
253499
|
borderStyle: "round",
|
|
253519
253500
|
borderColor: "cyan",
|
|
253520
253501
|
paddingX: 1,
|
|
253521
|
-
children: /* @__PURE__ */
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
253520
|
+
/* @__PURE__ */ jsx_dev_runtime27.jsxDEV(Box_default, {
|
|
253540
253521
|
paddingTop: 1,
|
|
253541
|
-
children: /* @__PURE__ */
|
|
253522
|
+
children: /* @__PURE__ */ jsx_dev_runtime27.jsxDEV(Box_default, {
|
|
253542
253523
|
gap: 1,
|
|
253543
253524
|
children: [
|
|
253544
|
-
/* @__PURE__ */
|
|
253525
|
+
/* @__PURE__ */ jsx_dev_runtime27.jsxDEV(Text3, {
|
|
253545
253526
|
color: "#89B4F8",
|
|
253546
253527
|
children: "↑↓"
|
|
253547
253528
|
}, undefined, false, undefined, this),
|
|
253548
|
-
/* @__PURE__ */
|
|
253529
|
+
/* @__PURE__ */ jsx_dev_runtime27.jsxDEV(Text3, {
|
|
253549
253530
|
color: "#AAAAAA",
|
|
253550
253531
|
children: "Navigate"
|
|
253551
253532
|
}, undefined, false, undefined, this),
|
|
253552
|
-
/* @__PURE__ */
|
|
253533
|
+
/* @__PURE__ */ jsx_dev_runtime27.jsxDEV(Text3, {
|
|
253553
253534
|
color: "#AAAAAA",
|
|
253554
253535
|
children: "·"
|
|
253555
253536
|
}, undefined, false, undefined, this),
|
|
253556
|
-
/* @__PURE__ */
|
|
253537
|
+
/* @__PURE__ */ jsx_dev_runtime27.jsxDEV(Text3, {
|
|
253557
253538
|
color: "#89B4F8",
|
|
253558
253539
|
children: "enter"
|
|
253559
253540
|
}, undefined, false, undefined, this),
|
|
253560
|
-
/* @__PURE__ */
|
|
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
|
|
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__ */
|
|
253670
|
+
return /* @__PURE__ */ jsx_dev_runtime28.jsxDEV(Box_default, {
|
|
253690
253671
|
flexDirection: "column",
|
|
253691
253672
|
paddingX: 1,
|
|
253692
253673
|
children: [
|
|
253693
|
-
/* @__PURE__ */
|
|
253674
|
+
/* @__PURE__ */ jsx_dev_runtime28.jsxDEV(Box_default, {
|
|
253694
253675
|
marginBottom: 1,
|
|
253695
|
-
children: /* @__PURE__ */
|
|
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__ */
|
|
253685
|
+
return /* @__PURE__ */ jsx_dev_runtime28.jsxDEV(Box_default, {
|
|
253705
253686
|
flexDirection: "row",
|
|
253706
253687
|
children: [
|
|
253707
|
-
/* @__PURE__ */
|
|
253688
|
+
/* @__PURE__ */ jsx_dev_runtime28.jsxDEV(Box_default, {
|
|
253708
253689
|
width: 2,
|
|
253709
|
-
children: /* @__PURE__ */
|
|
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__ */
|
|
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__ */
|
|
253707
|
+
return /* @__PURE__ */ jsx_dev_runtime28.jsxDEV(Box_default, {
|
|
253727
253708
|
flexDirection: "row",
|
|
253728
253709
|
children: [
|
|
253729
|
-
/* @__PURE__ */
|
|
253710
|
+
/* @__PURE__ */ jsx_dev_runtime28.jsxDEV(Box_default, {
|
|
253730
253711
|
width: 2,
|
|
253731
|
-
children: /* @__PURE__ */
|
|
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__ */
|
|
253717
|
+
/* @__PURE__ */ jsx_dev_runtime28.jsxDEV(Box_default, {
|
|
253737
253718
|
width: 97,
|
|
253738
|
-
children: /* @__PURE__ */
|
|
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__ */
|
|
253725
|
+
/* @__PURE__ */ jsx_dev_runtime28.jsxDEV(Box_default, {
|
|
253745
253726
|
width: 12,
|
|
253746
|
-
children: /* @__PURE__ */
|
|
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__ */
|
|
253735
|
+
totalItems === 0 && /* @__PURE__ */ jsx_dev_runtime28.jsxDEV(Box_default, {
|
|
253755
253736
|
paddingLeft: 2,
|
|
253756
|
-
children: /* @__PURE__ */
|
|
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__ */
|
|
253742
|
+
totalItems > 0 && /* @__PURE__ */ jsx_dev_runtime28.jsxDEV(Box_default, {
|
|
253762
253743
|
marginTop: 1,
|
|
253763
253744
|
paddingLeft: 2,
|
|
253764
|
-
children: /* @__PURE__ */
|
|
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__ */
|
|
253759
|
+
/* @__PURE__ */ jsx_dev_runtime28.jsxDEV(Box_default, {
|
|
253779
253760
|
paddingTop: 1,
|
|
253780
|
-
children: /* @__PURE__ */
|
|
253761
|
+
children: /* @__PURE__ */ jsx_dev_runtime28.jsxDEV(Box_default, {
|
|
253781
253762
|
gap: 1,
|
|
253782
253763
|
children: [
|
|
253783
|
-
/* @__PURE__ */
|
|
253764
|
+
/* @__PURE__ */ jsx_dev_runtime28.jsxDEV(Text3, {
|
|
253784
253765
|
color: "#89B4F8",
|
|
253785
253766
|
children: "↑/↓"
|
|
253786
253767
|
}, undefined, false, undefined, this),
|
|
253787
|
-
/* @__PURE__ */
|
|
253768
|
+
/* @__PURE__ */ jsx_dev_runtime28.jsxDEV(Text3, {
|
|
253788
253769
|
color: "#AAAAAA",
|
|
253789
253770
|
children: "Navigate"
|
|
253790
253771
|
}, undefined, false, undefined, this),
|
|
253791
|
-
/* @__PURE__ */
|
|
253772
|
+
/* @__PURE__ */ jsx_dev_runtime28.jsxDEV(Text3, {
|
|
253792
253773
|
color: "#AAAAAA",
|
|
253793
253774
|
children: "·"
|
|
253794
253775
|
}, undefined, false, undefined, this),
|
|
253795
|
-
/* @__PURE__ */
|
|
253776
|
+
/* @__PURE__ */ jsx_dev_runtime28.jsxDEV(Text3, {
|
|
253796
253777
|
color: "#89B4F8",
|
|
253797
253778
|
children: "←/→"
|
|
253798
253779
|
}, undefined, false, undefined, this),
|
|
253799
|
-
/* @__PURE__ */
|
|
253780
|
+
/* @__PURE__ */ jsx_dev_runtime28.jsxDEV(Text3, {
|
|
253800
253781
|
color: "#AAAAAA",
|
|
253801
253782
|
children: "Page"
|
|
253802
253783
|
}, undefined, false, undefined, this),
|
|
253803
|
-
/* @__PURE__ */
|
|
253784
|
+
/* @__PURE__ */ jsx_dev_runtime28.jsxDEV(Text3, {
|
|
253804
253785
|
color: "#AAAAAA",
|
|
253805
253786
|
children: "·"
|
|
253806
253787
|
}, undefined, false, undefined, this),
|
|
253807
|
-
/* @__PURE__ */
|
|
253788
|
+
/* @__PURE__ */ jsx_dev_runtime28.jsxDEV(Text3, {
|
|
253808
253789
|
color: "#89B4F8",
|
|
253809
253790
|
children: "enter"
|
|
253810
253791
|
}, undefined, false, undefined, this),
|
|
253811
|
-
/* @__PURE__ */
|
|
253792
|
+
/* @__PURE__ */ jsx_dev_runtime28.jsxDEV(Text3, {
|
|
253812
253793
|
color: "#AAAAAA",
|
|
253813
253794
|
children: "Select"
|
|
253814
253795
|
}, undefined, false, undefined, this),
|
|
253815
|
-
/* @__PURE__ */
|
|
253796
|
+
/* @__PURE__ */ jsx_dev_runtime28.jsxDEV(Text3, {
|
|
253816
253797
|
color: "#AAAAAA",
|
|
253817
253798
|
children: "·"
|
|
253818
253799
|
}, undefined, false, undefined, this),
|
|
253819
|
-
/* @__PURE__ */
|
|
253800
|
+
/* @__PURE__ */ jsx_dev_runtime28.jsxDEV(Text3, {
|
|
253820
253801
|
color: "#89B4F8",
|
|
253821
253802
|
children: "r"
|
|
253822
253803
|
}, undefined, false, undefined, this),
|
|
253823
|
-
/* @__PURE__ */
|
|
253804
|
+
/* @__PURE__ */ jsx_dev_runtime28.jsxDEV(Text3, {
|
|
253824
253805
|
color: "#AAAAAA",
|
|
253825
253806
|
children: "Rename"
|
|
253826
253807
|
}, undefined, false, undefined, this),
|
|
253827
|
-
/* @__PURE__ */
|
|
253808
|
+
/* @__PURE__ */ jsx_dev_runtime28.jsxDEV(Text3, {
|
|
253828
253809
|
color: "#AAAAAA",
|
|
253829
253810
|
children: "·"
|
|
253830
253811
|
}, undefined, false, undefined, this),
|
|
253831
|
-
/* @__PURE__ */
|
|
253812
|
+
/* @__PURE__ */ jsx_dev_runtime28.jsxDEV(Text3, {
|
|
253832
253813
|
color: "#89B4F8",
|
|
253833
253814
|
children: "d"
|
|
253834
253815
|
}, undefined, false, undefined, this),
|
|
253835
|
-
/* @__PURE__ */
|
|
253816
|
+
/* @__PURE__ */ jsx_dev_runtime28.jsxDEV(Text3, {
|
|
253836
253817
|
color: "#AAAAAA",
|
|
253837
253818
|
children: "Delete"
|
|
253838
253819
|
}, undefined, false, undefined, this),
|
|
253839
|
-
/* @__PURE__ */
|
|
253820
|
+
/* @__PURE__ */ jsx_dev_runtime28.jsxDEV(Text3, {
|
|
253840
253821
|
color: "#AAAAAA",
|
|
253841
253822
|
children: "·"
|
|
253842
253823
|
}, undefined, false, undefined, this),
|
|
253843
|
-
/* @__PURE__ */
|
|
253824
|
+
/* @__PURE__ */ jsx_dev_runtime28.jsxDEV(Text3, {
|
|
253844
253825
|
color: "#89B4F8",
|
|
253845
253826
|
children: "esc"
|
|
253846
253827
|
}, undefined, false, undefined, this),
|
|
253847
|
-
/* @__PURE__ */
|
|
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
|
|
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__ */
|
|
253885
|
+
return /* @__PURE__ */ jsx_dev_runtime29.jsxDEV(Box_default, {
|
|
253905
253886
|
flexDirection: "column",
|
|
253906
253887
|
paddingX: 1,
|
|
253907
253888
|
children: [
|
|
253908
|
-
/* @__PURE__ */
|
|
253889
|
+
/* @__PURE__ */ jsx_dev_runtime29.jsxDEV(Box_default, {
|
|
253909
253890
|
marginBottom: 1,
|
|
253910
|
-
children: /* @__PURE__ */
|
|
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__ */
|
|
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__ */
|
|
253903
|
+
/* @__PURE__ */ jsx_dev_runtime29.jsxDEV(Box_default, {
|
|
253923
253904
|
paddingTop: 1,
|
|
253924
|
-
children: /* @__PURE__ */
|
|
253905
|
+
children: /* @__PURE__ */ jsx_dev_runtime29.jsxDEV(Box_default, {
|
|
253925
253906
|
gap: 1,
|
|
253926
253907
|
children: [
|
|
253927
|
-
/* @__PURE__ */
|
|
253908
|
+
/* @__PURE__ */ jsx_dev_runtime29.jsxDEV(Text3, {
|
|
253928
253909
|
color: "#89B4F8",
|
|
253929
253910
|
children: "↑↓"
|
|
253930
253911
|
}, undefined, false, undefined, this),
|
|
253931
|
-
/* @__PURE__ */
|
|
253912
|
+
/* @__PURE__ */ jsx_dev_runtime29.jsxDEV(Text3, {
|
|
253932
253913
|
color: "#AAAAAA",
|
|
253933
253914
|
children: "Navigate"
|
|
253934
253915
|
}, undefined, false, undefined, this),
|
|
253935
|
-
/* @__PURE__ */
|
|
253916
|
+
/* @__PURE__ */ jsx_dev_runtime29.jsxDEV(Text3, {
|
|
253936
253917
|
color: "#AAAAAA",
|
|
253937
253918
|
children: "·"
|
|
253938
253919
|
}, undefined, false, undefined, this),
|
|
253939
|
-
/* @__PURE__ */
|
|
253920
|
+
/* @__PURE__ */ jsx_dev_runtime29.jsxDEV(Text3, {
|
|
253940
253921
|
color: "#89B4F8",
|
|
253941
253922
|
children: "enter"
|
|
253942
253923
|
}, undefined, false, undefined, this),
|
|
253943
|
-
/* @__PURE__ */
|
|
253924
|
+
/* @__PURE__ */ jsx_dev_runtime29.jsxDEV(Text3, {
|
|
253944
253925
|
color: "#AAAAAA",
|
|
253945
253926
|
children: "Toggle"
|
|
253946
253927
|
}, undefined, false, undefined, this),
|
|
253947
|
-
/* @__PURE__ */
|
|
253928
|
+
/* @__PURE__ */ jsx_dev_runtime29.jsxDEV(Text3, {
|
|
253948
253929
|
color: "#AAAAAA",
|
|
253949
253930
|
children: "·"
|
|
253950
253931
|
}, undefined, false, undefined, this),
|
|
253951
|
-
/* @__PURE__ */
|
|
253932
|
+
/* @__PURE__ */ jsx_dev_runtime29.jsxDEV(Text3, {
|
|
253952
253933
|
color: "#89B4F8",
|
|
253953
253934
|
children: "esc"
|
|
253954
253935
|
}, undefined, false, undefined, this),
|
|
253955
|
-
/* @__PURE__ */
|
|
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
|
|
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__ */
|
|
253970
|
+
return /* @__PURE__ */ jsx_dev_runtime30.jsxDEV(Box_default, {
|
|
253990
253971
|
flexDirection: "column",
|
|
253991
253972
|
paddingX: 1,
|
|
253992
253973
|
children: [
|
|
253993
|
-
/* @__PURE__ */
|
|
253974
|
+
/* @__PURE__ */ jsx_dev_runtime30.jsxDEV(Box_default, {
|
|
253994
253975
|
marginBottom: 1,
|
|
253995
253976
|
justifyContent: "space-between",
|
|
253996
253977
|
children: [
|
|
253997
|
-
/* @__PURE__ */
|
|
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__ */
|
|
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__ */
|
|
253997
|
+
/* @__PURE__ */ jsx_dev_runtime30.jsxDEV(Box_default, {
|
|
254017
253998
|
marginBottom: 1,
|
|
254018
|
-
children: /* @__PURE__ */
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
254022
|
+
/* @__PURE__ */ jsx_dev_runtime30.jsxDEV(Box_default, {
|
|
254042
254023
|
marginTop: 1,
|
|
254043
254024
|
justifyContent: "space-between",
|
|
254044
|
-
children: /* @__PURE__ */
|
|
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__ */
|
|
254038
|
+
/* @__PURE__ */ jsx_dev_runtime30.jsxDEV(Box_default, {
|
|
254058
254039
|
paddingTop: 1,
|
|
254059
|
-
children: /* @__PURE__ */
|
|
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__ */
|
|
254049
|
+
return /* @__PURE__ */ jsx_dev_runtime30.jsxDEV(Box_default, {
|
|
254069
254050
|
flexDirection: "column",
|
|
254070
254051
|
paddingX: 1,
|
|
254071
254052
|
children: [
|
|
254072
|
-
/* @__PURE__ */
|
|
254053
|
+
/* @__PURE__ */ jsx_dev_runtime30.jsxDEV(Box_default, {
|
|
254073
254054
|
marginBottom: 1,
|
|
254074
|
-
children: /* @__PURE__ */
|
|
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__ */
|
|
254061
|
+
tasksData.length === 0 ? /* @__PURE__ */ jsx_dev_runtime30.jsxDEV(Box_default, {
|
|
254081
254062
|
paddingLeft: 2,
|
|
254082
|
-
children: /* @__PURE__ */
|
|
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__ */
|
|
254070
|
+
return /* @__PURE__ */ jsx_dev_runtime30.jsxDEV(Box_default, {
|
|
254090
254071
|
flexDirection: "row",
|
|
254091
254072
|
children: [
|
|
254092
|
-
/* @__PURE__ */
|
|
254073
|
+
/* @__PURE__ */ jsx_dev_runtime30.jsxDEV(Box_default, {
|
|
254093
254074
|
width: 2,
|
|
254094
|
-
children: /* @__PURE__ */
|
|
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__ */
|
|
254080
|
+
/* @__PURE__ */ jsx_dev_runtime30.jsxDEV(Box_default, {
|
|
254100
254081
|
width: 25,
|
|
254101
|
-
children: /* @__PURE__ */
|
|
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__ */
|
|
254088
|
+
/* @__PURE__ */ jsx_dev_runtime30.jsxDEV(Box_default, {
|
|
254108
254089
|
width: 15,
|
|
254109
|
-
children: /* @__PURE__ */
|
|
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__ */
|
|
254119
|
-
children: /* @__PURE__ */
|
|
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__ */
|
|
254108
|
+
/* @__PURE__ */ jsx_dev_runtime30.jsxDEV(Box_default, {
|
|
254128
254109
|
paddingTop: 1,
|
|
254129
|
-
children: /* @__PURE__ */
|
|
254110
|
+
children: /* @__PURE__ */ jsx_dev_runtime30.jsxDEV(Box_default, {
|
|
254130
254111
|
gap: 1,
|
|
254131
254112
|
children: [
|
|
254132
|
-
/* @__PURE__ */
|
|
254113
|
+
/* @__PURE__ */ jsx_dev_runtime30.jsxDEV(Text3, {
|
|
254133
254114
|
color: "#89B4F8",
|
|
254134
254115
|
children: "↑/↓"
|
|
254135
254116
|
}, undefined, false, undefined, this),
|
|
254136
|
-
/* @__PURE__ */
|
|
254117
|
+
/* @__PURE__ */ jsx_dev_runtime30.jsxDEV(Text3, {
|
|
254137
254118
|
color: "#AAAAAA",
|
|
254138
254119
|
children: "Navigate"
|
|
254139
254120
|
}, undefined, false, undefined, this),
|
|
254140
|
-
/* @__PURE__ */
|
|
254121
|
+
/* @__PURE__ */ jsx_dev_runtime30.jsxDEV(Text3, {
|
|
254141
254122
|
color: "#AAAAAA",
|
|
254142
254123
|
children: "·"
|
|
254143
254124
|
}, undefined, false, undefined, this),
|
|
254144
|
-
/* @__PURE__ */
|
|
254125
|
+
/* @__PURE__ */ jsx_dev_runtime30.jsxDEV(Text3, {
|
|
254145
254126
|
color: "#89B4F8",
|
|
254146
254127
|
children: "←/→"
|
|
254147
254128
|
}, undefined, false, undefined, this),
|
|
254148
|
-
/* @__PURE__ */
|
|
254129
|
+
/* @__PURE__ */ jsx_dev_runtime30.jsxDEV(Text3, {
|
|
254149
254130
|
color: "#AAAAAA",
|
|
254150
254131
|
children: "Page"
|
|
254151
254132
|
}, undefined, false, undefined, this),
|
|
254152
|
-
/* @__PURE__ */
|
|
254133
|
+
/* @__PURE__ */ jsx_dev_runtime30.jsxDEV(Text3, {
|
|
254153
254134
|
color: "#AAAAAA",
|
|
254154
254135
|
children: "·"
|
|
254155
254136
|
}, undefined, false, undefined, this),
|
|
254156
|
-
/* @__PURE__ */
|
|
254137
|
+
/* @__PURE__ */ jsx_dev_runtime30.jsxDEV(Text3, {
|
|
254157
254138
|
color: "#89B4F8",
|
|
254158
254139
|
children: "enter"
|
|
254159
254140
|
}, undefined, false, undefined, this),
|
|
254160
|
-
/* @__PURE__ */
|
|
254141
|
+
/* @__PURE__ */ jsx_dev_runtime30.jsxDEV(Text3, {
|
|
254161
254142
|
color: "#AAAAAA",
|
|
254162
254143
|
children: "View output"
|
|
254163
254144
|
}, undefined, false, undefined, this),
|
|
254164
|
-
/* @__PURE__ */
|
|
254145
|
+
/* @__PURE__ */ jsx_dev_runtime30.jsxDEV(Text3, {
|
|
254165
254146
|
color: "#AAAAAA",
|
|
254166
254147
|
children: "·"
|
|
254167
254148
|
}, undefined, false, undefined, this),
|
|
254168
|
-
/* @__PURE__ */
|
|
254149
|
+
/* @__PURE__ */ jsx_dev_runtime30.jsxDEV(Text3, {
|
|
254169
254150
|
color: "#89B4F8",
|
|
254170
254151
|
children: "k"
|
|
254171
254152
|
}, undefined, false, undefined, this),
|
|
254172
|
-
/* @__PURE__ */
|
|
254153
|
+
/* @__PURE__ */ jsx_dev_runtime30.jsxDEV(Text3, {
|
|
254173
254154
|
color: "#AAAAAA",
|
|
254174
254155
|
children: "Kill Task"
|
|
254175
254156
|
}, undefined, false, undefined, this),
|
|
254176
|
-
/* @__PURE__ */
|
|
254157
|
+
/* @__PURE__ */ jsx_dev_runtime30.jsxDEV(Text3, {
|
|
254177
254158
|
color: "#AAAAAA",
|
|
254178
254159
|
children: "·"
|
|
254179
254160
|
}, undefined, false, undefined, this),
|
|
254180
|
-
/* @__PURE__ */
|
|
254161
|
+
/* @__PURE__ */ jsx_dev_runtime30.jsxDEV(Text3, {
|
|
254181
254162
|
color: "#89B4F8",
|
|
254182
254163
|
children: "esc"
|
|
254183
254164
|
}, undefined, false, undefined, this),
|
|
254184
|
-
/* @__PURE__ */
|
|
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
|
|
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__ */
|
|
254187
|
+
return /* @__PURE__ */ jsx_dev_runtime31.jsxDEV(Box_default, {
|
|
254207
254188
|
flexDirection: "column",
|
|
254208
254189
|
paddingX: 1,
|
|
254209
254190
|
children: [
|
|
254210
|
-
/* @__PURE__ */
|
|
254191
|
+
/* @__PURE__ */ jsx_dev_runtime31.jsxDEV(Box_default, {
|
|
254211
254192
|
marginBottom: 1,
|
|
254212
|
-
children: /* @__PURE__ */
|
|
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__ */
|
|
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__ */
|
|
254205
|
+
/* @__PURE__ */ jsx_dev_runtime31.jsxDEV(Box_default, {
|
|
254225
254206
|
paddingTop: 1,
|
|
254226
|
-
children: /* @__PURE__ */
|
|
254207
|
+
children: /* @__PURE__ */ jsx_dev_runtime31.jsxDEV(Box_default, {
|
|
254227
254208
|
gap: 1,
|
|
254228
254209
|
children: [
|
|
254229
|
-
/* @__PURE__ */
|
|
254210
|
+
/* @__PURE__ */ jsx_dev_runtime31.jsxDEV(Text3, {
|
|
254230
254211
|
color: "#89B4F8",
|
|
254231
254212
|
children: "↑↓"
|
|
254232
254213
|
}, undefined, false, undefined, this),
|
|
254233
|
-
/* @__PURE__ */
|
|
254214
|
+
/* @__PURE__ */ jsx_dev_runtime31.jsxDEV(Text3, {
|
|
254234
254215
|
color: "#AAAAAA",
|
|
254235
254216
|
children: "Navigate"
|
|
254236
254217
|
}, undefined, false, undefined, this),
|
|
254237
|
-
/* @__PURE__ */
|
|
254218
|
+
/* @__PURE__ */ jsx_dev_runtime31.jsxDEV(Text3, {
|
|
254238
254219
|
color: "#AAAAAA",
|
|
254239
254220
|
children: "·"
|
|
254240
254221
|
}, undefined, false, undefined, this),
|
|
254241
|
-
/* @__PURE__ */
|
|
254222
|
+
/* @__PURE__ */ jsx_dev_runtime31.jsxDEV(Text3, {
|
|
254242
254223
|
color: "#89B4F8",
|
|
254243
254224
|
children: "enter"
|
|
254244
254225
|
}, undefined, false, undefined, this),
|
|
254245
|
-
/* @__PURE__ */
|
|
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
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
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
|
|
254323
|
-
var
|
|
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] =
|
|
254326
|
-
const [answers, setAnswers] =
|
|
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__ */
|
|
254321
|
+
return /* @__PURE__ */ jsx_dev_runtime33.jsxDEV(Box_default, {
|
|
254341
254322
|
flexDirection: "column",
|
|
254342
254323
|
gap: 1,
|
|
254343
254324
|
children: [
|
|
254344
|
-
/* @__PURE__ */
|
|
254325
|
+
/* @__PURE__ */ jsx_dev_runtime33.jsxDEV(Box_default, {
|
|
254345
254326
|
flexDirection: "row",
|
|
254346
254327
|
gap: 1,
|
|
254347
254328
|
children: [
|
|
254348
|
-
/* @__PURE__ */
|
|
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__ */
|
|
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__ */
|
|
254341
|
+
/* @__PURE__ */ jsx_dev_runtime33.jsxDEV(Box_default, {
|
|
254361
254342
|
paddingLeft: 2,
|
|
254362
|
-
children: /* @__PURE__ */
|
|
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
|
|
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] =
|
|
254377
|
-
|
|
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
|
|
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] =
|
|
254441
|
-
const [exitConfirm, setExitConfirm] =
|
|
254442
|
-
|
|
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 =
|
|
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
|
|
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.
|
|
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
|
-
[
|
|
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
|
|
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
|
|
255400
|
+
var import_react52 = __toESM(require_react(), 1);
|
|
255411
255401
|
var identity2 = (arg) => arg;
|
|
255412
255402
|
function useStore(api3, selector = identity2) {
|
|
255413
|
-
const slice3 =
|
|
255414
|
-
|
|
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") =>
|
|
255539
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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 (
|
|
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
|
-
},
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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: "
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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 =
|
|
256678
|
+
const handleKillTask = import_react53.useCallback((taskId) => {
|
|
256744
256679
|
taskManager.killTask(taskId);
|
|
256745
256680
|
setTasksData([...taskManager.getTasks()]);
|
|
256746
256681
|
}, [setTasksData]);
|
|
256747
|
-
const generateGrillQuestions =
|
|
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(
|
|
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 =
|
|
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 =
|
|
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 =
|
|
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
|
-
|
|
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:
|
|
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
|
-
|
|
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:
|
|
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 =
|
|
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 =
|
|
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
|
|
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
|
|
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 =
|
|
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
|
-
},
|
|
257203
|
+
}, options.waitMsBeforeAsync) : undefined;
|
|
257304
257204
|
child.on("close", (code) => {
|
|
257305
|
-
|
|
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
|
|
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
|
|
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
|
|
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(
|
|
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,
|