Repository navigation
feat(environments): add the launch:env commands — list, get, create, update, delete - #241
Conversation
✅ Snyk checks have passed. No issues have been found so far.
💻 Catch issues earlier using the plugins for VS Code, JetBrains IDEs, Visual Studio, and Eclipse. |
🔒 Security Scan Results
⏱️ SLA Breach Summary
ℹ️ Vulnerabilities Without Available Fixes (Informational Only)The following vulnerabilities were detected but do not have fixes available (no upgrade or patch). These are excluded from failure thresholds:
✅ BUILD PASSED - All security checks passed |
️✅ There are no secrets present in this pull request anymore.If these secrets were true positive and are still valid, we highly recommend you to revoke them. 🦉 GitGuardian detects secrets in your source code to help developers and security teams secure the modern development process. You are seeing this because you or someone else with access to this repository has authorized GitGuardian to scan your pull request. |
There was a problem hiding this comment.
🟡 Changes recommended
Three moderate findings remain unresolved in prompt cancellation, absent-value rendering, and framework/server-command validation.
1 open finding
What changed in this PR
Adds the launch:env command suite for listing, retrieving, creating, updating, and deleting environments, with shared lookup, paging, prompting, deployment, and documentation support.
Changes:
- Adds environment lifecycle commands and API integrations.
- Adds shared resource resolution, prompts, paging, and deployment helpers.
- Expands tests, fixtures, command metadata, documentation, and Talisman checksums.
Review findings remain in:
src/core/prompt.ts: dismissed checkbox prompts should cancel with exit 3.src/environments/environment.presenter.ts: list output should use absent-value handling.src/environments/environment.update.ts: validate the effective framework whenserverCmdis selected.
| File | Description |
|---|---|
test/integration/retired-commands.test.ts |
Updates retired command replacements. |
test/integration/projects-paging.test.ts |
Uses shared resource references. |
test/integration/oclif-manifest.test.ts |
Tests environment topic metadata. |
test/integration/environments-update.test.ts |
Tests environment updates end to end. |
test/integration/environments-list-command.test.ts |
Tests listing and retrieval flows. |
test/integration/environments-delete.test.ts |
Tests deletion flows. |
test/integration/environments-create.test.ts |
Tests creation and deployment following. |
test/guards/layering.test.ts |
Updates resource layering rules. |
test/fixtures/README.md |
Documents environment fixtures. |
test/fixtures/environments-list.json |
Adds list fixture. |
test/fixtures/environment-not-found.json |
Adds not-found fixture. |
test/fixtures/environment-get.json |
Adds get fixture. |
src/resources.ts |
Registers environment dependencies. |
src/resources.test.ts |
Tests dependency registration. |
src/projects/projects.api.ts |
Reuses shared paging. |
src/projects/project.source.ts |
Updates prompt helper imports. |
src/projects/project.resolver.ts |
Uses shared name lookup. |
src/projects/project.resolver.test.ts |
Updates resolver tests. |
src/projects/project.presenter.ts |
Reuses deployment failure wording. |
src/projects/project.inputs.ts |
Uses shared resource references. |
src/projects/project.inputs.test.ts |
Updates input prompt expectations. |
src/projects/project.follow.ts |
Uses shared deployment lookup. |
src/projects/project.create.ts |
Applies shared environment rules. |
src/projects/project-ref.ts |
Removes project-specific reference helper. |
src/projects/project-ref.test.ts |
Removes obsolete helper tests. |
src/git/git.prompt.test.ts |
Updates branch picker expectations. |
src/environments/types.ts |
Adds environment models. |
src/environments/environments.api.ts |
Adds environment API operations. |
src/environments/environment.update.ts |
Implements environment updates. |
src/environments/environment.update.prompt.ts |
Implements update prompts. |
src/environments/environment.update.prompt.test.ts |
Tests update prompts. |
src/environments/environment.rules.ts |
Adds repository-only rules. |
src/environments/environment.resolver.ts |
Resolves environment names. |
src/environments/environment.resolver.test.ts |
Tests environment resolution. |
src/environments/environment.prompt.ts |
Adds environment picker. |
src/environments/environment.prompt.test.ts |
Tests environment prompting. |
src/environments/environment.presenter.ts |
Adds environment rendering. |
src/environments/environment.presenter.test.ts |
Tests presentation. |
src/environments/environment.inputs.ts |
Adds environment flags and resolution. |
src/environments/environment.inputs.test.ts |
Tests environment inputs. |
src/environments/environment.errors.ts |
Adds environment error wording. |
src/environments/environment.create.ts |
Implements creation and deployment following. |
src/environments/environment.builder.ts |
Exposes framework labeling. |
src/deployments/deployment.presenter.ts |
Adds shared failure wording. |
src/deployments/deployment.presenter.test.ts |
Tests failure messages. |
src/deployments/deployment.lookup.ts |
Adds bounded deployment lookup retries. |
src/deployments/deployment.lookup.test.ts |
Tests lookup retries. |
src/core/resource-ref.ts |
Adds shared resource references. |
src/core/resource-ref.test.ts |
Tests resource references. |
src/core/prompt.ts |
Adds secret, checkbox, and input helpers. |
src/core/prompt.test.ts |
Tests prompt helpers. |
src/core/paging.ts |
Adds shared page scanning. |
src/core/paging.test.ts |
Tests page scanning. |
src/core/name-lookup.ts |
Adds shared name-to-UID lookup. |
src/core/name-lookup.test.ts |
Tests shared lookup. |
src/core/interruptible-ux.ts |
Improves cancellation handling. |
src/core/interruptible-ux.test.ts |
Tests interrupt handling. |
src/commands/launch/index.ts |
Updates command replacements. |
src/commands/launch/environments/index.ts |
Updates retired environment wording. |
src/commands/launch/env/update.ts |
Adds update command wiring. |
src/commands/launch/env/update.test.ts |
Tests update command wiring. |
src/commands/launch/env/list.ts |
Adds list command. |
src/commands/launch/env/list.test.ts |
Tests list command. |
src/commands/launch/env/get.ts |
Adds get command. |
src/commands/launch/env/get.test.ts |
Tests get command. |
src/commands/launch/env/delete.ts |
Adds delete command. |
src/commands/launch/env/delete.test.ts |
Tests delete command. |
src/commands/launch/env/create.ts |
Adds create command. |
src/commands/launch/env/create.test.ts |
Tests create command wiring. |
README.md |
Documents environment commands. |
package.json |
Registers topic and commands. |
.talismanrc |
Updates checksums and allowlists. |
🧠 Review effort: Lite
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
c474462 to
f203eea
Compare
🔒 Security Scan Results
⏱️ SLA Breach Summary
ℹ️ Vulnerabilities Without Available Fixes (Informational Only)The following vulnerabilities were detected but do not have fixes available (no upgrade or patch). These are excluded from failure thresholds:
✅ BUILD PASSED - All security checks passed |
🔒 Security Scan Results
⏱️ SLA Breach Summary
ℹ️ Vulnerabilities Without Available Fixes (Informational Only)The following vulnerabilities were detected but do not have fixes available (no upgrade or patch). These are excluded from failure thresholds:
✅ BUILD PASSED - All security checks passed |
… lookup across resources Moves the name-to-uid lookup, cursor paging and resource references out of the projects module into core so environments can reuse them. Adds askChoices (a checkbox prompt) and scrolling choice prompts that do not wrap round, show short lists whole, and refuse an empty checklist. Ctrl-C at a list or checkbox prompt now exits 3 rather than 130. Adds readPipedInput for secrets piped on stdin, the deployment lookup that retries the first deployment, and a branch picker that lists the pre-selected branch first. The Talisman checksums for every file the launch:env work touches are recorded here. #claude_code# 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com> Co-authored-by: Harshi Shah <harshi.shah@contentstack.com>
Projects now use the shared name lookup, paging, resource reference and deployment lookup, and warn about --branch / --auto-deploy on a FileUpload project through the shared helper. The project-only reference helper is removed. #claude_code# 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com> Co-authored-by: Harshi Shah <harshi.shah@contentstack.com>
…picker and presenter EnvironmentsApi gains get, paged list, create, update and delete. Adds the --env input with its name-to-uid resolver and picker, the environment presenter (the agreed env:get rows, the list columns with absent-value placeholders), the repository-only rules and the controller-shaped fixtures. An empty 409 from update is read as a taken name only when the name was changed. #claude_code# 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com> Co-authored-by: Harshi Shah <harshi.shah@contentstack.com>
Lists a project's environments and shows one environment. Registers the launch:env topic and command ids, describes the topic and points the retired environment commands at their replacements. #claude_code# 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com> Co-authored-by: Harshi Shah <harshi.shah@contentstack.com>
Creates an environment and follows its first deployment, ending on the live announcement without a detail table. --help states the same name and description limits the flags enforce. #claude_code# 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com> Co-authored-by: Harshi Shah <harshi.shah@contentstack.com>
Updates an environment from flags, or from a settings checklist when no flag is given on a terminal. Refuses -u / -p without --password-protection enable before any request, and without a terminal reads the password for -p from standard input. Warns about and ignores --branch / --auto-deploy on a FileUpload project. #claude_code# 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com> Co-authored-by: Harshi Shah <harshi.shah@contentstack.com>
Deletes an environment after a confirmation. #claude_code# 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com> Co-authored-by: Harshi Shah <harshi.shah@contentstack.com>
Documents the launch:env commands, the stdin -p, and the SIGINT handling, and regenerates the README command reference. #claude_code# 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com> Co-authored-by: Harshi Shah <harshi.shah@contentstack.com>
1566677 to
68b9442
Compare
🔒 Security Scan Results
⏱️ SLA Breach Summary
ℹ️ Vulnerabilities Without Available Fixes (Informational Only)The following vulnerabilities were detected but do not have fixes available (no upgrade or patch). These are excluded from failure thresholds:
✅ BUILD PASSED - All security checks passed |
|
/ship 2b summary — Fixed: blank
History: per the author's request the 52 work-in-progress commits (incl. Talisman checksum refreshes) were folded into 8 logical Conventional Commits — final tree is identical apart from the two refreshed presenter checksums. Next: needs a reviewer approval. |
68b9442 to
ee8a9a5
Compare
🔒 Security Scan Results
⏱️ SLA Breach Summary
ℹ️ Vulnerabilities Without Available Fixes (Informational Only)The following vulnerabilities were detected but do not have fixes available (no upgrade or patch). These are excluded from failure thresholds:
✅ BUILD PASSED - All security checks passed |

Ticket: CL-7168
What
Adds the V2 environment commands under the
launch:envtopic:launch:env:listpages through a project's environments and shows each one's first domain that has a URL.launch:env:getshows one environment, with its organization, the resolved project, created/updated dates, and its variables as a count only.launch:env:createcreates an environment and follows its first deployment. It looks for the deployment up to three times.launch:env:updatechanges name, description, branch, auto-deploy, cache priming, response mode and password protection. On a terminal with no flags, it asks which settings to change. The password is only ever asked for with a masked prompt.launch:env:deletedeletes an environment, asking first or requiring--yeswithout a terminal.Supporting changes:
--envinput: resolves a name to its uid, with a picker on a terminal.untilFoundhelper.askChoicescheckbox prompt.--branch/--auto-deployon a FileUpload project: these now print a warning instead of refusing.-u/-pwithout--password-protection enable: refused before any API call.env:update: the empty 409 the endpoint really sends is reported as "name already taken".env:updatetests now generate their passwords at runtime.Tests
npm test: 113 suites, 2001 tests pass.npm run buildandnpm run lintpass.v2-dev...cl-7168range.#claude_code#
🤖 Generated with Claude Code