Skip to content

docs(cli): package and document Zoo CLI - #1162

Open
taltas wants to merge 1 commit into
fm/zoo-cli-interactivefrom
fm/zoo-cli-release-docs
Open

docs(cli): package and document Zoo CLI#1162
taltas wants to merge 1 commit into
fm/zoo-cli-interactivefrom
fm/zoo-cli-release-docs

Conversation

@taltas

@taltas taltas commented Aug 5, 2026

Copy link
Copy Markdown
Contributor

Stack

Position 6 of 6 in the Zoo CLI stack.

Scope

  • Adds relocatable lockstep client, bundled private host, production extension, runtime dependencies, checksums, and supported macOS ARM64/Linux x64/Linux ARM64 release artifacts.
  • Adds release gates for protocol, host, packaged subprocess, build, help, and version behavior.
  • Documents installation, interactive and automation workflows, approvals/threat model, credentials/vaults, project compatibility, sessions/resume, output contracts, signals/timeouts, ephemeral behavior, supported platforms, non-goals, troubleshooting, and roo coexistence.
  • Adds security, privacy/telemetry, artifact, rollback, and support review evidence.
  • Links the CLI from the main README and tests documented command discoverability against live help.

Acceptance Evidence

  • pnpm --dir packages/zoo-host build, test, and typecheck
  • pnpm --dir apps/zoo test (11 tests) and typecheck
  • Repository pre-commit lint and pre-push typecheck
  • Documentation formatted and live-help consistency tested

Risk

The initial artifact matrix is intentionally narrow and release lockstep is mandatory. Modes/models metadata commands remain withheld because canonical queries currently activate mutable extension services. Signing and publication credentials remain maintainer-controlled.

flowchart LR
    C[apps/zoo client] --> A[Relocatable artifact]
    H[Bundled zoo-host] --> A
    E[Production extension] --> A
    D[Runtime dependencies] --> A
    A --> M{Supported matrix}
    M --> MA[macOS ARM64]
    M --> LX[Linux x64]
    M --> LA[Linux ARM64]
    MA --> S[Smoke, checksum, upload]
    LX --> S
    LA --> S
Loading

@coderabbitai

coderabbitai Bot commented Aug 5, 2026

Copy link
Copy Markdown
Contributor

Important

Review skipped

Auto reviews are disabled on base/target branches other than the default branch.

Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro Plus

Run ID: f9bee49b-dec5-4a70-9b36-97a63ab5ab68

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@taltas
taltas force-pushed the fm/zoo-cli-release-docs branch from 25ffa77 to dc65252 Compare August 5, 2026 18:01
@taltas
taltas force-pushed the fm/zoo-cli-interactive branch 2 times, most recently from 82307ab to a350044 Compare August 5, 2026 18:02
@taltas
taltas force-pushed the fm/zoo-cli-release-docs branch 2 times, most recently from 47b1a54 to d551402 Compare August 5, 2026 18:09
@taltas
taltas force-pushed the fm/zoo-cli-interactive branch from a350044 to 46179b8 Compare August 5, 2026 18:09
@taltas
taltas force-pushed the fm/zoo-cli-release-docs branch from d551402 to 4ba34b9 Compare August 5, 2026 18:20
@taltas
taltas force-pushed the fm/zoo-cli-interactive branch 2 times, most recently from db0ad71 to f5dee31 Compare August 5, 2026 18:49
@taltas
taltas force-pushed the fm/zoo-cli-release-docs branch from 4ba34b9 to ee0b102 Compare August 5, 2026 18:49
@taltas
taltas force-pushed the fm/zoo-cli-interactive branch from f5dee31 to 77c038d Compare August 5, 2026 18:52
@taltas
taltas force-pushed the fm/zoo-cli-release-docs branch 2 times, most recently from c6587b0 to 219e3dc Compare August 5, 2026 19:06
@taltas
taltas force-pushed the fm/zoo-cli-interactive branch from 77c038d to 48e5924 Compare August 5, 2026 19:06
@codecov

codecov Bot commented Aug 5, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.

📢 Thoughts on this report? Let us know!

