ui/sdk/README.md
TypeScript client library for the Goose Agent Client Protocol (ACP).
This package provides:
npm install @aaif/goose-sdk @agentclientprotocol/sdk
The native goose binaries are distributed as optional dependencies
and will be automatically installed for your platform.
# Build everything (schema + TypeScript)
npm run build
# Build just the schema (requires Rust)
npm run build:schema
# Build just the TypeScript
npm run build:ts
# Build native binary for current platform
npm run build:native
# Build native binaries for all platforms
npm run build:native:all
To use this package locally in another project:
# In ui/sdk
npm run build
npm link
# In the consuming project
npm link @aaif/goose-sdk
The TypeScript types are generated from Rust schemas defined in crates/goose.
The build process:
generate-acp-schema Rust binaryacp-schema.json and acp-meta.json@hey-api/openapi-ts to generate TypeScript types and Zod validatorssrc/generated/client.gen.tsTo regenerate schemas after changing Rust types:
npm run build:schema
Platform-specific npm packages for the goose binary are located in
ui/goose-binary/:
| Package | Platform |
|---|---|
@aaif/goose-binary-darwin-arm64 | macOS Apple Silicon |
@aaif/goose-binary-darwin-x64 | macOS Intel |
@aaif/goose-binary-linux-arm64 | Linux ARM64 |
@aaif/goose-binary-linux-x64 | Linux x64 |
@aaif/goose-binary-win32-x64 | Windows x64 |
These are published separately from @aaif/goose-sdk.
# Build for current platform
npm run build:native
# Build for all platforms (requires cross-compilation toolchains)
npm run build:native:all
# Build for specific platform(s)
npx tsx scripts/build-native.ts darwin-arm64 linux-x64
Publishing is handled by GitHub Actions. See .github/workflows/publish-npm.yml.
For manual publishing:
# From repository root
./ui/scripts/publish.sh --real
This will:
@aaif/goose-sdkCompose the ACP client with the standard ACP SDK, then use GooseExtClient for
typed Goose extension methods:
import {
client as createAcpClient,
methods,
PROTOCOL_VERSION,
} from "@agentclientprotocol/sdk";
import { createWebSocketStream } from "@agentclientprotocol/sdk/experimental/ws-client";
import { GooseExtClient } from "@aaif/goose-sdk";
const app = createAcpClient({ name: "my-client" });
const stream = createWebSocketStream("ws://localhost:3000/acp");
const connection = app.connect(stream);
const goose = new GooseExtClient(connection.agent);
await connection.agent.request(methods.agent.initialize, {
protocolVersion: PROTOCOL_VERSION,
clientInfo: { name: "my-client", version: "1.0.0" },
clientCapabilities: {},
});
const providers = await goose.providersList_unstable({ providerIds: [] });
See the main documentation for more details.