@mudah-cli/mudah 0.8.0 → 0.9.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.
Files changed (102) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +70 -0
  3. package/dist/autocomplete.d.ts +8 -0
  4. package/dist/autocomplete.js +38 -0
  5. package/dist/autocomplete.js.map +1 -0
  6. package/dist/built-ins.d.ts +9 -0
  7. package/dist/built-ins.js +144 -0
  8. package/dist/built-ins.js.map +1 -0
  9. package/dist/commands/autocomplete.command.d.ts +11 -0
  10. package/dist/commands/autocomplete.command.js +16 -0
  11. package/dist/commands/autocomplete.command.js.map +1 -0
  12. package/dist/commands/build.command.d.ts +1 -0
  13. package/dist/commands/build.command.js +2 -1
  14. package/dist/commands/build.command.js.map +1 -1
  15. package/dist/commands/cache.command.d.ts +11 -0
  16. package/dist/commands/cache.command.js +47 -0
  17. package/dist/commands/cache.command.js.map +1 -0
  18. package/dist/commands/complete.command.d.ts +13 -0
  19. package/dist/commands/complete.command.js +23 -0
  20. package/dist/commands/complete.command.js.map +1 -0
  21. package/dist/commands/config.diff.command.d.ts +8 -0
  22. package/dist/commands/config.diff.command.js +96 -0
  23. package/dist/commands/config.diff.command.js.map +1 -0
  24. package/dist/commands/config.set.command.d.ts +8 -0
  25. package/dist/commands/config.set.command.js +66 -0
  26. package/dist/commands/config.set.command.js.map +1 -0
  27. package/dist/commands/config.show.command.d.ts +8 -0
  28. package/dist/commands/config.show.command.js +38 -0
  29. package/dist/commands/config.show.command.js.map +1 -0
  30. package/dist/commands/config.source.command.d.ts +8 -0
  31. package/dist/commands/config.source.command.js +42 -0
  32. package/dist/commands/config.source.command.js.map +1 -0
  33. package/dist/commands/config.validate.command.d.ts +14 -0
  34. package/dist/commands/config.validate.command.js +63 -0
  35. package/dist/commands/config.validate.command.js.map +1 -0
  36. package/dist/commands/dev.command.d.ts +1 -0
  37. package/dist/commands/dev.command.js +1 -0
  38. package/dist/commands/dev.command.js.map +1 -1
  39. package/dist/commands/docs.widgets.command.d.ts +11 -0
  40. package/dist/commands/docs.widgets.command.js +17 -0
  41. package/dist/commands/docs.widgets.command.js.map +1 -0
  42. package/dist/commands/doctor.command.d.ts +1 -0
  43. package/dist/commands/doctor.command.js +36 -6
  44. package/dist/commands/doctor.command.js.map +1 -1
  45. package/dist/commands/graph.command.d.ts +10 -0
  46. package/dist/commands/graph.command.js +21 -0
  47. package/dist/commands/graph.command.js.map +1 -0
  48. package/dist/commands/help.command.d.ts +1 -0
  49. package/dist/commands/help.command.js +2 -2
  50. package/dist/commands/help.command.js.map +1 -1
  51. package/dist/commands/info.command.d.ts +8 -0
  52. package/dist/commands/info.command.js +61 -0
  53. package/dist/commands/info.command.js.map +1 -0
  54. package/dist/commands/lsp.command.d.ts +12 -0
  55. package/dist/commands/lsp.command.js +57 -0
  56. package/dist/commands/lsp.command.js.map +1 -0
  57. package/dist/commands/make.command.d.ts +2 -0
  58. package/dist/commands/make.command.js +75 -4
  59. package/dist/commands/make.command.js.map +1 -1
  60. package/dist/commands/plugins.list.command.d.ts +12 -0
  61. package/dist/commands/plugins.list.command.js +29 -0
  62. package/dist/commands/plugins.list.command.js.map +1 -0
  63. package/dist/commands/plugins.update.command.d.ts +29 -0
  64. package/dist/commands/plugins.update.command.js +78 -0
  65. package/dist/commands/plugins.update.command.js.map +1 -0
  66. package/dist/commands/plugins.watch.command.d.ts +10 -0
  67. package/dist/commands/plugins.watch.command.js +37 -0
  68. package/dist/commands/plugins.watch.command.js.map +1 -0
  69. package/dist/commands/replay.command.d.ts +10 -0
  70. package/dist/commands/replay.command.js +50 -0
  71. package/dist/commands/replay.command.js.map +1 -0
  72. package/dist/commands/storybook.command.d.ts +11 -0
  73. package/dist/commands/storybook.command.js +84 -0
  74. package/dist/commands/storybook.command.js.map +1 -0
  75. package/dist/commands/telemetry.command.d.ts +12 -0
  76. package/dist/commands/telemetry.command.js +55 -0
  77. package/dist/commands/telemetry.command.js.map +1 -0
  78. package/dist/commands/test.command.d.ts +13 -0
  79. package/dist/commands/test.command.js +83 -0
  80. package/dist/commands/test.command.js.map +1 -0
  81. package/dist/commands/tutorial.command.d.ts +12 -0
  82. package/dist/commands/tutorial.command.js +57 -0
  83. package/dist/commands/tutorial.command.js.map +1 -0
  84. package/dist/commands/version.command.d.ts +1 -0
  85. package/dist/commands/version.command.js +1 -0
  86. package/dist/commands/version.command.js.map +1 -1
  87. package/dist/commands/watch.command.d.ts +13 -0
  88. package/dist/commands/watch.command.js +62 -0
  89. package/dist/commands/watch.command.js.map +1 -0
  90. package/dist/index.d.ts +8 -5
  91. package/dist/index.js +8 -5
  92. package/dist/index.js.map +1 -1
  93. package/dist/lsp.d.ts +147 -0
  94. package/dist/lsp.js +497 -0
  95. package/dist/lsp.js.map +1 -0
  96. package/dist/run.d.ts +4 -2
  97. package/dist/run.js +372 -37
  98. package/dist/run.js.map +1 -1
  99. package/dist/watcher.d.ts +20 -1
  100. package/dist/watcher.js +41 -4
  101. package/dist/watcher.js.map +1 -1
  102. package/package.json +27 -10
