@gguf/claw
Version:
Multi-channel AI gateway with extensible messaging integrations
61 lines (60 loc) • 2.08 kB
TypeScript
import type { SkillCommandSpec } from "../../agents/skills.js";
import type { ChannelId } from "../../channels/plugins/types.js";
import type { OpenClawConfig } from "../../config/config.js";
import type { SessionEntry, SessionScope } from "../../config/sessions.js";
import type { MsgContext } from "../templating.js";
import type { ElevatedLevel, ReasoningLevel, ThinkLevel, VerboseLevel } from "../thinking.js";
import type { ReplyPayload } from "../types.js";
import type { InlineDirectives } from "./directive-handling.js";
export type CommandContext = {
surface: string;
channel: string;
channelId?: ChannelId;
ownerList: string[];
senderIsOwner: boolean;
isAuthorizedSender: boolean;
senderId?: string;
abortKey?: string;
rawBodyNormalized: string;
commandBodyNormalized: string;
from?: string;
to?: string;
};
export type HandleCommandsParams = {
ctx: MsgContext;
cfg: OpenClawConfig;
command: CommandContext;
agentId?: string;
directives: InlineDirectives;
elevated: {
enabled: boolean;
allowed: boolean;
failures: Array<{
gate: string;
key: string;
}>;
};
sessionEntry?: SessionEntry;
previousSessionEntry?: SessionEntry;
sessionStore?: Record<string, SessionEntry>;
sessionKey: string;
storePath?: string;
sessionScope?: SessionScope;
workspaceDir: string;
defaultGroupActivation: () => "always" | "mention";
resolvedThinkLevel?: ThinkLevel;
resolvedVerboseLevel: VerboseLevel;
resolvedReasoningLevel: ReasoningLevel;
resolvedElevatedLevel?: ElevatedLevel;
resolveDefaultThinkingLevel: () => Promise<ThinkLevel | undefined>;
provider: string;
model: string;
contextTokens: number;
isGroup: boolean;
skillCommands?: SkillCommandSpec[];
};
export type CommandHandlerResult = {
reply?: ReplyPayload;
shouldContinue: boolean;
};
export type CommandHandler = (params: HandleCommandsParams, allowTextCommands: boolean) => Promise<CommandHandlerResult | null>;