@enactprotocol/cli 2.0.0 → 2.0.2

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.
Files changed (119) hide show
  1. package/dist/commands/auth/index.d.ts +12 -0
  2. package/dist/commands/auth/index.d.ts.map +1 -0
  3. package/dist/commands/auth/index.js +743 -0
  4. package/dist/commands/auth/index.js.map +1 -0
  5. package/dist/commands/cache/index.d.ts +11 -0
  6. package/dist/commands/cache/index.d.ts.map +1 -0
  7. package/dist/commands/cache/index.js +304 -0
  8. package/dist/commands/cache/index.js.map +1 -0
  9. package/dist/commands/config/index.d.ts +11 -0
  10. package/dist/commands/config/index.d.ts.map +1 -0
  11. package/dist/commands/config/index.js +138 -0
  12. package/dist/commands/config/index.js.map +1 -0
  13. package/dist/commands/env/index.d.ts +11 -0
  14. package/dist/commands/env/index.d.ts.map +1 -0
  15. package/dist/commands/env/index.js +303 -0
  16. package/dist/commands/env/index.js.map +1 -0
  17. package/dist/commands/exec/index.d.ts +12 -0
  18. package/dist/commands/exec/index.d.ts.map +1 -0
  19. package/dist/commands/exec/index.js +154 -0
  20. package/dist/commands/exec/index.js.map +1 -0
  21. package/dist/commands/get/index.d.ts +11 -0
  22. package/dist/commands/get/index.d.ts.map +1 -0
  23. package/dist/commands/get/index.js +151 -0
  24. package/dist/commands/get/index.js.map +1 -0
  25. package/dist/commands/index.d.ts +25 -0
  26. package/dist/commands/index.d.ts.map +1 -0
  27. package/dist/commands/index.js +28 -0
  28. package/dist/commands/index.js.map +1 -0
  29. package/dist/commands/init/index.d.ts +11 -0
  30. package/dist/commands/init/index.d.ts.map +1 -0
  31. package/dist/commands/init/index.js +192 -0
  32. package/dist/commands/init/index.js.map +1 -0
  33. package/dist/commands/inspect/index.d.ts +13 -0
  34. package/dist/commands/inspect/index.d.ts.map +1 -0
  35. package/dist/commands/inspect/index.js +199 -0
  36. package/dist/commands/inspect/index.js.map +1 -0
  37. package/dist/commands/install/index.d.ts +16 -0
  38. package/dist/commands/install/index.d.ts.map +1 -0
  39. package/dist/commands/install/index.js +520 -0
  40. package/dist/commands/install/index.js.map +1 -0
  41. package/dist/commands/list/index.d.ts +15 -0
  42. package/dist/commands/list/index.d.ts.map +1 -0
  43. package/dist/commands/list/index.js +103 -0
  44. package/dist/commands/list/index.js.map +1 -0
  45. package/dist/commands/publish/index.d.ts +11 -0
  46. package/dist/commands/publish/index.d.ts.map +1 -0
  47. package/dist/commands/publish/index.js +274 -0
  48. package/dist/commands/publish/index.js.map +1 -0
  49. package/dist/commands/report/index.d.ts +12 -0
  50. package/dist/commands/report/index.d.ts.map +1 -0
  51. package/dist/commands/report/index.js +279 -0
  52. package/dist/commands/report/index.js.map +1 -0
  53. package/dist/commands/run/index.d.ts +16 -0
  54. package/dist/commands/run/index.d.ts.map +1 -0
  55. package/dist/commands/run/index.js +525 -0
  56. package/dist/commands/run/index.js.map +1 -0
  57. package/dist/commands/search/index.d.ts +12 -0
  58. package/dist/commands/search/index.d.ts.map +1 -0
  59. package/dist/commands/search/index.js +275 -0
  60. package/dist/commands/search/index.js.map +1 -0
  61. package/dist/commands/setup/index.d.ts +11 -0
  62. package/dist/commands/setup/index.d.ts.map +1 -0
  63. package/dist/commands/setup/index.js +241 -0
  64. package/dist/commands/setup/index.js.map +1 -0
  65. package/dist/commands/sign/index.d.ts +17 -0
  66. package/dist/commands/sign/index.d.ts.map +1 -0
  67. package/dist/commands/sign/index.js +507 -0
  68. package/dist/commands/sign/index.js.map +1 -0
  69. package/dist/commands/trust/index.d.ts +13 -0
  70. package/dist/commands/trust/index.d.ts.map +1 -0
  71. package/dist/commands/trust/index.js +366 -0
  72. package/dist/commands/trust/index.js.map +1 -0
  73. package/dist/commands/unyank/index.d.ts +11 -0
  74. package/dist/commands/unyank/index.d.ts.map +1 -0
  75. package/dist/commands/unyank/index.js +87 -0
  76. package/dist/commands/unyank/index.js.map +1 -0
  77. package/dist/commands/yank/index.d.ts +13 -0
  78. package/dist/commands/yank/index.d.ts.map +1 -0
  79. package/dist/commands/yank/index.js +109 -0
  80. package/dist/commands/yank/index.js.map +1 -0
  81. package/dist/index.d.ts +10 -0
  82. package/dist/index.d.ts.map +1 -0
  83. package/dist/index.js +68 -0
  84. package/dist/index.js.map +1 -0
  85. package/dist/types.d.ts +69 -0
  86. package/dist/types.d.ts.map +1 -0
  87. package/dist/types.js +15 -0
  88. package/dist/types.js.map +1 -0
  89. package/dist/utils/errors.d.ts +159 -0
  90. package/dist/utils/errors.d.ts.map +1 -0
  91. package/dist/utils/errors.js +321 -0
  92. package/dist/utils/errors.js.map +1 -0
  93. package/dist/utils/exit-codes.d.ts +83 -0
  94. package/dist/utils/exit-codes.d.ts.map +1 -0
  95. package/dist/utils/exit-codes.js +126 -0
  96. package/dist/utils/exit-codes.js.map +1 -0
  97. package/dist/utils/ignore.d.ts +25 -0
  98. package/dist/utils/ignore.d.ts.map +1 -0
  99. package/dist/utils/ignore.js +123 -0
  100. package/dist/utils/ignore.js.map +1 -0
  101. package/dist/utils/index.d.ts +8 -0
  102. package/dist/utils/index.d.ts.map +1 -0
  103. package/dist/utils/index.js +12 -0
  104. package/dist/utils/index.js.map +1 -0
  105. package/dist/utils/output.d.ts +103 -0
  106. package/dist/utils/output.d.ts.map +1 -0
  107. package/dist/utils/output.js +201 -0
  108. package/dist/utils/output.js.map +1 -0
  109. package/dist/utils/spinner.d.ts +83 -0
  110. package/dist/utils/spinner.d.ts.map +1 -0
  111. package/dist/utils/spinner.js +162 -0
  112. package/dist/utils/spinner.js.map +1 -0
  113. package/package.json +5 -5
  114. package/src/commands/index.ts +1 -0
  115. package/src/commands/init/index.ts +231 -0
  116. package/src/index.ts +7 -1
  117. package/tests/index.test.ts +1 -1
  118. package/tsconfig.json +1 -0
  119. package/tsconfig.tsbuildinfo +1 -1
