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.
Files changed (71) hide show
  1. {general_augment_cli-0.1.0 → general_augment_cli-0.2.0}/.gitignore +8 -0
  2. general_augment_cli-0.2.0/PKG-INFO +287 -0
  3. general_augment_cli-0.2.0/README.md +263 -0
  4. {general_augment_cli-0.1.0 → general_augment_cli-0.2.0}/pyproject.toml +12 -3
  5. general_augment_cli-0.2.0/src/platform_cli/__init__.py +32 -0
  6. {general_augment_cli-0.1.0 → general_augment_cli-0.2.0}/src/platform_cli/client.py +138 -9
  7. general_augment_cli-0.2.0/src/platform_cli/commands/auth.py +409 -0
  8. general_augment_cli-0.2.0/src/platform_cli/commands/connectors.py +250 -0
  9. general_augment_cli-0.2.0/src/platform_cli/commands/dashboard.py +36 -0
  10. general_augment_cli-0.2.0/src/platform_cli/commands/doctor.py +780 -0
  11. general_augment_cli-0.2.0/src/platform_cli/commands/init.py +262 -0
  12. general_augment_cli-0.2.0/src/platform_cli/commands/integrate.py +142 -0
  13. {general_augment_cli-0.1.0 → general_augment_cli-0.2.0}/src/platform_cli/commands/keys.py +6 -1
  14. general_augment_cli-0.2.0/src/platform_cli/commands/migrate.py +232 -0
  15. general_augment_cli-0.2.0/src/platform_cli/commands/providers.py +1164 -0
  16. general_augment_cli-0.2.0/src/platform_cli/commands/setup.py +1209 -0
  17. general_augment_cli-0.2.0/src/platform_cli/commands/skills.py +321 -0
  18. general_augment_cli-0.2.0/src/platform_cli/commands/smoke.py +734 -0
  19. general_augment_cli-0.2.0/src/platform_cli/commands/status.py +120 -0
  20. general_augment_cli-0.2.0/src/platform_cli/commands/tools.py +440 -0
  21. {general_augment_cli-0.1.0 → general_augment_cli-0.2.0}/src/platform_cli/commands/validate.py +9 -2
  22. {general_augment_cli-0.1.0 → general_augment_cli-0.2.0}/src/platform_cli/commands/verify.py +92 -1
  23. 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
  24. general_augment_cli-0.2.0/src/platform_cli/errors.py +234 -0
  25. {general_augment_cli-0.1.0 → general_augment_cli-0.2.0}/src/platform_cli/local_mock.py +75 -0
  26. {general_augment_cli-0.1.0 → general_augment_cli-0.2.0}/src/platform_cli/main.py +10 -30
  27. 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
  28. general_augment_cli-0.2.0/src/platform_cli/openai_responses_migration.py +325 -0
  29. {general_augment_cli-0.1.0 → general_augment_cli-0.2.0}/src/platform_cli/openapi.py +163 -16
  30. general_augment_cli-0.2.0/src/platform_cli/py.typed +0 -0
  31. {general_augment_cli-0.1.0 → general_augment_cli-0.2.0}/src/platform_cli/readiness.py +43 -61
  32. general_augment_cli-0.2.0/src/platform_cli/readiness_contract.json +80 -0
  33. general_augment_cli-0.2.0/src/platform_cli/redaction.py +37 -0
  34. general_augment_cli-0.2.0/src/platform_cli/self_serve.py +1229 -0
  35. general_augment_cli-0.2.0/src/platform_cli/workspace_inspector.py +237 -0
  36. general_augment_cli-0.2.0/tests/test_commands.py +4924 -0
  37. general_augment_cli-0.2.0/tests/test_self_serve_onboarding.py +1341 -0
  38. general_augment_cli-0.1.0/PKG-INFO +0 -180
  39. general_augment_cli-0.1.0/README.md +0 -163
  40. general_augment_cli-0.1.0/src/platform_cli/__init__.py +0 -5
  41. general_augment_cli-0.1.0/src/platform_cli/commands/approvals.py +0 -150
  42. general_augment_cli-0.1.0/src/platform_cli/commands/auth.py +0 -96
  43. general_augment_cli-0.1.0/src/platform_cli/commands/billing.py +0 -143
  44. general_augment_cli-0.1.0/src/platform_cli/commands/channels.py +0 -212
  45. general_augment_cli-0.1.0/src/platform_cli/commands/dev.py +0 -38
  46. general_augment_cli-0.1.0/src/platform_cli/commands/doctor.py +0 -170
  47. general_augment_cli-0.1.0/src/platform_cli/commands/identity.py +0 -433
  48. general_augment_cli-0.1.0/src/platform_cli/commands/init.py +0 -55
  49. general_augment_cli-0.1.0/src/platform_cli/commands/integrate.py +0 -94
  50. general_augment_cli-0.1.0/src/platform_cli/commands/logs.py +0 -43
  51. general_augment_cli-0.1.0/src/platform_cli/commands/memory.py +0 -316
  52. general_augment_cli-0.1.0/src/platform_cli/commands/mock.py +0 -30
  53. general_augment_cli-0.1.0/src/platform_cli/commands/model_providers.py +0 -226
  54. general_augment_cli-0.1.0/src/platform_cli/commands/observability.py +0 -174
  55. general_augment_cli-0.1.0/src/platform_cli/commands/onboarding.py +0 -72
  56. general_augment_cli-0.1.0/src/platform_cli/commands/projects.py +0 -302
  57. general_augment_cli-0.1.0/src/platform_cli/commands/skills.py +0 -116
  58. general_augment_cli-0.1.0/src/platform_cli/commands/smoke.py +0 -280
  59. general_augment_cli-0.1.0/src/platform_cli/commands/status.py +0 -49
  60. general_augment_cli-0.1.0/src/platform_cli/commands/tools.py +0 -179
  61. general_augment_cli-0.1.0/src/platform_cli/commands/users.py +0 -150
  62. general_augment_cli-0.1.0/src/platform_cli/errors.py +0 -103
  63. general_augment_cli-0.1.0/tests/test_commands.py +0 -3477
  64. general_augment_cli-0.1.0/uv.lock +0 -420
  65. {general_augment_cli-0.1.0 → general_augment_cli-0.2.0}/AGENTS.md +0 -0
  66. {general_augment_cli-0.1.0 → general_augment_cli-0.2.0}/src/platform_cli/branding.py +0 -0
  67. {general_augment_cli-0.1.0 → general_augment_cli-0.2.0}/src/platform_cli/commands/__init__.py +0 -0
  68. {general_augment_cli-0.1.0 → general_augment_cli-0.2.0}/src/platform_cli/config.py +0 -0
  69. {general_augment_cli-0.1.0 → general_augment_cli-0.2.0}/src/platform_cli/output.py +0 -0
  70. {general_augment_cli-0.1.0 → general_augment_cli-0.2.0}/src/platform_cli/runtime.py +0 -0
  71. {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.1.0"
8
- description = "Standalone CLI for General Augment."
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[all]>=0.12.0",
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()