codetyper-cli 0.4.0 → 0.4.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.js +652 -95
- package/package.json +1 -1
- package/src/version.json +1 -1
package/dist/index.js
CHANGED
|
@@ -6317,9 +6317,10 @@ var init_ui = __esm(() => {
|
|
|
6317
6317
|
});
|
|
6318
6318
|
|
|
6319
6319
|
// src/constants/terminal.ts
|
|
6320
|
-
var DISABLE_MOUSE_TRACKING;
|
|
6320
|
+
var DISABLE_MOUSE_TRACKING, TERMINAL_RESET;
|
|
6321
6321
|
var init_terminal = __esm(() => {
|
|
6322
6322
|
DISABLE_MOUSE_TRACKING = "\x1B[?1006l" + "\x1B[?1015l" + "\x1B[?1003l" + "\x1B[?1002l" + "\x1B[?1000l";
|
|
6323
|
+
TERMINAL_RESET = DISABLE_MOUSE_TRACKING + "\x1B[?25h" + "\x1B[?1049l" + "\x1B[>4;0m" + "\x1B[?2004l";
|
|
6323
6324
|
});
|
|
6324
6325
|
|
|
6325
6326
|
// node_modules/@inquirer/core/dist/lib/key.js
|
|
@@ -27362,15 +27363,17 @@ var init_dist16 = __esm(() => {
|
|
|
27362
27363
|
});
|
|
27363
27364
|
|
|
27364
27365
|
// src/utils/core/terminal.ts
|
|
27366
|
+
import { writeSync } from "fs";
|
|
27365
27367
|
var spinner = null, exitHandlersRegistered = false, emergencyTerminalCleanup = () => {
|
|
27366
27368
|
try {
|
|
27367
|
-
|
|
27369
|
+
writeSync(1, TERMINAL_RESET);
|
|
27368
27370
|
} catch {}
|
|
27369
27371
|
}, registerExitHandlers = () => {
|
|
27370
27372
|
if (exitHandlersRegistered)
|
|
27371
27373
|
return;
|
|
27372
27374
|
exitHandlersRegistered = true;
|
|
27373
27375
|
process.on("exit", emergencyTerminalCleanup);
|
|
27376
|
+
process.on("beforeExit", emergencyTerminalCleanup);
|
|
27374
27377
|
process.on("SIGINT", () => {
|
|
27375
27378
|
emergencyTerminalCleanup();
|
|
27376
27379
|
process.exit(130);
|
|
@@ -27379,6 +27382,18 @@ var spinner = null, exitHandlersRegistered = false, emergencyTerminalCleanup = (
|
|
|
27379
27382
|
emergencyTerminalCleanup();
|
|
27380
27383
|
process.exit(143);
|
|
27381
27384
|
});
|
|
27385
|
+
process.on("SIGHUP", () => {
|
|
27386
|
+
emergencyTerminalCleanup();
|
|
27387
|
+
process.exit(128);
|
|
27388
|
+
});
|
|
27389
|
+
process.on("uncaughtException", () => {
|
|
27390
|
+
emergencyTerminalCleanup();
|
|
27391
|
+
process.exit(1);
|
|
27392
|
+
});
|
|
27393
|
+
process.on("unhandledRejection", () => {
|
|
27394
|
+
emergencyTerminalCleanup();
|
|
27395
|
+
process.exit(1);
|
|
27396
|
+
});
|
|
27382
27397
|
}, successMessage = (message) => {
|
|
27383
27398
|
console.log(source_default.green("✓") + " " + message);
|
|
27384
27399
|
}, errorMessage = (message) => {
|
|
@@ -27420,7 +27435,9 @@ var spinner = null, exitHandlersRegistered = false, emergencyTerminalCleanup = (
|
|
|
27420
27435
|
}, filePath = (path2) => source_default.cyan(path2), enterFullscreen = () => {
|
|
27421
27436
|
process.stdout.write(TERMINAL_SEQUENCES.ENTER_ALTERNATE_SCREEN + TERMINAL_SEQUENCES.CLEAR_SCREEN + TERMINAL_SEQUENCES.CURSOR_HOME);
|
|
27422
27437
|
}, exitFullscreen = () => {
|
|
27423
|
-
|
|
27438
|
+
try {
|
|
27439
|
+
writeSync(1, TERMINAL_RESET);
|
|
27440
|
+
} catch {}
|
|
27424
27441
|
}, clearScreen = () => {
|
|
27425
27442
|
process.stdout.write(TERMINAL_SEQUENCES.CLEAR_SCREEN + TERMINAL_SEQUENCES.CLEAR_SCROLLBACK + TERMINAL_SEQUENCES.CURSOR_HOME);
|
|
27426
27443
|
}, askConfirm = async (message) => {
|
|
@@ -41869,7 +41886,7 @@ function convertToDebugSymbols(symbols) {
|
|
|
41869
41886
|
});
|
|
41870
41887
|
if (env2.OTUI_DEBUG_FFI && globalFFILogWriter) {
|
|
41871
41888
|
const writer = globalFFILogWriter;
|
|
41872
|
-
const
|
|
41889
|
+
const writeSync2 = (msg) => {
|
|
41873
41890
|
const buffer = new TextEncoder().encode(msg + `
|
|
41874
41891
|
`);
|
|
41875
41892
|
writer.write(buffer);
|
|
@@ -41878,9 +41895,9 @@ function convertToDebugSymbols(symbols) {
|
|
|
41878
41895
|
Object.entries(symbols).forEach(([key, value]) => {
|
|
41879
41896
|
if (typeof value === "function") {
|
|
41880
41897
|
debugSymbols[key] = (...args) => {
|
|
41881
|
-
|
|
41898
|
+
writeSync2(`${key}(${args.map((arg) => String(arg)).join(", ")})`);
|
|
41882
41899
|
const result = value(...args);
|
|
41883
|
-
|
|
41900
|
+
writeSync2(`${key} returned: ${String(result)}`);
|
|
41884
41901
|
return result;
|
|
41885
41902
|
};
|
|
41886
41903
|
}
|
|
@@ -65647,6 +65664,7 @@ var init_app = __esm(async () => {
|
|
|
65647
65664
|
logs: [],
|
|
65648
65665
|
currentToolCall: null,
|
|
65649
65666
|
permissionRequest: null,
|
|
65667
|
+
planApprovalPrompt: null,
|
|
65650
65668
|
learningPrompt: null,
|
|
65651
65669
|
thinkingMessage: null,
|
|
65652
65670
|
sessionId: null,
|
|
@@ -65691,6 +65709,7 @@ var init_app = __esm(async () => {
|
|
|
65691
65709
|
const logs = () => store.logs;
|
|
65692
65710
|
const currentToolCall = () => store.currentToolCall;
|
|
65693
65711
|
const permissionRequest = () => store.permissionRequest;
|
|
65712
|
+
const planApprovalPrompt = () => store.planApprovalPrompt;
|
|
65694
65713
|
const learningPrompt = () => store.learningPrompt;
|
|
65695
65714
|
const thinkingMessage = () => store.thinkingMessage;
|
|
65696
65715
|
const sessionId = () => store.sessionId;
|
|
@@ -65787,6 +65806,9 @@ var init_app = __esm(async () => {
|
|
|
65787
65806
|
const setPermissionRequest = (request) => {
|
|
65788
65807
|
setStore("permissionRequest", request);
|
|
65789
65808
|
};
|
|
65809
|
+
const setPlanApprovalPrompt = (prompt2) => {
|
|
65810
|
+
setStore("planApprovalPrompt", prompt2);
|
|
65811
|
+
};
|
|
65790
65812
|
const setLearningPrompt = (prompt2) => {
|
|
65791
65813
|
setStore("learningPrompt", prompt2);
|
|
65792
65814
|
};
|
|
@@ -66068,7 +66090,7 @@ var init_app = __esm(async () => {
|
|
|
66068
66090
|
});
|
|
66069
66091
|
};
|
|
66070
66092
|
const isInputLocked = () => {
|
|
66071
|
-
return store.mode === "thinking" || store.mode === "tool_execution" || store.mode === "permission_prompt";
|
|
66093
|
+
return store.mode === "thinking" || store.mode === "tool_execution" || store.mode === "permission_prompt" || store.mode === "plan_approval";
|
|
66072
66094
|
};
|
|
66073
66095
|
return {
|
|
66074
66096
|
mode,
|
|
@@ -66080,6 +66102,7 @@ var init_app = __esm(async () => {
|
|
|
66080
66102
|
logs,
|
|
66081
66103
|
currentToolCall,
|
|
66082
66104
|
permissionRequest,
|
|
66105
|
+
planApprovalPrompt,
|
|
66083
66106
|
learningPrompt,
|
|
66084
66107
|
thinkingMessage,
|
|
66085
66108
|
sessionId,
|
|
@@ -66119,6 +66142,7 @@ var init_app = __esm(async () => {
|
|
|
66119
66142
|
setCurrentToolCall,
|
|
66120
66143
|
updateToolCall,
|
|
66121
66144
|
setPermissionRequest,
|
|
66145
|
+
setPlanApprovalPrompt,
|
|
66122
66146
|
setLearningPrompt,
|
|
66123
66147
|
setThinkingMessage,
|
|
66124
66148
|
setSessionInfo,
|
|
@@ -66175,6 +66199,7 @@ var init_app = __esm(async () => {
|
|
|
66175
66199
|
logs: [],
|
|
66176
66200
|
currentToolCall: null,
|
|
66177
66201
|
permissionRequest: null,
|
|
66202
|
+
planApprovalPrompt: null,
|
|
66178
66203
|
learningPrompt: null,
|
|
66179
66204
|
thinkingMessage: null,
|
|
66180
66205
|
sessionId: null,
|
|
@@ -66213,6 +66238,7 @@ var init_app = __esm(async () => {
|
|
|
66213
66238
|
logs: storeRef.logs(),
|
|
66214
66239
|
currentToolCall: storeRef.currentToolCall(),
|
|
66215
66240
|
permissionRequest: storeRef.permissionRequest(),
|
|
66241
|
+
planApprovalPrompt: storeRef.planApprovalPrompt(),
|
|
66216
66242
|
learningPrompt: storeRef.learningPrompt(),
|
|
66217
66243
|
thinkingMessage: storeRef.thinkingMessage(),
|
|
66218
66244
|
sessionId: storeRef.sessionId(),
|
|
@@ -66277,6 +66303,11 @@ var init_app = __esm(async () => {
|
|
|
66277
66303
|
return;
|
|
66278
66304
|
storeRef.setPermissionRequest(request);
|
|
66279
66305
|
},
|
|
66306
|
+
setPlanApprovalPrompt: (prompt2) => {
|
|
66307
|
+
if (!storeRef)
|
|
66308
|
+
return;
|
|
66309
|
+
storeRef.setPlanApprovalPrompt(prompt2);
|
|
66310
|
+
},
|
|
66280
66311
|
setLearningPrompt: (prompt2) => {
|
|
66281
66312
|
if (!storeRef)
|
|
66282
66313
|
return;
|
|
@@ -94036,7 +94067,7 @@ var init_semantic_search = __esm(() => {
|
|
|
94036
94067
|
var version_default;
|
|
94037
94068
|
var init_version = __esm(() => {
|
|
94038
94069
|
version_default = {
|
|
94039
|
-
version: "0.
|
|
94070
|
+
version: "0.4.1"
|
|
94040
94071
|
};
|
|
94041
94072
|
});
|
|
94042
94073
|
|
|
@@ -108063,6 +108094,158 @@ var getFiles = (dir, cwd, maxDepth = FILE_PICKER_DEFAULTS.MAX_DEPTH, currentDept
|
|
|
108063
108094
|
|
|
108064
108095
|
// src/tui-solid/app.tsx
|
|
108065
108096
|
init_terminal();
|
|
108097
|
+
|
|
108098
|
+
// src/constants/clipboard.ts
|
|
108099
|
+
var OSC52_SEQUENCE_PREFIX = "\x1B]52;c;";
|
|
108100
|
+
var OSC52_SEQUENCE_SUFFIX = "\x07";
|
|
108101
|
+
var TMUX_DCS_PREFIX = "\x1BPtmux;\x1B";
|
|
108102
|
+
var TMUX_DCS_SUFFIX = "\x1B\\";
|
|
108103
|
+
var TMUX_ENV_VAR = "TMUX";
|
|
108104
|
+
var SCREEN_ENV_VAR = "STY";
|
|
108105
|
+
var WAYLAND_DISPLAY_ENV_VAR = "WAYLAND_DISPLAY";
|
|
108106
|
+
var CLIPBOARD_COMMAND_TIMEOUT_MS = 5000;
|
|
108107
|
+
|
|
108108
|
+
// src/services/clipboard/run-command.ts
|
|
108109
|
+
import { spawn as spawn8, execSync as execSync2 } from "child_process";
|
|
108110
|
+
var runCommand2 = (command, args) => {
|
|
108111
|
+
return new Promise((resolve4, reject) => {
|
|
108112
|
+
const proc = spawn8(command, args);
|
|
108113
|
+
const stdout = [];
|
|
108114
|
+
let stderr = "";
|
|
108115
|
+
const timer2 = setTimeout(() => {
|
|
108116
|
+
proc.kill();
|
|
108117
|
+
reject(new Error(`Command timed out after ${CLIPBOARD_COMMAND_TIMEOUT_MS}ms: ${command}`));
|
|
108118
|
+
}, CLIPBOARD_COMMAND_TIMEOUT_MS);
|
|
108119
|
+
proc.stdout.on("data", (data) => stdout.push(data));
|
|
108120
|
+
proc.stderr.on("data", (data) => {
|
|
108121
|
+
stderr += data.toString();
|
|
108122
|
+
});
|
|
108123
|
+
proc.on("close", (code) => {
|
|
108124
|
+
clearTimeout(timer2);
|
|
108125
|
+
if (code === 0) {
|
|
108126
|
+
resolve4({ stdout: Buffer.concat(stdout), stderr });
|
|
108127
|
+
} else {
|
|
108128
|
+
reject(new Error(`Command failed with code ${code}: ${stderr}`));
|
|
108129
|
+
}
|
|
108130
|
+
});
|
|
108131
|
+
proc.on("error", (error49) => {
|
|
108132
|
+
clearTimeout(timer2);
|
|
108133
|
+
reject(error49);
|
|
108134
|
+
});
|
|
108135
|
+
});
|
|
108136
|
+
};
|
|
108137
|
+
var runCommandText = async (command, args) => {
|
|
108138
|
+
const { stdout } = await runCommand2(command, args);
|
|
108139
|
+
return stdout.toString().trim();
|
|
108140
|
+
};
|
|
108141
|
+
var runCommandWithStdin = (command, args, input) => {
|
|
108142
|
+
return new Promise((resolve4, reject) => {
|
|
108143
|
+
const proc = spawn8(command, args, {
|
|
108144
|
+
stdio: ["pipe", "ignore", "ignore"]
|
|
108145
|
+
});
|
|
108146
|
+
const timer2 = setTimeout(() => {
|
|
108147
|
+
proc.kill();
|
|
108148
|
+
reject(new Error(`Command timed out after ${CLIPBOARD_COMMAND_TIMEOUT_MS}ms: ${command}`));
|
|
108149
|
+
}, CLIPBOARD_COMMAND_TIMEOUT_MS);
|
|
108150
|
+
proc.on("close", (code) => {
|
|
108151
|
+
clearTimeout(timer2);
|
|
108152
|
+
if (code === 0) {
|
|
108153
|
+
resolve4();
|
|
108154
|
+
} else {
|
|
108155
|
+
reject(new Error(`Command failed with code ${code}: ${command}`));
|
|
108156
|
+
}
|
|
108157
|
+
});
|
|
108158
|
+
proc.on("error", (error49) => {
|
|
108159
|
+
clearTimeout(timer2);
|
|
108160
|
+
reject(error49);
|
|
108161
|
+
});
|
|
108162
|
+
proc.stdin.write(input);
|
|
108163
|
+
proc.stdin.end();
|
|
108164
|
+
});
|
|
108165
|
+
};
|
|
108166
|
+
var commandExists = (name) => {
|
|
108167
|
+
try {
|
|
108168
|
+
execSync2(`which ${name}`, { stdio: "ignore" });
|
|
108169
|
+
return true;
|
|
108170
|
+
} catch {
|
|
108171
|
+
return false;
|
|
108172
|
+
}
|
|
108173
|
+
};
|
|
108174
|
+
|
|
108175
|
+
// src/services/clipboard/text-clipboard.ts
|
|
108176
|
+
var writeOsc52 = (text) => {
|
|
108177
|
+
if (!process.stdout.isTTY) {
|
|
108178
|
+
return;
|
|
108179
|
+
}
|
|
108180
|
+
const base643 = Buffer.from(text).toString("base64");
|
|
108181
|
+
const osc52 = `${OSC52_SEQUENCE_PREFIX}${base643}${OSC52_SEQUENCE_SUFFIX}`;
|
|
108182
|
+
const isPassthrough = Boolean(process.env[TMUX_ENV_VAR]) || Boolean(process.env[SCREEN_ENV_VAR]);
|
|
108183
|
+
const sequence = isPassthrough ? `${TMUX_DCS_PREFIX}${osc52}${TMUX_DCS_SUFFIX}` : osc52;
|
|
108184
|
+
process.stdout.write(sequence);
|
|
108185
|
+
};
|
|
108186
|
+
var copyMethodBuilders = {
|
|
108187
|
+
darwin: () => {
|
|
108188
|
+
if (!commandExists("osascript")) {
|
|
108189
|
+
return null;
|
|
108190
|
+
}
|
|
108191
|
+
return async (text) => {
|
|
108192
|
+
const escaped = text.replace(/\\/g, "\\\\").replace(/"/g, "\\\"");
|
|
108193
|
+
await runCommandText("osascript", [
|
|
108194
|
+
"-e",
|
|
108195
|
+
`set the clipboard to "${escaped}"`
|
|
108196
|
+
]);
|
|
108197
|
+
};
|
|
108198
|
+
},
|
|
108199
|
+
linux: () => {
|
|
108200
|
+
if (process.env[WAYLAND_DISPLAY_ENV_VAR] && commandExists("wl-copy")) {
|
|
108201
|
+
return async (text) => {
|
|
108202
|
+
await runCommandWithStdin("wl-copy", [], text);
|
|
108203
|
+
};
|
|
108204
|
+
}
|
|
108205
|
+
if (commandExists("xclip")) {
|
|
108206
|
+
return async (text) => {
|
|
108207
|
+
await runCommandWithStdin("xclip", ["-selection", "clipboard"], text);
|
|
108208
|
+
};
|
|
108209
|
+
}
|
|
108210
|
+
if (commandExists("xsel")) {
|
|
108211
|
+
return async (text) => {
|
|
108212
|
+
await runCommandWithStdin("xsel", ["--clipboard", "--input"], text);
|
|
108213
|
+
};
|
|
108214
|
+
}
|
|
108215
|
+
return null;
|
|
108216
|
+
},
|
|
108217
|
+
win32: () => {
|
|
108218
|
+
return async (text) => {
|
|
108219
|
+
await runCommandWithStdin("powershell.exe", [
|
|
108220
|
+
"-NonInteractive",
|
|
108221
|
+
"-NoProfile",
|
|
108222
|
+
"-Command",
|
|
108223
|
+
"[Console]::InputEncoding = [System.Text.Encoding]::UTF8; Set-Clipboard -Value ([Console]::In.ReadToEnd())"
|
|
108224
|
+
], text);
|
|
108225
|
+
};
|
|
108226
|
+
}
|
|
108227
|
+
};
|
|
108228
|
+
var cachedCopyMethod = null;
|
|
108229
|
+
var copyMethodResolved = false;
|
|
108230
|
+
var resolveCopyMethod = () => {
|
|
108231
|
+
if (copyMethodResolved) {
|
|
108232
|
+
return cachedCopyMethod;
|
|
108233
|
+
}
|
|
108234
|
+
const platform2 = process.platform;
|
|
108235
|
+
const builder = copyMethodBuilders[platform2];
|
|
108236
|
+
cachedCopyMethod = builder ? builder() : null;
|
|
108237
|
+
copyMethodResolved = true;
|
|
108238
|
+
return cachedCopyMethod;
|
|
108239
|
+
};
|
|
108240
|
+
var copyToClipboard = async (text) => {
|
|
108241
|
+
writeOsc52(text);
|
|
108242
|
+
const method = resolveCopyMethod();
|
|
108243
|
+
if (method) {
|
|
108244
|
+
await method(text);
|
|
108245
|
+
}
|
|
108246
|
+
};
|
|
108247
|
+
|
|
108248
|
+
// src/tui-solid/app.tsx
|
|
108066
108249
|
init_version();
|
|
108067
108250
|
|
|
108068
108251
|
// src/tui-solid/context/exit.tsx
|
|
@@ -110190,6 +110373,7 @@ function Header(props) {
|
|
|
110190
110373
|
setProp(_el$11, "justifyContent", "space-between");
|
|
110191
110374
|
setProp(_el$11, "paddingLeft", 1);
|
|
110192
110375
|
setProp(_el$11, "paddingRight", 1);
|
|
110376
|
+
setProp(_el$11, "marginBottom", 1);
|
|
110193
110377
|
setProp(_el$11, "border", ["bottom"]);
|
|
110194
110378
|
insertNode(_el$12, _el$15);
|
|
110195
110379
|
insertNode(_el$12, _el$17);
|
|
@@ -110351,17 +110535,18 @@ function Header(props) {
|
|
|
110351
110535
|
}
|
|
110352
110536
|
}), null);
|
|
110353
110537
|
effect((_p$) => {
|
|
110354
|
-
var _v$15 = theme.colors.border, _v$16 = theme.colors.
|
|
110538
|
+
var _v$15 = theme.colors.border, _v$16 = theme.colors.background, _v$17 = theme.colors.textDim, _v$18 = theme.colors.textDim, _v$19 = modeColor(), _v$20 = TextAttributes.BOLD, _v$21 = theme.colors.textDim, _v$22 = theme.colors.textDim, _v$23 = theme.colors.secondary, _v$24 = theme.colors.textDim, _v$25 = theme.colors.accent;
|
|
110355
110539
|
_v$15 !== _p$.e && (_p$.e = setProp(_el$11, "borderColor", _v$15, _p$.e));
|
|
110356
|
-
_v$16 !== _p$.t && (_p$.t = setProp(_el$
|
|
110357
|
-
_v$17 !== _p$.a && (_p$.a = setProp(_el$
|
|
110358
|
-
_v$18 !== _p$.o && (_p$.o = setProp(_el$
|
|
110359
|
-
_v$19 !== _p$.i && (_p$.i = setProp(_el$20, "
|
|
110360
|
-
_v$20 !== _p$.n && (_p$.n = setProp(_el$
|
|
110361
|
-
_v$21 !== _p$.s && (_p$.s = setProp(_el$
|
|
110362
|
-
_v$22 !== _p$.h && (_p$.h = setProp(_el$
|
|
110363
|
-
_v$23 !== _p$.r && (_p$.r = setProp(_el$
|
|
110364
|
-
_v$24 !== _p$.d && (_p$.d = setProp(_el$
|
|
110540
|
+
_v$16 !== _p$.t && (_p$.t = setProp(_el$11, "backgroundColor", _v$16, _p$.t));
|
|
110541
|
+
_v$17 !== _p$.a && (_p$.a = setProp(_el$15, "fg", _v$17, _p$.a));
|
|
110542
|
+
_v$18 !== _p$.o && (_p$.o = setProp(_el$17, "fg", _v$18, _p$.o));
|
|
110543
|
+
_v$19 !== _p$.i && (_p$.i = setProp(_el$20, "fg", _v$19, _p$.i));
|
|
110544
|
+
_v$20 !== _p$.n && (_p$.n = setProp(_el$20, "attributes", _v$20, _p$.n));
|
|
110545
|
+
_v$21 !== _p$.s && (_p$.s = setProp(_el$26, "fg", _v$21, _p$.s));
|
|
110546
|
+
_v$22 !== _p$.h && (_p$.h = setProp(_el$44, "fg", _v$22, _p$.h));
|
|
110547
|
+
_v$23 !== _p$.r && (_p$.r = setProp(_el$46, "fg", _v$23, _p$.r));
|
|
110548
|
+
_v$24 !== _p$.d && (_p$.d = setProp(_el$48, "fg", _v$24, _p$.d));
|
|
110549
|
+
_v$25 !== _p$.l && (_p$.l = setProp(_el$50, "fg", _v$25, _p$.l));
|
|
110365
110550
|
return _p$;
|
|
110366
110551
|
}, {
|
|
110367
110552
|
e: undefined,
|
|
@@ -110373,7 +110558,8 @@ function Header(props) {
|
|
|
110373
110558
|
s: undefined,
|
|
110374
110559
|
h: undefined,
|
|
110375
110560
|
r: undefined,
|
|
110376
|
-
d: undefined
|
|
110561
|
+
d: undefined,
|
|
110562
|
+
l: undefined
|
|
110377
110563
|
});
|
|
110378
110564
|
return _el$;
|
|
110379
110565
|
})();
|
|
@@ -110929,13 +111115,31 @@ function SystemEntry(props) {
|
|
|
110929
111115
|
}
|
|
110930
111116
|
function ThinkingEntry(props) {
|
|
110931
111117
|
const theme = useTheme();
|
|
111118
|
+
const firstLine = createMemo(() => {
|
|
111119
|
+
const lines = props.entry.content.split(`
|
|
111120
|
+
`);
|
|
111121
|
+
const line2 = lines[0] || "";
|
|
111122
|
+
if (line2.length > 80)
|
|
111123
|
+
return line2.substring(0, 80) + "...";
|
|
111124
|
+
return line2;
|
|
111125
|
+
});
|
|
110932
111126
|
return (() => {
|
|
110933
|
-
var _el$15 = createElement("box"), _el$16 = createElement("text"), _el$17 = createTextNode(
|
|
111127
|
+
var _el$15 = createElement("box"), _el$16 = createElement("text"), _el$17 = createTextNode(`Thinking: `);
|
|
110934
111128
|
insertNode(_el$15, _el$16);
|
|
110935
111129
|
setProp(_el$15, "marginBottom", 1);
|
|
111130
|
+
setProp(_el$15, "border", ["left"]);
|
|
111131
|
+
setProp(_el$15, "paddingLeft", 1);
|
|
110936
111132
|
insertNode(_el$16, _el$17);
|
|
110937
|
-
insert(_el$16,
|
|
110938
|
-
effect((
|
|
111133
|
+
insert(_el$16, firstLine, null);
|
|
111134
|
+
effect((_p$) => {
|
|
111135
|
+
var _v$5 = theme.colors.modeThinking, _v$6 = theme.colors.textDim;
|
|
111136
|
+
_v$5 !== _p$.e && (_p$.e = setProp(_el$15, "borderColor", _v$5, _p$.e));
|
|
111137
|
+
_v$6 !== _p$.t && (_p$.t = setProp(_el$16, "fg", _v$6, _p$.t));
|
|
111138
|
+
return _p$;
|
|
111139
|
+
}, {
|
|
111140
|
+
e: undefined,
|
|
111141
|
+
t: undefined
|
|
111142
|
+
});
|
|
110939
111143
|
return _el$15;
|
|
110940
111144
|
})();
|
|
110941
111145
|
}
|
|
@@ -111069,9 +111273,9 @@ function DiffToolEntry(props) {
|
|
|
111069
111273
|
}
|
|
111070
111274
|
}));
|
|
111071
111275
|
effect((_p$) => {
|
|
111072
|
-
var _v$
|
|
111073
|
-
_v$
|
|
111074
|
-
_v$
|
|
111276
|
+
var _v$7 = props.statusColor, _v$8 = theme.colors.roleTool;
|
|
111277
|
+
_v$7 !== _p$.e && (_p$.e = setProp(_el$20, "fg", _v$7, _p$.e));
|
|
111278
|
+
_v$8 !== _p$.t && (_p$.t = setProp(_el$22, "fg", _v$8, _p$.t));
|
|
111075
111279
|
return _p$;
|
|
111076
111280
|
}, {
|
|
111077
111281
|
e: undefined,
|
|
@@ -111171,9 +111375,9 @@ function MultilineToolEntry(props) {
|
|
|
111171
111375
|
}
|
|
111172
111376
|
}), null);
|
|
111173
111377
|
effect((_p$) => {
|
|
111174
|
-
var _v$
|
|
111175
|
-
_v$
|
|
111176
|
-
_v$
|
|
111378
|
+
var _v$9 = props.statusColor, _v$0 = theme.colors.roleTool;
|
|
111379
|
+
_v$9 !== _p$.e && (_p$.e = setProp(_el$29, "fg", _v$9, _p$.e));
|
|
111380
|
+
_v$0 !== _p$.t && (_p$.t = setProp(_el$31, "fg", _v$0, _p$.t));
|
|
111177
111381
|
return _p$;
|
|
111178
111382
|
}, {
|
|
111179
111383
|
e: undefined,
|
|
@@ -111220,9 +111424,9 @@ function DefaultToolEntry(props) {
|
|
|
111220
111424
|
}
|
|
111221
111425
|
}), null);
|
|
111222
111426
|
effect((_p$) => {
|
|
111223
|
-
var _v$
|
|
111224
|
-
_v$
|
|
111225
|
-
_v$
|
|
111427
|
+
var _v$1 = props.statusColor, _v$10 = theme.colors.roleTool;
|
|
111428
|
+
_v$1 !== _p$.e && (_p$.e = setProp(_el$44, "fg", _v$1, _p$.e));
|
|
111429
|
+
_v$10 !== _p$.t && (_p$.t = setProp(_el$46, "fg", _v$10, _p$.t));
|
|
111226
111430
|
return _p$;
|
|
111227
111431
|
}, {
|
|
111228
111432
|
e: undefined,
|
|
@@ -111334,20 +111538,6 @@ function LogEntryDisplay(props) {
|
|
|
111334
111538
|
|
|
111335
111539
|
// src/tui-solid/components/logs/log-panel.tsx
|
|
111336
111540
|
var SCROLL_LINES2 = 3;
|
|
111337
|
-
var MOUSE_ENABLE = "\x1B[?1000h\x1B[?1006h";
|
|
111338
|
-
var MOUSE_DISABLE = "\x1B[?1000l\x1B[?1006l";
|
|
111339
|
-
var SGR_MOUSE_PATTERN = /^\x1b\[<(\d+);(\d+);(\d+)([Mm])$/;
|
|
111340
|
-
var parseMouseScroll = (data) => {
|
|
111341
|
-
const match = data.match(SGR_MOUSE_PATTERN);
|
|
111342
|
-
if (!match)
|
|
111343
|
-
return null;
|
|
111344
|
-
const button = parseInt(match[1], 10);
|
|
111345
|
-
if (button === 64)
|
|
111346
|
-
return "up";
|
|
111347
|
-
if (button === 65)
|
|
111348
|
-
return "down";
|
|
111349
|
-
return null;
|
|
111350
|
-
};
|
|
111351
111541
|
function LogPanel() {
|
|
111352
111542
|
const theme = useTheme();
|
|
111353
111543
|
const app = useAppStore();
|
|
@@ -111419,32 +111609,13 @@ function LogPanel() {
|
|
|
111419
111609
|
return;
|
|
111420
111610
|
}
|
|
111421
111611
|
});
|
|
111422
|
-
onMount(() => {
|
|
111423
|
-
process.stdout.write(MOUSE_ENABLE);
|
|
111424
|
-
const handleData = (data) => {
|
|
111425
|
-
if (!canScroll())
|
|
111426
|
-
return;
|
|
111427
|
-
const str = data.toString();
|
|
111428
|
-
const direction = parseMouseScroll(str);
|
|
111429
|
-
if (direction === "up") {
|
|
111430
|
-
scrollUp();
|
|
111431
|
-
} else if (direction === "down") {
|
|
111432
|
-
scrollDown();
|
|
111433
|
-
}
|
|
111434
|
-
};
|
|
111435
|
-
process.stdin.on("data", handleData);
|
|
111436
|
-
onCleanup(() => {
|
|
111437
|
-
process.stdout.write(MOUSE_DISABLE);
|
|
111438
|
-
process.stdin.off("data", handleData);
|
|
111439
|
-
});
|
|
111440
|
-
});
|
|
111441
111612
|
return (() => {
|
|
111442
111613
|
var _el$ = createElement("box");
|
|
111443
111614
|
setProp(_el$, "flexDirection", "column");
|
|
111444
111615
|
setProp(_el$, "flexGrow", 1);
|
|
111445
111616
|
setProp(_el$, "paddingLeft", 1);
|
|
111446
111617
|
setProp(_el$, "paddingRight", 1);
|
|
111447
|
-
setProp(_el$, "
|
|
111618
|
+
setProp(_el$, "marginTop", 1);
|
|
111448
111619
|
insert(_el$, createComponent2(Show, {
|
|
111449
111620
|
get when() {
|
|
111450
111621
|
return hasContent();
|
|
@@ -111476,8 +111647,11 @@ function LogPanel() {
|
|
|
111476
111647
|
get children() {
|
|
111477
111648
|
var _el$2 = createElement("scrollbox"), _el$3 = createElement("box");
|
|
111478
111649
|
insertNode(_el$2, _el$3);
|
|
111479
|
-
|
|
111480
|
-
|
|
111650
|
+
use((el) => {
|
|
111651
|
+
scrollboxRef = el;
|
|
111652
|
+
el.verticalScrollBar.visible = false;
|
|
111653
|
+
el.horizontalScrollBar.visible = false;
|
|
111654
|
+
}, _el$2);
|
|
111481
111655
|
setProp(_el$2, "stickyStart", "bottom");
|
|
111482
111656
|
setProp(_el$2, "flexGrow", 1);
|
|
111483
111657
|
setProp(_el$3, "flexDirection", "column");
|
|
@@ -111493,7 +111667,6 @@ function LogPanel() {
|
|
|
111493
111667
|
return _el$2;
|
|
111494
111668
|
}
|
|
111495
111669
|
}));
|
|
111496
|
-
effect((_$p) => setProp(_el$, "borderColor", theme.colors.border, _$p));
|
|
111497
111670
|
return _el$;
|
|
111498
111671
|
})();
|
|
111499
111672
|
}
|
|
@@ -112812,11 +112985,14 @@ function PermissionModal(props) {
|
|
|
112812
112985
|
insertNode(_el$, _el$14);
|
|
112813
112986
|
insertNode(_el$, _el$15);
|
|
112814
112987
|
setProp(_el$, "flexDirection", "column");
|
|
112815
|
-
setProp(_el$, "border", ["top"
|
|
112988
|
+
setProp(_el$, "border", ["top"]);
|
|
112816
112989
|
setProp(_el$, "paddingLeft", 2);
|
|
112817
112990
|
setProp(_el$, "paddingRight", 2);
|
|
112818
112991
|
setProp(_el$, "paddingTop", 1);
|
|
112819
112992
|
setProp(_el$, "paddingBottom", 1);
|
|
112993
|
+
setProp(_el$, "width", "100%");
|
|
112994
|
+
setProp(_el$, "height", "auto");
|
|
112995
|
+
setProp(_el$, "flexShrink", 0);
|
|
112820
112996
|
insertNode(_el$2, _el$3);
|
|
112821
112997
|
setProp(_el$2, "marginBottom", 1);
|
|
112822
112998
|
insertNode(_el$3, createTextNode(`⚠ Permission Required`));
|
|
@@ -112931,6 +113107,341 @@ function PermissionModal(props) {
|
|
|
112931
113107
|
})();
|
|
112932
113108
|
}
|
|
112933
113109
|
|
|
113110
|
+
// src/tui-solid/components/modals/plan-approval-modal.tsx
|
|
113111
|
+
init_server();
|
|
113112
|
+
await __promiseAll([
|
|
113113
|
+
init_solid(),
|
|
113114
|
+
init_solid(),
|
|
113115
|
+
init_solid(),
|
|
113116
|
+
init_solid(),
|
|
113117
|
+
init_solid(),
|
|
113118
|
+
init_solid(),
|
|
113119
|
+
init_solid(),
|
|
113120
|
+
init_solid(),
|
|
113121
|
+
init_solid(),
|
|
113122
|
+
init_core2(),
|
|
113123
|
+
init_theme2()
|
|
113124
|
+
]);
|
|
113125
|
+
|
|
113126
|
+
// src/constants/plan-approval.ts
|
|
113127
|
+
var PLAN_APPROVAL_OPTIONS = [
|
|
113128
|
+
{
|
|
113129
|
+
key: "1",
|
|
113130
|
+
label: "Yes, clear context and auto-accept edits",
|
|
113131
|
+
description: "Approve plan, clear conversation context, and auto-accept all file edits",
|
|
113132
|
+
editMode: "auto_accept_clear",
|
|
113133
|
+
shortcut: "shift+tab"
|
|
113134
|
+
},
|
|
113135
|
+
{
|
|
113136
|
+
key: "2",
|
|
113137
|
+
label: "Yes, auto-accept edits",
|
|
113138
|
+
description: "Approve plan and auto-accept all file edits without prompting",
|
|
113139
|
+
editMode: "auto_accept"
|
|
113140
|
+
},
|
|
113141
|
+
{
|
|
113142
|
+
key: "3",
|
|
113143
|
+
label: "Yes, manually approve edits",
|
|
113144
|
+
description: "Approve plan but require manual approval for each file edit",
|
|
113145
|
+
editMode: "manual_approve"
|
|
113146
|
+
},
|
|
113147
|
+
{
|
|
113148
|
+
key: "4",
|
|
113149
|
+
label: "Type here to tell CodeTyper what to change",
|
|
113150
|
+
description: "Provide feedback or modifications to the plan",
|
|
113151
|
+
editMode: "feedback"
|
|
113152
|
+
}
|
|
113153
|
+
];
|
|
113154
|
+
var PLAN_APPROVAL_FOOTER_TEXT = "ctrl-g to edit in editor";
|
|
113155
|
+
|
|
113156
|
+
// src/tui-solid/components/modals/plan-approval-modal.tsx
|
|
113157
|
+
function PlanApprovalModal(props) {
|
|
113158
|
+
const theme = useTheme();
|
|
113159
|
+
const [selectedIndex, setSelectedIndex] = createSignal(0);
|
|
113160
|
+
const [feedbackMode, setFeedbackMode] = createSignal(false);
|
|
113161
|
+
const [feedbackText, setFeedbackText] = createSignal("");
|
|
113162
|
+
const isActive = () => props.isActive ?? true;
|
|
113163
|
+
const optionCount = PLAN_APPROVAL_OPTIONS.length;
|
|
113164
|
+
const handleApproval = (option) => {
|
|
113165
|
+
if (option.editMode === "feedback") {
|
|
113166
|
+
setFeedbackMode(true);
|
|
113167
|
+
return;
|
|
113168
|
+
}
|
|
113169
|
+
props.onRespond({
|
|
113170
|
+
approved: true,
|
|
113171
|
+
editMode: option.editMode
|
|
113172
|
+
});
|
|
113173
|
+
};
|
|
113174
|
+
const handleFeedbackSubmit = () => {
|
|
113175
|
+
const text = feedbackText().trim();
|
|
113176
|
+
if (!text)
|
|
113177
|
+
return;
|
|
113178
|
+
props.onRespond({
|
|
113179
|
+
approved: true,
|
|
113180
|
+
editMode: "feedback",
|
|
113181
|
+
feedback: text
|
|
113182
|
+
});
|
|
113183
|
+
};
|
|
113184
|
+
const handleCancel = () => {
|
|
113185
|
+
if (feedbackMode()) {
|
|
113186
|
+
setFeedbackMode(false);
|
|
113187
|
+
setFeedbackText("");
|
|
113188
|
+
return;
|
|
113189
|
+
}
|
|
113190
|
+
props.onRespond({
|
|
113191
|
+
approved: false,
|
|
113192
|
+
editMode: "manual_approve"
|
|
113193
|
+
});
|
|
113194
|
+
};
|
|
113195
|
+
useKeyboard((evt) => {
|
|
113196
|
+
if (!isActive())
|
|
113197
|
+
return;
|
|
113198
|
+
evt.stopPropagation();
|
|
113199
|
+
if (feedbackMode()) {
|
|
113200
|
+
if (evt.name === "return") {
|
|
113201
|
+
handleFeedbackSubmit();
|
|
113202
|
+
evt.preventDefault();
|
|
113203
|
+
return;
|
|
113204
|
+
}
|
|
113205
|
+
if (evt.name === "escape") {
|
|
113206
|
+
handleCancel();
|
|
113207
|
+
evt.preventDefault();
|
|
113208
|
+
return;
|
|
113209
|
+
}
|
|
113210
|
+
if (evt.name === "backspace") {
|
|
113211
|
+
setFeedbackText((prev) => prev.slice(0, -1));
|
|
113212
|
+
evt.preventDefault();
|
|
113213
|
+
return;
|
|
113214
|
+
}
|
|
113215
|
+
if (evt.name.length === 1 && !evt.ctrl && !evt.meta) {
|
|
113216
|
+
setFeedbackText((prev) => prev + evt.name);
|
|
113217
|
+
evt.preventDefault();
|
|
113218
|
+
}
|
|
113219
|
+
return;
|
|
113220
|
+
}
|
|
113221
|
+
if (evt.name === "up") {
|
|
113222
|
+
setSelectedIndex((prev) => prev > 0 ? prev - 1 : optionCount - 1);
|
|
113223
|
+
evt.preventDefault();
|
|
113224
|
+
return;
|
|
113225
|
+
}
|
|
113226
|
+
if (evt.name === "down") {
|
|
113227
|
+
setSelectedIndex((prev) => prev < optionCount - 1 ? prev + 1 : 0);
|
|
113228
|
+
evt.preventDefault();
|
|
113229
|
+
return;
|
|
113230
|
+
}
|
|
113231
|
+
if (evt.name === "return") {
|
|
113232
|
+
handleApproval(PLAN_APPROVAL_OPTIONS[selectedIndex()]);
|
|
113233
|
+
evt.preventDefault();
|
|
113234
|
+
return;
|
|
113235
|
+
}
|
|
113236
|
+
if (evt.name === "escape") {
|
|
113237
|
+
handleCancel();
|
|
113238
|
+
evt.preventDefault();
|
|
113239
|
+
return;
|
|
113240
|
+
}
|
|
113241
|
+
if (evt.name === "tab" && evt.shift) {
|
|
113242
|
+
handleApproval(PLAN_APPROVAL_OPTIONS[0]);
|
|
113243
|
+
evt.preventDefault();
|
|
113244
|
+
return;
|
|
113245
|
+
}
|
|
113246
|
+
if (evt.name.length === 1 && !evt.ctrl && !evt.meta) {
|
|
113247
|
+
const option = PLAN_APPROVAL_OPTIONS.find((o2) => o2.key === evt.name);
|
|
113248
|
+
if (option) {
|
|
113249
|
+
handleApproval(option);
|
|
113250
|
+
evt.preventDefault();
|
|
113251
|
+
}
|
|
113252
|
+
}
|
|
113253
|
+
});
|
|
113254
|
+
return (() => {
|
|
113255
|
+
var _el$ = createElement("box"), _el$2 = createElement("box"), _el$3 = createElement("text");
|
|
113256
|
+
insertNode(_el$, _el$2);
|
|
113257
|
+
setProp(_el$, "flexDirection", "column");
|
|
113258
|
+
setProp(_el$, "border", ["top", "bottom", "left", "right"]);
|
|
113259
|
+
setProp(_el$, "paddingLeft", 2);
|
|
113260
|
+
setProp(_el$, "paddingRight", 2);
|
|
113261
|
+
setProp(_el$, "paddingTop", 1);
|
|
113262
|
+
setProp(_el$, "paddingBottom", 1);
|
|
113263
|
+
insertNode(_el$2, _el$3);
|
|
113264
|
+
setProp(_el$2, "marginBottom", 1);
|
|
113265
|
+
insertNode(_el$3, createTextNode(`CodeTyper has written up a plan and is ready to execute. Would you like to proceed?`));
|
|
113266
|
+
insert(_el$, createComponent2(Show, {
|
|
113267
|
+
get when() {
|
|
113268
|
+
return props.prompt.planTitle;
|
|
113269
|
+
},
|
|
113270
|
+
get children() {
|
|
113271
|
+
var _el$5 = createElement("box"), _el$6 = createElement("text");
|
|
113272
|
+
insertNode(_el$5, _el$6);
|
|
113273
|
+
setProp(_el$5, "marginBottom", 1);
|
|
113274
|
+
insert(_el$6, () => props.prompt.planTitle);
|
|
113275
|
+
effect((_p$) => {
|
|
113276
|
+
var _v$ = theme.colors.text, _v$2 = TextAttributes.BOLD;
|
|
113277
|
+
_v$ !== _p$.e && (_p$.e = setProp(_el$6, "fg", _v$, _p$.e));
|
|
113278
|
+
_v$2 !== _p$.t && (_p$.t = setProp(_el$6, "attributes", _v$2, _p$.t));
|
|
113279
|
+
return _p$;
|
|
113280
|
+
}, {
|
|
113281
|
+
e: undefined,
|
|
113282
|
+
t: undefined
|
|
113283
|
+
});
|
|
113284
|
+
return _el$5;
|
|
113285
|
+
}
|
|
113286
|
+
}), null);
|
|
113287
|
+
insert(_el$, createComponent2(Show, {
|
|
113288
|
+
get when() {
|
|
113289
|
+
return props.prompt.planSummary;
|
|
113290
|
+
},
|
|
113291
|
+
get children() {
|
|
113292
|
+
var _el$7 = createElement("box"), _el$8 = createElement("text");
|
|
113293
|
+
insertNode(_el$7, _el$8);
|
|
113294
|
+
setProp(_el$7, "marginBottom", 1);
|
|
113295
|
+
insert(_el$8, () => props.prompt.planSummary);
|
|
113296
|
+
effect((_$p) => setProp(_el$8, "fg", theme.colors.textDim, _$p));
|
|
113297
|
+
return _el$7;
|
|
113298
|
+
}
|
|
113299
|
+
}), null);
|
|
113300
|
+
insert(_el$, createComponent2(Show, {
|
|
113301
|
+
get when() {
|
|
113302
|
+
return !feedbackMode();
|
|
113303
|
+
},
|
|
113304
|
+
get children() {
|
|
113305
|
+
var _el$9 = createElement("box");
|
|
113306
|
+
setProp(_el$9, "flexDirection", "column");
|
|
113307
|
+
setProp(_el$9, "marginTop", 1);
|
|
113308
|
+
insert(_el$9, createComponent2(For, {
|
|
113309
|
+
each: PLAN_APPROVAL_OPTIONS,
|
|
113310
|
+
children: (option, index) => {
|
|
113311
|
+
const isSelected = () => index() === selectedIndex();
|
|
113312
|
+
return (() => {
|
|
113313
|
+
var _el$23 = createElement("box"), _el$24 = createElement("text"), _el$25 = createElement("text"), _el$26 = createTextNode(`. `), _el$27 = createElement("text");
|
|
113314
|
+
insertNode(_el$23, _el$24);
|
|
113315
|
+
insertNode(_el$23, _el$25);
|
|
113316
|
+
insertNode(_el$23, _el$27);
|
|
113317
|
+
setProp(_el$23, "flexDirection", "row");
|
|
113318
|
+
insert(_el$24, () => isSelected() ? "> " : " ");
|
|
113319
|
+
insertNode(_el$25, _el$26);
|
|
113320
|
+
insert(_el$25, () => option.key, _el$26);
|
|
113321
|
+
insert(_el$27, () => option.label);
|
|
113322
|
+
insert(_el$23, createComponent2(Show, {
|
|
113323
|
+
get when() {
|
|
113324
|
+
return option.shortcut;
|
|
113325
|
+
},
|
|
113326
|
+
get children() {
|
|
113327
|
+
var _el$28 = createElement("text"), _el$29 = createTextNode(` (`), _el$31 = createTextNode(`)`);
|
|
113328
|
+
insertNode(_el$28, _el$29);
|
|
113329
|
+
insertNode(_el$28, _el$31);
|
|
113330
|
+
insert(_el$28, () => option.shortcut, _el$31);
|
|
113331
|
+
effect((_$p) => setProp(_el$28, "fg", theme.colors.textMuted, _$p));
|
|
113332
|
+
return _el$28;
|
|
113333
|
+
}
|
|
113334
|
+
}), null);
|
|
113335
|
+
effect((_p$) => {
|
|
113336
|
+
var _v$10 = isSelected() ? theme.colors.primary : theme.colors.textDim, _v$11 = isSelected() ? TextAttributes.BOLD : TextAttributes.NONE, _v$12 = theme.colors.textDim, _v$13 = isSelected() ? theme.colors.text : theme.colors.textDim;
|
|
113337
|
+
_v$10 !== _p$.e && (_p$.e = setProp(_el$24, "fg", _v$10, _p$.e));
|
|
113338
|
+
_v$11 !== _p$.t && (_p$.t = setProp(_el$24, "attributes", _v$11, _p$.t));
|
|
113339
|
+
_v$12 !== _p$.a && (_p$.a = setProp(_el$25, "fg", _v$12, _p$.a));
|
|
113340
|
+
_v$13 !== _p$.o && (_p$.o = setProp(_el$27, "fg", _v$13, _p$.o));
|
|
113341
|
+
return _p$;
|
|
113342
|
+
}, {
|
|
113343
|
+
e: undefined,
|
|
113344
|
+
t: undefined,
|
|
113345
|
+
a: undefined,
|
|
113346
|
+
o: undefined
|
|
113347
|
+
});
|
|
113348
|
+
return _el$23;
|
|
113349
|
+
})();
|
|
113350
|
+
}
|
|
113351
|
+
}));
|
|
113352
|
+
return _el$9;
|
|
113353
|
+
}
|
|
113354
|
+
}), null);
|
|
113355
|
+
insert(_el$, createComponent2(Show, {
|
|
113356
|
+
get when() {
|
|
113357
|
+
return feedbackMode();
|
|
113358
|
+
},
|
|
113359
|
+
get children() {
|
|
113360
|
+
var _el$0 = createElement("box"), _el$1 = createElement("text"), _el$11 = createElement("box"), _el$12 = createElement("text"), _el$13 = createElement("text"), _el$15 = createElement("text");
|
|
113361
|
+
insertNode(_el$0, _el$1);
|
|
113362
|
+
insertNode(_el$0, _el$11);
|
|
113363
|
+
insertNode(_el$0, _el$15);
|
|
113364
|
+
setProp(_el$0, "flexDirection", "column");
|
|
113365
|
+
setProp(_el$0, "marginTop", 1);
|
|
113366
|
+
insertNode(_el$1, createTextNode(`Tell CodeTyper what to change:`));
|
|
113367
|
+
insertNode(_el$11, _el$12);
|
|
113368
|
+
setProp(_el$11, "border", ["left"]);
|
|
113369
|
+
setProp(_el$11, "paddingLeft", 1);
|
|
113370
|
+
setProp(_el$11, "marginTop", 1);
|
|
113371
|
+
insertNode(_el$12, _el$13);
|
|
113372
|
+
insert(_el$12, () => feedbackText() || " ", _el$13);
|
|
113373
|
+
insertNode(_el$13, createTextNode(`_`));
|
|
113374
|
+
insertNode(_el$15, createTextNode(`Enter to submit | Esc to cancel`));
|
|
113375
|
+
effect((_p$) => {
|
|
113376
|
+
var _v$3 = theme.colors.text, _v$4 = theme.colors.borderFocus, _v$5 = theme.colors.text, _v$6 = theme.colors.bgCursor, _v$7 = theme.colors.textDim;
|
|
113377
|
+
_v$3 !== _p$.e && (_p$.e = setProp(_el$1, "fg", _v$3, _p$.e));
|
|
113378
|
+
_v$4 !== _p$.t && (_p$.t = setProp(_el$11, "borderColor", _v$4, _p$.t));
|
|
113379
|
+
_v$5 !== _p$.a && (_p$.a = setProp(_el$12, "fg", _v$5, _p$.a));
|
|
113380
|
+
_v$6 !== _p$.o && (_p$.o = setProp(_el$13, "fg", _v$6, _p$.o));
|
|
113381
|
+
_v$7 !== _p$.i && (_p$.i = setProp(_el$15, "fg", _v$7, _p$.i));
|
|
113382
|
+
return _p$;
|
|
113383
|
+
}, {
|
|
113384
|
+
e: undefined,
|
|
113385
|
+
t: undefined,
|
|
113386
|
+
a: undefined,
|
|
113387
|
+
o: undefined,
|
|
113388
|
+
i: undefined
|
|
113389
|
+
});
|
|
113390
|
+
return _el$0;
|
|
113391
|
+
}
|
|
113392
|
+
}), null);
|
|
113393
|
+
insert(_el$, createComponent2(Show, {
|
|
113394
|
+
get when() {
|
|
113395
|
+
return !feedbackMode();
|
|
113396
|
+
},
|
|
113397
|
+
get children() {
|
|
113398
|
+
var _el$17 = createElement("box");
|
|
113399
|
+
setProp(_el$17, "marginTop", 1);
|
|
113400
|
+
setProp(_el$17, "flexDirection", "row");
|
|
113401
|
+
insert(_el$17, createComponent2(Show, {
|
|
113402
|
+
get when() {
|
|
113403
|
+
return props.prompt.planFilePath;
|
|
113404
|
+
},
|
|
113405
|
+
get children() {
|
|
113406
|
+
var _el$18 = createElement("text"), _el$19 = createTextNode(` - `);
|
|
113407
|
+
insertNode(_el$18, _el$19);
|
|
113408
|
+
insert(_el$18, PLAN_APPROVAL_FOOTER_TEXT, _el$19);
|
|
113409
|
+
insert(_el$18, () => props.prompt.planFilePath, null);
|
|
113410
|
+
effect((_$p) => setProp(_el$18, "fg", theme.colors.textDim, _$p));
|
|
113411
|
+
return _el$18;
|
|
113412
|
+
}
|
|
113413
|
+
}), null);
|
|
113414
|
+
insert(_el$17, createComponent2(Show, {
|
|
113415
|
+
get when() {
|
|
113416
|
+
return !props.prompt.planFilePath;
|
|
113417
|
+
},
|
|
113418
|
+
get children() {
|
|
113419
|
+
var _el$20 = createElement("text"), _el$21 = createTextNode(`↑↓ options | Enter select | 1-4 shortcut | Esc cancel`);
|
|
113420
|
+
insertNode(_el$20, _el$21);
|
|
113421
|
+
effect((_$p) => setProp(_el$20, "fg", theme.colors.textDim, _$p));
|
|
113422
|
+
return _el$20;
|
|
113423
|
+
}
|
|
113424
|
+
}), null);
|
|
113425
|
+
return _el$17;
|
|
113426
|
+
}
|
|
113427
|
+
}), null);
|
|
113428
|
+
effect((_p$) => {
|
|
113429
|
+
var _v$8 = theme.colors.borderModal, _v$9 = theme.colors.background, _v$0 = theme.colors.primary, _v$1 = TextAttributes.BOLD;
|
|
113430
|
+
_v$8 !== _p$.e && (_p$.e = setProp(_el$, "borderColor", _v$8, _p$.e));
|
|
113431
|
+
_v$9 !== _p$.t && (_p$.t = setProp(_el$, "backgroundColor", _v$9, _p$.t));
|
|
113432
|
+
_v$0 !== _p$.a && (_p$.a = setProp(_el$3, "fg", _v$0, _p$.a));
|
|
113433
|
+
_v$1 !== _p$.o && (_p$.o = setProp(_el$3, "attributes", _v$1, _p$.o));
|
|
113434
|
+
return _p$;
|
|
113435
|
+
}, {
|
|
113436
|
+
e: undefined,
|
|
113437
|
+
t: undefined,
|
|
113438
|
+
a: undefined,
|
|
113439
|
+
o: undefined
|
|
113440
|
+
});
|
|
113441
|
+
return _el$;
|
|
113442
|
+
})();
|
|
113443
|
+
}
|
|
113444
|
+
|
|
112934
113445
|
// src/tui-solid/components/modals/learning-modal.tsx
|
|
112935
113446
|
init_server();
|
|
112936
113447
|
await __promiseAll([
|
|
@@ -114559,10 +115070,53 @@ function Session(props) {
|
|
|
114559
115070
|
return createComponent2(DebugLogPanel, {});
|
|
114560
115071
|
}
|
|
114561
115072
|
}), null);
|
|
115073
|
+
insert(_el$, createComponent2(Show, {
|
|
115074
|
+
get when() {
|
|
115075
|
+
return memo2(() => app.mode() === "permission_prompt")() && app.permissionRequest();
|
|
115076
|
+
},
|
|
115077
|
+
get children() {
|
|
115078
|
+
return createComponent2(PermissionModal, {
|
|
115079
|
+
get request() {
|
|
115080
|
+
return app.permissionRequest();
|
|
115081
|
+
},
|
|
115082
|
+
get onRespond() {
|
|
115083
|
+
return props.onPermissionResponse;
|
|
115084
|
+
},
|
|
115085
|
+
get isActive() {
|
|
115086
|
+
return app.mode() === "permission_prompt";
|
|
115087
|
+
}
|
|
115088
|
+
});
|
|
115089
|
+
}
|
|
115090
|
+
}), null);
|
|
115091
|
+
insert(_el$, createComponent2(Show, {
|
|
115092
|
+
get when() {
|
|
115093
|
+
return memo2(() => app.mode() === "plan_approval")() && app.planApprovalPrompt();
|
|
115094
|
+
},
|
|
115095
|
+
get children() {
|
|
115096
|
+
return createComponent2(PlanApprovalModal, {
|
|
115097
|
+
get prompt() {
|
|
115098
|
+
return app.planApprovalPrompt();
|
|
115099
|
+
},
|
|
115100
|
+
get onRespond() {
|
|
115101
|
+
return props.onPlanApprovalResponse;
|
|
115102
|
+
},
|
|
115103
|
+
get isActive() {
|
|
115104
|
+
return app.mode() === "plan_approval";
|
|
115105
|
+
}
|
|
115106
|
+
});
|
|
115107
|
+
}
|
|
115108
|
+
}), null);
|
|
114562
115109
|
insert(_el$, createComponent2(StatusBar, {}), null);
|
|
114563
|
-
insert(_el$, createComponent2(
|
|
114564
|
-
get
|
|
114565
|
-
return
|
|
115110
|
+
insert(_el$, createComponent2(Show, {
|
|
115111
|
+
get when() {
|
|
115112
|
+
return memo2(() => app.mode() !== "permission_prompt")() && app.mode() !== "plan_approval";
|
|
115113
|
+
},
|
|
115114
|
+
get children() {
|
|
115115
|
+
return createComponent2(InputArea, {
|
|
115116
|
+
get onSubmit() {
|
|
115117
|
+
return props.onSubmit;
|
|
115118
|
+
}
|
|
115119
|
+
});
|
|
114566
115120
|
}
|
|
114567
115121
|
}), null);
|
|
114568
115122
|
insert(_el$, createComponent2(Switch, {
|
|
@@ -114756,27 +115310,6 @@ function Session(props) {
|
|
|
114756
115310
|
}
|
|
114757
115311
|
});
|
|
114758
115312
|
}
|
|
114759
|
-
}), createComponent2(Match, {
|
|
114760
|
-
get when() {
|
|
114761
|
-
return memo2(() => app.mode() === "permission_prompt")() && app.permissionRequest();
|
|
114762
|
-
},
|
|
114763
|
-
get children() {
|
|
114764
|
-
return createComponent2(CenteredModal, {
|
|
114765
|
-
get children() {
|
|
114766
|
-
return createComponent2(PermissionModal, {
|
|
114767
|
-
get request() {
|
|
114768
|
-
return app.permissionRequest();
|
|
114769
|
-
},
|
|
114770
|
-
get onRespond() {
|
|
114771
|
-
return props.onPermissionResponse;
|
|
114772
|
-
},
|
|
114773
|
-
get isActive() {
|
|
114774
|
-
return app.mode() === "permission_prompt";
|
|
114775
|
-
}
|
|
114776
|
-
});
|
|
114777
|
-
}
|
|
114778
|
-
});
|
|
114779
|
-
}
|
|
114780
115313
|
}), createComponent2(Match, {
|
|
114781
115314
|
get when() {
|
|
114782
115315
|
return memo2(() => app.mode() === "learning_prompt")() && app.learningPrompt();
|
|
@@ -114902,8 +115435,16 @@ function AppContent(props) {
|
|
|
114902
115435
|
const exit = useExit();
|
|
114903
115436
|
const toast = useToast();
|
|
114904
115437
|
const theme = useTheme();
|
|
115438
|
+
const renderer = useRenderer();
|
|
114905
115439
|
const [fileList, setFileList] = createSignal([]);
|
|
114906
115440
|
setAppStoreRef(app);
|
|
115441
|
+
const copySelectionToClipboard = async () => {
|
|
115442
|
+
const text = renderer.getSelection()?.getSelectedText();
|
|
115443
|
+
if (text && text.length > 0) {
|
|
115444
|
+
await copyToClipboard(text).then(() => toast.info("Copied to clipboard")).catch(() => toast.error("Failed to copy to clipboard"));
|
|
115445
|
+
renderer.clearSelection();
|
|
115446
|
+
}
|
|
115447
|
+
};
|
|
114907
115448
|
createEffect(() => {
|
|
114908
115449
|
if (app.mode() === "file_picker") {
|
|
114909
115450
|
const cwd = process.cwd();
|
|
@@ -114943,6 +115484,11 @@ function AppContent(props) {
|
|
|
114943
115484
|
}, 100);
|
|
114944
115485
|
}
|
|
114945
115486
|
useKeyboard((evt) => {
|
|
115487
|
+
if (evt.ctrl && evt.name === "y") {
|
|
115488
|
+
copySelectionToClipboard();
|
|
115489
|
+
evt.preventDefault();
|
|
115490
|
+
return;
|
|
115491
|
+
}
|
|
114946
115492
|
if (evt.name === "escape") {
|
|
114947
115493
|
abortCurrentOperation(false).then((aborted2) => {
|
|
114948
115494
|
if (aborted2) {
|
|
@@ -115087,6 +115633,9 @@ function AppContent(props) {
|
|
|
115087
115633
|
const handlePermissionResponse = (allowed, scope) => {
|
|
115088
115634
|
props.onPermissionResponse(allowed, scope);
|
|
115089
115635
|
};
|
|
115636
|
+
const handlePlanApprovalResponse = (response2) => {
|
|
115637
|
+
props.onPlanApprovalResponse(response2);
|
|
115638
|
+
};
|
|
115090
115639
|
const handleLearningResponse = (save, scope, editedContent) => {
|
|
115091
115640
|
props.onLearningResponse(save, scope, editedContent);
|
|
115092
115641
|
};
|
|
@@ -115147,6 +115696,7 @@ function AppContent(props) {
|
|
|
115147
115696
|
var _el$7 = createElement("box");
|
|
115148
115697
|
setProp(_el$7, "flexDirection", "column");
|
|
115149
115698
|
setProp(_el$7, "flexGrow", 1);
|
|
115699
|
+
setProp(_el$7, "onMouseUp", () => copySelectionToClipboard());
|
|
115150
115700
|
insert(_el$7, createComponent2(Switch, {
|
|
115151
115701
|
get children() {
|
|
115152
115702
|
return [createComponent2(Match, {
|
|
@@ -115182,6 +115732,7 @@ function AppContent(props) {
|
|
|
115182
115732
|
onProviderSelect: handleProviderSelect,
|
|
115183
115733
|
onCascadeToggle: handleCascadeToggle,
|
|
115184
115734
|
onPermissionResponse: handlePermissionResponse,
|
|
115735
|
+
onPlanApprovalResponse: handlePlanApprovalResponse,
|
|
115185
115736
|
onLearningResponse: handleLearningResponse,
|
|
115186
115737
|
get onBrainSetJwtToken() {
|
|
115187
115738
|
return props.onBrainSetJwtToken;
|
|
@@ -115261,8 +115812,13 @@ function App(props) {
|
|
|
115261
115812
|
}
|
|
115262
115813
|
function tui(options2) {
|
|
115263
115814
|
return new Promise((resolve4) => {
|
|
115815
|
+
const {
|
|
115816
|
+
writeSync: writeSync2
|
|
115817
|
+
} = __require("fs");
|
|
115264
115818
|
const handleExit = (output) => {
|
|
115265
|
-
|
|
115819
|
+
try {
|
|
115820
|
+
writeSync2(1, TERMINAL_RESET);
|
|
115821
|
+
} catch {}
|
|
115266
115822
|
resolve4(output);
|
|
115267
115823
|
};
|
|
115268
115824
|
render(() => createComponent2(App, mergeProps3(options2, {
|
|
@@ -115392,6 +115948,7 @@ var renderApp = async (props) => {
|
|
|
115392
115948
|
},
|
|
115393
115949
|
onMCPAdd: props.handleMCPAdd ?? defaultHandleMCPAdd,
|
|
115394
115950
|
onPermissionResponse: props.handlePermissionResponse ?? (() => {}),
|
|
115951
|
+
onPlanApprovalResponse: props.handlePlanApprovalResponse ?? (() => {}),
|
|
115395
115952
|
onLearningResponse: props.handleLearningResponse ?? (() => {}),
|
|
115396
115953
|
onBrainSetJwtToken: props.handleBrainSetJwtToken ?? defaultHandleBrainSetJwtToken,
|
|
115397
115954
|
onBrainSetApiKey: props.handleBrainSetApiKey ?? defaultHandleBrainSetApiKey,
|
|
@@ -116514,4 +117071,4 @@ ${plan.steps.map((s) => `${s.id}. ${s.description}`).join(`
|
|
|
116514
117071
|
});
|
|
116515
117072
|
program2.parse(process.argv);
|
|
116516
117073
|
|
|
116517
|
-
//# debugId=
|
|
117074
|
+
//# debugId=AC0CA356430967FB64756E2164756E21
|
package/package.json
CHANGED
package/src/version.json
CHANGED