Orginize
This commit is contained in:
@@ -0,0 +1,134 @@
|
||||
/**
|
||||
* Booter /proc snapshot helpers used while constructing executeKernel ctx.
|
||||
*/
|
||||
import {
|
||||
bareOsProcBlindPeerRelayHintsExposed,
|
||||
buildBareOsBlindRelaySwarmRuntime
|
||||
} from './bare-os-proc-blind-peer-relay-gate.js'
|
||||
import { bareOsChatMuxEnabled } from './bare-os-chat-service.js'
|
||||
import { bareOsMeshdropMuxEnabled } from './bare-os-meshdrop-service.js'
|
||||
|
||||
/**
|
||||
* @param {{
|
||||
* interactiveCtxRef: { ctx: Record<string, unknown> | null },
|
||||
* disk: Record<string, unknown>,
|
||||
* shellEnv: Record<string, string | undefined>,
|
||||
* hostEnv?: Record<string, string | undefined> | null
|
||||
* }} deps
|
||||
*/
|
||||
export function createBooterProcHelpers(deps) {
|
||||
const { interactiveCtxRef, disk, shellEnv, hostEnv = null } = deps
|
||||
|
||||
function bareOsCollectLogicalFdRows() {
|
||||
const c = interactiveCtxRef.ctx
|
||||
const o = c?.bareOsLogicalFds
|
||||
if (!o || typeof o !== 'object') return []
|
||||
return Object.keys(o)
|
||||
.filter((k) => /^[0-9]+$/.test(k) && k !== '0' && k !== '1' && k !== '2')
|
||||
.sort((a, b) => Number(a) - Number(b))
|
||||
.map((fdNum) => ({
|
||||
fd: Number(fdNum),
|
||||
target: String(/** @type {Record<string, string>} */ (o)[fdNum] ?? '')
|
||||
}))
|
||||
}
|
||||
|
||||
function bareOsLiveShellJobsAndIpcStats() {
|
||||
const live = interactiveCtxRef.ctx
|
||||
const shellJobs =
|
||||
live &&
|
||||
live.shellBackgroundJobs &&
|
||||
typeof live.shellBackgroundJobs === 'object' &&
|
||||
Array.isArray(live.shellBackgroundJobs.list)
|
||||
? live.shellBackgroundJobs.list
|
||||
: []
|
||||
let ipcStats
|
||||
try {
|
||||
ipcStats =
|
||||
live && live.bareOsIpc && typeof live.bareOsIpc.stats === 'function'
|
||||
? live.bareOsIpc.stats()
|
||||
: undefined
|
||||
} catch {
|
||||
ipcStats = undefined
|
||||
}
|
||||
return { shellJobs, ipcStats }
|
||||
}
|
||||
|
||||
function bareOsBlindRelayRuntimeHintsForProc() {
|
||||
if (!bareOsProcBlindPeerRelayHintsExposed(shellEnv)) return undefined
|
||||
const peers = disk.peers ? [...disk.peers] : []
|
||||
return {
|
||||
swarm: buildBareOsBlindRelaySwarmRuntime(shellEnv, peers, {
|
||||
hasSystemDrive: !!disk.drive,
|
||||
hasPersonalDrive: !!disk.personalDrive,
|
||||
auxiliaryDriveCount: Array.isArray(disk.auxiliaryDrives)
|
||||
? disk.auxiliaryDrives.length
|
||||
: 0
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Same object as `/proc/bare_os/chat.json` (single source for VFS + ctx hook).
|
||||
* @returns {Record<string, unknown>}
|
||||
*/
|
||||
function bareOsChatProcSnapshotRecord() {
|
||||
const svc = disk.bareOsChatService
|
||||
if (!svc) {
|
||||
return {
|
||||
schema: 1,
|
||||
note: 'Swarm chat is off when BARE_OS_PROTOMUX_CHAT_CHANNEL=0/false/off (stock default is on).'
|
||||
}
|
||||
}
|
||||
return {
|
||||
schema: 1,
|
||||
atMs: Date.now(),
|
||||
protocol: svc.PROTOCOL_CHAT_CHANNEL_NAME,
|
||||
metrics: svc.snapshotMetrics(),
|
||||
protomuxChatRxTotal:
|
||||
typeof disk.protomuxChatChannelRxTotal === 'number'
|
||||
? disk.protomuxChatChannelRxTotal
|
||||
: 0,
|
||||
swarmPeers:
|
||||
disk.peers && typeof disk.peers.size === 'number' ? disk.peers.size : 0,
|
||||
muxEnabled:
|
||||
bareOsChatMuxEnabled(shellEnv) || bareOsChatMuxEnabled(hostEnv || {})
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Same object as `/proc/bare_os/meshdrop.json`.
|
||||
* @returns {Record<string, unknown>}
|
||||
*/
|
||||
function bareOsMeshdropProcSnapshotRecord() {
|
||||
const svc = disk.bareOsMeshdropService
|
||||
if (!svc) {
|
||||
return {
|
||||
schema: 1,
|
||||
note: 'Meshdrop channel is off when BARE_OS_PROTOMUX_MESHDROP_CHANNEL=0/false/off (stock default is on).'
|
||||
}
|
||||
}
|
||||
return {
|
||||
schema: 1,
|
||||
atMs: Date.now(),
|
||||
protocol: svc.PROTOCOL_MESHDROP_CHANNEL_NAME,
|
||||
metrics: svc.snapshotMetrics(),
|
||||
protomuxMeshdropRxTotal:
|
||||
typeof disk.protomuxMeshdropChannelRxTotal === 'number'
|
||||
? disk.protomuxMeshdropChannelRxTotal
|
||||
: 0,
|
||||
swarmPeers:
|
||||
disk.peers && typeof disk.peers.size === 'number' ? disk.peers.size : 0,
|
||||
muxEnabled:
|
||||
bareOsMeshdropMuxEnabled(shellEnv) ||
|
||||
bareOsMeshdropMuxEnabled(hostEnv || {})
|
||||
}
|
||||
}
|
||||
|
||||
return {
|
||||
bareOsCollectLogicalFdRows,
|
||||
bareOsLiveShellJobsAndIpcStats,
|
||||
bareOsBlindRelayRuntimeHintsForProc,
|
||||
bareOsChatProcSnapshotRecord,
|
||||
bareOsMeshdropProcSnapshotRecord
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user