Users can now add "$schema": "./schemas/clawdbot.schema.json" to their clawdbot.json for autocomplete without validation errors.
2822 lines
75 KiB
TypeScript
2822 lines
75 KiB
TypeScript
/* eslint-disable */
|
|
/**
|
|
* This file was automatically generated by json-schema-to-typescript.
|
|
* DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,
|
|
* and run json-schema-to-typescript to regenerate this file.
|
|
*/
|
|
|
|
export interface ClawdbotConfig {
|
|
$schema?: string;
|
|
meta?: {
|
|
lastTouchedVersion?: string;
|
|
lastTouchedAt?: string;
|
|
};
|
|
env?: {
|
|
shellEnv?: {
|
|
enabled?: boolean;
|
|
timeoutMs?: number;
|
|
};
|
|
vars?: {
|
|
[k: string]: string;
|
|
};
|
|
[k: string]: string;
|
|
};
|
|
wizard?: {
|
|
lastRunAt?: string;
|
|
lastRunVersion?: string;
|
|
lastRunCommit?: string;
|
|
lastRunCommand?: string;
|
|
lastRunMode?: "local" | "remote";
|
|
};
|
|
diagnostics?: {
|
|
enabled?: boolean;
|
|
flags?: string[];
|
|
otel?: {
|
|
enabled?: boolean;
|
|
endpoint?: string;
|
|
protocol?: "http/protobuf" | "grpc";
|
|
headers?: {
|
|
[k: string]: string;
|
|
};
|
|
serviceName?: string;
|
|
traces?: boolean;
|
|
metrics?: boolean;
|
|
logs?: boolean;
|
|
sampleRate?: number;
|
|
flushIntervalMs?: number;
|
|
};
|
|
cacheTrace?: {
|
|
enabled?: boolean;
|
|
filePath?: string;
|
|
includeMessages?: boolean;
|
|
includePrompt?: boolean;
|
|
includeSystem?: boolean;
|
|
};
|
|
};
|
|
logging?: {
|
|
level?: "silent" | "fatal" | "error" | "warn" | "info" | "debug" | "trace";
|
|
file?: string;
|
|
consoleLevel?: "silent" | "fatal" | "error" | "warn" | "info" | "debug" | "trace";
|
|
consoleStyle?: "pretty" | "compact" | "json";
|
|
redactSensitive?: "off" | "tools";
|
|
redactPatterns?: string[];
|
|
};
|
|
update?: {
|
|
channel?: "stable" | "beta" | "dev";
|
|
checkOnStart?: boolean;
|
|
};
|
|
browser?: {
|
|
enabled?: boolean;
|
|
evaluateEnabled?: boolean;
|
|
cdpUrl?: string;
|
|
remoteCdpTimeoutMs?: number;
|
|
remoteCdpHandshakeTimeoutMs?: number;
|
|
color?: string;
|
|
executablePath?: string;
|
|
headless?: boolean;
|
|
noSandbox?: boolean;
|
|
attachOnly?: boolean;
|
|
defaultProfile?: string;
|
|
snapshotDefaults?: {
|
|
mode?: "efficient";
|
|
};
|
|
profiles?: {
|
|
[k: string]: {
|
|
cdpPort?: number;
|
|
cdpUrl?: string;
|
|
driver?: "clawd" | "extension";
|
|
color: string;
|
|
};
|
|
};
|
|
};
|
|
ui?: {
|
|
seamColor?: string;
|
|
assistant?: {
|
|
name?: string;
|
|
avatar?: string;
|
|
};
|
|
};
|
|
auth?: {
|
|
profiles?: {
|
|
[k: string]: {
|
|
provider: string;
|
|
mode: "api_key" | "oauth" | "token";
|
|
email?: string;
|
|
};
|
|
};
|
|
order?: {
|
|
[k: string]: string[];
|
|
};
|
|
cooldowns?: {
|
|
billingBackoffHours?: number;
|
|
billingBackoffHoursByProvider?: {
|
|
[k: string]: number;
|
|
};
|
|
billingMaxHours?: number;
|
|
failureWindowHours?: number;
|
|
};
|
|
};
|
|
models?: {
|
|
mode?: "merge" | "replace";
|
|
providers?: {
|
|
[k: string]: {
|
|
baseUrl: string;
|
|
apiKey?: string;
|
|
auth?: "api-key" | "aws-sdk" | "oauth" | "token";
|
|
api?:
|
|
| "openai-completions"
|
|
| "openai-responses"
|
|
| "anthropic-messages"
|
|
| "google-generative-ai"
|
|
| "github-copilot"
|
|
| "bedrock-converse-stream";
|
|
headers?: {
|
|
[k: string]: string;
|
|
};
|
|
authHeader?: boolean;
|
|
models: {
|
|
id: string;
|
|
name: string;
|
|
api?:
|
|
| "openai-completions"
|
|
| "openai-responses"
|
|
| "anthropic-messages"
|
|
| "google-generative-ai"
|
|
| "github-copilot"
|
|
| "bedrock-converse-stream";
|
|
reasoning?: boolean;
|
|
input?: ("text" | "image")[];
|
|
cost?: {
|
|
input?: number;
|
|
output?: number;
|
|
cacheRead?: number;
|
|
cacheWrite?: number;
|
|
};
|
|
contextWindow?: number;
|
|
maxTokens?: number;
|
|
headers?: {
|
|
[k: string]: string;
|
|
};
|
|
compat?: {
|
|
supportsStore?: boolean;
|
|
supportsDeveloperRole?: boolean;
|
|
supportsReasoningEffort?: boolean;
|
|
maxTokensField?: "max_completion_tokens" | "max_tokens";
|
|
};
|
|
}[];
|
|
};
|
|
};
|
|
bedrockDiscovery?: {
|
|
enabled?: boolean;
|
|
region?: string;
|
|
providerFilter?: string[];
|
|
refreshInterval?: number;
|
|
defaultContextWindow?: number;
|
|
defaultMaxTokens?: number;
|
|
};
|
|
};
|
|
nodeHost?: {
|
|
browserProxy?: {
|
|
enabled?: boolean;
|
|
allowProfiles?: string[];
|
|
};
|
|
};
|
|
agents?: {
|
|
defaults?: {
|
|
model?: {
|
|
primary?: string;
|
|
fallbacks?: string[];
|
|
};
|
|
imageModel?: {
|
|
primary?: string;
|
|
fallbacks?: string[];
|
|
};
|
|
models?: {
|
|
[k: string]: {
|
|
alias?: string;
|
|
params?: {
|
|
[k: string]: unknown;
|
|
};
|
|
};
|
|
};
|
|
workspace?: string;
|
|
repoRoot?: string;
|
|
skipBootstrap?: boolean;
|
|
bootstrapMaxChars?: number;
|
|
userTimezone?: string;
|
|
timeFormat?: "auto" | "12" | "24";
|
|
envelopeTimezone?: string;
|
|
envelopeTimestamp?: "on" | "off";
|
|
envelopeElapsed?: "on" | "off";
|
|
contextTokens?: number;
|
|
cliBackends?: {
|
|
[k: string]: {
|
|
command: string;
|
|
args?: string[];
|
|
output?: "json" | "text" | "jsonl";
|
|
resumeOutput?: "json" | "text" | "jsonl";
|
|
input?: "arg" | "stdin";
|
|
maxPromptArgChars?: number;
|
|
env?: {
|
|
[k: string]: string;
|
|
};
|
|
clearEnv?: string[];
|
|
modelArg?: string;
|
|
modelAliases?: {
|
|
[k: string]: string;
|
|
};
|
|
sessionArg?: string;
|
|
sessionArgs?: string[];
|
|
resumeArgs?: string[];
|
|
sessionMode?: "always" | "existing" | "none";
|
|
sessionIdFields?: string[];
|
|
systemPromptArg?: string;
|
|
systemPromptMode?: "append" | "replace";
|
|
systemPromptWhen?: "first" | "always" | "never";
|
|
imageArg?: string;
|
|
imageMode?: "repeat" | "list";
|
|
serialize?: boolean;
|
|
};
|
|
};
|
|
memorySearch?: {
|
|
enabled?: boolean;
|
|
sources?: ("memory" | "sessions")[];
|
|
experimental?: {
|
|
sessionMemory?: boolean;
|
|
};
|
|
provider?: "openai" | "local" | "gemini";
|
|
remote?: {
|
|
baseUrl?: string;
|
|
apiKey?: string;
|
|
headers?: {
|
|
[k: string]: string;
|
|
};
|
|
batch?: {
|
|
enabled?: boolean;
|
|
wait?: boolean;
|
|
concurrency?: number;
|
|
pollIntervalMs?: number;
|
|
timeoutMinutes?: number;
|
|
};
|
|
};
|
|
fallback?: "openai" | "gemini" | "local" | "none";
|
|
model?: string;
|
|
local?: {
|
|
modelPath?: string;
|
|
modelCacheDir?: string;
|
|
};
|
|
store?: {
|
|
driver?: "sqlite";
|
|
path?: string;
|
|
vector?: {
|
|
enabled?: boolean;
|
|
extensionPath?: string;
|
|
};
|
|
};
|
|
chunking?: {
|
|
tokens?: number;
|
|
overlap?: number;
|
|
};
|
|
sync?: {
|
|
onSessionStart?: boolean;
|
|
onSearch?: boolean;
|
|
watch?: boolean;
|
|
watchDebounceMs?: number;
|
|
intervalMinutes?: number;
|
|
sessions?: {
|
|
deltaBytes?: number;
|
|
deltaMessages?: number;
|
|
};
|
|
};
|
|
query?: {
|
|
maxResults?: number;
|
|
minScore?: number;
|
|
hybrid?: {
|
|
enabled?: boolean;
|
|
vectorWeight?: number;
|
|
textWeight?: number;
|
|
candidateMultiplier?: number;
|
|
};
|
|
};
|
|
cache?: {
|
|
enabled?: boolean;
|
|
maxEntries?: number;
|
|
};
|
|
};
|
|
contextPruning?: {
|
|
mode?: "off" | "cache-ttl";
|
|
ttl?: string;
|
|
keepLastAssistants?: number;
|
|
softTrimRatio?: number;
|
|
hardClearRatio?: number;
|
|
minPrunableToolChars?: number;
|
|
tools?: {
|
|
allow?: string[];
|
|
deny?: string[];
|
|
};
|
|
softTrim?: {
|
|
maxChars?: number;
|
|
headChars?: number;
|
|
tailChars?: number;
|
|
};
|
|
hardClear?: {
|
|
enabled?: boolean;
|
|
placeholder?: string;
|
|
};
|
|
};
|
|
compaction?: {
|
|
mode?: "default" | "safeguard";
|
|
reserveTokensFloor?: number;
|
|
maxHistoryShare?: number;
|
|
memoryFlush?: {
|
|
enabled?: boolean;
|
|
softThresholdTokens?: number;
|
|
prompt?: string;
|
|
systemPrompt?: string;
|
|
};
|
|
};
|
|
thinkingDefault?: "off" | "minimal" | "low" | "medium" | "high" | "xhigh";
|
|
verboseDefault?: "off" | "on" | "full";
|
|
elevatedDefault?: "off" | "on" | "ask" | "full";
|
|
blockStreamingDefault?: "off" | "on";
|
|
blockStreamingBreak?: "text_end" | "message_end";
|
|
blockStreamingChunk?: {
|
|
minChars?: number;
|
|
maxChars?: number;
|
|
breakPreference?: "paragraph" | "newline" | "sentence";
|
|
};
|
|
blockStreamingCoalesce?: {
|
|
minChars?: number;
|
|
maxChars?: number;
|
|
idleMs?: number;
|
|
};
|
|
humanDelay?: {
|
|
mode?: "off" | "natural" | "custom";
|
|
minMs?: number;
|
|
maxMs?: number;
|
|
};
|
|
timeoutSeconds?: number;
|
|
mediaMaxMb?: number;
|
|
typingIntervalSeconds?: number;
|
|
typingMode?: "never" | "instant" | "thinking" | "message";
|
|
heartbeat?: {
|
|
every?: string;
|
|
activeHours?: {
|
|
start?: string;
|
|
end?: string;
|
|
timezone?: string;
|
|
};
|
|
model?: string;
|
|
session?: string;
|
|
includeReasoning?: boolean;
|
|
target?: string;
|
|
to?: string;
|
|
prompt?: string;
|
|
ackMaxChars?: number;
|
|
};
|
|
maxConcurrent?: number;
|
|
subagents?: {
|
|
maxConcurrent?: number;
|
|
archiveAfterMinutes?: number;
|
|
model?:
|
|
| string
|
|
| {
|
|
primary?: string;
|
|
fallbacks?: string[];
|
|
};
|
|
};
|
|
sandbox?: {
|
|
mode?: "off" | "non-main" | "all";
|
|
workspaceAccess?: "none" | "ro" | "rw";
|
|
sessionToolsVisibility?: "spawned" | "all";
|
|
scope?: "session" | "agent" | "shared";
|
|
perSession?: boolean;
|
|
workspaceRoot?: string;
|
|
docker?: {
|
|
image?: string;
|
|
containerPrefix?: string;
|
|
workdir?: string;
|
|
readOnlyRoot?: boolean;
|
|
tmpfs?: string[];
|
|
network?: string;
|
|
user?: string;
|
|
capDrop?: string[];
|
|
env?: {
|
|
[k: string]: string;
|
|
};
|
|
setupCommand?: string;
|
|
pidsLimit?: number;
|
|
memory?: string | number;
|
|
memorySwap?: string | number;
|
|
cpus?: number;
|
|
ulimits?: {
|
|
[k: string]:
|
|
| string
|
|
| number
|
|
| {
|
|
soft?: number;
|
|
hard?: number;
|
|
};
|
|
};
|
|
seccompProfile?: string;
|
|
apparmorProfile?: string;
|
|
dns?: string[];
|
|
extraHosts?: string[];
|
|
binds?: string[];
|
|
};
|
|
browser?: {
|
|
enabled?: boolean;
|
|
image?: string;
|
|
containerPrefix?: string;
|
|
cdpPort?: number;
|
|
vncPort?: number;
|
|
noVncPort?: number;
|
|
headless?: boolean;
|
|
enableNoVnc?: boolean;
|
|
allowHostControl?: boolean;
|
|
autoStart?: boolean;
|
|
autoStartTimeoutMs?: number;
|
|
};
|
|
prune?: {
|
|
idleHours?: number;
|
|
maxAgeDays?: number;
|
|
};
|
|
};
|
|
};
|
|
list?: {
|
|
id: string;
|
|
default?: boolean;
|
|
name?: string;
|
|
workspace?: string;
|
|
agentDir?: string;
|
|
model?:
|
|
| string
|
|
| {
|
|
primary?: string;
|
|
fallbacks?: string[];
|
|
};
|
|
memorySearch?: {
|
|
enabled?: boolean;
|
|
sources?: ("memory" | "sessions")[];
|
|
experimental?: {
|
|
sessionMemory?: boolean;
|
|
};
|
|
provider?: "openai" | "local" | "gemini";
|
|
remote?: {
|
|
baseUrl?: string;
|
|
apiKey?: string;
|
|
headers?: {
|
|
[k: string]: string;
|
|
};
|
|
batch?: {
|
|
enabled?: boolean;
|
|
wait?: boolean;
|
|
concurrency?: number;
|
|
pollIntervalMs?: number;
|
|
timeoutMinutes?: number;
|
|
};
|
|
};
|
|
fallback?: "openai" | "gemini" | "local" | "none";
|
|
model?: string;
|
|
local?: {
|
|
modelPath?: string;
|
|
modelCacheDir?: string;
|
|
};
|
|
store?: {
|
|
driver?: "sqlite";
|
|
path?: string;
|
|
vector?: {
|
|
enabled?: boolean;
|
|
extensionPath?: string;
|
|
};
|
|
};
|
|
chunking?: {
|
|
tokens?: number;
|
|
overlap?: number;
|
|
};
|
|
sync?: {
|
|
onSessionStart?: boolean;
|
|
onSearch?: boolean;
|
|
watch?: boolean;
|
|
watchDebounceMs?: number;
|
|
intervalMinutes?: number;
|
|
sessions?: {
|
|
deltaBytes?: number;
|
|
deltaMessages?: number;
|
|
};
|
|
};
|
|
query?: {
|
|
maxResults?: number;
|
|
minScore?: number;
|
|
hybrid?: {
|
|
enabled?: boolean;
|
|
vectorWeight?: number;
|
|
textWeight?: number;
|
|
candidateMultiplier?: number;
|
|
};
|
|
};
|
|
cache?: {
|
|
enabled?: boolean;
|
|
maxEntries?: number;
|
|
};
|
|
};
|
|
humanDelay?: {
|
|
mode?: "off" | "natural" | "custom";
|
|
minMs?: number;
|
|
maxMs?: number;
|
|
};
|
|
heartbeat?: {
|
|
every?: string;
|
|
activeHours?: {
|
|
start?: string;
|
|
end?: string;
|
|
timezone?: string;
|
|
};
|
|
model?: string;
|
|
session?: string;
|
|
includeReasoning?: boolean;
|
|
target?: string;
|
|
to?: string;
|
|
prompt?: string;
|
|
ackMaxChars?: number;
|
|
};
|
|
identity?: {
|
|
name?: string;
|
|
theme?: string;
|
|
emoji?: string;
|
|
avatar?: string;
|
|
};
|
|
groupChat?: {
|
|
mentionPatterns?: string[];
|
|
historyLimit?: number;
|
|
};
|
|
subagents?: {
|
|
allowAgents?: string[];
|
|
model?:
|
|
| string
|
|
| {
|
|
primary?: string;
|
|
fallbacks?: string[];
|
|
};
|
|
};
|
|
sandbox?: {
|
|
mode?: "off" | "non-main" | "all";
|
|
workspaceAccess?: "none" | "ro" | "rw";
|
|
sessionToolsVisibility?: "spawned" | "all";
|
|
scope?: "session" | "agent" | "shared";
|
|
perSession?: boolean;
|
|
workspaceRoot?: string;
|
|
docker?: {
|
|
image?: string;
|
|
containerPrefix?: string;
|
|
workdir?: string;
|
|
readOnlyRoot?: boolean;
|
|
tmpfs?: string[];
|
|
network?: string;
|
|
user?: string;
|
|
capDrop?: string[];
|
|
env?: {
|
|
[k: string]: string;
|
|
};
|
|
setupCommand?: string;
|
|
pidsLimit?: number;
|
|
memory?: string | number;
|
|
memorySwap?: string | number;
|
|
cpus?: number;
|
|
ulimits?: {
|
|
[k: string]:
|
|
| string
|
|
| number
|
|
| {
|
|
soft?: number;
|
|
hard?: number;
|
|
};
|
|
};
|
|
seccompProfile?: string;
|
|
apparmorProfile?: string;
|
|
dns?: string[];
|
|
extraHosts?: string[];
|
|
binds?: string[];
|
|
};
|
|
browser?: {
|
|
enabled?: boolean;
|
|
image?: string;
|
|
containerPrefix?: string;
|
|
cdpPort?: number;
|
|
vncPort?: number;
|
|
noVncPort?: number;
|
|
headless?: boolean;
|
|
enableNoVnc?: boolean;
|
|
allowHostControl?: boolean;
|
|
autoStart?: boolean;
|
|
autoStartTimeoutMs?: number;
|
|
};
|
|
prune?: {
|
|
idleHours?: number;
|
|
maxAgeDays?: number;
|
|
};
|
|
};
|
|
tools?: {
|
|
profile?: "minimal" | "coding" | "messaging" | "full";
|
|
allow?: string[];
|
|
alsoAllow?: string[];
|
|
deny?: string[];
|
|
byProvider?: {
|
|
[k: string]: {
|
|
allow?: string[];
|
|
alsoAllow?: string[];
|
|
deny?: string[];
|
|
profile?: "minimal" | "coding" | "messaging" | "full";
|
|
};
|
|
};
|
|
elevated?: {
|
|
enabled?: boolean;
|
|
allowFrom?: {
|
|
[k: string]: (string | number)[];
|
|
};
|
|
};
|
|
exec?: {
|
|
host?: "sandbox" | "gateway" | "node";
|
|
security?: "deny" | "allowlist" | "full";
|
|
ask?: "off" | "on-miss" | "always";
|
|
node?: string;
|
|
pathPrepend?: string[];
|
|
safeBins?: string[];
|
|
backgroundMs?: number;
|
|
timeoutSec?: number;
|
|
approvalRunningNoticeMs?: number;
|
|
cleanupMs?: number;
|
|
notifyOnExit?: boolean;
|
|
applyPatch?: {
|
|
enabled?: boolean;
|
|
allowModels?: string[];
|
|
};
|
|
};
|
|
sandbox?: {
|
|
tools?: {
|
|
allow?: string[];
|
|
alsoAllow?: string[];
|
|
deny?: string[];
|
|
};
|
|
};
|
|
};
|
|
}[];
|
|
};
|
|
tools?: {
|
|
profile?: "minimal" | "coding" | "messaging" | "full";
|
|
allow?: string[];
|
|
alsoAllow?: string[];
|
|
deny?: string[];
|
|
byProvider?: {
|
|
[k: string]: {
|
|
allow?: string[];
|
|
alsoAllow?: string[];
|
|
deny?: string[];
|
|
profile?: "minimal" | "coding" | "messaging" | "full";
|
|
};
|
|
};
|
|
web?: {
|
|
search?: {
|
|
enabled?: boolean;
|
|
provider?: "brave" | "perplexity";
|
|
apiKey?: string;
|
|
maxResults?: number;
|
|
timeoutSeconds?: number;
|
|
cacheTtlMinutes?: number;
|
|
perplexity?: {
|
|
apiKey?: string;
|
|
baseUrl?: string;
|
|
model?: string;
|
|
};
|
|
};
|
|
fetch?: {
|
|
enabled?: boolean;
|
|
maxChars?: number;
|
|
timeoutSeconds?: number;
|
|
cacheTtlMinutes?: number;
|
|
maxRedirects?: number;
|
|
userAgent?: string;
|
|
};
|
|
};
|
|
media?: {
|
|
models?: {
|
|
provider?: string;
|
|
model?: string;
|
|
capabilities?: ("image" | "audio" | "video")[];
|
|
type?: "provider" | "cli";
|
|
command?: string;
|
|
args?: string[];
|
|
prompt?: string;
|
|
maxChars?: number;
|
|
maxBytes?: number;
|
|
timeoutSeconds?: number;
|
|
language?: string;
|
|
providerOptions?: {
|
|
[k: string]: {
|
|
[k: string]: string | number | boolean;
|
|
};
|
|
};
|
|
deepgram?: {
|
|
detectLanguage?: boolean;
|
|
punctuate?: boolean;
|
|
smartFormat?: boolean;
|
|
};
|
|
baseUrl?: string;
|
|
headers?: {
|
|
[k: string]: string;
|
|
};
|
|
profile?: string;
|
|
preferredProfile?: string;
|
|
}[];
|
|
concurrency?: number;
|
|
image?: {
|
|
enabled?: boolean;
|
|
scope?: {
|
|
default?: "allow" | "deny";
|
|
rules?: {
|
|
action: "allow" | "deny";
|
|
match?: {
|
|
channel?: string;
|
|
chatType?: "direct" | "group" | "channel";
|
|
keyPrefix?: string;
|
|
};
|
|
}[];
|
|
};
|
|
maxBytes?: number;
|
|
maxChars?: number;
|
|
prompt?: string;
|
|
timeoutSeconds?: number;
|
|
language?: string;
|
|
providerOptions?: {
|
|
[k: string]: {
|
|
[k: string]: string | number | boolean;
|
|
};
|
|
};
|
|
deepgram?: {
|
|
detectLanguage?: boolean;
|
|
punctuate?: boolean;
|
|
smartFormat?: boolean;
|
|
};
|
|
baseUrl?: string;
|
|
headers?: {
|
|
[k: string]: string;
|
|
};
|
|
attachments?: {
|
|
mode?: "first" | "all";
|
|
maxAttachments?: number;
|
|
prefer?: "first" | "last" | "path" | "url";
|
|
};
|
|
models?: {
|
|
provider?: string;
|
|
model?: string;
|
|
capabilities?: ("image" | "audio" | "video")[];
|
|
type?: "provider" | "cli";
|
|
command?: string;
|
|
args?: string[];
|
|
prompt?: string;
|
|
maxChars?: number;
|
|
maxBytes?: number;
|
|
timeoutSeconds?: number;
|
|
language?: string;
|
|
providerOptions?: {
|
|
[k: string]: {
|
|
[k: string]: string | number | boolean;
|
|
};
|
|
};
|
|
deepgram?: {
|
|
detectLanguage?: boolean;
|
|
punctuate?: boolean;
|
|
smartFormat?: boolean;
|
|
};
|
|
baseUrl?: string;
|
|
headers?: {
|
|
[k: string]: string;
|
|
};
|
|
profile?: string;
|
|
preferredProfile?: string;
|
|
}[];
|
|
};
|
|
audio?: {
|
|
enabled?: boolean;
|
|
scope?: {
|
|
default?: "allow" | "deny";
|
|
rules?: {
|
|
action: "allow" | "deny";
|
|
match?: {
|
|
channel?: string;
|
|
chatType?: "direct" | "group" | "channel";
|
|
keyPrefix?: string;
|
|
};
|
|
}[];
|
|
};
|
|
maxBytes?: number;
|
|
maxChars?: number;
|
|
prompt?: string;
|
|
timeoutSeconds?: number;
|
|
language?: string;
|
|
providerOptions?: {
|
|
[k: string]: {
|
|
[k: string]: string | number | boolean;
|
|
};
|
|
};
|
|
deepgram?: {
|
|
detectLanguage?: boolean;
|
|
punctuate?: boolean;
|
|
smartFormat?: boolean;
|
|
};
|
|
baseUrl?: string;
|
|
headers?: {
|
|
[k: string]: string;
|
|
};
|
|
attachments?: {
|
|
mode?: "first" | "all";
|
|
maxAttachments?: number;
|
|
prefer?: "first" | "last" | "path" | "url";
|
|
};
|
|
models?: {
|
|
provider?: string;
|
|
model?: string;
|
|
capabilities?: ("image" | "audio" | "video")[];
|
|
type?: "provider" | "cli";
|
|
command?: string;
|
|
args?: string[];
|
|
prompt?: string;
|
|
maxChars?: number;
|
|
maxBytes?: number;
|
|
timeoutSeconds?: number;
|
|
language?: string;
|
|
providerOptions?: {
|
|
[k: string]: {
|
|
[k: string]: string | number | boolean;
|
|
};
|
|
};
|
|
deepgram?: {
|
|
detectLanguage?: boolean;
|
|
punctuate?: boolean;
|
|
smartFormat?: boolean;
|
|
};
|
|
baseUrl?: string;
|
|
headers?: {
|
|
[k: string]: string;
|
|
};
|
|
profile?: string;
|
|
preferredProfile?: string;
|
|
}[];
|
|
};
|
|
video?: {
|
|
enabled?: boolean;
|
|
scope?: {
|
|
default?: "allow" | "deny";
|
|
rules?: {
|
|
action: "allow" | "deny";
|
|
match?: {
|
|
channel?: string;
|
|
chatType?: "direct" | "group" | "channel";
|
|
keyPrefix?: string;
|
|
};
|
|
}[];
|
|
};
|
|
maxBytes?: number;
|
|
maxChars?: number;
|
|
prompt?: string;
|
|
timeoutSeconds?: number;
|
|
language?: string;
|
|
providerOptions?: {
|
|
[k: string]: {
|
|
[k: string]: string | number | boolean;
|
|
};
|
|
};
|
|
deepgram?: {
|
|
detectLanguage?: boolean;
|
|
punctuate?: boolean;
|
|
smartFormat?: boolean;
|
|
};
|
|
baseUrl?: string;
|
|
headers?: {
|
|
[k: string]: string;
|
|
};
|
|
attachments?: {
|
|
mode?: "first" | "all";
|
|
maxAttachments?: number;
|
|
prefer?: "first" | "last" | "path" | "url";
|
|
};
|
|
models?: {
|
|
provider?: string;
|
|
model?: string;
|
|
capabilities?: ("image" | "audio" | "video")[];
|
|
type?: "provider" | "cli";
|
|
command?: string;
|
|
args?: string[];
|
|
prompt?: string;
|
|
maxChars?: number;
|
|
maxBytes?: number;
|
|
timeoutSeconds?: number;
|
|
language?: string;
|
|
providerOptions?: {
|
|
[k: string]: {
|
|
[k: string]: string | number | boolean;
|
|
};
|
|
};
|
|
deepgram?: {
|
|
detectLanguage?: boolean;
|
|
punctuate?: boolean;
|
|
smartFormat?: boolean;
|
|
};
|
|
baseUrl?: string;
|
|
headers?: {
|
|
[k: string]: string;
|
|
};
|
|
profile?: string;
|
|
preferredProfile?: string;
|
|
}[];
|
|
};
|
|
};
|
|
links?: {
|
|
enabled?: boolean;
|
|
scope?: {
|
|
default?: "allow" | "deny";
|
|
rules?: {
|
|
action: "allow" | "deny";
|
|
match?: {
|
|
channel?: string;
|
|
chatType?: "direct" | "group" | "channel";
|
|
keyPrefix?: string;
|
|
};
|
|
}[];
|
|
};
|
|
maxLinks?: number;
|
|
timeoutSeconds?: number;
|
|
models?: {
|
|
type?: "cli";
|
|
command: string;
|
|
args?: string[];
|
|
timeoutSeconds?: number;
|
|
}[];
|
|
};
|
|
message?: {
|
|
allowCrossContextSend?: boolean;
|
|
crossContext?: {
|
|
allowWithinProvider?: boolean;
|
|
allowAcrossProviders?: boolean;
|
|
marker?: {
|
|
enabled?: boolean;
|
|
prefix?: string;
|
|
suffix?: string;
|
|
};
|
|
};
|
|
broadcast?: {
|
|
enabled?: boolean;
|
|
};
|
|
};
|
|
agentToAgent?: {
|
|
enabled?: boolean;
|
|
allow?: string[];
|
|
};
|
|
elevated?: {
|
|
enabled?: boolean;
|
|
allowFrom?: {
|
|
[k: string]: (string | number)[];
|
|
};
|
|
};
|
|
exec?: {
|
|
host?: "sandbox" | "gateway" | "node";
|
|
security?: "deny" | "allowlist" | "full";
|
|
ask?: "off" | "on-miss" | "always";
|
|
node?: string;
|
|
pathPrepend?: string[];
|
|
safeBins?: string[];
|
|
backgroundMs?: number;
|
|
timeoutSec?: number;
|
|
cleanupMs?: number;
|
|
notifyOnExit?: boolean;
|
|
applyPatch?: {
|
|
enabled?: boolean;
|
|
allowModels?: string[];
|
|
};
|
|
};
|
|
subagents?: {
|
|
tools?: {
|
|
allow?: string[];
|
|
alsoAllow?: string[];
|
|
deny?: string[];
|
|
};
|
|
};
|
|
sandbox?: {
|
|
tools?: {
|
|
allow?: string[];
|
|
alsoAllow?: string[];
|
|
deny?: string[];
|
|
};
|
|
};
|
|
};
|
|
bindings?: {
|
|
agentId: string;
|
|
match: {
|
|
channel: string;
|
|
accountId?: string;
|
|
peer?: {
|
|
kind: "dm" | "group" | "channel";
|
|
id: string;
|
|
};
|
|
guildId?: string;
|
|
teamId?: string;
|
|
};
|
|
}[];
|
|
broadcast?: {
|
|
strategy?: "parallel" | "sequential";
|
|
[k: string]: string[];
|
|
};
|
|
audio?: {
|
|
transcription?: {
|
|
command: string[];
|
|
timeoutSeconds?: number;
|
|
};
|
|
};
|
|
media?: {
|
|
preserveFilenames?: boolean;
|
|
};
|
|
messages?: {
|
|
messagePrefix?: string;
|
|
responsePrefix?: string;
|
|
groupChat?: {
|
|
mentionPatterns?: string[];
|
|
historyLimit?: number;
|
|
};
|
|
queue?: {
|
|
mode?: "steer" | "followup" | "collect" | "steer-backlog" | "steer+backlog" | "queue" | "interrupt";
|
|
byChannel?: {
|
|
whatsapp?: "steer" | "followup" | "collect" | "steer-backlog" | "steer+backlog" | "queue" | "interrupt";
|
|
telegram?: "steer" | "followup" | "collect" | "steer-backlog" | "steer+backlog" | "queue" | "interrupt";
|
|
discord?: "steer" | "followup" | "collect" | "steer-backlog" | "steer+backlog" | "queue" | "interrupt";
|
|
slack?: "steer" | "followup" | "collect" | "steer-backlog" | "steer+backlog" | "queue" | "interrupt";
|
|
mattermost?: "steer" | "followup" | "collect" | "steer-backlog" | "steer+backlog" | "queue" | "interrupt";
|
|
signal?: "steer" | "followup" | "collect" | "steer-backlog" | "steer+backlog" | "queue" | "interrupt";
|
|
imessage?: "steer" | "followup" | "collect" | "steer-backlog" | "steer+backlog" | "queue" | "interrupt";
|
|
msteams?: "steer" | "followup" | "collect" | "steer-backlog" | "steer+backlog" | "queue" | "interrupt";
|
|
webchat?: "steer" | "followup" | "collect" | "steer-backlog" | "steer+backlog" | "queue" | "interrupt";
|
|
};
|
|
debounceMs?: number;
|
|
debounceMsByChannel?: {
|
|
[k: string]: number;
|
|
};
|
|
cap?: number;
|
|
drop?: "old" | "new" | "summarize";
|
|
};
|
|
inbound?: {
|
|
debounceMs?: number;
|
|
byChannel?: {
|
|
[k: string]: number;
|
|
};
|
|
};
|
|
ackReaction?: string;
|
|
ackReactionScope?: "group-mentions" | "group-all" | "direct" | "all";
|
|
removeAckAfterReply?: boolean;
|
|
tts?: {
|
|
auto?: "off" | "always" | "inbound" | "tagged";
|
|
enabled?: boolean;
|
|
mode?: "final" | "all";
|
|
provider?: "elevenlabs" | "openai" | "edge";
|
|
summaryModel?: string;
|
|
modelOverrides?: {
|
|
enabled?: boolean;
|
|
allowText?: boolean;
|
|
allowProvider?: boolean;
|
|
allowVoice?: boolean;
|
|
allowModelId?: boolean;
|
|
allowVoiceSettings?: boolean;
|
|
allowNormalization?: boolean;
|
|
allowSeed?: boolean;
|
|
};
|
|
elevenlabs?: {
|
|
apiKey?: string;
|
|
baseUrl?: string;
|
|
voiceId?: string;
|
|
modelId?: string;
|
|
seed?: number;
|
|
applyTextNormalization?: "auto" | "on" | "off";
|
|
languageCode?: string;
|
|
voiceSettings?: {
|
|
stability?: number;
|
|
similarityBoost?: number;
|
|
style?: number;
|
|
useSpeakerBoost?: boolean;
|
|
speed?: number;
|
|
};
|
|
};
|
|
openai?: {
|
|
apiKey?: string;
|
|
model?: string;
|
|
voice?: string;
|
|
};
|
|
edge?: {
|
|
enabled?: boolean;
|
|
voice?: string;
|
|
lang?: string;
|
|
outputFormat?: string;
|
|
pitch?: string;
|
|
rate?: string;
|
|
volume?: string;
|
|
saveSubtitles?: boolean;
|
|
proxy?: string;
|
|
timeoutMs?: number;
|
|
};
|
|
prefsPath?: string;
|
|
maxTextLength?: number;
|
|
timeoutMs?: number;
|
|
};
|
|
};
|
|
commands: {
|
|
native: boolean | "auto";
|
|
nativeSkills: boolean | "auto";
|
|
text?: boolean;
|
|
bash?: boolean;
|
|
bashForegroundMs?: number;
|
|
config?: boolean;
|
|
debug?: boolean;
|
|
restart?: boolean;
|
|
useAccessGroups?: boolean;
|
|
};
|
|
approvals?: {
|
|
exec?: {
|
|
enabled?: boolean;
|
|
mode?: "session" | "targets" | "both";
|
|
agentFilter?: string[];
|
|
sessionFilter?: string[];
|
|
targets?: {
|
|
channel: string;
|
|
to: string;
|
|
accountId?: string;
|
|
threadId?: string | number;
|
|
}[];
|
|
};
|
|
};
|
|
session?: {
|
|
scope?: "per-sender" | "global";
|
|
dmScope?: "main" | "per-peer" | "per-channel-peer";
|
|
identityLinks?: {
|
|
[k: string]: string[];
|
|
};
|
|
resetTriggers?: string[];
|
|
idleMinutes?: number;
|
|
reset?: {
|
|
mode?: "daily" | "idle";
|
|
atHour?: number;
|
|
idleMinutes?: number;
|
|
};
|
|
resetByType?: {
|
|
dm?: {
|
|
mode?: "daily" | "idle";
|
|
atHour?: number;
|
|
idleMinutes?: number;
|
|
};
|
|
group?: {
|
|
mode?: "daily" | "idle";
|
|
atHour?: number;
|
|
idleMinutes?: number;
|
|
};
|
|
thread?: {
|
|
mode?: "daily" | "idle";
|
|
atHour?: number;
|
|
idleMinutes?: number;
|
|
};
|
|
};
|
|
resetByChannel?: {
|
|
[k: string]: {
|
|
mode?: "daily" | "idle";
|
|
atHour?: number;
|
|
idleMinutes?: number;
|
|
};
|
|
};
|
|
store?: string;
|
|
typingIntervalSeconds?: number;
|
|
typingMode?: "never" | "instant" | "thinking" | "message";
|
|
mainKey?: string;
|
|
sendPolicy?: {
|
|
default?: "allow" | "deny";
|
|
rules?: {
|
|
action: "allow" | "deny";
|
|
match?: {
|
|
channel?: string;
|
|
chatType?: "direct" | "group" | "channel";
|
|
keyPrefix?: string;
|
|
};
|
|
}[];
|
|
};
|
|
agentToAgent?: {
|
|
maxPingPongTurns?: number;
|
|
};
|
|
};
|
|
cron?: {
|
|
enabled?: boolean;
|
|
store?: string;
|
|
maxConcurrentRuns?: number;
|
|
};
|
|
hooks?: {
|
|
enabled?: boolean;
|
|
path?: string;
|
|
token?: string;
|
|
maxBodyBytes?: number;
|
|
presets?: string[];
|
|
transformsDir?: string;
|
|
mappings?: {
|
|
id?: string;
|
|
match?: {
|
|
path?: string;
|
|
source?: string;
|
|
};
|
|
action?: "wake" | "agent";
|
|
wakeMode?: "now" | "next-heartbeat";
|
|
name?: string;
|
|
sessionKey?: string;
|
|
messageTemplate?: string;
|
|
textTemplate?: string;
|
|
deliver?: boolean;
|
|
allowUnsafeExternalContent?: boolean;
|
|
channel?: "last" | "whatsapp" | "telegram" | "discord" | "slack" | "signal" | "imessage" | "msteams";
|
|
to?: string;
|
|
model?: string;
|
|
thinking?: string;
|
|
timeoutSeconds?: number;
|
|
transform?: {
|
|
module: string;
|
|
export?: string;
|
|
};
|
|
}[];
|
|
gmail?: {
|
|
account?: string;
|
|
label?: string;
|
|
topic?: string;
|
|
subscription?: string;
|
|
pushToken?: string;
|
|
hookUrl?: string;
|
|
includeBody?: boolean;
|
|
maxBytes?: number;
|
|
renewEveryMinutes?: number;
|
|
allowUnsafeExternalContent?: boolean;
|
|
serve?: {
|
|
bind?: string;
|
|
port?: number;
|
|
path?: string;
|
|
};
|
|
tailscale?: {
|
|
mode?: "off" | "serve" | "funnel";
|
|
path?: string;
|
|
target?: string;
|
|
};
|
|
model?: string;
|
|
thinking?: "off" | "minimal" | "low" | "medium" | "high";
|
|
};
|
|
internal?: {
|
|
enabled?: boolean;
|
|
handlers?: {
|
|
event: string;
|
|
module: string;
|
|
export?: string;
|
|
}[];
|
|
entries?: {
|
|
[k: string]: {
|
|
enabled?: boolean;
|
|
env?: {
|
|
[k: string]: string;
|
|
};
|
|
};
|
|
};
|
|
load?: {
|
|
extraDirs?: string[];
|
|
};
|
|
installs?: {
|
|
[k: string]: {
|
|
source: "npm" | "archive" | "path";
|
|
spec?: string;
|
|
sourcePath?: string;
|
|
installPath?: string;
|
|
version?: string;
|
|
installedAt?: string;
|
|
hooks?: string[];
|
|
};
|
|
};
|
|
};
|
|
};
|
|
web?: {
|
|
enabled?: boolean;
|
|
heartbeatSeconds?: number;
|
|
reconnect?: {
|
|
initialMs?: number;
|
|
maxMs?: number;
|
|
factor?: number;
|
|
jitter?: number;
|
|
maxAttempts?: number;
|
|
};
|
|
};
|
|
channels?: {
|
|
defaults?: {
|
|
groupPolicy?: "open" | "disabled" | "allowlist";
|
|
heartbeat?: {
|
|
showOk?: boolean;
|
|
showAlerts?: boolean;
|
|
useIndicator?: boolean;
|
|
};
|
|
};
|
|
whatsapp?: {
|
|
accounts?: {
|
|
[k: string]: {
|
|
name?: string;
|
|
capabilities?: string[];
|
|
markdown?: {
|
|
tables?: "off" | "bullets" | "code";
|
|
};
|
|
configWrites?: boolean;
|
|
enabled?: boolean;
|
|
sendReadReceipts?: boolean;
|
|
messagePrefix?: string;
|
|
authDir?: string;
|
|
dmPolicy: "pairing" | "allowlist" | "open" | "disabled";
|
|
selfChatMode?: boolean;
|
|
allowFrom?: string[];
|
|
groupAllowFrom?: string[];
|
|
groupPolicy: "open" | "disabled" | "allowlist";
|
|
historyLimit?: number;
|
|
dmHistoryLimit?: number;
|
|
dms?: {
|
|
[k: string]: {
|
|
historyLimit?: number;
|
|
};
|
|
};
|
|
textChunkLimit?: number;
|
|
chunkMode?: "length" | "newline";
|
|
mediaMaxMb?: number;
|
|
blockStreaming?: boolean;
|
|
blockStreamingCoalesce?: {
|
|
minChars?: number;
|
|
maxChars?: number;
|
|
idleMs?: number;
|
|
};
|
|
groups?: {
|
|
[k: string]: {
|
|
requireMention?: boolean;
|
|
tools?: {
|
|
allow?: string[];
|
|
alsoAllow?: string[];
|
|
deny?: string[];
|
|
};
|
|
toolsBySender?: {
|
|
[k: string]: {
|
|
allow?: string[];
|
|
alsoAllow?: string[];
|
|
deny?: string[];
|
|
};
|
|
};
|
|
};
|
|
};
|
|
ackReaction?: {
|
|
emoji?: string;
|
|
direct: boolean;
|
|
group: "always" | "mentions" | "never";
|
|
};
|
|
debounceMs: number;
|
|
heartbeat?: {
|
|
showOk?: boolean;
|
|
showAlerts?: boolean;
|
|
useIndicator?: boolean;
|
|
};
|
|
};
|
|
};
|
|
capabilities?: string[];
|
|
markdown?: {
|
|
tables?: "off" | "bullets" | "code";
|
|
};
|
|
configWrites?: boolean;
|
|
sendReadReceipts?: boolean;
|
|
dmPolicy: "pairing" | "allowlist" | "open" | "disabled";
|
|
messagePrefix?: string;
|
|
selfChatMode?: boolean;
|
|
allowFrom?: string[];
|
|
groupAllowFrom?: string[];
|
|
groupPolicy: "open" | "disabled" | "allowlist";
|
|
historyLimit?: number;
|
|
dmHistoryLimit?: number;
|
|
dms?: {
|
|
[k: string]: {
|
|
historyLimit?: number;
|
|
};
|
|
};
|
|
textChunkLimit?: number;
|
|
chunkMode?: "length" | "newline";
|
|
mediaMaxMb: number;
|
|
blockStreaming?: boolean;
|
|
blockStreamingCoalesce?: {
|
|
minChars?: number;
|
|
maxChars?: number;
|
|
idleMs?: number;
|
|
};
|
|
actions?: {
|
|
reactions?: boolean;
|
|
sendMessage?: boolean;
|
|
polls?: boolean;
|
|
};
|
|
groups?: {
|
|
[k: string]: {
|
|
requireMention?: boolean;
|
|
tools?: {
|
|
allow?: string[];
|
|
alsoAllow?: string[];
|
|
deny?: string[];
|
|
};
|
|
toolsBySender?: {
|
|
[k: string]: {
|
|
allow?: string[];
|
|
alsoAllow?: string[];
|
|
deny?: string[];
|
|
};
|
|
};
|
|
};
|
|
};
|
|
ackReaction?: {
|
|
emoji?: string;
|
|
direct: boolean;
|
|
group: "always" | "mentions" | "never";
|
|
};
|
|
debounceMs: number;
|
|
heartbeat?: {
|
|
showOk?: boolean;
|
|
showAlerts?: boolean;
|
|
useIndicator?: boolean;
|
|
};
|
|
};
|
|
telegram?: {
|
|
name?: string;
|
|
capabilities?:
|
|
| string[]
|
|
| {
|
|
inlineButtons?: "off" | "dm" | "group" | "all" | "allowlist";
|
|
};
|
|
markdown?: {
|
|
tables?: "off" | "bullets" | "code";
|
|
};
|
|
enabled?: boolean;
|
|
commands?: {
|
|
native?: boolean | "auto";
|
|
nativeSkills?: boolean | "auto";
|
|
};
|
|
customCommands?: {
|
|
command: unknown;
|
|
description: unknown;
|
|
}[];
|
|
configWrites?: boolean;
|
|
dmPolicy: "pairing" | "allowlist" | "open" | "disabled";
|
|
botToken?: string;
|
|
tokenFile?: string;
|
|
replyToMode?: "off" | "first" | "all";
|
|
groups?: {
|
|
[k: string]: {
|
|
requireMention?: boolean;
|
|
tools?: {
|
|
allow?: string[];
|
|
alsoAllow?: string[];
|
|
deny?: string[];
|
|
};
|
|
toolsBySender?: {
|
|
[k: string]: {
|
|
allow?: string[];
|
|
alsoAllow?: string[];
|
|
deny?: string[];
|
|
};
|
|
};
|
|
skills?: string[];
|
|
enabled?: boolean;
|
|
allowFrom?: (string | number)[];
|
|
systemPrompt?: string;
|
|
topics?: {
|
|
[k: string]: {
|
|
requireMention?: boolean;
|
|
skills?: string[];
|
|
enabled?: boolean;
|
|
allowFrom?: (string | number)[];
|
|
systemPrompt?: string;
|
|
};
|
|
};
|
|
};
|
|
};
|
|
allowFrom?: (string | number)[];
|
|
groupAllowFrom?: (string | number)[];
|
|
groupPolicy: "open" | "disabled" | "allowlist";
|
|
historyLimit?: number;
|
|
dmHistoryLimit?: number;
|
|
dms?: {
|
|
[k: string]: {
|
|
historyLimit?: number;
|
|
};
|
|
};
|
|
textChunkLimit?: number;
|
|
chunkMode?: "length" | "newline";
|
|
blockStreaming?: boolean;
|
|
draftChunk?: {
|
|
minChars?: number;
|
|
maxChars?: number;
|
|
breakPreference?: "paragraph" | "newline" | "sentence";
|
|
};
|
|
blockStreamingCoalesce?: {
|
|
minChars?: number;
|
|
maxChars?: number;
|
|
idleMs?: number;
|
|
};
|
|
streamMode: "off" | "partial" | "block";
|
|
mediaMaxMb?: number;
|
|
timeoutSeconds?: number;
|
|
retry?: {
|
|
attempts?: number;
|
|
minDelayMs?: number;
|
|
maxDelayMs?: number;
|
|
jitter?: number;
|
|
};
|
|
network?: {
|
|
autoSelectFamily?: boolean;
|
|
};
|
|
proxy?: string;
|
|
webhookUrl?: string;
|
|
webhookSecret?: string;
|
|
webhookPath?: string;
|
|
actions?: {
|
|
reactions?: boolean;
|
|
sendMessage?: boolean;
|
|
deleteMessage?: boolean;
|
|
};
|
|
reactionNotifications?: "off" | "own" | "all";
|
|
reactionLevel?: "off" | "ack" | "minimal" | "extensive";
|
|
heartbeat?: {
|
|
showOk?: boolean;
|
|
showAlerts?: boolean;
|
|
useIndicator?: boolean;
|
|
};
|
|
linkPreview?: boolean;
|
|
accounts?: {
|
|
[k: string]: {
|
|
name?: string;
|
|
capabilities?:
|
|
| string[]
|
|
| {
|
|
inlineButtons?: "off" | "dm" | "group" | "all" | "allowlist";
|
|
};
|
|
markdown?: {
|
|
tables?: "off" | "bullets" | "code";
|
|
};
|
|
enabled?: boolean;
|
|
commands?: {
|
|
native?: boolean | "auto";
|
|
nativeSkills?: boolean | "auto";
|
|
};
|
|
customCommands?: {
|
|
command: unknown;
|
|
description: unknown;
|
|
}[];
|
|
configWrites?: boolean;
|
|
dmPolicy: "pairing" | "allowlist" | "open" | "disabled";
|
|
botToken?: string;
|
|
tokenFile?: string;
|
|
replyToMode?: "off" | "first" | "all";
|
|
groups?: {
|
|
[k: string]: {
|
|
requireMention?: boolean;
|
|
tools?: {
|
|
allow?: string[];
|
|
alsoAllow?: string[];
|
|
deny?: string[];
|
|
};
|
|
toolsBySender?: {
|
|
[k: string]: {
|
|
allow?: string[];
|
|
alsoAllow?: string[];
|
|
deny?: string[];
|
|
};
|
|
};
|
|
skills?: string[];
|
|
enabled?: boolean;
|
|
allowFrom?: (string | number)[];
|
|
systemPrompt?: string;
|
|
topics?: {
|
|
[k: string]: {
|
|
requireMention?: boolean;
|
|
skills?: string[];
|
|
enabled?: boolean;
|
|
allowFrom?: (string | number)[];
|
|
systemPrompt?: string;
|
|
};
|
|
};
|
|
};
|
|
};
|
|
allowFrom?: (string | number)[];
|
|
groupAllowFrom?: (string | number)[];
|
|
groupPolicy: "open" | "disabled" | "allowlist";
|
|
historyLimit?: number;
|
|
dmHistoryLimit?: number;
|
|
dms?: {
|
|
[k: string]: {
|
|
historyLimit?: number;
|
|
};
|
|
};
|
|
textChunkLimit?: number;
|
|
chunkMode?: "length" | "newline";
|
|
blockStreaming?: boolean;
|
|
draftChunk?: {
|
|
minChars?: number;
|
|
maxChars?: number;
|
|
breakPreference?: "paragraph" | "newline" | "sentence";
|
|
};
|
|
blockStreamingCoalesce?: {
|
|
minChars?: number;
|
|
maxChars?: number;
|
|
idleMs?: number;
|
|
};
|
|
streamMode: "off" | "partial" | "block";
|
|
mediaMaxMb?: number;
|
|
timeoutSeconds?: number;
|
|
retry?: {
|
|
attempts?: number;
|
|
minDelayMs?: number;
|
|
maxDelayMs?: number;
|
|
jitter?: number;
|
|
};
|
|
network?: {
|
|
autoSelectFamily?: boolean;
|
|
};
|
|
proxy?: string;
|
|
webhookUrl?: string;
|
|
webhookSecret?: string;
|
|
webhookPath?: string;
|
|
actions?: {
|
|
reactions?: boolean;
|
|
sendMessage?: boolean;
|
|
deleteMessage?: boolean;
|
|
};
|
|
reactionNotifications?: "off" | "own" | "all";
|
|
reactionLevel?: "off" | "ack" | "minimal" | "extensive";
|
|
heartbeat?: {
|
|
showOk?: boolean;
|
|
showAlerts?: boolean;
|
|
useIndicator?: boolean;
|
|
};
|
|
linkPreview?: boolean;
|
|
};
|
|
};
|
|
};
|
|
discord?: {
|
|
name?: string;
|
|
capabilities?: string[];
|
|
markdown?: {
|
|
tables?: "off" | "bullets" | "code";
|
|
};
|
|
enabled?: boolean;
|
|
commands?: {
|
|
native?: boolean | "auto";
|
|
nativeSkills?: boolean | "auto";
|
|
};
|
|
configWrites?: boolean;
|
|
token?: string;
|
|
allowBots?: boolean;
|
|
groupPolicy: "open" | "disabled" | "allowlist";
|
|
historyLimit?: number;
|
|
dmHistoryLimit?: number;
|
|
dms?: {
|
|
[k: string]: {
|
|
historyLimit?: number;
|
|
};
|
|
};
|
|
textChunkLimit?: number;
|
|
chunkMode?: "length" | "newline";
|
|
blockStreaming?: boolean;
|
|
blockStreamingCoalesce?: {
|
|
minChars?: number;
|
|
maxChars?: number;
|
|
idleMs?: number;
|
|
};
|
|
maxLinesPerMessage?: number;
|
|
mediaMaxMb?: number;
|
|
retry?: {
|
|
attempts?: number;
|
|
minDelayMs?: number;
|
|
maxDelayMs?: number;
|
|
jitter?: number;
|
|
};
|
|
actions?: {
|
|
reactions?: boolean;
|
|
stickers?: boolean;
|
|
emojiUploads?: boolean;
|
|
stickerUploads?: boolean;
|
|
polls?: boolean;
|
|
permissions?: boolean;
|
|
messages?: boolean;
|
|
threads?: boolean;
|
|
pins?: boolean;
|
|
search?: boolean;
|
|
memberInfo?: boolean;
|
|
roleInfo?: boolean;
|
|
roles?: boolean;
|
|
channelInfo?: boolean;
|
|
voiceStatus?: boolean;
|
|
events?: boolean;
|
|
moderation?: boolean;
|
|
channels?: boolean;
|
|
};
|
|
replyToMode?: "off" | "first" | "all";
|
|
dm?: {
|
|
enabled?: boolean;
|
|
policy: "pairing" | "allowlist" | "open" | "disabled";
|
|
allowFrom?: (string | number)[];
|
|
groupEnabled?: boolean;
|
|
groupChannels?: (string | number)[];
|
|
};
|
|
guilds?: {
|
|
[k: string]: {
|
|
slug?: string;
|
|
requireMention?: boolean;
|
|
tools?: {
|
|
allow?: string[];
|
|
alsoAllow?: string[];
|
|
deny?: string[];
|
|
};
|
|
toolsBySender?: {
|
|
[k: string]: {
|
|
allow?: string[];
|
|
alsoAllow?: string[];
|
|
deny?: string[];
|
|
};
|
|
};
|
|
reactionNotifications?: "off" | "own" | "all" | "allowlist";
|
|
users?: (string | number)[];
|
|
channels?: {
|
|
[k: string]: {
|
|
allow?: boolean;
|
|
requireMention?: boolean;
|
|
tools?: {
|
|
allow?: string[];
|
|
alsoAllow?: string[];
|
|
deny?: string[];
|
|
};
|
|
toolsBySender?: {
|
|
[k: string]: {
|
|
allow?: string[];
|
|
alsoAllow?: string[];
|
|
deny?: string[];
|
|
};
|
|
};
|
|
skills?: string[];
|
|
enabled?: boolean;
|
|
users?: (string | number)[];
|
|
systemPrompt?: string;
|
|
autoThread?: boolean;
|
|
};
|
|
};
|
|
};
|
|
};
|
|
heartbeat?: {
|
|
showOk?: boolean;
|
|
showAlerts?: boolean;
|
|
useIndicator?: boolean;
|
|
};
|
|
execApprovals?: {
|
|
enabled?: boolean;
|
|
approvers?: (string | number)[];
|
|
agentFilter?: string[];
|
|
sessionFilter?: string[];
|
|
};
|
|
intents?: {
|
|
presence?: boolean;
|
|
guildMembers?: boolean;
|
|
};
|
|
accounts?: {
|
|
[k: string]: {
|
|
name?: string;
|
|
capabilities?: string[];
|
|
markdown?: {
|
|
tables?: "off" | "bullets" | "code";
|
|
};
|
|
enabled?: boolean;
|
|
commands?: {
|
|
native?: boolean | "auto";
|
|
nativeSkills?: boolean | "auto";
|
|
};
|
|
configWrites?: boolean;
|
|
token?: string;
|
|
allowBots?: boolean;
|
|
groupPolicy: "open" | "disabled" | "allowlist";
|
|
historyLimit?: number;
|
|
dmHistoryLimit?: number;
|
|
dms?: {
|
|
[k: string]: {
|
|
historyLimit?: number;
|
|
};
|
|
};
|
|
textChunkLimit?: number;
|
|
chunkMode?: "length" | "newline";
|
|
blockStreaming?: boolean;
|
|
blockStreamingCoalesce?: {
|
|
minChars?: number;
|
|
maxChars?: number;
|
|
idleMs?: number;
|
|
};
|
|
maxLinesPerMessage?: number;
|
|
mediaMaxMb?: number;
|
|
retry?: {
|
|
attempts?: number;
|
|
minDelayMs?: number;
|
|
maxDelayMs?: number;
|
|
jitter?: number;
|
|
};
|
|
actions?: {
|
|
reactions?: boolean;
|
|
stickers?: boolean;
|
|
emojiUploads?: boolean;
|
|
stickerUploads?: boolean;
|
|
polls?: boolean;
|
|
permissions?: boolean;
|
|
messages?: boolean;
|
|
threads?: boolean;
|
|
pins?: boolean;
|
|
search?: boolean;
|
|
memberInfo?: boolean;
|
|
roleInfo?: boolean;
|
|
roles?: boolean;
|
|
channelInfo?: boolean;
|
|
voiceStatus?: boolean;
|
|
events?: boolean;
|
|
moderation?: boolean;
|
|
channels?: boolean;
|
|
};
|
|
replyToMode?: "off" | "first" | "all";
|
|
dm?: {
|
|
enabled?: boolean;
|
|
policy: "pairing" | "allowlist" | "open" | "disabled";
|
|
allowFrom?: (string | number)[];
|
|
groupEnabled?: boolean;
|
|
groupChannels?: (string | number)[];
|
|
};
|
|
guilds?: {
|
|
[k: string]: {
|
|
slug?: string;
|
|
requireMention?: boolean;
|
|
tools?: {
|
|
allow?: string[];
|
|
alsoAllow?: string[];
|
|
deny?: string[];
|
|
};
|
|
toolsBySender?: {
|
|
[k: string]: {
|
|
allow?: string[];
|
|
alsoAllow?: string[];
|
|
deny?: string[];
|
|
};
|
|
};
|
|
reactionNotifications?: "off" | "own" | "all" | "allowlist";
|
|
users?: (string | number)[];
|
|
channels?: {
|
|
[k: string]: {
|
|
allow?: boolean;
|
|
requireMention?: boolean;
|
|
tools?: {
|
|
allow?: string[];
|
|
alsoAllow?: string[];
|
|
deny?: string[];
|
|
};
|
|
toolsBySender?: {
|
|
[k: string]: {
|
|
allow?: string[];
|
|
alsoAllow?: string[];
|
|
deny?: string[];
|
|
};
|
|
};
|
|
skills?: string[];
|
|
enabled?: boolean;
|
|
users?: (string | number)[];
|
|
systemPrompt?: string;
|
|
autoThread?: boolean;
|
|
};
|
|
};
|
|
};
|
|
};
|
|
heartbeat?: {
|
|
showOk?: boolean;
|
|
showAlerts?: boolean;
|
|
useIndicator?: boolean;
|
|
};
|
|
execApprovals?: {
|
|
enabled?: boolean;
|
|
approvers?: (string | number)[];
|
|
agentFilter?: string[];
|
|
sessionFilter?: string[];
|
|
};
|
|
intents?: {
|
|
presence?: boolean;
|
|
guildMembers?: boolean;
|
|
};
|
|
};
|
|
};
|
|
};
|
|
googlechat?: {
|
|
name?: string;
|
|
capabilities?: string[];
|
|
enabled?: boolean;
|
|
configWrites?: boolean;
|
|
allowBots?: boolean;
|
|
requireMention?: boolean;
|
|
groupPolicy: "open" | "disabled" | "allowlist";
|
|
groupAllowFrom?: (string | number)[];
|
|
groups?: {
|
|
[k: string]: {
|
|
enabled?: boolean;
|
|
allow?: boolean;
|
|
requireMention?: boolean;
|
|
users?: (string | number)[];
|
|
systemPrompt?: string;
|
|
};
|
|
};
|
|
serviceAccount?:
|
|
| string
|
|
| {
|
|
[k: string]: unknown;
|
|
};
|
|
serviceAccountFile?: string;
|
|
audienceType?: "app-url" | "project-number";
|
|
audience?: string;
|
|
webhookPath?: string;
|
|
webhookUrl?: string;
|
|
botUser?: string;
|
|
historyLimit?: number;
|
|
dmHistoryLimit?: number;
|
|
dms?: {
|
|
[k: string]: {
|
|
historyLimit?: number;
|
|
};
|
|
};
|
|
textChunkLimit?: number;
|
|
chunkMode?: "length" | "newline";
|
|
blockStreaming?: boolean;
|
|
blockStreamingCoalesce?: {
|
|
minChars?: number;
|
|
maxChars?: number;
|
|
idleMs?: number;
|
|
};
|
|
mediaMaxMb?: number;
|
|
replyToMode?: "off" | "first" | "all";
|
|
actions?: {
|
|
reactions?: boolean;
|
|
};
|
|
dm?: {
|
|
enabled?: boolean;
|
|
policy: "pairing" | "allowlist" | "open" | "disabled";
|
|
allowFrom?: (string | number)[];
|
|
};
|
|
typingIndicator?: "none" | "message" | "reaction";
|
|
accounts?: {
|
|
[k: string]: {
|
|
name?: string;
|
|
capabilities?: string[];
|
|
enabled?: boolean;
|
|
configWrites?: boolean;
|
|
allowBots?: boolean;
|
|
requireMention?: boolean;
|
|
groupPolicy: "open" | "disabled" | "allowlist";
|
|
groupAllowFrom?: (string | number)[];
|
|
groups?: {
|
|
[k: string]: {
|
|
enabled?: boolean;
|
|
allow?: boolean;
|
|
requireMention?: boolean;
|
|
users?: (string | number)[];
|
|
systemPrompt?: string;
|
|
};
|
|
};
|
|
serviceAccount?:
|
|
| string
|
|
| {
|
|
[k: string]: unknown;
|
|
};
|
|
serviceAccountFile?: string;
|
|
audienceType?: "app-url" | "project-number";
|
|
audience?: string;
|
|
webhookPath?: string;
|
|
webhookUrl?: string;
|
|
botUser?: string;
|
|
historyLimit?: number;
|
|
dmHistoryLimit?: number;
|
|
dms?: {
|
|
[k: string]: {
|
|
historyLimit?: number;
|
|
};
|
|
};
|
|
textChunkLimit?: number;
|
|
chunkMode?: "length" | "newline";
|
|
blockStreaming?: boolean;
|
|
blockStreamingCoalesce?: {
|
|
minChars?: number;
|
|
maxChars?: number;
|
|
idleMs?: number;
|
|
};
|
|
mediaMaxMb?: number;
|
|
replyToMode?: "off" | "first" | "all";
|
|
actions?: {
|
|
reactions?: boolean;
|
|
};
|
|
dm?: {
|
|
enabled?: boolean;
|
|
policy: "pairing" | "allowlist" | "open" | "disabled";
|
|
allowFrom?: (string | number)[];
|
|
};
|
|
typingIndicator?: "none" | "message" | "reaction";
|
|
};
|
|
};
|
|
defaultAccount?: string;
|
|
};
|
|
slack?: {
|
|
name?: string;
|
|
mode: "socket" | "http";
|
|
signingSecret?: string;
|
|
webhookPath: string;
|
|
capabilities?: string[];
|
|
markdown?: {
|
|
tables?: "off" | "bullets" | "code";
|
|
};
|
|
enabled?: boolean;
|
|
commands?: {
|
|
native?: boolean | "auto";
|
|
nativeSkills?: boolean | "auto";
|
|
};
|
|
configWrites?: boolean;
|
|
botToken?: string;
|
|
appToken?: string;
|
|
userToken?: string;
|
|
userTokenReadOnly: boolean;
|
|
allowBots?: boolean;
|
|
requireMention?: boolean;
|
|
groupPolicy: "open" | "disabled" | "allowlist";
|
|
historyLimit?: number;
|
|
dmHistoryLimit?: number;
|
|
dms?: {
|
|
[k: string]: {
|
|
historyLimit?: number;
|
|
};
|
|
};
|
|
textChunkLimit?: number;
|
|
chunkMode?: "length" | "newline";
|
|
blockStreaming?: boolean;
|
|
blockStreamingCoalesce?: {
|
|
minChars?: number;
|
|
maxChars?: number;
|
|
idleMs?: number;
|
|
};
|
|
mediaMaxMb?: number;
|
|
reactionNotifications?: "off" | "own" | "all" | "allowlist";
|
|
reactionAllowlist?: (string | number)[];
|
|
replyToMode?: "off" | "first" | "all";
|
|
replyToModeByChatType?: {
|
|
direct?: "off" | "first" | "all";
|
|
group?: "off" | "first" | "all";
|
|
channel?: "off" | "first" | "all";
|
|
};
|
|
thread?: {
|
|
historyScope?: "thread" | "channel";
|
|
inheritParent?: boolean;
|
|
};
|
|
actions?: {
|
|
reactions?: boolean;
|
|
messages?: boolean;
|
|
pins?: boolean;
|
|
search?: boolean;
|
|
permissions?: boolean;
|
|
memberInfo?: boolean;
|
|
channelInfo?: boolean;
|
|
emojiList?: boolean;
|
|
};
|
|
slashCommand?: {
|
|
enabled?: boolean;
|
|
name?: string;
|
|
sessionPrefix?: string;
|
|
ephemeral?: boolean;
|
|
};
|
|
dm?: {
|
|
enabled?: boolean;
|
|
policy: "pairing" | "allowlist" | "open" | "disabled";
|
|
allowFrom?: (string | number)[];
|
|
groupEnabled?: boolean;
|
|
groupChannels?: (string | number)[];
|
|
replyToMode?: "off" | "first" | "all";
|
|
};
|
|
channels?: {
|
|
[k: string]: {
|
|
enabled?: boolean;
|
|
allow?: boolean;
|
|
requireMention?: boolean;
|
|
tools?: {
|
|
allow?: string[];
|
|
alsoAllow?: string[];
|
|
deny?: string[];
|
|
};
|
|
toolsBySender?: {
|
|
[k: string]: {
|
|
allow?: string[];
|
|
alsoAllow?: string[];
|
|
deny?: string[];
|
|
};
|
|
};
|
|
allowBots?: boolean;
|
|
users?: (string | number)[];
|
|
skills?: string[];
|
|
systemPrompt?: string;
|
|
};
|
|
};
|
|
heartbeat?: {
|
|
showOk?: boolean;
|
|
showAlerts?: boolean;
|
|
useIndicator?: boolean;
|
|
};
|
|
accounts?: {
|
|
[k: string]: {
|
|
name?: string;
|
|
mode?: "socket" | "http";
|
|
signingSecret?: string;
|
|
webhookPath?: string;
|
|
capabilities?: string[];
|
|
markdown?: {
|
|
tables?: "off" | "bullets" | "code";
|
|
};
|
|
enabled?: boolean;
|
|
commands?: {
|
|
native?: boolean | "auto";
|
|
nativeSkills?: boolean | "auto";
|
|
};
|
|
configWrites?: boolean;
|
|
botToken?: string;
|
|
appToken?: string;
|
|
userToken?: string;
|
|
userTokenReadOnly: boolean;
|
|
allowBots?: boolean;
|
|
requireMention?: boolean;
|
|
groupPolicy: "open" | "disabled" | "allowlist";
|
|
historyLimit?: number;
|
|
dmHistoryLimit?: number;
|
|
dms?: {
|
|
[k: string]: {
|
|
historyLimit?: number;
|
|
};
|
|
};
|
|
textChunkLimit?: number;
|
|
chunkMode?: "length" | "newline";
|
|
blockStreaming?: boolean;
|
|
blockStreamingCoalesce?: {
|
|
minChars?: number;
|
|
maxChars?: number;
|
|
idleMs?: number;
|
|
};
|
|
mediaMaxMb?: number;
|
|
reactionNotifications?: "off" | "own" | "all" | "allowlist";
|
|
reactionAllowlist?: (string | number)[];
|
|
replyToMode?: "off" | "first" | "all";
|
|
replyToModeByChatType?: {
|
|
direct?: "off" | "first" | "all";
|
|
group?: "off" | "first" | "all";
|
|
channel?: "off" | "first" | "all";
|
|
};
|
|
thread?: {
|
|
historyScope?: "thread" | "channel";
|
|
inheritParent?: boolean;
|
|
};
|
|
actions?: {
|
|
reactions?: boolean;
|
|
messages?: boolean;
|
|
pins?: boolean;
|
|
search?: boolean;
|
|
permissions?: boolean;
|
|
memberInfo?: boolean;
|
|
channelInfo?: boolean;
|
|
emojiList?: boolean;
|
|
};
|
|
slashCommand?: {
|
|
enabled?: boolean;
|
|
name?: string;
|
|
sessionPrefix?: string;
|
|
ephemeral?: boolean;
|
|
};
|
|
dm?: {
|
|
enabled?: boolean;
|
|
policy: "pairing" | "allowlist" | "open" | "disabled";
|
|
allowFrom?: (string | number)[];
|
|
groupEnabled?: boolean;
|
|
groupChannels?: (string | number)[];
|
|
replyToMode?: "off" | "first" | "all";
|
|
};
|
|
channels?: {
|
|
[k: string]: {
|
|
enabled?: boolean;
|
|
allow?: boolean;
|
|
requireMention?: boolean;
|
|
tools?: {
|
|
allow?: string[];
|
|
alsoAllow?: string[];
|
|
deny?: string[];
|
|
};
|
|
toolsBySender?: {
|
|
[k: string]: {
|
|
allow?: string[];
|
|
alsoAllow?: string[];
|
|
deny?: string[];
|
|
};
|
|
};
|
|
allowBots?: boolean;
|
|
users?: (string | number)[];
|
|
skills?: string[];
|
|
systemPrompt?: string;
|
|
};
|
|
};
|
|
heartbeat?: {
|
|
showOk?: boolean;
|
|
showAlerts?: boolean;
|
|
useIndicator?: boolean;
|
|
};
|
|
};
|
|
};
|
|
};
|
|
signal?: {
|
|
name?: string;
|
|
capabilities?: string[];
|
|
markdown?: {
|
|
tables?: "off" | "bullets" | "code";
|
|
};
|
|
enabled?: boolean;
|
|
configWrites?: boolean;
|
|
account?: string;
|
|
httpUrl?: string;
|
|
httpHost?: string;
|
|
httpPort?: number;
|
|
cliPath?: string;
|
|
autoStart?: boolean;
|
|
startupTimeoutMs?: number;
|
|
receiveMode?: "on-start" | "manual";
|
|
ignoreAttachments?: boolean;
|
|
ignoreStories?: boolean;
|
|
sendReadReceipts?: boolean;
|
|
dmPolicy: "pairing" | "allowlist" | "open" | "disabled";
|
|
allowFrom?: (string | number)[];
|
|
groupAllowFrom?: (string | number)[];
|
|
groupPolicy: "open" | "disabled" | "allowlist";
|
|
historyLimit?: number;
|
|
dmHistoryLimit?: number;
|
|
dms?: {
|
|
[k: string]: {
|
|
historyLimit?: number;
|
|
};
|
|
};
|
|
textChunkLimit?: number;
|
|
chunkMode?: "length" | "newline";
|
|
blockStreaming?: boolean;
|
|
blockStreamingCoalesce?: {
|
|
minChars?: number;
|
|
maxChars?: number;
|
|
idleMs?: number;
|
|
};
|
|
mediaMaxMb?: number;
|
|
reactionNotifications?: "off" | "own" | "all" | "allowlist";
|
|
reactionAllowlist?: (string | number)[];
|
|
actions?: {
|
|
reactions?: boolean;
|
|
};
|
|
reactionLevel?: "off" | "ack" | "minimal" | "extensive";
|
|
heartbeat?: {
|
|
showOk?: boolean;
|
|
showAlerts?: boolean;
|
|
useIndicator?: boolean;
|
|
};
|
|
accounts?: {
|
|
[k: string]: {
|
|
name?: string;
|
|
capabilities?: string[];
|
|
markdown?: {
|
|
tables?: "off" | "bullets" | "code";
|
|
};
|
|
enabled?: boolean;
|
|
configWrites?: boolean;
|
|
account?: string;
|
|
httpUrl?: string;
|
|
httpHost?: string;
|
|
httpPort?: number;
|
|
cliPath?: string;
|
|
autoStart?: boolean;
|
|
startupTimeoutMs?: number;
|
|
receiveMode?: "on-start" | "manual";
|
|
ignoreAttachments?: boolean;
|
|
ignoreStories?: boolean;
|
|
sendReadReceipts?: boolean;
|
|
dmPolicy: "pairing" | "allowlist" | "open" | "disabled";
|
|
allowFrom?: (string | number)[];
|
|
groupAllowFrom?: (string | number)[];
|
|
groupPolicy: "open" | "disabled" | "allowlist";
|
|
historyLimit?: number;
|
|
dmHistoryLimit?: number;
|
|
dms?: {
|
|
[k: string]: {
|
|
historyLimit?: number;
|
|
};
|
|
};
|
|
textChunkLimit?: number;
|
|
chunkMode?: "length" | "newline";
|
|
blockStreaming?: boolean;
|
|
blockStreamingCoalesce?: {
|
|
minChars?: number;
|
|
maxChars?: number;
|
|
idleMs?: number;
|
|
};
|
|
mediaMaxMb?: number;
|
|
reactionNotifications?: "off" | "own" | "all" | "allowlist";
|
|
reactionAllowlist?: (string | number)[];
|
|
actions?: {
|
|
reactions?: boolean;
|
|
};
|
|
reactionLevel?: "off" | "ack" | "minimal" | "extensive";
|
|
heartbeat?: {
|
|
showOk?: boolean;
|
|
showAlerts?: boolean;
|
|
useIndicator?: boolean;
|
|
};
|
|
};
|
|
};
|
|
};
|
|
imessage?: {
|
|
name?: string;
|
|
capabilities?: string[];
|
|
markdown?: {
|
|
tables?: "off" | "bullets" | "code";
|
|
};
|
|
enabled?: boolean;
|
|
configWrites?: boolean;
|
|
cliPath?: string;
|
|
dbPath?: string;
|
|
remoteHost?: string;
|
|
service?: "imessage" | "sms" | "auto";
|
|
region?: string;
|
|
dmPolicy: "pairing" | "allowlist" | "open" | "disabled";
|
|
allowFrom?: (string | number)[];
|
|
groupAllowFrom?: (string | number)[];
|
|
groupPolicy: "open" | "disabled" | "allowlist";
|
|
historyLimit?: number;
|
|
dmHistoryLimit?: number;
|
|
dms?: {
|
|
[k: string]: {
|
|
historyLimit?: number;
|
|
};
|
|
};
|
|
includeAttachments?: boolean;
|
|
mediaMaxMb?: number;
|
|
textChunkLimit?: number;
|
|
chunkMode?: "length" | "newline";
|
|
blockStreaming?: boolean;
|
|
blockStreamingCoalesce?: {
|
|
minChars?: number;
|
|
maxChars?: number;
|
|
idleMs?: number;
|
|
};
|
|
groups?: {
|
|
[k: string]: {
|
|
requireMention?: boolean;
|
|
tools?: {
|
|
allow?: string[];
|
|
alsoAllow?: string[];
|
|
deny?: string[];
|
|
};
|
|
toolsBySender?: {
|
|
[k: string]: {
|
|
allow?: string[];
|
|
alsoAllow?: string[];
|
|
deny?: string[];
|
|
};
|
|
};
|
|
};
|
|
};
|
|
heartbeat?: {
|
|
showOk?: boolean;
|
|
showAlerts?: boolean;
|
|
useIndicator?: boolean;
|
|
};
|
|
accounts?: {
|
|
[k: string]: {
|
|
name?: string;
|
|
capabilities?: string[];
|
|
markdown?: {
|
|
tables?: "off" | "bullets" | "code";
|
|
};
|
|
enabled?: boolean;
|
|
configWrites?: boolean;
|
|
cliPath?: string;
|
|
dbPath?: string;
|
|
remoteHost?: string;
|
|
service?: "imessage" | "sms" | "auto";
|
|
region?: string;
|
|
dmPolicy: "pairing" | "allowlist" | "open" | "disabled";
|
|
allowFrom?: (string | number)[];
|
|
groupAllowFrom?: (string | number)[];
|
|
groupPolicy: "open" | "disabled" | "allowlist";
|
|
historyLimit?: number;
|
|
dmHistoryLimit?: number;
|
|
dms?: {
|
|
[k: string]: {
|
|
historyLimit?: number;
|
|
};
|
|
};
|
|
includeAttachments?: boolean;
|
|
mediaMaxMb?: number;
|
|
textChunkLimit?: number;
|
|
chunkMode?: "length" | "newline";
|
|
blockStreaming?: boolean;
|
|
blockStreamingCoalesce?: {
|
|
minChars?: number;
|
|
maxChars?: number;
|
|
idleMs?: number;
|
|
};
|
|
groups?: {
|
|
[k: string]: {
|
|
requireMention?: boolean;
|
|
tools?: {
|
|
allow?: string[];
|
|
alsoAllow?: string[];
|
|
deny?: string[];
|
|
};
|
|
toolsBySender?: {
|
|
[k: string]: {
|
|
allow?: string[];
|
|
alsoAllow?: string[];
|
|
deny?: string[];
|
|
};
|
|
};
|
|
};
|
|
};
|
|
heartbeat?: {
|
|
showOk?: boolean;
|
|
showAlerts?: boolean;
|
|
useIndicator?: boolean;
|
|
};
|
|
};
|
|
};
|
|
};
|
|
bluebubbles?: {
|
|
name?: string;
|
|
capabilities?: string[];
|
|
markdown?: {
|
|
tables?: "off" | "bullets" | "code";
|
|
};
|
|
configWrites?: boolean;
|
|
enabled?: boolean;
|
|
serverUrl?: string;
|
|
password?: string;
|
|
webhookPath?: string;
|
|
dmPolicy: "pairing" | "allowlist" | "open" | "disabled";
|
|
allowFrom?: (string | number)[];
|
|
groupAllowFrom?: (string | number)[];
|
|
groupPolicy: "open" | "disabled" | "allowlist";
|
|
historyLimit?: number;
|
|
dmHistoryLimit?: number;
|
|
dms?: {
|
|
[k: string]: {
|
|
historyLimit?: number;
|
|
};
|
|
};
|
|
textChunkLimit?: number;
|
|
chunkMode?: "length" | "newline";
|
|
mediaMaxMb?: number;
|
|
sendReadReceipts?: boolean;
|
|
blockStreaming?: boolean;
|
|
blockStreamingCoalesce?: {
|
|
minChars?: number;
|
|
maxChars?: number;
|
|
idleMs?: number;
|
|
};
|
|
groups?: {
|
|
[k: string]: {
|
|
requireMention?: boolean;
|
|
tools?: {
|
|
allow?: string[];
|
|
alsoAllow?: string[];
|
|
deny?: string[];
|
|
};
|
|
toolsBySender?: {
|
|
[k: string]: {
|
|
allow?: string[];
|
|
alsoAllow?: string[];
|
|
deny?: string[];
|
|
};
|
|
};
|
|
};
|
|
};
|
|
heartbeat?: {
|
|
showOk?: boolean;
|
|
showAlerts?: boolean;
|
|
useIndicator?: boolean;
|
|
};
|
|
accounts?: {
|
|
[k: string]: {
|
|
name?: string;
|
|
capabilities?: string[];
|
|
markdown?: {
|
|
tables?: "off" | "bullets" | "code";
|
|
};
|
|
configWrites?: boolean;
|
|
enabled?: boolean;
|
|
serverUrl?: string;
|
|
password?: string;
|
|
webhookPath?: string;
|
|
dmPolicy: "pairing" | "allowlist" | "open" | "disabled";
|
|
allowFrom?: (string | number)[];
|
|
groupAllowFrom?: (string | number)[];
|
|
groupPolicy: "open" | "disabled" | "allowlist";
|
|
historyLimit?: number;
|
|
dmHistoryLimit?: number;
|
|
dms?: {
|
|
[k: string]: {
|
|
historyLimit?: number;
|
|
};
|
|
};
|
|
textChunkLimit?: number;
|
|
chunkMode?: "length" | "newline";
|
|
mediaMaxMb?: number;
|
|
sendReadReceipts?: boolean;
|
|
blockStreaming?: boolean;
|
|
blockStreamingCoalesce?: {
|
|
minChars?: number;
|
|
maxChars?: number;
|
|
idleMs?: number;
|
|
};
|
|
groups?: {
|
|
[k: string]: {
|
|
requireMention?: boolean;
|
|
tools?: {
|
|
allow?: string[];
|
|
alsoAllow?: string[];
|
|
deny?: string[];
|
|
};
|
|
toolsBySender?: {
|
|
[k: string]: {
|
|
allow?: string[];
|
|
alsoAllow?: string[];
|
|
deny?: string[];
|
|
};
|
|
};
|
|
};
|
|
};
|
|
heartbeat?: {
|
|
showOk?: boolean;
|
|
showAlerts?: boolean;
|
|
useIndicator?: boolean;
|
|
};
|
|
};
|
|
};
|
|
actions?: {
|
|
reactions?: boolean;
|
|
edit?: boolean;
|
|
unsend?: boolean;
|
|
reply?: boolean;
|
|
sendWithEffect?: boolean;
|
|
renameGroup?: boolean;
|
|
setGroupIcon?: boolean;
|
|
addParticipant?: boolean;
|
|
removeParticipant?: boolean;
|
|
leaveGroup?: boolean;
|
|
sendAttachment?: boolean;
|
|
};
|
|
};
|
|
msteams?: {
|
|
enabled?: boolean;
|
|
capabilities?: string[];
|
|
markdown?: {
|
|
tables?: "off" | "bullets" | "code";
|
|
};
|
|
configWrites?: boolean;
|
|
appId?: string;
|
|
appPassword?: string;
|
|
tenantId?: string;
|
|
webhook?: {
|
|
port?: number;
|
|
path?: string;
|
|
};
|
|
dmPolicy: "pairing" | "allowlist" | "open" | "disabled";
|
|
allowFrom?: string[];
|
|
groupAllowFrom?: string[];
|
|
groupPolicy: "open" | "disabled" | "allowlist";
|
|
textChunkLimit?: number;
|
|
chunkMode?: "length" | "newline";
|
|
blockStreamingCoalesce?: {
|
|
minChars?: number;
|
|
maxChars?: number;
|
|
idleMs?: number;
|
|
};
|
|
mediaAllowHosts?: string[];
|
|
requireMention?: boolean;
|
|
historyLimit?: number;
|
|
dmHistoryLimit?: number;
|
|
dms?: {
|
|
[k: string]: {
|
|
historyLimit?: number;
|
|
};
|
|
};
|
|
replyStyle?: "thread" | "top-level";
|
|
teams?: {
|
|
[k: string]: {
|
|
requireMention?: boolean;
|
|
tools?: {
|
|
allow?: string[];
|
|
alsoAllow?: string[];
|
|
deny?: string[];
|
|
};
|
|
toolsBySender?: {
|
|
[k: string]: {
|
|
allow?: string[];
|
|
alsoAllow?: string[];
|
|
deny?: string[];
|
|
};
|
|
};
|
|
replyStyle?: "thread" | "top-level";
|
|
channels?: {
|
|
[k: string]: {
|
|
requireMention?: boolean;
|
|
tools?: {
|
|
allow?: string[];
|
|
alsoAllow?: string[];
|
|
deny?: string[];
|
|
};
|
|
toolsBySender?: {
|
|
[k: string]: {
|
|
allow?: string[];
|
|
alsoAllow?: string[];
|
|
deny?: string[];
|
|
};
|
|
};
|
|
replyStyle?: "thread" | "top-level";
|
|
};
|
|
};
|
|
};
|
|
};
|
|
mediaMaxMb?: number;
|
|
sharePointSiteId?: string;
|
|
heartbeat?: {
|
|
showOk?: boolean;
|
|
showAlerts?: boolean;
|
|
useIndicator?: boolean;
|
|
};
|
|
};
|
|
[k: string]: unknown;
|
|
};
|
|
discovery?: {
|
|
wideArea?: {
|
|
enabled?: boolean;
|
|
};
|
|
mdns?: {
|
|
mode?: "off" | "minimal" | "full";
|
|
};
|
|
};
|
|
canvasHost?: {
|
|
enabled?: boolean;
|
|
root?: string;
|
|
port?: number;
|
|
liveReload?: boolean;
|
|
};
|
|
talk?: {
|
|
voiceId?: string;
|
|
voiceAliases?: {
|
|
[k: string]: string;
|
|
};
|
|
modelId?: string;
|
|
outputFormat?: string;
|
|
apiKey?: string;
|
|
interruptOnSpeech?: boolean;
|
|
};
|
|
gateway?: {
|
|
port?: number;
|
|
mode?: "local" | "remote";
|
|
bind?: "auto" | "lan" | "loopback" | "custom" | "tailnet";
|
|
controlUi?: {
|
|
enabled?: boolean;
|
|
basePath?: string;
|
|
allowInsecureAuth?: boolean;
|
|
dangerouslyDisableDeviceAuth?: boolean;
|
|
};
|
|
auth?: {
|
|
mode?: "token" | "password";
|
|
token?: string;
|
|
password?: string;
|
|
allowTailscale?: boolean;
|
|
};
|
|
trustedProxies?: string[];
|
|
tailscale?: {
|
|
mode?: "off" | "serve" | "funnel";
|
|
resetOnExit?: boolean;
|
|
};
|
|
remote?: {
|
|
url?: string;
|
|
transport?: "ssh" | "direct";
|
|
token?: string;
|
|
password?: string;
|
|
tlsFingerprint?: string;
|
|
sshTarget?: string;
|
|
sshIdentity?: string;
|
|
};
|
|
reload?: {
|
|
mode?: "off" | "restart" | "hot" | "hybrid";
|
|
debounceMs?: number;
|
|
};
|
|
tls?: {
|
|
enabled?: boolean;
|
|
autoGenerate?: boolean;
|
|
certPath?: string;
|
|
keyPath?: string;
|
|
caPath?: string;
|
|
};
|
|
http?: {
|
|
endpoints?: {
|
|
chatCompletions?: {
|
|
enabled?: boolean;
|
|
};
|
|
responses?: {
|
|
enabled?: boolean;
|
|
maxBodyBytes?: number;
|
|
files?: {
|
|
allowUrl?: boolean;
|
|
allowedMimes?: string[];
|
|
maxBytes?: number;
|
|
maxChars?: number;
|
|
maxRedirects?: number;
|
|
timeoutMs?: number;
|
|
pdf?: {
|
|
maxPages?: number;
|
|
maxPixels?: number;
|
|
minTextChars?: number;
|
|
};
|
|
};
|
|
images?: {
|
|
allowUrl?: boolean;
|
|
allowedMimes?: string[];
|
|
maxBytes?: number;
|
|
maxRedirects?: number;
|
|
timeoutMs?: number;
|
|
};
|
|
};
|
|
};
|
|
};
|
|
nodes?: {
|
|
browser?: {
|
|
mode?: "auto" | "manual" | "off";
|
|
node?: string;
|
|
};
|
|
allowCommands?: string[];
|
|
denyCommands?: string[];
|
|
};
|
|
};
|
|
skills?: {
|
|
allowBundled?: string[];
|
|
load?: {
|
|
extraDirs?: string[];
|
|
watch?: boolean;
|
|
watchDebounceMs?: number;
|
|
};
|
|
install?: {
|
|
preferBrew?: boolean;
|
|
nodeManager?: "npm" | "pnpm" | "yarn" | "bun";
|
|
};
|
|
entries?: {
|
|
[k: string]: {
|
|
enabled?: boolean;
|
|
apiKey?: string;
|
|
env?: {
|
|
[k: string]: string;
|
|
};
|
|
config?: {
|
|
[k: string]: unknown;
|
|
};
|
|
};
|
|
};
|
|
};
|
|
plugins?: {
|
|
enabled?: boolean;
|
|
allow?: string[];
|
|
deny?: string[];
|
|
load?: {
|
|
paths?: string[];
|
|
};
|
|
slots?: {
|
|
memory?: string;
|
|
};
|
|
entries?: {
|
|
[k: string]: {
|
|
enabled?: boolean;
|
|
config?: {
|
|
[k: string]: unknown;
|
|
};
|
|
};
|
|
};
|
|
installs?: {
|
|
[k: string]: {
|
|
source: "npm" | "archive" | "path";
|
|
spec?: string;
|
|
sourcePath?: string;
|
|
installPath?: string;
|
|
version?: string;
|
|
installedAt?: string;
|
|
};
|
|
};
|
|
};
|
|
}
|