rlmgrep 0.1.28__py3-none-any.whl → 0.1.31__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- rlmgrep/__init__.py +1 -1
- rlmgrep/cli.py +5 -17
- rlmgrep/config.py +2 -2
- {rlmgrep-0.1.28.dist-info → rlmgrep-0.1.31.dist-info}/METADATA +7 -8
- rlmgrep-0.1.31.dist-info/RECORD +14 -0
- rlmgrep-0.1.28.dist-info/RECORD +0 -14
- {rlmgrep-0.1.28.dist-info → rlmgrep-0.1.31.dist-info}/WHEEL +0 -0
- {rlmgrep-0.1.28.dist-info → rlmgrep-0.1.31.dist-info}/entry_points.txt +0 -0
- {rlmgrep-0.1.28.dist-info → rlmgrep-0.1.31.dist-info}/top_level.txt +0 -0
rlmgrep/__init__.py
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
__all__ = ["__version__"]
|
|
2
|
-
__version__ = "0.1.
|
|
2
|
+
__version__ = "0.1.31"
|
rlmgrep/cli.py
CHANGED
|
@@ -186,23 +186,11 @@ def _parse_args(argv: list[str]) -> argparse.Namespace:
|
|
|
186
186
|
parser.add_argument("--answer", action="store_true", help="Print a narrative answer before grep output")
|
|
187
187
|
parser.add_argument("-y", "--yes", action="store_true", help="Skip file count confirmation")
|
|
188
188
|
parser.add_argument(
|
|
189
|
-
"--
|
|
190
|
-
dest="
|
|
189
|
+
"--paths-from-stdin",
|
|
190
|
+
dest="stdin_paths",
|
|
191
191
|
action="store_true",
|
|
192
192
|
help="Treat stdin as newline-delimited file paths (e.g., rg -l)",
|
|
193
193
|
)
|
|
194
|
-
parser.add_argument(
|
|
195
|
-
"--files-from-rg",
|
|
196
|
-
dest="stdin_files",
|
|
197
|
-
action="store_true",
|
|
198
|
-
help="Alias for --files-from-stdin",
|
|
199
|
-
)
|
|
200
|
-
parser.add_argument(
|
|
201
|
-
"--stdin-files",
|
|
202
|
-
dest="stdin_files",
|
|
203
|
-
action="store_true",
|
|
204
|
-
help="Deprecated: use --files-from-stdin",
|
|
205
|
-
)
|
|
206
194
|
|
|
207
195
|
parser.add_argument("-g", "--glob", dest="globs", action="append", default=[], help="Include files matching glob (may repeat)")
|
|
208
196
|
parser.add_argument("--type", dest="types", action="append", default=[], help="Include file types (py, js, md, etc.). May repeat")
|
|
@@ -559,7 +547,7 @@ def main(argv: list[str] | None = None) -> int:
|
|
|
559
547
|
stdin_text: str | None = None
|
|
560
548
|
if args.paths:
|
|
561
549
|
input_paths = list(args.paths)
|
|
562
|
-
elif args.
|
|
550
|
+
elif args.stdin_paths:
|
|
563
551
|
if sys.stdin.isatty():
|
|
564
552
|
_warn("no input paths and stdin is empty")
|
|
565
553
|
return 2
|
|
@@ -582,9 +570,9 @@ def main(argv: list[str] | None = None) -> int:
|
|
|
582
570
|
warnings: list[str] = []
|
|
583
571
|
else:
|
|
584
572
|
warn_threshold = _parse_num(
|
|
585
|
-
_pick(None, config, "file_warn_threshold",
|
|
573
|
+
_pick(None, config, "file_warn_threshold", 1000), int
|
|
586
574
|
)
|
|
587
|
-
hard_max = _parse_num(_pick(None, config, "file_hard_max",
|
|
575
|
+
hard_max = _parse_num(_pick(None, config, "file_hard_max", 5000), int)
|
|
588
576
|
if warn_threshold is not None and warn_threshold <= 0:
|
|
589
577
|
warn_threshold = None
|
|
590
578
|
if hard_max is not None and hard_max <= 0:
|
rlmgrep/config.py
CHANGED
|
@@ -16,8 +16,8 @@ DEFAULT_CONFIG_TEXT = "\n".join(
|
|
|
16
16
|
"max_tokens = 64000",
|
|
17
17
|
"max_iterations = 10",
|
|
18
18
|
"max_llm_calls = 20",
|
|
19
|
-
"file_warn_threshold =
|
|
20
|
-
"file_hard_max =
|
|
19
|
+
"file_warn_threshold = 1000",
|
|
20
|
+
"file_hard_max = 5000",
|
|
21
21
|
"# markitdown_enable_images = false",
|
|
22
22
|
"# markitdown_image_llm_model = \"gpt-5-mini\"",
|
|
23
23
|
"# markitdown_image_llm_provider = \"openai\"",
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: rlmgrep
|
|
3
|
-
Version: 0.1.
|
|
3
|
+
Version: 0.1.31
|
|
4
4
|
Summary: Grep-shaped CLI search powered by DSPy RLM
|
|
5
5
|
Author: rlmgrep
|
|
6
6
|
License: MIT
|
|
@@ -100,8 +100,7 @@ Common options:
|
|
|
100
100
|
- `--no-recursive` do not recurse directories
|
|
101
101
|
- `-a`, `--text` treat binary files as text
|
|
102
102
|
- `-y`, `--yes` skip file count confirmation
|
|
103
|
-
- `--
|
|
104
|
-
- `--files-from-rg` alias for `--files-from-stdin`
|
|
103
|
+
- `--paths-from-stdin` treat stdin as newline-delimited file paths (e.g., `rg -l`)
|
|
105
104
|
- `--model`, `--sub-model` override model names
|
|
106
105
|
- `--api-key`, `--api-base`, `--model-type` override provider settings
|
|
107
106
|
- `--max-iterations`, `--max-llm-calls` cap RLM search effort
|
|
@@ -123,7 +122,7 @@ rlmgrep "How do we map external API errors into internal error codes?" -g "**/*.
|
|
|
123
122
|
cat README.md | rlmgrep --answer "What is this tool for and how is it used?"
|
|
124
123
|
|
|
125
124
|
# Use rg/grep to find candidate files, then rlmgrep over that list
|
|
126
|
-
rg -l "token" . | rlmgrep --
|
|
125
|
+
rg -l "token" . | rlmgrep --paths-from-stdin --answer "What does this token control and where is it validated?"
|
|
127
126
|
```
|
|
128
127
|
|
|
129
128
|
## Input selection
|
|
@@ -133,8 +132,8 @@ rg -l "token" . | rlmgrep --files-from-stdin --answer "What does this token cont
|
|
|
133
132
|
- `--type` uses built-in type mappings (e.g., `py`, `js`, `md`); unknown values are treated as file extensions.
|
|
134
133
|
- `-g/--glob` matches path globs against normalized paths (forward slashes).
|
|
135
134
|
- Paths are printed relative to the current working directory when possible.
|
|
136
|
-
- If no paths are provided, rlmgrep reads from stdin and uses the synthetic path `<stdin
|
|
137
|
-
- rlmgrep asks for confirmation when more than
|
|
135
|
+
- If no paths are provided and stdin is a TTY, rlmgrep defaults to `.`. If stdin is piped, it reads from stdin and uses the synthetic path `<stdin>`.
|
|
136
|
+
- rlmgrep asks for confirmation when more than 1000 files would be loaded (use `-y/--yes` to skip), and aborts when more than 5000 files would be loaded.
|
|
138
137
|
|
|
139
138
|
## Output contract (stable for agents)
|
|
140
139
|
|
|
@@ -179,8 +178,8 @@ temperature = 1.0
|
|
|
179
178
|
max_tokens = 64000
|
|
180
179
|
max_iterations = 10
|
|
181
180
|
max_llm_calls = 20
|
|
182
|
-
file_warn_threshold =
|
|
183
|
-
file_hard_max =
|
|
181
|
+
file_warn_threshold = 1000
|
|
182
|
+
file_hard_max = 5000
|
|
184
183
|
# markitdown_enable_images = false
|
|
185
184
|
# markitdown_image_llm_model = "gpt-5-mini"
|
|
186
185
|
# markitdown_image_llm_provider = "openai"
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
rlmgrep/__init__.py,sha256=-UV2WXLjaO2hpWxCrGqqxtdZ50O8fdsfoshxdAf9iPs,49
|
|
2
|
+
rlmgrep/__main__.py,sha256=MHKZ_ae3fSLGTLUUMOx15fWdeOnJSHhq-zslRP5F5Lc,79
|
|
3
|
+
rlmgrep/cli.py,sha256=eGXiOxBx_y5QKmK1_6SBtquK19czLD78zbV2bOg2D98,29052
|
|
4
|
+
rlmgrep/config.py,sha256=-AztmCsoeO2PySVWbdGZykxP6uwNDUQXp-biUQcgS2c,2400
|
|
5
|
+
rlmgrep/file_map.py,sha256=x2Ri1wzK8_87GUorsAV01K_nYLZcv30yIquDeTCcdEw,876
|
|
6
|
+
rlmgrep/ingest.py,sha256=906JUwWRC0XDoYRXs4-XdV3fay8mQc324l0suQLyS-k,13738
|
|
7
|
+
rlmgrep/interpreter.py,sha256=s_nMRxLlAU9C0JmUzUBW5NbVbuH67doVWF54K54STlA,2478
|
|
8
|
+
rlmgrep/render.py,sha256=mCTT6yuKNv7HJ46LzOyLkCbyBedCWSNd7UeubyLXcyM,3356
|
|
9
|
+
rlmgrep/rlm.py,sha256=i3rCTp8OABByF60Un5gO7265gaW4spwU0OFKIz4surg,5750
|
|
10
|
+
rlmgrep-0.1.31.dist-info/METADATA,sha256=ALRWBK3rQIQFnh_M-qYeUq8Q3rpzB61lzSyafgSnWjM,7993
|
|
11
|
+
rlmgrep-0.1.31.dist-info/WHEEL,sha256=wUyA8OaulRlbfwMtmQsvNngGrxQHAvkKcvRmdizlJi0,92
|
|
12
|
+
rlmgrep-0.1.31.dist-info/entry_points.txt,sha256=UV6QkEbkwBO1JJ53mm84_n35tVyOczPvOQ14ga7vrCI,45
|
|
13
|
+
rlmgrep-0.1.31.dist-info/top_level.txt,sha256=gTujSRsO58c80eN7aRH2cfe51FHxx8LJ1w1Y2YlHti0,8
|
|
14
|
+
rlmgrep-0.1.31.dist-info/RECORD,,
|
rlmgrep-0.1.28.dist-info/RECORD
DELETED
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
rlmgrep/__init__.py,sha256=xdVNqWDT7j4Mz_0zEmG8j1IxTdZuza6GixKO9zQj7xM,49
|
|
2
|
-
rlmgrep/__main__.py,sha256=MHKZ_ae3fSLGTLUUMOx15fWdeOnJSHhq-zslRP5F5Lc,79
|
|
3
|
-
rlmgrep/cli.py,sha256=H2ZVKA4bCmjzOqgbjmqqVgVFB7RdfZkG5FR6k8-ueyo,29375
|
|
4
|
-
rlmgrep/config.py,sha256=u1iz-nI8dj-dZETbpIki3RQefHJEyi5oE5zE4_IR8kg,2399
|
|
5
|
-
rlmgrep/file_map.py,sha256=x2Ri1wzK8_87GUorsAV01K_nYLZcv30yIquDeTCcdEw,876
|
|
6
|
-
rlmgrep/ingest.py,sha256=906JUwWRC0XDoYRXs4-XdV3fay8mQc324l0suQLyS-k,13738
|
|
7
|
-
rlmgrep/interpreter.py,sha256=s_nMRxLlAU9C0JmUzUBW5NbVbuH67doVWF54K54STlA,2478
|
|
8
|
-
rlmgrep/render.py,sha256=mCTT6yuKNv7HJ46LzOyLkCbyBedCWSNd7UeubyLXcyM,3356
|
|
9
|
-
rlmgrep/rlm.py,sha256=i3rCTp8OABByF60Un5gO7265gaW4spwU0OFKIz4surg,5750
|
|
10
|
-
rlmgrep-0.1.28.dist-info/METADATA,sha256=Z9z5wJL-JIu6IYDjMRwtFdjozLE5tmg6uAeMqDtNqko,8025
|
|
11
|
-
rlmgrep-0.1.28.dist-info/WHEEL,sha256=wUyA8OaulRlbfwMtmQsvNngGrxQHAvkKcvRmdizlJi0,92
|
|
12
|
-
rlmgrep-0.1.28.dist-info/entry_points.txt,sha256=UV6QkEbkwBO1JJ53mm84_n35tVyOczPvOQ14ga7vrCI,45
|
|
13
|
-
rlmgrep-0.1.28.dist-info/top_level.txt,sha256=gTujSRsO58c80eN7aRH2cfe51FHxx8LJ1w1Y2YlHti0,8
|
|
14
|
-
rlmgrep-0.1.28.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|