@mudah-cli/mudah 0.8.0 → 0.9.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 (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 +45 -11
  44. package/dist/commands/doctor.command.js.map +1 -1
  45. package/dist/commands/gallery.command.d.ts +11 -0
  46. package/dist/commands/gallery.command.js +84 -0
  47. package/dist/commands/gallery.command.js.map +1 -0
  48. package/dist/commands/graph.command.d.ts +10 -0
  49. package/dist/commands/graph.command.js +21 -0
  50. package/dist/commands/graph.command.js.map +1 -0
  51. package/dist/commands/help.command.d.ts +1 -0
  52. package/dist/commands/help.command.js +2 -2
  53. package/dist/commands/help.command.js.map +1 -1
  54. package/dist/commands/info.command.d.ts +8 -0
  55. package/dist/commands/info.command.js +61 -0
  56. package/dist/commands/info.command.js.map +1 -0
  57. package/dist/commands/lsp.command.d.ts +12 -0
  58. package/dist/commands/lsp.command.js +57 -0
  59. package/dist/commands/lsp.command.js.map +1 -0
  60. package/dist/commands/make.command.d.ts +5 -0
  61. package/dist/commands/make.command.js +270 -48
  62. package/dist/commands/make.command.js.map +1 -1
  63. package/dist/commands/plugins.list.command.d.ts +12 -0
  64. package/dist/commands/plugins.list.command.js +29 -0
  65. package/dist/commands/plugins.list.command.js.map +1 -0
  66. package/dist/commands/plugins.update.command.d.ts +29 -0
  67. package/dist/commands/plugins.update.command.js +78 -0
  68. package/dist/commands/plugins.update.command.js.map +1 -0
  69. package/dist/commands/plugins.watch.command.d.ts +10 -0
  70. package/dist/commands/plugins.watch.command.js +37 -0
  71. package/dist/commands/plugins.watch.command.js.map +1 -0
  72. package/dist/commands/replay.command.d.ts +10 -0
  73. package/dist/commands/replay.command.js +50 -0
  74. package/dist/commands/replay.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 +506 -0
  95. package/dist/lsp.js.map +1 -0
  96. package/dist/run.d.ts +4 -2
  97. package/dist/run.js +355 -38
  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,193 @@
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
+ trace: false,
69
+ };
70
+ for (let i = 0; i < argv.length; i++) {
71
+ const arg = argv[i];
72
+ if (arg === '--json') {
73
+ flags.json = true;
74
+ continue;
75
+ }
76
+ if (arg === '--plain') {
77
+ flags.plain = true;
78
+ continue;
79
+ }
80
+ if (arg === '--profile') {
81
+ flags.profile = true;
82
+ continue;
83
+ }
84
+ if (arg === '--headless') {
85
+ flags.headless = true;
86
+ argv.splice(i, 1);
87
+ i--;
88
+ continue;
89
+ }
90
+ if (arg === '--trace') {
91
+ flags.trace = true;
92
+ argv.splice(i, 1);
93
+ i--;
94
+ continue;
95
+ }
96
+ if (arg === '--timeout' && i + 1 < argv.length) {
97
+ flags.timeoutMs = parseTimeout(argv[i + 1]);
98
+ argv.splice(i, 2);
99
+ i--;
100
+ continue;
101
+ }
102
+ if (arg.startsWith('--timeout=')) {
103
+ flags.timeoutMs = parseTimeout(arg.slice(10));
104
+ argv.splice(i, 1);
105
+ i--;
106
+ continue;
107
+ }
108
+ if (arg === '--memory' && i + 1 < argv.length) {
109
+ flags.memoryLimit = parseMemory(argv[i + 1]);
110
+ argv.splice(i, 2);
111
+ i--;
112
+ continue;
113
+ }
114
+ if (arg.startsWith('--memory=')) {
115
+ flags.memoryLimit = parseMemory(arg.slice(9));
116
+ argv.splice(i, 1);
117
+ i--;
118
+ continue;
119
+ }
120
+ if (arg === '--profile-file' && i + 1 < argv.length) {
121
+ flags.profileFile = argv[i + 1];
122
+ argv.splice(i, 2);
123
+ i--;
124
+ continue;
125
+ }
126
+ if (arg.startsWith('--profile-file=')) {
127
+ flags.profileFile = arg.slice(15);
128
+ argv.splice(i, 1);
129
+ i--;
130
+ continue;
131
+ }
132
+ if (arg === '--autocomplete') {
133
+ const next = argv[i + 1];
134
+ flags.autocomplete = next !== undefined && !next.startsWith('-') ? next : 'bash';
135
+ argv.splice(i, flags.autocomplete === next ? 2 : 1);
136
+ i--;
137
+ continue;
138
+ }
139
+ if (arg.startsWith('--autocomplete=')) {
140
+ flags.autocomplete = arg.slice(15);
141
+ argv.splice(i, 1);
142
+ i--;
143
+ }
144
+ }
145
+ return flags;
146
+ }
147
+ function resolveProfileFile(cwd, flags, env) {
148
+ if (flags.profileFile !== undefined && flags.profileFile.length > 0)
149
+ return flags.profileFile;
150
+ if (!flags.profile)
151
+ return undefined;
152
+ const fromEnv = env['MUDAH_PROFILE_FILE'];
153
+ if (fromEnv === undefined)
154
+ return undefined;
155
+ return fromEnv.length > 0 ? fromEnv : join(cwd, '.mudah', 'profile.json');
156
+ }
157
+ /** Chrome-trace / simple `{ name, ph, ts, dur }` events for flamegraphing. */
158
+ function writeChromeTrace(file, boot, totals) {
159
+ const events = [];
160
+ let ts = 0;
161
+ if (boot !== undefined) {
162
+ events.push({ name: 'boot', ph: 'X', ts: 0, dur: boot.totalMs * 1000, pid: 1, tid: 1 });
163
+ for (const timing of boot.providers) {
164
+ events.push({
165
+ name: `${timing.provider}.${timing.hook}`,
166
+ ph: 'X',
167
+ ts,
168
+ dur: timing.durationMs * 1000,
169
+ pid: 1,
170
+ tid: 1,
171
+ });
172
+ ts += timing.durationMs * 1000;
173
+ }
174
+ }
175
+ events.push({
176
+ name: totals.command === undefined ? 'command' : `command ${totals.command}`,
177
+ ph: 'X',
178
+ ts,
179
+ dur: totals.commandMs * 1000,
180
+ pid: 1,
181
+ tid: 1,
182
+ });
183
+ try {
184
+ mkdirSync(dirname(file), { recursive: true });
185
+ writeFileSync(file, `${JSON.stringify({ traceEvents: events }, null, 2)}\n`, 'utf8');
186
+ }
187
+ catch {
188
+ // A read-only filesystem just means no profile file.
189
+ }
190
+ }
11
191
  /**
12
192
  * The Mudah entry point. An app's `bin/<name>` stub is:
13
193
  *
@@ -24,8 +204,18 @@ import DevCommand from './commands/dev.command.js';
24
204
  export async function run(options = {}) {
25
205
  const cwd = options.cwd ?? process.cwd();
26
206
  const argv = options.argv ?? process.argv.slice(2);
27
- const env = options.env;
28
- const caps = detectCapabilities({ env });
207
+ const env = { ...(options.env ?? process.env) };
208
+ const flags = consumeGlobalFlags(argv, env);
209
+ if (flags.headless) {
210
+ env['MUDAH_HEADLESS'] = '1';
211
+ env['MUDAH_REDUCED_MOTION'] = '1';
212
+ if (env['CI'] === undefined || env['CI'] === '')
213
+ env['CI'] = '1';
214
+ }
215
+ // Adopt the locale before any command registers, so help descriptions
216
+ // resolve in the active language.
217
+ setLocaleFromEnv(env);
218
+ const caps = detectCapabilities({ env, isTty: flags.headless ? false : undefined });
29
219
  // Resolved once: every later write (envelopes included) targets these, so
30
220
  // output modes work with or without injected streams.
31
221
  const stdout = options.stdout ?? process.stdout;
@@ -36,10 +226,19 @@ export async function run(options = {}) {
36
226
  }
37
227
  catch (error) {
38
228
  const message = error instanceof Error ? error.message : String(error);
39
- stderr.write(message + '\n');
229
+ stderr.write(`${message}\n`);
40
230
  return 1;
41
231
  }
42
232
  const app = options.app ?? new Application(cwd, manifest);
233
+ app.config().set('mudah.headless', flags.headless);
234
+ if (flags.trace && typeof app.events().trace === 'function') {
235
+ app.events().trace(true);
236
+ }
237
+ if (flags.autocomplete !== undefined) {
238
+ const script = renderAutocompleteScript(manifest.bin, normalizeAutocompleteShell(flags.autocomplete));
239
+ stdout.write(script.endsWith('\n') ? script : `${script}\n`);
240
+ return 0;
241
+ }
43
242
  const theme = await detectTheme({
44
243
  name: manifest.ui?.theme,
45
244
  allowQuery: caps.themeQuery && options.allowThemeQuery !== false,
@@ -55,15 +254,33 @@ export async function run(options = {}) {
55
254
  osc9: caps.osc9,
56
255
  });
57
256
  // Output-mode flags (--json / --plain) may appear anywhere.
58
- if (argv.includes('--json')) {
257
+ if (flags.json) {
59
258
  output.setMode('json');
60
259
  }
61
- else if (argv.includes('--plain')) {
260
+ else if (flags.plain) {
62
261
  output.setMode('plain');
63
262
  }
64
263
  const jsonMode = output.isMachineReadable;
65
- const profileMode = argv.includes('--profile');
264
+ const profileMode = flags.profile;
265
+ const timeoutMs = flags.timeoutMs;
266
+ const memoryLimit = flags.memoryLimit;
267
+ const profileFile = resolveProfileFile(cwd, flags, env);
66
268
  const startedAt = Date.now();
269
+ // Inspecting the log must not grow it: a `telemetry` run records nothing.
270
+ const telemetry = firstCommandToken(argv) === 'telemetry'
271
+ ? createTelemetry({ enabled: false })
272
+ : resolveTelemetry({
273
+ cwd,
274
+ sink: options.telemetrySink,
275
+ manifestEnabled: manifest.telemetry === true,
276
+ env,
277
+ stdout,
278
+ stderr,
279
+ });
280
+ // Advertise the working directory (OSC 7) once on launch so terminals that
281
+ // track cwd pick it up. Skipped off-TTY and in JSON mode so logs stay clean.
282
+ if (caps.osc7 && !jsonMode)
283
+ osc.workingDir(stdout, cwd);
67
284
  // Update nudge: opt-in per app (a package name must be given) and never in
68
285
  // the way of scripts, CI, or machine-readable output.
69
286
  const ci = env?.['CI'] ?? process.env['CI'];
@@ -81,16 +298,35 @@ export async function run(options = {}) {
81
298
  // Plugins first: their providers must be registered before boot, and their
82
299
  // commands join the same discovery list as the app's own.
83
300
  const plugins = options.disablePlugins === true ? [] : await app.discoverPlugins();
301
+ if (!jsonMode) {
302
+ for (const warning of app.pluginWarnings()) {
303
+ output.warn(warning);
304
+ }
305
+ }
84
306
  // Providers: discover app providers, boot, then evaluate lazy predicates.
85
307
  await app.discoverProviders();
86
308
  const bootProfile = await app.boot({ profile: profileMode });
87
309
  await app.evaluateLazy();
310
+ if (telemetry.enabled) {
311
+ telemetry.recordDuration('boot', bootProfile?.totalMs ?? Date.now() - startedAt, {
312
+ plugins: plugins.length,
313
+ providers: app.providerNames().length,
314
+ });
315
+ for (const timing of bootProfile?.providers ?? []) {
316
+ telemetry.recordDuration('provider', timing.durationMs, {
317
+ provider: timing.provider,
318
+ hook: timing.hook,
319
+ });
320
+ }
321
+ }
88
322
  // Kernel: built-ins first, then — in order — discovered app commands,
89
323
  // manifest extras, and explicitly injected modules (bundled apps).
90
324
  // First registration of a name wins; later duplicates are skipped so a
91
325
  // checkout that both discovers and injects the same command stays clean.
92
- const kernel = new ConsoleKernel(app, output);
93
- registerBuiltIns(kernel);
326
+ const kernel = new ConsoleKernel(app, output, {
327
+ historyFile: join(cwd, '.mudah', 'history'),
328
+ });
329
+ registerReservedBuiltIns(kernel);
94
330
  const seen = new Set(kernel.list().map((entry) => entry.name));
95
331
  const candidates = [
96
332
  ...(await app.discoverCommandModules()),
@@ -120,24 +356,40 @@ export async function run(options = {}) {
120
356
  kernel.register(mod);
121
357
  }
122
358
  catch (error) {
123
- stderr.write((error instanceof Error ? error.message : String(error)) + '\n');
359
+ stderr.write(`${error instanceof Error ? error.message : String(error)}\n`);
124
360
  }
125
361
  }
126
362
  // Strip the global flags before dispatch so commands don't see them as
127
363
  // unknown options; remember the command name for envelopes/errors.
128
- const dispatchArgv = argv.filter((a) => a !== '--json' && a !== '--plain' && a !== '--profile');
364
+ const dispatchArgv = argv.filter((a) => a !== '--json' &&
365
+ a !== '--plain' &&
366
+ a !== '--profile' &&
367
+ a !== '--headless' &&
368
+ a !== '--trace' &&
369
+ !a.startsWith('--profile-file') &&
370
+ !a.startsWith('--autocomplete'));
371
+ if (dispatchArgv[0] === '--a11y-tree')
372
+ dispatchArgv.unshift('doctor');
129
373
  const commandName = dispatchArgv[0];
130
- // Global flags.
131
- const [first] = dispatchArgv;
374
+ const first = dispatchArgv[0];
375
+ const listing = first === undefined || first === '--help' || first === '-h' || first === 'help' || first === 'complete';
376
+ // Framework built-ins fill remaining names so an app `test`/`watch`
377
+ // keeps precedence. Load only the argv needs, except help/complete.
378
+ await registerWantedFrameworkBuiltIns(kernel, seen, dispatchArgv, listing);
132
379
  if (first === undefined || first === '--help' || first === '-h') {
133
380
  if (jsonMode) {
134
- stdout.write(output.jsonEnvelope({ ok: true, exitCode: 0, command: 'help', commands: kernel.list().map((c) => c.name) }));
381
+ stdout.write(output.jsonEnvelope({
382
+ ok: true,
383
+ exitCode: 0,
384
+ command: 'help',
385
+ commands: kernel.list().map((c) => c.name),
386
+ }));
135
387
  return 0;
136
388
  }
137
389
  const lines = [];
138
390
  renderCommandList(manifest.name, manifest.version, kernel.list(), lines);
139
391
  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');
392
+ 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 --autocomplete Emit bash/zsh/fish completion script\n\nAgent flags:\n doctor --a11y-tree Print a sample accessibility tree as JSON after the health report');
141
393
  return 0;
142
394
  }
143
395
  if (first === '--version') {
@@ -164,8 +416,69 @@ export async function run(options = {}) {
164
416
  output.raw(lines.join('\n'));
165
417
  return 0;
166
418
  }
419
+ // Set up timeout and memory monitors.
420
+ let timeoutTimer;
421
+ let memoryTimer;
422
+ let timeoutFired = false;
423
+ let memoryFired = false;
424
+ const forceExit = (code) => {
425
+ if (env['VITEST'] !== undefined || env['MUDAH_NO_FORCE_EXIT'] === '1')
426
+ return;
427
+ process.exit(code);
428
+ };
429
+ if (timeoutMs > 0) {
430
+ timeoutTimer = setTimeout(() => {
431
+ timeoutFired = true;
432
+ process.exitCode = 124;
433
+ output.error(`Command timed out after ${Math.round(timeoutMs / 1_000)}s`);
434
+ forceExit(124);
435
+ }, timeoutMs);
436
+ }
437
+ if (memoryLimit > 0) {
438
+ memoryTimer = setInterval(() => {
439
+ const used = process.memoryUsage().heapUsed;
440
+ if (used > memoryLimit) {
441
+ memoryFired = true;
442
+ output.error(`Memory limit exceeded: ${(used / 1_048_576).toFixed(0)}MB > ${(memoryLimit / 1_048_576).toFixed(0)}MB`);
443
+ process.exitCode = 137;
444
+ forceExit(137);
445
+ }
446
+ }, 500);
447
+ }
448
+ function cleanupMonitors() {
449
+ if (timeoutTimer)
450
+ clearTimeout(timeoutTimer);
451
+ if (memoryTimer)
452
+ clearInterval(memoryTimer);
453
+ }
454
+ if (first === 'complete') {
455
+ // Strip only the leading `--` separator the shell scripts insert. A
456
+ // trailing `--` is the partial being completed (`deploy --<TAB>`), so it
457
+ // must survive.
458
+ const after = dispatchArgv.slice(1);
459
+ const rest = after[0] === '--' ? after.slice(1) : after;
460
+ const candidates = kernel.complete(rest);
461
+ stdout.write(candidates.length > 0 ? `${candidates.join('\n')}\n` : '');
462
+ return 0;
463
+ }
464
+ if (first !== undefined && !listing && !kernel.has(first) && !kernel.hasGroup(first)) {
465
+ await registerWantedFrameworkBuiltIns(kernel, seen, dispatchArgv, true);
466
+ }
167
467
  try {
168
468
  const code = await kernel.dispatch(resolveGroup(kernel, dispatchArgv));
469
+ const totals = {
470
+ command: commandName,
471
+ commandMs: Date.now() - startedAt - (bootProfile?.totalMs ?? 0),
472
+ totalMs: Date.now() - startedAt,
473
+ };
474
+ telemetry.recordDuration('command', totals.commandMs, {
475
+ command: commandName ?? '(none)',
476
+ exitCode: code,
477
+ });
478
+ telemetry.recordDuration('total', totals.totalMs, { command: commandName ?? '(none)' });
479
+ if (profileFile !== undefined) {
480
+ writeChromeTrace(profileFile, bootProfile, totals);
481
+ }
169
482
  if (jsonMode) {
170
483
  stdout.write(output.jsonEnvelope({
171
484
  ok: code === 0,
@@ -177,15 +490,15 @@ export async function run(options = {}) {
177
490
  }
178
491
  else {
179
492
  if (profileMode) {
180
- renderProfile(output, bootProfile, caps, {
181
- command: commandName,
182
- commandMs: Date.now() - startedAt - (bootProfile?.totalMs ?? 0),
183
- totalMs: Date.now() - startedAt,
184
- });
493
+ renderProfile(output, bootProfile, caps, totals);
185
494
  }
186
495
  if (code === 0)
187
496
  await nudgeUpdate(output, manifest, updateOptions);
188
497
  }
498
+ if (timeoutFired)
499
+ return 124;
500
+ if (memoryFired)
501
+ return 137;
189
502
  return code;
190
503
  }
191
504
  catch (rawError) {
@@ -199,7 +512,17 @@ export async function run(options = {}) {
199
512
  else {
200
513
  parsed = { message: String(rawError) };
201
514
  }
515
+ if (typeof app.notifyError === 'function') {
516
+ await app.notifyError(rawError).catch(() => undefined);
517
+ }
202
518
  const code = renderError(rawError, output);
519
+ telemetry.record('error', {
520
+ command: commandName ?? '(none)',
521
+ exitCode: code,
522
+ message: parsed.message,
523
+ ...(parsed.usage === undefined ? {} : { usage: parsed.usage }),
524
+ });
525
+ telemetry.recordDuration('total', Date.now() - startedAt, { command: commandName ?? '(none)' });
203
526
  if (jsonMode) {
204
527
  stdout.write(output.jsonEnvelope({
205
528
  ok: false,
@@ -212,6 +535,10 @@ export async function run(options = {}) {
212
535
  }
213
536
  return code;
214
537
  }
538
+ finally {
539
+ cleanupMonitors();
540
+ await app.shutdown();
541
+ }
215
542
  }
216
543
  /**
217
544
  * Render the `--profile` report. Uses `Output` so it respects `--plain`
@@ -270,7 +597,7 @@ async function nudgeUpdate(output, manifest, options) {
270
597
  if (line !== null)
271
598
  output.muted(line);
272
599
  }
273
- function registerBuiltIns(kernel) {
600
+ function registerReservedBuiltIns(kernel) {
274
601
  kernel.register({
275
602
  default: class extends HelpCommand {
276
603
  constructor() {
@@ -279,15 +606,5 @@ function registerBuiltIns(kernel) {
279
606
  },
280
607
  });
281
608
  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
609
  }
293
610
  //# 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;