diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 15f9f146..5d540b9a 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -67,6 +67,21 @@ you can talk to goose! You can now make changes in the code in ui/desktop to iterate on the GUI half of goose. +### Regenerating the OpenAPI schema + +The file `ui/desktop/openapi.json` is automatically generated during the build. +It is written by the `generate_schema` binary in `crates/goose-server`. +If you need to update the spec without starting the UI, run: + +``` +just generate-openapi +``` + +This command regenerates `ui/desktop/openapi.json` and then runs the UI's +`generate-api` script to rebuild the TypeScript client from that spec. + +Changes to the API should be made in the Rust source under `crates/goose-server/src/`. + ## Creating a fork To fork the repository: diff --git a/Justfile b/Justfile index 9641cf28..6b3543c4 100644 --- a/Justfile +++ b/Justfile @@ -177,6 +177,13 @@ run-server: @echo "Running server..." cargo run -p goose-server +# Generate OpenAPI specification without starting the UI +generate-openapi: + @echo "Generating OpenAPI schema..." + cargo run -p goose-server --bin generate_schema + @echo "Generating frontend API..." + cd ui/desktop && npm run generate-api + # make GUI with latest binary lint-ui: cd ui/desktop && npm run lint:check