package/dist/run.js CHANGED
@@ -1,13 +1,200 @@
1
- import { Application, UsageError, loadManifest, checkForUpdate, formatUpdateNudge, } from '@mudah-cli/core';
2
- import { detectCapabilities } from '@mudah-cli/terminal';
3
- import { Output, detectTheme, renderTable } from '@mudah-cli/ui';
4
- import { ConsoleKernel, renderError, renderCommandHelp, renderCommandList, parseSignature } from '@mudah-cli/console';
1
+ import { mkdirSync, writeFileSync } from 'node:fs';
2
+ import { dirname, join } from 'node:path';
3
+ import { ConsoleKernel, parseSignature, renderCommandHelp, renderCommandList, renderError, } from '@mudah-cli/console';
4
+ import { Application, checkForUpdate, createTelemetry, formatUpdateNudge, loadManifest, resolveTelemetry, setLocaleFromEnv, UsageError, } from '@mudah-cli/core';
5
+ import { detectCapabilities, osc, } from '@mudah-cli/terminal';
6
+ import { detectTheme, Output, renderTable } from '@mudah-cli/ui';
7
+ import { normalizeAutocompleteShell, renderAutocompleteScript } from './autocomplete.js';
8
+ import { registerWantedFrameworkBuiltIns } from './built-ins.js';
5
9
  import HelpCommand from './commands/help.command.js';
6
10
  import VersionCommand from './commands/version.command.js';
