ToolStore Agent
feat: 4 new toolsets — docx-toolkit, pptx-toolkit, text-gen, batch-ops (15 functions total)
088cdb2
|
Raw
History Blame Contribute Delete
3.56 kB
# batch‑ops
Bulk file operations — rename, find‑and‑replace, aggregate stats, and batch copy.
Pure‑stdlib, safe‑by‑default (dry‑run preview before changes).
---
## When to Use This Toolset
- Renaming multiple files with regex patterns
- Finding and replacing text across many files
- Getting aggregate file statistics for a directory
- Copying files matching a glob pattern
- Any repetitive file operation best automated
---
## Process
```
Scope → Preview → Execute → Verify
```
1. **Scope**: Define the directory and pattern. Use dry‑run first!
2. **Preview**: Run with `dry_run=True` (default) to see what will change
3. **Execute**: Run with `dry_run=False` to apply changes
4. **Verify**: Check the results — run `batch_stats` to confirm
> ⚠️ **Always dry‑run first.** All destructive operations default to `dry_run=True`.
---
## Function Reference
### `batch_rename`
Rename files matching a regex pattern.
**When to use:** Normalizing filenames, adding prefixes/suffixes, date formatting.
**Args:** `directory` (str), `pattern` (str), `replacement` (str),
`dry_run` (bool, default true), `recursive` (bool, default false)
**Returns:** `{changes: [{old_name, new_name}], count, dry_run, directory}`
### `batch_find_replace`
Find‑and‑replace across text files.
**When to use:** Updating URLs, changing variable names, fixing typos across a codebase.
**Args:** `directory` (str), `pattern` (str, glob), `find_text` (str),
`replace_text` (str), `dry_run` (bool, default true), `recursive` (bool)
**Returns:** `{changes: [{file, matches}], total_files, total_matches, dry_run, directory}`
### `batch_stats`
Aggregate statistics for files in a directory.
**When to use:** Understanding project structure, finding large files, auditing.
**Args:** `directory` (str), `pattern` (str, default "*"), `recursive` (bool)
**Returns:** `{file_count, total_size_bytes, extensions, largest_file, smallest_file, directory}`
### `batch_copy`
Copy files matching a pattern to a destination.
**When to use:** Collecting files from subdirectories, backing up specific file types.
**Args:** `source_dir` (str), `dest_dir` (str), `pattern` (str, default "*"),
`recursive` (bool), `overwrite` (bool, default false)
**Returns:** `{copied: [...], count, skipped: [...], dest_dir}`
---
## Common Patterns
### Audit then Clean
```
batch_stats → understand file composition
batch_rename(dry_run=True) → preview changes
batch_rename(dry_run=False) → apply
batch_stats → verify result
```
### Find and Fix
```
batch_find_replace(dry_run=True) → see what matches
batch_find_replace(dry_run=False) → apply changes
git diff → verify changes are expected
```
---
## Guidelines
### Do
- **Always dry‑run first** — default is `dry_run=True`
- Use `batch_stats` before and after to verify changes
- Test regex patterns on a single file before batch‑renaming
- Use `text_diff` (from text‑transform) to verify find‑replace results
### Don't
- Don't batch‑rename without confirming the regex matches the right files
- Don't find‑replace in binary files — use glob patterns to restrict to text files
- Don't copy with `overwrite=True` without checking destination first
- Don't run recursive operations on root directories — scope tightly
### Safety Features
- All destructive ops default to `dry_run=True`
- `batch_rename` skips files where target name already exists
- `batch_copy` skips existing files unless `overwrite=True`
- All functions validate directory existence before operating