fix: rename bash tool to exec (#748) (thanks @myfunc)

This commit is contained in:
Peter Steinberger
2026-01-12 02:49:55 +00:00
parent b33bd6aaeb
commit 98337a14b3
51 changed files with 294 additions and 252 deletions

View File

@@ -51,7 +51,7 @@ import {
markAuthProfileGood,
markAuthProfileUsed,
} from "./auth-profiles.js";
import type { BashElevatedDefaults } from "./bash-tools.js";
import type { ExecElevatedDefaults, ExecToolDefaults } from "./bash-tools.js";
import {
CONTEXT_WINDOW_HARD_MIN_TOKENS,
CONTEXT_WINDOW_WARN_BELOW_TOKENS,
@@ -768,11 +768,11 @@ function describeUnknownError(error: unknown): string {
export function buildEmbeddedSandboxInfo(
sandbox?: Awaited<ReturnType<typeof resolveSandboxContext>>,
bashElevated?: BashElevatedDefaults,
execElevated?: ExecElevatedDefaults,
): EmbeddedSandboxInfo | undefined {
if (!sandbox?.enabled) return undefined;
const elevatedAllowed = Boolean(
bashElevated?.enabled && bashElevated.allowed,
execElevated?.enabled && execElevated.allowed,
);
return {
enabled: true,
@@ -790,7 +790,7 @@ export function buildEmbeddedSandboxInfo(
? {
elevated: {
allowed: true,
defaultLevel: bashElevated?.defaultLevel ?? "off",
defaultLevel: execElevated?.defaultLevel ?? "off",
},
}
: {}),
@@ -949,6 +949,16 @@ function mapThinkingLevel(level?: ThinkLevel): ThinkingLevel {
return level;
}
function resolveExecToolDefaults(
config?: ClawdbotConfig,
): ExecToolDefaults | undefined {
const tools = config?.tools;
if (!tools) return undefined;
if (!tools.exec) return tools.bash;
if (!tools.bash) return tools.exec;
return { ...tools.bash, ...tools.exec };
}
function resolveModel(
provider: string,
modelId: string,
@@ -987,7 +997,7 @@ export async function compactEmbeddedPiSession(params: {
model?: string;
thinkLevel?: ThinkLevel;
reasoningLevel?: ReasoningLevel;
bashElevated?: BashElevatedDefaults;
bashElevated?: ExecElevatedDefaults;
customInstructions?: string;
lane?: string;
enqueue?: typeof enqueueCommand;
@@ -1087,8 +1097,8 @@ export async function compactEmbeddedPiSession(params: {
const contextFiles = buildBootstrapContextFiles(bootstrapFiles);
const runAbortController = new AbortController();
const tools = createClawdbotCodingTools({
bash: {
...params.config?.tools?.bash,
exec: {
...resolveExecToolDefaults(params.config),
elevated: params.bashElevated,
},
sandbox,
@@ -1289,7 +1299,7 @@ export async function runEmbeddedPiAgent(params: {
thinkLevel?: ThinkLevel;
verboseLevel?: VerboseLevel;
reasoningLevel?: ReasoningLevel;
bashElevated?: BashElevatedDefaults;
bashElevated?: ExecElevatedDefaults;
timeoutMs: number;
runId: string;
abortSignal?: AbortSignal;
@@ -1499,8 +1509,8 @@ export async function runEmbeddedPiAgent(params: {
// Tool schemas must be provider-compatible (OpenAI requires top-level `type: "object"`).
// `createClawdbotCodingTools()` normalizes schemas so the session can pass them through unchanged.
const tools = createClawdbotCodingTools({
bash: {
...params.config?.tools?.bash,
exec: {
...resolveExecToolDefaults(params.config),
elevated: params.bashElevated,
},
sandbox,