devvami 1.4.1 → 1.5.0
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.
- package/README.md +7 -0
- package/oclif.manifest.json +41 -1
- package/package.json +2 -1
- package/src/commands/auth/login.js +20 -16
- package/src/commands/changelog.js +12 -12
- package/src/commands/costs/get.js +14 -24
- package/src/commands/costs/trend.js +13 -24
- package/src/commands/create/repo.js +72 -54
- package/src/commands/docs/list.js +29 -25
- package/src/commands/docs/projects.js +58 -24
- package/src/commands/docs/read.js +56 -39
- package/src/commands/docs/search.js +37 -25
- package/src/commands/doctor.js +37 -35
- package/src/commands/dotfiles/add.js +51 -39
- package/src/commands/dotfiles/setup.js +62 -33
- package/src/commands/dotfiles/status.js +18 -18
- package/src/commands/dotfiles/sync.js +62 -46
- package/src/commands/init.js +143 -132
- package/src/commands/logs/index.js +10 -16
- package/src/commands/open.js +12 -12
- package/src/commands/pipeline/logs.js +8 -11
- package/src/commands/pipeline/rerun.js +21 -16
- package/src/commands/pipeline/status.js +28 -24
- package/src/commands/pr/create.js +40 -27
- package/src/commands/pr/detail.js +9 -7
- package/src/commands/pr/review.js +18 -19
- package/src/commands/pr/status.js +27 -21
- package/src/commands/prompts/browse.js +15 -15
- package/src/commands/prompts/download.js +15 -16
- package/src/commands/prompts/install-speckit.js +11 -12
- package/src/commands/prompts/list.js +12 -12
- package/src/commands/prompts/run.js +16 -19
- package/src/commands/repo/list.js +57 -41
- package/src/commands/search.js +20 -18
- package/src/commands/security/setup.js +38 -34
- package/src/commands/sync-config-ai/index.js +143 -0
- package/src/commands/tasks/assigned.js +43 -33
- package/src/commands/tasks/list.js +43 -33
- package/src/commands/tasks/today.js +32 -30
- package/src/commands/upgrade.js +18 -17
- package/src/commands/vuln/detail.js +8 -8
- package/src/commands/vuln/scan.js +95 -21
- package/src/commands/vuln/search.js +23 -18
- package/src/commands/welcome.js +2 -2
- package/src/commands/whoami.js +19 -23
- package/src/formatters/ai-config.js +127 -0
- package/src/formatters/charts.js +6 -23
- package/src/formatters/cost.js +1 -7
- package/src/formatters/dotfiles.js +48 -19
- package/src/formatters/markdown.js +11 -6
- package/src/formatters/openapi.js +7 -9
- package/src/formatters/prompts.js +69 -78
- package/src/formatters/security.js +2 -2
- package/src/formatters/status.js +1 -1
- package/src/formatters/table.js +1 -3
- package/src/formatters/vuln.js +33 -20
- package/src/help.js +162 -164
- package/src/hooks/init.js +1 -3
- package/src/hooks/postrun.js +5 -7
- package/src/index.js +1 -1
- package/src/services/ai-config-store.js +318 -0
- package/src/services/ai-env-deployer.js +444 -0
- package/src/services/ai-env-scanner.js +242 -0
- package/src/services/audit-detector.js +2 -2
- package/src/services/audit-runner.js +40 -31
- package/src/services/auth.js +9 -9
- package/src/services/awesome-copilot.js +7 -4
- package/src/services/aws-costs.js +22 -22
- package/src/services/clickup.js +26 -26
- package/src/services/cloudwatch-logs.js +5 -9
- package/src/services/config.js +13 -13
- package/src/services/docs.js +19 -20
- package/src/services/dotfiles.js +149 -51
- package/src/services/github.js +22 -24
- package/src/services/nvd.js +21 -31
- package/src/services/platform.js +2 -2
- package/src/services/prompts.js +23 -35
- package/src/services/security.js +135 -61
- package/src/services/shell.js +4 -4
- package/src/services/skills-sh.js +3 -9
- package/src/services/speckit.js +4 -7
- package/src/services/version-check.js +10 -10
- package/src/types.js +85 -0
- package/src/utils/aws-vault.js +18 -41
- package/src/utils/banner.js +5 -7
- package/src/utils/errors.js +42 -46
- package/src/utils/frontmatter.js +4 -4
- package/src/utils/gradient.js +18 -16
- package/src/utils/open-browser.js +3 -3
- package/src/utils/tui/form.js +1006 -0
- package/src/utils/tui/modal.js +15 -14
- package/src/utils/tui/navigable-table.js +25 -17
- package/src/utils/tui/tab-tui.js +800 -0
- package/src/utils/typewriter.js +3 -3
- package/src/utils/welcome.js +18 -21
- package/src/validators/repo-name.js +2 -2
package/src/utils/typewriter.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import readline from 'node:readline'
|
|
2
|
-
import {
|
|
2
|
+
import {isAnimationEnabled, BRAND_GRADIENT, gradientText} from './gradient.js'
|
|
3
3
|
|
|
4
4
|
/**
|
|
5
5
|
* Stampa testo con effetto typewriter (lettera per lettera).
|
|
@@ -12,7 +12,7 @@ import { isAnimationEnabled, BRAND_GRADIENT, gradientText } from './gradient.js'
|
|
|
12
12
|
* @returns {Promise<void>}
|
|
13
13
|
*/
|
|
14
14
|
export async function typewriter(text, opts = {}) {
|
|
15
|
-
const {
|
|
15
|
+
const {interval = 30, gradient} = opts
|
|
16
16
|
|
|
17
17
|
if (!isAnimationEnabled) {
|
|
18
18
|
const out = gradient ? gradientText(text, gradient) : text
|
|
@@ -44,5 +44,5 @@ export async function typewriter(text, opts = {}) {
|
|
|
44
44
|
* @returns {Promise<void>}
|
|
45
45
|
*/
|
|
46
46
|
export async function typewriterLine(text, gradient = BRAND_GRADIENT) {
|
|
47
|
-
return typewriter(text, {
|
|
47
|
+
return typewriter(text, {gradient, interval: 25})
|
|
48
48
|
}
|
package/src/utils/welcome.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import chalk from 'chalk'
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
2
|
+
import {printBanner} from './banner.js'
|
|
3
|
+
import {isColorEnabled} from './gradient.js'
|
|
4
|
+
import {typewriterLine} from './typewriter.js'
|
|
5
5
|
|
|
6
6
|
// ─── Constants ────────────────────────────────────────────────────────────────
|
|
7
7
|
|
|
@@ -14,21 +14,18 @@ const nl = () => process.stdout.write('\n')
|
|
|
14
14
|
|
|
15
15
|
const p = isColorEnabled
|
|
16
16
|
? {
|
|
17
|
-
sep:
|
|
18
|
-
cyan:
|
|
19
|
-
green:
|
|
20
|
-
pink:
|
|
21
|
-
gold:
|
|
17
|
+
sep: (t) => chalk.hex('#4A9EFF').dim(t),
|
|
18
|
+
cyan: (t) => chalk.hex('#00D4FF').bold(t),
|
|
19
|
+
green: (t) => chalk.hex('#00FF88').bold(t),
|
|
20
|
+
pink: (t) => chalk.hex('#FF3399').bold(t),
|
|
21
|
+
gold: (t) => chalk.hex('#FFD700').bold(t),
|
|
22
22
|
orange: (t) => chalk.hex('#FF6B2B').bold(t),
|
|
23
|
-
blue:
|
|
24
|
-
white:
|
|
25
|
-
dim:
|
|
23
|
+
blue: (t) => chalk.hex('#4A9EFF')(t),
|
|
24
|
+
white: (t) => chalk.white(t),
|
|
25
|
+
dim: (t) => chalk.dim(t),
|
|
26
26
|
}
|
|
27
27
|
: Object.fromEntries(
|
|
28
|
-
['sep', 'cyan', 'green', 'pink', 'gold', 'orange', 'blue', 'white', 'dim'].map((k) => [
|
|
29
|
-
k,
|
|
30
|
-
(t) => t,
|
|
31
|
-
]),
|
|
28
|
+
['sep', 'cyan', 'green', 'pink', 'gold', 'orange', 'blue', 'white', 'dim'].map((k) => [k, (t) => t]),
|
|
32
29
|
)
|
|
33
30
|
|
|
34
31
|
// ─── Helpers ─────────────────────────────────────────────────────────────────
|
|
@@ -151,13 +148,13 @@ export async function printWelcomeScreen(version = '') {
|
|
|
151
148
|
|
|
152
149
|
/** @type {Array<[string, string]>} */
|
|
153
150
|
const commands = [
|
|
154
|
-
['dvmi init',
|
|
155
|
-
['dvmi auth login',
|
|
156
|
-
['dvmi pr status',
|
|
151
|
+
['dvmi init', 'configure your workspace'],
|
|
152
|
+
['dvmi auth login', 'connect GitHub & ClickUp'],
|
|
153
|
+
['dvmi pr status', 'open pull requests'],
|
|
157
154
|
['dvmi pipeline status', 'CI/CD health check'],
|
|
158
|
-
['dvmi tasks today',
|
|
159
|
-
['dvmi costs get',
|
|
160
|
-
['dvmi doctor',
|
|
155
|
+
['dvmi tasks today', 'focus mode: what to ship today'],
|
|
156
|
+
['dvmi costs get', 'AWS bill reality check'],
|
|
157
|
+
['dvmi doctor', 'diagnose config issues'],
|
|
161
158
|
]
|
|
162
159
|
for (const [cmd, comment] of commands) {
|
|
163
160
|
out(' ' + p.blue('$ ' + cmd.padEnd(24)) + p.dim('# ' + comment))
|
|
@@ -15,7 +15,7 @@ const MAX_LENGTH = 100
|
|
|
15
15
|
*/
|
|
16
16
|
export function validateRepoName(name) {
|
|
17
17
|
if (!name || name.length === 0) {
|
|
18
|
-
return {
|
|
18
|
+
return {valid: false, error: 'Repository name cannot be empty'}
|
|
19
19
|
}
|
|
20
20
|
|
|
21
21
|
if (name.length > MAX_LENGTH) {
|
|
@@ -38,5 +38,5 @@ export function validateRepoName(name) {
|
|
|
38
38
|
}
|
|
39
39
|
}
|
|
40
40
|
|
|
41
|
-
return {
|
|
41
|
+
return {valid: true}
|
|
42
42
|
}
|