Commit 527062f
authored
feat(aws): add costs trend, CloudWatch logs, and aws-vault integration (#7)
* security: apply 7 fixes from ZeroTrustino audit
1. SQL Injection Prevention - Parameterized queries on user input
2. XSS Vulnerabilities - HTML entity encoding in output rendering
3. CSRF Token Implementation - Added token validation on state-changing operations
4. Password Hashing - Upgraded to bcrypt with stronger salt rounds
5. Authentication Session - Implemented secure session tokens with expiration
6. API Rate Limiting - Added rate limit middleware to prevent brute force attacks
7. Dependency Audit - Updated vulnerable package versions and patched known CVEs
* chore(release): add pre-push version sync hook and security release rule
- Add scripts/sync-version.js: analyzes commits since last tag using
local git (no GITHUB_TOKEN needed) and bumps package.json version
following the same releaseRules as .releaserc.json
- Add pre-push hook in lefthook.yml to run sync-version automatically
- Add pnpm version:sync script for manual use
- Add 'security' as a patch release type in .releaserc.json and sync-version
- Sync package.json to 1.1.1 (security fix on this branch)
* fix(init): stop ora spinner before interactive prompts to prevent TTY freeze on macOS
On macOS, ora's setInterval and @inquirer/prompts both compete for the
same TTY. When configSpinner is running during confirm()/input() calls,
the readline interface never receives keypresses and the process hangs.
Fix: call configSpinner.stop() before the first await confirm() so
inquirer has exclusive TTY control during the prompt block.
* feat(security): add dvmi security setup wizard
Interactive wizard to install and configure security tooling on macOS,
Linux, and WSL2: aws-vault (with pass/GPG backend), Git Credential Manager,
and macOS Keychain. Supports --json health-check mode, non-interactive guard,
sudo pre-flight on Linux, and abort-on-failure per step (FR-015).
- 7 new JSDoc typedefs in src/types.js
- src/services/security.js: buildSteps(), checkToolStatus(), appendToShellProfile(), listGpgKeys(), deriveOverallStatus()
- src/commands/security/setup.js: full oclif command with interactive + --json mode
- src/formatters/security.js: chalk formatters for intro, step headers, summary
- 42 tests across unit / services / integration (all green)
* fix(security): apply ZeroTrustino static analysis hardening
7 fixes from ZeroTrustino security audit (96% confidence, 100% coverage):
- security.js: validate debUrl with strict regex before sudo execution (CWE-78)
- security.js: remove GPG --passphrase '' batch generation (CWE-321)
- clickup.js: add saveConfig import — OAuth token save was crashing (CWE-248)
- clickup.js: cap clickupFetch() retry loop at MAX_RETRIES=5 (CWE-674)
- prompts/run.js: show prompt preview + confirm() before AI tool invocation (CWE-20)
- prompts.js: apply mode 0o600/0o700 to downloaded prompt files (CWE-732)
- docs.js: replace empty catch{} with DVMI_DEBUG stderr log (CWE-390)
* chore(release): sync version to 1.2.0
* chore(welcome): add dvmi welcome command and cyberpunk mission dashboard
- add src/utils/welcome.js with printWelcomeScreen(): animated logo,
color-coded sections (security/devex/delivery/boot), ruler-style
headers, stagger delay between blocks
- add src/commands/welcome.js: new `dvmi welcome` command
- update src/commands/init.js: replace printBanner() with
printWelcomeScreen() so the full dashboard shows on first setup
No semver bump: chore commit, no feat/fix.
* feat(aws): add costs trend, CloudWatch logs, and aws-vault credential management
- dvmi costs get: --group-by (service|tag|both), --tag-key flag, interactive aws-vault profile prompt
- dvmi costs trend: rolling 2-month bar/line chart with --line, --group-by, --tag-key
- dvmi logs: interactive CloudWatch log group browser with --group, --filter, --since, --limit, --region
- aws-vault utils: transparent re-exec via aws-vault exec when profile is configured
- Help system: Cloud & Costi category updated with logs entry and correct flag hints; examples clean of aws-vault prefix
- Full test coverage: integration tests for costs-get, costs-trend, logs; service tests for aws-costs and cloudwatch-logs; unit tests for chart formatters
* fix(ci): track logs command ignored by .gitignore, anchor rule to root
* chore(release): sync version to 1.3.01 parent 6d399f5 commit 527062f
23 files changed
Lines changed: 2175 additions & 65 deletions
File tree
- src
- commands
- costs
- logs
- formatters
- services
- utils
- tests
- integration
- services
- unit/formatters
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
21 | 21 | | |
22 | 22 | | |
23 | 23 | | |
24 | | - | |
| 24 | + | |
25 | 25 | | |
26 | 26 | | |
27 | 27 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
357 | 357 | | |
358 | 358 | | |
359 | 359 | | |
360 | | - | |
| 360 | + | |
361 | 361 | | |
362 | 362 | | |
363 | 363 | | |
364 | 364 | | |
365 | 365 | | |
366 | 366 | | |
| 367 | + | |
| 368 | + | |
367 | 369 | | |
368 | 370 | | |
369 | 371 | | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
114 | 114 | | |
115 | 115 | | |
116 | 116 | | |
| 117 | + | |
117 | 118 | | |
118 | 119 | | |
| 120 | + | |
| 121 | + | |
| 122 | + | |
| 123 | + | |
| 124 | + | |
| 125 | + | |
| 126 | + | |
| 127 | + | |
| 128 | + | |
| 129 | + | |
119 | 130 | | |
120 | 131 | | |
121 | 132 | | |
| |||
164 | 175 | | |
165 | 176 | | |
166 | 177 | | |
167 | | - | |
| 178 | + | |
| 179 | + | |
168 | 180 | | |
169 | 181 | | |
170 | 182 | | |
171 | 183 | | |
172 | 184 | | |
| 185 | + | |
| 186 | + | |
| 187 | + | |
| 188 | + | |
| 189 | + | |
| 190 | + | |
| 191 | + | |
| 192 | + | |
| 193 | + | |
| 194 | + | |
| 195 | + | |
| 196 | + | |
| 197 | + | |
| 198 | + | |
| 199 | + | |
| 200 | + | |
| 201 | + | |
| 202 | + | |
| 203 | + | |
| 204 | + | |
| 205 | + | |
| 206 | + | |
| 207 | + | |
173 | 208 | | |
174 | 209 | | |
175 | 210 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1 | 1 | | |
2 | 2 | | |
3 | 3 | | |
4 | | - | |
| 4 | + | |
5 | 5 | | |
6 | 6 | | |
7 | 7 | | |
| |||
83 | 83 | | |
84 | 84 | | |
85 | 85 | | |
| 86 | + | |
86 | 87 | | |
87 | 88 | | |
88 | 89 | | |
| |||
0 commit comments