Skip to content

Commit 474db91

Browse files
committed
refactor: dedupe extension error formatting
1 parent 09b31f9 commit 474db91

8 files changed

Lines changed: 18 additions & 12 deletions

File tree

extensions/acpx/src/service.ts

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import fs from "node:fs/promises";
2+
import { formatErrorMessage } from "openclaw/plugin-sdk/error-runtime";
23
import type {
34
AcpRuntime,
45
OpenClawPluginService,
@@ -145,9 +146,7 @@ export function createAcpxRuntimeService(
145146
if (currentRevision !== lifecycleRevision) {
146147
return;
147148
}
148-
ctx.logger.warn(
149-
`embedded acpx runtime setup failed: ${err instanceof Error ? err.message : String(err)}`,
150-
);
149+
ctx.logger.warn(`embedded acpx runtime setup failed: ${formatErrorMessage(err)}`);
151150
}
152151
})();
153152
},

extensions/amazon-bedrock/discovery.ts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import {
66
type ListInferenceProfilesCommandOutput,
77
} from "@aws-sdk/client-bedrock";
88
import { createSubsystemLogger } from "openclaw/plugin-sdk/core";
9+
import { formatErrorMessage } from "openclaw/plugin-sdk/error-runtime";
910
import { resolveAwsSdkEnvVarName } from "openclaw/plugin-sdk/provider-auth-runtime";
1011
import type {
1112
BedrockDiscoveryConfig,
@@ -214,7 +215,7 @@ async function fetchInferenceProfileSummaries(
214215
return profiles;
215216
} catch (error) {
216217
log.debug?.("Skipping inference profile discovery", {
217-
error: error instanceof Error ? error.message : String(error),
218+
error: formatErrorMessage(error),
218219
});
219220
return [];
220221
}
@@ -406,7 +407,7 @@ export async function discoverBedrockModels(params: {
406407
if (!hasLoggedBedrockError) {
407408
hasLoggedBedrockError = true;
408409
log.warn("Failed to discover Bedrock models", {
409-
error: error instanceof Error ? error.message : String(error),
410+
error: formatErrorMessage(error),
410411
});
411412
}
412413
return [];

extensions/imessage/src/client.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import { type ChildProcessWithoutNullStreams, spawn } from "node:child_process";
22
import { createInterface, type Interface } from "node:readline";
3+
import { formatErrorMessage } from "openclaw/plugin-sdk/error-runtime";
34
import type { RuntimeEnv } from "openclaw/plugin-sdk/runtime-env";
45
import { resolveUserPath } from "openclaw/plugin-sdk/text-runtime";
56
import { DEFAULT_IMESSAGE_PROBE_TIMEOUT_MS } from "./constants.js";
@@ -188,7 +189,7 @@ export class IMessageRpcClient {
188189
try {
189190
parsed = JSON.parse(line) as IMessageRpcResponse<unknown>;
190191
} catch (err) {
191-
const detail = err instanceof Error ? err.message : String(err);
192+
const detail = formatErrorMessage(err);
192193
this.runtime?.error?.(`imsg rpc: failed to parse ${line}: ${detail}`);
193194
return;
194195
}

extensions/ollama/src/setup.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
import { formatErrorMessage } from "openclaw/plugin-sdk/error-runtime";
12
import type { OpenClawConfig } from "openclaw/plugin-sdk/provider-auth";
23
import { upsertAuthProfileWithLock } from "openclaw/plugin-sdk/provider-auth";
34
import { applyAgentDefaultModelPrimary } from "openclaw/plugin-sdk/provider-onboard";
@@ -195,7 +196,7 @@ async function pullOllamaModelCore(params: {
195196
await release();
196197
}
197198
} catch (err) {
198-
const reason = err instanceof Error ? err.message : String(err);
199+
const reason = formatErrorMessage(err);
199200
return { ok: false, message: `Failed to download ${modelName}: ${reason}` };
200201
}
201202
}

extensions/ollama/src/stream.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import type {
99
Usage,
1010
} from "@mariozechner/pi-ai";
1111
import { createAssistantMessageEventStream, streamSimple } from "@mariozechner/pi-ai";
12+
import { formatErrorMessage } from "openclaw/plugin-sdk/error-runtime";
1213
import type {
1314
OpenClawConfig,
1415
ProviderRuntimeModel,
@@ -739,7 +740,7 @@ export function createOllamaStreamFn(
739740
reason: "error",
740741
error: buildStreamErrorAssistantMessage({
741742
model,
742-
errorMessage: err instanceof Error ? err.message : String(err),
743+
errorMessage: formatErrorMessage(err),
743744
}),
744745
});
745746
} finally {

extensions/signal/src/client.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import { generateSecureUuid } from "openclaw/plugin-sdk/core";
2+
import { formatErrorMessage } from "openclaw/plugin-sdk/error-runtime";
23
import { resolveFetch } from "openclaw/plugin-sdk/fetch-runtime";
34
import { fetchWithTimeout } from "openclaw/plugin-sdk/text-runtime";
45

@@ -126,7 +127,7 @@ export async function signalCheck(
126127
return {
127128
ok: false,
128129
status: null,
129-
error: err instanceof Error ? err.message : String(err),
130+
error: formatErrorMessage(err),
130131
};
131132
}
132133
}

extensions/signal/src/probe.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import type { BaseProbeResult } from "openclaw/plugin-sdk/channel-contract";
2+
import { formatErrorMessage } from "openclaw/plugin-sdk/error-runtime";
23
import { signalCheck, signalRpcRequest } from "./client.js";
34

45
export type SignalProbe = BaseProbeResult & {
@@ -45,7 +46,7 @@ export async function probeSignal(baseUrl: string, timeoutMs: number): Promise<S
4546
});
4647
result.version = parseSignalVersion(version);
4748
} catch (err) {
48-
result.error = err instanceof Error ? err.message : String(err);
49+
result.error = formatErrorMessage(err);
4950
}
5051
return {
5152
...result,

extensions/talk-voice/index.ts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import { resolveActiveTalkProviderConfig } from "openclaw/plugin-sdk/config-runtime";
2+
import { formatErrorMessage } from "openclaw/plugin-sdk/error-runtime";
23
import type { SpeechVoiceOption } from "openclaw/plugin-sdk/speech";
34
import { definePluginEntry, type OpenClawPluginApi } from "./api.js";
45

@@ -169,7 +170,7 @@ export default definePluginEntry({
169170
text: formatVoiceList(voices, Number.isFinite(limit) ? limit : 12, providerId),
170171
};
171172
} catch (error) {
172-
const message = error instanceof Error ? error.message : String(error);
173+
const message = formatErrorMessage(error);
173174
return { text: `${providerLabel} voice list failed: ${message}` };
174175
}
175176
}
@@ -194,7 +195,7 @@ export default definePluginEntry({
194195
baseUrl,
195196
});
196197
} catch (error) {
197-
const message = error instanceof Error ? error.message : String(error);
198+
const message = formatErrorMessage(error);
198199
return { text: `${providerLabel} voice lookup failed: ${message}` };
199200
}
200201
const chosen = findVoice(voices, query);

0 commit comments

Comments
 (0)