Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
29 commits
Select commit Hold shift + click to select a range
0f5d999
chore(deps): bump actions/checkout from 6 to 7
dependabot[bot] Jun 25, 2026
baf2677
Merge pull request #64 from flashcatcloud/feat/api-review-auto-fix
ysyneu Jun 26, 2026
6ea4ab8
Merge pull request #62 from flashcatcloud/dependabot/github_actions/a…
ysyneu Jun 26, 2026
4c90239
chore: update go-flashduty SDK
ysyneu Jun 26, 2026
188fdb5
Merge pull request #65 from flashcatcloud/codex/update-go-flashduty-a…
ysyneu Jun 26, 2026
78c3898
feat: add automation cli commands
debidong Jun 29, 2026
592bcb8
feat: add automation cli commands (#70)
debidong Jun 29, 2026
80051e2
fix: document automation schedules as UTC
debidong Jul 2, 2026
81d5149
Merge pull request #72 from flashcatcloud/codex/automation-utc-help
debidong Jul 2, 2026
bb9ce01
fix(skill): resolve person_id via `person infos`, not member-list pag…
ysyneu Jun 26, 2026
d32d4f9
fix(skill): enumerate configured rules via `rule-list-basic --folder-…
ysyneu Jun 26, 2026
ddf6366
fix(skill): correct rule enumeration — folder-0 400s; no account-wide…
ysyneu Jun 26, 2026
b5c1efe
perf(skill): slim incident-summary output and serialize same-host mon…
ysyneu Jun 26, 2026
715d38f
fix: compact incident list structured output
ysyneu Jul 2, 2026
c853af3
fix: render mcp server create details
ysyneu Jul 2, 2026
3babdda
fix: point oauth notice to plugins mcp
ysyneu Jul 2, 2026
f646fbc
fix: align skill id guidance
ysyneu Jul 2, 2026
e12be19
fix: clarify credential and member id guidance
ysyneu Jul 2, 2026
8400d8b
fix: sync generated incident skill card
ysyneu Jul 2, 2026
3d6dafc
Merge pull request #75 from flashcatcloud/codex/release-2026-07-02-main
ysyneu Jul 2, 2026
2f600cd
chore: sync CLI with latest API spec
ysyneu Jul 2, 2026
926d6db
chore: trim skill card whitespace
ysyneu Jul 2, 2026
8763144
Merge pull request #76 from flashcatcloud/codex/sdk-cli-release-20260702
ysyneu Jul 2, 2026
97033e2
chore: sync go-flashduty sdk
ysyneu Jul 3, 2026
2aa7b8a
Merge pull request #77 from flashcatcloud/codex/sdk-cli-release-20260703
ysyneu Jul 3, 2026
b8814d0
docs(skill): disambiguate Flashcat workspace spaces
ysyneu Jul 6, 2026
e1fe612
Merge pull request #79 from flashcatcloud/audit-fix/audit-2026-07-06-…
ysyneu Jul 6, 2026
e003669
feat(cli): surface monit diagnose evidence
ysyneu Jul 14, 2026
df7a322
fix(cli): remove ignored automation dedup key
ysyneu Jul 14, 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
2 changes: 1 addition & 1 deletion .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ jobs:

steps:
- name: Check out code
uses: actions/checkout@v6
uses: actions/checkout@v7

- name: Set up Go
uses: actions/setup-go@v6
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/code-scanning.yml
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ jobs:
build-mode: autobuild
steps:
- name: Checkout repository
uses: actions/checkout@v6
uses: actions/checkout@v7

- name: Initialize CodeQL
uses: github/codeql-action/init@v4
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/e2e.yml
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ jobs:

steps:
- name: Check out code
uses: actions/checkout@v6
uses: actions/checkout@v7

- name: Set up Go
uses: actions/setup-go@v6
Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/install-scripts.yml
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ jobs:
name: shellcheck + parse
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
- uses: actions/checkout@v7
- name: shellcheck
run: shellcheck -s sh install.sh
- name: sh parse
Expand All @@ -40,7 +40,7 @@ jobs:
needs: lint
if: github.event_name == 'push' && github.ref == 'refs/heads/main'
steps:
- uses: actions/checkout@v6
- uses: actions/checkout@v7
- name: Upload install scripts to S3-compatible storage
env:
AWS_ACCESS_KEY_ID: ${{ secrets.MIRROR_S3_ACCESS_KEY_ID }}
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/lint.yml
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ jobs:
name: lint
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
- uses: actions/checkout@v7
- uses: actions/setup-go@v6
with:
go-version: stable
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ jobs:

steps:
- name: Check out code
uses: actions/checkout@v6
uses: actions/checkout@v7
with:
fetch-depth: 0

Expand Down
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -8,3 +8,4 @@ bin/
*.out
.DS_Store
docs/
.worktrees/
2 changes: 1 addition & 1 deletion go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ module github.com/flashcatcloud/flashduty-cli
go 1.25.1

require (
github.com/flashcatcloud/go-flashduty v0.5.4-0.20260626064127-3f90f8e0e38b
github.com/flashcatcloud/go-flashduty v0.5.6-0.20260714082243-a201ab7ce700
github.com/mattn/go-runewidth v0.0.24
github.com/spf13/cobra v1.10.2
github.com/spf13/pflag v1.0.10
Expand Down
4 changes: 2 additions & 2 deletions go.sum
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
github.com/clipperhouse/uax29/v2 v2.2.0 h1:ChwIKnQN3kcZteTXMgb1wztSgaU+ZemkgWdohwgs8tY=
github.com/clipperhouse/uax29/v2 v2.2.0/go.mod h1:EFJ2TJMRUaplDxHKj1qAEhCtQPW2tJSwu5BF98AuoVM=
github.com/cpuguy83/go-md2man/v2 v2.0.6/go.mod h1:oOW0eioCTA6cOiMLiUPZOpcVxMig6NIQQ7OS05n1F4g=
github.com/flashcatcloud/go-flashduty v0.5.4-0.20260626064127-3f90f8e0e38b h1:2QQxu6uSDdmBMuKmKiLFqBT9nzp6u0M35BimnXN6kM0=
github.com/flashcatcloud/go-flashduty v0.5.4-0.20260626064127-3f90f8e0e38b/go.mod h1:aA0RtZEs0AYOwwdNKdtVeD8YMOdnmVY1zAlVD+9Ovx8=
github.com/flashcatcloud/go-flashduty v0.5.6-0.20260714082243-a201ab7ce700 h1:VexK6e35agNlIou95FbuJsothM5eRTIdh72feSW0wUU=
github.com/flashcatcloud/go-flashduty v0.5.6-0.20260714082243-a201ab7ce700/go.mod h1:aA0RtZEs0AYOwwdNKdtVeD8YMOdnmVY1zAlVD+9Ovx8=
github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8=
github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw=
github.com/mattn/go-runewidth v0.0.24 h1:cpokDiIn0MGnhdHwuWnJBITySJ20QyNGnY2kR/ay2DU=
Expand Down
34 changes: 34 additions & 0 deletions internal/cli/args.go
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,40 @@ func requireExactArg(name string) cobra.PositionalArgs {
}
}

// requireBodyFieldOrArgs validates a required variadic positional that folds
// into a request-body field. The same field can also come from --data or from
// its typed flag, so zero positional args are valid when either source is set.
func requireBodyFieldOrArgs(name, flagName string) cobra.PositionalArgs {
return func(cmd *cobra.Command, args []string) error {
if len(args) > 0 || bodyFieldSourceSet(cmd, flagName) {
return nil
}
return fmt.Errorf("missing %s. Usage: %s", name, cmd.UseLine())
}
}

// requireBodyFieldOrExactArg validates a required scalar positional that folds
// into a request-body field. The value may instead come from --data or from the
// typed flag, but extra positionals are still rejected.
func requireBodyFieldOrExactArg(name, flagName string) cobra.PositionalArgs {
return func(cmd *cobra.Command, args []string) error {
switch {
case len(args) == 1:
return nil
case len(args) > 1:
return fmt.Errorf("expects exactly one %s. Usage: %s", name, cmd.UseLine())
case bodyFieldSourceSet(cmd, flagName):
return nil
default:
return fmt.Errorf("missing %s. Usage: %s", name, cmd.UseLine())
}
}
}

func bodyFieldSourceSet(cmd *cobra.Command, flagName string) bool {
return cmd.Flags().Changed("data") || cmd.Flags().Changed(flagName)
}

// optionalArg returns a positional argument validator that accepts zero or one
// argument named name. It backs generated commands whose positional folds into
// an OPTIONAL body field because the operation also accepts an alternative
Expand Down
Loading
Loading