diff --git a/ui/pnpm-lock.yaml b/ui/pnpm-lock.yaml index 6a5f09c20dd6..144d984ba365 100644 --- a/ui/pnpm-lock.yaml +++ b/ui/pnpm-lock.yaml @@ -404,8 +404,8 @@ importers: text: dependencies: '@aaif/goose-sdk': - specifier: workspace:* - version: link:../sdk + specifier: 0.20.2 + version: 0.20.2(@agentclientprotocol/sdk@0.19.0(zod@4.3.6))(react-dom@19.2.4(react@19.2.4))(react@19.2.4) '@agentclientprotocol/sdk': specifier: ^0.19.0 version: 0.19.0(zod@4.3.6) @@ -452,6 +452,41 @@ importers: packages: + '@aaif/goose-binary-darwin-arm64@0.20.2': + resolution: {integrity: sha512-0wv6UcYxg/dZXRuIUBTL+64Hz0D50PfUA2mJiUEBhWkBmiBCgS/Iymore0gYuayxVV7MzQhKrHqdDPBoo0lqIg==} + cpu: [arm64] + os: [darwin] + hasBin: true + + '@aaif/goose-binary-darwin-x64@0.20.2': + resolution: {integrity: sha512-dZG6H1QF/lv/kVc1YmHVKRGJCZtoe9o0N2q4vgvDK0Lz+ZJp/ehKcIxUSqE/zebXDqLb4yWByDGelq5Ud2rnCw==} + cpu: [x64] + os: [darwin] + hasBin: true + + '@aaif/goose-binary-linux-arm64@0.20.2': + resolution: {integrity: sha512-DLbm8r21v4c39dGbLepjXDmXNLsdWw0PFFpRbQtBd2m5Q+xIBgYOx1jNm3EygDQT9yGV9R3WS6SW3LvMJLA3xw==} + cpu: [arm64] + os: [linux] + hasBin: true + + '@aaif/goose-binary-linux-x64@0.20.2': + resolution: {integrity: sha512-+TgB2+MKj18kbw5PBnDMAWvuy8ZijNxXQL4qRBeMebcx07W3dIf6zoy9xD5mSyce61ugG9vsLt9a+3Pm8qZaRw==} + cpu: [x64] + os: [linux] + hasBin: true + + '@aaif/goose-binary-win32-x64@0.20.2': + resolution: {integrity: sha512-P0GrtagS0U/98XW4VuzQ77Fy02bw4wFhzyRWWbR9LDVwY+lLG+AkE5m0Ml/KGKgDWS6gd8BtkAqRxdFw3PM9RQ==} + cpu: [x64] + os: [win32] + hasBin: true + + '@aaif/goose-sdk@0.20.2': + resolution: {integrity: sha512-HhsspN1OycRqgKgnUBWC/5xOpJ8zuKWmABax0Br0ZfND94AKKZbsBlya8e+pSM+CvztWLXHRz2KxPQuXYoGyBQ==} + peerDependencies: + '@agentclientprotocol/sdk': ^0.19.0 + '@acemir/cssom@0.9.31': resolution: {integrity: sha512-ZnR3GSaH+/vJ0YlHau21FjfLYjMpYVIzTD8M8vIEQvIGxeOXyXdzCI140rrCY862p/C/BbzWsjc1dgnM9mkoTA==} @@ -7275,6 +7310,39 @@ packages: snapshots: + '@aaif/goose-binary-darwin-arm64@0.20.2': + optional: true + + '@aaif/goose-binary-darwin-x64@0.20.2': + optional: true + + '@aaif/goose-binary-linux-arm64@0.20.2': + optional: true + + '@aaif/goose-binary-linux-x64@0.20.2': + optional: true + + '@aaif/goose-binary-win32-x64@0.20.2': + optional: true + + '@aaif/goose-sdk@0.20.2(@agentclientprotocol/sdk@0.19.0(zod@4.3.6))(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': + dependencies: + '@agentclientprotocol/sdk': 0.19.0(zod@4.3.6) + '@modelcontextprotocol/ext-apps': 0.3.1(@modelcontextprotocol/sdk@1.27.1(zod@3.25.76))(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(zod@3.25.76) + '@modelcontextprotocol/sdk': 1.27.1(zod@3.25.76) + zod: 3.25.76 + optionalDependencies: + '@aaif/goose-binary-darwin-arm64': 0.20.2 + '@aaif/goose-binary-darwin-x64': 0.20.2 + '@aaif/goose-binary-linux-arm64': 0.20.2 + '@aaif/goose-binary-linux-x64': 0.20.2 + '@aaif/goose-binary-win32-x64': 0.20.2 + transitivePeerDependencies: + - '@cfworker/json-schema' + - react + - react-dom + - supports-color + '@acemir/cssom@0.9.31': {} '@adobe/css-tools@4.4.4': {} diff --git a/ui/text/README.md b/ui/text/README.md index 191dbe0bf7cc..f08e8b644bc9 100644 --- a/ui/text/README.md +++ b/ui/text/README.md @@ -7,33 +7,35 @@ https://github.com/aaif-goose/goose/discussions/7309 ## Running -The TUI automatically launches the goose ACP server using the `goose acp` command. +The TUI launches the goose ACP server by spawning `goose acp`. Which binary it spawns is resolved by `@aaif/goose-sdk`: -### Development (from source) - -When running from source, `npm start` automatically builds the Rust binary from the workspace root if needed: +1. the `GOOSE_BINARY` environment variable, if set, otherwise +2. the platform's prebuilt `@aaif/goose-binary-*` package (an optional dependency of the pinned `@aaif/goose-sdk`). ```bash cd ui/text -npm i -npm run start +pnpm install # pulls the pinned @aaif/goose-sdk and its matching @aaif/goose-binary-* package +pnpm start # tsx src/tui.tsx — runs against the released binary, no Rust build ``` -The `dev:binary` script checks if the Rust binary needs rebuilding by comparing timestamps of: -- `target/release/goose` binary -- `Cargo.toml` and `Cargo.lock` -- `crates/goose-cli/Cargo.toml` +The TUI pins a specific `@aaif/goose-sdk` version, so `pnpm start` always runs against a goose binary that matches the SDK. + +### Building goose from local source + +To test local Rust changes, run the dev launcher directly. It builds a debug binary (`cargo build -p goose-cli` → `target/debug/goose`) from the workspace root and points the TUI at it via `GOOSE_BINARY`: -If any source files are newer, it runs `cargo build --release -p goose-cli` automatically. +```bash +node scripts/dev-start.mjs +``` -### Production (with prebuilt binaries) +If your changes touch the ACP schema, also point the TUI at the in-repo SDK so the two stay matched: set `@aaif/goose-sdk` to `workspace:*` in `package.json` and re-run `pnpm install`. Otherwise the locally built binary may not match the pinned published SDK's schema. Revert that change before committing — the TUI is meant to stay frozen on its pinned SDK version. -In production, the TUI uses prebuilt binaries from the `@aaif/goose-binary-*` packages installed via `postinstall`. +To run any other prebuilt binary, set `GOOSE_BINARY=/path/to/goose` and use `pnpm start`. ### Custom server URL -To use a custom server URL instead of the built-in binary: +To connect to an already-running server instead of spawning a binary: ```bash -npm run start -- --server http://localhost:8080 +pnpm start -- --server http://localhost:8080 ``` diff --git a/ui/text/package.json b/ui/text/package.json index 533953abb2de..560a3d2d4d27 100644 --- a/ui/text/package.json +++ b/ui/text/package.json @@ -23,11 +23,11 @@ ], "scripts": { "build": "tsc", - "start": "node scripts/dev-start.mjs", + "start": "tsx src/tui.tsx", "lint": "tsc --noEmit" }, "dependencies": { - "@aaif/goose-sdk": "workspace:*", + "@aaif/goose-sdk": "0.20.2", "@agentclientprotocol/sdk": "^0.19.0", "@inkjs/ui": "^2.0.0", "ink": "^6.8.0",