@pentoshi/clai 0.2.4 → 0.2.6

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/repl.js CHANGED
@@ -1,3 +1,4 @@
1
+ import { emitKeypressEvents } from "node:readline";
1
2
  import readline from "node:readline/promises";
2
3
  import { stdin as input, stdout as output } from "node:process";
3
4
  import chalk from "chalk";
@@ -9,6 +10,7 @@ import { listSessions, saveSession } from "./store/history.js";
9
10
  import { assertProvider, defaultModels } from "./llm/provider.js";
10
11
  import { runUpdate, checkForUpdateSilent, getCurrentVersion } from "./commands/update.js";
11
12
  import { renderBanner, renderSessionInfo, renderSuggestions, renderModeSwitch, renderProviderSwitch, PROMPT, } from "./ui/banner.js";
13
+ import { clearThinking, createThinkingStreamParser, getLastThinking, rememberThinkingFromText, renderThinkingBlock, renderThinkingSummary, renderThinkingToggleMessage, } from "./ui/thinking.js";
12
14
  // ── Well-known models per provider ─────────────────────────────────────────
13
15
  const knownModels = {
14
16
  groq: [
@@ -52,85 +54,62 @@ const knownModels = {
52
54
  };
53
55
  // ── Abort controller for streaming cancellation ─────────────────────────────
54
56
  let currentAbortController = null;
57
+ class AbortRunError extends Error {
58
+ constructor() {
59
+ super("Aborted.");
60
+ this.name = "AbortRunError";
61
+ }
62
+ }
55
63
  function splitCommand(line) {
56
64
  return (line
57
65
  .match(/(?:[^\s"]+|"[^"]*")+/g)
58
66
  ?.map((part) => part.replace(/^"|"$/g, "")) ?? []);
59
67
  }
60
- // ── Strip / collapse <think> blocks ─────────────────────────────────────────
61
- let lastThinkContent = "";
62
- function stripThinking(text) {
63
- const thinkBlocks = [];
64
- const visible = text.replace(/<think>([\s\S]*?)<\/think>/gi, (_, content) => {
65
- thinkBlocks.push(content.trim());
66
- return "";
67
- }).trim();
68
- const hasThinking = thinkBlocks.length > 0;
69
- const thinkContent = thinkBlocks.join("\n\n");
70
- return { visible, hasThinking, thinkContent };
71
- }
72
68
  // Stream a response while hiding <think> blocks and handling ESC abort
73
- async function streamWithAbort(run) {
74
- const ac = new AbortController();
75
- currentAbortController = ac;
76
- lastThinkContent = "";
77
- let buffer = "";
78
- let visibleBuffer = "";
79
- let inThink = false;
80
- let thinkBuffer = "";
69
+ async function streamWithAbort(run, signal) {
70
+ let sawToken = false;
71
+ const parser = createThinkingStreamParser((text) => process.stdout.write(text));
81
72
  const onToken = (token) => {
82
- buffer += token;
83
- // Stream-parse <think> blocks on the fly
84
- let remaining = token;
85
- while (remaining.length > 0) {
86
- if (inThink) {
87
- const closeIdx = remaining.indexOf("</think>");
88
- if (closeIdx >= 0) {
89
- thinkBuffer += remaining.slice(0, closeIdx);
90
- lastThinkContent = thinkBuffer.trim();
91
- inThink = false;
92
- remaining = remaining.slice(closeIdx + 8);
93
- }
94
- else {
95
- thinkBuffer += remaining;
96
- remaining = "";
97
- }
98
- }
99
- else {
100
- const openIdx = remaining.indexOf("<think>");
101
- if (openIdx >= 0) {
102
- const before = remaining.slice(0, openIdx);
103
- if (before) {
104
- process.stdout.write(before);
105
- visibleBuffer += before;
106
- }
107
- inThink = true;
108
- thinkBuffer = "";
109
- remaining = remaining.slice(openIdx + 7);
110
- }
111
- else {
112
- process.stdout.write(remaining);
113
- visibleBuffer += remaining;
114
- remaining = "";
115
- }
116
- }
117
- }
73
+ sawToken = true;
74
+ parser.push(token);
118
75
  };
119
76
  try {
120
- const raw = await run(ac.signal, onToken);
121
- if (lastThinkContent) {
122
- process.stdout.write(chalk.dim(" [thinking hidden — Ctrl+T to show]\n"));
77
+ const raw = await run(signal, onToken);
78
+ const result = sawToken ? parser.finish() : rememberThinkingFromText(raw);
79
+ if (!sawToken && result.visible)
80
+ process.stdout.write(result.visible);
81
+ if (result.hasThinking) {
82
+ const prefix = result.visible && !result.visible.endsWith("\n") ? "\n" : "";
83
+ process.stdout.write(`${prefix}${renderThinkingSummary(result.thinkContent)}\n`);
123
84
  }
124
- return visibleBuffer || raw;
85
+ return result.visible;
125
86
  }
126
87
  catch (err) {
127
- if (ac.signal.aborted) {
88
+ const result = parser.finish();
89
+ if (signal.aborted) {
128
90
  process.stdout.write(chalk.yellow("\n ⏹ Aborted.\n"));
129
- return visibleBuffer;
91
+ return result.visible;
130
92
  }
131
93
  throw err;
132
94
  }
95
+ }
96
+ async function withAbortableInput(run) {
97
+ const ac = new AbortController();
98
+ currentAbortController = ac;
99
+ if (input.isTTY)
100
+ input.setRawMode(true);
101
+ try {
102
+ return await run(ac.signal);
103
+ }
104
+ catch (error) {
105
+ if (ac.signal.aborted || (error instanceof Error && error.name === "AbortError")) {
106
+ throw new AbortRunError();
107
+ }
108
+ throw error;
109
+ }
133
110
  finally {
111
+ if (input.isTTY)
112
+ input.setRawMode(false);
134
113
  currentAbortController = null;
135
114
  }
136
115
  }
@@ -149,6 +128,7 @@ function help() {
149
128
  ["/save <name>", "save session"],
150
129
  ["/cwd <path>", "change working directory"],
151
130
  ["/allow <tool>", "allow a tool for session"],
131
+ ["/think", "show thinking from last response"],
152
132
  ["/update", "check for updates"],
153
133
  ["/exit", "quit"],
154
134
  ["/help", "list commands"],
@@ -157,7 +137,7 @@ function help() {
157
137
  const lines = cmds
158
138
  .map((c) => ` ${chalk.cyan(c[0].padEnd(maxCmd + 2))}${chalk.dim(c[1])}`)
159
139
  .join("\n");
160
- return lines + chalk.dim("\n\n ESC / Ctrl+C abort current response");
140
+ return lines + chalk.dim("\n\n ESC / Ctrl+C abort current response │ Ctrl+T toggle thinking");
161
141
  }
162
142
  function showModelPicker(provider) {
163
143
  const models = knownModels[provider] ?? [];
@@ -284,10 +264,9 @@ async function handleSlash(line, state) {
284
264
  }
285
265
  case "/think":
286
266
  case "/thinking": {
287
- if (lastThinkContent) {
288
- console.log(chalk.dim("─── thinking ──────────────────────────────────"));
289
- console.log(chalk.dim(lastThinkContent));
290
- console.log(chalk.dim("───────────────────────────────────────────────"));
267
+ const thinking = getLastThinking();
268
+ if (thinking) {
269
+ console.log(renderThinkingBlock(thinking));
291
270
  }
292
271
  else {
293
272
  console.log(chalk.dim(" No thinking from last response."));
@@ -310,22 +289,41 @@ async function handleSlash(line, state) {
310
289
  }
311
290
  export async function startRepl(options = {}) {
312
291
  const config = getConfig();
292
+ const provider = options.provider ? assertProvider(options.provider) : config.defaultProvider;
313
293
  const state = {
314
294
  mode: options.mode ?? config.defaultMode,
315
- provider: options.provider ?? config.defaultProvider,
316
- model: options.model ?? config.defaultModel,
295
+ provider,
296
+ model: options.model ?? getProviderModel(provider),
317
297
  messages: [],
318
298
  };
319
- if (options.provider) {
320
- state.provider = assertProvider(options.provider);
321
- }
322
299
  const rl = readline.createInterface({ input, output });
323
- // ── ESC / Ctrl+C abort ──────────────────────────────────────────────────
300
+ emitKeypressEvents(input, rl);
301
+ // ── ESC / Ctrl+C abort; Ctrl+T toggles hidden thinking ──────────────────
324
302
  if (process.stdin.isTTY) {
325
303
  process.stdin.setRawMode(false); // keep readline in control
326
304
  }
305
+ const handleThinkingShortcut = () => {
306
+ process.stdout.write(`\n${renderThinkingToggleMessage()}\n`);
307
+ };
308
+ const handleKeypress = (_sequence, key) => {
309
+ if (key.ctrl && key.name === "t")
310
+ handleThinkingShortcut();
311
+ if ((key.name === "escape" || (key.ctrl && key.name === "c")) && currentAbortController) {
312
+ currentAbortController.abort();
313
+ }
314
+ };
315
+ input.on("keypress", handleKeypress);
316
+ const siginfo = "SIGINFO";
317
+ let siginfoRegistered = false;
318
+ try {
319
+ process.on(siginfo, handleThinkingShortcut);
320
+ siginfoRegistered = true;
321
+ }
322
+ catch {
323
+ // SIGINFO is macOS/BSD-specific; other platforms can still use /think.
324
+ }
327
325
  // Ctrl+C while streaming → abort; otherwise readline handles it
328
- process.on("SIGINT", () => {
326
+ const handleSigint = () => {
329
327
  if (currentAbortController) {
330
328
  currentAbortController.abort();
331
329
  }
@@ -334,7 +332,8 @@ export async function startRepl(options = {}) {
334
332
  console.log();
335
333
  process.exit(0);
336
334
  }
337
- });
335
+ };
336
+ process.on("SIGINT", handleSigint);
338
337
  // ── Startup banner ──────────────────────────────────────────────────────
339
338
  console.log(renderBanner(getCurrentVersion()));
340
339
  console.log(renderSessionInfo({
@@ -344,7 +343,7 @@ export async function startRepl(options = {}) {
344
343
  mode: state.mode,
345
344
  }));
346
345
  console.log(renderSuggestions());
347
- console.log(chalk.dim(" ESC / Ctrl+C to abort a response │ /model to list models │ /think to show thinking\n"));
346
+ console.log(chalk.dim(" ESC / Ctrl+C to abort a response │ /model to list models │ Ctrl+T or /think for thinking\n"));
348
347
  // Non-blocking update check
349
348
  checkForUpdateSilent();
350
349
  try {
@@ -359,33 +358,44 @@ export async function startRepl(options = {}) {
359
358
  continue;
360
359
  }
361
360
  try {
361
+ clearThinking();
362
+ let assistantContent = "";
362
363
  if (state.mode === "ask") {
363
- await streamWithAbort(async (signal, onToken) => {
364
+ assistantContent = await withAbortableInput(async (signal) => streamWithAbort(async (runSignal, onToken) => {
364
365
  return await runAskStream(line, onToken, {
365
366
  provider: state.provider,
366
367
  model: state.model,
367
368
  history: state.messages,
368
- signal,
369
+ signal: runSignal,
369
370
  });
370
- });
371
+ }, signal));
371
372
  process.stdout.write("\n");
372
373
  }
373
374
  else {
374
- await runAgent(line, {
375
+ assistantContent = await withAbortableInput(async (signal) => runAgent(line, {
375
376
  provider: state.provider,
376
377
  model: state.model,
377
378
  history: state.messages,
378
- });
379
+ signal,
380
+ }));
379
381
  }
380
382
  console.log();
381
- state.messages.push({ role: "user", content: line }, { role: "assistant", content: "" });
383
+ state.messages.push({ role: "user", content: line }, { role: "assistant", content: assistantContent });
382
384
  }
383
385
  catch (error) {
386
+ if (error instanceof AbortRunError) {
387
+ process.stdout.write(chalk.yellow("\n ⏹ Aborted.\n"));
388
+ continue;
389
+ }
384
390
  console.error(chalk.red(error instanceof Error ? error.message : String(error)));
385
391
  }
386
392
  }
387
393
  }
388
394
  finally {
395
+ input.off("keypress", handleKeypress);
396
+ process.off("SIGINT", handleSigint);
397
+ if (siginfoRegistered)
398
+ process.off(siginfo, handleThinkingShortcut);
389
399
  if (state.messages.length > 0) {
390
400
  await saveSession(state.messages, `repl-${new Date().toISOString()}`);
391
401
  }
package/dist/repl.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"repl.js","sourceRoot":"","sources":["../src/repl.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"repl.js","sourceRoot":"","sources":["../src/repl.ts"],"names":[],"mappings":"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"}
@@ -14,6 +14,7 @@ const defaults = {
14
14
  };
15
15
  const store = new Conf({
16
16
  projectName: 'clai',
17
+ ...(process.env.CLAI_CONFIG_DIR ? { cwd: process.env.CLAI_CONFIG_DIR } : {}),
17
18
  defaults,
18
19
  });
19
20
  export function getConfig() {
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/store/config.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAC;AAExB,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAenD,MAAM,QAAQ,GAAe;IAC3B,eAAe,EAAE,MAAM;IACvB,YAAY,EAAE,aAAa,CAAC,IAAI;IAChC,WAAW,EAAE,KAAK;IAClB,cAAc,EAAE,EAAE;IAClB,gBAAgB,EAAE,EAAE;IACpB,iBAAiB,EAAE,KAAK;IACxB,YAAY,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC;IAC7B,UAAU,EAAE,wBAAwB;IACpC,SAAS,EAAE,KAAK;IAChB,eAAe,EAAE,CAAC;CACnB,CAAC;AAEF,MAAM,KAAK,GAAG,IAAI,IAAI,CAAa;IACjC,WAAW,EAAE,MAAM;IACnB,QAAQ;CACT,CAAC,CAAC;AAEH,MAAM,UAAU,SAAS;IACvB,OAAO,KAAK,CAAC,KAAK,CAAC;AACrB,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,KAA0B;IACrD,MAAM,IAAI,GAAG,EAAE,GAAG,SAAS,EAAE,EAAE,GAAG,KAAK,EAAuB,CAAC;IAC/D,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC;IACnB,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,QAAoB;IACrD,MAAM,KAAK,GAAG,gBAAgB,CAAC,QAAQ,CAAC,CAAC;IACzC,OAAO,YAAY,CAAC,EAAE,eAAe,EAAE,QAAQ,EAAE,YAAY,EAAE,KAAK,EAAE,CAAC,CAAC;AAC1E,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,IAAU;IACvC,OAAO,YAAY,CAAC,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC;AAC7C,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,QAAoB,EAAE,KAAa;IAClE,MAAM,OAAO,GAAG,SAAS,EAAE,CAAC;IAC5B,MAAM,cAAc,GAAG,EAAE,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC;IACxE,OAAO,YAAY,CAAC,EAAE,cAAc,EAAE,YAAY,EAAE,KAAK,EAAE,CAAC,CAAC;AAC/D,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,QAAoB;IACnD,MAAM,UAAU,GAAG,SAAS,EAAE,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;IACxD,OAAO,UAAU,IAAI,aAAa,CAAC,QAAQ,CAAC,CAAC;AAC/C,CAAC;AAED,MAAM,UAAU,aAAa;IAC3B,OAAO,KAAK,CAAC,IAAI,CAAC;AACpB,CAAC"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/store/config.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAC;AAExB,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAenD,MAAM,QAAQ,GAAe;IAC3B,eAAe,EAAE,MAAM;IACvB,YAAY,EAAE,aAAa,CAAC,IAAI;IAChC,WAAW,EAAE,KAAK;IAClB,cAAc,EAAE,EAAE;IAClB,gBAAgB,EAAE,EAAE;IACpB,iBAAiB,EAAE,KAAK;IACxB,YAAY,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC;IAC7B,UAAU,EAAE,wBAAwB;IACpC,SAAS,EAAE,KAAK;IAChB,eAAe,EAAE,CAAC;CACnB,CAAC;AAEF,MAAM,KAAK,GAAG,IAAI,IAAI,CAAa;IACjC,WAAW,EAAE,MAAM;IACnB,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,OAAO,CAAC,GAAG,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IAC5E,QAAQ;CACT,CAAC,CAAC;AAEH,MAAM,UAAU,SAAS;IACvB,OAAO,KAAK,CAAC,KAAK,CAAC;AACrB,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,KAA0B;IACrD,MAAM,IAAI,GAAG,EAAE,GAAG,SAAS,EAAE,EAAE,GAAG,KAAK,EAAuB,CAAC;IAC/D,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC;IACnB,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,QAAoB;IACrD,MAAM,KAAK,GAAG,gBAAgB,CAAC,QAAQ,CAAC,CAAC;IACzC,OAAO,YAAY,CAAC,EAAE,eAAe,EAAE,QAAQ,EAAE,YAAY,EAAE,KAAK,EAAE,CAAC,CAAC;AAC1E,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,IAAU;IACvC,OAAO,YAAY,CAAC,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC;AAC7C,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,QAAoB,EAAE,KAAa;IAClE,MAAM,OAAO,GAAG,SAAS,EAAE,CAAC;IAC5B,MAAM,cAAc,GAAG,EAAE,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC;IACxE,OAAO,YAAY,CAAC,EAAE,cAAc,EAAE,YAAY,EAAE,KAAK,EAAE,CAAC,CAAC;AAC/D,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,QAAoB;IACnD,MAAM,UAAU,GAAG,SAAS,EAAE,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;IACxD,OAAO,UAAU,IAAI,aAAa,CAAC,QAAQ,CAAC,CAAC;AAC/C,CAAC;AAED,MAAM,UAAU,aAAa;IAC3B,OAAO,KAAK,CAAC,IAAI,CAAC;AACpB,CAAC"}
@@ -1,5 +1,8 @@
1
1
  import type { ToolCall, ToolResult } from '../types.js';
2
- export type ToolHandler = (args: Record<string, unknown>) => Promise<ToolResult>;
2
+ export interface ToolRunOptions {
3
+ signal?: AbortSignal | undefined;
4
+ }
5
+ export type ToolHandler = (args: Record<string, unknown>, options?: ToolRunOptions) => Promise<ToolResult>;
3
6
  export declare const toolRegistry: Record<string, ToolHandler>;
4
7
  export declare function availableToolNames(): string[];
5
- export declare function runToolCall(call: ToolCall): Promise<ToolResult>;
8
+ export declare function runToolCall(call: ToolCall, options?: ToolRunOptions): Promise<ToolResult>;
@@ -19,8 +19,8 @@ function optionalNumber(args, key) {
19
19
  return typeof value === 'number' ? value : undefined;
20
20
  }
21
21
  export const toolRegistry = {
22
- async 'shell.exec'(args) {
23
- return shellExec({ command: requireString(args, 'command'), cwd: optionalString(args, 'cwd'), timeoutMs: optionalNumber(args, 'timeoutMs') });
22
+ async 'shell.exec'(args, options) {
23
+ return shellExec({ command: requireString(args, 'command'), cwd: optionalString(args, 'cwd'), timeoutMs: optionalNumber(args, 'timeoutMs'), signal: options?.signal });
24
24
  },
25
25
  async 'fs.read'(args) {
26
26
  return fsRead(requireString(args, 'path'));
@@ -34,16 +34,16 @@ export const toolRegistry = {
34
34
  async 'fs.search'(args) {
35
35
  return fsSearch(requireString(args, 'pattern'), optionalString(args, 'path'));
36
36
  },
37
- async 'pkg.install'(args) {
37
+ async 'pkg.install'(args, options) {
38
38
  const tool = requireString(args, 'tool');
39
39
  const pkgmgr = await detectPackageManager();
40
- return shellExec({ command: pkgmgr.installCommand(tool) });
40
+ return shellExec({ command: pkgmgr.installCommand(tool), signal: options?.signal });
41
41
  },
42
- async 'net.scan'(args) {
42
+ async 'net.scan'(args, options) {
43
43
  const target = requireString(args, 'target');
44
44
  const ports = optionalString(args, 'ports');
45
45
  const command = ports ? `nmap -p ${ports} ${target}` : `nmap ${target}`;
46
- return shellExec({ command, timeoutMs: 120_000 });
46
+ return shellExec({ command, timeoutMs: 120_000, signal: options?.signal });
47
47
  },
48
48
  async 'http.fetch'(args) {
49
49
  return httpFetch(requireString(args, 'url'), {
@@ -55,25 +55,33 @@ export const toolRegistry = {
55
55
  async sysinfo() {
56
56
  return { ok: true, output: JSON.stringify(detectSystem(), null, 2) };
57
57
  },
58
- async 'pentest.recon'(args) {
58
+ async 'pentest.recon'(args, options) {
59
59
  const target = requireString(args, 'target');
60
60
  const commands = [`whois ${target}`, `dig ${target}`, `nmap --top-ports 100 ${target}`];
61
61
  const outputs = [];
62
62
  for (const command of commands) {
63
- const result = await shellExec({ command, timeoutMs: 120_000 });
63
+ if (options?.signal?.aborted)
64
+ break;
65
+ const result = await shellExec({ command, timeoutMs: 120_000, signal: options?.signal });
64
66
  outputs.push(`$ ${command}\n${result.output}`);
67
+ if (options?.signal?.aborted)
68
+ break;
65
69
  }
66
- return { ok: true, output: outputs.join('\n\n') };
70
+ return {
71
+ ok: !options?.signal?.aborted,
72
+ output: options?.signal?.aborted ? `${outputs.join('\n\n')}\n\nCommand aborted.`.trim() : outputs.join('\n\n'),
73
+ exitCode: options?.signal?.aborted ? 130 : 0,
74
+ };
67
75
  },
68
76
  };
69
77
  export function availableToolNames() {
70
78
  return Object.keys(toolRegistry);
71
79
  }
72
- export async function runToolCall(call) {
80
+ export async function runToolCall(call, options = {}) {
73
81
  const handler = toolRegistry[call.name];
74
82
  if (!handler) {
75
83
  throw new Error(`Unknown tool: ${call.name}`);
76
84
  }
77
- return handler(call.args);
85
+ return handler(call.args, options);
78
86
  }
79
87
  //# sourceMappingURL=registry.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/tools/registry.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/tools/registry.ts"],"names":[],"mappings":"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"}
@@ -3,5 +3,6 @@ export interface ShellExecArgs {
3
3
  command: string;
4
4
  cwd?: string | undefined;
5
5
  timeoutMs?: number | undefined;
6
+ signal?: AbortSignal | undefined;
6
7
  }
7
8
  export declare function shellExec(args: ShellExecArgs): Promise<ToolResult>;
@@ -1,16 +1,91 @@
1
- import { execaCommand } from "execa";
1
+ import { spawn } from "node:child_process";
2
2
  export async function shellExec(args) {
3
- const subprocess = await execaCommand(args.command, {
4
- cwd: args.cwd ?? process.cwd(),
5
- timeout: args.timeoutMs ?? 120_000,
6
- reject: false,
7
- all: true,
8
- shell: true,
3
+ if (args.signal?.aborted) {
4
+ return { ok: false, output: "Command aborted.", exitCode: 130 };
5
+ }
6
+ return new Promise((resolve, reject) => {
7
+ const detached = process.platform !== "win32";
8
+ const child = spawn(args.command, {
9
+ cwd: args.cwd ?? process.cwd(),
10
+ detached,
11
+ shell: true,
12
+ stdio: ["ignore", "pipe", "pipe"],
13
+ });
14
+ let output = "";
15
+ let aborted = false;
16
+ let timedOut = false;
17
+ let timeout;
18
+ let forceKill;
19
+ const cleanup = () => {
20
+ if (timeout)
21
+ clearTimeout(timeout);
22
+ if (forceKill)
23
+ clearTimeout(forceKill);
24
+ args.signal?.removeEventListener("abort", abort);
25
+ };
26
+ const append = (chunk) => {
27
+ output += chunk.toString();
28
+ };
29
+ const killChild = (signal) => {
30
+ if (!child.pid)
31
+ return;
32
+ try {
33
+ if (detached)
34
+ process.kill(-child.pid, signal);
35
+ else
36
+ child.kill(signal);
37
+ }
38
+ catch {
39
+ // Process may have already exited.
40
+ }
41
+ };
42
+ const terminate = (reason) => {
43
+ if (reason === "abort")
44
+ aborted = true;
45
+ if (reason === "timeout")
46
+ timedOut = true;
47
+ killChild("SIGTERM");
48
+ forceKill = setTimeout(() => killChild("SIGKILL"), 1_000);
49
+ };
50
+ const abort = () => terminate("abort");
51
+ child.stdout?.on("data", append);
52
+ child.stderr?.on("data", append);
53
+ child.on("error", (error) => {
54
+ cleanup();
55
+ if (aborted || args.signal?.aborted) {
56
+ resolve({ ok: false, output: "Command aborted.", exitCode: 130 });
57
+ }
58
+ else {
59
+ reject(error);
60
+ }
61
+ });
62
+ child.on("close", (code) => {
63
+ cleanup();
64
+ const trimmed = output.trim();
65
+ if (aborted || args.signal?.aborted) {
66
+ resolve({
67
+ ok: false,
68
+ output: trimmed ? `${trimmed}\nCommand aborted.` : "Command aborted.",
69
+ exitCode: 130,
70
+ });
71
+ return;
72
+ }
73
+ if (timedOut) {
74
+ resolve({
75
+ ok: false,
76
+ output: trimmed ? `${trimmed}\nCommand timed out.` : "Command timed out.",
77
+ exitCode: 124,
78
+ });
79
+ return;
80
+ }
81
+ resolve({
82
+ ok: code === 0,
83
+ output: trimmed,
84
+ exitCode: code ?? undefined,
85
+ });
86
+ });
87
+ args.signal?.addEventListener("abort", abort, { once: true });
88
+ timeout = setTimeout(() => terminate("timeout"), args.timeoutMs ?? 120_000);
9
89
  });
10
- return {
11
- ok: subprocess.exitCode === 0,
12
- output: subprocess.all ?? `${subprocess.stdout}\n${subprocess.stderr}`.trim(),
13
- exitCode: subprocess.exitCode,
14
- };
15
90
  }
16
91
  //# sourceMappingURL=shell.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"shell.js","sourceRoot":"","sources":["../../src/tools/shell.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,OAAO,CAAC;AASrC,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,IAAmB;IACjD,MAAM,UAAU,GAAG,MAAM,YAAY,CAAC,IAAI,CAAC,OAAO,EAAE;QAClD,GAAG,EAAE,IAAI,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,EAAE;QAC9B,OAAO,EAAE,IAAI,CAAC,SAAS,IAAI,OAAO;QAClC,MAAM,EAAE,KAAK;QACb,GAAG,EAAE,IAAI;QACT,KAAK,EAAE,IAAI;KACZ,CAAC,CAAC;IACH,OAAO;QACL,EAAE,EAAE,UAAU,CAAC,QAAQ,KAAK,CAAC;QAC7B,MAAM,EACJ,UAAU,CAAC,GAAG,IAAI,GAAG,UAAU,CAAC,MAAM,KAAK,UAAU,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE;QACvE,QAAQ,EAAE,UAAU,CAAC,QAAQ;KAC9B,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"shell.js","sourceRoot":"","sources":["../../src/tools/shell.ts"],"names":[],"mappings":"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"}
package/dist/types.d.ts CHANGED
@@ -37,4 +37,6 @@ export interface ToolResult {
37
37
  ok: boolean;
38
38
  output: string;
39
39
  exitCode?: number | undefined;
40
+ outputPath?: string | undefined;
41
+ truncated?: boolean | undefined;
40
42
  }
@@ -0,0 +1,20 @@
1
+ export interface ThinkingResult {
2
+ visible: string;
3
+ hasThinking: boolean;
4
+ thinkContent: string;
5
+ }
6
+ export declare function stripThinking(text: string): ThinkingResult;
7
+ export declare function rememberThinking(content: string): void;
8
+ export declare function rememberThinkingFromText(text: string): ThinkingResult;
9
+ export declare function clearThinking(): void;
10
+ export declare function getLastThinking(): string;
11
+ export declare function isThinkingVisible(): boolean;
12
+ export declare function toggleThinkingVisibility(): boolean;
13
+ export declare function renderThinkingBlock(content?: string): string;
14
+ export declare function renderThinkingHiddenNotice(): string;
15
+ export declare function renderThinkingSummary(content: string): string;
16
+ export declare function renderThinkingToggleMessage(): string;
17
+ export declare function createThinkingStreamParser(onVisible: (text: string) => void): {
18
+ push(token: string): void;
19
+ finish(): ThinkingResult;
20
+ };