@@ -0,0 +1,201 @@
1
+ /**
2
+ * Output utilities for CLI
3
+ *
4
+ * Provides consistent formatting, colors, and output helpers
5
+ */
6
+ import pc from "picocolors";
7
+ // ============================================================================
8
+ // Colors and Formatting
9
+ // ============================================================================
10
+ export const colors = {
11
+ // Status colors
12
+ success: pc.green,
13
+ error: pc.red,
14
+ warning: pc.yellow,
15
+ info: pc.blue,
16
+ dim: pc.dim,
17
+ bold: pc.bold,
18
+ // Semantic colors
19
+ command: pc.cyan,
20
+ path: pc.underline,
21
+ value: pc.yellow,
22
+ key: pc.bold,
23
+ version: pc.magenta,
24
+ };
25
+ // ============================================================================
26
+ // Symbols
27
+ // ============================================================================
28
+ export const symbols = {
29
+ success: pc.green("✓"),
30
+ error: pc.red("✗"),
31
+ warning: pc.yellow("⚠"),
32
+ info: pc.blue("ℹ"),
33
+ arrow: pc.dim("→"),
34
+ bullet: pc.dim("•"),
35
+ check: pc.green("✔"),
36
+ cross: pc.red("✘"),
37
+ };
38
+ // ============================================================================
39
+ // Output Functions
40
+ // ============================================================================
41
+ /**
42
+ * Print a success message
43
+ */
44
+ export function success(message) {
45
+ console.log(`${symbols.success} ${message}`);
46
+ }
47
+ /**
48
+ * Print an error message
49
+ */
50
+ export function error(message) {
51
+ console.error(`${symbols.error} ${colors.error(message)}`);
52
+ }
53
+ /**
54
+ * Print a warning message
55
+ */
56
+ export function warning(message) {
57
+ console.warn(`${symbols.warning} ${colors.warning(message)}`);
58
+ }
59
+ /**
60
+ * Print an info message
61
+ */
62
+ export function info(message) {
63
+ console.log(`${symbols.info} ${message}`);
64
+ }
65
+ /**
66
+ * Print a dim/subtle message
67
+ */
68
+ export function dim(message) {
69
+ console.log(colors.dim(message));
70
+ }
71
+ /**
72
+ * Print a newline
73
+ */
74
+ export function newline() {
75
+ console.log();
76
+ }
77
+ /**
78
+ * Print a header
79
+ */
80
+ export function header(text) {
81
+ console.log();
82
+ console.log(colors.bold(text));
83
+ console.log(colors.dim("─".repeat(text.length)));
84
+ }
85
+ /**
86
+ * Print a key-value pair
87
+ */
88
+ export function keyValue(key, value, indent = 0) {
89
+ const padding = " ".repeat(indent);
90
+ console.log(`${padding}${colors.key(key)}: ${value}`);
91
+ }
92
+ /**
93
+ * Print a list item
94
+ */
95
+ export function listItem(text, indent = 0) {
96
+ const padding = " ".repeat(indent);
97
+ console.log(`${padding}${symbols.bullet} ${text}`);
98
+ }
99
+ /**
100
+ * Print a simple table
101
+ */
102
+ export function table(data, columns) {
103
+ if (data.length === 0) {
104
+ dim(" No items to display");
105
+ return;
106
+ }
107
+ // Calculate column widths
108
+ const widths = columns.map((col) => {
109
+ const headerWidth = col.header.length;
110
+ const maxDataWidth = Math.max(...data.map((row) => String(row[col.key] ?? "").length));
111
+ return col.width ?? Math.max(headerWidth, maxDataWidth);
112
+ });
113
+ // Print header
114
+ const headerLine = columns
115
+ .map((col, i) => pad(col.header, widths[i] ?? col.header.length, col.align))
116
+ .join(" ");
117
+ console.log(colors.bold(headerLine));
118
+ console.log(colors.dim("─".repeat(headerLine.length)));
119
+ // Print rows
120
+ for (const row of data) {
121
+ const line = columns
122
+ .map((col, i) => pad(String(row[col.key] ?? ""), widths[i] ?? 10, col.align))
123
+ .join(" ");
124
+ console.log(line);
125
+ }
126
+ }
127
+ function pad(text, width, align = "left") {
128
+ const padding = width - text.length;
129
+ if (padding <= 0)
130
+ return text.slice(0, width);
131
+ switch (align) {
132
+ case "right":
133
+ return " ".repeat(padding) + text;
134
+ case "center": {
135
+ const left = Math.floor(padding / 2);
136
+ const right = padding - left;
137
+ return " ".repeat(left) + text + " ".repeat(right);
138
+ }
139
+ default:
140
+ return text + " ".repeat(padding);
141
+ }
142
+ }
143
+ // ============================================================================
144
+ // JSON Output
145
+ // ============================================================================
146
+ /**
147
+ * Print data as JSON (for --json flag)
148
+ */
149
+ export function json(data) {
150
+ console.log(JSON.stringify(data, null, 2));
151
+ }
152
+ /**
153
+ * Print data as compact JSON
154
+ */
155
+ export function jsonCompact(data) {
156
+ console.log(JSON.stringify(data));
157
+ }
158
+ // ============================================================================
159
+ // Error Formatting
160
+ // ============================================================================
161
+ /**
162
+ * Format an error for display
163
+ */
164
+ export function formatError(err) {
165
+ if (err instanceof Error) {
166
+ return err.message;
167
+ }
168
+ return String(err);
169
+ }
170
+ /**
171
+ * Print an error with details
172
+ */
173
+ export function errorWithDetails(message, details) {
174
+ error(message);
175
+ if (details) {
176
+ console.error(colors.dim(` ${details}`));
177
+ }
178
+ }
179
+ /**
180
+ * Print a suggestion after an error
181
+ */
182
+ export function suggest(message) {
183
+ console.log();
184
+ console.log(`${colors.info("Suggestion:")} ${message}`);
185
+ }
186
+ // ============================================================================
187
+ // Progress / Status
188
+ // ============================================================================
189
+ /**
190
+ * Print a status line that can be updated
191
+ */
192
+ export function status(message) {
193
+ process.stdout.write(`\r${symbols.info} ${message}`);
194
+ }
195
+ /**
196
+ * Clear the current line
197
+ */
198
+ export function clearLine() {
199
+ process.stdout.write("\r\x1b[K");
200
+ }
201
+ //# sourceMappingURL=output.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"output.js","sourceRoot":"","sources":["../../src/utils/output.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,83 @@
1
+ /**
2
+ * Spinner utility using @clack/prompts
3
+ *
4
+ * Provides loading spinners for long-running operations
5
+ */
6
+ export interface SpinnerInstance {
7
+ start: (message?: string) => void;
8
+ stop: (message?: string, code?: number) => void;
9
+ message: (message: string) => void;
10
+ }
11
+ /**
12
+ * Create a spinner for long-running operations
13
+ */
14
+ export declare function createSpinner(): SpinnerInstance;
15
+ /**
16
+ * Run an async operation with a spinner
17
+ */
18
+ export declare function withSpinner<T>(message: string, fn: () => Promise<T>, successMessage?: string): Promise<T>;
19
+ /**
20
+ * Show a simple intro banner
21
+ */
22
+ export declare function intro(message: string): void;
23
+ /**
24
+ * Show an outro message
25
+ */
26
+ export declare function outro(message: string): void;
27
+ /**
28
+ * Prompt for confirmation
29
+ */
30
+ export declare function confirm(message: string, initialValue?: boolean): Promise<boolean>;
31
+ /**
32
+ * Prompt for text input
33
+ */
34
+ export declare function text(message: string, options?: {
35
+ placeholder?: string;
36
+ defaultValue?: string;
37
+ validate?: (value: string) => string | undefined;
38
+ }): Promise<string | null>;
39
+ /**
40
+ * Prompt for password input (masked)
41
+ */
42
+ export declare function password(message: string): Promise<string | null>;
43
+ /**
44
+ * Prompt for selection from options
45
+ */
46
+ export declare function select<T extends string>(message: string, options: Array<{
47
+ value: T;
48
+ label: string;
49
+ hint?: string;
50
+ }>): Promise<T | null>;
51
+ /**
52
+ * Check if user cancelled
53
+ */
54
+ export declare function isCancel(value: unknown): boolean;
55
+ /**
56
+ * Cancel and exit
57
+ */
58
+ export declare function cancel(message?: string): never;
59
+ /**
60
+ * Log a message (respects CI mode)
61
+ */
62
+ export declare function log(message: string): void;
63
+ /**
64
+ * Log an info message
65
+ */
66
+ export declare function logInfo(message: string): void;
67
+ /**
68
+ * Log a success message
69
+ */
70
+ export declare function logSuccess(message: string): void;
71
+ /**
72
+ * Log a warning
73
+ */
74
+ export declare function logWarning(message: string): void;
75
+ /**
76
+ * Log an error
77
+ */
78
+ export declare function logError(message: string): void;
79
+ /**
80
+ * Log a step
81
+ */
82
+ export declare function logStep(message: string): void;
83
+ //# sourceMappingURL=spinner.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"spinner.d.ts","sourceRoot":"","sources":["../../src/utils/spinner.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,CAAC,OAAO,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,IAAI,EAAE,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IAChD,OAAO,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;CACpC;AAED;;GAEG;AACH,wBAAgB,aAAa,IAAI,eAAe,CAc/C;AAED;;GAEG;AACH,wBAAsB,WAAW,CAAC,CAAC,EACjC,OAAO,EAAE,MAAM,EACf,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,EACpB,cAAc,CAAC,EAAE,MAAM,GACtB,OAAO,CAAC,CAAC,CAAC,CAYZ;AAED;;GAEG;AACH,wBAAgB,KAAK,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAE3C;AAED;;GAEG;AACH,wBAAgB,KAAK,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAE3C;AAED;;GAEG;AACH,wBAAsB,OAAO,CAAC,OAAO,EAAE,MAAM,EAAE,YAAY,UAAQ,GAAG,OAAO,CAAC,OAAO,CAAC,CAWrF;AAED;;GAEG;AACH,wBAAsB,IAAI,CACxB,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE;IACR,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,GAAG,SAAS,CAAC;CAClD,GACA,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CA2BxB;AAED;;GAEG;AACH,wBAAsB,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAUtE;AAED;;GAEG;AACH,wBAAsB,MAAM,CAAC,CAAC,SAAS,MAAM,EAC3C,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,KAAK,CAAC;IAAE,KAAK,EAAE,CAAC,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,GACzD,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC,CAYnB;AAED;;GAEG;AACH,wBAAgB,QAAQ,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAEhD;AAED;;GAEG;AACH,wBAAgB,MAAM,CAAC,OAAO,SAAwB,GAAG,KAAK,CAG7D;AAED;;GAEG;AACH,wBAAgB,GAAG,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAEzC;AAED;;GAEG;AACH,wBAAgB,OAAO,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAE7C;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAEhD;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAEhD;AAED;;GAEG;AACH,wBAAgB,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAE9C;AAED;;GAEG;AACH,wBAAgB,OAAO,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAE7C"}
@@ -0,0 +1,162 @@
1
+ /**
2
+ * Spinner utility using @clack/prompts
3
+ *
4
+ * Provides loading spinners for long-running operations
5
+ */
6
+ import * as p from "@clack/prompts";
7
+ /**
8
+ * Create a spinner for long-running operations
9
+ */
10
+ export function createSpinner() {
11
+ const spinner = p.spinner();
12
+ return {
13
+ start(message = "Loading...") {
14
+ spinner.start(message);
15
+ },
16
+ stop(message, code = 0) {
17
+ spinner.stop(message, code);
18
+ },
19
+ message(message) {
20
+ spinner.message(message);
21
+ },
22
+ };
23
+ }
24
+ /**
25
+ * Run an async operation with a spinner
26
+ */
27
+ export async function withSpinner(message, fn, successMessage) {
28
+ const spinner = createSpinner();
29
+ spinner.start(message);
30
+ try {
31
+ const result = await fn();
32
+ spinner.stop(successMessage ?? message);
33
+ return result;
34
+ }
35
+ catch (error) {
36
+ spinner.stop(`Failed: ${message}`, 1);
37
+ throw error;
38
+ }
39
+ }
40
+ /**
41
+ * Show a simple intro banner
42
+ */
43
+ export function intro(message) {
44
+ p.intro(message);
45
+ }
46
+ /**
47
+ * Show an outro message
48
+ */
49
+ export function outro(message) {
50
+ p.outro(message);
51
+ }
52
+ /**
53
+ * Prompt for confirmation
54
+ */
55
+ export async function confirm(message, initialValue = false) {
56
+ const result = await p.confirm({
57
+ message,
58
+ initialValue,
59
+ });
60
+ if (p.isCancel(result)) {
61
+ return false;
62
+ }
63
+ return result;
64
+ }
65
+ /**
66
+ * Prompt for text input
67
+ */
68
+ export async function text(message, options) {
69
+ const textOptions = {
70
+ message,
71
+ };
72
+ if (options?.placeholder) {
73
+ textOptions.placeholder = options.placeholder;
74
+ }
75
+ if (options?.defaultValue) {
76
+ textOptions.defaultValue = options.defaultValue;
77
+ }
78
+ if (options?.validate) {
79
+ textOptions.validate = options.validate;
80
+ }
81
+ const result = await p.text(textOptions);
82
+ if (p.isCancel(result)) {
83
+ return null;
84
+ }
85
+ return result;
86
+ }
87
+ /**
88
+ * Prompt for password input (masked)
89
+ */
90
+ export async function password(message) {
91
+ const result = await p.password({
92
+ message,
93
+ });
94
+ if (p.isCancel(result)) {
95
+ return null;
96
+ }
97
+ return result;
98
+ }
99
+ /**
100
+ * Prompt for selection from options
101
+ */
102
+ export async function select(message, options) {
103
+ const result = await p.select({
104
+ message,
105
+ // biome-ignore lint/suspicious/noExplicitAny: clack types are strict about optional props
106
+ options: options,
107
+ });
108
+ if (p.isCancel(result)) {
109
+ return null;
110
+ }
111
+ return result;
112
+ }
113
+ /**
114
+ * Check if user cancelled
115
+ */
116
+ export function isCancel(value) {
117
+ return p.isCancel(value);
118
+ }
119
+ /**
120
+ * Cancel and exit
121
+ */
122
+ export function cancel(message = "Operation cancelled") {
123
+ p.cancel(message);
124
+ process.exit(0);
125
+ }
126
+ /**
127
+ * Log a message (respects CI mode)
128
+ */
129
+ export function log(message) {
130
+ p.log.message(message);
131
+ }
132
+ /**
133
+ * Log an info message
134
+ */
135
+ export function logInfo(message) {
136
+ p.log.info(message);
137
+ }
138
+ /**
139
+ * Log a success message
140
+ */
141
+ export function logSuccess(message) {
142
+ p.log.success(message);
143
+ }
144
+ /**
145
+ * Log a warning
146
+ */
147
+ export function logWarning(message) {
148
+ p.log.warn(message);
149
+ }
150
+ /**
151
+ * Log an error
152
+ */
153
+ export function logError(message) {
154
+ p.log.error(message);
155
+ }
156
+ /**
157
+ * Log a step
158
+ */
159
+ export function logStep(message) {
160
+ p.log.step(message);
161
+ }
162
+ //# sourceMappingURL=spinner.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"spinner.js","sourceRoot":"","sources":["../../src/utils/spinner.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@enactprotocol/cli",
3
- "version": "2.0.0",
3
+ "version": "2.0.2",
4
4
  "description": "Command-line interface for Enact - the npm for AI tools",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -34,10 +34,10 @@
34
34
  },
35
35
  "dependencies": {
36
36
  "@clack/prompts": "^0.11.0",
37
- "@enactprotocol/api": "2.0.0",
38
- "@enactprotocol/execution": "2.0.0",
39
- "@enactprotocol/secrets": "2.0.0",
40
- "@enactprotocol/shared": "2.0.0",
37
+ "@enactprotocol/api": "2.0.2",
38
+ "@enactprotocol/execution": "2.0.2",
39
+ "@enactprotocol/secrets": "2.0.2",
40
+ "@enactprotocol/shared": "2.0.2",
41
41
  "commander": "^12.1.0",
42
42
  "picocolors": "^1.1.1"
43
43
  },
@@ -5,6 +5,7 @@
5
5
  */
6
6
 
7
7
  export { configureSetupCommand } from "./setup";
8
+ export { configureInitCommand } from "./init";
8
9
  export { configureRunCommand } from "./run";
9
10
  export { configureExecCommand } from "./exec";
10
11
  export { configureInstallCommand } from "./install";