Files
bare-operating-system/packages/bare-os-booter/lib/host/bare-os-loader-audit.js
T
2026-08-18 18:11:28 -04:00

56 lines
1.2 KiB
JavaScript

/**
* Loader audit NDJSON under /run/bare-os/loader-audit.ndjson.
*/
import b4a from 'b4a'
/**
* @param {{
* env: Record<string, string | undefined>,
* vfs: { readFile?: Function, writeFile?: Function } | null | undefined,
* sessionId: string
* }} deps
*/
export function createKernelLoaderAuditAppend(deps) {
const { env, vfs, sessionId } = deps
/**
* Cap-gated via BARE_OS_LOADER_AUDIT.
* @param {Record<string, unknown>} rec
*/
return async function appendKernelLoaderAuditLine(rec) {
if (
env.BARE_OS_LOADER_AUDIT !== '1' &&
env.BARE_OS_LOADER_AUDIT !== 'true'
)
return
if (
!vfs ||
typeof vfs.readFile !== 'function' ||
typeof vfs.writeFile !== 'function'
)
return
const line =
JSON.stringify({
type: 'loader_audit',
ts: Date.now(),
sessionId,
...rec
}) + '\n'
try {
let prev = ''
try {
const buf = await vfs.readFile('/run/bare-os/loader-audit.ndjson')
prev = b4a.toString(buf)
} catch {
/* new */
}
await vfs.writeFile(
'/run/bare-os/loader-audit.ndjson',
b4a.from(prev + line)
)
} catch {
/* ignore */
}
}
}