VFS readFile often returns Uint8Array; SFTP DATA and CHANNEL_DATA assumed

Buffer.isBuffer or treated payloads as UTF-8, corrupting packets and risking
native aborts (bad_optional_access). Normalize ArrayBuffer views in
SFTP.prototype.data and Protocol channelData/channelExtData; align READ shim.

Also includes earlier SFTP hardening: REQUEST.READ/WRITE/FSETSTAT guards,
enqueueSftpReply(reqid) + FAILURE on handler error, CHANGELOG.
This commit is contained in:
Raven Scott
2026-04-21 18:06:22 -04:00
parent 0359129a72
commit baae7b3482
13 changed files with 432 additions and 416 deletions
+1 -1
View File
@@ -1,6 +1,6 @@
{
"schemaVersion": 1,
"generatedAt": "2026-04-21T21:59:30.828Z",
"generatedAt": "2026-04-21T22:05:46.195Z",
"normativeManifest": "packages/bare-os-booter/lib/bare-module-manifest.json",
"buildTool": "packages/bare-os-bare-libs/build.mjs",
"bundles": [
+1 -1
View File
@@ -1,7 +1,7 @@
{
"schema": 2,
"profileId": "bare-os-posix-like",
"generatedAt": "2026-04-21T21:59:29.663Z",
"generatedAt": "2026-04-21T22:05:44.363Z",
"note": "Sparse POSIX Issue 7 coverage hints for /bin utilities. Omitted command names are not yet profiled here.",
"commandIndex": [
{
+204 -204
View File
@@ -25,36 +25,36 @@
"compactEncoding"
]
},
{
"path": "/lib/bare/bundles/protomux.js",
"keys": [
"protomux"
]
},
{
"path": "/lib/bare/bundles/bareUrl.js",
"keys": [
"bareUrl"
]
},
{
"path": "/lib/bare/bundles/protomux.js",
"keys": [
"protomux"
]
},
{
"path": "/lib/bare/bundles/barePath.js",
"keys": [
"barePath"
]
},
{
"path": "/lib/bare/bundles/bareEncoding.js",
"keys": [
"bareEncoding"
]
},
{
"path": "/lib/bare/bundles/bareEvents.js",
"keys": [
"bareEvents"
]
},
{
"path": "/lib/bare/bundles/bareEncoding.js",
"keys": [
"bareEncoding"
]
},
{
"path": "/lib/bare/bundles/bareAbort.js",
"keys": [
@@ -79,12 +79,6 @@
"bareAddonResolve"
]
},
{
"path": "/lib/bare/bundles/bareAssert.js",
"keys": [
"bareAssert"
]
},
{
"path": "/lib/bare/bundles/bareReadline.js",
"keys": [
@@ -104,9 +98,9 @@
]
},
{
"path": "/lib/bare/bundles/fetch.js",
"path": "/lib/bare/bundles/bareAssert.js",
"keys": [
"fetch"
"bareAssert"
]
},
{
@@ -122,9 +116,9 @@
]
},
{
"path": "/lib/bare/bundles/bareApk.js",
"path": "/lib/bare/bundles/fetch.js",
"keys": [
"bareApk"
"fetch"
]
},
{
@@ -133,6 +127,12 @@
"bareBmp"
]
},
{
"path": "/lib/bare/bundles/bareBuffer.js",
"keys": [
"bareBuffer"
]
},
{
"path": "/lib/bare/bundles/bareBundleCompile.js",
"keys": [
@@ -146,9 +146,9 @@
]
},
{
"path": "/lib/bare/bundles/bareBuffer.js",
"path": "/lib/bare/bundles/bareApk.js",
"keys": [
"bareBuffer"
"bareApk"
]
},
{
@@ -163,6 +163,12 @@
"bareConsole"
]
},
{
"path": "/lib/bare/bundles/bareChannel.js",
"keys": [
"bareChannel"
]
},
{
"path": "/lib/bare/bundles/bareBundleEvaluate.js",
"keys": [
@@ -170,9 +176,9 @@
]
},
{
"path": "/lib/bare/bundles/bareChannel.js",
"path": "/lib/bare/bundles/bareBoot.js",
"keys": [
"bareChannel"
"bareBoot"
]
},
{
@@ -188,9 +194,9 @@
]
},
{
"path": "/lib/bare/bundles/bareBoot.js",
"path": "/lib/bare/bundles/bareDiagnosticsChannel.js",
"keys": [
"bareBoot"
"bareDiagnosticsChannel"
]
},
{
@@ -205,36 +211,36 @@
"bareCov"
]
},
{
"path": "/lib/bare/bundles/bareDiagnosticsChannel.js",
"keys": [
"bareDiagnosticsChannel"
]
},
{
"path": "/lib/bare/bundles/bareDns.js",
"keys": [
"bareDns"
]
},
{
"path": "/lib/bare/bundles/bareDaemon.js",
"keys": [
"bareDaemon"
]
},
{
"path": "/lib/bare/bundles/bareEnv.js",
"keys": [
"bareEnv"
]
},
{
"path": "/lib/bare/bundles/bareDaemon.js",
"keys": [
"bareDaemon"
]
},
{
"path": "/lib/bare/bundles/bareExif.js",
"keys": [
"bareExif"
]
},
{
"path": "/lib/bare/bundles/bareDgram.js",
"keys": [
"bareDgram"
]
},
{
"path": "/lib/bare/bundles/bareFfmpeg.js",
"keys": [
@@ -248,9 +254,9 @@
]
},
{
"path": "/lib/bare/bundles/bareDgram.js",
"path": "/lib/bare/bundles/bareFormat.js",
"keys": [
"bareDgram"
"bareFormat"
]
},
{
@@ -259,36 +265,18 @@
"bareFormData"
]
},
{
"path": "/lib/bare/bundles/bareFormat.js",
"keys": [
"bareFormat"
]
},
{
"path": "/lib/bare/bundles/bareGif.js",
"keys": [
"bareGif"
]
},
{
"path": "/lib/bare/bundles/bareHrtime.js",
"keys": [
"bareHrtime"
]
},
{
"path": "/lib/bare/bundles/bareFileLogger.js",
"keys": [
"bareFileLogger"
]
},
{
"path": "/lib/bare/bundles/bareHeif.js",
"keys": [
"bareHeif"
]
},
{
"path": "/lib/bare/bundles/bareGtk.js",
"keys": [
@@ -296,9 +284,15 @@
]
},
{
"path": "/lib/bare/bundles/bareFs.js",
"path": "/lib/bare/bundles/bareHrtime.js",
"keys": [
"bareFs"
"bareHrtime"
]
},
{
"path": "/lib/bare/bundles/bareHeif.js",
"keys": [
"bareHeif"
]
},
{
@@ -307,6 +301,12 @@
"bareHttpParser"
]
},
{
"path": "/lib/bare/bundles/bareFs.js",
"keys": [
"bareFs"
]
},
{
"path": "/lib/bare/bundles/bareIco.js",
"keys": [
@@ -325,24 +325,30 @@
"bareHttp1"
]
},
{
"path": "/lib/bare/bundles/bareInspect.js",
"keys": [
"bareInspect"
]
},
{
"path": "/lib/bare/bundles/bareHttps.js",
"keys": [
"bareHttps"
]
},
{
"path": "/lib/bare/bundles/bareInspect.js",
"keys": [
"bareInspect"
]
},
{
"path": "/lib/bare/bundles/bareJpeg.js",
"keys": [
"bareJpeg"
]
},
{
"path": "/lib/bare/bundles/bareIntl.js",
"keys": [
"bareIntl"
]
},
{
"path": "/lib/bare/bundles/bareIpc.js",
"keys": [
@@ -350,9 +356,9 @@
]
},
{
"path": "/lib/bare/bundles/bareIntl.js",
"path": "/lib/bare/bundles/bareInspector.js",
"keys": [
"bareIntl"
"bareInspector"
]
},
{
@@ -367,30 +373,24 @@
"bareLief"
]
},
{
"path": "/lib/bare/bundles/bareInspector.js",
"keys": [
"bareInspector"
]
},
{
"path": "/lib/bare/bundles/bareMake.js",
"keys": [
"bareMake"
]
},
{
"path": "/lib/bare/bundles/bareModuleResolve.js",
"keys": [
"bareModuleResolve"
]
},
{
"path": "/lib/bare/bundles/bareLink.js",
"keys": [
"bareLink"
]
},
{
"path": "/lib/bare/bundles/bareModuleResolve.js",
"keys": [
"bareModuleResolve"
]
},
{
"path": "/lib/bare/bundles/bareModuleLexer.js",
"keys": [
@@ -409,42 +409,36 @@
"bareMedia"
]
},
{
"path": "/lib/bare/bundles/bareNdk.js",
"keys": [
"bareNdk"
]
},
{
"path": "/lib/bare/bundles/bareNodeFetch.js",
"keys": [
"bareNodeFetch"
]
},
{
"path": "/lib/bare/bundles/bareNative.js",
"keys": [
"bareNative"
]
},
{
"path": "/lib/bare/bundles/bareNet.js",
"keys": [
"bareNet"
]
},
{
"path": "/lib/bare/bundles/bareOpen.js",
"keys": [
"bareOpen"
]
},
{
"path": "/lib/bare/bundles/bareModuleTraverse.js",
"keys": [
"bareModuleTraverse"
]
},
{
"path": "/lib/bare/bundles/bareNdk.js",
"keys": [
"bareNdk"
]
},
{
"path": "/lib/bare/bundles/bareNet.js",
"keys": [
"bareNet"
]
},
{
"path": "/lib/bare/bundles/bareNodeFetch.js",
"keys": [
"bareNodeFetch"
]
},
{
"path": "/lib/bare/bundles/bareOs.js",
"keys": [
@@ -452,9 +446,9 @@
]
},
{
"path": "/lib/bare/bundles/barePerformance.js",
"path": "/lib/bare/bundles/bareOpen.js",
"keys": [
"barePerformance"
"bareOpen"
]
},
{
@@ -464,9 +458,15 @@
]
},
{
"path": "/lib/bare/bundles/barePng.js",
"path": "/lib/bare/bundles/barePerformance.js",
"keys": [
"barePng"
"barePerformance"
]
},
{
"path": "/lib/bare/bundles/bareDev.js",
"keys": [
"bareDev"
]
},
{
@@ -476,9 +476,15 @@
]
},
{
"path": "/lib/bare/bundles/bareDev.js",
"path": "/lib/bare/bundles/barePng.js",
"keys": [
"bareDev"
"barePng"
]
},
{
"path": "/lib/bare/bundles/barePunycode.js",
"keys": [
"barePunycode"
]
},
{
@@ -499,12 +505,6 @@
"bareQuerystring"
]
},
{
"path": "/lib/bare/bundles/barePunycode.js",
"keys": [
"barePunycode"
]
},
{
"path": "/lib/bare/bundles/bareQueueMicrotask.js",
"keys": [
@@ -517,12 +517,6 @@
"barePrebuild"
]
},
{
"path": "/lib/bare/bundles/bareRealm.js",
"keys": [
"bareRealm"
]
},
{
"path": "/lib/bare/bundles/bareProcess.js",
"keys": [
@@ -530,27 +524,9 @@
]
},
{
"path": "/lib/bare/bundles/bareRuntime.js",
"path": "/lib/bare/bundles/bareRealm.js",
"keys": [
"bareRuntime"
]
},
{
"path": "/lib/bare/bundles/bareSdl.js",
"keys": [
"bareSdl"
]
},
{
"path": "/lib/bare/bundles/bareRepl.js",
"keys": [
"bareRepl"
]
},
{
"path": "/lib/bare/bundles/barePromClient.js",
"keys": [
"barePromClient"
"bareRealm"
]
},
{
@@ -559,6 +535,24 @@
"bareRpc"
]
},
{
"path": "/lib/bare/bundles/barePromClient.js",
"keys": [
"barePromClient"
]
},
{
"path": "/lib/bare/bundles/bareRepl.js",
"keys": [
"bareRepl"
]
},
{
"path": "/lib/bare/bundles/bareRuntime.js",
"keys": [
"bareRuntime"
]
},
{
"path": "/lib/bare/bundles/bareSemver.js",
"keys": [
@@ -566,9 +560,9 @@
]
},
{
"path": "/lib/bare/bundles/bareSignals.js",
"path": "/lib/bare/bundles/bareSdl.js",
"keys": [
"bareSignals"
"bareSdl"
]
},
{
@@ -578,9 +572,9 @@
]
},
{
"path": "/lib/bare/bundles/bareStream.js",
"path": "/lib/bare/bundles/bareSignals.js",
"keys": [
"bareStream"
"bareSignals"
]
},
{
@@ -589,12 +583,6 @@
"bareStdio"
]
},
{
"path": "/lib/bare/bundles/bareSidecar.js",
"keys": [
"bareSidecar"
]
},
{
"path": "/lib/bare/bundles/bareStringDecoder.js",
"keys": [
@@ -608,15 +596,15 @@
]
},
{
"path": "/lib/bare/bundles/bareSvg.js",
"path": "/lib/bare/bundles/bareStream.js",
"keys": [
"bareSvg"
"bareStream"
]
},
{
"path": "/lib/bare/bundles/bareSystemLogger.js",
"path": "/lib/bare/bundles/bareSidecar.js",
"keys": [
"bareSystemLogger"
"bareSidecar"
]
},
{
@@ -625,6 +613,12 @@
"bareStructuredClone"
]
},
{
"path": "/lib/bare/bundles/bareSvg.js",
"keys": [
"bareSvg"
]
},
{
"path": "/lib/bare/bundles/bareTap.js",
"keys": [
@@ -637,6 +631,12 @@
"bareSubprocess"
]
},
{
"path": "/lib/bare/bundles/bareSystemLogger.js",
"keys": [
"bareSystemLogger"
]
},
{
"path": "/lib/bare/bundles/bareTiff.js",
"keys": [
@@ -655,6 +655,12 @@
"bareTimers"
]
},
{
"path": "/lib/bare/bundles/bareThread.js",
"keys": [
"bareThread"
]
},
{
"path": "/lib/bare/bundles/bareTpl.js",
"keys": [
@@ -667,6 +673,12 @@
"bareType"
]
},
{
"path": "/lib/bare/bundles/bareTls.js",
"keys": [
"bareTls"
]
},
{
"path": "/lib/bare/bundles/bareUiKit.js",
"keys": [
@@ -680,9 +692,9 @@
]
},
{
"path": "/lib/bare/bundles/bareTls.js",
"path": "/lib/bare/bundles/bareV8.js",
"keys": [
"bareTls"
"bareV8"
]
},
{
@@ -691,18 +703,6 @@
"bareUnpack"
]
},
{
"path": "/lib/bare/bundles/bareThread.js",
"keys": [
"bareThread"
]
},
{
"path": "/lib/bare/bundles/bareV8.js",
"keys": [
"bareV8"
]
},
{
"path": "/lib/bare/bundles/bareVm.js",
"keys": [
@@ -721,48 +721,48 @@
"bareWebKit"
]
},
{
"path": "/lib/bare/bundles/bareWebp.js",
"keys": [
"bareWebp"
]
},
{
"path": "/lib/bare/bundles/bareUnionBundle.js",
"keys": [
"bareUnionBundle"
]
},
{
"path": "/lib/bare/bundles/bareWebKitGtk.js",
"keys": [
"bareWebKitGtk"
]
},
{
"path": "/lib/bare/bundles/bareWinUi.js",
"keys": [
"bareWinUi"
]
},
{
"path": "/lib/bare/bundles/bareV8ToIstanbul.js",
"keys": [
"bareV8ToIstanbul"
]
},
{
"path": "/lib/bare/bundles/bareUtils.js",
"keys": [
"bareUtils"
]
},
{
"path": "/lib/bare/bundles/bareWebp.js",
"keys": [
"bareWebp"
]
},
{
"path": "/lib/bare/bundles/bareWebKitGtk.js",
"keys": [
"bareWebKitGtk"
]
},
{
"path": "/lib/bare/bundles/bareV8ToIstanbul.js",
"keys": [
"bareV8ToIstanbul"
]
},
{
"path": "/lib/bare/bundles/bareWhich.js",
"keys": [
"bareWhich"
]
},
{
"path": "/lib/bare/bundles/bareWinUi.js",
"keys": [
"bareWinUi"
]
},
{
"path": "/lib/bare/bundles/bareXdiff.js",
"keys": [
@@ -770,15 +770,15 @@
]
},
{
"path": "/lib/bare/bundles/bareWs.js",
"path": "/lib/bare/bundles/bareZlib.js",
"keys": [
"bareWs"
"bareZlib"
]
},
{
"path": "/lib/bare/bundles/bareWorker.js",
"path": "/lib/bare/bundles/bareWs.js",
"keys": [
"bareWorker"
"bareWs"
]
},
{
@@ -788,9 +788,9 @@
]
},
{
"path": "/lib/bare/bundles/bareZlib.js",
"path": "/lib/bare/bundles/bareWorker.js",
"keys": [
"bareZlib"
"bareWorker"
]
},
{
@@ -1607,8 +1607,8 @@
],
"bundleProvenance": {
"schemaVersion": 1,
"generatedAt": "2026-04-21T21:59:30.817Z",
"gitCommit": "98dd91020ea8898768e864267a2e72429be1cbce",
"generatedAt": "2026-04-21T22:05:46.163Z",
"gitCommit": "0359129a729d59ceafe77eb71347a43a4a67ccbf",
"nodeVersion": "v20.20.2",
"bundleTier": "all",
"normativeManifest": "packages/bare-os-booter/lib/bare-module-manifest.json",
+1 -1
View File
@@ -1,6 +1,6 @@
{
"schema": 1,
"atMs": 1776808769662,
"atMs": 1776809144362,
"commands": [
"arch",
"awk",
+1 -1
View File
@@ -1,6 +1,6 @@
{
"schemaVersion": 1,
"generatedAt": "2026-04-21T21:59:29.821Z",
"generatedAt": "2026-04-21T22:05:44.530Z",
"pages": [
{
"name": "arch",
@@ -411,7 +411,10 @@ export function attachBareOsSftp(
}
const end = Math.min(off + len, f.buf.length)
if (off >= f.buf.length) return sftp.status(reqid, STATUS_CODE.EOF)
const slice = f.buf.subarray(off, end)
let slice = f.buf.subarray(off, end)
if (!Buffer.isBuffer(slice)) {
slice = Buffer.from(slice.buffer, slice.byteOffset, slice.byteLength)
}
sftp.data(reqid, slice)
} catch {
sftp.status(reqid, STATUS_CODE.FAILURE)
+1
View File
@@ -4,3 +4,4 @@
- **SFTP stability:** Harden `REQUEST.READ` parsing in vendored `bare-ssh2` (`handle` / `offset` / `len` must be defined before emit). Align `WRITE` and `FSETSTAT` guards with other handle-based handlers.
- **Bare OS SFTP shim:** `enqueueSftpReply` now takes `reqid` and sends `SSH_FX_FAILURE` if the queued handler throws or rejects, avoiding stalled clients and reducing risk of uncaught SFTP-path errors surfacing as native aborts (`bad_optional_access` under `-fno-exceptions`) after the serialized-reply ordering change.
- **SFTP DATA / channel binary:** Coerce `Uint8Array` (and other typed views) to `Buffer` in `SFTP.prototype.data` and `Protocol.channelData` / `channelExtData`. VFS-backed file buffers are often typed arrays; treating them as UTF-8 strings when `Buffer.isBuffer` is false corrupted SSH channel packets and could abort the runtime with `bad_optional_access`.
@@ -456,6 +456,9 @@ class Protocol {
sendPacket(this, this._packetRW.write.finalize(packet))
}
channelData(chan, data) {
if (ArrayBuffer.isView(data) && !Buffer.isBuffer(data)) {
data = Buffer.from(data.buffer, data.byteOffset, data.byteLength)
}
const isBuffer = Buffer.isBuffer(data)
const dataLen = isBuffer ? data.length : Buffer.byteLength(data)
let p = this._packetRW.write.allocStart
@@ -474,6 +477,9 @@ class Protocol {
sendPacket(this, this._packetRW.write.finalize(packet))
}
channelExtData(chan, data, type) {
if (ArrayBuffer.isView(data) && !Buffer.isBuffer(data)) {
data = Buffer.from(data.buffer, data.byteOffset, data.byteLength)
}
const isBuffer = Buffer.isBuffer(data)
const dataLen = isBuffer ? data.length : Buffer.byteLength(data)
let p = this._packetRW.write.allocStart
@@ -1723,6 +1723,12 @@ class SFTP extends EventEmitter {
data(reqid, data, encoding) {
if (!this.server) throw new Error('Server-only method called in client mode')
// VFS readFile often returns Uint8Array; subarray() stays a typed view. Without this,
// !Buffer.isBuffer leads to utf8Write/binary confusion or throw — SFTP DATA must be raw bytes.
if (ArrayBuffer.isView(data) && !Buffer.isBuffer(data)) {
data = Buffer.from(data.buffer, data.byteOffset, data.byteLength)
}
const isBuffer = Buffer.isBuffer(data)
if (!isBuffer && typeof data !== 'string') throw new Error('data is not a Buffer or string')
@@ -1,7 +1,7 @@
{
"schema": 2,
"profileId": "bare-os-posix-like",
"generatedAt": "2026-04-21T21:59:29.663Z",
"generatedAt": "2026-04-21T22:05:44.363Z",
"note": "Sparse POSIX Issue 7 coverage hints for /bin utilities. Omitted command names are not yet profiled here.",
"commandIndex": [
{
@@ -25,36 +25,36 @@
"compactEncoding"
]
},
{
"path": "/lib/bare/bundles/protomux.js",
"keys": [
"protomux"
]
},
{
"path": "/lib/bare/bundles/bareUrl.js",
"keys": [
"bareUrl"
]
},
{
"path": "/lib/bare/bundles/protomux.js",
"keys": [
"protomux"
]
},
{
"path": "/lib/bare/bundles/barePath.js",
"keys": [
"barePath"
]
},
{
"path": "/lib/bare/bundles/bareEncoding.js",
"keys": [
"bareEncoding"
]
},
{
"path": "/lib/bare/bundles/bareEvents.js",
"keys": [
"bareEvents"
]
},
{
"path": "/lib/bare/bundles/bareEncoding.js",
"keys": [
"bareEncoding"
]
},
{
"path": "/lib/bare/bundles/bareAbort.js",
"keys": [
@@ -79,12 +79,6 @@
"bareAddonResolve"
]
},
{
"path": "/lib/bare/bundles/bareAssert.js",
"keys": [
"bareAssert"
]
},
{
"path": "/lib/bare/bundles/bareReadline.js",
"keys": [
@@ -104,9 +98,9 @@
]
},
{
"path": "/lib/bare/bundles/fetch.js",
"path": "/lib/bare/bundles/bareAssert.js",
"keys": [
"fetch"
"bareAssert"
]
},
{
@@ -122,9 +116,9 @@
]
},
{
"path": "/lib/bare/bundles/bareApk.js",
"path": "/lib/bare/bundles/fetch.js",
"keys": [
"bareApk"
"fetch"
]
},
{
@@ -133,6 +127,12 @@
"bareBmp"
]
},
{
"path": "/lib/bare/bundles/bareBuffer.js",
"keys": [
"bareBuffer"
]
},
{
"path": "/lib/bare/bundles/bareBundleCompile.js",
"keys": [
@@ -146,9 +146,9 @@
]
},
{
"path": "/lib/bare/bundles/bareBuffer.js",
"path": "/lib/bare/bundles/bareApk.js",
"keys": [
"bareBuffer"
"bareApk"
]
},
{
@@ -163,6 +163,12 @@
"bareConsole"
]
},
{
"path": "/lib/bare/bundles/bareChannel.js",
"keys": [
"bareChannel"
]
},
{
"path": "/lib/bare/bundles/bareBundleEvaluate.js",
"keys": [
@@ -170,9 +176,9 @@
]
},
{
"path": "/lib/bare/bundles/bareChannel.js",
"path": "/lib/bare/bundles/bareBoot.js",
"keys": [
"bareChannel"
"bareBoot"
]
},
{
@@ -188,9 +194,9 @@
]
},
{
"path": "/lib/bare/bundles/bareBoot.js",
"path": "/lib/bare/bundles/bareDiagnosticsChannel.js",
"keys": [
"bareBoot"
"bareDiagnosticsChannel"
]
},
{
@@ -205,36 +211,36 @@
"bareCov"
]
},
{
"path": "/lib/bare/bundles/bareDiagnosticsChannel.js",
"keys": [
"bareDiagnosticsChannel"
]
},
{
"path": "/lib/bare/bundles/bareDns.js",
"keys": [
"bareDns"
]
},
{
"path": "/lib/bare/bundles/bareDaemon.js",
"keys": [
"bareDaemon"
]
},
{
"path": "/lib/bare/bundles/bareEnv.js",
"keys": [
"bareEnv"
]
},
{
"path": "/lib/bare/bundles/bareDaemon.js",
"keys": [
"bareDaemon"
]
},
{
"path": "/lib/bare/bundles/bareExif.js",
"keys": [
"bareExif"
]
},
{
"path": "/lib/bare/bundles/bareDgram.js",
"keys": [
"bareDgram"
]
},
{
"path": "/lib/bare/bundles/bareFfmpeg.js",
"keys": [
@@ -248,9 +254,9 @@
]
},
{
"path": "/lib/bare/bundles/bareDgram.js",
"path": "/lib/bare/bundles/bareFormat.js",
"keys": [
"bareDgram"
"bareFormat"
]
},
{
@@ -259,36 +265,18 @@
"bareFormData"
]
},
{
"path": "/lib/bare/bundles/bareFormat.js",
"keys": [
"bareFormat"
]
},
{
"path": "/lib/bare/bundles/bareGif.js",
"keys": [
"bareGif"
]
},
{
"path": "/lib/bare/bundles/bareHrtime.js",
"keys": [
"bareHrtime"
]
},
{
"path": "/lib/bare/bundles/bareFileLogger.js",
"keys": [
"bareFileLogger"
]
},
{
"path": "/lib/bare/bundles/bareHeif.js",
"keys": [
"bareHeif"
]
},
{
"path": "/lib/bare/bundles/bareGtk.js",
"keys": [
@@ -296,9 +284,15 @@
]
},
{
"path": "/lib/bare/bundles/bareFs.js",
"path": "/lib/bare/bundles/bareHrtime.js",
"keys": [
"bareFs"
"bareHrtime"
]
},
{
"path": "/lib/bare/bundles/bareHeif.js",
"keys": [
"bareHeif"
]
},
{
@@ -307,6 +301,12 @@
"bareHttpParser"
]
},
{
"path": "/lib/bare/bundles/bareFs.js",
"keys": [
"bareFs"
]
},
{
"path": "/lib/bare/bundles/bareIco.js",
"keys": [
@@ -325,24 +325,30 @@
"bareHttp1"
]
},
{
"path": "/lib/bare/bundles/bareInspect.js",
"keys": [
"bareInspect"
]
},
{
"path": "/lib/bare/bundles/bareHttps.js",
"keys": [
"bareHttps"
]
},
{
"path": "/lib/bare/bundles/bareInspect.js",
"keys": [
"bareInspect"
]
},
{
"path": "/lib/bare/bundles/bareJpeg.js",
"keys": [
"bareJpeg"
]
},
{
"path": "/lib/bare/bundles/bareIntl.js",
"keys": [
"bareIntl"
]
},
{
"path": "/lib/bare/bundles/bareIpc.js",
"keys": [
@@ -350,9 +356,9 @@
]
},
{
"path": "/lib/bare/bundles/bareIntl.js",
"path": "/lib/bare/bundles/bareInspector.js",
"keys": [
"bareIntl"
"bareInspector"
]
},
{
@@ -367,30 +373,24 @@
"bareLief"
]
},
{
"path": "/lib/bare/bundles/bareInspector.js",
"keys": [
"bareInspector"
]
},
{
"path": "/lib/bare/bundles/bareMake.js",
"keys": [
"bareMake"
]
},
{
"path": "/lib/bare/bundles/bareModuleResolve.js",
"keys": [
"bareModuleResolve"
]
},
{
"path": "/lib/bare/bundles/bareLink.js",
"keys": [
"bareLink"
]
},
{
"path": "/lib/bare/bundles/bareModuleResolve.js",
"keys": [
"bareModuleResolve"
]
},
{
"path": "/lib/bare/bundles/bareModuleLexer.js",
"keys": [
@@ -409,42 +409,36 @@
"bareMedia"
]
},
{
"path": "/lib/bare/bundles/bareNdk.js",
"keys": [
"bareNdk"
]
},
{
"path": "/lib/bare/bundles/bareNodeFetch.js",
"keys": [
"bareNodeFetch"
]
},
{
"path": "/lib/bare/bundles/bareNative.js",
"keys": [
"bareNative"
]
},
{
"path": "/lib/bare/bundles/bareNet.js",
"keys": [
"bareNet"
]
},
{
"path": "/lib/bare/bundles/bareOpen.js",
"keys": [
"bareOpen"
]
},
{
"path": "/lib/bare/bundles/bareModuleTraverse.js",
"keys": [
"bareModuleTraverse"
]
},
{
"path": "/lib/bare/bundles/bareNdk.js",
"keys": [
"bareNdk"
]
},
{
"path": "/lib/bare/bundles/bareNet.js",
"keys": [
"bareNet"
]
},
{
"path": "/lib/bare/bundles/bareNodeFetch.js",
"keys": [
"bareNodeFetch"
]
},
{
"path": "/lib/bare/bundles/bareOs.js",
"keys": [
@@ -452,9 +446,9 @@
]
},
{
"path": "/lib/bare/bundles/barePerformance.js",
"path": "/lib/bare/bundles/bareOpen.js",
"keys": [
"barePerformance"
"bareOpen"
]
},
{
@@ -464,9 +458,15 @@
]
},
{
"path": "/lib/bare/bundles/barePng.js",
"path": "/lib/bare/bundles/barePerformance.js",
"keys": [
"barePng"
"barePerformance"
]
},
{
"path": "/lib/bare/bundles/bareDev.js",
"keys": [
"bareDev"
]
},
{
@@ -476,9 +476,15 @@
]
},
{
"path": "/lib/bare/bundles/bareDev.js",
"path": "/lib/bare/bundles/barePng.js",
"keys": [
"bareDev"
"barePng"
]
},
{
"path": "/lib/bare/bundles/barePunycode.js",
"keys": [
"barePunycode"
]
},
{
@@ -499,12 +505,6 @@
"bareQuerystring"
]
},
{
"path": "/lib/bare/bundles/barePunycode.js",
"keys": [
"barePunycode"
]
},
{
"path": "/lib/bare/bundles/bareQueueMicrotask.js",
"keys": [
@@ -517,12 +517,6 @@
"barePrebuild"
]
},
{
"path": "/lib/bare/bundles/bareRealm.js",
"keys": [
"bareRealm"
]
},
{
"path": "/lib/bare/bundles/bareProcess.js",
"keys": [
@@ -530,27 +524,9 @@
]
},
{
"path": "/lib/bare/bundles/bareRuntime.js",
"path": "/lib/bare/bundles/bareRealm.js",
"keys": [
"bareRuntime"
]
},
{
"path": "/lib/bare/bundles/bareSdl.js",
"keys": [
"bareSdl"
]
},
{
"path": "/lib/bare/bundles/bareRepl.js",
"keys": [
"bareRepl"
]
},
{
"path": "/lib/bare/bundles/barePromClient.js",
"keys": [
"barePromClient"
"bareRealm"
]
},
{
@@ -559,6 +535,24 @@
"bareRpc"
]
},
{
"path": "/lib/bare/bundles/barePromClient.js",
"keys": [
"barePromClient"
]
},
{
"path": "/lib/bare/bundles/bareRepl.js",
"keys": [
"bareRepl"
]
},
{
"path": "/lib/bare/bundles/bareRuntime.js",
"keys": [
"bareRuntime"
]
},
{
"path": "/lib/bare/bundles/bareSemver.js",
"keys": [
@@ -566,9 +560,9 @@
]
},
{
"path": "/lib/bare/bundles/bareSignals.js",
"path": "/lib/bare/bundles/bareSdl.js",
"keys": [
"bareSignals"
"bareSdl"
]
},
{
@@ -578,9 +572,9 @@
]
},
{
"path": "/lib/bare/bundles/bareStream.js",
"path": "/lib/bare/bundles/bareSignals.js",
"keys": [
"bareStream"
"bareSignals"
]
},
{
@@ -589,12 +583,6 @@
"bareStdio"
]
},
{
"path": "/lib/bare/bundles/bareSidecar.js",
"keys": [
"bareSidecar"
]
},
{
"path": "/lib/bare/bundles/bareStringDecoder.js",
"keys": [
@@ -608,15 +596,15 @@
]
},
{
"path": "/lib/bare/bundles/bareSvg.js",
"path": "/lib/bare/bundles/bareStream.js",
"keys": [
"bareSvg"
"bareStream"
]
},
{
"path": "/lib/bare/bundles/bareSystemLogger.js",
"path": "/lib/bare/bundles/bareSidecar.js",
"keys": [
"bareSystemLogger"
"bareSidecar"
]
},
{
@@ -625,6 +613,12 @@
"bareStructuredClone"
]
},
{
"path": "/lib/bare/bundles/bareSvg.js",
"keys": [
"bareSvg"
]
},
{
"path": "/lib/bare/bundles/bareTap.js",
"keys": [
@@ -637,6 +631,12 @@
"bareSubprocess"
]
},
{
"path": "/lib/bare/bundles/bareSystemLogger.js",
"keys": [
"bareSystemLogger"
]
},
{
"path": "/lib/bare/bundles/bareTiff.js",
"keys": [
@@ -655,6 +655,12 @@
"bareTimers"
]
},
{
"path": "/lib/bare/bundles/bareThread.js",
"keys": [
"bareThread"
]
},
{
"path": "/lib/bare/bundles/bareTpl.js",
"keys": [
@@ -667,6 +673,12 @@
"bareType"
]
},
{
"path": "/lib/bare/bundles/bareTls.js",
"keys": [
"bareTls"
]
},
{
"path": "/lib/bare/bundles/bareUiKit.js",
"keys": [
@@ -680,9 +692,9 @@
]
},
{
"path": "/lib/bare/bundles/bareTls.js",
"path": "/lib/bare/bundles/bareV8.js",
"keys": [
"bareTls"
"bareV8"
]
},
{
@@ -691,18 +703,6 @@
"bareUnpack"
]
},
{
"path": "/lib/bare/bundles/bareThread.js",
"keys": [
"bareThread"
]
},
{
"path": "/lib/bare/bundles/bareV8.js",
"keys": [
"bareV8"
]
},
{
"path": "/lib/bare/bundles/bareVm.js",
"keys": [
@@ -721,48 +721,48 @@
"bareWebKit"
]
},
{
"path": "/lib/bare/bundles/bareWebp.js",
"keys": [
"bareWebp"
]
},
{
"path": "/lib/bare/bundles/bareUnionBundle.js",
"keys": [
"bareUnionBundle"
]
},
{
"path": "/lib/bare/bundles/bareWebKitGtk.js",
"keys": [
"bareWebKitGtk"
]
},
{
"path": "/lib/bare/bundles/bareWinUi.js",
"keys": [
"bareWinUi"
]
},
{
"path": "/lib/bare/bundles/bareV8ToIstanbul.js",
"keys": [
"bareV8ToIstanbul"
]
},
{
"path": "/lib/bare/bundles/bareUtils.js",
"keys": [
"bareUtils"
]
},
{
"path": "/lib/bare/bundles/bareWebp.js",
"keys": [
"bareWebp"
]
},
{
"path": "/lib/bare/bundles/bareWebKitGtk.js",
"keys": [
"bareWebKitGtk"
]
},
{
"path": "/lib/bare/bundles/bareV8ToIstanbul.js",
"keys": [
"bareV8ToIstanbul"
]
},
{
"path": "/lib/bare/bundles/bareWhich.js",
"keys": [
"bareWhich"
]
},
{
"path": "/lib/bare/bundles/bareWinUi.js",
"keys": [
"bareWinUi"
]
},
{
"path": "/lib/bare/bundles/bareXdiff.js",
"keys": [
@@ -770,15 +770,15 @@
]
},
{
"path": "/lib/bare/bundles/bareWs.js",
"path": "/lib/bare/bundles/bareZlib.js",
"keys": [
"bareWs"
"bareZlib"
]
},
{
"path": "/lib/bare/bundles/bareWorker.js",
"path": "/lib/bare/bundles/bareWs.js",
"keys": [
"bareWorker"
"bareWs"
]
},
{
@@ -788,9 +788,9 @@
]
},
{
"path": "/lib/bare/bundles/bareZlib.js",
"path": "/lib/bare/bundles/bareWorker.js",
"keys": [
"bareZlib"
"bareWorker"
]
},
{
@@ -1607,8 +1607,8 @@
],
"bundleProvenance": {
"schemaVersion": 1,
"generatedAt": "2026-04-21T21:59:30.817Z",
"gitCommit": "98dd91020ea8898768e864267a2e72429be1cbce",
"generatedAt": "2026-04-21T22:05:46.163Z",
"gitCommit": "0359129a729d59ceafe77eb71347a43a4a67ccbf",
"nodeVersion": "v20.20.2",
"bundleTier": "all",
"normativeManifest": "packages/bare-os-booter/lib/bare-module-manifest.json",
@@ -1,6 +1,6 @@
{
"schema": 1,
"atMs": 1776808769662,
"atMs": 1776809144362,
"commands": [
"arch",
"awk",
@@ -1,6 +1,6 @@
{
"schemaVersion": 1,
"generatedAt": "2026-04-21T21:59:29.821Z",
"generatedAt": "2026-04-21T22:05:44.530Z",
"pages": [
{
"name": "arch",