Files
openclaw-zero-token/logger.ts
sjhu 571e14a236 feat: upgrade to upstream v2026.3.28
Major upgrade from e26988a38 to upstream v2026.3.28 (f9b107928).
Key changes:
- Upstream src/, ui/, extensions/ (89 bundled extensions)
- Zero-token web providers preserved in src/zero-token/
- AskOnce plugin restored and registered as CLI command
- Added missing packages: @anthropic-ai/vertex-sdk, @modelcontextprotocol/sdk
- Fixed tsconfig rootDir, skipLibCheck for plugin-sdk DTS build
- Added askonce to bundled plugin metadata and package.json exports
- Fixed AskOnce CLI command registration (missing commands metadata)
- Restored AskOnce adapter imports (correct 5-level relative paths)
- Removed stale migration artifacts from root directory
2026-03-30 17:58:12 +08:00

94 lines
2.4 KiB
TypeScript

import { isVerbose } from "./global-state.js";
import { getLogger } from "./logging/logger.js";
import { createSubsystemLogger } from "./logging/subsystem.js";
import { defaultRuntime, type RuntimeEnv } from "./runtime.js";
import { theme } from "./terminal/theme.js";
const subsystemPrefixRe = /^([a-z][a-z0-9-]{1,20}):\s+(.*)$/i;
function splitSubsystem(message: string) {
const match = message.match(subsystemPrefixRe);
if (!match) {
return null;
}
const [, subsystem, rest] = match;
return { subsystem, rest };
}
type LogMethod = "info" | "warn" | "error";
type RuntimeMethod = "log" | "error";
function logWithSubsystem(params: {
message: string;
runtime: RuntimeEnv;
runtimeMethod: RuntimeMethod;
runtimeFormatter: (value: string) => string;
loggerMethod: LogMethod;
subsystemMethod: LogMethod;
}) {
const parsed = params.runtime === defaultRuntime ? splitSubsystem(params.message) : null;
if (parsed) {
createSubsystemLogger(parsed.subsystem)[params.subsystemMethod](parsed.rest);
return;
}
params.runtime[params.runtimeMethod](params.runtimeFormatter(params.message));
getLogger()[params.loggerMethod](params.message);
}
const info = theme.info;
const warn = theme.warn;
const success = theme.success;
const danger = theme.error;
export function logInfo(message: string, runtime: RuntimeEnv = defaultRuntime) {
logWithSubsystem({
message,
runtime,
runtimeMethod: "log",
runtimeFormatter: info,
loggerMethod: "info",
subsystemMethod: "info",
});
}
export function logWarn(message: string, runtime: RuntimeEnv = defaultRuntime) {
logWithSubsystem({
message,
runtime,
runtimeMethod: "log",
runtimeFormatter: warn,
loggerMethod: "warn",
subsystemMethod: "warn",
});
}
export function logSuccess(message: string, runtime: RuntimeEnv = defaultRuntime) {
logWithSubsystem({
message,
runtime,
runtimeMethod: "log",
runtimeFormatter: success,
loggerMethod: "info",
subsystemMethod: "info",
});
}
export function logError(message: string, runtime: RuntimeEnv = defaultRuntime) {
logWithSubsystem({
message,
runtime,
runtimeMethod: "error",
runtimeFormatter: danger,
loggerMethod: "error",
subsystemMethod: "error",
});
}
export function logDebug(message: string) {
// Always emit to file logger (level-filtered); console only when verbose.
getLogger().debug(message);
if (isVerbose()) {
console.log(theme.muted(message));
}
}