# 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
```
