export { AUDIT_LOG_PREFIX } from './constants.js'; export declare const AUDIT_FIELD_MAX_CHARS = 4096; export type AuditField = string | number | boolean | undefined; export declare function auditSha256(value: string): string; /** * Cuts at the last whitespace inside the budget rather than mid-token, so a secret is never split * in half before the patterns get a look at it — half a token matches nothing and would survive. */ export declare function truncateAuditField(value: string): string; /** * Redact an input payload (code, request body, tool arguments) down to something loggable. * Truncation runs first so the patterns only ever see whole tokens, and so the 14 regexes run * over at most `AUDIT_FIELD_MAX_CHARS` instead of a multi-megabyte body. */ export declare function auditInput(value: string, injectedSecretValues?: readonly string[]): string; /** * Outputs are never recorded — an upstream response or tool result can hold credentials nobody * can pattern-match. The digest still lets a replayed run be compared against the original. */ export declare function auditOutputDigest(value: string): { sha256: string; bytes: number; }; /** * Header values never reach the log. Redacting a fixed list of sensitive names would not be * enough — sandbox code picks its own header names, so any allow-list leaks the creative ones. */ export declare function auditHeaderNames(headers: Record | undefined): string; /** Full URL with its query string, credential-shaped parameter values replaced. */ export declare function auditUrl(rawUrl: string, injectedSecretValues?: readonly string[]): string; /** * Values are JSON-encoded so a multi-line payload (submitted code, an assembled prompt) stays on * one log line, which is what makes one record one Grafana row. */ export declare function logAuditRecord(action: string, fields: Record): void; //# sourceMappingURL=audit-log.d.ts.map