Commit 2df5151
martinma51
refactor(tools): share cwd-backfill helper + skip redundant scans
Addresses all five Gemini-code-assist review points on PR xorbitsai#460.
Centralise the manual file-registration backfill that python_executor
and javascript_executor were each doing inline. Both adapters now
just call ``workspace.backfill_files_from_cwd(working_directory)``
around the existing ``auto_register_files()`` block.
Key changes from the duplicated inline implementations:
1. **Skip-when-redundant fast path.** When the executor's cwd is
already inside ``workspace_dir`` (the common case in tests and
for tasks whose workspace id matches the executor's working
directory), ``auto_register_files`` already covers those files
on its own scan. The new helper detects this with
``wd.is_relative_to(workspace_dir)`` and yields immediately
without doing any second walk — avoiding the double-scan Gemini
called out.
2. **``os.walk`` with in-place dir pruning** replaces ``rglob("*")``
+ post-filter. Hidden subdirs, ``__pycache__`` and ``node_modules``
are pruned from ``dirnames`` so the walk never descends into
them — significantly faster on trees that contain large
``node_modules`` directories (which is exactly the case for the
pptxgenjs-using JS executor).
3. **No more ``p.resolve()`` inside the snapshot loop.** ``os.walk``
already yields absolute paths when given an absolute root, so we
resolve the root once outside the walk and reuse it. Each entry
in the resulting set is already absolute and comparable across
the before/after snapshots without further normalisation.
4. **Module-level logger.** The inline helpers were creating a
per-call ``_log`` shadow of the module logger; both adapters
now use the module-level ``logger`` they already declared at
import time.
5. **No per-call function redefinition.** The inline ``_scan_cwd``
was being defined fresh on every executor invocation; the
extracted ``_scan_user_files`` is a module-level function.
Also drop the redundant ``try/except`` around
``self.workspace.get_file_id_from_path(...)`` in
``workspace_file_tool.py``: that method already swallows internal
exceptions and returns ``None``, so the outer guard was dead code.
Tests: 60 tests across javascript_executor / python_executor /
workspace / file_analysis suites pass; ruff check + format clean.1 parent 0f3c308 commit 2df5151
4 files changed
Lines changed: 105 additions & 100 deletions
File tree
- src/xagent/core
- tools
- adapters/vibe
- core
Lines changed: 11 additions & 44 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
81 | 81 | | |
82 | 82 | | |
83 | 83 | | |
84 | | - | |
85 | | - | |
86 | | - | |
87 | | - | |
88 | | - | |
89 | | - | |
| 84 | + | |
| 85 | + | |
| 86 | + | |
| 87 | + | |
| 88 | + | |
| 89 | + | |
| 90 | + | |
| 91 | + | |
90 | 92 | | |
91 | | - | |
92 | | - | |
93 | | - | |
94 | | - | |
95 | | - | |
96 | | - | |
97 | | - | |
98 | | - | |
99 | | - | |
100 | | - | |
101 | | - | |
102 | | - | |
103 | | - | |
104 | | - | |
105 | | - | |
106 | | - | |
107 | | - | |
108 | | - | |
109 | | - | |
110 | | - | |
111 | | - | |
112 | | - | |
113 | | - | |
114 | | - | |
115 | | - | |
116 | | - | |
117 | | - | |
118 | | - | |
119 | | - | |
120 | | - | |
121 | | - | |
122 | | - | |
123 | | - | |
124 | | - | |
125 | | - | |
126 | | - | |
127 | | - | |
128 | | - | |
| 93 | + | |
| 94 | + | |
| 95 | + | |
129 | 96 | | |
130 | 97 | | |
131 | 98 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
86 | 86 | | |
87 | 87 | | |
88 | 88 | | |
89 | | - | |
90 | | - | |
91 | | - | |
92 | | - | |
93 | | - | |
94 | | - | |
95 | | - | |
96 | | - | |
97 | | - | |
98 | | - | |
| 89 | + | |
| 90 | + | |
| 91 | + | |
| 92 | + | |
| 93 | + | |
| 94 | + | |
| 95 | + | |
| 96 | + | |
| 97 | + | |
99 | 98 | | |
100 | | - | |
101 | | - | |
102 | | - | |
103 | | - | |
104 | | - | |
105 | | - | |
106 | | - | |
107 | | - | |
108 | | - | |
109 | | - | |
110 | | - | |
111 | | - | |
112 | | - | |
113 | | - | |
114 | | - | |
115 | | - | |
116 | | - | |
117 | | - | |
118 | | - | |
119 | | - | |
120 | | - | |
121 | | - | |
122 | | - | |
123 | | - | |
124 | | - | |
125 | | - | |
126 | | - | |
127 | | - | |
128 | | - | |
129 | | - | |
130 | | - | |
131 | | - | |
132 | | - | |
133 | | - | |
134 | | - | |
135 | | - | |
136 | | - | |
137 | | - | |
138 | | - | |
| 99 | + | |
| 100 | + | |
| 101 | + | |
139 | 102 | | |
140 | 103 | | |
141 | 104 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
529 | 529 | | |
530 | 530 | | |
531 | 531 | | |
532 | | - | |
533 | | - | |
534 | | - | |
535 | | - | |
536 | | - | |
537 | | - | |
538 | | - | |
| 532 | + | |
| 533 | + | |
| 534 | + | |
| 535 | + | |
| 536 | + | |
| 537 | + | |
539 | 538 | | |
540 | 539 | | |
541 | 540 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
25 | 25 | | |
26 | 26 | | |
27 | 27 | | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
| 32 | + | |
| 33 | + | |
| 34 | + | |
| 35 | + | |
| 36 | + | |
| 37 | + | |
| 38 | + | |
| 39 | + | |
| 40 | + | |
| 41 | + | |
| 42 | + | |
| 43 | + | |
| 44 | + | |
| 45 | + | |
| 46 | + | |
| 47 | + | |
| 48 | + | |
| 49 | + | |
| 50 | + | |
| 51 | + | |
| 52 | + | |
| 53 | + | |
| 54 | + | |
| 55 | + | |
| 56 | + | |
| 57 | + | |
| 58 | + | |
| 59 | + | |
28 | 60 | | |
29 | 61 | | |
30 | 62 | | |
| |||
848 | 880 | | |
849 | 881 | | |
850 | 882 | | |
| 883 | + | |
| 884 | + | |
| 885 | + | |
| 886 | + | |
| 887 | + | |
| 888 | + | |
| 889 | + | |
| 890 | + | |
| 891 | + | |
| 892 | + | |
| 893 | + | |
| 894 | + | |
| 895 | + | |
| 896 | + | |
| 897 | + | |
| 898 | + | |
| 899 | + | |
| 900 | + | |
| 901 | + | |
| 902 | + | |
| 903 | + | |
| 904 | + | |
| 905 | + | |
| 906 | + | |
| 907 | + | |
| 908 | + | |
| 909 | + | |
| 910 | + | |
| 911 | + | |
| 912 | + | |
| 913 | + | |
| 914 | + | |
| 915 | + | |
| 916 | + | |
| 917 | + | |
| 918 | + | |
| 919 | + | |
| 920 | + | |
| 921 | + | |
| 922 | + | |
| 923 | + | |
| 924 | + | |
| 925 | + | |
| 926 | + | |
851 | 927 | | |
852 | 928 | | |
853 | 929 | | |
| |||
0 commit comments