7
- import MakeCommand from './commands/make.command.js';
8
- import BuildCommand from './commands/build.command.js';
9
- import DoctorCommand from './commands/doctor.command.js';
10
- import DevCommand from './commands/dev.command.js';
11
+ /**
12
+ * The first non-flag token in argv — i.e. the command name — used before the
13
+ * kernel exists (the telemetry guard runs before dispatch). Value-taking
14
+ * global flags have already been spliced out by `consumeGlobalFlags`.
15
+ */
16
+ function firstCommandToken(argv) {
17
+ for (const token of argv) {
18
+ if (token === '--')
19
+ return undefined;
20
+ if (!token.startsWith('-'))
21
+ return token;
22
+ }
23
+ return undefined;
24
+ }
25
+ /** Parsed timeout in milliseconds. */
26
+ function parseTimeout(value) {
27
+ const match = /^(\d+(?:\.\d+)?)(ms|s|m)?$/i.exec(value.trim());
28
+ if (!match)
29
+ throw new UsageError(`Invalid timeout value "${value}". Use a number with optional suffix (ms, s, m).`);
30
+ const n = Number(match[1]);
31
+ if (!Number.isFinite(n) || n <= 0)
32
+ throw new UsageError(`Timeout must be a positive number, got "${value}".`);
33
+ const unit = (match[2] ?? 'ms').toLowerCase();
34
+ if (unit === 's')
35
+ return Math.round(n * 1_000);
36
+ if (unit === 'm')
37
+ return Math.round(n * 60_000);
38
+ return Math.round(n);
39
+ }
40
+ /** Parsed memory limit in bytes. */
41
+ function parseMemory(value) {
42
+ const match = /^(\d+(?:\.\d+)?)(kb|mb|gb|tb|b)?$/i.exec(value.trim());
43
+ if (!match)
44
+ throw new UsageError(`Invalid memory value "${value}". Use a number with optional suffix (kb, mb, gb, tb, b).`);
45
+ const n = Number(match[1]);
46
+ if (!Number.isFinite(n) || n <= 0)
47
+ throw new UsageError(`Memory must be a positive number, got "${value}".`);
48
+ const unit = (match[2] ?? 'mb').toLowerCase();
49
+ if (unit === 'kb')
50
+ return Math.round(n * 1_024);
51
+ if (unit === 'mb')
52
+ return Math.round(n * 1_048_576);
53
+ if (unit === 'gb')
54
+ return Math.round(n * 1_073_741_824);
55
+ if (unit === 'tb')
56
+ return Math.round(n * 1_099_511_627_776);
57
+ return Math.round(n);
58
+ }
59
+ /** Pull global flags out of argv (mutates the array). */
60
+ function consumeGlobalFlags(argv, env) {
61
+ const flags = {
62
+ json: false,
63
+ plain: false,
64
+ profile: false,
65
+ timeoutMs: 0,
66
+ memoryLimit: 0,
67
+ headless: env['MUDAH_HEADLESS'] === '1' || env['MUDAH_HEADLESS'] === 'true',
68
+ a11yTree: env['MUDAH_A11Y_TREE'] === '1',
69
+ trace: false,
70
+ };
71
+ for (let i = 0; i < argv.length; i++) {
72
+ const arg = argv[i];
73
+ if (arg === '--json') {
74
+ flags.json = true;
75
+ continue;
76
+ }
77
+ if (arg === '--plain') {
78
+ flags.plain = true;
79
+ continue;
80
+ }
81
+ if (arg === '--profile') {
82
+ flags.profile = true;
83
+ continue;
84
+ }
85
+ if (arg === '--headless') {
86
+ flags.headless = true;
87
+ argv.splice(i, 1);
88
+ i--;
89
+ continue;
90
+ }
91
+ if (arg === '--trace') {
92
+ flags.trace = true;
93
+ argv.splice(i, 1);
94
+ i--;
95
+ continue;
96
+ }
97
+ if (arg === '--a11y-tree') {
98
+ flags.a11yTree = true;
99
+ argv.splice(i, 1);
100
+ i--;
101
+ continue;
102
+ }
103
+ if (arg === '--timeout' && i + 1 < argv.length) {
104
+ flags.timeoutMs = parseTimeout(argv[i + 1]);
105
+ argv.splice(i, 2);
106
+ i--;
107
+ continue;
108
+ }
109
+ if (arg.startsWith('--timeout=')) {
110
+ flags.timeoutMs = parseTimeout(arg.slice(10));
111
+ argv.splice(i, 1);
112
+ i--;
113
+ continue;
114
+ }
115
+ if (arg === '--memory' && i + 1 < argv.length) {
116
+ flags.memoryLimit = parseMemory(argv[i + 1]);
117
+ argv.splice(i, 2);
118
+ i--;
119
+ continue;
120
+ }
121
+ if (arg.startsWith('--memory=')) {
122
+ flags.memoryLimit = parseMemory(arg.slice(9));
123
+ argv.splice(i, 1);
124
+ i--;
125
+ continue;
126
+ }
127
+ if (arg === '--profile-file' && i + 1 < argv.length) {
128
+ flags.profileFile = argv[i + 1];
129
+ argv.splice(i, 2);
130
+ i--;
131
+ continue;
132
+ }
133
+ if (arg.startsWith('--profile-file=')) {
134
+ flags.profileFile = arg.slice(15);
135
+ argv.splice(i, 1);
136
+ i--;
137
+ continue;
138
+ }
139
+ if (arg === '--autocomplete') {
140
+ const next = argv[i + 1];
141
+ flags.autocomplete = next !== undefined && !next.startsWith('-') ? next : 'bash';
142
+ argv.splice(i, flags.autocomplete === next ? 2 : 1);
143
+ i--;
144
+ continue;
145
+ }
146
+ if (arg.startsWith('--autocomplete=')) {
147
+ flags.autocomplete = arg.slice(15);
148
+ argv.splice(i, 1);
149
+ i--;
150
+ }
151
+ }
152
+ return flags;
153
+ }
154
+ function resolveProfileFile(cwd, flags, env) {
155
+ if (flags.profileFile !== undefined && flags.profileFile.length > 0)
156
+ return flags.profileFile;
157
+ if (!flags.profile)
158
+ return undefined;
159
+ const fromEnv = env['MUDAH_PROFILE_FILE'];
160
+ if (fromEnv === undefined)
161
+ return undefined;
162
+ return fromEnv.length > 0 ? fromEnv : join(cwd, '.mudah', 'profile.json');
163
+ }
164
+ /** Chrome-trace / simple `{ name, ph, ts, dur }` events for flamegraphing. */
165
+ function writeChromeTrace(file, boot, totals) {
166
+ const events = [];
167
+ let ts = 0;
168
+ if (boot !== undefined) {
169
+ events.push({ name: 'boot', ph: 'X', ts: 0, dur: boot.totalMs * 1000, pid: 1, tid: 1 });
170
+ for (const timing of boot.providers) {
171
+ events.push({
172
+ name: `${timing.provider}.${timing.hook}`,
173
+ ph: 'X',
174
+ ts,
175
+ dur: timing.durationMs * 1000,
176
+ pid: 1,
177
+ tid: 1,
178
+ });
179
+ ts += timing.durationMs * 1000;
180
+ }
181
+ }
182
+ events.push({
183
+ name: totals.command === undefined ? 'command' : `command ${totals.command}`,
184
+ ph: 'X',
185
+ ts,
186
+ dur: totals.commandMs * 1000,
187
+ pid: 1,
188
+ tid: 1,
189
+ });
190
+ try {
191
+ mkdirSync(dirname(file), { recursive: true });
192
+ writeFileSync(file, `${JSON.stringify({ traceEvents: events }, null, 2)}\n`, 'utf8');
193
+ }
194
+ catch {
195
+ // A read-only filesystem just means no profile file.
196
+ }
197
+ }
11
198
  /**
12
199
  * The Mudah entry point. An app's `bin/<name>` stub is:
13
200
  *
@@ -24,8 +211,20 @@ import DevCommand from './commands/dev.command.js';
24
211
  export async function run(options = {}) {
25
212
  const cwd = options.cwd ?? process.cwd();
26
213
  const argv = options.argv ?? process.argv.slice(2);
27
- const env = options.env;
28
- const caps = detectCapabilities({ env });
214
+ const env = { ...(options.env ?? process.env) };
215
+ const flags = consumeGlobalFlags(argv, env);
216
+ if (flags.headless) {
217
+ env['MUDAH_HEADLESS'] = '1';
218
+ env['MUDAH_REDUCED_MOTION'] = '1';
219
+ if (env['CI'] === undefined || env['CI'] === '')
220
+ env['CI'] = '1';
221
+ }
222
+ if (flags.a11yTree)
223
+ env['MUDAH_A11Y_TREE'] = '1';
224
+ // Adopt the locale before any command registers, so help descriptions
225
+ // resolve in the active language.
226
+ setLocaleFromEnv(env);
227
+ const caps = detectCapabilities({ env, isTty: flags.headless ? false : undefined });
29
228
  // Resolved once: every later write (envelopes included) targets these, so
30
229
  // output modes work with or without injected streams.
31
230
  const stdout = options.stdout ?? process.stdout;
@@ -36,10 +235,20 @@ export async function run(options = {}) {
36
235
  }
37
236
  catch (error) {
38
237
  const message = error instanceof Error ? error.message : String(error);
39
- stderr.write(message + '\n');
238
+ stderr.write(`${message}\n`);
40
239
  return 1;
41
240
  }
42
241
  const app = options.app ?? new Application(cwd, manifest);
242
+ app.config().set('mudah.headless', flags.headless);
243
+ app.config().set('mudah.a11yTree', flags.a11yTree);
244
+ if (flags.trace && typeof app.events().trace === 'function') {
245
+ app.events().trace(true);
246
+ }
247
+ if (flags.autocomplete !== undefined) {
248
+ const script = renderAutocompleteScript(manifest.bin, normalizeAutocompleteShell(flags.autocomplete));
249
+ stdout.write(script.endsWith('\n') ? script : `${script}\n`);
250
+ return 0;
251
+ }
43
252
  const theme = await detectTheme({
44
253
  name: manifest.ui?.theme,
45
254
  allowQuery: caps.themeQuery && options.allowThemeQuery !== false,
@@ -55,15 +264,33 @@ export async function run(options = {}) {
55
264
  osc9: caps.osc9,
56
265
  });
57
266
  // Output-mode flags (--json / --plain) may appear anywhere.
58
- if (argv.includes('--json')) {
267
+ if (flags.json) {
59
268
  output.setMode('json');
60
269
  }
61
- else if (argv.includes('--plain')) {
270
+ else if (flags.plain) {
62
271
  output.setMode('plain');
63
272
  }
64
273
  const jsonMode = output.isMachineReadable;
65
- const profileMode = argv.includes('--profile');
274
+ const profileMode = flags.profile;
275
+ const timeoutMs = flags.timeoutMs;
276
+ const memoryLimit = flags.memoryLimit;
277
+ const profileFile = resolveProfileFile(cwd, flags, env);
66
278
  const startedAt = Date.now();
279
+ // Inspecting the log must not grow it: a `telemetry` run records nothing.
280
+ const telemetry = firstCommandToken(argv) === 'telemetry'
281
+ ? createTelemetry({ enabled: false })
282
+ : resolveTelemetry({
283
+ cwd,
284
+ sink: options.telemetrySink,
285
+ manifestEnabled: manifest.telemetry === true,
286
+ env,
287
+ stdout,
288
+ stderr,
289
+ });
290
+ // Advertise the working directory (OSC 7) once on launch so terminals that
291
+ // track cwd pick it up. Skipped off-TTY and in JSON mode so logs stay clean.
292
+ if (caps.osc7 && !jsonMode)
293
+ osc.workingDir(stdout, cwd);
67
294
  // Update nudge: opt-in per app (a package name must be given) and never in
68
295
  // the way of scripts, CI, or machine-readable output.
69
296
  const ci = env?.['CI'] ?? process.env['CI'];
@@ -81,16 +308,35 @@ export async function run(options = {}) {
81
308
  // Plugins first: their providers must be registered before boot, and their
82
309
  // commands join the same discovery list as the app's own.
83
310
  const plugins = options.disablePlugins === true ? [] : await app.discoverPlugins();
311
+ if (!jsonMode) {
312
+ for (const warning of app.pluginWarnings()) {
313
+ output.warn(warning);
314
+ }
315
+ }
84
316
  // Providers: discover app providers, boot, then evaluate lazy predicates.
85
317
  await app.discoverProviders();
86
318
  const bootProfile = await app.boot({ profile: profileMode });
87
319
  await app.evaluateLazy();
320
+ if (telemetry.enabled) {
321
+ telemetry.recordDuration('boot', bootProfile?.totalMs ?? Date.now() - startedAt, {
322
+ plugins: plugins.length,
323
+ providers: app.providerNames().length,
324
+ });
325
+ for (const timing of bootProfile?.providers ?? []) {
326
+ telemetry.recordDuration('provider', timing.durationMs, {
327
+ provider: timing.provider,
328
+ hook: timing.hook,
329
+ });
330
+ }
331
+ }
88
332
  // Kernel: built-ins first, then — in order — discovered app commands,
89
333
  // manifest extras, and explicitly injected modules (bundled apps).
90
334
  // First registration of a name wins; later duplicates are skipped so a
91
335
  // checkout that both discovers and injects the same command stays clean.
92
- const kernel = new ConsoleKernel(app, output);
93
- registerBuiltIns(kernel);
336
+ const kernel = new ConsoleKernel(app, output, {
337
+ historyFile: join(cwd, '.mudah', 'history'),
338
+ });
339
+ registerReservedBuiltIns(kernel);
94
340
  const seen = new Set(kernel.list().map((entry) => entry.name));
95
341
  const candidates = [
96
342
  ...(await app.discoverCommandModules()),
@@ -120,24 +366,48 @@ export async function run(options = {}) {
120
366
  kernel.register(mod);
121
367
  }
122
368
  catch (error) {
123
- stderr.write((error instanceof Error ? error.message : String(error)) + '\n');
369
+ stderr.write(`${error instanceof Error ? error.message : String(error)}\n`);
124
370
  }
125
371
  }
126
372
  // Strip the global flags before dispatch so commands don't see them as
127
373
  // unknown options; remember the command name for envelopes/errors.
128
- const dispatchArgv = argv.filter((a) => a !== '--json' && a !== '--plain' && a !== '--profile');
374
+ const dispatchArgv = argv.filter((a) => a !== '--json' &&
375
+ a !== '--plain' &&
376
+ a !== '--profile' &&
377
+ a !== '--headless' &&
378
+ a !== '--trace' &&
379
+ a !== '--a11y-tree' &&
380
+ !a.startsWith('--profile-file') &&
381
+ !a.startsWith('--autocomplete'));
129
382
  const commandName = dispatchArgv[0];
383
+ const first = dispatchArgv[0];
384
+ const listing = first === undefined || first === '--help' || first === '-h' || first === 'help' || first === 'complete';
385
+ // Framework built-ins fill remaining names so an app `test`/`watch`
386
+ // keeps precedence. Load only the argv needs, except help/complete.
387
+ await registerWantedFrameworkBuiltIns(kernel, seen, dispatchArgv, listing);
130
388
  // Global flags.
131
- const [first] = dispatchArgv;
389
+ if (flags.a11yTree) {
390
+ const { Column, Label, List, dumpTree } = await import('@mudah-cli/tui');
391
+ const demo = new Column().add(new Label('a11y'), new List(['a', 'b']));
392
+ demo.resize(40, 8);
393
+ stdout.write(`${JSON.stringify(dumpTree(demo))}\n`);
394
+ if (first === undefined || first === 'doctor')
395
+ return 0;
396
+ }
132
397
  if (first === undefined || first === '--help' || first === '-h') {
133
398
  if (jsonMode) {
134
- stdout.write(output.jsonEnvelope({ ok: true, exitCode: 0, command: 'help', commands: kernel.list().map((c) => c.name) }));
399
+ stdout.write(output.jsonEnvelope({
400
+ ok: true,
401
+ exitCode: 0,
402
+ command: 'help',
403
+ commands: kernel.list().map((c) => c.name),
404
+ }));
135
405
  return 0;
136
406
  }
137
407
  const lines = [];
138
408
  renderCommandList(manifest.name, manifest.version, kernel.list(), lines);
139
409
  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');
410
+ 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\n --profile-file Write Chrome-trace timings to a JSON file\n --timeout Kill command after N ms (e.g. --timeout=5s)\n --memory Kill command when heap exceeds N MB (e.g. --memory=512mb)\n --headless Non-TTY, no animations (CI)\n --trace Log every event-bus dispatch\n --a11y-tree Print the accessibility tree as JSON\n --autocomplete Emit bash/zsh/fish completion script');
141
411
  return 0;
142
412
  }
143
413
  if (first === '--version') {
@@ -164,8 +434,69 @@ export async function run(options = {}) {
164
434
  output.raw(lines.join('\n'));
165
435
  return 0;
166
436
  }
437
+ // Set up timeout and memory monitors.
438
+ let timeoutTimer;
439
+ let memoryTimer;
440
+ let timeoutFired = false;
441
+ let memoryFired = false;
442
+ const forceExit = (code) => {
443
+ if (env['VITEST'] !== undefined || env['MUDAH_NO_FORCE_EXIT'] === '1')
444
+ return;
445
+ process.exit(code);
446
+ };
447
+ if (timeoutMs > 0) {
448
+ timeoutTimer = setTimeout(() => {
449
+ timeoutFired = true;
450
+ process.exitCode = 124;
451
+ output.error(`Command timed out after ${Math.round(timeoutMs / 1_000)}s`);
452
+ forceExit(124);
453
+ }, timeoutMs);
454
+ }
455
+ if (memoryLimit > 0) {
456
+ memoryTimer = setInterval(() => {
457
+ const used = process.memoryUsage().heapUsed;
458
+ if (used > memoryLimit) {
459
+ memoryFired = true;
460
+ output.error(`Memory limit exceeded: ${(used / 1_048_576).toFixed(0)}MB > ${(memoryLimit / 1_048_576).toFixed(0)}MB`);
461
+ process.exitCode = 137;
462
+ forceExit(137);
463
+ }
464
+ }, 500);
465
+ }
466
+ function cleanupMonitors() {
467
+ if (timeoutTimer)
468
+ clearTimeout(timeoutTimer);
469
+ if (memoryTimer)
470
+ clearInterval(memoryTimer);
471
+ }
472
+ if (first === 'complete') {
473
+ // Strip only the leading `--` separator the shell scripts insert. A
474
+ // trailing `--` is the partial being completed (`deploy --<TAB>`), so it
475
+ // must survive.
476
+ const after = dispatchArgv.slice(1);
477
+ const rest = after[0] === '--' ? after.slice(1) : after;
478
+ const candidates = kernel.complete(rest);
479
+ stdout.write(candidates.length > 0 ? `${candidates.join('\n')}\n` : '');
480
+ return 0;
481
+ }
482
+ if (first !== undefined && !listing && !kernel.has(first) && !kernel.hasGroup(first)) {
483
+ await registerWantedFrameworkBuiltIns(kernel, seen, dispatchArgv, true);
484
+ }
167
485
  try {
168
486
  const code = await kernel.dispatch(resolveGroup(kernel, dispatchArgv));
487
+ const totals = {
488
+ command: commandName,
489
+ commandMs: Date.now() - startedAt - (bootProfile?.totalMs ?? 0),
490
+ totalMs: Date.now() - startedAt,
491
+ };
492
+ telemetry.recordDuration('command', totals.commandMs, {
493
+ command: commandName ?? '(none)',
494
+ exitCode: code,
495
+ });
496
+ telemetry.recordDuration('total', totals.totalMs, { command: commandName ?? '(none)' });
497
+ if (profileFile !== undefined) {
498
+ writeChromeTrace(profileFile, bootProfile, totals);
499
+ }
169
500
  if (jsonMode) {
170
501
  stdout.write(output.jsonEnvelope({
171
502
  ok: code === 0,
@@ -177,15 +508,15 @@ export async function run(options = {}) {
177
508
  }
178
509
  else {
179
510
  if (profileMode) {
180
- renderProfile(output, bootProfile, caps, {
181
- command: commandName,
182
- commandMs: Date.now() - startedAt - (bootProfile?.totalMs ?? 0),
183
- totalMs: Date.now() - startedAt,
184
- });
511
+ renderProfile(output, bootProfile, caps, totals);
185
512
  }
186
513
  if (code === 0)
187
514
  await nudgeUpdate(output, manifest, updateOptions);
188
515
  }
516
+ if (timeoutFired)
517
+ return 124;
518
+ if (memoryFired)
519
+ return 137;
189
520
  return code;
190
521
  }
191
522
  catch (rawError) {
@@ -199,7 +530,17 @@ export async function run(options = {}) {
199
530
  else {
200
531
  parsed = { message: String(rawError) };
201
532
  }
533
+ if (typeof app.notifyError === 'function') {
534
+ await app.notifyError(rawError).catch(() => undefined);
535
+ }
202
536
  const code = renderError(rawError, output);
537
+ telemetry.record('error', {
538
+ command: commandName ?? '(none)',
539
+ exitCode: code,
540
+ message: parsed.message,
541
+ ...(parsed.usage === undefined ? {} : { usage: parsed.usage }),
542
+ });
543
+ telemetry.recordDuration('total', Date.now() - startedAt, { command: commandName ?? '(none)' });
203
544
  if (jsonMode) {
204
545
  stdout.write(output.jsonEnvelope({
205
546
  ok: false,
@@ -212,6 +553,10 @@ export async function run(options = {}) {
212
553
  }
213
554
  return code;
214
555
  }
556
+ finally {
557
+ cleanupMonitors();
558
+ await app.shutdown();
559
+ }
215
560
  }
216
561
  /**
217
562
  * Render the `--profile` report. Uses `Output` so it respects `--plain`
@@ -270,7 +615,7 @@ async function nudgeUpdate(output, manifest, options) {
270
615
  if (line !== null)
271
616
  output.muted(line);
272
617
  }
273
- function registerBuiltIns(kernel) {
618
+ function registerReservedBuiltIns(kernel) {
274
619
  kernel.register({
275
620
  default: class extends HelpCommand {
276
621
  constructor() {
@@ -279,15 +624,5 @@ function registerBuiltIns(kernel) {
279
624
  },
280
625
  });
281
626
  kernel.register({ default: VersionCommand });
282
- kernel.register({ default: MakeCommand });
283
- kernel.register({ default: BuildCommand });
284
- kernel.register({ default: DoctorCommand });
285
- kernel.register({
286
- default: class extends DevCommand {
287
- constructor() {
288
- super(kernel);
289
- }
290
- },
291
- });
292
627
  }
293
628
  //# sourceMappingURL=run.js.map
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/watcher.d.ts CHANGED
@@ -1,10 +1,29 @@
1
1
  export interface WatcherOptions {
2
2
  /** Debounce window in milliseconds. Default 150. */
