Complete snapshot of /opt/microdao-daarion/ from NODE1 (144.76.224.179).
This represents the actual running production code that has diverged
significantly from the previous main branch.
Key changes from old main:
- Gateway (http_api.py): expanded from ~40KB to 164KB with full agent support
- Router: new /v1/agents/{id}/infer endpoint with vision + DeepSeek routing
- Behavior Policy: SOWA v2.2 (3-level: FULL/ACK/SILENT)
- Agent Registry: config/agent_registry.yml as single source of truth
- 13 agents configured (was 3)
- Memory service integration
- CrewAI teams and roles
Excluded from snapshot: venv/, .env, data/, backups, .tgz archives
Co-authored-by: Cursor <cursoragent@cursor.com>
32 lines
1008 B
Python
32 lines
1008 B
Python
import sys
|
|
from pathlib import Path
|
|
sys.path.insert(0, str(Path(__file__).resolve().parents[1] / 'packages' / 'agromatrix-tools'))
|
|
|
|
from agromatrix_tools import tool_dictionary
|
|
from agromatrix_tools.normalize import parse_quantity, convert
|
|
|
|
|
|
def test_synonym_match():
|
|
res = tool_dictionary.normalize_crop('озима пшениця', trace_id='t1')
|
|
assert res['status'] == 'ok'
|
|
assert res['normalized_id'] == 'crop_wheat_winter'
|
|
|
|
|
|
def test_fuzzy_suggestions():
|
|
res = tool_dictionary.normalize_operation('посив', trace_id='t2')
|
|
assert res['suggestions']
|
|
|
|
|
|
def test_pending_unknown():
|
|
res = tool_dictionary.normalize_field('невідоме поле', trace_id='t3')
|
|
assert res['status'] == 'pending'
|
|
|
|
|
|
def test_unit_conversion():
|
|
value, unit = parse_quantity('2,5 т')
|
|
assert unit in ['т', 't']
|
|
from_dict = 't'
|
|
to = 'kg'
|
|
# simulate conversion
|
|
assert convert(2.5, from_dict, to, [{'id':'t','to_base':{'base':'kg','factor':1000}}, {'id':'kg'}]) == 2500
|