diff --git a/src/agents/bash-tools.exec.ts b/src/agents/bash-tools.exec.ts index 364567ae87..1c6ea56a50 100644 --- a/src/agents/bash-tools.exec.ts +++ b/src/agents/bash-tools.exec.ts @@ -992,7 +992,7 @@ export function createExecTool( let allowlistSatisfied = false; if (hostAsk === "on-miss" && hostSecurity === "allowlist" && analysisOk) { try { - const approvalsSnapshot = await callGatewayTool( + const approvalsSnapshot = await callGatewayTool<{ file: string }>( "exec.approvals.node.get", { timeoutMs: 10_000 }, { nodeId }, @@ -1067,7 +1067,7 @@ export function createExecTool( void (async () => { let decision: string | null = null; try { - const decisionResult = await callGatewayTool( + const decisionResult = await callGatewayTool<{ decision: string }>( "exec.approval.request", { timeoutMs: DEFAULT_APPROVAL_REQUEST_TIMEOUT_MS }, { @@ -1177,11 +1177,15 @@ export function createExecTool( } const startedAt = Date.now(); - const raw = await callGatewayTool( - "node.invoke", - { timeoutMs: invokeTimeoutMs }, - buildInvokeParams(false, null), - ); + const raw = await callGatewayTool<{ + payload: { + exitCode: number; + success?: string; + stdout?: string; + stderr?: string; + error?: string; + }; + }>("node.invoke", { timeoutMs: invokeTimeoutMs }, buildInvokeParams(false, null)); const payload = raw?.payload ?? {}; return { content: [ @@ -1241,7 +1245,7 @@ export function createExecTool( void (async () => { let decision: string | null = null; try { - const decisionResult = await callGatewayTool( + const decisionResult = await callGatewayTool<{ decision: string }>( "exec.approval.request", { timeoutMs: DEFAULT_APPROVAL_REQUEST_TIMEOUT_MS }, { diff --git a/src/agents/skills.ts b/src/agents/skills.ts index 11a2caa90f..e067f24eaa 100644 --- a/src/agents/skills.ts +++ b/src/agents/skills.ts @@ -1,4 +1,5 @@ import type { OpenClawConfig } from "../config/config.js"; +import { SkillsInstallPreferences } from "./skills/types.js"; export { hasBinary, @@ -32,7 +33,7 @@ export { syncSkillsToWorkspace, } from "./skills/workspace.js"; -export function resolveSkillsInstallPreferences(config?: OpenClawConfig) { +export function resolveSkillsInstallPreferences(config?: OpenClawConfig): SkillsInstallPreferences { const raw = config?.skills?.install; const preferBrew = raw?.preferBrew ?? true; const managerRaw = typeof raw?.nodeManager === "string" ? raw.nodeManager.trim() : ""; diff --git a/src/agents/tools/browser-tool.ts b/src/agents/tools/browser-tool.ts index 293aedcaf4..e63d90576c 100644 --- a/src/agents/tools/browser-tool.ts +++ b/src/agents/tools/browser-tool.ts @@ -127,7 +127,7 @@ async function callBrowserProxy(params: { typeof params.timeoutMs === "number" && Number.isFinite(params.timeoutMs) ? Math.max(1, Math.floor(params.timeoutMs)) : DEFAULT_BROWSER_PROXY_TIMEOUT_MS; - const payload = await callGatewayTool( + const payload = await callGatewayTool<{ payloadJSON?: string; payload?: string }>( "node.invoke", { timeoutMs: gatewayTimeoutMs }, { diff --git a/src/agents/tools/cron-tool.ts b/src/agents/tools/cron-tool.ts index a22f53d8c7..1c6bbc1630 100644 --- a/src/agents/tools/cron-tool.ts +++ b/src/agents/tools/cron-tool.ts @@ -119,10 +119,14 @@ async function buildReminderContextLines(params: { const { mainKey, alias } = resolveMainSessionAlias(cfg); const resolvedKey = resolveInternalSessionKey({ key: sessionKey, alias, mainKey }); try { - const res = await callGatewayTool("chat.history", params.gatewayOpts, { - sessionKey: resolvedKey, - limit: maxMessages, - }); + const res = await callGatewayTool<{ messages: Array }>( + "chat.history", + params.gatewayOpts, + { + sessionKey: resolvedKey, + limit: maxMessages, + }, + ); const messages = Array.isArray(res?.messages) ? res.messages : []; const parsed = messages .map((msg) => extractMessageText(msg as ChatMessage)) diff --git a/src/agents/tools/nodes-tool.ts b/src/agents/tools/nodes-tool.ts index d3379c2f59..7d6b7aeacd 100644 --- a/src/agents/tools/nodes-tool.ts +++ b/src/agents/tools/nodes-tool.ts @@ -199,7 +199,7 @@ export function createNodesTool(options?: { const details: Array> = []; for (const facing of facings) { - const raw = await callGatewayTool("node.invoke", gatewayOpts, { + const raw = await callGatewayTool<{ payload: unknown }>("node.invoke", gatewayOpts, { nodeId, command: "camera.snap", params: { @@ -250,7 +250,7 @@ export function createNodesTool(options?: { case "camera_list": { const node = readStringParam(params, "node", { required: true }); const nodeId = await resolveNodeId(gatewayOpts, node); - const raw = await callGatewayTool("node.invoke", gatewayOpts, { + const raw = await callGatewayTool<{ payload: unknown }>("node.invoke", gatewayOpts, { nodeId, command: "camera.list", params: {}, @@ -280,7 +280,7 @@ export function createNodesTool(options?: { typeof params.deviceId === "string" && params.deviceId.trim() ? params.deviceId.trim() : undefined; - const raw = await callGatewayTool("node.invoke", gatewayOpts, { + const raw = await callGatewayTool<{ payload: unknown }>("node.invoke", gatewayOpts, { nodeId, command: "camera.clip", params: { @@ -326,7 +326,7 @@ export function createNodesTool(options?: { : 0; const includeAudio = typeof params.includeAudio === "boolean" ? params.includeAudio : true; - const raw = await callGatewayTool("node.invoke", gatewayOpts, { + const raw = await callGatewayTool<{ payload: unknown }>("node.invoke", gatewayOpts, { nodeId, command: "screen.record", params: { @@ -373,7 +373,7 @@ export function createNodesTool(options?: { Number.isFinite(params.locationTimeoutMs) ? params.locationTimeoutMs : undefined; - const raw = await callGatewayTool("node.invoke", gatewayOpts, { + const raw = await callGatewayTool<{ payload: unknown }>("node.invoke", gatewayOpts, { nodeId, command: "location.get", params: { @@ -423,7 +423,7 @@ export function createNodesTool(options?: { typeof params.needsScreenRecording === "boolean" ? params.needsScreenRecording : undefined; - const raw = await callGatewayTool("node.invoke", gatewayOpts, { + const raw = await callGatewayTool<{ payload: unknown }>("node.invoke", gatewayOpts, { nodeId, command: "system.run", params: {