general-augment-cli 0.1.0__tar.gz → 0.2.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {general_augment_cli-0.1.0 → general_augment_cli-0.2.0}/.gitignore +8 -0
- general_augment_cli-0.2.0/PKG-INFO +287 -0
- general_augment_cli-0.2.0/README.md +263 -0
- {general_augment_cli-0.1.0 → general_augment_cli-0.2.0}/pyproject.toml +12 -3
- general_augment_cli-0.2.0/src/platform_cli/__init__.py +32 -0
- {general_augment_cli-0.1.0 → general_augment_cli-0.2.0}/src/platform_cli/client.py +138 -9
- general_augment_cli-0.2.0/src/platform_cli/commands/auth.py +409 -0
- general_augment_cli-0.2.0/src/platform_cli/commands/connectors.py +250 -0
- general_augment_cli-0.2.0/src/platform_cli/commands/dashboard.py +36 -0
- general_augment_cli-0.2.0/src/platform_cli/commands/doctor.py +780 -0
- general_augment_cli-0.2.0/src/platform_cli/commands/init.py +262 -0
- general_augment_cli-0.2.0/src/platform_cli/commands/integrate.py +142 -0
- {general_augment_cli-0.1.0 → general_augment_cli-0.2.0}/src/platform_cli/commands/keys.py +6 -1
- general_augment_cli-0.2.0/src/platform_cli/commands/migrate.py +232 -0
- general_augment_cli-0.2.0/src/platform_cli/commands/providers.py +1164 -0
- general_augment_cli-0.2.0/src/platform_cli/commands/setup.py +1209 -0
- general_augment_cli-0.2.0/src/platform_cli/commands/skills.py +321 -0
- general_augment_cli-0.2.0/src/platform_cli/commands/smoke.py +734 -0
- general_augment_cli-0.2.0/src/platform_cli/commands/status.py +120 -0
- general_augment_cli-0.2.0/src/platform_cli/commands/tools.py +440 -0
- {general_augment_cli-0.1.0 → general_augment_cli-0.2.0}/src/platform_cli/commands/validate.py +9 -2
- {general_augment_cli-0.1.0 → general_augment_cli-0.2.0}/src/platform_cli/commands/verify.py +92 -1
- general_augment_cli-0.1.0/src/platform_cli/commands/deploy.py → general_augment_cli-0.2.0/src/platform_cli/deploy_helpers.py +17 -32
- general_augment_cli-0.2.0/src/platform_cli/errors.py +234 -0
- {general_augment_cli-0.1.0 → general_augment_cli-0.2.0}/src/platform_cli/local_mock.py +75 -0
- {general_augment_cli-0.1.0 → general_augment_cli-0.2.0}/src/platform_cli/main.py +10 -30
- general_augment_cli-0.1.0/src/platform_cli/commands/mcp.py → general_augment_cli-0.2.0/src/platform_cli/mcp_helpers.py +2 -94
- general_augment_cli-0.2.0/src/platform_cli/openai_responses_migration.py +325 -0
- {general_augment_cli-0.1.0 → general_augment_cli-0.2.0}/src/platform_cli/openapi.py +163 -16
- general_augment_cli-0.2.0/src/platform_cli/py.typed +0 -0
- {general_augment_cli-0.1.0 → general_augment_cli-0.2.0}/src/platform_cli/readiness.py +43 -61
- general_augment_cli-0.2.0/src/platform_cli/readiness_contract.json +80 -0
- general_augment_cli-0.2.0/src/platform_cli/redaction.py +37 -0
- general_augment_cli-0.2.0/src/platform_cli/self_serve.py +1229 -0
- general_augment_cli-0.2.0/src/platform_cli/workspace_inspector.py +237 -0
- general_augment_cli-0.2.0/tests/test_commands.py +4924 -0
- general_augment_cli-0.2.0/tests/test_self_serve_onboarding.py +1341 -0
- general_augment_cli-0.1.0/PKG-INFO +0 -180
- general_augment_cli-0.1.0/README.md +0 -163
- general_augment_cli-0.1.0/src/platform_cli/__init__.py +0 -5
- general_augment_cli-0.1.0/src/platform_cli/commands/approvals.py +0 -150
- general_augment_cli-0.1.0/src/platform_cli/commands/auth.py +0 -96
- general_augment_cli-0.1.0/src/platform_cli/commands/billing.py +0 -143
- general_augment_cli-0.1.0/src/platform_cli/commands/channels.py +0 -212
- general_augment_cli-0.1.0/src/platform_cli/commands/dev.py +0 -38
- general_augment_cli-0.1.0/src/platform_cli/commands/doctor.py +0 -170
- general_augment_cli-0.1.0/src/platform_cli/commands/identity.py +0 -433
- general_augment_cli-0.1.0/src/platform_cli/commands/init.py +0 -55
- general_augment_cli-0.1.0/src/platform_cli/commands/integrate.py +0 -94
- general_augment_cli-0.1.0/src/platform_cli/commands/logs.py +0 -43
- general_augment_cli-0.1.0/src/platform_cli/commands/memory.py +0 -316
- general_augment_cli-0.1.0/src/platform_cli/commands/mock.py +0 -30
- general_augment_cli-0.1.0/src/platform_cli/commands/model_providers.py +0 -226
- general_augment_cli-0.1.0/src/platform_cli/commands/observability.py +0 -174
- general_augment_cli-0.1.0/src/platform_cli/commands/onboarding.py +0 -72
- general_augment_cli-0.1.0/src/platform_cli/commands/projects.py +0 -302
- general_augment_cli-0.1.0/src/platform_cli/commands/skills.py +0 -116
- general_augment_cli-0.1.0/src/platform_cli/commands/smoke.py +0 -280
- general_augment_cli-0.1.0/src/platform_cli/commands/status.py +0 -49
- general_augment_cli-0.1.0/src/platform_cli/commands/tools.py +0 -179
- general_augment_cli-0.1.0/src/platform_cli/commands/users.py +0 -150
- general_augment_cli-0.1.0/src/platform_cli/errors.py +0 -103
- general_augment_cli-0.1.0/tests/test_commands.py +0 -3477
- general_augment_cli-0.1.0/uv.lock +0 -420
- {general_augment_cli-0.1.0 → general_augment_cli-0.2.0}/AGENTS.md +0 -0
- {general_augment_cli-0.1.0 → general_augment_cli-0.2.0}/src/platform_cli/branding.py +0 -0
- {general_augment_cli-0.1.0 → general_augment_cli-0.2.0}/src/platform_cli/commands/__init__.py +0 -0
- {general_augment_cli-0.1.0 → general_augment_cli-0.2.0}/src/platform_cli/config.py +0 -0
- {general_augment_cli-0.1.0 → general_augment_cli-0.2.0}/src/platform_cli/output.py +0 -0
- {general_augment_cli-0.1.0 → general_augment_cli-0.2.0}/src/platform_cli/runtime.py +0 -0
- {general_augment_cli-0.1.0 → general_augment_cli-0.2.0}/tests/test_config.py +0 -0
|
@@ -37,8 +37,16 @@ build/
|
|
|
37
37
|
dist/
|
|
38
38
|
*.egg-info/
|
|
39
39
|
node_modules/
|
|
40
|
+
|
|
41
|
+
# Fern-generated SDK code IS committed (self-contained repo, like openai-python /
|
|
42
|
+
# anthropic-sdk-python). Regenerate with fern/regenerate.sh; CI verifies it's
|
|
43
|
+
# up-to-date against the OpenAPI spec. The exploratory sibling output dirs are not used.
|
|
44
|
+
packages/sdk-python-generated/
|
|
45
|
+
packages/sdk-typescript-generated/
|
|
46
|
+
|
|
40
47
|
.next/
|
|
41
48
|
dashboard/.vercel/
|
|
49
|
+
dashboard/lib/generated/
|
|
42
50
|
coverage/
|
|
43
51
|
playwright-report/
|
|
44
52
|
test-results/
|
|
@@ -0,0 +1,287 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: general-augment-cli
|
|
3
|
+
Version: 0.2.0
|
|
4
|
+
Summary: CLI for General Augment, the agent backend for your app.
|
|
5
|
+
Project-URL: Homepage, https://generalaugment.com
|
|
6
|
+
Project-URL: Documentation, https://docs.generalaugment.com
|
|
7
|
+
Project-URL: Source, https://github.com/LunarVentures/general-augment-platform
|
|
8
|
+
Project-URL: Issues, https://github.com/LunarVentures/general-augment-platform/issues
|
|
9
|
+
Author: General Augment
|
|
10
|
+
License-Expression: MIT
|
|
11
|
+
Keywords: agent-backend,ai-agents,general-augment,llm,memory,tools
|
|
12
|
+
Requires-Python: >=3.12
|
|
13
|
+
Requires-Dist: click>=8.1.7
|
|
14
|
+
Requires-Dist: httpx>=0.27.0
|
|
15
|
+
Requires-Dist: jsonschema>=4.22.0
|
|
16
|
+
Requires-Dist: pydantic>=2.7.0
|
|
17
|
+
Requires-Dist: pyyaml>=6.0.0
|
|
18
|
+
Requires-Dist: rich>=13.7.0
|
|
19
|
+
Requires-Dist: typer<0.26,>=0.12.0
|
|
20
|
+
Provides-Extra: dev
|
|
21
|
+
Requires-Dist: pytest-asyncio>=0.23.0; extra == 'dev'
|
|
22
|
+
Requires-Dist: pytest>=8.0.0; extra == 'dev'
|
|
23
|
+
Description-Content-Type: text/markdown
|
|
24
|
+
|
|
25
|
+
# General Augment CLI
|
|
26
|
+
|
|
27
|
+
General Augment is the agent backend for your app. This is the standalone developer
|
|
28
|
+
CLI for creating, validating, deploying, and verifying General Augment projects, and
|
|
29
|
+
for wiring up auth, providers, tools, and skills.
|
|
30
|
+
|
|
31
|
+
```bash
|
|
32
|
+
pip install general-augment-cli
|
|
33
|
+
genaug --version
|
|
34
|
+
genaug --help
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
For source-checkout development, use the repo-local command prefix:
|
|
38
|
+
|
|
39
|
+
```bash
|
|
40
|
+
uv run --project packages/cli genaug --version
|
|
41
|
+
uv run --project packages/cli genaug --help
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
The version reported by `genaug --version` is single-sourced from the installed package
|
|
45
|
+
metadata, so it always matches the published distribution.
|
|
46
|
+
|
|
47
|
+
## Command surface
|
|
48
|
+
|
|
49
|
+
The published CLI is intentionally minimal — the setup, integration, and verification
|
|
50
|
+
commands an app developer needs, and nothing else:
|
|
51
|
+
|
|
52
|
+
| Command group | Commands |
|
|
53
|
+
| --- | --- |
|
|
54
|
+
| `genaug auth` | `login`, `logout`, `whoami` |
|
|
55
|
+
| `genaug keys` | `list`, `create`, `update`, `revoke` |
|
|
56
|
+
| `genaug tools` | `list`, `toggle`, `catalog`, `discovery`, `explain-turn`, `add-mcp` |
|
|
57
|
+
| `genaug skills` | `design`, `list`, `view`, `apply`, `delete` |
|
|
58
|
+
| `genaug providers` | `setup`, `smoke`, `readiness` |
|
|
59
|
+
| `genaug connectors` | `setup` |
|
|
60
|
+
| `genaug migrate` | `openai-responses` |
|
|
61
|
+
| `genaug dashboard` | `open` |
|
|
62
|
+
| top-level | `integrate`, `init`, `setup`, `doctor`, `status`, `smoke`, `validate`, `verify` |
|
|
63
|
+
|
|
64
|
+
## Quick start
|
|
65
|
+
|
|
66
|
+
For an existing app, the friendliest first command is the guided wizard. It inspects
|
|
67
|
+
the current app, detects frameworks, env files, OpenAI Responses call sites, prompts,
|
|
68
|
+
tools, and webhooks, then writes a redacted `.genaug/setup-plan.json` without changing
|
|
69
|
+
code or storing raw secrets.
|
|
70
|
+
|
|
71
|
+
```bash
|
|
72
|
+
genaug auth login
|
|
73
|
+
genaug init --interactive
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
`genaug init --interactive` runs the guided setup wizard without scaffolding a starter
|
|
77
|
+
project. `genaug setup` is the explicit install/configure path with the same options.
|
|
78
|
+
|
|
79
|
+
```bash
|
|
80
|
+
genaug setup --capability code --capability browse --json
|
|
81
|
+
genaug setup --interactive
|
|
82
|
+
genaug setup --answers-template ./genaug-answers.template.json --json
|
|
83
|
+
genaug setup --guided --answers-file ./genaug-answers.json --json
|
|
84
|
+
genaug setup --guided --answers-file ./genaug-answers.json --project petstore-agent --configure-providers --json
|
|
85
|
+
genaug setup --bootstrap --project-name "Petstore Agent" --project-slug petstore-agent --print-env
|
|
86
|
+
genaug init --interactive --login --bootstrap --project-name "Petstore Agent" --project-slug petstore-agent --configure-providers --print-env
|
|
87
|
+
genaug setup --interactive --handoff-output .genaug/setup-handoff.md
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
Add `--bootstrap` after `genaug auth login` to create or select a project and mint a
|
|
91
|
+
project runtime key through installer auth; the setup artifact stores only the masked
|
|
92
|
+
key. Add `--login` to start browser installer auth inline before bootstrapping. Add
|
|
93
|
+
`--print-env` to show the runtime env block once for your backend secret manager. Use
|
|
94
|
+
`--answers-template ... --json` to generate the secret-free questionnaire before a human
|
|
95
|
+
or coding agent fills it, then pass the completed file with `--answers-file` for
|
|
96
|
+
non-interactive runs. `--guided --json` requires `--answers-file` so interactive prompts
|
|
97
|
+
do not contaminate machine-readable output. Human guided setup writes
|
|
98
|
+
`.genaug/setup-handoff.md` by default; use `--handoff-output` for a different path or
|
|
99
|
+
`--no-handoff` to skip it.
|
|
100
|
+
|
|
101
|
+
## Auth
|
|
102
|
+
|
|
103
|
+
```bash
|
|
104
|
+
genaug auth login
|
|
105
|
+
genaug auth whoami --json
|
|
106
|
+
genaug auth logout
|
|
107
|
+
```
|
|
108
|
+
|
|
109
|
+
`genaug auth login` starts browser installer auth by default: it opens the dashboard
|
|
110
|
+
`/cli/authorize` approval page, creates an installer session for setup tasks, and keeps
|
|
111
|
+
that session separate from runtime `/v1/responses` keys. After approval the dashboard
|
|
112
|
+
redirects to the CLI's loopback callback and the CLI exchanges the short-lived code
|
|
113
|
+
automatically; if the callback cannot start or times out, it falls back to a paste-code
|
|
114
|
+
prompt. `genaug auth login --api-key ...` remains available for operator/admin
|
|
115
|
+
workflows and verifies the key against `/api/v1/admin/me` before writing local config.
|
|
116
|
+
The CLI stores auth at `~/.genaug/config.yaml` with owner-only file permissions; set
|
|
117
|
+
`GENAUG_CLI_CONFIG` to use a custom path.
|
|
118
|
+
|
|
119
|
+
Environment overrides:
|
|
120
|
+
|
|
121
|
+
```bash
|
|
122
|
+
export GENAUG_ADMIN_API_KEY=gaadmlive...
|
|
123
|
+
export GENAUG_ADMIN_BASE_URL=https://api.generalaugment.com
|
|
124
|
+
```
|
|
125
|
+
|
|
126
|
+
`GENAUG_API_KEY` and `GENAUG_API_BASE_URL` are also accepted, which keeps local mock
|
|
127
|
+
and SDK test scripts easy to share.
|
|
128
|
+
|
|
129
|
+
## Migrating an existing app
|
|
130
|
+
|
|
131
|
+
```bash
|
|
132
|
+
genaug migrate openai-responses --dry-run --json
|
|
133
|
+
genaug migrate openai-responses --apply --yes
|
|
134
|
+
genaug migrate openai-responses --apply --yes --branch genaug/openai-responses --push --create-pr
|
|
135
|
+
```
|
|
136
|
+
|
|
137
|
+
`genaug migrate openai-responses` inspects the app and generates a patch for
|
|
138
|
+
OpenAI-compatible clients. It only edits files with `--apply` plus explicit confirmation
|
|
139
|
+
or `--yes`. For coding-agent migration work, add `--branch`, `--push`, and `--create-pr`
|
|
140
|
+
to create the branch, commit the safe edits, push, and open a GitHub pull request through
|
|
141
|
+
the `gh` CLI.
|
|
142
|
+
|
|
143
|
+
## Building a project from an OpenAPI spec
|
|
144
|
+
|
|
145
|
+
```bash
|
|
146
|
+
genaug integrate https://petstore3.swagger.io/api/v3/openapi.json
|
|
147
|
+
genaug integrate https://petstore3.swagger.io/api/v3/openapi.json --auto-deploy
|
|
148
|
+
genaug validate ./petstore-agent/genaug-agent.yaml
|
|
149
|
+
```
|
|
150
|
+
|
|
151
|
+
Use `genaug init <name>` for a starter agent before an OpenAPI spec exists, or
|
|
152
|
+
`genaug integrate <openapi-spec> --auto-deploy` to create/update the project and register
|
|
153
|
+
the generated OpenAPI tools in one pass. Deployment is performed by `integrate
|
|
154
|
+
--auto-deploy` (there is no separate `genaug deploy` command). Without `--auto-deploy`,
|
|
155
|
+
review the scaffold, then `genaug validate ./<agent>/genaug-agent.yaml`. The generated
|
|
156
|
+
manifest is `genaug-agent.yaml`; both scaffolds include `CODING_AGENT_PROMPT.md`, the
|
|
157
|
+
paste-ready backend handoff for a coding agent.
|
|
158
|
+
|
|
159
|
+
```bash
|
|
160
|
+
genaug init
|
|
161
|
+
genaug init dayplan-agent --tool web_search
|
|
162
|
+
genaug init --interactive
|
|
163
|
+
```
|
|
164
|
+
|
|
165
|
+
## API keys
|
|
166
|
+
|
|
167
|
+
```bash
|
|
168
|
+
genaug keys create --project petstore-agent --name "Production backend"
|
|
169
|
+
genaug keys list --project petstore-agent --json
|
|
170
|
+
genaug keys update <key-id> --project petstore-agent --name "Renamed"
|
|
171
|
+
genaug keys revoke <key-id> --project petstore-agent
|
|
172
|
+
```
|
|
173
|
+
|
|
174
|
+
## Providers and connectors
|
|
175
|
+
|
|
176
|
+
```bash
|
|
177
|
+
genaug providers setup --capability browse --project petstore-agent --api-key-env BROWSERBASE_API_KEY --health-check
|
|
178
|
+
genaug providers setup --capability video --json
|
|
179
|
+
genaug providers setup --provider codex-mcp --project petstore-agent --api-key-env OPENAI_API_KEY --health-check
|
|
180
|
+
genaug providers setup --provider fal --project petstore-agent --api-key-env FAL_API_KEY --health-check
|
|
181
|
+
genaug providers smoke --capability code --capability browse --capability video --json
|
|
182
|
+
genaug providers smoke --provider browserbase --project petstore-agent --api-key-env BROWSERBASE_API_KEY --json
|
|
183
|
+
genaug providers readiness --project petstore-agent --json
|
|
184
|
+
genaug connectors setup --name my-mcp --url https://example.com/mcp --health-check
|
|
185
|
+
```
|
|
186
|
+
|
|
187
|
+
`providers setup` reads the named env var once, stores the credential in General Augment
|
|
188
|
+
custody, runs a health check, and writes only redacted provider setup evidence — raw
|
|
189
|
+
secrets are never written to the setup artifact. `providers smoke` plans launch evidence
|
|
190
|
+
per capability; add `--evidence-output .genaug/provider-smoke-evidence.json` to persist
|
|
191
|
+
the redacted launch-smoke payload for launch reviews. `providers readiness` reports the
|
|
192
|
+
provider readiness rows for a project. `connectors setup` writes MCP connector config
|
|
193
|
+
through installer auth when `--name` plus `--url` or `--command` is supplied, and rejects
|
|
194
|
+
raw API keys in MCP URLs.
|
|
195
|
+
|
|
196
|
+
For iMessage, use the npm helper on the Mac:
|
|
197
|
+
|
|
198
|
+
```bash
|
|
199
|
+
npx @general-augment/local-imessage setup --project dayplan-agent --write-prompt --write-config
|
|
200
|
+
```
|
|
201
|
+
|
|
202
|
+
## Skills and tools
|
|
203
|
+
|
|
204
|
+
```bash
|
|
205
|
+
genaug skills design --job-type website-builder --project petstore-agent --apply
|
|
206
|
+
genaug skills list --project petstore-agent
|
|
207
|
+
genaug skills view <skill-name> --project petstore-agent
|
|
208
|
+
genaug skills apply ./SKILL.md --project petstore-agent
|
|
209
|
+
genaug skills delete <skill-name> --project petstore-agent
|
|
210
|
+
|
|
211
|
+
genaug tools catalog --project petstore-agent
|
|
212
|
+
genaug tools list --project petstore-agent --json
|
|
213
|
+
genaug tools toggle web_search --project petstore-agent --enable
|
|
214
|
+
genaug tools discovery --project petstore-agent
|
|
215
|
+
genaug tools explain-turn --project petstore-agent --requested-tool web_search --json
|
|
216
|
+
genaug tools add-mcp my-mcp --project petstore-agent --url https://example.com/mcp
|
|
217
|
+
```
|
|
218
|
+
|
|
219
|
+
Use exactly one transport per MCP server: `--url` for HTTP endpoints or `--command`
|
|
220
|
+
for stdio servers.
|
|
221
|
+
|
|
222
|
+
## Doctor, status, and smoke
|
|
223
|
+
|
|
224
|
+
```bash
|
|
225
|
+
genaug doctor
|
|
226
|
+
genaug doctor --project petstore-agent --user user_123 --json
|
|
227
|
+
genaug status --json
|
|
228
|
+
genaug smoke --idempotency-key smoke-replay-1 --metadata feature=spark
|
|
229
|
+
genaug smoke --project petstore-agent --structured --json
|
|
230
|
+
genaug smoke --project petstore-agent --memory-recall --import-evidence \
|
|
231
|
+
--evidence-output .genaug/smoke-evidence.json --json
|
|
232
|
+
```
|
|
233
|
+
|
|
234
|
+
`genaug doctor` checks the resolved config path, base URL, API key presence,
|
|
235
|
+
`/health/ready`, and `/api/v1/admin/me` without printing secret values. Add `--project`
|
|
236
|
+
to verify read-only agent-cloud readiness (runtime policy, tool catalog, approvals, run
|
|
237
|
+
timelines) and `--user` to include a tenant memory profile reachability check.
|
|
238
|
+
|
|
239
|
+
`genaug smoke` checks `/health/ready` and sends one project-keyed `/v1/responses`
|
|
240
|
+
request using bearer auth. Use `--idempotency-key`, `--request-id`, `--traceparent`, and
|
|
241
|
+
repeated `--metadata key=value` flags for replayable support/debug evidence. Use
|
|
242
|
+
`--project <slug>` when the configured key is a management key and the app-facing request
|
|
243
|
+
needs `X-Project-ID`. Use `--structured` for the default `json_schema` smoke response or
|
|
244
|
+
`--schema-file ./schema.json` for an app-specific contract. Use `--evidence-output` to
|
|
245
|
+
persist a redacted launch artifact (readiness result, response id, trace id, dashboard
|
|
246
|
+
observability URL, secret-safety metadata). Add `--memory-recall` to prove `/v1/responses`
|
|
247
|
+
recalls a seeded fact without prompt echo.
|
|
248
|
+
|
|
249
|
+
## Verify
|
|
250
|
+
|
|
251
|
+
```bash
|
|
252
|
+
genaug verify --project petstore-agent
|
|
253
|
+
```
|
|
254
|
+
|
|
255
|
+
`genaug verify` runs project acceptance checks: project keys, hosted agent test, tools,
|
|
256
|
+
logs, usage, usage limits, observability, runtime-policy model routing, memory lifecycle,
|
|
257
|
+
and tool-call audit, then prints dashboard URLs for the same tenant.
|
|
258
|
+
|
|
259
|
+
## Dashboard
|
|
260
|
+
|
|
261
|
+
```bash
|
|
262
|
+
genaug dashboard open --project petstore-agent
|
|
263
|
+
```
|
|
264
|
+
|
|
265
|
+
## Local mock for offline tests
|
|
266
|
+
|
|
267
|
+
The deterministic local HTTP mock ships with the package and is launched as a module
|
|
268
|
+
(it is not a `genaug` subcommand):
|
|
269
|
+
|
|
270
|
+
```bash
|
|
271
|
+
uv run --project packages/cli python -m platform_cli.local_mock \
|
|
272
|
+
--host 127.0.0.1 --port 8787 --quiet
|
|
273
|
+
```
|
|
274
|
+
|
|
275
|
+
It serves offline app contract tests against `/v1/responses`, memory routes, project
|
|
276
|
+
setup, OpenAPI tool registration, key management, logs, usage, observability, health
|
|
277
|
+
checks, idempotency replays, trace metadata, structured-output fixtures, and semantic
|
|
278
|
+
SSE fixtures. Point the SDKs at it with `GENAUG_API_BASE_URL=http://127.0.0.1:8787`.
|
|
279
|
+
|
|
280
|
+
## Console entrypoint
|
|
281
|
+
|
|
282
|
+
The console command is defined in `pyproject.toml`:
|
|
283
|
+
|
|
284
|
+
```toml
|
|
285
|
+
[project.scripts]
|
|
286
|
+
genaug = "platform_cli.main:app"
|
|
287
|
+
```
|
|
@@ -0,0 +1,263 @@
|
|
|
1
|
+
# General Augment CLI
|
|
2
|
+
|
|
3
|
+
General Augment is the agent backend for your app. This is the standalone developer
|
|
4
|
+
CLI for creating, validating, deploying, and verifying General Augment projects, and
|
|
5
|
+
for wiring up auth, providers, tools, and skills.
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
pip install general-augment-cli
|
|
9
|
+
genaug --version
|
|
10
|
+
genaug --help
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
For source-checkout development, use the repo-local command prefix:
|
|
14
|
+
|
|
15
|
+
```bash
|
|
16
|
+
uv run --project packages/cli genaug --version
|
|
17
|
+
uv run --project packages/cli genaug --help
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
The version reported by `genaug --version` is single-sourced from the installed package
|
|
21
|
+
metadata, so it always matches the published distribution.
|
|
22
|
+
|
|
23
|
+
## Command surface
|
|
24
|
+
|
|
25
|
+
The published CLI is intentionally minimal — the setup, integration, and verification
|
|
26
|
+
commands an app developer needs, and nothing else:
|
|
27
|
+
|
|
28
|
+
| Command group | Commands |
|
|
29
|
+
| --- | --- |
|
|
30
|
+
| `genaug auth` | `login`, `logout`, `whoami` |
|
|
31
|
+
| `genaug keys` | `list`, `create`, `update`, `revoke` |
|
|
32
|
+
| `genaug tools` | `list`, `toggle`, `catalog`, `discovery`, `explain-turn`, `add-mcp` |
|
|
33
|
+
| `genaug skills` | `design`, `list`, `view`, `apply`, `delete` |
|
|
34
|
+
| `genaug providers` | `setup`, `smoke`, `readiness` |
|
|
35
|
+
| `genaug connectors` | `setup` |
|
|
36
|
+
| `genaug migrate` | `openai-responses` |
|
|
37
|
+
| `genaug dashboard` | `open` |
|
|
38
|
+
| top-level | `integrate`, `init`, `setup`, `doctor`, `status`, `smoke`, `validate`, `verify` |
|
|
39
|
+
|
|
40
|
+
## Quick start
|
|
41
|
+
|
|
42
|
+
For an existing app, the friendliest first command is the guided wizard. It inspects
|
|
43
|
+
the current app, detects frameworks, env files, OpenAI Responses call sites, prompts,
|
|
44
|
+
tools, and webhooks, then writes a redacted `.genaug/setup-plan.json` without changing
|
|
45
|
+
code or storing raw secrets.
|
|
46
|
+
|
|
47
|
+
```bash
|
|
48
|
+
genaug auth login
|
|
49
|
+
genaug init --interactive
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
`genaug init --interactive` runs the guided setup wizard without scaffolding a starter
|
|
53
|
+
project. `genaug setup` is the explicit install/configure path with the same options.
|
|
54
|
+
|
|
55
|
+
```bash
|
|
56
|
+
genaug setup --capability code --capability browse --json
|
|
57
|
+
genaug setup --interactive
|
|
58
|
+
genaug setup --answers-template ./genaug-answers.template.json --json
|
|
59
|
+
genaug setup --guided --answers-file ./genaug-answers.json --json
|
|
60
|
+
genaug setup --guided --answers-file ./genaug-answers.json --project petstore-agent --configure-providers --json
|
|
61
|
+
genaug setup --bootstrap --project-name "Petstore Agent" --project-slug petstore-agent --print-env
|
|
62
|
+
genaug init --interactive --login --bootstrap --project-name "Petstore Agent" --project-slug petstore-agent --configure-providers --print-env
|
|
63
|
+
genaug setup --interactive --handoff-output .genaug/setup-handoff.md
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
Add `--bootstrap` after `genaug auth login` to create or select a project and mint a
|
|
67
|
+
project runtime key through installer auth; the setup artifact stores only the masked
|
|
68
|
+
key. Add `--login` to start browser installer auth inline before bootstrapping. Add
|
|
69
|
+
`--print-env` to show the runtime env block once for your backend secret manager. Use
|
|
70
|
+
`--answers-template ... --json` to generate the secret-free questionnaire before a human
|
|
71
|
+
or coding agent fills it, then pass the completed file with `--answers-file` for
|
|
72
|
+
non-interactive runs. `--guided --json` requires `--answers-file` so interactive prompts
|
|
73
|
+
do not contaminate machine-readable output. Human guided setup writes
|
|
74
|
+
`.genaug/setup-handoff.md` by default; use `--handoff-output` for a different path or
|
|
75
|
+
`--no-handoff` to skip it.
|
|
76
|
+
|
|
77
|
+
## Auth
|
|
78
|
+
|
|
79
|
+
```bash
|
|
80
|
+
genaug auth login
|
|
81
|
+
genaug auth whoami --json
|
|
82
|
+
genaug auth logout
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
`genaug auth login` starts browser installer auth by default: it opens the dashboard
|
|
86
|
+
`/cli/authorize` approval page, creates an installer session for setup tasks, and keeps
|
|
87
|
+
that session separate from runtime `/v1/responses` keys. After approval the dashboard
|
|
88
|
+
redirects to the CLI's loopback callback and the CLI exchanges the short-lived code
|
|
89
|
+
automatically; if the callback cannot start or times out, it falls back to a paste-code
|
|
90
|
+
prompt. `genaug auth login --api-key ...` remains available for operator/admin
|
|
91
|
+
workflows and verifies the key against `/api/v1/admin/me` before writing local config.
|
|
92
|
+
The CLI stores auth at `~/.genaug/config.yaml` with owner-only file permissions; set
|
|
93
|
+
`GENAUG_CLI_CONFIG` to use a custom path.
|
|
94
|
+
|
|
95
|
+
Environment overrides:
|
|
96
|
+
|
|
97
|
+
```bash
|
|
98
|
+
export GENAUG_ADMIN_API_KEY=gaadmlive...
|
|
99
|
+
export GENAUG_ADMIN_BASE_URL=https://api.generalaugment.com
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
`GENAUG_API_KEY` and `GENAUG_API_BASE_URL` are also accepted, which keeps local mock
|
|
103
|
+
and SDK test scripts easy to share.
|
|
104
|
+
|
|
105
|
+
## Migrating an existing app
|
|
106
|
+
|
|
107
|
+
```bash
|
|
108
|
+
genaug migrate openai-responses --dry-run --json
|
|
109
|
+
genaug migrate openai-responses --apply --yes
|
|
110
|
+
genaug migrate openai-responses --apply --yes --branch genaug/openai-responses --push --create-pr
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
`genaug migrate openai-responses` inspects the app and generates a patch for
|
|
114
|
+
OpenAI-compatible clients. It only edits files with `--apply` plus explicit confirmation
|
|
115
|
+
or `--yes`. For coding-agent migration work, add `--branch`, `--push`, and `--create-pr`
|
|
116
|
+
to create the branch, commit the safe edits, push, and open a GitHub pull request through
|
|
117
|
+
the `gh` CLI.
|
|
118
|
+
|
|
119
|
+
## Building a project from an OpenAPI spec
|
|
120
|
+
|
|
121
|
+
```bash
|
|
122
|
+
genaug integrate https://petstore3.swagger.io/api/v3/openapi.json
|
|
123
|
+
genaug integrate https://petstore3.swagger.io/api/v3/openapi.json --auto-deploy
|
|
124
|
+
genaug validate ./petstore-agent/genaug-agent.yaml
|
|
125
|
+
```
|
|
126
|
+
|
|
127
|
+
Use `genaug init <name>` for a starter agent before an OpenAPI spec exists, or
|
|
128
|
+
`genaug integrate <openapi-spec> --auto-deploy` to create/update the project and register
|
|
129
|
+
the generated OpenAPI tools in one pass. Deployment is performed by `integrate
|
|
130
|
+
--auto-deploy` (there is no separate `genaug deploy` command). Without `--auto-deploy`,
|
|
131
|
+
review the scaffold, then `genaug validate ./<agent>/genaug-agent.yaml`. The generated
|
|
132
|
+
manifest is `genaug-agent.yaml`; both scaffolds include `CODING_AGENT_PROMPT.md`, the
|
|
133
|
+
paste-ready backend handoff for a coding agent.
|
|
134
|
+
|
|
135
|
+
```bash
|
|
136
|
+
genaug init
|
|
137
|
+
genaug init dayplan-agent --tool web_search
|
|
138
|
+
genaug init --interactive
|
|
139
|
+
```
|
|
140
|
+
|
|
141
|
+
## API keys
|
|
142
|
+
|
|
143
|
+
```bash
|
|
144
|
+
genaug keys create --project petstore-agent --name "Production backend"
|
|
145
|
+
genaug keys list --project petstore-agent --json
|
|
146
|
+
genaug keys update <key-id> --project petstore-agent --name "Renamed"
|
|
147
|
+
genaug keys revoke <key-id> --project petstore-agent
|
|
148
|
+
```
|
|
149
|
+
|
|
150
|
+
## Providers and connectors
|
|
151
|
+
|
|
152
|
+
```bash
|
|
153
|
+
genaug providers setup --capability browse --project petstore-agent --api-key-env BROWSERBASE_API_KEY --health-check
|
|
154
|
+
genaug providers setup --capability video --json
|
|
155
|
+
genaug providers setup --provider codex-mcp --project petstore-agent --api-key-env OPENAI_API_KEY --health-check
|
|
156
|
+
genaug providers setup --provider fal --project petstore-agent --api-key-env FAL_API_KEY --health-check
|
|
157
|
+
genaug providers smoke --capability code --capability browse --capability video --json
|
|
158
|
+
genaug providers smoke --provider browserbase --project petstore-agent --api-key-env BROWSERBASE_API_KEY --json
|
|
159
|
+
genaug providers readiness --project petstore-agent --json
|
|
160
|
+
genaug connectors setup --name my-mcp --url https://example.com/mcp --health-check
|
|
161
|
+
```
|
|
162
|
+
|
|
163
|
+
`providers setup` reads the named env var once, stores the credential in General Augment
|
|
164
|
+
custody, runs a health check, and writes only redacted provider setup evidence — raw
|
|
165
|
+
secrets are never written to the setup artifact. `providers smoke` plans launch evidence
|
|
166
|
+
per capability; add `--evidence-output .genaug/provider-smoke-evidence.json` to persist
|
|
167
|
+
the redacted launch-smoke payload for launch reviews. `providers readiness` reports the
|
|
168
|
+
provider readiness rows for a project. `connectors setup` writes MCP connector config
|
|
169
|
+
through installer auth when `--name` plus `--url` or `--command` is supplied, and rejects
|
|
170
|
+
raw API keys in MCP URLs.
|
|
171
|
+
|
|
172
|
+
For iMessage, use the npm helper on the Mac:
|
|
173
|
+
|
|
174
|
+
```bash
|
|
175
|
+
npx @general-augment/local-imessage setup --project dayplan-agent --write-prompt --write-config
|
|
176
|
+
```
|
|
177
|
+
|
|
178
|
+
## Skills and tools
|
|
179
|
+
|
|
180
|
+
```bash
|
|
181
|
+
genaug skills design --job-type website-builder --project petstore-agent --apply
|
|
182
|
+
genaug skills list --project petstore-agent
|
|
183
|
+
genaug skills view <skill-name> --project petstore-agent
|
|
184
|
+
genaug skills apply ./SKILL.md --project petstore-agent
|
|
185
|
+
genaug skills delete <skill-name> --project petstore-agent
|
|
186
|
+
|
|
187
|
+
genaug tools catalog --project petstore-agent
|
|
188
|
+
genaug tools list --project petstore-agent --json
|
|
189
|
+
genaug tools toggle web_search --project petstore-agent --enable
|
|
190
|
+
genaug tools discovery --project petstore-agent
|
|
191
|
+
genaug tools explain-turn --project petstore-agent --requested-tool web_search --json
|
|
192
|
+
genaug tools add-mcp my-mcp --project petstore-agent --url https://example.com/mcp
|
|
193
|
+
```
|
|
194
|
+
|
|
195
|
+
Use exactly one transport per MCP server: `--url` for HTTP endpoints or `--command`
|
|
196
|
+
for stdio servers.
|
|
197
|
+
|
|
198
|
+
## Doctor, status, and smoke
|
|
199
|
+
|
|
200
|
+
```bash
|
|
201
|
+
genaug doctor
|
|
202
|
+
genaug doctor --project petstore-agent --user user_123 --json
|
|
203
|
+
genaug status --json
|
|
204
|
+
genaug smoke --idempotency-key smoke-replay-1 --metadata feature=spark
|
|
205
|
+
genaug smoke --project petstore-agent --structured --json
|
|
206
|
+
genaug smoke --project petstore-agent --memory-recall --import-evidence \
|
|
207
|
+
--evidence-output .genaug/smoke-evidence.json --json
|
|
208
|
+
```
|
|
209
|
+
|
|
210
|
+
`genaug doctor` checks the resolved config path, base URL, API key presence,
|
|
211
|
+
`/health/ready`, and `/api/v1/admin/me` without printing secret values. Add `--project`
|
|
212
|
+
to verify read-only agent-cloud readiness (runtime policy, tool catalog, approvals, run
|
|
213
|
+
timelines) and `--user` to include a tenant memory profile reachability check.
|
|
214
|
+
|
|
215
|
+
`genaug smoke` checks `/health/ready` and sends one project-keyed `/v1/responses`
|
|
216
|
+
request using bearer auth. Use `--idempotency-key`, `--request-id`, `--traceparent`, and
|
|
217
|
+
repeated `--metadata key=value` flags for replayable support/debug evidence. Use
|
|
218
|
+
`--project <slug>` when the configured key is a management key and the app-facing request
|
|
219
|
+
needs `X-Project-ID`. Use `--structured` for the default `json_schema` smoke response or
|
|
220
|
+
`--schema-file ./schema.json` for an app-specific contract. Use `--evidence-output` to
|
|
221
|
+
persist a redacted launch artifact (readiness result, response id, trace id, dashboard
|
|
222
|
+
observability URL, secret-safety metadata). Add `--memory-recall` to prove `/v1/responses`
|
|
223
|
+
recalls a seeded fact without prompt echo.
|
|
224
|
+
|
|
225
|
+
## Verify
|
|
226
|
+
|
|
227
|
+
```bash
|
|
228
|
+
genaug verify --project petstore-agent
|
|
229
|
+
```
|
|
230
|
+
|
|
231
|
+
`genaug verify` runs project acceptance checks: project keys, hosted agent test, tools,
|
|
232
|
+
logs, usage, usage limits, observability, runtime-policy model routing, memory lifecycle,
|
|
233
|
+
and tool-call audit, then prints dashboard URLs for the same tenant.
|
|
234
|
+
|
|
235
|
+
## Dashboard
|
|
236
|
+
|
|
237
|
+
```bash
|
|
238
|
+
genaug dashboard open --project petstore-agent
|
|
239
|
+
```
|
|
240
|
+
|
|
241
|
+
## Local mock for offline tests
|
|
242
|
+
|
|
243
|
+
The deterministic local HTTP mock ships with the package and is launched as a module
|
|
244
|
+
(it is not a `genaug` subcommand):
|
|
245
|
+
|
|
246
|
+
```bash
|
|
247
|
+
uv run --project packages/cli python -m platform_cli.local_mock \
|
|
248
|
+
--host 127.0.0.1 --port 8787 --quiet
|
|
249
|
+
```
|
|
250
|
+
|
|
251
|
+
It serves offline app contract tests against `/v1/responses`, memory routes, project
|
|
252
|
+
setup, OpenAPI tool registration, key management, logs, usage, observability, health
|
|
253
|
+
checks, idempotency replays, trace metadata, structured-output fixtures, and semantic
|
|
254
|
+
SSE fixtures. Point the SDKs at it with `GENAUG_API_BASE_URL=http://127.0.0.1:8787`.
|
|
255
|
+
|
|
256
|
+
## Console entrypoint
|
|
257
|
+
|
|
258
|
+
The console command is defined in `pyproject.toml`:
|
|
259
|
+
|
|
260
|
+
```toml
|
|
261
|
+
[project.scripts]
|
|
262
|
+
genaug = "platform_cli.main:app"
|
|
263
|
+
```
|
|
@@ -4,15 +4,18 @@ build-backend = "hatchling.build"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "general-augment-cli"
|
|
7
|
-
version = "0.
|
|
8
|
-
description = "
|
|
7
|
+
version = "0.2.0"
|
|
8
|
+
description = "CLI for General Augment, the agent backend for your app."
|
|
9
9
|
readme = "README.md"
|
|
10
10
|
requires-python = ">=3.12"
|
|
11
11
|
license = "MIT"
|
|
12
12
|
authors = [{ name = "General Augment" }]
|
|
13
|
+
keywords = ["general-augment", "agent-backend", "ai-agents", "llm", "memory", "tools"]
|
|
13
14
|
dependencies = [
|
|
14
|
-
"typer
|
|
15
|
+
"typer>=0.12.0,<0.26",
|
|
16
|
+
"click>=8.1.7",
|
|
15
17
|
"httpx>=0.27.0",
|
|
18
|
+
"jsonschema>=4.22.0",
|
|
16
19
|
"rich>=13.7.0",
|
|
17
20
|
"pyyaml>=6.0.0",
|
|
18
21
|
"pydantic>=2.7.0",
|
|
@@ -27,6 +30,12 @@ dev = [
|
|
|
27
30
|
[project.scripts]
|
|
28
31
|
genaug = "platform_cli.main:app"
|
|
29
32
|
|
|
33
|
+
[project.urls]
|
|
34
|
+
Homepage = "https://generalaugment.com"
|
|
35
|
+
Documentation = "https://docs.generalaugment.com"
|
|
36
|
+
Source = "https://github.com/LunarVentures/general-augment-platform"
|
|
37
|
+
Issues = "https://github.com/LunarVentures/general-augment-platform/issues"
|
|
38
|
+
|
|
30
39
|
[tool.hatch.build.targets.wheel]
|
|
31
40
|
packages = ["src/platform_cli"]
|
|
32
41
|
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
"""Standalone CLI package for the agent platform."""
|
|
2
|
+
|
|
3
|
+
from importlib.metadata import PackageNotFoundError
|
|
4
|
+
from importlib.metadata import version as _pkg_version
|
|
5
|
+
|
|
6
|
+
__all__ = ["__version__"]
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
def _resolve_version() -> str:
|
|
10
|
+
"""Single-source the version: installed distribution metadata, else local pyproject.
|
|
11
|
+
|
|
12
|
+
Installed (``pip install general-augment-cli``) resolves via metadata. A source
|
|
13
|
+
checkout (e.g. running from ``packages/cli/src`` on ``PYTHONPATH`` without an install,
|
|
14
|
+
as CI does) has no distribution metadata, so fall back to reading the version straight
|
|
15
|
+
from the package's ``pyproject.toml`` rather than reporting ``0.0.0+local``.
|
|
16
|
+
"""
|
|
17
|
+
try:
|
|
18
|
+
return _pkg_version("general-augment-cli")
|
|
19
|
+
except PackageNotFoundError:
|
|
20
|
+
pass
|
|
21
|
+
import tomllib
|
|
22
|
+
from pathlib import Path
|
|
23
|
+
|
|
24
|
+
pyproject = Path(__file__).resolve().parents[2] / "pyproject.toml"
|
|
25
|
+
try:
|
|
26
|
+
data = tomllib.loads(pyproject.read_text(encoding="utf-8"))
|
|
27
|
+
return str(data["project"]["version"])
|
|
28
|
+
except (OSError, KeyError, tomllib.TOMLDecodeError):
|
|
29
|
+
return "0.0.0+local"
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
__version__ = _resolve_version()
|