@taltas
taltas force-pushed the fm/zoo-cli-interactive branch from 48e5924 to ea45605 Compare August 5, 2026 19:30
@taltas
taltas force-pushed the fm/zoo-cli-release-docs branch 2 times, most recently from 1576486 to d3a38a2 Compare August 5, 2026 19:41
@taltas
taltas force-pushed the fm/zoo-cli-interactive branch 2 times, most recently from 9c3ac7f to d6d57d0 Compare August 5, 2026 19:51
@taltas
taltas force-pushed the fm/zoo-cli-release-docs branch 2 times, most recently from 2ce4a83 to a485ef1 Compare August 5, 2026 20:07
@taltas
taltas force-pushed the fm/zoo-cli-interactive branch from d6d57d0 to 571b4a2 Compare August 5, 2026 20:07
@github-actions github-actions Bot added the awaiting-review PR changes are ready and waiting for maintainer re-review label Aug 5, 2026
@taltas
taltas force-pushed the fm/zoo-cli-release-docs branch from a485ef1 to 6c79822 Compare August 5, 2026 21:33
@taltas
taltas force-pushed the fm/zoo-cli-interactive branch from 571b4a2 to 5b85926 Compare August 5, 2026 21:33
@github-actions github-actions Bot removed the awaiting-review PR changes are ready and waiting for maintainer re-review label Aug 5, 2026
@taltas
taltas force-pushed the fm/zoo-cli-interactive branch from 5b85926 to e4fcdea Compare August 5, 2026 21:37
@taltas
taltas force-pushed the fm/zoo-cli-release-docs branch from 6c79822 to 2789e06 Compare August 5, 2026 21:37
@github-actions github-actions Bot added the awaiting-review PR changes are ready and waiting for maintainer re-review label Aug 5, 2026

@edelauna edelauna left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Lets also update codcov step to include CLI as well.

cp -R packages/zoo-host/dist/. "$root/lib/host/"
cp -R src/dist/. "$root/lib/extension/"
printf '{"type":"commonjs"}\n' > "$root/lib/extension/package.json"
node -e 'const p=require("./apps/zoo/package.json"); console.log(JSON.stringify({name:p.name,version:p.version,private:true,type:"module",dependencies:{ink:p.dependencies.ink,react:p.dependencies.react}},null,2))' > "$root/package.json"

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

tsup externalizes every node_modules package except those listed in noExternal — which here is only @roo-code/zoo-protocol (apps/zoo/tsup.config.ts:11). But apps/zoo/src/index.ts does import { Command, Option } from "commander" at the top of the entry module. Since this dependency object installs only ink and react, commander would not be resolvable inside the artifact — even the --help / --version smoke steps below would fail. Should commander be added here? It is not a transitive dependency of ink/react, so a fresh install cannot inherit it.

Suggested change
node -e 'const p=require("./apps/zoo/package.json"); console.log(JSON.stringify({name:p.name,version:p.version,private:true,type:"module",dependencies:{ink:p.dependencies.ink,react:p.dependencies.react}},null,2))' > "$root/package.json"
node -e "const p=require('./apps/zoo/package.json'); console.log(JSON.stringify({name:p.name,version:p.version,private:true,type:'module',dependencies:{ink:p.dependencies.ink,react:p.dependencies.react,commander:p.dependencies.commander}},null,2))" > "$root/package.json"

expect(help).toContain(command)
expect(docs).toContain(`zoo ${command}`)
}
expect(docs).toContain("stream-json")

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

stream-json and --approval are registered on the run/resume subcommands (via the automation()/shared() helpers), not on the top-level --help this test invokes. So these two assertions only ever check the markdown — a regression that silently dropped either flag from the CLI would still pass. Worth also asserting against zoo run --help?

"$root/bin/zoo" --help
"$root/bin/zoo" --version
tar -czf "zoo-cli-${PLATFORM}.tar.gz" "$root"
shasum -a 256 "zoo-cli-${PLATFORM}.tar.gz" > "zoo-cli-${PLATFORM}.tar.gz.sha256"

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The existing cli-release.yml guards this for Linux runners with a sha256sumshasum fallback. Should this match that pattern so the checksum doesn't depend on Perl's shasum being present on the Ubuntu runners?

@github-actions github-actions Bot added awaiting-author PR is waiting for the author to address requested changes and removed awaiting-review PR changes are ready and waiting for maintainer re-review labels Aug 15, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

awaiting-author PR is waiting for the author to address requested changes

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants