@mudah-cli/mudah 0.1.0 → 0.3.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/dist/index.d.ts CHANGED
@@ -1,7 +1,7 @@
1
1
  export { run, type RunOptions } from './run.js';
2
2
  export { createWatcher, type WatcherOptions } from './watcher.js';
3
3
  export { Command } from '@mudah-cli/console';
4
- export { Application, EventBus, ServiceProvider, UsageError, ExitError, CommandCancelled, loadManifest, type MudahManifest, type LazyProviderOptions, type ProviderClass, type AppEvents, } from '@mudah-cli/core';
5
- export { ConfigRepository, defineConfig, env, loadEnvFile, loadConfigFiles } from '@mudah-cli/config';
4
+ export { Application, EventBus, ServiceProvider, UsageError, ExitError, CommandCancelled, checkForUpdate, clearUpdateCache, compareSemVer, discoverPlugins, findPluginPackages, formatUpdateNudge, loadManifest, loadPlugin, parseSemVer, type MudahManifest, type LazyProviderOptions, type PluginDiscoveryOptions, type PluginInfo, type ProviderClass, type AppEvents, type UpdateCheckOptions, type UpdateCheckResult, } from '@mudah-cli/core';
5
+ export { ConfigRepository, ConfigValidationError, assertSchema, defineConfig, env, loadEnvFile, loadConfigFiles, s, validateSchema, type Schema, type SchemaIssue, type SchemaResult, } from '@mudah-cli/config';
6
6
  export { Container } from '@mudah-cli/container';
7
7
  export { detectCapabilities, type TerminalCapabilities } from '@mudah-cli/terminal';
package/dist/index.js CHANGED
@@ -2,8 +2,8 @@ export { run } from './run.js';
2
2
  export { createWatcher } from './watcher.js';
3
3
  // App-facing re-exports: `import { Command } from '@mudah-cli/mudah'` is all users need.
4
4
  export { Command } from '@mudah-cli/console';
5
- export { Application, EventBus, ServiceProvider, UsageError, ExitError, CommandCancelled, loadManifest, } from '@mudah-cli/core';
6
- export { ConfigRepository, defineConfig, env, loadEnvFile, loadConfigFiles } from '@mudah-cli/config';
5
+ export { Application, EventBus, ServiceProvider, UsageError, ExitError, CommandCancelled, checkForUpdate, clearUpdateCache, compareSemVer, discoverPlugins, findPluginPackages, formatUpdateNudge, loadManifest, loadPlugin, parseSemVer, } from '@mudah-cli/core';
6
+ export { ConfigRepository, ConfigValidationError, assertSchema, defineConfig, env, loadEnvFile, loadConfigFiles, s, validateSchema, } from '@mudah-cli/config';
7
7
  export { Container } from '@mudah-cli/container';
8
8
  export { detectCapabilities } from '@mudah-cli/terminal';
9
9
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAmB,MAAM,UAAU,CAAC;AAChD,OAAO,EAAE,aAAa,EAAuB,MAAM,cAAc,CAAC;AAElE,yFAAyF;AACzF,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAC7C,OAAO,EACL,WAAW,EACX,QAAQ,EACR,eAAe,EACf,UAAU,EACV,SAAS,EACT,gBAAgB,EAChB,YAAY,GAKb,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,gBAAgB,EAAE,YAAY,EAAE,GAAG,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACtG,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACjD,OAAO,EAAE,kBAAkB,EAA6B,MAAM,qBAAqB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAmB,MAAM,UAAU,CAAC;AAChD,OAAO,EAAE,aAAa,EAAuB,MAAM,cAAc,CAAC;AAElE,yFAAyF;AACzF,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAC7C,OAAO,EACL,WAAW,EACX,QAAQ,EACR,eAAe,EACf,UAAU,EACV,SAAS,EACT,gBAAgB,EAChB,cAAc,EACd,gBAAgB,EAChB,aAAa,EACb,eAAe,EACf,kBAAkB,EAClB,iBAAiB,EACjB,YAAY,EACZ,UAAU,EACV,WAAW,GASZ,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,gBAAgB,EAChB,qBAAqB,EACrB,YAAY,EACZ,YAAY,EACZ,GAAG,EACH,WAAW,EACX,eAAe,EACf,CAAC,EACD,cAAc,GAIf,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACjD,OAAO,EAAE,kBAAkB,EAA6B,MAAM,qBAAqB,CAAC"}
package/dist/run.d.ts CHANGED
@@ -1,4 +1,6 @@
1
- import { type Application as App } from '@mudah-cli/core';
1
+ import { type Application as App, type MudahManifest } from '@mudah-cli/core';
2
+ import { type ThemeQueryInput } from '@mudah-cli/terminal';
3
+ import { type CommandModule } from '@mudah-cli/console';
2
4
  export interface RunOptions {
3
5
  /** Raw arguments (default: `process.argv.slice(2)`). */
4
6
  argv?: string[];
@@ -15,6 +17,40 @@ export interface RunOptions {
15
17
  stderr?: {
16
18
  write(data: string): unknown;
17
19
  };
20
+ /**
21
+ * Stream the `'auto'` theme query reads from. Overriding it (and `stdout`)
22
+ * lets tests answer the query without a real terminal.
23
+ */
24
+ stdin?: ThemeQueryInput;
25
+ /**
26
+ * Set false to never query the terminal for its colors. Tests and
27
+ * non-interactive runs use it to keep startup synchronous.
28
+ */
29
+ allowThemeQuery?: boolean;
30
+ /**
31
+ * Publishable package name for the update nudge. Omit (or set
32
+ * `checkUpdates: false`) to skip the check entirely — the default, since
33
+ * only published apps can be compared against a registry.
34
+ */
35
+ updatePackage?: string;
36
+ /** Override the update-check cache directory (tests). */
37
+ updateCacheDir?: string;
38
+ /**
39
+ * Skip plugin discovery. Bundled apps with no `node_modules` (and tests
40
+ * that don't want filesystem scanning) set this.
41
+ */
42
+ disablePlugins?: boolean;
43
+ /**
44
+ * Bake the manifest instead of reading `mudah.json` from `cwd`. Use this
45
+ * for bundled/single-file tools that run from arbitrary directories.
46
+ */
47
+ manifest?: MudahManifest;
48
+ /**
49
+ * Register command modules explicitly (bundled apps that can't rely on
50
+ * filesystem discovery). Registered after discovered commands; duplicates
51
+ * are skipped with a warning.
52
+ */
53
+ commands?: CommandModule[];
18
54
  }
19
55
  /**
20
56
  * The Mudah entry point. An app's `bin/<name>` stub is:
package/dist/run.js CHANGED
@@ -1,7 +1,7 @@
1
- import { Application, loadManifest, } from '@mudah-cli/core';
1
+ import { Application, UsageError, loadManifest, checkForUpdate, formatUpdateNudge, } from '@mudah-cli/core';
2
2
  import { detectCapabilities } from '@mudah-cli/terminal';
3
- import { Output, resolveTheme } from '@mudah-cli/ui';
4
- import { ConsoleKernel, renderError, renderCommandHelp, renderCommandList } from '@mudah-cli/console';
3
+ import { Output, detectTheme, renderTable } from '@mudah-cli/ui';
4
+ import { ConsoleKernel, renderError, renderCommandHelp, renderCommandList, parseSignature } from '@mudah-cli/console';
5
5
  import HelpCommand from './commands/help.command.js';
6
6
  import VersionCommand from './commands/version.command.js';
7
7
  import MakeCommand from './commands/make.command.js';
@@ -26,70 +26,249 @@ export async function run(options = {}) {
26
26
  const argv = options.argv ?? process.argv.slice(2);
27
27
  const env = options.env;
28
28
  const caps = detectCapabilities({ env });
29
+ // Resolved once: every later write (envelopes included) targets these, so
30
+ // output modes work with or without injected streams.
31
+ const stdout = options.stdout ?? process.stdout;
32
+ const stderr = options.stderr ?? process.stderr;
29
33
  let manifest;
30
34
  try {
31
- manifest = loadManifest(cwd);
35
+ manifest = options.manifest ?? loadManifest(cwd);
32
36
  }
33
37
  catch (error) {
34
38
  const message = error instanceof Error ? error.message : String(error);
35
- (options.stderr ?? process.stderr).write(message + '\n');
39
+ stderr.write(message + '\n');
36
40
  return 1;
37
41
  }
38
42
  const app = options.app ?? new Application(cwd, manifest);
39
- const theme = resolveTheme(manifest.ui?.theme);
43
+ const theme = await detectTheme({
44
+ name: manifest.ui?.theme,
45
+ allowQuery: caps.themeQuery && options.allowThemeQuery !== false,
46
+ stdout,
47
+ stdin: options.stdin,
48
+ });
40
49
  const output = new Output({
41
- stream: options.stdout ?? process.stdout,
42
- errorStream: options.stderr ?? process.stderr,
50
+ stream: stdout,
51
+ errorStream: stderr,
43
52
  theme,
44
53
  colorLevel: caps.colorLevel,
45
54
  unicode: caps.unicode,
46
55
  osc9: caps.osc9,
47
56
  });
57
+ // Output-mode flags (--json / --plain) may appear anywhere.
58
+ if (argv.includes('--json')) {
59
+ output.setMode('json');
60
+ }
61
+ else if (argv.includes('--plain')) {
62
+ output.setMode('plain');
63
+ }
64
+ const jsonMode = output.isMachineReadable;
65
+ const profileMode = argv.includes('--profile');
66
+ const startedAt = Date.now();
67
+ // Update nudge: opt-in per app (a package name must be given) and never in
68
+ // the way of scripts, CI, or machine-readable output.
69
+ const ci = env?.['CI'] ?? process.env['CI'];
70
+ const updateOptions = options.updatePackage === undefined ||
71
+ manifest.updates === false ||
72
+ jsonMode ||
73
+ !caps.isTty ||
74
+ (ci !== undefined && ci !== '' && ci !== 'false')
75
+ ? undefined
76
+ : {
77
+ packageName: options.updatePackage,
78
+ currentVersion: manifest.version,
79
+ cacheDir: options.updateCacheDir,
80
+ };
81
+ // Plugins first: their providers must be registered before boot, and their
82
+ // commands join the same discovery list as the app's own.
83
+ const plugins = options.disablePlugins === true ? [] : await app.discoverPlugins();
48
84
  // Providers: discover app providers, boot, then evaluate lazy predicates.
49
85
  await app.discoverProviders();
50
- await app.boot();
86
+ const bootProfile = await app.boot({ profile: profileMode });
51
87
  await app.evaluateLazy();
52
- // Kernel: built-ins first, then discovered app commands, then manifest extras.
88
+ // Kernel: built-ins first, then — in order — discovered app commands,
89
+ // manifest extras, and explicitly injected modules (bundled apps).
90
+ // First registration of a name wins; later duplicates are skipped so a
91
+ // checkout that both discovers and injects the same command stays clean.
53
92
  const kernel = new ConsoleKernel(app, output);
54
93
  registerBuiltIns(kernel);
55
- const modules = [...(await app.discoverCommandModules())];
94
+ const seen = new Set(kernel.list().map((entry) => entry.name));
95
+ const candidates = [
96
+ ...(await app.discoverCommandModules()),
97
+ ...(options.commands ?? []),
98
+ // Plugin commands go last: registration is first-wins, so an app command
99
+ // with the same name keeps precedence over the plugin's.
100
+ ...plugins.flatMap((plugin) => plugin.commands),
101
+ ];
56
102
  for (const extra of manifest.commands ?? []) {
57
103
  const mod = (await app.importModule(extra));
58
104
  if (mod.default)
59
- modules.push(mod);
105
+ candidates.push(mod);
60
106
  }
61
- for (const mod of modules) {
107
+ for (const mod of candidates) {
108
+ try {
109
+ const name = parseSignature(new mod.default().signature ?? '').name;
110
+ if (name === '')
111
+ continue;
112
+ if (seen.has(name))
113
+ continue;
114
+ seen.add(name);
115
+ }
116
+ catch {
117
+ // register() below surfaces the real error.
118
+ }
62
119
  try {
63
120
  kernel.register(mod);
64
121
  }
65
122
  catch (error) {
66
- (options.stderr ?? process.stderr).write((error instanceof Error ? error.message : String(error)) + '\n');
123
+ stderr.write((error instanceof Error ? error.message : String(error)) + '\n');
67
124
  }
68
125
  }
126
+ // Strip the global flags before dispatch so commands don't see them as
127
+ // unknown options; remember the command name for envelopes/errors.
128
+ const dispatchArgv = argv.filter((a) => a !== '--json' && a !== '--plain' && a !== '--profile');
129
+ const commandName = dispatchArgv[0];
69
130
  // Global flags.
70
- const [first] = argv;
71
- if (first === '--help' || first === '-h' || first === undefined) {
131
+ const [first] = dispatchArgv;
132
+ if (first === undefined || first === '--help' || first === '-h') {
133
+ if (jsonMode) {
134
+ stdout.write(output.jsonEnvelope({ ok: true, exitCode: 0, command: 'help', commands: kernel.list().map((c) => c.name) }));
135
+ return 0;
136
+ }
72
137
  const lines = [];
73
138
  renderCommandList(manifest.name, manifest.version, kernel.list(), lines);
74
139
  output.raw(lines.join('\n'));
140
+ output.raw('\n\nGlobal flags:\n --help/-h Show this help\n --version Show the version\n --json Machine-readable JSON output\n --plain Strip all ANSI styling\n --profile Print boot and command timings');
75
141
  return 0;
76
142
  }
77
143
  if (first === '--version') {
144
+ if (jsonMode) {
145
+ stdout.write(output.jsonEnvelope({ ok: true, exitCode: 0, command: 'version', version: manifest.version }));
146
+ return 0;
147
+ }
78
148
  output.info(`${manifest.name} v${manifest.version}`);
79
149
  return 0;
80
150
  }
81
- if (first !== undefined && (argv[1] === '--help' || argv[1] === '-h') && kernel.has(first)) {
151
+ if ((argv[1] === '--help' || argv[1] === '-h') && kernel.has(first)) {
152
+ if (jsonMode) {
153
+ const entry = kernel.get(first);
154
+ stdout.write(output.jsonEnvelope({
155
+ ok: true,
156
+ exitCode: 0,
157
+ command: first,
158
+ help: { usage: entry.signature.name, description: entry.description },
159
+ }));
160
+ return 0;
161
+ }
82
162
  const lines = [];
83
163
  renderCommandHelp(manifest.name, kernel.get(first), lines);
84
164
  output.raw(lines.join('\n'));
85
165
  return 0;
86
166
  }
87
167
  try {
88
- return await kernel.dispatch(argv);
168
+ const code = await kernel.dispatch(resolveGroup(kernel, dispatchArgv));
169
+ if (jsonMode) {
170
+ stdout.write(output.jsonEnvelope({
171
+ ok: code === 0,
172
+ exitCode: code,
173
+ command: commandName,
174
+ durationMs: Date.now() - startedAt,
175
+ ...(bootProfile === undefined ? {} : { boot: bootProfile }),
176
+ }));
177
+ }
178
+ else {
179
+ if (profileMode) {
180
+ renderProfile(output, bootProfile, caps, {
181
+ command: commandName,
182
+ commandMs: Date.now() - startedAt - (bootProfile?.totalMs ?? 0),
183
+ totalMs: Date.now() - startedAt,
184
+ });
185
+ }
186
+ if (code === 0)
187
+ await nudgeUpdate(output, manifest, updateOptions);
188
+ }
189
+ return code;
89
190
  }
90
- catch (error) {
91
- return renderError(error, output);
191
+ catch (rawError) {
192
+ let parsed;
193
+ if (rawError instanceof UsageError) {
194
+ parsed = { message: rawError.message, hint: rawError.hint, usage: rawError.usage };
195
+ }
196
+ else if (rawError instanceof Error) {
197
+ parsed = { message: rawError.message };
198
+ }
199
+ else {
200
+ parsed = { message: String(rawError) };
201
+ }
202
+ const code = renderError(rawError, output);
203
+ if (jsonMode) {
204
+ stdout.write(output.jsonEnvelope({
205
+ ok: false,
206
+ exitCode: code,
207
+ command: commandName,
208
+ durationMs: Date.now() - startedAt,
209
+ ...(bootProfile === undefined ? {} : { boot: bootProfile }),
210
+ error: parsed,
211
+ }));
212
+ }
213
+ return code;
214
+ }
215
+ }
216
+ /**
217
+ * Render the `--profile` report. Uses `Output` so it respects `--plain`
218
+ * (no ANSI) and keeps the timing data machine-readable under `--json`.
219
+ */
220
+ function renderProfile(output, boot, caps, totals) {
221
+ const rows = [['total', `${totals.totalMs}ms`]];
222
+ if (boot !== undefined) {
223
+ rows.push(['boot', `${boot.totalMs}ms`]);
224
+ // Every hook is listed, including sub-millisecond ones: which providers
225
+ // are effectively free is exactly what you profile for.
226
+ for (const timing of boot.providers) {
227
+ rows.push([` ${timing.provider}.${timing.hook}`, `${timing.durationMs}ms`]);
228
+ }
92
229
  }
230
+ if (totals.command !== undefined) {
231
+ rows.push([`command ${totals.command}`, `${totals.commandMs}ms`]);
232
+ }
233
+ output.line();
234
+ output.raw(renderTable([
235
+ { header: 'stage', align: 'left' },
236
+ { header: 'time', align: 'right' },
237
+ ], rows, { level: caps.colorLevel, unicode: caps.unicode }));
238
+ }
239
+ /**
240
+ * Let a bare namespace run its group's `default` command, the way
241
+ * `git remote` falls back to `git remote -h` style helpers: `db` runs
242
+ * `db:default` when that command exists.
243
+ *
244
+ * Everything else is passed through untouched, so grouping never changes
245
+ * how a real command resolves.
246
+ */
247
+ function resolveGroup(kernel, argv) {
248
+ const [name, ...rest] = argv;
249
+ if (name === undefined || kernel.has(name) || !kernel.hasGroup(name))
250
+ return argv;
251
+ const fallback = `${name}:default`;
252
+ if (!kernel.has(fallback))
253
+ return argv;
254
+ return [fallback, ...rest];
255
+ }
256
+ /**
257
+ * Mention a newer published version, at most once per cache window.
258
+ *
259
+ * Deliberately narrow: only on success, only for a TTY, never in JSON mode,
260
+ * and off entirely when the manifest says `updates: false` or CI is set. The
261
+ * check is bounded by its own timeout, so a slow registry can't stall exit.
262
+ */
263
+ async function nudgeUpdate(output, manifest, options) {
264
+ if (options === undefined)
265
+ return;
266
+ const info = await checkForUpdate(options).catch(() => undefined);
267
+ if (info === undefined)
268
+ return;
269
+ const line = formatUpdateNudge(info, manifest.bin);
270
+ if (line !== null)
271
+ output.muted(line);
93
272
  }
94
273
  function registerBuiltIns(kernel) {
95
274
  kernel.register({
package/dist/run.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"run.js","sourceRoot":"","sources":["../src/run.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"run.js","sourceRoot":"","sources":["../src/run.ts"],"names":[],"mappings":"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"}
package/dist/tui.d.ts ADDED
@@ -0,0 +1 @@
1
+ export * from '@mudah-cli/tui';
package/dist/tui.js ADDED
@@ -0,0 +1,2 @@
1
+ export * from '@mudah-cli/tui';
2
+ //# sourceMappingURL=tui.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tui.js","sourceRoot":"","sources":["../src/tui.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mudah-cli/mudah",
3
- "version": "0.1.0",
3
+ "version": "0.3.0",
4
4
  "description": "An ergonomic, animation-rich CLI framework — speed, sleek design, and developer ergonomics for Node and Bun.",
5
5
  "type": "module",
6
6
  "license": "MIT",
@@ -24,6 +24,10 @@
24
24
  "types": "./dist/animation.d.ts",
25
25
  "default": "./dist/animation.js"
26
26
  },
27
+ "./tui": {
28
+ "types": "./dist/tui.d.ts",
29
+ "default": "./dist/tui.js"
30
+ },
27
31
  "./testing": {
28
32
  "types": "./dist/testing.d.ts",
29
33
  "default": "./dist/testing.js"
@@ -35,14 +39,15 @@
35
39
  ],
36
40
  "sideEffects": false,
37
41
  "dependencies": {
38
- "@mudah-cli/animation": "^0.1.0",
39
- "@mudah-cli/config": "^0.1.0",
40
- "@mudah-cli/console": "^0.1.0",
41
- "@mudah-cli/container": "^0.1.0",
42
- "@mudah-cli/core": "^0.1.0",
43
- "@mudah-cli/terminal": "^0.1.0",
44
- "@mudah-cli/testing": "^0.1.0",
45
- "@mudah-cli/ui": "^0.1.0"
42
+ "@mudah-cli/animation": "^0.3.0",
43
+ "@mudah-cli/config": "^0.3.0",
44
+ "@mudah-cli/console": "^0.3.0",
45
+ "@mudah-cli/container": "^0.3.0",
46
+ "@mudah-cli/core": "^0.3.0",
47
+ "@mudah-cli/terminal": "^0.3.0",
48
+ "@mudah-cli/testing": "^0.3.0",
49
+ "@mudah-cli/tui": "^0.3.0",
50
+ "@mudah-cli/ui": "^0.3.0"
46
51
  },
47
52
  "publishConfig": {
48
53
  "access": "public"