mirror of
https://github.com/aaif-goose/goose.git
synced 2026-07-03 14:10:03 +02:00
05033b00e8
New sessionUpdate variant on _goose/unstable/session/update carrying
{messageId?, usage} keyed by the id already used for chunk matching.
Sent live from the prompt stream loop and on session replay after each
message's content chunks, both gated on the client's goose custom
notification capability. Regenerates acp-schema.json and the SDK types.
@aaif/goose-sdk
TypeScript client library for the Goose Agent Client Protocol (ACP).
This package provides:
- TypeScript types and Zod validators for Goose ACP extension methods
- A client for communicating with the Goose ACP server
Installation
npm install @aaif/goose-sdk
The native goose binaries are distributed as optional dependencies
and will be automatically installed for your platform.
Development
Prerequisites
- Node.js 18+
- Rust toolchain
- (Optional) Cross-compilation toolchains for building all platforms
Building
# 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
Local Development with npm link
To use this package locally in another project (e.g., @aaif/goose):
# In ui/sdk
npm run build
npm link
# In ui/text (or another project)
npm link @aaif/goose-sdk
Schema Generation
The TypeScript types are generated from Rust schemas defined in crates/goose.
The build process:
- Builds the
generate-acp-schemaRust binary - Runs it to generate
acp-schema.jsonandacp-meta.json - Uses
@hey-api/openapi-tsto generate TypeScript types and Zod validators - Generates a typed client in
src/generated/client.gen.ts
To regenerate schemas after changing Rust types:
npm run build:schema
Native Binary Packages
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.
Building Native Binaries
# 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
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:
- Build and publish
@aaif/goose-sdk - Publish all native binary packages
- Publish
@aaif/goose(which depends on the above)
Usage
import { GooseClient } from "@aaif/goose-sdk";
const client = new GooseClient({
// ... configuration
});
// Use the client
const result = await client.someMethod({ ... });
See the main documentation for more details.