119 lines
4.5 KiB
JavaScript
119 lines
4.5 KiB
JavaScript
/**
|
|
* Authoritative stock kernel capability word construction and seed strict rows.
|
|
* Consumed by the booter and kernel loader paths.
|
|
* @module bare-os-capability-registry
|
|
*/
|
|
import {
|
|
BARE_OS_KERNEL_CAPABILITY_KEY_PRIMARY,
|
|
BARE_OS_KERNEL_CAPABILITY_KEY_EXTENDED_SEEDING_PLATFORM,
|
|
BARE_OS_KERNEL_CAPABILITY_KEY_RLIMITS_DELEGATES_SHELL,
|
|
BARE_OS_KERNEL_CAPABILITY_KEY_OFFLINE_NET_EXTENSIONS,
|
|
BARE_OS_KERNEL_CAPABILITY_KEY_HOST_TRANSPORT_DELEGATES,
|
|
BARE_OS_KERNEL_CAPABILITY_KEY_REPLICATION_OPERATOR_SURFACE,
|
|
BARE_OS_KERNEL_CAPABILITY_KEY_PEAR_CORESTORE_HRPC,
|
|
BARE_OS_KERNEL_CAPABILITY_KEY_BARE_RUNTIME_PROTO_MUX,
|
|
BARE_OS_KERNEL_CAPABILITY_KEY_BARE_MODULE_CRYPTO_STAGING,
|
|
BARE_OS_KERNEL_CAPABILITY_KEY_PEAR_INSPECT_LOGGER_TLS,
|
|
BARE_OS_KERNEL_CAPABILITY_KEY_HYPERCORE_PACK_HRPC_LIFECYCLE,
|
|
BARE_OS_KERNEL_CAPABILITY_WORD_KEYS,
|
|
BARE_OS_KERNEL_FEATURES_STOCK_WORD_PRIMARY,
|
|
BARE_OS_KERNEL_FEATURES_STOCK_WORD_EXTENDED_SEEDING_PLATFORM,
|
|
BARE_OS_KERNEL_FEATURES_STOCK_WORD_RLIMITS_DELEGATES_SHELL,
|
|
BARE_OS_KERNEL_FEATURES_STOCK_WORD_OFFLINE_NET_EXTENSIONS,
|
|
BARE_OS_KERNEL_FEATURES_STOCK_WORD_HOST_TRANSPORT_DELEGATES,
|
|
BARE_OS_KERNEL_FEATURES_STOCK_WORD_REPLICATION_OPERATOR_SURFACE,
|
|
BARE_OS_KERNEL_FEATURES_STOCK_WORD_PEAR_CORESTORE_HRPC,
|
|
BARE_OS_KERNEL_FEATURES_STOCK_WORD_BARE_RUNTIME_PROTO_MUX,
|
|
BARE_OS_KERNEL_FEATURES_STOCK_WORD_BARE_MODULE_CRYPTO_STAGING,
|
|
BARE_OS_KERNEL_FEATURES_STOCK_WORD_PEAR_INSPECT_LOGGER_TLS,
|
|
BARE_OS_KERNEL_FEATURES_STOCK_WORD_HYPERCORE_PACK_HRPC_LIFECYCLE,
|
|
buildKernelCapabilityWordsObject,
|
|
getKernelCapabilityWords,
|
|
readKernelCapabilityWord
|
|
} from 'bare-os-protocol'
|
|
|
|
/** @type {ReadonlyArray<readonly [string, number]>} */
|
|
export const KERNEL_CAPABILITY_SEED_STRICT_ROWS = Object.freeze([
|
|
[BARE_OS_KERNEL_CAPABILITY_KEY_PRIMARY, BARE_OS_KERNEL_FEATURES_STOCK_WORD_PRIMARY],
|
|
[
|
|
BARE_OS_KERNEL_CAPABILITY_KEY_EXTENDED_SEEDING_PLATFORM,
|
|
BARE_OS_KERNEL_FEATURES_STOCK_WORD_EXTENDED_SEEDING_PLATFORM
|
|
],
|
|
[
|
|
BARE_OS_KERNEL_CAPABILITY_KEY_RLIMITS_DELEGATES_SHELL,
|
|
BARE_OS_KERNEL_FEATURES_STOCK_WORD_RLIMITS_DELEGATES_SHELL
|
|
],
|
|
[
|
|
BARE_OS_KERNEL_CAPABILITY_KEY_OFFLINE_NET_EXTENSIONS,
|
|
BARE_OS_KERNEL_FEATURES_STOCK_WORD_OFFLINE_NET_EXTENSIONS
|
|
],
|
|
[
|
|
BARE_OS_KERNEL_CAPABILITY_KEY_HOST_TRANSPORT_DELEGATES,
|
|
BARE_OS_KERNEL_FEATURES_STOCK_WORD_HOST_TRANSPORT_DELEGATES
|
|
],
|
|
[
|
|
BARE_OS_KERNEL_CAPABILITY_KEY_REPLICATION_OPERATOR_SURFACE,
|
|
BARE_OS_KERNEL_FEATURES_STOCK_WORD_REPLICATION_OPERATOR_SURFACE
|
|
],
|
|
[
|
|
BARE_OS_KERNEL_CAPABILITY_KEY_PEAR_CORESTORE_HRPC,
|
|
BARE_OS_KERNEL_FEATURES_STOCK_WORD_PEAR_CORESTORE_HRPC
|
|
],
|
|
[
|
|
BARE_OS_KERNEL_CAPABILITY_KEY_BARE_RUNTIME_PROTO_MUX,
|
|
BARE_OS_KERNEL_FEATURES_STOCK_WORD_BARE_RUNTIME_PROTO_MUX
|
|
],
|
|
[
|
|
BARE_OS_KERNEL_CAPABILITY_KEY_BARE_MODULE_CRYPTO_STAGING,
|
|
BARE_OS_KERNEL_FEATURES_STOCK_WORD_BARE_MODULE_CRYPTO_STAGING
|
|
],
|
|
[
|
|
BARE_OS_KERNEL_CAPABILITY_KEY_PEAR_INSPECT_LOGGER_TLS,
|
|
BARE_OS_KERNEL_FEATURES_STOCK_WORD_PEAR_INSPECT_LOGGER_TLS
|
|
],
|
|
[
|
|
BARE_OS_KERNEL_CAPABILITY_KEY_HYPERCORE_PACK_HRPC_LIFECYCLE,
|
|
BARE_OS_KERNEL_FEATURES_STOCK_WORD_HYPERCORE_PACK_HRPC_LIFECYCLE
|
|
]
|
|
])
|
|
|
|
/**
|
|
* @param {number} primaryWord
|
|
*/
|
|
export function buildStockKernelCapabilityWords(primaryWord) {
|
|
return buildKernelCapabilityWordsObject(
|
|
primaryWord >>> 0,
|
|
BARE_OS_KERNEL_FEATURES_STOCK_WORD_EXTENDED_SEEDING_PLATFORM >>> 0,
|
|
BARE_OS_KERNEL_FEATURES_STOCK_WORD_RLIMITS_DELEGATES_SHELL >>> 0,
|
|
BARE_OS_KERNEL_FEATURES_STOCK_WORD_OFFLINE_NET_EXTENSIONS >>> 0,
|
|
BARE_OS_KERNEL_FEATURES_STOCK_WORD_HOST_TRANSPORT_DELEGATES >>> 0,
|
|
BARE_OS_KERNEL_FEATURES_STOCK_WORD_REPLICATION_OPERATOR_SURFACE >>> 0,
|
|
BARE_OS_KERNEL_FEATURES_STOCK_WORD_PEAR_CORESTORE_HRPC >>> 0,
|
|
BARE_OS_KERNEL_FEATURES_STOCK_WORD_BARE_RUNTIME_PROTO_MUX >>> 0,
|
|
BARE_OS_KERNEL_FEATURES_STOCK_WORD_BARE_MODULE_CRYPTO_STAGING >>> 0,
|
|
BARE_OS_KERNEL_FEATURES_STOCK_WORD_PEAR_INSPECT_LOGGER_TLS >>> 0,
|
|
BARE_OS_KERNEL_FEATURES_STOCK_WORD_HYPERCORE_PACK_HRPC_LIFECYCLE >>> 0
|
|
)
|
|
}
|
|
|
|
/**
|
|
* @param {unknown} info
|
|
* @returns {Readonly<Record<string, number>> | null}
|
|
*/
|
|
export function freezeKernelCapabilityWordsFromCapabilities(info) {
|
|
if (
|
|
!info ||
|
|
typeof info !== 'object' ||
|
|
Object.prototype.hasOwnProperty.call(info, 'error')
|
|
) {
|
|
return null
|
|
}
|
|
const src = getKernelCapabilityWords(info)
|
|
if (!src) return null
|
|
const o = /** @type {Record<string, number>} */ ({})
|
|
for (const k of BARE_OS_KERNEL_CAPABILITY_WORD_KEYS) {
|
|
o[k] = readKernelCapabilityWord(src, k) >>> 0
|
|
}
|
|
return Object.freeze(o)
|
|
}
|