ragtime-cli 0.2.15__py3-none-any.whl → 0.2.16__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.
- {ragtime_cli-0.2.15.dist-info → ragtime_cli-0.2.16.dist-info}/METADATA +57 -3
- {ragtime_cli-0.2.15.dist-info → ragtime_cli-0.2.16.dist-info}/RECORD +8 -8
- src/cli.py +5 -1
- src/mcp_server.py +1 -1
- {ragtime_cli-0.2.15.dist-info → ragtime_cli-0.2.16.dist-info}/WHEEL +0 -0
- {ragtime_cli-0.2.15.dist-info → ragtime_cli-0.2.16.dist-info}/entry_points.txt +0 -0
- {ragtime_cli-0.2.15.dist-info → ragtime_cli-0.2.16.dist-info}/licenses/LICENSE +0 -0
- {ragtime_cli-0.2.15.dist-info → ragtime_cli-0.2.16.dist-info}/top_level.txt +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: ragtime-cli
|
|
3
|
-
Version: 0.2.
|
|
3
|
+
Version: 0.2.16
|
|
4
4
|
Summary: Local-first memory and RAG system for Claude Code - semantic search over code, docs, and team knowledge
|
|
5
5
|
Author-email: Bret Martineau <bretwardjames@gmail.com>
|
|
6
6
|
License-Expression: MIT
|
|
@@ -263,9 +263,38 @@ This is intentional - embeddings work better on focused summaries than large cod
|
|
|
263
263
|
|
|
264
264
|
For Claude/MCP usage: The search tool description instructs Claude to read returned file paths for full implementations before making code changes.
|
|
265
265
|
|
|
266
|
+
### Smart Query Understanding
|
|
267
|
+
|
|
268
|
+
Search automatically detects qualifiers in natural language:
|
|
269
|
+
|
|
270
|
+
```bash
|
|
271
|
+
# These are equivalent - qualifiers are auto-detected
|
|
272
|
+
ragtime search "error handling in mobile app"
|
|
273
|
+
ragtime search "error handling" -r mobile
|
|
274
|
+
|
|
275
|
+
# Use --raw for literal/exact search
|
|
276
|
+
ragtime search "mobile error handling" --raw
|
|
277
|
+
```
|
|
278
|
+
|
|
279
|
+
Auto-detected qualifiers include: mobile, web, desktop, ios, android, flutter, react, vue, dart, python, typescript, auth, api, database, frontend, backend, and more.
|
|
280
|
+
|
|
281
|
+
### Tiered Search
|
|
282
|
+
|
|
283
|
+
Use tiered search to prioritize curated knowledge over raw code:
|
|
284
|
+
|
|
285
|
+
```bash
|
|
286
|
+
# Via MCP
|
|
287
|
+
search(query="authentication", tiered=True)
|
|
288
|
+
```
|
|
289
|
+
|
|
290
|
+
Tiered search returns results in priority order:
|
|
291
|
+
1. **Memories** - Curated, high-signal knowledge
|
|
292
|
+
2. **Documentation** - Indexed markdown files
|
|
293
|
+
3. **Code** - Function signatures and symbols
|
|
294
|
+
|
|
266
295
|
### Hybrid Search
|
|
267
296
|
|
|
268
|
-
|
|
297
|
+
For explicit keyword filtering, use `require_terms`:
|
|
269
298
|
|
|
270
299
|
```bash
|
|
271
300
|
# CLI
|
|
@@ -277,6 +306,29 @@ search(query="error handling", require_terms=["mobile", "dart"])
|
|
|
277
306
|
|
|
278
307
|
This combines semantic similarity (finds conceptually related content) with keyword filtering (ensures qualifiers aren't ignored).
|
|
279
308
|
|
|
309
|
+
### Hierarchical Doc Chunking
|
|
310
|
+
|
|
311
|
+
Long markdown files are automatically chunked by headers for better search accuracy:
|
|
312
|
+
|
|
313
|
+
- Each section becomes a separate searchable chunk
|
|
314
|
+
- Parent headers are preserved as context in the embedding
|
|
315
|
+
- Short docs (<500 chars) remain as single chunks
|
|
316
|
+
- Section path is stored (e.g., "Installation > Configuration > Environment Variables")
|
|
317
|
+
|
|
318
|
+
### Feedback Loop
|
|
319
|
+
|
|
320
|
+
Search quality improves over time based on usage patterns:
|
|
321
|
+
|
|
322
|
+
```bash
|
|
323
|
+
# Record when a result is useful (via MCP)
|
|
324
|
+
record_feedback(query="auth flow", result_file="src/auth.py", action="used")
|
|
325
|
+
|
|
326
|
+
# View usage statistics
|
|
327
|
+
feedback_stats()
|
|
328
|
+
```
|
|
329
|
+
|
|
330
|
+
Frequently-used files receive a boost in future search rankings.
|
|
331
|
+
|
|
280
332
|
## Code Indexing
|
|
281
333
|
|
|
282
334
|
The code indexer extracts meaningful symbols from your codebase:
|
|
@@ -379,13 +431,15 @@ Add to your Claude config (`.mcp.json`):
|
|
|
379
431
|
|
|
380
432
|
Available tools:
|
|
381
433
|
- `remember` - Store a memory
|
|
382
|
-
- `search` - Semantic search
|
|
434
|
+
- `search` - Semantic search (supports tiered mode and auto-extraction)
|
|
383
435
|
- `list_memories` - List with filters
|
|
384
436
|
- `get_memory` - Get by ID
|
|
385
437
|
- `store_doc` - Store document verbatim
|
|
386
438
|
- `forget` - Delete memory
|
|
387
439
|
- `graduate` - Promote branch → app
|
|
388
440
|
- `update_status` - Change memory status
|
|
441
|
+
- `record_feedback` - Record when search results are used (improves future rankings)
|
|
442
|
+
- `feedback_stats` - View search result usage patterns
|
|
389
443
|
|
|
390
444
|
## ghp-cli Integration
|
|
391
445
|
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
ragtime_cli-0.2.
|
|
1
|
+
ragtime_cli-0.2.16.dist-info/licenses/LICENSE,sha256=9A0wJs2PRDciGRH4F8JUJ-aMKYQyq_gVu2ixrXs-l5A,1070
|
|
2
2
|
src/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
3
|
-
src/cli.py,sha256=
|
|
3
|
+
src/cli.py,sha256=idCI9DRwfdlUs6IRD0fJo-D-72to67YGl8lUNm-aTEg,77162
|
|
4
4
|
src/config.py,sha256=tQ6gPLr4ksn2bJPIUjtELFr-k01Eg4g-LDo3GNE6P0Q,4600
|
|
5
5
|
src/db.py,sha256=eWqFGrg3O6hve67EzRJGcAsIpYxWJo4JlrAtlZUUA_s,15169
|
|
6
6
|
src/feedback.py,sha256=cPw_lzusZZPvkgUxs_eV67NtV1FoCfTXUulBPnD78lo,6455
|
|
7
|
-
src/mcp_server.py,sha256=
|
|
7
|
+
src/mcp_server.py,sha256=q66ZQRIBDqIscO5Ooebq9bC71tcpgUG0WS8INbS6HtI,26498
|
|
8
8
|
src/memory.py,sha256=UiHyudKbseMMY-sdcaDSfVBMGj6sFXXw1GxBsZ7nuBc,18450
|
|
9
9
|
src/commands/audit.md,sha256=Xkucm-gfBIMalK9wf7NBbyejpsqBTUAGGlb7GxMtMPY,5137
|
|
10
10
|
src/commands/create-pr.md,sha256=u6-jVkDP_6bJQp6ImK039eY9F6B9E2KlAVlvLY-WV6Q,9483
|
|
@@ -19,8 +19,8 @@ src/commands/start.md,sha256=qoqhkMgET74DBx8YPIT1-wqCiVBUDxlmevigsCinHSY,6506
|
|
|
19
19
|
src/indexers/__init__.py,sha256=MYoCPZUpHakMX1s2vWnc9shjWfx_X1_0JzUhpKhnKUQ,454
|
|
20
20
|
src/indexers/code.py,sha256=G2TbiKbWj0e7DV5KsU8-Ggw6ziDb4zTuZ4Bu3ryV4g8,18059
|
|
21
21
|
src/indexers/docs.py,sha256=Q8krHYw0bybUyZaq1sJ0r6Fv-I_6BjTufhqI1eg_25s,9992
|
|
22
|
-
ragtime_cli-0.2.
|
|
23
|
-
ragtime_cli-0.2.
|
|
24
|
-
ragtime_cli-0.2.
|
|
25
|
-
ragtime_cli-0.2.
|
|
26
|
-
ragtime_cli-0.2.
|
|
22
|
+
ragtime_cli-0.2.16.dist-info/METADATA,sha256=M2Rkk7DvKBJYfOEdww_Mxt8NiDKLKoAKCte_T4APOYE,12832
|
|
23
|
+
ragtime_cli-0.2.16.dist-info/WHEEL,sha256=wUyA8OaulRlbfwMtmQsvNngGrxQHAvkKcvRmdizlJi0,92
|
|
24
|
+
ragtime_cli-0.2.16.dist-info/entry_points.txt,sha256=cWLbeyMxZNbew-THS3bHXTpCRXt1EaUy5QUOXGXLjl4,75
|
|
25
|
+
ragtime_cli-0.2.16.dist-info/top_level.txt,sha256=74rtVfumQlgAPzR5_2CgYN24MB0XARCg0t-gzk6gTrM,4
|
|
26
|
+
ragtime_cli-0.2.16.dist-info/RECORD,,
|
src/cli.py
CHANGED
|
@@ -2215,8 +2215,12 @@ def update(check: bool):
|
|
|
2215
2215
|
import json
|
|
2216
2216
|
from urllib.request import urlopen
|
|
2217
2217
|
from urllib.error import URLError
|
|
2218
|
+
from importlib.metadata import version as get_version
|
|
2218
2219
|
|
|
2219
|
-
|
|
2220
|
+
try:
|
|
2221
|
+
current = get_version("ragtime-cli")
|
|
2222
|
+
except Exception:
|
|
2223
|
+
current = "0.0.0" # Fallback if not installed as package
|
|
2220
2224
|
|
|
2221
2225
|
click.echo(f"Current version: {current}")
|
|
2222
2226
|
click.echo("Checking PyPI for updates...")
|
src/mcp_server.py
CHANGED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|