3
3
  debounceMs?: number;
4
+ /** Path fragments to ignore (e.g. `node_modules`). */
5
+ ignore?: string[];
4
6
  }
5
7
  /**
6
8
  * Watch a set of files or directories (recursively where the platform
7
9
  * supports it) and invoke `onChange` after a quiet debounce period.
8
10
  * Returns a stop function. Missing paths are skipped silently.
9
11
  */
10
- export declare function createWatcher(paths: string[], onChange: () => void, options?: WatcherOptions): () => void;
12
+ export declare function createWatcher(paths: string[], onChange: (filename?: string) => void, options?: WatcherOptions): () => void;
13
+ /**
14
+ * Watch a plugin directory (typically `node_modules` or a local plugin
15
+ * folder) and invoke `onReload` after a quiet debounce. Uses
16
+ * {@link createWatcher}.
17
+ */
18
+ export declare function watchPlugins(dir: string, onReload: (filename?: string) => void, options?: WatcherOptions): () => void;
19
+ /** Directories `mudah watch` should observe for a glob like `src/**`. */
20
+ export declare function pathsFromGlob(base: string, glob: string): string[];
21
+ /**
22
+ * Watch `node_modules` (or `dir`) and re-import providers via `reloadPlugins`.
23
+ */
24
+ export declare function hotReloadPlugins(app: {
25
+ basePath: string;
26
+ reloadPlugins: () => Promise<unknown>;
27
+ }, onReload?: (filename?: string) => void, options?: WatcherOptions & {
28
+ dir?: string;
29
+ }): () => void;