Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
30 commits
Select commit Hold shift + click to select a range
fe82e7c
feat(cli): retrofit commands to agent-first JSON envelopes
wcole1-godaddy Feb 23, 2026
4d3d122
feat(cli): migrate runtime to @effect/cli and remove commander
wcole1-godaddy Feb 23, 2026
bb683ff
chore(cli): tighten runtime types and apply lint fixes
wcole1-godaddy Feb 23, 2026
4e23caa
Add -v and --verbose flags as standard alternatives to --debug
jundai-godaddy Feb 12, 2026
9d5fb5e
Add verbose output with tiered logging levels
jundai-godaddy Feb 13, 2026
09eb58d
fix(security): suppress oauth token bodies in verbose logs
wcole1-godaddy Feb 23, 2026
d384041
Fix repeated verbose flags and cover verbosity aliases
wcole1-godaddy Feb 23, 2026
342cdcd
Merge pull request #3 from godaddy/jundai/add-verbose-flag-alias
wcole1-godaddy Feb 23, 2026
9ce6bf8
feat: add `godaddy api` command for direct API access
wcole1-godaddy Feb 3, 2026
7ed4e0e
fix: harden api command and scope auth tokens by context
wcole1-godaddy Feb 13, 2026
fd49434
fix: route config and env files using API override host
wcole1-godaddy Feb 20, 2026
c35262b
fix(application): use correct GraphQL order direction enum
wcole1-godaddy Feb 20, 2026
0d03702
fix(security): resolve CodeQL findings in smoke tests and token store
wcole1-godaddy Feb 20, 2026
32e4d1d
fix(token-store): lazy-load keytar to prevent startup crashes
wcole1-godaddy Feb 23, 2026
6c2b3eb
Migrate api command to effect runtime and remove commander dependency
wcole1-godaddy Feb 23, 2026
e7e5304
Merge pull request #2 from godaddy/feature/api-command
wcole1-godaddy Feb 23, 2026
a828ddf
Tighten type safety and revalidate agent-first CLI contract
wcole1-godaddy Feb 23, 2026
95c4cbd
Add shared cli-design skill bundle and lockfile
wcole1-godaddy Feb 23, 2026
d04be20
Harden verbose HTTP logging to avoid sensitive data exposure
wcole1-godaddy Feb 23, 2026
8209a9d
Eliminate URL logging from verbose HTTP sinks for CodeQL
wcole1-godaddy Feb 23, 2026
150d80f
Remove request URL/header/body from verbose logger sinks
wcole1-godaddy Feb 23, 2026
c4a5220
feat(cli): add global pretty-print flag for JSON envelopes
wcole1-godaddy Feb 23, 2026
ece8ab5
refactor: convert CLI and APIs to effect-first patterns
wcole1-godaddy Feb 23, 2026
a5b089b
refactor: migrate to Effect-only APIs with tagged error ADT
wcole1-godaddy Feb 23, 2026
30da441
fix: complete Effect.ts migration - fix all 55 failing tests
wcole1-godaddy Feb 23, 2026
fffb7b2
refactor: agent-first CLI rewrite + platform service migration
wcole1-godaddy Feb 23, 2026
68931e4
refactor: Effect best practices cleanup
wcole1-godaddy Feb 23, 2026
e6e8136
style: fix biome lint and formatting errors
wcole1-godaddy Feb 24, 2026
89060e3
fix: replace keytar with native keychain, fix CLI validation routing,…
wcole1-godaddy Feb 24, 2026
936ed58
chore: add changeset for native keychain and auto-reauth
wcole1-godaddy Feb 24, 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
433 changes: 433 additions & 0 deletions .agents/skills/cli-design/SKILL.md

Large diffs are not rendered by default.

3 changes: 3 additions & 0 deletions .agents/skills/cli-design/agents/openai.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
interface:
icon_small: "./assets/small-logo.svg"
icon_large: "./assets/large-logo.png"
Binary file added .agents/skills/cli-design/assets/large-logo.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
11 changes: 11 additions & 0 deletions .agents/skills/cli-design/assets/small-logo.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
13 changes: 13 additions & 0 deletions .changeset/native-keychain-auto-reauth.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
---
"@godaddy/cli": minor
---

Replace keytar native addon with cross-platform OS keychain (macOS security CLI, Linux secret-tool, Windows PasswordVault). No native Node addons required.

Fix CLI error routing: validation guard no longer misclassifies AuthenticationError and NetworkError as input validation errors.

Fix `application list` to use Relay connection syntax (edges/node) matching the updated GraphQL schema.

Add `--scope` option to `auth login` for requesting additional OAuth scopes beyond the defaults.

Add `--scope` option to `api` command with automatic re-authentication on 403: decodes the JWT to detect missing scopes, triggers the browser auth flow, and retries the request.
5 changes: 5 additions & 0 deletions .changeset/quiet-foxes-divide.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"@godaddy/cli": patch
---

Fix `application deploy` by using the correct GraphQL enum casing when requesting the latest release.
4 changes: 3 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -197,4 +197,6 @@ schema.graphql
graphql-env.d.ts

# Alternative package manager lockfiles
bun.lock
bun.lock

.pnpm-store
39 changes: 39 additions & 0 deletions AGENTS.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
# Agent Notes

## Effect-First Patterns (Required)
- Command handlers must use `Command.action(...)` with `Effect` values.
- Do not use `actionAsync` anywhere.
- Prefer `Effect.gen` for multi-step flows and `Effect.sync` for pure sync handlers.
- Use `Effect.catchAll` at command boundaries to map runtime errors into structured CLI envelopes.

## API Layer Pattern
- Public module APIs use this shape:
1. Internal Promise implementation: `async function fooPromise(...)`.
2. Effect API: `export function fooEffect(...) => Effect.tryPromise(...)`.
3. Promise boundary wrapper (for compatibility): `export function foo(...) => Effect.runPromise(fooEffect(...))`.
- Keep `Effect.runPromise` usage at boundaries only (CLI entrypoint and compatibility wrappers).

## Imports and Dependencies
- Use `import * as Effect from "effect/Effect"` directly.
- Do not reintroduce `toEffect`/`effect-interop`; wrappers are explicit per function.
- Prefer static imports of `*Effect` APIs over dynamic imports in commands.

## Streaming / Long-Running Commands
- For streamed command output, emit:
1. start event,
2. progress/step events,
3. final result event,
4. mapped stream error event on failure.
- Keep stream callbacks best-effort and non-fatal.

## Verification Checklist
- `pnpm exec tsc --noEmit`
- `pnpm run build`
- `pnpm test tests/integration/cli-smoke.test.ts tests/unit/application-deploy-security.test.ts tests/unit/cli/deploy-stream.test.ts`
- `rg "export async function" src` should be `0`.
- `rg "toEffect|effect-interop" src` should be `0`.

## Migration Pitfalls Seen
- Name collisions: if a file already has a hand-written `*Effect` (example: deploy), do not route compatibility wrappers to the wrong effect signature.
- Codemods can break import blocks; run typecheck immediately after broad transforms.
- Keep command-level error emission consistent (`mapRuntimeError` + `nextActionsFor(...)`).
6 changes: 5 additions & 1 deletion CLAUDE.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,11 @@
# CLAUDE.md
# CLAUDE.md - GoDaddy CLI

This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.

## Local Development Ports

This is a command-line application that does not run on a network port.

# GoDaddy CLI Development Guide

## Commands
Expand Down
Loading