40 lines
1.4 KiB
Markdown
40 lines
1.4 KiB
Markdown
# goose-sdk
|
|
|
|
The bindings layer for Goose. It houses the shared types used for both ACP and
|
|
SDK access, and exposes a cross-language version of the Goose API.
|
|
|
|
With `--features uniffi` the crate compiles to native bindings for Python and
|
|
Kotlin (namespace `goose` / `io.github.aaif_goose`). The UniFFI surface lets
|
|
callers construct providers, stream provider completions, perform non-streaming
|
|
completion, and pass rich message/tool content across the FFI boundary.
|
|
|
|
```bash
|
|
just python # build bindings + run examples/uniffi/provider.py
|
|
just kotlin # build the Maven artifact + run examples/uniffi/kotlin
|
|
```
|
|
|
|
## Python package
|
|
|
|
The PyPI package is published as `goose-sdk` and imports as `goose`.
|
|
Build a local wheel from the repository root with:
|
|
|
|
```bash
|
|
just --justfile crates/goose-sdk/justfile python-wheel
|
|
```
|
|
|
|
This regenerates the UniFFI Python bindings, copies the release native library
|
|
into the package, and writes the wheel to `crates/goose-sdk/python/dist/`.
|
|
|
|
## Maven package
|
|
|
|
The Maven Central artifact is published as `io.github.aaif-goose:gdk` and uses
|
|
the Rust crate version from `crates/goose-sdk/Cargo.toml`.
|
|
|
|
```bash
|
|
just --justfile crates/goose-sdk/justfile maven-package
|
|
```
|
|
|
|
This regenerates the UniFFI Kotlin bindings and packages them with the native
|
|
library in a JVM jar. CI builds the native libraries for supported platforms and
|
|
can optionally publish the combined artifact to Maven Central.
|