@hasna/oldpal 0.3.6 → 0.3.8
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 +337 -49
- package/dist/index.js.map +10 -9
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -30118,16 +30118,20 @@ class BuiltinCommands {
|
|
|
30118
30118
|
registerAll(loader) {
|
|
30119
30119
|
loader.register(this.helpCommand(loader));
|
|
30120
30120
|
loader.register(this.clearCommand());
|
|
30121
|
+
loader.register(this.newCommand());
|
|
30121
30122
|
loader.register(this.statusCommand());
|
|
30123
|
+
loader.register(this.tokensCommand());
|
|
30122
30124
|
loader.register(this.compactCommand());
|
|
30123
30125
|
loader.register(this.configCommand());
|
|
30124
30126
|
loader.register(this.initCommand());
|
|
30125
30127
|
loader.register(this.costCommand());
|
|
30126
30128
|
loader.register(this.modelCommand());
|
|
30129
|
+
loader.register(this.skillsCommand(loader));
|
|
30127
30130
|
loader.register(this.memoryCommand());
|
|
30128
30131
|
loader.register(this.bugCommand());
|
|
30129
30132
|
loader.register(this.prCommand());
|
|
30130
30133
|
loader.register(this.reviewCommand());
|
|
30134
|
+
loader.register(this.exitCommand());
|
|
30131
30135
|
}
|
|
30132
30136
|
updateTokenUsage(usage) {
|
|
30133
30137
|
Object.assign(this.tokenUsage, usage);
|
|
@@ -30203,6 +30207,117 @@ class BuiltinCommands {
|
|
|
30203
30207
|
}
|
|
30204
30208
|
};
|
|
30205
30209
|
}
|
|
30210
|
+
newCommand() {
|
|
30211
|
+
return {
|
|
30212
|
+
name: "new",
|
|
30213
|
+
description: "Start a new conversation",
|
|
30214
|
+
builtin: true,
|
|
30215
|
+
selfHandled: true,
|
|
30216
|
+
content: "",
|
|
30217
|
+
handler: async (args, context) => {
|
|
30218
|
+
context.clearMessages();
|
|
30219
|
+
this.tokenUsage.inputTokens = 0;
|
|
30220
|
+
this.tokenUsage.outputTokens = 0;
|
|
30221
|
+
this.tokenUsage.totalTokens = 0;
|
|
30222
|
+
context.emit("text", `Starting new conversation.
|
|
30223
|
+
`);
|
|
30224
|
+
context.emit("done");
|
|
30225
|
+
return { handled: true, clearConversation: true };
|
|
30226
|
+
}
|
|
30227
|
+
};
|
|
30228
|
+
}
|
|
30229
|
+
exitCommand() {
|
|
30230
|
+
return {
|
|
30231
|
+
name: "exit",
|
|
30232
|
+
description: "Exit oldpal",
|
|
30233
|
+
builtin: true,
|
|
30234
|
+
selfHandled: true,
|
|
30235
|
+
content: "",
|
|
30236
|
+
handler: async (args, context) => {
|
|
30237
|
+
context.emit("text", `Goodbye!
|
|
30238
|
+
`);
|
|
30239
|
+
context.emit("done");
|
|
30240
|
+
return { handled: true, exit: true };
|
|
30241
|
+
}
|
|
30242
|
+
};
|
|
30243
|
+
}
|
|
30244
|
+
tokensCommand() {
|
|
30245
|
+
return {
|
|
30246
|
+
name: "tokens",
|
|
30247
|
+
description: "Show token usage",
|
|
30248
|
+
builtin: true,
|
|
30249
|
+
selfHandled: true,
|
|
30250
|
+
content: "",
|
|
30251
|
+
handler: async (args, context) => {
|
|
30252
|
+
const usage = this.tokenUsage;
|
|
30253
|
+
const usedPercent = Math.round(usage.totalTokens / usage.maxContextTokens * 100);
|
|
30254
|
+
let message = `
|
|
30255
|
+
**Token Usage**
|
|
30256
|
+
|
|
30257
|
+
`;
|
|
30258
|
+
message += `Input: ${usage.inputTokens.toLocaleString()}
|
|
30259
|
+
`;
|
|
30260
|
+
message += `Output: ${usage.outputTokens.toLocaleString()}
|
|
30261
|
+
`;
|
|
30262
|
+
message += `Total: ${usage.totalTokens.toLocaleString()} / ${usage.maxContextTokens.toLocaleString()} (${usedPercent}%)
|
|
30263
|
+
`;
|
|
30264
|
+
const barLength = 30;
|
|
30265
|
+
const filledLength = Math.round(usedPercent / 100 * barLength);
|
|
30266
|
+
const bar = "\u2588".repeat(filledLength) + "\u2591".repeat(barLength - filledLength);
|
|
30267
|
+
message += `
|
|
30268
|
+
[${bar}] ${usedPercent}%
|
|
30269
|
+
`;
|
|
30270
|
+
context.emit("text", message);
|
|
30271
|
+
context.emit("done");
|
|
30272
|
+
return { handled: true };
|
|
30273
|
+
}
|
|
30274
|
+
};
|
|
30275
|
+
}
|
|
30276
|
+
skillsCommand(loader) {
|
|
30277
|
+
return {
|
|
30278
|
+
name: "skills",
|
|
30279
|
+
description: "List available skills",
|
|
30280
|
+
builtin: true,
|
|
30281
|
+
selfHandled: true,
|
|
30282
|
+
content: "",
|
|
30283
|
+
handler: async (args, context) => {
|
|
30284
|
+
let message = `
|
|
30285
|
+
**Available Skills**
|
|
30286
|
+
|
|
30287
|
+
`;
|
|
30288
|
+
message += `Skills are invoked with /skill-name [arguments]
|
|
30289
|
+
|
|
30290
|
+
`;
|
|
30291
|
+
message += `**Built-in Skills:**
|
|
30292
|
+
`;
|
|
30293
|
+
message += ` /brainstorm - Generate ideas on a topic
|
|
30294
|
+
`;
|
|
30295
|
+
message += ` /draft - Draft content (emails, docs, etc.)
|
|
30296
|
+
`;
|
|
30297
|
+
message += ` /research - Research a topic
|
|
30298
|
+
`;
|
|
30299
|
+
message += ` /summarize - Summarize text or content
|
|
30300
|
+
`;
|
|
30301
|
+
message += `
|
|
30302
|
+
**Connector Skills:**
|
|
30303
|
+
`;
|
|
30304
|
+
message += ` /calendar - Manage calendar events
|
|
30305
|
+
`;
|
|
30306
|
+
message += ` /email - Read and send emails
|
|
30307
|
+
`;
|
|
30308
|
+
message += ` /notes - Manage notes (Notion)
|
|
30309
|
+
`;
|
|
30310
|
+
message += ` /search - Search the web
|
|
30311
|
+
`;
|
|
30312
|
+
message += `
|
|
30313
|
+
Custom skills can be added in .oldpal/skills/
|
|
30314
|
+
`;
|
|
30315
|
+
context.emit("text", message);
|
|
30316
|
+
context.emit("done");
|
|
30317
|
+
return { handled: true };
|
|
30318
|
+
}
|
|
30319
|
+
};
|
|
30320
|
+
}
|
|
30206
30321
|
statusCommand() {
|
|
30207
30322
|
return {
|
|
30208
30323
|
name: "status",
|
|
@@ -30759,6 +30874,9 @@ class AgentLoop {
|
|
|
30759
30874
|
if (commandResult.clearConversation) {
|
|
30760
30875
|
this.context = new AgentContext;
|
|
30761
30876
|
}
|
|
30877
|
+
if (commandResult.exit) {
|
|
30878
|
+
this.emit({ type: "exit" });
|
|
30879
|
+
}
|
|
30762
30880
|
return;
|
|
30763
30881
|
}
|
|
30764
30882
|
if (commandResult.prompt) {
|
|
@@ -31256,19 +31374,78 @@ var build_default = TextInput;
|
|
|
31256
31374
|
|
|
31257
31375
|
// packages/terminal/src/components/Input.tsx
|
|
31258
31376
|
var jsx_dev_runtime = __toESM(require_jsx_dev_runtime(), 1);
|
|
31259
|
-
|
|
31377
|
+
var COMMANDS = [
|
|
31378
|
+
{ name: "/help", description: "show available commands" },
|
|
31379
|
+
{ name: "/clear", description: "clear the conversation" },
|
|
31380
|
+
{ name: "/new", description: "start a new conversation" },
|
|
31381
|
+
{ name: "/status", description: "show session status" },
|
|
31382
|
+
{ name: "/tokens", description: "show token usage" },
|
|
31383
|
+
{ name: "/cost", description: "show estimated API cost" },
|
|
31384
|
+
{ name: "/model", description: "show model information" },
|
|
31385
|
+
{ name: "/skills", description: "list available skills" },
|
|
31386
|
+
{ name: "/config", description: "show configuration" },
|
|
31387
|
+
{ name: "/init", description: "initialize oldpal in project" },
|
|
31388
|
+
{ name: "/compact", description: "summarize to save context" },
|
|
31389
|
+
{ name: "/memory", description: "show what AI remembers" },
|
|
31390
|
+
{ name: "/bug", description: "analyze and fix a bug" },
|
|
31391
|
+
{ name: "/pr", description: "create a pull request" },
|
|
31392
|
+
{ name: "/review", description: "review code changes" },
|
|
31393
|
+
{ name: "/exit", description: "exit oldpal" }
|
|
31394
|
+
];
|
|
31395
|
+
function Input({ onSubmit, isProcessing, queueLength = 0, commands }) {
|
|
31260
31396
|
const [value, setValue] = import_react23.useState("");
|
|
31397
|
+
const [selectedIndex, setSelectedIndex] = import_react23.useState(0);
|
|
31398
|
+
const allCommands = import_react23.useMemo(() => {
|
|
31399
|
+
const merged = [...COMMANDS];
|
|
31400
|
+
if (commands) {
|
|
31401
|
+
for (const cmd of commands) {
|
|
31402
|
+
if (!merged.find((c) => c.name === cmd.name)) {
|
|
31403
|
+
merged.push(cmd);
|
|
31404
|
+
}
|
|
31405
|
+
}
|
|
31406
|
+
}
|
|
31407
|
+
return merged.sort((a, b) => a.name.localeCompare(b.name));
|
|
31408
|
+
}, [commands]);
|
|
31409
|
+
const showAutocomplete = value.startsWith("/") && !value.includes(" ");
|
|
31410
|
+
const filteredCommands = import_react23.useMemo(() => {
|
|
31411
|
+
if (!showAutocomplete)
|
|
31412
|
+
return [];
|
|
31413
|
+
const search = value.toLowerCase();
|
|
31414
|
+
return allCommands.filter((cmd) => cmd.name.toLowerCase().startsWith(search));
|
|
31415
|
+
}, [value, showAutocomplete, allCommands]);
|
|
31261
31416
|
use_input_default((input, key) => {
|
|
31417
|
+
if (key.tab && showAutocomplete && filteredCommands.length > 0) {
|
|
31418
|
+
const selected = filteredCommands[selectedIndex] || filteredCommands[0];
|
|
31419
|
+
setValue(selected.name + " ");
|
|
31420
|
+
setSelectedIndex(0);
|
|
31421
|
+
return;
|
|
31422
|
+
}
|
|
31423
|
+
if (showAutocomplete && filteredCommands.length > 0) {
|
|
31424
|
+
if (key.downArrow) {
|
|
31425
|
+
setSelectedIndex((prev) => Math.min(prev + 1, filteredCommands.length - 1));
|
|
31426
|
+
return;
|
|
31427
|
+
}
|
|
31428
|
+
if (key.upArrow) {
|
|
31429
|
+
setSelectedIndex((prev) => Math.max(prev - 1, 0));
|
|
31430
|
+
return;
|
|
31431
|
+
}
|
|
31432
|
+
}
|
|
31262
31433
|
if (!value.trim())
|
|
31263
31434
|
return;
|
|
31264
31435
|
if ((key.shift || key.ctrl) && key.return) {
|
|
31265
31436
|
onSubmit(value, "interrupt");
|
|
31266
31437
|
setValue("");
|
|
31438
|
+
setSelectedIndex(0);
|
|
31267
31439
|
} else if (key.meta && key.return) {
|
|
31268
31440
|
onSubmit(value, "queue");
|
|
31269
31441
|
setValue("");
|
|
31442
|
+
setSelectedIndex(0);
|
|
31270
31443
|
}
|
|
31271
31444
|
});
|
|
31445
|
+
const handleChange = (newValue) => {
|
|
31446
|
+
setValue(newValue);
|
|
31447
|
+
setSelectedIndex(0);
|
|
31448
|
+
};
|
|
31272
31449
|
const handleSubmit = (submittedValue) => {
|
|
31273
31450
|
if (!submittedValue.trim())
|
|
31274
31451
|
return;
|
|
@@ -31278,6 +31455,7 @@ function Input({ onSubmit, isProcessing, queueLength = 0 }) {
|
|
|
31278
31455
|
onSubmit(submittedValue, "normal");
|
|
31279
31456
|
}
|
|
31280
31457
|
setValue("");
|
|
31458
|
+
setSelectedIndex(0);
|
|
31281
31459
|
};
|
|
31282
31460
|
let prompt = "\u276F";
|
|
31283
31461
|
let placeholder = "Type a message...";
|
|
@@ -31286,21 +31464,53 @@ function Input({ onSubmit, isProcessing, queueLength = 0 }) {
|
|
|
31286
31464
|
placeholder = queueLength > 0 ? "Type to queue another..." : "Type to queue (Enter) or interrupt (Shift+Enter)...";
|
|
31287
31465
|
}
|
|
31288
31466
|
return /* @__PURE__ */ jsx_dev_runtime.jsxDEV(Box_default, {
|
|
31467
|
+
flexDirection: "column",
|
|
31289
31468
|
marginTop: 1,
|
|
31290
31469
|
children: [
|
|
31291
|
-
/* @__PURE__ */ jsx_dev_runtime.jsxDEV(
|
|
31292
|
-
|
|
31470
|
+
showAutocomplete && filteredCommands.length > 0 && /* @__PURE__ */ jsx_dev_runtime.jsxDEV(Box_default, {
|
|
31471
|
+
flexDirection: "column",
|
|
31472
|
+
marginBottom: 1,
|
|
31473
|
+
marginLeft: 2,
|
|
31293
31474
|
children: [
|
|
31294
|
-
|
|
31295
|
-
|
|
31475
|
+
filteredCommands.slice(0, 8).map((cmd, i) => /* @__PURE__ */ jsx_dev_runtime.jsxDEV(Box_default, {
|
|
31476
|
+
children: [
|
|
31477
|
+
/* @__PURE__ */ jsx_dev_runtime.jsxDEV(Text, {
|
|
31478
|
+
color: i === selectedIndex ? "cyan" : undefined,
|
|
31479
|
+
children: cmd.name.padEnd(16)
|
|
31480
|
+
}, undefined, false, undefined, this),
|
|
31481
|
+
/* @__PURE__ */ jsx_dev_runtime.jsxDEV(Text, {
|
|
31482
|
+
dimColor: i !== selectedIndex,
|
|
31483
|
+
children: cmd.description
|
|
31484
|
+
}, undefined, false, undefined, this)
|
|
31485
|
+
]
|
|
31486
|
+
}, cmd.name, true, undefined, this)),
|
|
31487
|
+
filteredCommands.length > 8 && /* @__PURE__ */ jsx_dev_runtime.jsxDEV(Text, {
|
|
31488
|
+
dimColor: true,
|
|
31489
|
+
children: [
|
|
31490
|
+
" ...and ",
|
|
31491
|
+
filteredCommands.length - 8,
|
|
31492
|
+
" more"
|
|
31493
|
+
]
|
|
31494
|
+
}, undefined, true, undefined, this)
|
|
31296
31495
|
]
|
|
31297
31496
|
}, undefined, true, undefined, this),
|
|
31298
|
-
/* @__PURE__ */ jsx_dev_runtime.jsxDEV(
|
|
31299
|
-
|
|
31300
|
-
|
|
31301
|
-
|
|
31302
|
-
|
|
31303
|
-
|
|
31497
|
+
/* @__PURE__ */ jsx_dev_runtime.jsxDEV(Box_default, {
|
|
31498
|
+
children: [
|
|
31499
|
+
/* @__PURE__ */ jsx_dev_runtime.jsxDEV(Text, {
|
|
31500
|
+
dimColor: isProcessing,
|
|
31501
|
+
children: [
|
|
31502
|
+
prompt,
|
|
31503
|
+
" "
|
|
31504
|
+
]
|
|
31505
|
+
}, undefined, true, undefined, this),
|
|
31506
|
+
/* @__PURE__ */ jsx_dev_runtime.jsxDEV(build_default, {
|
|
31507
|
+
value,
|
|
31508
|
+
onChange: handleChange,
|
|
31509
|
+
onSubmit: handleSubmit,
|
|
31510
|
+
placeholder
|
|
31511
|
+
}, undefined, false, undefined, this)
|
|
31512
|
+
]
|
|
31513
|
+
}, undefined, true, undefined, this)
|
|
31304
31514
|
]
|
|
31305
31515
|
}, undefined, true, undefined, this);
|
|
31306
31516
|
}
|
|
@@ -31637,29 +31847,33 @@ function truncate(text, maxLength) {
|
|
|
31637
31847
|
// packages/terminal/src/components/Status.tsx
|
|
31638
31848
|
var jsx_dev_runtime4 = __toESM(require_jsx_dev_runtime(), 1);
|
|
31639
31849
|
function Status({ isProcessing, cwd: cwd2, queueLength = 0, tokenUsage }) {
|
|
31640
|
-
|
|
31641
|
-
|
|
31642
|
-
const queueInfo = queueLength > 0 ? ` | ${queueLength} queued` : "";
|
|
31643
|
-
let tokenInfo = "";
|
|
31644
|
-
if (tokenUsage && tokenUsage.totalTokens > 0) {
|
|
31645
|
-
const used = Math.round(tokenUsage.totalTokens / 1000);
|
|
31646
|
-
const max = Math.round(tokenUsage.maxContextTokens / 1000);
|
|
31850
|
+
let contextInfo = "";
|
|
31851
|
+
if (tokenUsage && tokenUsage.maxContextTokens > 0) {
|
|
31647
31852
|
const percent = Math.round(tokenUsage.totalTokens / tokenUsage.maxContextTokens * 100);
|
|
31648
|
-
|
|
31853
|
+
contextInfo = `${percent}% context used`;
|
|
31649
31854
|
}
|
|
31650
31855
|
return /* @__PURE__ */ jsx_dev_runtime4.jsxDEV(Box_default, {
|
|
31651
31856
|
marginTop: 1,
|
|
31652
|
-
|
|
31653
|
-
|
|
31654
|
-
|
|
31655
|
-
|
|
31656
|
-
|
|
31657
|
-
|
|
31658
|
-
|
|
31659
|
-
|
|
31660
|
-
|
|
31661
|
-
|
|
31662
|
-
|
|
31857
|
+
justifyContent: "space-between",
|
|
31858
|
+
children: [
|
|
31859
|
+
/* @__PURE__ */ jsx_dev_runtime4.jsxDEV(Text, {
|
|
31860
|
+
dimColor: true,
|
|
31861
|
+
children: "/help for commands"
|
|
31862
|
+
}, undefined, false, undefined, this),
|
|
31863
|
+
/* @__PURE__ */ jsx_dev_runtime4.jsxDEV(Box_default, {
|
|
31864
|
+
children: [
|
|
31865
|
+
isProcessing && /* @__PURE__ */ jsx_dev_runtime4.jsxDEV(Text, {
|
|
31866
|
+
dimColor: true,
|
|
31867
|
+
children: "esc to stop \xB7 "
|
|
31868
|
+
}, undefined, false, undefined, this),
|
|
31869
|
+
contextInfo && /* @__PURE__ */ jsx_dev_runtime4.jsxDEV(Text, {
|
|
31870
|
+
dimColor: true,
|
|
31871
|
+
children: contextInfo
|
|
31872
|
+
}, undefined, false, undefined, this)
|
|
31873
|
+
]
|
|
31874
|
+
}, undefined, true, undefined, this)
|
|
31875
|
+
]
|
|
31876
|
+
}, undefined, true, undefined, this);
|
|
31663
31877
|
}
|
|
31664
31878
|
|
|
31665
31879
|
// node_modules/.pnpm/ink-spinner@5.0.0_ink@5.2.1_@types+react@18.3.27_react-devtools-core@4.28.5_react@18.3.1__react@18.3.1/node_modules/ink-spinner/build/index.js
|
|
@@ -31906,8 +32120,74 @@ function useToolCallExpansion() {
|
|
|
31906
32120
|
return { isExpanded, setIsExpanded };
|
|
31907
32121
|
}
|
|
31908
32122
|
|
|
31909
|
-
// packages/terminal/src/components/
|
|
32123
|
+
// packages/terminal/src/components/WelcomeBanner.tsx
|
|
31910
32124
|
var jsx_dev_runtime8 = __toESM(require_jsx_dev_runtime(), 1);
|
|
32125
|
+
function WelcomeBanner({ version, model, directory }) {
|
|
32126
|
+
const homeDir = process.env.HOME || "";
|
|
32127
|
+
const displayDir = directory.startsWith(homeDir) ? "~" + directory.slice(homeDir.length) : directory;
|
|
32128
|
+
return /* @__PURE__ */ jsx_dev_runtime8.jsxDEV(Box_default, {
|
|
32129
|
+
flexDirection: "column",
|
|
32130
|
+
marginBottom: 1,
|
|
32131
|
+
children: [
|
|
32132
|
+
/* @__PURE__ */ jsx_dev_runtime8.jsxDEV(Box_default, {
|
|
32133
|
+
children: [
|
|
32134
|
+
/* @__PURE__ */ jsx_dev_runtime8.jsxDEV(Text, {
|
|
32135
|
+
color: "cyan",
|
|
32136
|
+
bold: true,
|
|
32137
|
+
children: ">"
|
|
32138
|
+
}, undefined, false, undefined, this),
|
|
32139
|
+
/* @__PURE__ */ jsx_dev_runtime8.jsxDEV(Text, {
|
|
32140
|
+
color: "cyan",
|
|
32141
|
+
bold: true,
|
|
32142
|
+
children: "_ "
|
|
32143
|
+
}, undefined, false, undefined, this),
|
|
32144
|
+
/* @__PURE__ */ jsx_dev_runtime8.jsxDEV(Text, {
|
|
32145
|
+
bold: true,
|
|
32146
|
+
children: "oldpal"
|
|
32147
|
+
}, undefined, false, undefined, this),
|
|
32148
|
+
/* @__PURE__ */ jsx_dev_runtime8.jsxDEV(Text, {
|
|
32149
|
+
dimColor: true,
|
|
32150
|
+
children: [
|
|
32151
|
+
" (v",
|
|
32152
|
+
version,
|
|
32153
|
+
")"
|
|
32154
|
+
]
|
|
32155
|
+
}, undefined, true, undefined, this)
|
|
32156
|
+
]
|
|
32157
|
+
}, undefined, true, undefined, this),
|
|
32158
|
+
/* @__PURE__ */ jsx_dev_runtime8.jsxDEV(Box_default, {
|
|
32159
|
+
marginTop: 1,
|
|
32160
|
+
children: [
|
|
32161
|
+
/* @__PURE__ */ jsx_dev_runtime8.jsxDEV(Text, {
|
|
32162
|
+
dimColor: true,
|
|
32163
|
+
children: "model: "
|
|
32164
|
+
}, undefined, false, undefined, this),
|
|
32165
|
+
/* @__PURE__ */ jsx_dev_runtime8.jsxDEV(Text, {
|
|
32166
|
+
children: model
|
|
32167
|
+
}, undefined, false, undefined, this),
|
|
32168
|
+
/* @__PURE__ */ jsx_dev_runtime8.jsxDEV(Text, {
|
|
32169
|
+
dimColor: true,
|
|
32170
|
+
children: " /model to change"
|
|
32171
|
+
}, undefined, false, undefined, this)
|
|
32172
|
+
]
|
|
32173
|
+
}, undefined, true, undefined, this),
|
|
32174
|
+
/* @__PURE__ */ jsx_dev_runtime8.jsxDEV(Box_default, {
|
|
32175
|
+
children: [
|
|
32176
|
+
/* @__PURE__ */ jsx_dev_runtime8.jsxDEV(Text, {
|
|
32177
|
+
dimColor: true,
|
|
32178
|
+
children: "directory: "
|
|
32179
|
+
}, undefined, false, undefined, this),
|
|
32180
|
+
/* @__PURE__ */ jsx_dev_runtime8.jsxDEV(Text, {
|
|
32181
|
+
children: displayDir
|
|
32182
|
+
}, undefined, false, undefined, this)
|
|
32183
|
+
]
|
|
32184
|
+
}, undefined, true, undefined, this)
|
|
32185
|
+
]
|
|
32186
|
+
}, undefined, true, undefined, this);
|
|
32187
|
+
}
|
|
32188
|
+
|
|
32189
|
+
// packages/terminal/src/components/App.tsx
|
|
32190
|
+
var jsx_dev_runtime9 = __toESM(require_jsx_dev_runtime(), 1);
|
|
31911
32191
|
function App2({ cwd: cwd2 }) {
|
|
31912
32192
|
const { exit } = use_app_default();
|
|
31913
32193
|
const [client, setClient] = import_react27.useState(null);
|
|
@@ -32004,6 +32284,8 @@ function App2({ cwd: cwd2 }) {
|
|
|
32004
32284
|
} else if (chunk.type === "error" && chunk.error) {
|
|
32005
32285
|
setError(chunk.error);
|
|
32006
32286
|
setIsProcessing(false);
|
|
32287
|
+
} else if (chunk.type === "exit") {
|
|
32288
|
+
exit();
|
|
32007
32289
|
} else if (chunk.type === "usage" && chunk.usage) {
|
|
32008
32290
|
setTokenUsage(chunk.usage);
|
|
32009
32291
|
setCurrentTurnTokens((prev) => prev + (chunk.usage?.outputTokens || 0));
|
|
@@ -32193,10 +32475,10 @@ function App2({ cwd: cwd2 }) {
|
|
|
32193
32475
|
await client.send(trimmedInput);
|
|
32194
32476
|
}, [client, isProcessing]);
|
|
32195
32477
|
if (isInitializing) {
|
|
32196
|
-
return /* @__PURE__ */
|
|
32478
|
+
return /* @__PURE__ */ jsx_dev_runtime9.jsxDEV(Box_default, {
|
|
32197
32479
|
flexDirection: "column",
|
|
32198
32480
|
padding: 1,
|
|
32199
|
-
children: /* @__PURE__ */
|
|
32481
|
+
children: /* @__PURE__ */ jsx_dev_runtime9.jsxDEV(Spinner2, {
|
|
32200
32482
|
label: "Initializing..."
|
|
32201
32483
|
}, undefined, false, undefined, this)
|
|
32202
32484
|
}, undefined, false, undefined, this);
|
|
@@ -32206,12 +32488,18 @@ function App2({ cwd: cwd2 }) {
|
|
|
32206
32488
|
return { toolCall: e.toolCall, result };
|
|
32207
32489
|
});
|
|
32208
32490
|
const isThinking = isProcessing && !currentResponse && !currentToolCall && toolCallEntries.length === 0;
|
|
32209
|
-
|
|
32491
|
+
const showWelcome = messages.length === 0 && !isProcessing;
|
|
32492
|
+
return /* @__PURE__ */ jsx_dev_runtime9.jsxDEV(Box_default, {
|
|
32210
32493
|
flexDirection: "column",
|
|
32211
32494
|
padding: 1,
|
|
32212
32495
|
children: [
|
|
32213
|
-
|
|
32214
|
-
|
|
32496
|
+
showWelcome && /* @__PURE__ */ jsx_dev_runtime9.jsxDEV(WelcomeBanner, {
|
|
32497
|
+
version: "0.3.8",
|
|
32498
|
+
model: "claude-sonnet-4-20250514",
|
|
32499
|
+
directory: cwd2
|
|
32500
|
+
}, undefined, false, undefined, this),
|
|
32501
|
+
scrollOffset > 0 && /* @__PURE__ */ jsx_dev_runtime9.jsxDEV(Box_default, {
|
|
32502
|
+
children: /* @__PURE__ */ jsx_dev_runtime9.jsxDEV(Text, {
|
|
32215
32503
|
dimColor: true,
|
|
32216
32504
|
children: [
|
|
32217
32505
|
"\u2191 ",
|
|
@@ -32220,7 +32508,7 @@ function App2({ cwd: cwd2 }) {
|
|
|
32220
32508
|
]
|
|
32221
32509
|
}, undefined, true, undefined, this)
|
|
32222
32510
|
}, undefined, false, undefined, this),
|
|
32223
|
-
/* @__PURE__ */
|
|
32511
|
+
/* @__PURE__ */ jsx_dev_runtime9.jsxDEV(Messages4, {
|
|
32224
32512
|
messages,
|
|
32225
32513
|
currentResponse: isProcessing ? currentResponse : undefined,
|
|
32226
32514
|
currentToolCall: undefined,
|
|
@@ -32229,14 +32517,14 @@ function App2({ cwd: cwd2 }) {
|
|
|
32229
32517
|
scrollOffset,
|
|
32230
32518
|
maxVisible: maxVisibleMessages
|
|
32231
32519
|
}, undefined, false, undefined, this),
|
|
32232
|
-
isProcessing && toolCallEntries.length > 0 && /* @__PURE__ */
|
|
32520
|
+
isProcessing && toolCallEntries.length > 0 && /* @__PURE__ */ jsx_dev_runtime9.jsxDEV(ToolCallBox, {
|
|
32233
32521
|
entries: toolCallEntries,
|
|
32234
32522
|
maxVisible: 3,
|
|
32235
32523
|
isExpanded: toolsExpanded
|
|
32236
32524
|
}, undefined, false, undefined, this),
|
|
32237
|
-
messageQueue.length > 0 && /* @__PURE__ */
|
|
32525
|
+
messageQueue.length > 0 && /* @__PURE__ */ jsx_dev_runtime9.jsxDEV(Box_default, {
|
|
32238
32526
|
marginY: 1,
|
|
32239
|
-
children: /* @__PURE__ */
|
|
32527
|
+
children: /* @__PURE__ */ jsx_dev_runtime9.jsxDEV(Text, {
|
|
32240
32528
|
dimColor: true,
|
|
32241
32529
|
children: [
|
|
32242
32530
|
messageQueue.length,
|
|
@@ -32246,9 +32534,9 @@ function App2({ cwd: cwd2 }) {
|
|
|
32246
32534
|
]
|
|
32247
32535
|
}, undefined, true, undefined, this)
|
|
32248
32536
|
}, undefined, false, undefined, this),
|
|
32249
|
-
error && /* @__PURE__ */
|
|
32537
|
+
error && /* @__PURE__ */ jsx_dev_runtime9.jsxDEV(Box_default, {
|
|
32250
32538
|
marginY: 1,
|
|
32251
|
-
children: /* @__PURE__ */
|
|
32539
|
+
children: /* @__PURE__ */ jsx_dev_runtime9.jsxDEV(Text, {
|
|
32252
32540
|
color: "red",
|
|
32253
32541
|
children: [
|
|
32254
32542
|
"Error: ",
|
|
@@ -32256,18 +32544,18 @@ function App2({ cwd: cwd2 }) {
|
|
|
32256
32544
|
]
|
|
32257
32545
|
}, undefined, true, undefined, this)
|
|
32258
32546
|
}, undefined, false, undefined, this),
|
|
32259
|
-
/* @__PURE__ */
|
|
32547
|
+
/* @__PURE__ */ jsx_dev_runtime9.jsxDEV(ProcessingIndicator, {
|
|
32260
32548
|
isProcessing,
|
|
32261
32549
|
startTime: processingStartTime,
|
|
32262
32550
|
tokenCount: currentTurnTokens,
|
|
32263
32551
|
isThinking
|
|
32264
32552
|
}, undefined, false, undefined, this),
|
|
32265
|
-
/* @__PURE__ */
|
|
32553
|
+
/* @__PURE__ */ jsx_dev_runtime9.jsxDEV(Input, {
|
|
32266
32554
|
onSubmit: handleSubmit,
|
|
32267
32555
|
isProcessing,
|
|
32268
32556
|
queueLength: messageQueue.length
|
|
32269
32557
|
}, undefined, false, undefined, this),
|
|
32270
|
-
/* @__PURE__ */
|
|
32558
|
+
/* @__PURE__ */ jsx_dev_runtime9.jsxDEV(Status, {
|
|
32271
32559
|
isProcessing,
|
|
32272
32560
|
cwd: cwd2,
|
|
32273
32561
|
queueLength: messageQueue.length,
|
|
@@ -32278,7 +32566,7 @@ function App2({ cwd: cwd2 }) {
|
|
|
32278
32566
|
}
|
|
32279
32567
|
|
|
32280
32568
|
// packages/terminal/src/index.tsx
|
|
32281
|
-
var
|
|
32569
|
+
var jsx_dev_runtime10 = __toESM(require_jsx_dev_runtime(), 1);
|
|
32282
32570
|
var args = process.argv.slice(2);
|
|
32283
32571
|
var options = {
|
|
32284
32572
|
cwd: process.cwd(),
|
|
@@ -32286,7 +32574,7 @@ var options = {
|
|
|
32286
32574
|
help: args.includes("--help") || args.includes("-h")
|
|
32287
32575
|
};
|
|
32288
32576
|
if (options.version) {
|
|
32289
|
-
console.log("oldpal v0.3.
|
|
32577
|
+
console.log("oldpal v0.3.8");
|
|
32290
32578
|
process.exit(0);
|
|
32291
32579
|
}
|
|
32292
32580
|
if (options.help) {
|
|
@@ -32310,11 +32598,11 @@ In interactive mode:
|
|
|
32310
32598
|
`);
|
|
32311
32599
|
process.exit(0);
|
|
32312
32600
|
}
|
|
32313
|
-
var { waitUntilExit } = render_default(/* @__PURE__ */
|
|
32601
|
+
var { waitUntilExit } = render_default(/* @__PURE__ */ jsx_dev_runtime10.jsxDEV(App2, {
|
|
32314
32602
|
cwd: options.cwd
|
|
32315
32603
|
}, undefined, false, undefined, this));
|
|
32316
32604
|
waitUntilExit().then(() => {
|
|
32317
32605
|
process.exit(0);
|
|
32318
32606
|
});
|
|
32319
32607
|
|
|
32320
|
-
//# debugId=
|
|
32608
|
+
//# debugId=13C80C7BB59BEAC264756E2164756E21
|