From 04e603cd66caea479adf0efcb9f5d28cf03c1097 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?ALEXANDER=20QUADRATUS=20/=E1=BC=88=CE=BB=CE=AD=CE=BE=CE=B1?= =?UTF-8?q?=CE=BD=CE=B4=CF=81=CE=BF=CF=82=20=CE=9A=CE=BF=CE=B4=CF=81?= =?UTF-8?q?=E1=BE=B6=CF=84=CE=BF=CF=82/?= Date: Sat, 21 Feb 2026 15:08:14 +0700 Subject: [PATCH 1/2] fix: add openclaw-aimlapi to CORE_PACKAGE_NAMES for template resolution --- src/infra/openclaw-root.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/infra/openclaw-root.ts b/src/infra/openclaw-root.ts index 5d48c6cb01734..bf2f79e86034f 100644 --- a/src/infra/openclaw-root.ts +++ b/src/infra/openclaw-root.ts @@ -3,7 +3,7 @@ import fs from "node:fs/promises"; import path from "node:path"; import { fileURLToPath } from "node:url"; -const CORE_PACKAGE_NAMES = new Set(["openclaw"]); +const CORE_PACKAGE_NAMES = new Set(["openclaw", "openclaw-aimlapi"]); async function readPackageName(dir: string): Promise { try { From 57a929f5f2c10c6e8367d8a55a48f21b345d3e93 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?ALEXANDER=20QUADRATUS=20/=E1=BC=88=CE=BB=CE=AD=CE=BE=CE=B1?= =?UTF-8?q?=CE=BD=CE=B4=CF=81=CE=BF=CF=82=20=CE=9A=CE=BF=CE=B4=CF=81?= =?UTF-8?q?=E1=BE=B6=CF=84=CE=BF=CF=82/?= Date: Sat, 21 Feb 2026 17:23:13 +0700 Subject: [PATCH 2/2] fix: default max_tokens to 32768 to prevent silent tool call truncation --- src/agents/pi-embedded-runner/extra-params.ts | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/agents/pi-embedded-runner/extra-params.ts b/src/agents/pi-embedded-runner/extra-params.ts index 553dccd575270..e841b19594086 100644 --- a/src/agents/pi-embedded-runner/extra-params.ts +++ b/src/agents/pi-embedded-runner/extra-params.ts @@ -4,6 +4,10 @@ import { streamSimple } from "@mariozechner/pi-ai"; import type { OpenClawConfig } from "../../config/config.js"; import { log } from "./logger.js"; +// AIMLAPI defaults max_tokens to 512 when not set, which truncates tool call JSON. +// Override with a safe default so tool calls are never silently cut off. +const AIMLAPI_DEFAULT_MAX_TOKENS = 32768; + const OPENROUTER_APP_HEADERS: Record = { "HTTP-Referer": "https://openclaw.ai", "X-Title": "OpenClaw", @@ -337,7 +341,9 @@ export function applyExtraParamsToAgent( Object.entries(extraParamsOverride).filter(([, value]) => value !== undefined), ) : undefined; - const merged = Object.assign({}, extraParams, override); + const providerDefaults: Record = + provider === "aimlapi" ? { maxTokens: AIMLAPI_DEFAULT_MAX_TOKENS } : {}; + const merged = Object.assign({}, providerDefaults, extraParams, override); const wrappedStreamFn = createStreamFnWithExtraParams(agent.streamFn, merged, provider); if (wrappedStreamFn) {