Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
26 commits
Select commit Hold shift + click to select a range
55909ec
chore(deps): bump actions/setup-node from 6 to 7
dependabot[bot] Jul 28, 2026
f0f0f32
chore(deps): bump actions/setup-go from 6 to 7
dependabot[bot] Jul 28, 2026
10b63ce
docs(env): document Quickstart env file handling
sunshinexcode Aug 6, 2026
ecb9e2c
docs(env): add documentation for Quickstart env file creation and upd…
sunshinexcode Aug 6, 2026
0d6db1e
docs(README): enhance Quick Start instructions and clarify project se…
sunshinexcode Aug 7, 2026
f3f8ee8
docs(changelog, README): update Python quickstart install command and…
sunshinexcode Aug 7, 2026
d8c3d2a
docs(README): remove fallback explanation for project selection in in…
sunshinexcode Aug 7, 2026
75745f0
added plan for supporting init from recipe
digitallysavvy Aug 12, 2026
8cd22df
docs: document PowerShell 7 requirement for Windows installer
sunshinexcode Aug 12, 2026
8156fd3
docs(env): clarify project resolution and link changelog
digitallysavvy Aug 20, 2026
d4c2a25
docs: correct quickstart context and changelog links
digitallysavvy Aug 20, 2026
09fcba8
updated changelog and isntall scripts
digitallysavvy Aug 20, 2026
7eff6e5
Merge remote-tracking branch 'origin/main' into release/v0.2.9
digitallysavvy Aug 20, 2026
6c71963
Merge PRs #57 and #58 into release/v0.2.9
digitallysavvy Aug 20, 2026
f2047e0
Merge PR #59 into release/v0.2.9
digitallysavvy Aug 20, 2026
e799e39
Merge PR #59 into release/v0.2.9
digitallysavvy Aug 20, 2026
f7c4333
test: increase CLI coverage to 75 percent
digitallysavvy Aug 21, 2026
91cb8f7
feat: align quickstart project and env setup
digitallysavvy Aug 21, 2026
7de10a4
updated changelog
digitallysavvy Aug 21, 2026
8d95d5e
fix: remove redundant template-only assignment
digitallysavvy Aug 21, 2026
b285093
fix: unify credential env writing across workflows
digitallysavvy Aug 24, 2026
72e825a
test: make MCP boolean assertion lint-safe
digitallysavvy Aug 24, 2026
684e7c3
docs: align v0.2.9 env writing guidance
digitallysavvy Aug 24, 2026
d36d47c
updated changelog
digitallysavvy Aug 25, 2026
843bd9c
feat(cli): add official recipe-backed initialization
digitallysavvy Sep 4, 2026
cd3751e
Merge pull request #62 from AgoraIO/recipe
digitallysavvy Sep 4, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
20 changes: 19 additions & 1 deletion .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ jobs:
uses: actions/checkout@v7

- name: Set up Go
uses: actions/setup-go@v6
uses: actions/setup-go@v7
with:
go-version-file: go.mod
cache: true
Expand Down Expand Up @@ -365,6 +365,24 @@ jobs:
Remove-Item Env:VERSION, Env:AGORA_INSTALL_SOURCE, Env:RELEASES_DOWNLOAD_BASE_URL, Env:RELEASES_PAGE_URL -ErrorAction SilentlyContinue
}

- name: Reject Windows PowerShell 5.1 installer runs
if: runner.os == 'Windows'
shell: pwsh
run: |
$previousNativePreference = $PSNativeCommandUseErrorActionPreference
$PSNativeCommandUseErrorActionPreference = $false
$output = & powershell.exe -NoProfile -ExecutionPolicy Bypass -File ./install.ps1 2>&1 | Out-String
$exitCode = $LASTEXITCODE
$PSNativeCommandUseErrorActionPreference = $previousNativePreference
$global:LASTEXITCODE = 0

