Split WebCRT and API startup; default collectors to worker process.

Extract channel/session modules and CLI guard, move UME sidebands out of main, and default NETX_RUN_INLINE_SCHEDULERS off so ops run python -m netx_api.worker.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
oliver 2026-08-02 16:50:52 +08:00
parent 57b3faf9fb
commit 136f40cdae
16 changed files with 2269 additions and 2150 deletions

View file

@ -106,6 +106,12 @@ class NeExecValidationTests(unittest.TestCase):
_validate_command("ip address 1.1.1.1 255.255.255.0")
self.assertEqual(ctx.exception.detail, "command_blocked")
def test_blocks_vendor_destructive(self) -> None:
for cmd in ("save", "request system reboot", "clear configuration", "file delete flash:/x"):
with self.assertRaises(HTTPException) as ctx:
_validate_command(cmd)
self.assertEqual(ctx.exception.detail, "command_blocked", cmd)
def test_agent_batch_rejects_configure_before_connect(self) -> None:
cmds = [
"show interface",