File ops
The model changes your codebase through three tools. All of them can trigger immediate type feedback after a successful write (Write diagnostics).
edit (find and replace)
Section titled “edit (find and replace)”The model provides an exact oldString and newString inside a file.
| Outcome | Meaning |
|---|---|
| 1 match | file updated |
| 0 matches | snippet not found |
| 2+ matches | ambiguous; model must add more context |
Best when the model has read the full file and can quote a unique snippet.
edit_lines (line ranges)
Section titled “edit_lines (line ranges)”Line-number edits anchored to a content hash from the last read. Safer when the file might have changed between read and write.
create (new file)
Section titled “create (new file)”Writes a new file only. Refuses to overwrite an existing path. Creates parent directories as needed.
Vendored & read-only scope
Section titled “Vendored & read-only scope”In a full-stack BoringStack build, generated paths are read-only: the TanStack route tree and the OpenAPI-derived typed client.
| Path | Why it’s read-only |
|---|---|
**/*.gen.ts | code generation output (e.g. TanStack’s route tree), regenerated by the build. Hand-edits are lost |
Both edit and create reject writes to it, regardless of the session’s editable scope; a type error “in” the generated tree is a wrong call site (usually a malformed route file), not a bug in the tree.
Everything else the scaffold lays down is clean, strict, and editable like any other file. Earlier versions shipped a “vendored” SDK (api/use-resource/result/mocks) that broke the harness’s own strictness (as casts, eslint-disable) and was hidden behind this guard. That whole layer was removed. The model now writes its own data layer, gated like any code.