v1.2.2
[1.2.2] — 2026-09-15
get_call_tree keeps the response size in check: for a frequently called 1C procedure the default tree is 45.6 KB instead of 74.8 KB, with max_nodes 5000 — 45.8 KB instead of 1.8 MB. A shortened response says how many edges are shown and suggests how to get the rest.
Added
- Response size limit for
get_call_tree. The default budget is 48 KB, but not above the server[cap].max_response_bytes. If the response does not fit, edges are ordered by level and the farthest are dropped, and thetreefield is not returned: it repeats the edges and takes about a quarter of the response. The response carriestruncated,edges_total(how many edges there were),edges_shown(how many are shown) and a hint on how to get what is needed: farther levels —get_call_treefrom a specific node inedges; a chain to a specific function —find_path; all callers or callees of one node —get_callersorget_calleeswithlimit; fewer levels — a ready call withmax_depthone less (only if the response has more than one level). If the traversal also hitmax_nodes, the hint says the graph has more edges than the shown number. tree_omittedmarker. When all edges fit only without the tree, all edges are returned, thetreefield is omitted, and the response carriestree_omittedand a hint.- The
max_response_bytesparameter sets the budget for one call; it is not raised above the server cap[cap].max_response_bytes_hard. Neither the tool description nor the hint names budget numbers or suggests raising it: in a draft the hint offered to repeat the call with the cap, the test agent did exactly that, the 186 KB response went to a file, and token usage on the question grew by 37 % (single run).
How to apply
- Works right after replacing the binary, no reindexing needed.
Known limitations
- The default budget was chosen without a comparative agent run — 48 KB, as for the other size-limited tools.
- Within one level edges keep the traversal order: shortening drops the end of the level, not the least important edges.
- The file path is repeated in every edge and takes 41–44 % of edge bytes on 1C. Moving paths into a separate list was not done: it changes the edge shape for all clients.
Verification
-
Unit and integration tests:
cargo test --workspace --all-targets— 870 passed, 0 failed; with--features enrichment— 879 passed, 0 failed; no compiler warnings. 8 new tests: a response within budget is unchanged and returned with the tree; a zero budget shortens nothing; a shortened response fits the budget, keeps the near levels and comes without the tree; at least one edge; without the tree more edges fit than with it; the tree is dropped before edges; the hint suggests narrowing the request and does not name the budget; the default budget is not above the constant. -
Locally, a copy of a standard trade configuration (57 thousand files) and a 1C:EDT export of an accounting configuration, compared with 1.2.1 on the same requests:
Request 1.2.1 1.2.2 callers of ЗначениеРеквизитаОбъекта, default74.8 KB, 200 edges 45.6 KB, 162 edges, no treesame, 3 levels, max_nodes50001.8 MB, 5000 edges 45.8 KB, 162 edges same on accounting, 1 level, max_nodes50001.7 MB, 4914 edges 45.4 KB, 175 edges 1 level, max_nodes15056.6 KB, 150 edges 42.2 KB, all 150 edges, tree_omittedmax_response_bytes100,00074.8 KB 74.8 KB, with the tree — byte-identical max_response_bytes900,000,max_nodes50001.8 MB clamped to 192,000 — 186.4 KB, 691 edges Responses that fit the budget matched 1.2.1 byte for byte: a downward tree on a Rust database (28.9 KB, 200 edges), small two-level 1C trees, an empty tree. The
get_callers,get_calleesandfind_pathdescriptions did not change. -
Live development sessions (June–September 2026): of 18
get_call_treecalls 16 were 0.6–13.6 KB — the limit does not affect them; one call withmax_nodes5000 returned 1.24 million characters and was dumped to a file by the client. -
Locally: both services are up on the new build, all 52 watched folders reached ready.
-
Federation: the node (Linux, Docker) was rebuilt on this build — the checksum of the file in both containers matched the built one. The remote accounting database through the local serve: callers of
ЗначениеРеквизитаОбъекта— 70.6 KB, 200 edges → 45.5 KB, 172 edges with the same hint; a small tree matched 1.2.1 byte for byte.
Russian version of the changelog: CHANGELOG.md.
Full Changelog: v1.2.0...v1.2.2