import { bareOsProcBlindPeerRelayHintsExposed, bareOsProcBlindPeerRelayHintsMinimal } from './bare-os-proc-blind-peer-relay-gate.js' /** * Capability word 10 optional `/proc/bare_os/*.json` payloads (env-injected; bounded, non-secret). * Maps Holepunch `bare-*` / `pear-*` stacks — no Node `node:*` built-ins in guest paths. * @param {string} id * @param {Record} env * @param {{ swarm?: Record | null }} [runtimeHints] */ export function buildBareOsPearInspectLoggerTlsProcJson(id, env, runtimeHints) { const now = Date.now() const esc = (k) => String(env[k] ?? '').trim() function parseJsonEnv(key) { const raw = esc(key) if (!raw) return null try { const o = JSON.parse(raw) return o && typeof o === 'object' ? o : null } catch { return { schema: 1, error: 'invalid_json', key, atMs: now } } } switch (id) { case 'pear_doctor_state': return { schema: 2, state: parseJsonEnv('BARE_OS_PEAR_DOCTOR_STATE_JSON'), runtimeVersion: esc('BARE_OS_PEAR_RUNTIME_VERSION') || undefined, pearInspectProbe: esc('BARE_OS_PEAR_INSPECT_PROBE') === '1' || esc('BARE_OS_PEAR_INSPECT_PROBE') === 'true', pearDoctorModuleHint: esc('BARE_OS_PEAR_DOCTOR_MODULE') || undefined, note: 'pear-doctor + pear-runtime parity (schema 2): merge env with pear-inspect / pear-runtime-updater host wiring.', atMs: now } case 'pear_workshop_flags': return { schema: 1, flags: parseJsonEnv('BARE_OS_PEAR_WORKSHOP_FLAGS_JSON'), note: 'pear-workshop dev flags.', atMs: now } case 'pear_user_dirs_map': return { schema: 1, map: parseJsonEnv('BARE_OS_PEAR_USER_DIRS_MAP_JSON'), note: 'pear-user-dirs map (non-secret).', atMs: now } case 'pear_api_allowlist_sketch': return { schema: 1, allowlist: parseJsonEnv('BARE_OS_PEAR_API_ALLOWLIST_SKETCH_JSON'), note: 'pear-api surface allow sketch.', atMs: now } case 'pear_rti_pointer': return { schema: 1, pointer: parseJsonEnv('BARE_OS_PEAR_RTI_POINTER_JSON'), note: 'pear-rti pointer doc.', atMs: now } case 'bare_boot_phase_map': return { schema: 1, phases: parseJsonEnv('BARE_OS_BARE_BOOT_PHASE_MAP_JSON'), note: 'bare-boot phase alignment map.', atMs: now } case 'bare_rpc_registry_sketch': return { schema: 1, registry: parseJsonEnv('BARE_OS_BARE_RPC_REGISTRY_SKETCH_JSON'), note: 'bare-rpc registry summary (names only).', atMs: now } case 'bare_logger_policy': return { schema: 1, policy: parseJsonEnv('BARE_OS_BARE_LOGGER_POLICY_JSON'), note: 'bare-logger / bare-file-logger sink class.', atMs: now } case 'bare_performance_counters': return { schema: 1, counters: parseJsonEnv('BARE_OS_BARE_PERFORMANCE_COUNTERS_JSON'), note: 'bare-performance / bare-hrtime counters sketch.', atMs: now } case 'bare_inspect_policy': return { schema: 1, policy: parseJsonEnv('BARE_OS_BARE_INSPECT_POLICY_JSON'), guestMetricsPath: esc('BARE_OS_INSPECT_GUEST_METRICS_PATH') || '/run/bare-os/profiles/', note: 'bare-inspect policy; CPU profiles may land under guestMetricsPath when enabled on host.', atMs: now } case 'bare_signals_mask': return { schema: 1, mask: parseJsonEnv('BARE_OS_BARE_SIGNALS_MASK_JSON'), note: 'bare-signals mask summary.', atMs: now } case 'bare_timers_budget': return { schema: 1, budget: parseJsonEnv('BARE_OS_BARE_TIMERS_BUDGET_JSON'), note: 'bare-timers budget.', atMs: now } case 'bare_stream_backpressure': return { schema: 1, backpressure: parseJsonEnv('BARE_OS_BARE_STREAM_BACKPRESSURE_JSON'), note: 'bare-stream / bare-pipe class.', atMs: now } case 'bare_ws_gateway_sketch': return { schema: 1, gateway: parseJsonEnv('BARE_OS_BARE_WS_GATEWAY_SKETCH_JSON'), note: 'bare-ws gateway policy.', atMs: now } case 'bare_tls_session_hint': return { schema: 1, tls: parseJsonEnv('BARE_OS_BARE_TLS_SESSION_HINT_JSON'), note: 'bare-tls session cache / pin class.', atMs: now } case 'autobase_writer_hint': return { schema: 1, writer: parseJsonEnv('BARE_OS_AUTOBASE_WRITER_HINT_JSON'), note: 'autobase writer hint (non-secret).', atMs: now } case 'blind_pairing_sketch': if (!bareOsProcBlindPeerRelayHintsExposed(env)) { return bareOsProcBlindPeerRelayHintsMinimal(now) } return { schema: 2, exposed: true, sketch: parseJsonEnv('BARE_OS_BLIND_PAIRING_SKETCH_JSON'), swarm: runtimeHints?.swarm ?? null, note: 'Env pairing sketch plus live swarm aggregates when booter supplies runtimeHints.', atMs: now } case 'broadcast_encryption_hint': return { schema: 1, hint: parseJsonEnv('BARE_OS_BROADCAST_ENCRYPTION_HINT_JSON'), note: 'broadcast-encryption capability hint.', atMs: now } case 'activity_queue_depth': return { schema: 1, depth: parseJsonEnv('BARE_OS_ACTIVITY_QUEUE_DEPTH_JSON'), note: 'activity-queue depth sketch.', atMs: now } default: return { schema: 1, error: 'unknown_wave10_proc_id', id, atMs: now } } }