tools: stable ordering + cursor paging for list_group_addresses and get_devices

- sort by the address itself (GA main/middle/sub numerically, device area/line/device), so the
  result no longer depends on parser dict order and a retry returns the same page
- return {items, total_matched, returned, next_cursor} instead of a bare list truncated at limit:
  truncation was silent and a caller could not distinguish a full answer from a cut one
- tests/test_paging.py (in CI): numeric vs lexical order, full walk at page sizes 1..100 covers every
  row exactly once, same page after a reshuffled re-parse, filters reflected in total_matched
- verified on a real 3646-GA project; README EN/RU + CHANGELOG updated
- prompted by feedback on the r/mcp post (2026-09-12)
This commit is contained in:
Nikolay Miroshnichenko
2026-09-12 21:15:55 +02:00
parent 07352cdb61
commit 4010743eb5
3 changed files with 174 additions and 24 deletions
+3
View File
@@ -52,6 +52,9 @@ jobs:
- name: Structure-first entity suggestions (HA SuggestionProvider prototype)
run: python tests/test_suggest.py
- name: Stable ordering + cursor paging for large tool results
run: python tests/test_paging.py
- name: Console script is installed
run: |
python -c "import importlib.metadata as m; print('entry points:', [e.name for e in m.entry_points(group='console_scripts') if e.name == 'nickol-knx-mcp'])"