mirror of
https://github.com/langbot-app/LangBot.git
synced 2026-06-09 15:26:03 +00:00
- Implement head+tail output truncation (60/40 split) so LLM sees both
beginning and final results; add streaming byte-limited reads in backend
to prevent unbounded memory usage (_MAX_RAW_OUTPUT_BYTES = 1MB)
- Define BoxProfile model with locked fields and max_timeout_sec clamping
- Add four built-in profiles: default, offline_readonly, network_basic,
network_extended with differentiated resource and security constraints
- Add resource limit fields to BoxSpec (cpus, memory_mb, pids_limit,
read_only_rootfs) and pass corresponding container CLI flags
(--cpus, --memory, --pids-limit, --read-only, --tmpfs)
- Profile loaded from config (box.profile), applied in service layer
before BoxSpec validation; locked fields cannot be overridden by
tool-call parameters
38 lines
1.2 KiB
Python
38 lines
1.2 KiB
Python
from __future__ import annotations
|
|
|
|
import pytest
|
|
|
|
from langbot.pkg.box.backend import CLISandboxBackend, _MAX_RAW_OUTPUT_BYTES
|
|
|
|
|
|
class TestClipBytes:
|
|
def test_within_limit_unchanged(self):
|
|
data = b'hello world'
|
|
result = CLISandboxBackend._clip_bytes(data, limit=1024)
|
|
assert result == 'hello world'
|
|
|
|
def test_exceeding_limit_clips_and_appends_notice(self):
|
|
data = b'A' * 200
|
|
result = CLISandboxBackend._clip_bytes(data, limit=100)
|
|
assert result.startswith('A' * 100)
|
|
assert 'raw output clipped at 100 bytes' in result
|
|
assert '100 bytes discarded' in result
|
|
|
|
def test_exact_limit_not_clipped(self):
|
|
data = b'B' * 100
|
|
result = CLISandboxBackend._clip_bytes(data, limit=100)
|
|
assert result == 'B' * 100
|
|
assert 'clipped' not in result
|
|
|
|
def test_default_limit_is_module_constant(self):
|
|
data = b'x' * 10
|
|
result = CLISandboxBackend._clip_bytes(data)
|
|
assert result == 'x' * 10
|
|
assert _MAX_RAW_OUTPUT_BYTES == 1_048_576
|
|
|
|
def test_invalid_utf8_replaced(self):
|
|
data = b'ok\xff\xfetail'
|
|
result = CLISandboxBackend._clip_bytes(data, limit=1024)
|
|
assert 'ok' in result
|
|
assert 'tail' in result
|