mirror of
https://github.com/farcasclaudiu/openclaw.git
synced 2026-06-29 11:02:12 +03:00
refactor(utils): share safe json stringify
This commit is contained in:
@@ -7,6 +7,7 @@ import { resolveStateDir } from "../config/paths.js";
|
|||||||
import { createSubsystemLogger } from "../logging/subsystem.js";
|
import { createSubsystemLogger } from "../logging/subsystem.js";
|
||||||
import { resolveUserPath } from "../utils.js";
|
import { resolveUserPath } from "../utils.js";
|
||||||
import { parseBooleanValue } from "../utils/boolean.js";
|
import { parseBooleanValue } from "../utils/boolean.js";
|
||||||
|
import { safeJsonStringify } from "../utils/safe-json.js";
|
||||||
|
|
||||||
type PayloadLogStage = "request" | "usage";
|
type PayloadLogStage = "request" | "usage";
|
||||||
|
|
||||||
@@ -72,28 +73,6 @@ function getWriter(filePath: string): PayloadLogWriter {
|
|||||||
return writer;
|
return writer;
|
||||||
}
|
}
|
||||||
|
|
||||||
function safeJsonStringify(value: unknown): string | null {
|
|
||||||
try {
|
|
||||||
return JSON.stringify(value, (_key, val) => {
|
|
||||||
if (typeof val === "bigint") {
|
|
||||||
return val.toString();
|
|
||||||
}
|
|
||||||
if (typeof val === "function") {
|
|
||||||
return "[Function]";
|
|
||||||
}
|
|
||||||
if (val instanceof Error) {
|
|
||||||
return { name: val.name, message: val.message, stack: val.stack };
|
|
||||||
}
|
|
||||||
if (val instanceof Uint8Array) {
|
|
||||||
return { type: "Uint8Array", data: Buffer.from(val).toString("base64") };
|
|
||||||
}
|
|
||||||
return val;
|
|
||||||
});
|
|
||||||
} catch {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function formatError(error: unknown): string | undefined {
|
function formatError(error: unknown): string | undefined {
|
||||||
if (error instanceof Error) {
|
if (error instanceof Error) {
|
||||||
return error.message;
|
return error.message;
|
||||||
|
|||||||
@@ -6,6 +6,7 @@ import type { OpenClawConfig } from "../config/config.js";
|
|||||||
import { resolveStateDir } from "../config/paths.js";
|
import { resolveStateDir } from "../config/paths.js";
|
||||||
import { resolveUserPath } from "../utils.js";
|
import { resolveUserPath } from "../utils.js";
|
||||||
import { parseBooleanValue } from "../utils/boolean.js";
|
import { parseBooleanValue } from "../utils/boolean.js";
|
||||||
|
import { safeJsonStringify } from "../utils/safe-json.js";
|
||||||
|
|
||||||
export type CacheTraceStage =
|
export type CacheTraceStage =
|
||||||
| "session:loaded"
|
| "session:loaded"
|
||||||
@@ -179,28 +180,6 @@ function summarizeMessages(messages: AgentMessage[]): {
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
function safeJsonStringify(value: unknown): string | null {
|
|
||||||
try {
|
|
||||||
return JSON.stringify(value, (_key, val) => {
|
|
||||||
if (typeof val === "bigint") {
|
|
||||||
return val.toString();
|
|
||||||
}
|
|
||||||
if (typeof val === "function") {
|
|
||||||
return "[Function]";
|
|
||||||
}
|
|
||||||
if (val instanceof Error) {
|
|
||||||
return { name: val.name, message: val.message, stack: val.stack };
|
|
||||||
}
|
|
||||||
if (val instanceof Uint8Array) {
|
|
||||||
return { type: "Uint8Array", data: Buffer.from(val).toString("base64") };
|
|
||||||
}
|
|
||||||
return val;
|
|
||||||
});
|
|
||||||
} catch {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
export function createCacheTrace(params: CacheTraceInit): CacheTrace | null {
|
export function createCacheTrace(params: CacheTraceInit): CacheTrace | null {
|
||||||
const cfg = resolveCacheTraceConfig(params);
|
const cfg = resolveCacheTraceConfig(params);
|
||||||
if (!cfg.enabled) {
|
if (!cfg.enabled) {
|
||||||
|
|||||||
@@ -0,0 +1,21 @@
|
|||||||
|
export function safeJsonStringify(value: unknown): string | null {
|
||||||
|
try {
|
||||||
|
return JSON.stringify(value, (_key, val) => {
|
||||||
|
if (typeof val === "bigint") {
|
||||||
|
return val.toString();
|
||||||
|
}
|
||||||
|
if (typeof val === "function") {
|
||||||
|
return "[Function]";
|
||||||
|
}
|
||||||
|
if (val instanceof Error) {
|
||||||
|
return { name: val.name, message: val.message, stack: val.stack };
|
||||||
|
}
|
||||||
|
if (val instanceof Uint8Array) {
|
||||||
|
return { type: "Uint8Array", data: Buffer.from(val).toString("base64") };
|
||||||
|
}
|
||||||
|
return val;
|
||||||
|
});
|
||||||
|
} catch {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user