DEV Community

Ramu Narasinga
Ramu Narasinga

Posted on • Originally published at thinkthroo.com

`runTerminalCommand` function in Codebuff codebase.

In this article, we review runTerminalCommand function in Codebuff codebase. We will look at:

  1. runTerminalCommand invoked in handleToolCall.

  2. runTerminalCommand definition.

I study patterns used in an open source project found on Github Trending. For this week, I reviewed Codebuff codebase and wrote this article.

runTerminalCommand invoked in handleToolCall.

runTerminalCommand is invoked in codebuff/sdk/src/client.ts at L32. This is called in a function named handleToolCall

This handleToolCall is invoked as shown below in codebuff/npm-app/src/client.ts.

 // Handle backend-initiated tool call requests this.webSocket.subscribe('tool-call-request', async (action) => { const { requestId, toolName, input, userInputId } = action ... try { // Execute the tool call using existing tool handlers const toolCall = { toolCallId: requestId, toolName, input, } Spinner.get().stop() const toolResult = await handleToolCall(toolCall as any) 
Enter fullscreen mode Exit fullscreen mode

Shadcn CLI uses ora to show spinner but looks like Codebuff has its own spinner logic written in npm-app/src/utils/spinner.ts.

runTerminalCommand definition.

Below is the function declaration of runTermincalCommand:

/* ------------------------------------------------------------------ */ /* PUBLIC API – runTerminalCommand */ /* ------------------------------------------------------------------ */ export const runTerminalCommand = async ( toolCallId: string, command: string, mode: 'user' | 'assistant', processType: 'SYNC' | 'BACKGROUND', timeoutSeconds: number, cwd?: string, stdoutFile?: string, stderrFile?: string, ): Promise<CodebuffToolOutput<'run_terminal_command'>> => { 
Enter fullscreen mode Exit fullscreen mode

There are some variables initialized in this function’s definition and in the end, runTermincalCommand returns this:

/* sync mode --------------------------------------------------------- */ return new Promise((resolve) => runCommandChildProcess( persistentProcess!, modifiedCmd, mode, cwd!, maybeTimeoutSeconds, (v) => resolve(resolveCommand(v)), ), ) 
Enter fullscreen mode Exit fullscreen mode

runCommandChildProcess is the core command runner defined in the same file, npm-app/src/terminal/run-command.ts.

About me:

Hey, my name is Ramu Narasinga. I study codebase architecture in large open-source projects.

Email: ramu.narasinga@gmail.com

Want to learn from open-source? Solve challenges inspired by open-source projects.

References:

  1. https://github.com/CodebuffAI/codebuff/blob/main/sdk/src/client.ts#L342

  2. https://github.com/CodebuffAI/codebuff/blob/main/npm-app/src/terminal/run-command.ts#L366

  3. https://github.com/CodebuffAI/codebuff/blob/main/npm-app/src/terminal/run-command.ts#L381

  4. https://github.com/CodebuffAI/codebuff/blob/main/npm-app/src/terminal/run-command.ts#L175

  5. https://www.npmjs.com/package/ora

Top comments (0)