Files
openclaw/src/commitments/config.ts
Vignesh b277ae3f4c [codex] Fix commitments safety and coverage (#75302)
* fix commitments safety and coverage

* Repair commitments safety PR review blockers

* fix(clawsweeper): address review for automerge-openclaw-openclaw-75302 (1)

* Repair commitments safety PR review blocker

---------

Co-authored-by: clawsweeper-repair <clawsweeper-repair@users.noreply.github.com>
2026-05-01 01:14:07 +00:00

52 lines
1.9 KiB
TypeScript

import { resolveUserTimezone } from "../agents/date-time.js";
import type { OpenClawConfig } from "../config/config.js";
export const DEFAULT_COMMITMENT_EXTRACTION_DEBOUNCE_MS = 15_000;
export const DEFAULT_COMMITMENT_BATCH_MAX_ITEMS = 8;
export const DEFAULT_COMMITMENT_EXTRACTION_QUEUE_MAX_ITEMS = 64;
export const DEFAULT_COMMITMENT_CONFIDENCE_THRESHOLD = 0.72;
export const DEFAULT_COMMITMENT_CARE_CONFIDENCE_THRESHOLD = 0.86;
export const DEFAULT_COMMITMENT_EXTRACTION_TIMEOUT_SECONDS = 45;
export const DEFAULT_COMMITMENT_MAX_PER_HEARTBEAT = 3;
export const DEFAULT_COMMITMENT_EXPIRE_AFTER_HOURS = 72;
export const DEFAULT_COMMITMENT_MAX_PER_DAY = 3;
export type ResolvedCommitmentsConfig = {
enabled: boolean;
maxPerDay: number;
extraction: {
debounceMs: number;
batchMaxItems: number;
queueMaxItems: number;
confidenceThreshold: number;
careConfidenceThreshold: number;
timeoutSeconds: number;
};
};
function positiveInt(value: unknown, fallback: number): number {
return typeof value === "number" && Number.isFinite(value) && value > 0
? Math.floor(value)
: fallback;
}
export function resolveCommitmentsConfig(cfg?: OpenClawConfig): ResolvedCommitmentsConfig {
const raw = cfg?.commitments;
return {
enabled: raw?.enabled === true,
maxPerDay: positiveInt(raw?.maxPerDay, DEFAULT_COMMITMENT_MAX_PER_DAY),
extraction: {
debounceMs: DEFAULT_COMMITMENT_EXTRACTION_DEBOUNCE_MS,
batchMaxItems: DEFAULT_COMMITMENT_BATCH_MAX_ITEMS,
queueMaxItems: DEFAULT_COMMITMENT_EXTRACTION_QUEUE_MAX_ITEMS,
confidenceThreshold: DEFAULT_COMMITMENT_CONFIDENCE_THRESHOLD,
careConfidenceThreshold: DEFAULT_COMMITMENT_CARE_CONFIDENCE_THRESHOLD,
timeoutSeconds: DEFAULT_COMMITMENT_EXTRACTION_TIMEOUT_SECONDS,
},
};
}
export function resolveCommitmentTimezone(cfg?: OpenClawConfig): string {
return resolveUserTimezone(cfg?.agents?.defaults?.userTimezone);
}