export type MeshTerminalSecurityState = { wormholeRequired: boolean; wormholeReady: boolean; anonymousMode: boolean; anonymousModeReady: boolean; }; export function getMeshTerminalWriteLockReason(state: MeshTerminalSecurityState): string { if (state.anonymousMode) { if (!state.anonymousModeReady) { return 'Mesh Terminal write commands are disabled until Wormhole hidden transport is ready for Anonymous Infonet mode.'; } return 'Mesh Terminal write commands are disabled while Anonymous Infonet mode is active. Use MeshChat for gate chat (transitional lane) or Dead Drop (stronger private lane).'; } if (state.wormholeRequired) { if (!state.wormholeReady) { return 'Mesh Terminal write commands are disabled until Wormhole secure mode is ready.'; } return 'Mesh Terminal write commands are disabled while Wormhole secure mode is active. Use MeshChat for gate chat (transitional lane) or Dead Drop (stronger private lane).'; } return ''; } export function isMeshTerminalWriteCommand(cmd: string, args: string[]): boolean { const command = String(cmd || '').trim().toLowerCase(); const sub = String(args[0] || '').trim().toLowerCase(); if ( [ 'connect', 'sovereignty', 'sovereign', 'activate', 'join', 'send', 'vote', 'say', 'predict', 'stake', 'rotate', 'revoke', 'dm', 'inbox', ].includes(command) ) { return true; } if (command === 'mesh' || command === 'radio') { return sub === 'send' || sub === 's'; } if (command === 'gate') { return sub === 'create'; } return false; }