export type {
AgentToAgentPolicy,
SessionAccessAction,
SessionAccessResult,
SessionToolsVisibility,
} from "./sessions-access.js" ;
export {
createAgentToAgentPolicy,
createSessionVisibilityGuard,
resolveEffectiveSessionToolsVisibility,
resolveSandboxSessionToolsVisibility,
resolveSandboxedSessionToolContext,
resolveSessionToolsVisibility,
} from "./sessions-access.js" ;
import { resolveSandboxedSessionToolContext } from "./sessions-access.js" ;
export type { SessionReferenceResolution } from "./sessions-resolution.js" ;
export {
isRequesterSpawnedSessionVisible,
isResolvedSessionVisibleToRequester,
listSpawnedSessionKeys,
looksLikeSessionId,
looksLikeSessionKey,
resolveDisplaySessionKey,
resolveInternalSessionKey,
resolveMainSessionAlias,
resolveSessionReference,
resolveVisibleSessionReference,
shouldResolveSessionIdInput,
shouldVerifyRequesterSpawnedSessionVisibility,
} from "./sessions-resolution.js" ;
export {
extractAssistantText,
sanitizeTextContent,
stripToolMessages,
} from "./chat-history-text.js" ;
import { loadConfig } from "../../config/config.js" ;
import type { OpenClawConfig } from "../../config/types.openclaw.js" ;
import { normalizeOptionalString } from "../../shared/string-coerce.js" ;
export type SessionKind = "main" | "group" | "cron" | "hook" | "node" | "other" ;
export type SessionListDeliveryContext = {
channel?: string;
to?: string;
accountId?: string;
threadId?: string | number;
};
export type SessionRunStatus = "running" | "done" | "failed" | "killed" | "timeout" ;
export type SessionListRow = {
key: string;
agentId?: string;
kind: SessionKind;
channel: string;
origin?: {
provider?: string;
accountId?: string;
};
spawnedBy?: string;
label?: string;
displayName?: string;
derivedTitle?: string;
lastMessagePreview?: string;
parentSessionKey?: string;
deliveryContext?: SessionListDeliveryContext;
updatedAt?: number | null ;
sessionId?: string;
model?: string;
contextTokens?: number | null ;
totalTokens?: number | null ;
estimatedCostUsd?: number;
status?: SessionRunStatus;
startedAt?: number;
endedAt?: number;
runtimeMs?: number;
childSessions?: string[];
thinkingLevel?: string;
fastMode?: boolean ;
verboseLevel?: string;
reasoningLevel?: string;
elevatedLevel?: string;
responseUsage?: string;
systemSent?: boolean ;
abortedLastRun?: boolean ;
sendPolicy?: string;
lastChannel?: string;
lastTo?: string;
lastAccountId?: string;
lastThreadId?: string | number;
transcriptPath?: string;
messages?: unknown[];
};
export function resolveSessionToolContext(opts?: {
agentSessionKey?: string;
sandboxed?: boolean ;
config?: OpenClawConfig;
}) {
const cfg = opts?.config ?? loadConfig();
return {
cfg,
...resolveSandboxedSessionToolContext({
cfg,
agentSessionKey: opts?.agentSessionKey,
sandboxed: opts?.sandboxed,
}),
};
}
export function classifySessionKind(params: {
key: string;
gatewayKind?: string | null ;
alias: string;
mainKey: string;
}): SessionKind {
const key = params.key;
if (key === params.alias || key === params.mainKey) {
return "main" ;
}
if (key.startsWith("cron:" )) {
return "cron" ;
}
if (key.startsWith("hook:" )) {
return "hook" ;
}
if (key.startsWith("node-" ) || key.startsWith("node:" )) {
return "node" ;
}
if (params.gatewayKind === "group" ) {
return "group" ;
}
if (key.includes(":group:" ) || key.includes(":channel:" )) {
return "group" ;
}
return "other" ;
}
export function deriveChannel(params: {
key: string;
kind: SessionKind;
channel?: string | null ;
lastChannel?: string | null ;
}): string {
if (params.kind === "cron" || params.kind === "hook" || params.kind === "node" ) {
return "internal" ;
}
const channel = normalizeOptionalString(params.channel ?? undefined);
if (channel) {
return channel;
}
const lastChannel = normalizeOptionalString(params.lastChannel ?? undefined);
if (lastChannel) {
return lastChannel;
}
const parts = params.key.split(":" ).filter(Boolean );
if (parts.length >= 3 && (parts[1 ] === "group" || parts[1 ] === "channel" )) {
return parts[0 ];
}
return "unknown" ;
}
Messung V0.5 in Prozent C=98 H=98 G=97
¤ Dauer der Verarbeitung: 0.12 Sekunden
(vorverarbeitet am 2026-06-10)
¤
*© Formatika GbR, Deutschland