@agentuity/cli 0.0.51 → 0.0.53
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/dist/api.js +68 -0
- package/dist/api.js.map +1 -0
- package/dist/auth.js +225 -0
- package/dist/auth.js.map +1 -0
- package/dist/banner.js +35 -0
- package/dist/banner.js.map +1 -0
- package/dist/cli-logger.js +72 -0
- package/dist/cli-logger.js.map +1 -0
- package/dist/cli.js +822 -0
- package/dist/cli.js.map +1 -0
- package/dist/cmd/ai/capabilities/index.js +10 -0
- package/dist/cmd/ai/capabilities/index.js.map +1 -0
- package/dist/cmd/ai/capabilities/show.js +221 -0
- package/dist/cmd/ai/capabilities/show.js.map +1 -0
- package/dist/cmd/ai/index.js +11 -0
- package/dist/cmd/ai/index.js.map +1 -0
- package/dist/cmd/ai/prompt/index.js +10 -0
- package/dist/cmd/ai/prompt/index.js.map +1 -0
- package/dist/cmd/ai/prompt/llm.js +365 -0
- package/dist/cmd/ai/prompt/llm.js.map +1 -0
- package/dist/cmd/ai/schema/index.js +10 -0
- package/dist/cmd/ai/schema/index.js.map +1 -0
- package/dist/cmd/ai/schema/show.js +23 -0
- package/dist/cmd/ai/schema/show.js.map +1 -0
- package/dist/cmd/auth/api.js +85 -0
- package/dist/cmd/auth/api.js.map +1 -0
- package/dist/cmd/auth/index.js +13 -0
- package/dist/cmd/auth/index.js.map +1 -0
- package/dist/cmd/auth/login.js +84 -0
- package/dist/cmd/auth/login.js.map +1 -0
- package/dist/cmd/auth/logout.js +17 -0
- package/dist/cmd/auth/logout.js.map +1 -0
- package/dist/cmd/auth/signup.js +55 -0
- package/dist/cmd/auth/signup.js.map +1 -0
- package/dist/cmd/auth/ssh/add.js +239 -0
- package/dist/cmd/auth/ssh/add.js.map +1 -0
- package/dist/cmd/auth/ssh/api.js +53 -0
- package/dist/cmd/auth/ssh/api.js.map +1 -0
- package/dist/cmd/auth/ssh/delete.js +126 -0
- package/dist/cmd/auth/ssh/delete.js.map +1 -0
- package/dist/cmd/auth/ssh/index.js +11 -0
- package/dist/cmd/auth/ssh/index.js.map +1 -0
- package/dist/cmd/auth/ssh/list.js +70 -0
- package/dist/cmd/auth/ssh/list.js.map +1 -0
- package/dist/cmd/auth/whoami.js +68 -0
- package/dist/cmd/auth/whoami.js.map +1 -0
- package/dist/cmd/build/ast.js +608 -0
- package/dist/cmd/build/ast.js.map +1 -0
- package/dist/cmd/build/ast.test.js +389 -0
- package/dist/cmd/build/ast.test.js.map +1 -0
- package/dist/cmd/build/bundler.js +304 -0
- package/dist/cmd/build/bundler.js.map +1 -0
- package/dist/cmd/build/file.js +10 -0
- package/dist/cmd/build/file.js.map +1 -0
- package/dist/cmd/build/fix-duplicate-exports.js +167 -0
- package/dist/cmd/build/fix-duplicate-exports.js.map +1 -0
- package/dist/cmd/build/fix-duplicate-exports.test.js +300 -0
- package/dist/cmd/build/fix-duplicate-exports.test.js.map +1 -0
- package/dist/cmd/build/index.d.ts.map +1 -1
- package/dist/cmd/build/index.js +81 -0
- package/dist/cmd/build/index.js.map +1 -0
- package/dist/cmd/build/patch/_util.js +42 -0
- package/dist/cmd/build/patch/_util.js.map +1 -0
- package/dist/cmd/build/patch/aisdk.js +65 -0
- package/dist/cmd/build/patch/aisdk.js.map +1 -0
- package/dist/cmd/build/patch/index.js +97 -0
- package/dist/cmd/build/patch/index.js.map +1 -0
- package/dist/cmd/build/patch/llm.js +18 -0
- package/dist/cmd/build/patch/llm.js.map +1 -0
- package/dist/cmd/build/plugin.d.ts.map +1 -1
- package/dist/cmd/build/plugin.js +581 -0
- package/dist/cmd/build/plugin.js.map +1 -0
- package/dist/cmd/cloud/agents/index.js +133 -0
- package/dist/cmd/cloud/agents/index.js.map +1 -0
- package/dist/cmd/cloud/deploy.js +341 -0
- package/dist/cmd/cloud/deploy.js.map +1 -0
- package/dist/cmd/cloud/deployment/index.js +20 -0
- package/dist/cmd/cloud/deployment/index.js.map +1 -0
- package/dist/cmd/cloud/deployment/list.js +89 -0
- package/dist/cmd/cloud/deployment/list.js.map +1 -0
- package/dist/cmd/cloud/deployment/remove.js +60 -0
- package/dist/cmd/cloud/deployment/remove.js.map +1 -0
- package/dist/cmd/cloud/deployment/rollback.js +80 -0
- package/dist/cmd/cloud/deployment/rollback.js.map +1 -0
- package/dist/cmd/cloud/deployment/show.js +106 -0
- package/dist/cmd/cloud/deployment/show.js.map +1 -0
- package/dist/cmd/cloud/deployment/undeploy.js +45 -0
- package/dist/cmd/cloud/deployment/undeploy.js.map +1 -0
- package/dist/cmd/cloud/deployment/utils.js +10 -0
- package/dist/cmd/cloud/deployment/utils.js.map +1 -0
- package/dist/cmd/cloud/domain.js +77 -0
- package/dist/cmd/cloud/domain.js.map +1 -0
- package/dist/cmd/cloud/env/delete.js +50 -0
- package/dist/cmd/cloud/env/delete.js.map +1 -0
- package/dist/cmd/cloud/env/get.js +65 -0
- package/dist/cmd/cloud/env/get.js.map +1 -0
- package/dist/cmd/cloud/env/import.js +113 -0
- package/dist/cmd/cloud/env/import.js.map +1 -0
- package/dist/cmd/cloud/env/index.js +24 -0
- package/dist/cmd/cloud/env/index.js.map +1 -0
- package/dist/cmd/cloud/env/list.js +58 -0
- package/dist/cmd/cloud/env/list.js.map +1 -0
- package/dist/cmd/cloud/env/pull.js +81 -0
- package/dist/cmd/cloud/env/pull.js.map +1 -0
- package/dist/cmd/cloud/env/push.js +61 -0
- package/dist/cmd/cloud/env/push.js.map +1 -0
- package/dist/cmd/cloud/env/set.js +73 -0
- package/dist/cmd/cloud/env/set.js.map +1 -0
- package/dist/cmd/cloud/index.js +31 -0
- package/dist/cmd/cloud/index.js.map +1 -0
- package/dist/cmd/cloud/keyvalue/create-namespace.js +41 -0
- package/dist/cmd/cloud/keyvalue/create-namespace.js.map +1 -0
- package/dist/cmd/cloud/keyvalue/delete-namespace.js +64 -0
- package/dist/cmd/cloud/keyvalue/delete-namespace.js.map +1 -0
- package/dist/cmd/cloud/keyvalue/delete.js +47 -0
- package/dist/cmd/cloud/keyvalue/delete.js.map +1 -0
- package/dist/cmd/cloud/keyvalue/get.js +65 -0
- package/dist/cmd/cloud/keyvalue/get.js.map +1 -0
- package/dist/cmd/cloud/keyvalue/index.js +32 -0
- package/dist/cmd/cloud/keyvalue/index.js.map +1 -0
- package/dist/cmd/cloud/keyvalue/keys.js +50 -0
- package/dist/cmd/cloud/keyvalue/keys.js.map +1 -0
- package/dist/cmd/cloud/keyvalue/list-namespaces.js +37 -0
- package/dist/cmd/cloud/keyvalue/list-namespaces.js.map +1 -0
- package/dist/cmd/cloud/keyvalue/repl.js +277 -0
- package/dist/cmd/cloud/keyvalue/repl.js.map +1 -0
- package/dist/cmd/cloud/keyvalue/search.js +72 -0
- package/dist/cmd/cloud/keyvalue/search.js.map +1 -0
- package/dist/cmd/cloud/keyvalue/set.js +59 -0
- package/dist/cmd/cloud/keyvalue/set.js.map +1 -0
- package/dist/cmd/cloud/keyvalue/stats.js +82 -0
- package/dist/cmd/cloud/keyvalue/stats.js.map +1 -0
- package/dist/cmd/cloud/keyvalue/util.js +19 -0
- package/dist/cmd/cloud/keyvalue/util.js.map +1 -0
- package/dist/cmd/cloud/objectstore/delete-bucket.js +66 -0
- package/dist/cmd/cloud/objectstore/delete-bucket.js.map +1 -0
- package/dist/cmd/cloud/objectstore/delete.js +56 -0
- package/dist/cmd/cloud/objectstore/delete.js.map +1 -0
- package/dist/cmd/cloud/objectstore/get.js +64 -0
- package/dist/cmd/cloud/objectstore/get.js.map +1 -0
- package/dist/cmd/cloud/objectstore/index.js +28 -0
- package/dist/cmd/cloud/objectstore/index.js.map +1 -0
- package/dist/cmd/cloud/objectstore/list-buckets.js +37 -0
- package/dist/cmd/cloud/objectstore/list-buckets.js.map +1 -0
- package/dist/cmd/cloud/objectstore/list-keys.js +52 -0
- package/dist/cmd/cloud/objectstore/list-keys.js.map +1 -0
- package/dist/cmd/cloud/objectstore/put.js +57 -0
- package/dist/cmd/cloud/objectstore/put.js.map +1 -0
- package/dist/cmd/cloud/objectstore/repl.js +219 -0
- package/dist/cmd/cloud/objectstore/repl.js.map +1 -0
- package/dist/cmd/cloud/objectstore/url.js +55 -0
- package/dist/cmd/cloud/objectstore/url.js.map +1 -0
- package/dist/cmd/cloud/objectstore/util.js +18 -0
- package/dist/cmd/cloud/objectstore/util.js.map +1 -0
- package/dist/cmd/cloud/resource/add.js +70 -0
- package/dist/cmd/cloud/resource/add.js.map +1 -0
- package/dist/cmd/cloud/resource/delete.js +126 -0
- package/dist/cmd/cloud/resource/delete.js.map +1 -0
- package/dist/cmd/cloud/resource/index.js +12 -0
- package/dist/cmd/cloud/resource/index.js.map +1 -0
- package/dist/cmd/cloud/resource/list.js +89 -0
- package/dist/cmd/cloud/resource/list.js.map +1 -0
- package/dist/cmd/cloud/scp/download.js +72 -0
- package/dist/cmd/cloud/scp/download.js.map +1 -0
- package/dist/cmd/cloud/scp/index.js +10 -0
- package/dist/cmd/cloud/scp/index.js.map +1 -0
- package/dist/cmd/cloud/scp/upload.js +75 -0
- package/dist/cmd/cloud/scp/upload.js.map +1 -0
- package/dist/cmd/cloud/secret/delete.js +50 -0
- package/dist/cmd/cloud/secret/delete.js.map +1 -0
- package/dist/cmd/cloud/secret/get.js +69 -0
- package/dist/cmd/cloud/secret/get.js.map +1 -0
- package/dist/cmd/cloud/secret/import.js +88 -0
- package/dist/cmd/cloud/secret/import.js.map +1 -0
- package/dist/cmd/cloud/secret/index.js +24 -0
- package/dist/cmd/cloud/secret/index.js.map +1 -0
- package/dist/cmd/cloud/secret/list.js +58 -0
- package/dist/cmd/cloud/secret/list.js.map +1 -0
- package/dist/cmd/cloud/secret/pull.js +81 -0
- package/dist/cmd/cloud/secret/pull.js.map +1 -0
- package/dist/cmd/cloud/secret/push.js +61 -0
- package/dist/cmd/cloud/secret/push.js.map +1 -0
- package/dist/cmd/cloud/secret/set.js +57 -0
- package/dist/cmd/cloud/secret/set.js.map +1 -0
- package/dist/cmd/cloud/session/get.d.ts.map +1 -1
- package/dist/cmd/cloud/session/get.js +155 -0
- package/dist/cmd/cloud/session/get.js.map +1 -0
- package/dist/cmd/cloud/session/index.js +11 -0
- package/dist/cmd/cloud/session/index.js.map +1 -0
- package/dist/cmd/cloud/session/list.js +132 -0
- package/dist/cmd/cloud/session/list.js.map +1 -0
- package/dist/cmd/cloud/session/logs.js +56 -0
- package/dist/cmd/cloud/session/logs.js.map +1 -0
- package/dist/cmd/cloud/ssh.js +67 -0
- package/dist/cmd/cloud/ssh.js.map +1 -0
- package/dist/cmd/dev/agents.js +103 -0
- package/dist/cmd/dev/agents.js.map +1 -0
- package/dist/cmd/dev/api.js +26 -0
- package/dist/cmd/dev/api.js.map +1 -0
- package/dist/cmd/dev/download.js +77 -0
- package/dist/cmd/dev/download.js.map +1 -0
- package/dist/cmd/dev/index.js +745 -0
- package/dist/cmd/dev/index.js.map +1 -0
- package/dist/cmd/dev/sync.js +229 -0
- package/dist/cmd/dev/sync.js.map +1 -0
- package/dist/cmd/dev/templates.js +75 -0
- package/dist/cmd/dev/templates.js.map +1 -0
- package/dist/cmd/index.js +49 -0
- package/dist/cmd/index.js.map +1 -0
- package/dist/cmd/profile/create.js +89 -0
- package/dist/cmd/profile/create.js.map +1 -0
- package/dist/cmd/profile/delete.js +63 -0
- package/dist/cmd/profile/delete.js.map +1 -0
- package/dist/cmd/profile/index.js +14 -0
- package/dist/cmd/profile/index.js.map +1 -0
- package/dist/cmd/profile/list.js +28 -0
- package/dist/cmd/profile/list.js.map +1 -0
- package/dist/cmd/profile/show.js +68 -0
- package/dist/cmd/profile/show.js.map +1 -0
- package/dist/cmd/profile/use.js +37 -0
- package/dist/cmd/profile/use.js.map +1 -0
- package/dist/cmd/project/create.js +92 -0
- package/dist/cmd/project/create.js.map +1 -0
- package/dist/cmd/project/delete.js +117 -0
- package/dist/cmd/project/delete.js.map +1 -0
- package/dist/cmd/project/download.js +217 -0
- package/dist/cmd/project/download.js.map +1 -0
- package/dist/cmd/project/index.js +12 -0
- package/dist/cmd/project/index.js.map +1 -0
- package/dist/cmd/project/list.js +51 -0
- package/dist/cmd/project/list.js.map +1 -0
- package/dist/cmd/project/show.js +54 -0
- package/dist/cmd/project/show.js.map +1 -0
- package/dist/cmd/project/template-flow.js +315 -0
- package/dist/cmd/project/template-flow.js.map +1 -0
- package/dist/cmd/project/templates.js +31 -0
- package/dist/cmd/project/templates.js.map +1 -0
- package/dist/cmd/repl/index.js +444 -0
- package/dist/cmd/repl/index.js.map +1 -0
- package/dist/cmd/version/index.js +29 -0
- package/dist/cmd/version/index.js.map +1 -0
- package/dist/command-prefix.js +37 -0
- package/dist/command-prefix.js.map +1 -0
- package/dist/config.js +536 -0
- package/dist/config.js.map +1 -0
- package/dist/crypto/box.js +382 -0
- package/dist/crypto/box.js.map +1 -0
- package/dist/crypto/box.test.js +317 -0
- package/dist/crypto/box.test.js.map +1 -0
- package/dist/download.js +64 -0
- package/dist/download.js.map +1 -0
- package/dist/env-util.js +219 -0
- package/dist/env-util.js.map +1 -0
- package/dist/env-util.test.js +146 -0
- package/dist/env-util.test.js.map +1 -0
- package/dist/errors.js +177 -0
- package/dist/errors.js.map +1 -0
- package/dist/explain.js +90 -0
- package/dist/explain.js.map +1 -0
- package/dist/index.js +23 -0
- package/dist/index.js.map +1 -0
- package/dist/json.js +29 -0
- package/dist/json.js.map +1 -0
- package/dist/legacy-check.js +104 -0
- package/dist/legacy-check.js.map +1 -0
- package/dist/output.js +207 -0
- package/dist/output.js.map +1 -0
- package/dist/repl.js +1176 -0
- package/dist/repl.js.map +1 -0
- package/dist/runtime.js +19 -0
- package/dist/runtime.js.map +1 -0
- package/dist/schema-generator.js +289 -0
- package/dist/schema-generator.js.map +1 -0
- package/dist/schema-parser.js +145 -0
- package/dist/schema-parser.js.map +1 -0
- package/dist/sound.js +44 -0
- package/dist/sound.js.map +1 -0
- package/dist/steps.js +293 -0
- package/dist/steps.js.map +1 -0
- package/dist/terminal.js +130 -0
- package/dist/terminal.js.map +1 -0
- package/dist/tui.js +1124 -0
- package/dist/tui.js.map +1 -0
- package/dist/types.js +163 -0
- package/dist/types.js.map +1 -0
- package/dist/utils/detectSubagent.js +25 -0
- package/dist/utils/detectSubagent.js.map +1 -0
- package/dist/utils/format.js +21 -0
- package/dist/utils/format.js.map +1 -0
- package/dist/utils/zip.js +33 -0
- package/dist/utils/zip.js.map +1 -0
- package/dist/version.js +24 -0
- package/dist/version.js.map +1 -0
- package/package.json +6 -6
- package/src/banner.ts +1 -1
- package/src/cmd/build/index.ts +18 -22
- package/src/cmd/build/plugin.ts +95 -64
- package/src/cmd/cloud/session/get.ts +20 -14
- package/src/cmd/cloud/session/list.ts +1 -1
package/dist/steps.js
ADDED
|
@@ -0,0 +1,293 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Step progress UI component for showing animated steps with callbacks
|
|
3
|
+
*
|
|
4
|
+
* Displays a checklist where each step animates in place with a spinner,
|
|
5
|
+
* then shows success, skipped, or error icon based on callback result.
|
|
6
|
+
*/
|
|
7
|
+
/**
|
|
8
|
+
* Get the appropriate exit function (Bun.exit or process.exit)
|
|
9
|
+
*/
|
|
10
|
+
function getExitFn() {
|
|
11
|
+
const bunExit = globalThis.Bun?.exit;
|
|
12
|
+
return typeof bunExit === 'function' ? bunExit : process.exit.bind(process);
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Install interrupt handlers (SIGINT/SIGTERM + TTY raw mode for Ctrl+C)
|
|
16
|
+
*/
|
|
17
|
+
function installInterruptHandlers(onInterrupt) {
|
|
18
|
+
const cleanupFns = [];
|
|
19
|
+
const sigHandler = () => onInterrupt();
|
|
20
|
+
process.on('SIGINT', sigHandler);
|
|
21
|
+
process.on('SIGTERM', sigHandler);
|
|
22
|
+
cleanupFns.push(() => {
|
|
23
|
+
process.off('SIGINT', sigHandler);
|
|
24
|
+
process.off('SIGTERM', sigHandler);
|
|
25
|
+
});
|
|
26
|
+
// TTY raw mode fallback for Bun/Windows/inconsistent SIGINT delivery
|
|
27
|
+
const stdin = process.stdin;
|
|
28
|
+
if (stdin && stdin.isTTY) {
|
|
29
|
+
const onData = (buf) => {
|
|
30
|
+
// Ctrl+C is ASCII ETX (0x03)
|
|
31
|
+
if (buf.length === 1 && buf[0] === 0x03)
|
|
32
|
+
onInterrupt();
|
|
33
|
+
};
|
|
34
|
+
try {
|
|
35
|
+
stdin.setRawMode?.(true);
|
|
36
|
+
}
|
|
37
|
+
catch {
|
|
38
|
+
// ignore if not supported
|
|
39
|
+
}
|
|
40
|
+
stdin.resume?.();
|
|
41
|
+
stdin.on('data', onData);
|
|
42
|
+
cleanupFns.push(() => {
|
|
43
|
+
stdin.off?.('data', onData);
|
|
44
|
+
stdin.pause?.();
|
|
45
|
+
try {
|
|
46
|
+
stdin.setRawMode?.(false);
|
|
47
|
+
}
|
|
48
|
+
catch {
|
|
49
|
+
// ignore if setRawMode fails
|
|
50
|
+
}
|
|
51
|
+
});
|
|
52
|
+
}
|
|
53
|
+
return () => {
|
|
54
|
+
for (const fn of cleanupFns.splice(0))
|
|
55
|
+
fn();
|
|
56
|
+
};
|
|
57
|
+
}
|
|
58
|
+
// Spinner frames
|
|
59
|
+
const FRAMES = ['◐', '◓', '◑', '◒'];
|
|
60
|
+
// Icons
|
|
61
|
+
const ICONS = {
|
|
62
|
+
success: '✓',
|
|
63
|
+
skipped: '○',
|
|
64
|
+
error: '✗',
|
|
65
|
+
pending: '☐',
|
|
66
|
+
};
|
|
67
|
+
// Color definitions (light/dark adaptive)
|
|
68
|
+
const COLORS = {
|
|
69
|
+
cyan: { light: '\x1b[36m', dark: '\x1b[96m' },
|
|
70
|
+
blue: { light: '\x1b[34m', dark: '\x1b[94m' },
|
|
71
|
+
magenta: { light: '\x1b[35m', dark: '\x1b[95m' },
|
|
72
|
+
green: { light: '\x1b[32m', dark: '\x1b[92m' },
|
|
73
|
+
yellow: { light: '\x1b[33m', dark: '\x1b[93m' },
|
|
74
|
+
red: { light: '\x1b[31m', dark: '\x1b[91m' },
|
|
75
|
+
gray: { light: '\x1b[90m', dark: '\x1b[37m' },
|
|
76
|
+
bold: '\x1b[1m',
|
|
77
|
+
strikethrough: '\x1b[9m',
|
|
78
|
+
reset: '\x1b[0m',
|
|
79
|
+
};
|
|
80
|
+
// Spinner color sequence
|
|
81
|
+
const SPINNER_COLORS = ['cyan', 'blue', 'magenta', 'cyan'];
|
|
82
|
+
let currentColorScheme = process.env.CI ? 'light' : 'dark';
|
|
83
|
+
export function setStepsColorScheme(scheme) {
|
|
84
|
+
currentColorScheme = scheme;
|
|
85
|
+
}
|
|
86
|
+
function getColor(colorKey) {
|
|
87
|
+
const color = COLORS[colorKey];
|
|
88
|
+
if (typeof color === 'string') {
|
|
89
|
+
return color;
|
|
90
|
+
}
|
|
91
|
+
return color[currentColorScheme];
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* Helper functions for creating step outcomes
|
|
95
|
+
*/
|
|
96
|
+
export const stepSuccess = () => ({ status: 'success' });
|
|
97
|
+
export const stepSkipped = (reason) => ({ status: 'skipped', reason });
|
|
98
|
+
export const stepError = (message) => ({ status: 'error', message });
|
|
99
|
+
/**
|
|
100
|
+
* Run a series of steps with animated progress
|
|
101
|
+
*
|
|
102
|
+
* Each step runs its callback while showing a spinner animation.
|
|
103
|
+
* Steps can complete with success, skipped, or error status.
|
|
104
|
+
* Exits with code 1 if any step errors.
|
|
105
|
+
*
|
|
106
|
+
* When there's no TTY or log level is debug/trace, uses plain output instead of TUI.
|
|
107
|
+
*/
|
|
108
|
+
export async function runSteps(steps, logLevel) {
|
|
109
|
+
const state = steps.map((s) => {
|
|
110
|
+
const stepType = s.type === 'progress' ? 'progress' : 'simple';
|
|
111
|
+
return stepType === 'progress'
|
|
112
|
+
? {
|
|
113
|
+
type: 'progress',
|
|
114
|
+
label: s.label,
|
|
115
|
+
run: s.run,
|
|
116
|
+
}
|
|
117
|
+
: { type: 'simple', label: s.label, run: s.run };
|
|
118
|
+
});
|
|
119
|
+
// Detect if we should use TUI (animated) or plain mode
|
|
120
|
+
const useTUI = process.stdout.isTTY && (!logLevel || ['info', 'warn', 'error'].includes(logLevel));
|
|
121
|
+
if (useTUI) {
|
|
122
|
+
await runStepsTUI(state);
|
|
123
|
+
}
|
|
124
|
+
else {
|
|
125
|
+
await runStepsPlain(state);
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
/**
|
|
129
|
+
* Run steps with animated TUI (original behavior)
|
|
130
|
+
*/
|
|
131
|
+
async function runStepsTUI(state) {
|
|
132
|
+
// Hide cursor
|
|
133
|
+
process.stdout.write('\x1B[?25l');
|
|
134
|
+
// Track active interval and interrupted state
|
|
135
|
+
let activeInterval = null;
|
|
136
|
+
let interrupted = false;
|
|
137
|
+
// Set up Ctrl+C handler for graceful exit
|
|
138
|
+
const exit = getExitFn();
|
|
139
|
+
const onInterrupt = () => {
|
|
140
|
+
if (interrupted)
|
|
141
|
+
return;
|
|
142
|
+
interrupted = true;
|
|
143
|
+
if (activeInterval)
|
|
144
|
+
clearInterval(activeInterval);
|
|
145
|
+
process.stdout.write('\x1B[?25h\n'); // Show cursor
|
|
146
|
+
exit(130);
|
|
147
|
+
};
|
|
148
|
+
const restoreInterrupts = installInterruptHandlers(onInterrupt);
|
|
149
|
+
try {
|
|
150
|
+
// Initial render
|
|
151
|
+
process.stdout.write(renderSteps(state, -1) + '\n');
|
|
152
|
+
for (let stepIndex = 0; stepIndex < state.length; stepIndex++) {
|
|
153
|
+
if (interrupted)
|
|
154
|
+
break;
|
|
155
|
+
const step = state[stepIndex];
|
|
156
|
+
let frameIndex = 0;
|
|
157
|
+
let currentFrame = '';
|
|
158
|
+
// Start spinner animation
|
|
159
|
+
activeInterval = setInterval(() => {
|
|
160
|
+
const colorKey = SPINNER_COLORS[frameIndex % SPINNER_COLORS.length];
|
|
161
|
+
const color = getColor(colorKey);
|
|
162
|
+
currentFrame = `${color}${COLORS.bold}${FRAMES[frameIndex % FRAMES.length]}${COLORS.reset}`;
|
|
163
|
+
// Move cursor up to the top of checklist
|
|
164
|
+
process.stdout.write(`\x1B[${state.length}A`);
|
|
165
|
+
process.stdout.write(renderSteps(state, stepIndex, currentFrame) + '\n');
|
|
166
|
+
frameIndex++;
|
|
167
|
+
}, 120);
|
|
168
|
+
// Run the step with progress tracking
|
|
169
|
+
const progressCallback = (progress) => {
|
|
170
|
+
step.progress = Math.min(100, Math.max(0, progress));
|
|
171
|
+
// Move cursor up and render with current spinner frame
|
|
172
|
+
process.stdout.write(`\x1B[${state.length}A`);
|
|
173
|
+
process.stdout.write(renderSteps(state, stepIndex, currentFrame) + '\n');
|
|
174
|
+
};
|
|
175
|
+
try {
|
|
176
|
+
// Use discriminant to determine if step has progress callback
|
|
177
|
+
const outcome = step.type === 'progress' ? await step.run(progressCallback) : await step.run();
|
|
178
|
+
step.outcome = outcome;
|
|
179
|
+
}
|
|
180
|
+
catch (err) {
|
|
181
|
+
step.outcome = {
|
|
182
|
+
status: 'error',
|
|
183
|
+
message: err instanceof Error ? err.message : String(err),
|
|
184
|
+
};
|
|
185
|
+
}
|
|
186
|
+
if (activeInterval) {
|
|
187
|
+
clearInterval(activeInterval);
|
|
188
|
+
activeInterval = null;
|
|
189
|
+
}
|
|
190
|
+
// Clear progress and final render with outcome
|
|
191
|
+
step.progress = undefined;
|
|
192
|
+
process.stdout.write(`\x1B[${state.length}A`);
|
|
193
|
+
process.stdout.write(renderSteps(state, -1) + '\n');
|
|
194
|
+
// If error, show error message and exit
|
|
195
|
+
if (step.outcome?.status === 'error') {
|
|
196
|
+
const errorColor = getColor('red');
|
|
197
|
+
console.error(`\n${errorColor}Error: ${step.outcome.message}${COLORS.reset}\n`);
|
|
198
|
+
process.stdout.write('\x1B[?25h'); // Show cursor
|
|
199
|
+
process.exit(1);
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
// Show cursor again
|
|
203
|
+
process.stdout.write('\x1B[?25h');
|
|
204
|
+
}
|
|
205
|
+
catch (err) {
|
|
206
|
+
// Ensure cursor is shown even if something goes wrong
|
|
207
|
+
process.stdout.write('\x1B[?25h');
|
|
208
|
+
throw err;
|
|
209
|
+
}
|
|
210
|
+
finally {
|
|
211
|
+
// Remove signal/TTY handlers
|
|
212
|
+
restoreInterrupts();
|
|
213
|
+
}
|
|
214
|
+
}
|
|
215
|
+
/**
|
|
216
|
+
* Run steps in plain mode (no TUI animations)
|
|
217
|
+
*/
|
|
218
|
+
async function runStepsPlain(state) {
|
|
219
|
+
const grayColor = getColor('gray');
|
|
220
|
+
const greenColor = getColor('green');
|
|
221
|
+
const yellowColor = getColor('yellow');
|
|
222
|
+
const redColor = getColor('red');
|
|
223
|
+
for (const step of state) {
|
|
224
|
+
// Run the step (no progress callback for plain mode)
|
|
225
|
+
try {
|
|
226
|
+
const outcome = step.type === 'progress' ? await step.run(() => { }) : await step.run();
|
|
227
|
+
step.outcome = outcome;
|
|
228
|
+
}
|
|
229
|
+
catch (err) {
|
|
230
|
+
step.outcome = {
|
|
231
|
+
status: 'error',
|
|
232
|
+
message: err instanceof Error ? err.message : String(err),
|
|
233
|
+
};
|
|
234
|
+
}
|
|
235
|
+
// Print final state only
|
|
236
|
+
if (step.outcome?.status === 'success') {
|
|
237
|
+
console.log(`${greenColor}${ICONS.success}${COLORS.reset} ${step.label}`);
|
|
238
|
+
}
|
|
239
|
+
else if (step.outcome?.status === 'skipped') {
|
|
240
|
+
const reason = step.outcome.reason
|
|
241
|
+
? ` ${grayColor}(${step.outcome.reason})${COLORS.reset}`
|
|
242
|
+
: '';
|
|
243
|
+
console.log(`${yellowColor}${ICONS.skipped}${COLORS.reset} ${step.label}${reason}`);
|
|
244
|
+
}
|
|
245
|
+
else if (step.outcome?.status === 'error') {
|
|
246
|
+
console.log(`${redColor}${ICONS.error}${COLORS.reset} ${step.label}`);
|
|
247
|
+
const errorColor = getColor('red');
|
|
248
|
+
console.error(`\n${errorColor}Error: ${step.outcome.message}${COLORS.reset}\n`);
|
|
249
|
+
process.exit(1);
|
|
250
|
+
}
|
|
251
|
+
}
|
|
252
|
+
}
|
|
253
|
+
/**
|
|
254
|
+
* Render a progress indicator
|
|
255
|
+
*/
|
|
256
|
+
function renderProgress(progress) {
|
|
257
|
+
const cyanColor = getColor('cyan');
|
|
258
|
+
const percentage = `${Math.floor(progress)}%`;
|
|
259
|
+
return ` ${cyanColor}${percentage}${COLORS.reset}`;
|
|
260
|
+
}
|
|
261
|
+
/**
|
|
262
|
+
* Render all steps as a multiline string
|
|
263
|
+
*/
|
|
264
|
+
function renderSteps(steps, activeIndex, spinner) {
|
|
265
|
+
const grayColor = getColor('gray');
|
|
266
|
+
const greenColor = getColor('green');
|
|
267
|
+
const yellowColor = getColor('yellow');
|
|
268
|
+
const redColor = getColor('red');
|
|
269
|
+
const lines = [];
|
|
270
|
+
steps.forEach((s, i) => {
|
|
271
|
+
// Don't show progress indicator for steps with outcomes (success/skipped/error)
|
|
272
|
+
if (s.outcome?.status === 'success') {
|
|
273
|
+
lines.push(`${greenColor}${ICONS.success}${COLORS.reset} ${grayColor}${COLORS.strikethrough}${s.label}${COLORS.reset}`);
|
|
274
|
+
}
|
|
275
|
+
else if (s.outcome?.status === 'skipped') {
|
|
276
|
+
const reason = s.outcome.reason ? ` ${grayColor}(${s.outcome.reason})${COLORS.reset}` : '';
|
|
277
|
+
lines.push(`${yellowColor}${ICONS.skipped}${COLORS.reset} ${grayColor}${COLORS.strikethrough}${s.label}${COLORS.reset}${reason}`);
|
|
278
|
+
}
|
|
279
|
+
else if (s.outcome?.status === 'error') {
|
|
280
|
+
lines.push(`${redColor}${ICONS.error}${COLORS.reset} ${s.label}`);
|
|
281
|
+
}
|
|
282
|
+
else if (i === activeIndex && spinner) {
|
|
283
|
+
// Only show progress for active step with spinner
|
|
284
|
+
const progressIndicator = s.progress !== undefined ? renderProgress(s.progress) : '';
|
|
285
|
+
lines.push(`${spinner} ${s.label}${progressIndicator}`);
|
|
286
|
+
}
|
|
287
|
+
else {
|
|
288
|
+
lines.push(`${grayColor}${ICONS.pending}${COLORS.reset} ${s.label}`);
|
|
289
|
+
}
|
|
290
|
+
});
|
|
291
|
+
return lines.join('\n');
|
|
292
|
+
}
|
|
293
|
+
//# sourceMappingURL=steps.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"steps.js","sourceRoot":"","sources":["../src/steps.ts"],"names":[],"mappings":"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"}
|
package/dist/terminal.js
ADDED
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
const defaultMode = process.env.CI ? 'light' : 'dark';
|
|
2
|
+
export async function detectColorScheme() {
|
|
3
|
+
const debug = process.env.DEBUG_COLORS === 'true';
|
|
4
|
+
// Check for explicit override
|
|
5
|
+
if (process.env.COLOR_SCHEME === 'light') {
|
|
6
|
+
if (debug)
|
|
7
|
+
console.log('[DEBUG] Using COLOR_SCHEME=light override');
|
|
8
|
+
return 'light';
|
|
9
|
+
}
|
|
10
|
+
if (process.env.COLOR_SCHEME === 'dark') {
|
|
11
|
+
if (debug)
|
|
12
|
+
console.log('[DEBUG] Using COLOR_SCHEME=dark override');
|
|
13
|
+
return 'dark';
|
|
14
|
+
}
|
|
15
|
+
// Check if we have stdout TTY at minimum
|
|
16
|
+
if (process.stdout.isTTY) {
|
|
17
|
+
if (debug)
|
|
18
|
+
console.log('[DEBUG] stdout is a TTY, defaulting to dark');
|
|
19
|
+
// Try to query terminal background color using OSC 11 (most reliable)
|
|
20
|
+
if (debug)
|
|
21
|
+
console.log('[DEBUG] Querying terminal background with OSC 11...');
|
|
22
|
+
try {
|
|
23
|
+
const bgColor = await queryTerminalBackground();
|
|
24
|
+
if (bgColor) {
|
|
25
|
+
const luminance = calculateLuminance(bgColor);
|
|
26
|
+
const scheme = luminance > 0.5 ? 'light' : 'dark';
|
|
27
|
+
if (debug)
|
|
28
|
+
console.log(`[DEBUG] OSC 11 response: rgb(${bgColor.r},${bgColor.g},${bgColor.b}), luminance: ${luminance.toFixed(2)}, scheme: ${scheme}`);
|
|
29
|
+
return scheme;
|
|
30
|
+
}
|
|
31
|
+
else {
|
|
32
|
+
if (debug)
|
|
33
|
+
console.log('[DEBUG] OSC 11 query timed out or no response');
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
catch (error) {
|
|
37
|
+
if (debug)
|
|
38
|
+
console.log('[DEBUG] OSC 11 query failed:', error);
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
// Fall back to COLORFGBG environment variable (less reliable)
|
|
42
|
+
if (process.env.COLORFGBG) {
|
|
43
|
+
// COLORFGBG format is "foreground;background"
|
|
44
|
+
// This is unreliable but better than nothing
|
|
45
|
+
const parts = process.env.COLORFGBG.split(';');
|
|
46
|
+
const fg = parseInt(parts[0] || '7', 10);
|
|
47
|
+
const bg = parseInt(parts[1] || '0', 10);
|
|
48
|
+
// Heuristic: if background is 0 (black) and foreground is light (>=7), it's likely dark mode
|
|
49
|
+
// if background is light (>=7) and foreground is dark (<7), it's likely light mode
|
|
50
|
+
const scheme = bg >= 7 || bg > fg ? 'light' : 'dark';
|
|
51
|
+
if (debug)
|
|
52
|
+
console.log(`[DEBUG] COLORFGBG fallback: ${process.env.COLORFGBG} (fg:${fg}, bg:${bg}), scheme: ${scheme}`);
|
|
53
|
+
return scheme;
|
|
54
|
+
}
|
|
55
|
+
if (debug)
|
|
56
|
+
console.log('[DEBUG] Defaulting to %s', defaultMode);
|
|
57
|
+
return defaultMode;
|
|
58
|
+
}
|
|
59
|
+
async function queryTerminalBackground() {
|
|
60
|
+
// Skip if stdin is not available or not a TTY
|
|
61
|
+
if (!process.stdin.isTTY) {
|
|
62
|
+
return null;
|
|
63
|
+
}
|
|
64
|
+
return new Promise((resolve) => {
|
|
65
|
+
const timeout = setTimeout(() => {
|
|
66
|
+
cleanup();
|
|
67
|
+
resolve(null);
|
|
68
|
+
}, 100); // 100ms timeout
|
|
69
|
+
let response = '';
|
|
70
|
+
const onData = (data) => {
|
|
71
|
+
response += data.toString();
|
|
72
|
+
// Look for OSC 11 response patterns:
|
|
73
|
+
// Pattern 1: ESC ] 11 ; rgb:RRRR/GGGG/BBBB ESC \ (xterm with ESC \ terminator)
|
|
74
|
+
// Pattern 2: ESC ] 11 ; rgb:RRRR/GGGG/BBBB BEL (xterm with BEL terminator)
|
|
75
|
+
// The color values can be 8-bit (RR), 12-bit (RRR), or 16-bit (RRRR)
|
|
76
|
+
// biome-ignore lint/suspicious/noControlCharactersInRegex: Control characters needed for ANSI escape sequences
|
|
77
|
+
const match = response.match(
|
|
78
|
+
// eslint-disable-next-line no-control-regex
|
|
79
|
+
/\x1b\]11;rgb:([0-9a-f]+)\/([0-9a-f]+)\/([0-9a-f]+)(?:\x1b\\|\x07)/i);
|
|
80
|
+
if (match) {
|
|
81
|
+
cleanup();
|
|
82
|
+
clearTimeout(timeout);
|
|
83
|
+
// Parse RGB values - they can be different bit depths
|
|
84
|
+
// Normalize to 8-bit (0-255) by taking the most significant bits
|
|
85
|
+
const parseColorValue = (hex) => {
|
|
86
|
+
if (hex.length === 4) {
|
|
87
|
+
// 16-bit: RRRR -> take first 2 chars
|
|
88
|
+
return parseInt(hex.slice(0, 2), 16);
|
|
89
|
+
}
|
|
90
|
+
else if (hex.length === 3) {
|
|
91
|
+
// 12-bit: RRR -> take first 2 chars
|
|
92
|
+
return parseInt(hex.slice(0, 2), 16);
|
|
93
|
+
}
|
|
94
|
+
else {
|
|
95
|
+
// 8-bit: RR
|
|
96
|
+
return parseInt(hex, 16);
|
|
97
|
+
}
|
|
98
|
+
};
|
|
99
|
+
const r = parseColorValue(match[1]);
|
|
100
|
+
const g = parseColorValue(match[2]);
|
|
101
|
+
const b = parseColorValue(match[3]);
|
|
102
|
+
resolve({ r, g, b });
|
|
103
|
+
}
|
|
104
|
+
};
|
|
105
|
+
const cleanup = () => {
|
|
106
|
+
process.stdin.setRawMode(false);
|
|
107
|
+
process.stdin.removeListener('data', onData);
|
|
108
|
+
process.stdin.pause(); // Pause stdin to allow process to exit
|
|
109
|
+
};
|
|
110
|
+
// Set stdin to raw mode to read escape sequences
|
|
111
|
+
process.stdin.setRawMode(true);
|
|
112
|
+
process.stdin.resume(); // Resume to receive data
|
|
113
|
+
process.stdin.on('data', onData);
|
|
114
|
+
// Send OSC 11 query with BEL terminator (more widely supported)
|
|
115
|
+
// Using BEL (\x07) as terminator instead of ESC \ for better compatibility
|
|
116
|
+
process.stdout.write('\x1b]11;?\x07');
|
|
117
|
+
});
|
|
118
|
+
}
|
|
119
|
+
function calculateLuminance(color) {
|
|
120
|
+
// Convert RGB to relative luminance using the formula from WCAG
|
|
121
|
+
// https://www.w3.org/TR/WCAG20/#relativeluminancedef
|
|
122
|
+
const rsRGB = color.r / 255;
|
|
123
|
+
const gsRGB = color.g / 255;
|
|
124
|
+
const bsRGB = color.b / 255;
|
|
125
|
+
const r = rsRGB <= 0.03928 ? rsRGB / 12.92 : Math.pow((rsRGB + 0.055) / 1.055, 2.4);
|
|
126
|
+
const g = gsRGB <= 0.03928 ? gsRGB / 12.92 : Math.pow((gsRGB + 0.055) / 1.055, 2.4);
|
|
127
|
+
const b = bsRGB <= 0.03928 ? bsRGB / 12.92 : Math.pow((bsRGB + 0.055) / 1.055, 2.4);
|
|
128
|
+
return 0.2126 * r + 0.7152 * g + 0.0722 * b;
|
|
129
|
+
}
|
|
130
|
+
//# sourceMappingURL=terminal.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"terminal.js","sourceRoot":"","sources":["../src/terminal.ts"],"names":[],"mappings":"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"}
|