if ($exitCode -eq 0) {
throw 'Expected install.ps1 to reject Windows PowerShell 5.1.'
}
if ($output -notmatch 'requires PowerShell 7 or newer') {
throw "Expected an actionable PowerShell 7 requirement, got: $output"
}

- name: Smoke test PowerShell installer S3 fallback
if: runner.os == 'Windows'
shell: pwsh
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/govulncheck.yml
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ jobs:
uses: actions/checkout@v7

- name: Set up Go
uses: actions/setup-go@v6
uses: actions/setup-go@v7
with:
go-version-file: go.mod
cache: true
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/pages.yml
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ jobs:
uses: actions/checkout@v7

- name: Set up Go
uses: actions/setup-go@v6
uses: actions/setup-go@v7
with:
go-version-file: go.mod
cache: true
Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ jobs:
fetch-depth: 0 # GoReleaser needs full history for changelog

- name: Set up Go
uses: actions/setup-go@v6
uses: actions/setup-go@v7
with:
go-version-file: go.mod
cache: true
Expand Down Expand Up @@ -112,7 +112,7 @@ jobs:
uses: actions/checkout@v7

- name: Set up Node.js
uses: actions/setup-node@v6
uses: actions/setup-node@v7
with:
node-version: "24"
registry-url: "https://registry.npmjs.org"
Expand Down
7 changes: 5 additions & 2 deletions AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,8 @@ internal/cli/
auth.go login / logout / whoami / auth status
projects.go project create / use / show / env / env write / doctor
quickstart.go quickstart create / env write / list
init.go init — one-step: project + quickstart + env
recipes.go official recipe API client, discovery, and recipe scaffold setup
init.go init — one-step: project + quickstart/recipe + env
doctor.go project doctor — readiness checks, workspace mode
install_doctor.go Top-level agora doctor — install self-test (PATH, network, auth, MCP host)
env_help.go agora env-help — authoritative env-var catalog
Expand Down Expand Up @@ -72,6 +73,7 @@ The surface is deliberately layered. Use the highest-level command that covers t
```
agora
├── init <name> Recommended path: reuses existing project (or creates if none); add --new-project to force creation
├── recipes Official recipe discovery (list / show)
├── version Build version, commit, and date
├── introspect Machine-readable command metadata for agents
├── doctor Install self-test (PATH, version, network, auth, MCP host); use project doctor for project readiness
Expand Down Expand Up @@ -105,7 +107,8 @@ agora
**Design rules — do not break these:**
- `project` = remote Agora control-plane resource; it never scaffolds local files
- `quickstart` = local repo clone; requires `git` on the PATH; upstream `.git` is removed after clone so demos start without template history
- `init` = the only command that composes both
- `recipes` = read-only discovery from the official recipes API; it never clones or mutates projects
- `init` = the only command that composes a project with a quickstart or recipe scaffold
- The `add` namespace is reserved; keep it hidden and return a command-not-found error if invoked

## Project Resolution Precedence
Expand Down
25 changes: 24 additions & 1 deletion CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,9 +15,31 @@ Earlier entries pre-date this convention and only carry their version's compare

## [Unreleased]

## [0.2.9] - 2026-08-24

Quickstart project and environment consistency, Android onboarding, Windows installer compatibility, and release workflow maintenance.

### Added

- Add the Android conversational AI client/server quickstart to `agora init` and `agora quickstart`, writing credentials only to the included Python server and returning setup steps for the server, HTTPS tunnel, and Android client ([#55](https://github.com/AgoraIO/cli/pull/55)).
- Add official recipe discovery with `agora recipes list/show` and recipe-backed initialization with `agora init --recipe <slug>`. Recipe metadata is resolved from the versioned `recipes.agora.io` API before project creation, and the API-provided env contract drives credential writing without framework guessing.

### Changed

- Expand installation guidance with the canonical Agora CDN, GitHub-hosted fallbacks, the S3 mirror option, and a PowerShell 7 guard with an actionable process-scoped execution-policy workaround ([03f46af](https://github.com/AgoraIO/cli/commit/03f46af), [#61](https://github.com/AgoraIO/cli/pull/61)).
- Update GitHub Actions dependencies to `actions/setup-node@v7` and `actions/setup-go@v7` ([#57](https://github.com/AgoraIO/cli/pull/57), [#58](https://github.com/AgoraIO/cli/pull/58)).
- Align the Python quickstart `nextSteps` install command with the upstream template (`bun run setup` instead of `bun install`) ([#60](https://github.com/AgoraIO/cli/pull/60)).
- Make clone-only quickstart creation explicit with `--template-only`; interactive runs prompt for an existing project when none resolves, while JSON, CI, and non-TTY runs fail before cloning with `QUICKSTART_PROJECT_REQUIRED` ([91cb8f7](https://github.com/AgoraIO/cli/commit/91cb8f7)).

### Fixed

- Bump the pinned Go toolchain to 1.26.6 to address reachable standard-library vulnerabilities reported by `govulncheck` in Go 1.26.5 ([09fcba8](https://github.com/AgoraIO/cli/commit/09fcba8)).
- Ensure `agora init`, `quickstart env write`, and `project env write` share credential-file semantics: Python and Go use `server/.env` with `AGORA_APP_ID` and `AGORA_APP_CERTIFICATE`, template example values are preserved, and unsupported legacy credential names are normalized consistently; align with the upstream Python and Go env-file migrations ([91cb8f7](https://github.com/AgoraIO/cli/commit/91cb8f7), [b285093](https://github.com/AgoraIO/cli/commit/b285093), [Python #26](https://github.com/AgoraIO-Conversational-AI/agent-quickstart-python/pull/26), [Go #8](https://github.com/AgoraIO-Conversational-AI/agent-quickstart-go/pull/8)).

### Documentation

- Add `docs/env-local.md` explaining that Quickstart env files are created by the CLI from the template example plus the selected project's App ID and App Certificate (not downloaded from Console); link it from `README.md`, `docs/llms.txt`, and `docs/sitemap.xml` ([#59](https://github.com/AgoraIO/cli/pull/59)).
- Clarify the README Quick Start around `agora init` project selection (including `Default Project` reuse vs interactive picker), `--project` / `--new-project`, `.agora/project.json` vs `project use`, and that env files are written by the CLI rather than downloaded from Console ([#60](https://github.com/AgoraIO/cli/pull/60)).

## [0.2.8] - 2026-07-28

Expand Down Expand Up @@ -363,7 +385,8 @@ Set `AGORA_ALLOW_UPGRADE_IN_CI=1` only when a CI job intentionally needs to muta
- Support machine-readable JSON output for automation and agent workflows.
- Ship automated release packaging through GoReleaser, including cross-platform archives, Linux packages, Homebrew, Scoop, npm wrapper packages, Docker images, and install scripts.

[Unreleased]: https://github.com/AgoraIO/cli/compare/v0.2.8...HEAD
[Unreleased]: https://github.com/AgoraIO/cli/compare/v0.2.9...HEAD
[0.2.9]: https://github.com/AgoraIO/cli/compare/v0.2.8...v0.2.9
[0.2.8]: https://github.com/AgoraIO/cli/compare/v0.2.7...v0.2.8
[0.2.7]: https://github.com/AgoraIO/cli/compare/v0.2.6...v0.2.7
[0.2.6]: https://github.com/AgoraIO/cli/compare/v0.2.5...v0.2.6
Expand Down
2 changes: 1 addition & 1 deletion CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ For end-user behavior and machine-readable contracts, see:

Requirements:

- **Go** 1.26.2+ (see `go.mod`). Release builds intentionally track the current stable Go toolchain; this distributed CLI does not target older Go compiler support.
- **Go** 1.26.6+ (see `go.mod`). Release builds intentionally track the current stable Go toolchain; this distributed CLI does not target older Go compiler support.
- **Git**.
- (Optional) `golangci-lint` v1.64.8 — install matches CI; instructions in
the next section.
Expand Down
Loading