blob: 0b2a7504131c9881f91ae58cc9a5c4ba383156e0 [file] [log] [blame] [view]
# Contributing to Sketch
## Running tests
- `go test ./...`
- `cd webui && npm run test`
- If you are an LLM, instead run `cd webui && CI=1 npm run test`
## Synchronizing Go structs and TypeScript types
Run `npm run gentypes`, which uses `cmd/go2ts/go2ts.go` under the covers and
which has a list of types to translate.
## Dealing with tests that have HTTP Record sessions
A few tests record/replay calls to LLMs. As necessary (e.g.,
if changing the system prompt or tool definitions), rebuild the
test data by running update_tests.sh in the relevant directory.
## Debugging JS Classes
Something like "document.querySelectorAll('sketch-app-shell')[0].dataManager.messages.map(x => x.idx)"
in the browser JS console works to pull out the custom components implementing the web ui.
## Recursively running Sketch
If you are editing Sketch from within Sketch, you can use the following to give
Sketch a place to store its skaband client key across sessions, allowing the
agent to iterate on itself.
```
# Outside
mkdir -p ~/.inside-cache/webui
go run ./cmd/sketch -docker-args "-v $HOME/.inside-cache:/root/.cache/sketch"
# Inside
go run ./cmd/sketch -unsafe
```