@mstar-harness/cli 3.6.0-alpha.4 → 3.6.1

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 (2) hide show
  1. package/dist/mstar-harness.js +136 -84
  2. package/package.json +1 -1
@@ -6,22 +6,38 @@ var __getProtoOf = Object.getPrototypeOf;
6
6
  var __defProp = Object.defineProperty;
7
7
  var __getOwnPropNames = Object.getOwnPropertyNames;
8
8
  var __hasOwnProp = Object.prototype.hasOwnProperty;
9
+ function __accessProp(key) {
10
+ return this[key];
11
+ }
12
+ var __toESMCache_node;
13
+ var __toESMCache_esm;
9
14
  var __toESM = (mod, isNodeMode, target) => {
15
+ var canCache = mod != null && typeof mod === "object";
16
+ if (canCache) {
17
+ var cache = isNodeMode ? __toESMCache_node ??= new WeakMap : __toESMCache_esm ??= new WeakMap;
18
+ var cached = cache.get(mod);
19
+ if (cached)
20
+ return cached;
21
+ }
10
22
  target = mod != null ? __create(__getProtoOf(mod)) : {};
11
23
  const to = isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target;
12
- for (let key of __getOwnPropNames(mod))
13
- if (!__hasOwnProp.call(to, key))
14
- __defProp(to, key, {
15
- get: () => mod[key],
16
- enumerable: true
17
- });
24
+ if (mod && typeof mod === "object" || typeof mod === "function") {
25
+ for (let key of __getOwnPropNames(mod))
26
+ if (!__hasOwnProp.call(to, key))
27
+ __defProp(to, key, {
28
+ get: __accessProp.bind(mod, key),
29
+ enumerable: true
30
+ });
31
+ }
32
+ if (canCache)
33
+ cache.set(mod, to);
18
34
  return to;
19
35
  };
20
36
  var __commonJS = (cb, mod) => () => (mod || cb((mod = { exports: {} }).exports, mod), mod.exports);
21
37
  var __require = /* @__PURE__ */ createRequire(import.meta.url);
22
38
 
23
- // ../../node_modules/cli-width/index.js
24
- var require_cli_width = __commonJS((exports, module) => {
39
+ // ../../node_modules/.bun/cli-width@4.1.0/node_modules/cli-width/index.js
40
+ var require_cli_width = __commonJS(function(exports, module) {
25
41
  module.exports = cliWidth;
26
42
  function normalizeOpts(options) {
27
43
  const defaultOpts = {
@@ -60,8 +76,8 @@ var require_cli_width = __commonJS((exports, module) => {
60
76
  }
61
77
  });
62
78
 
63
- // ../../node_modules/mute-stream/lib/index.js
64
- var require_lib = __commonJS((exports, module) => {
79
+ // ../../node_modules/.bun/mute-stream@3.0.0/node_modules/mute-stream/lib/index.js
80
+ var require_lib = __commonJS(function(exports, module) {
65
81
  var Stream = __require("stream");
66
82
 
67
83
  class MuteStream extends Stream {
@@ -180,8 +196,8 @@ var require_lib = __commonJS((exports, module) => {
180
196
  module.exports = MuteStream;
181
197
  });
182
198
 
183
- // ../../node_modules/picocolors/picocolors.js
184
- var require_picocolors = __commonJS((exports, module) => {
199
+ // ../../node_modules/.bun/picocolors@1.1.1/node_modules/picocolors/picocolors.js
200
+ var require_picocolors = __commonJS(function(exports, module) {
185
201
  var p = process || {};
186
202
  var argv = p.argv || [];
187
203
  var env = p.env || {};
@@ -250,8 +266,8 @@ var require_picocolors = __commonJS((exports, module) => {
250
266
  module.exports.createColors = createColors;
251
267
  });
252
268
 
253
- // ../../node_modules/commander/lib/error.js
254
- var require_error = __commonJS((exports) => {
269
+ // ../../node_modules/.bun/commander@14.0.3/node_modules/commander/lib/error.js
270
+ var require_error = __commonJS(function(exports) {
255
271
  class CommanderError extends Error {
256
272
  constructor(exitCode, code, message) {
257
273
  super(message);
@@ -274,8 +290,8 @@ var require_error = __commonJS((exports) => {
274
290
  exports.InvalidArgumentError = InvalidArgumentError;
275
291
  });
276
292
 
277
- // ../../node_modules/commander/lib/argument.js
278
- var require_argument = __commonJS((exports) => {
293
+ // ../../node_modules/.bun/commander@14.0.3/node_modules/commander/lib/argument.js
294
+ var require_argument = __commonJS(function(exports) {
279
295
  var { InvalidArgumentError } = require_error();
280
296
 
281
297
  class Argument {
@@ -354,8 +370,8 @@ var require_argument = __commonJS((exports) => {
354
370
  exports.humanReadableArgName = humanReadableArgName;
355
371
  });
356
372
 
357
- // ../../node_modules/commander/lib/help.js
358
- var require_help = __commonJS((exports) => {
373
+ // ../../node_modules/.bun/commander@14.0.3/node_modules/commander/lib/help.js
374
+ var require_help = __commonJS(function(exports) {
359
375
  var { humanReadableArgName } = require_argument();
360
376
 
361
377
  class Help {
@@ -711,8 +727,8 @@ ${itemIndentStr}`);
711
727
  exports.stripColor = stripColor;
712
728
  });
713
729
 
714
- // ../../node_modules/commander/lib/option.js
715
- var require_option = __commonJS((exports) => {
730
+ // ../../node_modules/.bun/commander@14.0.3/node_modules/commander/lib/option.js
731
+ var require_option = __commonJS(function(exports) {
716
732
  var { InvalidArgumentError } = require_error();
717
733
 
718
734
  class Option {
@@ -895,8 +911,8 @@ var require_option = __commonJS((exports) => {
895
911
  exports.DualOptions = DualOptions;
896
912
  });
897
913
 
898
- // ../../node_modules/commander/lib/suggestSimilar.js
899
- var require_suggestSimilar = __commonJS((exports) => {
914
+ // ../../node_modules/.bun/commander@14.0.3/node_modules/commander/lib/suggestSimilar.js
915
+ var require_suggestSimilar = __commonJS(function(exports) {
900
916
  var maxDistance = 3;
901
917
  function editDistance(a, b) {
902
918
  if (Math.abs(a.length - b.length) > maxDistance)
@@ -968,8 +984,8 @@ var require_suggestSimilar = __commonJS((exports) => {
968
984
  exports.suggestSimilar = suggestSimilar;
969
985
  });
970
986
 
971
- // ../../node_modules/commander/lib/command.js
972
- var require_command = __commonJS((exports) => {
987
+ // ../../node_modules/.bun/commander@14.0.3/node_modules/commander/lib/command.js
988
+ var require_command = __commonJS(function(exports) {
973
989
  var EventEmitter = __require("node:events").EventEmitter;
974
990
  var childProcess = __require("node:child_process");
975
991
  var path2 = __require("node:path");
@@ -1222,7 +1238,7 @@ Expecting one of '${allowedValues.join("', '")}'`);
1222
1238
  this._exitCallback = (err) => {
1223
1239
  if (err.code !== "commander.executeSubCommandAsync") {
1224
1240
  throw err;
1225
- } else {}
1241
+ }
1226
1242
  };
1227
1243
  }
1228
1244
  return this;
@@ -2323,8 +2339,8 @@ Expecting one of '${allowedValues.join("', '")}'`);
2323
2339
  exports.useColor = useColor;
2324
2340
  });
2325
2341
 
2326
- // ../../node_modules/commander/index.js
2327
- var require_commander = __commonJS((exports) => {
2342
+ // ../../node_modules/.bun/commander@14.0.3/node_modules/commander/index.js
2343
+ var require_commander = __commonJS(function(exports) {
2328
2344
  var { Argument } = require_argument();
2329
2345
  var { Command } = require_command();
2330
2346
  var { CommanderError, InvalidArgumentError } = require_error();
@@ -2343,8 +2359,8 @@ var require_commander = __commonJS((exports) => {
2343
2359
  exports.InvalidOptionArgumentError = InvalidArgumentError;
2344
2360
  });
2345
2361
 
2346
- // ../../node_modules/picocolors/picocolors.js
2347
- var require_picocolors2 = __commonJS((exports, module) => {
2362
+ // ../../node_modules/.bun/picocolors@1.1.1/node_modules/picocolors/picocolors.js
2363
+ var require_picocolors2 = __commonJS(function(exports, module) {
2348
2364
  var p = process || {};
2349
2365
  var argv = p.argv || [];
2350
2366
  var env = p.env || {};
@@ -2418,8 +2434,7 @@ import { execFileSync as execFileSync10 } from "child_process";
2418
2434
  import { createHash, randomUUID as randomUUID3 } from "crypto";
2419
2435
  import fs8 from "fs";
2420
2436
  import path12 from "path";
2421
-
2422
- // ../../node_modules/@inquirer/core/dist/lib/key.js
2437
+ // ../../node_modules/.bun/@inquirer+core@12.0.2+1c220d1d55e2409f/node_modules/@inquirer/core/dist/lib/key.js
2423
2438
  var keybindings = ["emacs", "vim"];
2424
2439
  var keybindingLookup = new Set(keybindings);
2425
2440
  function isKeybinding(value) {
@@ -2436,7 +2451,7 @@ var isDownKey = (key, keybindings2 = []) => key.name === "down" || keybindings2.
2436
2451
  var isBackspaceKey = (key) => key.name === "backspace";
2437
2452
  var isNumberKey = (key) => "1234567890".includes(key.name);
2438
2453
  var isEnterKey = (key) => key.name === "enter" || key.name === "return";
2439
- // ../../node_modules/@inquirer/core/dist/lib/errors.js
2454
+ // ../../node_modules/.bun/@inquirer+core@12.0.2+1c220d1d55e2409f/node_modules/@inquirer/core/dist/lib/errors.js
2440
2455
  class AbortPromptError extends Error {
2441
2456
  name = "AbortPromptError";
2442
2457
  message = "Prompt was aborted";
@@ -2462,10 +2477,10 @@ class HookError extends Error {
2462
2477
  class ValidationError extends Error {
2463
2478
  name = "ValidationError";
2464
2479
  }
2465
- // ../../node_modules/@inquirer/core/dist/lib/use-state.js
2480
+ // ../../node_modules/.bun/@inquirer+core@12.0.2+1c220d1d55e2409f/node_modules/@inquirer/core/dist/lib/use-state.js
2466
2481
  import { AsyncResource as AsyncResource2 } from "node:async_hooks";
2467
2482
 
2468
- // ../../node_modules/@inquirer/core/dist/lib/hook-engine.js
2483
+ // ../../node_modules/.bun/@inquirer+core@12.0.2+1c220d1d55e2409f/node_modules/@inquirer/core/dist/lib/hook-engine.js
2469
2484
  import { AsyncLocalStorage, AsyncResource } from "node:async_hooks";
2470
2485
  var hookStorage = new AsyncLocalStorage;
2471
2486
  function createStore(rl) {
@@ -2570,7 +2585,7 @@ var effectScheduler = {
2570
2585
  }
2571
2586
  };
2572
2587
 
2573
- // ../../node_modules/@inquirer/core/dist/lib/use-state.js
2588
+ // ../../node_modules/.bun/@inquirer+core@12.0.2+1c220d1d55e2409f/node_modules/@inquirer/core/dist/lib/use-state.js
2574
2589
  function isFactory(value) {
2575
2590
  return typeof value === "function";
2576
2591
  }
@@ -2579,7 +2594,7 @@ function isReducer(value) {
2579
2594
  }
2580
2595
  function useState(defaultValue) {
2581
2596
  return withPointer((pointer) => {
2582
- const setState = AsyncResource2.bind(function setState(newValue) {
2597
+ const setState = AsyncResource2.bind(function setState2(newValue) {
2583
2598
  const currentValue = pointer.get();
2584
2599
  const nextValue = isReducer(newValue) ? newValue(currentValue) : newValue;
2585
2600
  if (!Object.is(currentValue, nextValue)) {
@@ -2596,7 +2611,7 @@ function useState(defaultValue) {
2596
2611
  });
2597
2612
  }
2598
2613
 
2599
- // ../../node_modules/@inquirer/core/dist/lib/use-effect.js
2614
+ // ../../node_modules/.bun/@inquirer+core@12.0.2+1c220d1d55e2409f/node_modules/@inquirer/core/dist/lib/use-effect.js
2600
2615
  function useEffect(cb, depArray) {
2601
2616
  withPointer((pointer) => {
2602
2617
  const oldDeps = pointer.get();
@@ -2608,10 +2623,10 @@ function useEffect(cb, depArray) {
2608
2623
  });
2609
2624
  }
2610
2625
 
2611
- // ../../node_modules/@inquirer/core/dist/lib/theme.js
2626
+ // ../../node_modules/.bun/@inquirer+core@12.0.2+1c220d1d55e2409f/node_modules/@inquirer/core/dist/lib/theme.js
2612
2627
  import { styleText } from "node:util";
2613
2628
 
2614
- // ../../node_modules/@inquirer/figures/dist/index.js
2629
+ // ../../node_modules/.bun/@inquirer+figures@2.0.9/node_modules/@inquirer/figures/dist/index.js
2615
2630
  import process2 from "node:process";
2616
2631
  function isUnicodeSupported() {
2617
2632
  if (!process2.platform.startsWith("win")) {
@@ -2900,7 +2915,7 @@ var figures = shouldUseMain ? mainSymbols : fallbackSymbols;
2900
2915
  var dist_default = figures;
2901
2916
  var replacements = Object.entries(specialMainSymbols);
2902
2917
 
2903
- // ../../node_modules/@inquirer/core/dist/lib/theme.js
2918
+ // ../../node_modules/.bun/@inquirer+core@12.0.2+1c220d1d55e2409f/node_modules/@inquirer/core/dist/lib/theme.js
2904
2919
  var defaultTheme = {
2905
2920
  prefix: {
2906
2921
  idle: styleText("blue", "?"),
@@ -2928,7 +2943,7 @@ function getDefaultTheme() {
2928
2943
  };
2929
2944
  }
2930
2945
 
2931
- // ../../node_modules/@inquirer/core/dist/lib/make-theme.js
2946
+ // ../../node_modules/.bun/@inquirer+core@12.0.2+1c220d1d55e2409f/node_modules/@inquirer/core/dist/lib/make-theme.js
2932
2947
  function isPlainObject(value) {
2933
2948
  if (typeof value !== "object" || value === null)
2934
2949
  return false;
@@ -2956,7 +2971,7 @@ function makeTheme(...themes) {
2956
2971
  return deepMerge(...themesToMerge);
2957
2972
  }
2958
2973
 
2959
- // ../../node_modules/@inquirer/core/dist/lib/use-prefix.js
2974
+ // ../../node_modules/.bun/@inquirer+core@12.0.2+1c220d1d55e2409f/node_modules/@inquirer/core/dist/lib/use-prefix.js
2960
2975
  function usePrefix({ status = "idle", theme }) {
2961
2976
  const [showLoader, setShowLoader] = useState(false);
2962
2977
  const [tick, setTick] = useState(0);
@@ -2986,7 +3001,7 @@ function usePrefix({ status = "idle", theme }) {
2986
3001
  const iconName = status === "loading" ? "idle" : status;
2987
3002
  return typeof prefix === "string" ? prefix : prefix[iconName] ?? prefix["idle"];
2988
3003
  }
2989
- // ../../node_modules/@inquirer/core/dist/lib/use-memo.js
3004
+ // ../../node_modules/.bun/@inquirer+core@12.0.2+1c220d1d55e2409f/node_modules/@inquirer/core/dist/lib/use-memo.js
2990
3005
  function useMemo(fn, dependencies) {
2991
3006
  return withPointer((pointer) => {
2992
3007
  const prev = pointer.get();
@@ -2998,11 +3013,11 @@ function useMemo(fn, dependencies) {
2998
3013
  return prev.value;
2999
3014
  });
3000
3015
  }
3001
- // ../../node_modules/@inquirer/core/dist/lib/use-ref.js
3016
+ // ../../node_modules/.bun/@inquirer+core@12.0.2+1c220d1d55e2409f/node_modules/@inquirer/core/dist/lib/use-ref.js
3002
3017
  function useRef(val) {
3003
3018
  return useState({ current: val })[0];
3004
3019
  }
3005
- // ../../node_modules/@inquirer/core/dist/lib/use-keypress.js
3020
+ // ../../node_modules/.bun/@inquirer+core@12.0.2+1c220d1d55e2409f/node_modules/@inquirer/core/dist/lib/use-keypress.js
3006
3021
  function useKeypress(userHandler) {
3007
3022
  const signal = useRef(userHandler);
3008
3023
  signal.current = userHandler;
@@ -3020,10 +3035,10 @@ function useKeypress(userHandler) {
3020
3035
  };
3021
3036
  }, []);
3022
3037
  }
3023
- // ../../node_modules/@inquirer/core/dist/lib/utils.js
3038
+ // ../../node_modules/.bun/@inquirer+core@12.0.2+1c220d1d55e2409f/node_modules/@inquirer/core/dist/lib/utils.js
3024
3039
  var import_cli_width = __toESM(require_cli_width(), 1);
3025
3040
 
3026
- // ../../node_modules/fast-string-truncated-width/dist/utils.js
3041
+ // ../../node_modules/.bun/fast-string-truncated-width@3.0.3/node_modules/fast-string-truncated-width/dist/utils.js
3027
3042
  var getCodePointsLength = (() => {
3028
3043
  const SURROGATE_PAIR_RE = /[\uD800-\uDBFF][\uDC00-\uDFFF]/g;
3029
3044
  return (input) => {
@@ -3042,7 +3057,7 @@ var isWideNotCJKTNotEmoji = (x) => {
3042
3057
  return x === 8987 || x === 9001 || x >= 12272 && x <= 12287 || x >= 12289 && x <= 12350 || x >= 12441 && x <= 12543 || x >= 12549 && x <= 12591 || x >= 12593 && x <= 12686 || x >= 12688 && x <= 12771 || x >= 12783 && x <= 12830 || x >= 12832 && x <= 12871 || x >= 12880 && x <= 19903 || x >= 65040 && x <= 65049 || x >= 65072 && x <= 65106 || x >= 65108 && x <= 65126 || x >= 65128 && x <= 65131 || x >= 127488 && x <= 127490 || x >= 127504 && x <= 127547 || x >= 127552 && x <= 127560 || x >= 131072 && x <= 196605 || x >= 196608 && x <= 262141;
3043
3058
  };
3044
3059
 
3045
- // ../../node_modules/fast-string-truncated-width/dist/index.js
3060
+ // ../../node_modules/.bun/fast-string-truncated-width@3.0.3/node_modules/fast-string-truncated-width/dist/index.js
3046
3061
  var ANSI_RE = /[\u001b\u009b][[()#;?]*(?:[0-9]{1,4}(?:;[0-9]{0,4})*)?[0-9A-ORZcf-nqry=><]|\u001b\]8;[^;]*;.*?(?:\u0007|\u001b\u005c)/y;
3047
3062
  var CONTROL_RE = /[\x00-\x08\x0A-\x1F\x7F-\x9F]{1,1000}/y;
3048
3063
  var CJKT_WIDE_RE = /(?:(?![\uFF61-\uFF9F\uFF00-\uFFEF])[\p{Script=Han}\p{Script=Hiragana}\p{Script=Katakana}\p{Script=Hangul}\p{Script=Tangut}]){1,1000}/yu;
@@ -3141,7 +3156,7 @@ var getStringTruncatedWidth = (input, truncationOptions = {}, widthOptions = {})
3141
3156
  };
3142
3157
  var dist_default2 = getStringTruncatedWidth;
3143
3158
 
3144
- // ../../node_modules/fast-string-width/dist/index.js
3159
+ // ../../node_modules/.bun/fast-string-width@3.0.2/node_modules/fast-string-width/dist/index.js
3145
3160
  var NO_TRUNCATION2 = {
3146
3161
  limit: Infinity,
3147
3162
  ellipsis: "",
@@ -3152,7 +3167,7 @@ var fastStringWidth = (input, options = {}) => {
3152
3167
  };
3153
3168
  var dist_default3 = fastStringWidth;
3154
3169
 
3155
- // ../../node_modules/fast-wrap-ansi/lib/main.js
3170
+ // ../../node_modules/.bun/fast-wrap-ansi@0.2.2/node_modules/fast-wrap-ansi/lib/main.js
3156
3171
  var ESC = "\x1B";
3157
3172
  var CSI = "\u009b";
3158
3173
  var END_CODE = 39;
@@ -3364,7 +3379,7 @@ function wrapAnsi(string, columns, options) {
3364
3379
  `);
3365
3380
  }
3366
3381
 
3367
- // ../../node_modules/@inquirer/core/dist/lib/utils.js
3382
+ // ../../node_modules/.bun/@inquirer+core@12.0.2+1c220d1d55e2409f/node_modules/@inquirer/core/dist/lib/utils.js
3368
3383
  function breakLines(content, width) {
3369
3384
  return content.split(`
3370
3385
  `).flatMap((line) => wrapAnsi(line, width, { trim: false, wordWrap: false }).split(`
@@ -3375,7 +3390,7 @@ function readlineWidth() {
3375
3390
  return import_cli_width.default({ defaultWidth: 80, output: readline().output });
3376
3391
  }
3377
3392
 
3378
- // ../../node_modules/@inquirer/core/dist/lib/pagination/use-pagination.js
3393
+ // ../../node_modules/.bun/@inquirer+core@12.0.2+1c220d1d55e2409f/node_modules/@inquirer/core/dist/lib/pagination/use-pagination.js
3379
3394
  function usePointerPosition({ active, renderedItems, pageSize, loop }) {
3380
3395
  const state = useRef({
3381
3396
  lastPointer: active,
@@ -3441,12 +3456,12 @@ function usePagination({ items, active, renderItem, pageSize, loop = true }) {
3441
3456
  return pageBuffer.filter((line) => typeof line === "string").join(`
3442
3457
  `);
3443
3458
  }
3444
- // ../../node_modules/@inquirer/core/dist/lib/create-prompt.js
3459
+ // ../../node_modules/.bun/@inquirer+core@12.0.2+1c220d1d55e2409f/node_modules/@inquirer/core/dist/lib/create-prompt.js
3445
3460
  var import_mute_stream = __toESM(require_lib(), 1);
3446
3461
  import * as readline2 from "node:readline";
3447
3462
  import { AsyncResource as AsyncResource3 } from "node:async_hooks";
3448
3463
 
3449
- // ../../node_modules/signal-exit/dist/mjs/signals.js
3464
+ // ../../node_modules/.bun/signal-exit@4.1.0/node_modules/signal-exit/dist/mjs/signals.js
3450
3465
  var signals = [];
3451
3466
  signals.push("SIGHUP", "SIGINT", "SIGTERM");
3452
3467
  if (process.platform !== "win32") {
@@ -3456,7 +3471,7 @@ if (process.platform === "linux") {
3456
3471
  signals.push("SIGIO", "SIGPOLL", "SIGPWR", "SIGSTKFLT");
3457
3472
  }
3458
3473
 
3459
- // ../../node_modules/signal-exit/dist/mjs/index.js
3474
+ // ../../node_modules/.bun/signal-exit@4.1.0/node_modules/signal-exit/dist/mjs/index.js
3460
3475
  var processOk = (process3) => !!process3 && typeof process3 === "object" && typeof process3.removeListener === "function" && typeof process3.emit === "function" && typeof process3.reallyExit === "function" && typeof process3.listeners === "function" && typeof process3.kill === "function" && typeof process3.pid === "number" && typeof process3.on === "function";
3461
3476
  var kExitEmitter = Symbol.for("signal-exit emitter");
3462
3477
  var global = globalThis;
@@ -3654,10 +3669,10 @@ var {
3654
3669
  unload
3655
3670
  } = signalExitWrap(processOk(process3) ? new SignalExit(process3) : new SignalExitFallback);
3656
3671
 
3657
- // ../../node_modules/@inquirer/core/dist/lib/screen-manager.js
3672
+ // ../../node_modules/.bun/@inquirer+core@12.0.2+1c220d1d55e2409f/node_modules/@inquirer/core/dist/lib/screen-manager.js
3658
3673
  import { stripVTControlCharacters } from "node:util";
3659
3674
 
3660
- // ../../node_modules/@inquirer/ansi/dist/index.js
3675
+ // ../../node_modules/.bun/@inquirer+ansi@2.0.8/node_modules/@inquirer/ansi/dist/index.js
3661
3676
  var ESC2 = "\x1B[";
3662
3677
  var cursorLeft = ESC2 + "G";
3663
3678
  var cursorHide = ESC2 + "?25l";
@@ -3673,7 +3688,7 @@ var cursorTo = (x, y) => {
3673
3688
  var eraseLine = ESC2 + "2K";
3674
3689
  var eraseLines = (lines) => lines > 0 ? (eraseLine + cursorUp(1)).repeat(lines - 1) + eraseLine + cursorLeft : "";
3675
3690
 
3676
- // ../../node_modules/@inquirer/core/dist/lib/screen-manager.js
3691
+ // ../../node_modules/.bun/@inquirer+core@12.0.2+1c220d1d55e2409f/node_modules/@inquirer/core/dist/lib/screen-manager.js
3677
3692
  var height = (content) => content.split(`
3678
3693
  `).length;
3679
3694
  var lastLine = (content) => content.split(`
@@ -3739,7 +3754,7 @@ class ScreenManager {
3739
3754
  }
3740
3755
  }
3741
3756
 
3742
- // ../../node_modules/@inquirer/core/dist/lib/promise-polyfill.js
3757
+ // ../../node_modules/.bun/@inquirer+core@12.0.2+1c220d1d55e2409f/node_modules/@inquirer/core/dist/lib/promise-polyfill.js
3743
3758
  class PromisePolyfill extends Promise {
3744
3759
  static withResolver() {
3745
3760
  let resolve;
@@ -3752,7 +3767,7 @@ class PromisePolyfill extends Promise {
3752
3767
  }
3753
3768
  }
3754
3769
 
3755
- // ../../node_modules/@inquirer/core/dist/lib/create-prompt.js
3770
+ // ../../node_modules/.bun/@inquirer+core@12.0.2+1c220d1d55e2409f/node_modules/@inquirer/core/dist/lib/create-prompt.js
3756
3771
  import path from "node:path";
3757
3772
  var nativeSetImmediate = globalThis.setImmediate;
3758
3773
  function getCallSites() {
@@ -3863,7 +3878,7 @@ function createPrompt(view) {
3863
3878
  };
3864
3879
  return prompt;
3865
3880
  }
3866
- // ../../node_modules/@inquirer/core/dist/lib/Separator.js
3881
+ // ../../node_modules/.bun/@inquirer+core@12.0.2+1c220d1d55e2409f/node_modules/@inquirer/core/dist/lib/Separator.js
3867
3882
  import { styleText as styleText2 } from "node:util";
3868
3883
  class Separator {
3869
3884
  separator = styleText2("dim", Array.from({ length: 15 }).join(dist_default.line));
@@ -3877,7 +3892,7 @@ class Separator {
3877
3892
  return Boolean(choice && typeof choice === "object" && "type" in choice && choice.type === "separator");
3878
3893
  }
3879
3894
  }
3880
- // ../../node_modules/@inquirer/select/dist/index.js
3895
+ // ../../node_modules/.bun/@inquirer+select@5.2.4+1c220d1d55e2409f/node_modules/@inquirer/select/dist/index.js
3881
3896
  import { styleText as styleText3 } from "node:util";
3882
3897
  var selectTheme = {
3883
3898
  icon: { cursor: dist_default.pointer },
@@ -4052,7 +4067,7 @@ var dist_default4 = createPrompt((config, done) => {
4052
4067
  // src/index.ts
4053
4068
  var import_picocolors2 = __toESM(require_picocolors(), 1);
4054
4069
 
4055
- // ../../node_modules/commander/esm.mjs
4070
+ // ../../node_modules/.bun/commander@14.0.3/node_modules/commander/esm.mjs
4056
4071
  var import__ = __toESM(require_commander(), 1);
4057
4072
  var {
4058
4073
  program,
@@ -11462,8 +11477,13 @@ function addTimeoutMs() {
11462
11477
  const parsed = Number(raw);
11463
11478
  return Number.isFinite(parsed) && parsed > 0 ? parsed : DSH_ADD_TIMEOUT_MS;
11464
11479
  }
11465
- var DSH_PLUGIN_SPECS = ["@mstar-harness/dsh", "dsh-llm-fallbacks"];
11480
+ var DSH_FALLBACKS_VERSION = "0.4.1";
11481
+ var DSH_PLUGIN_SPECS = ["@mstar-harness/dsh", `dsh-llm-fallbacks@${DSH_FALLBACKS_VERSION}`];
11466
11482
  var DSH_FALLBACKS_SPEC = DSH_PLUGIN_SPECS[1];
11483
+ function dshLoaderName(spec) {
11484
+ const at = spec.lastIndexOf("@");
11485
+ return at > 0 ? spec.slice(0, at) : spec;
11486
+ }
11467
11487
  var DSH_INSTALL_HINT = "Install the DeepSeek Harness CLI (@deepseek-ai/dsh), e.g. `pnpm add -g @deepseek-ai/dsh` or `npm install -g @deepseek-ai/dsh`, then re-run init.";
11468
11488
  function runDsh(args, dryRun, timeoutMs) {
11469
11489
  return runCliCommand([DSH_BIN, ...args], { dryRun, timeoutMs, env: process.env });
@@ -11540,7 +11560,7 @@ function runInit2(scope, dryRun, initFlags) {
11540
11560
  notes.push(`skipped-by-flag: ${spec} (--no-fallbacks)`);
11541
11561
  continue;
11542
11562
  }
11543
- if (!dryRun && installed.has(spec)) {
11563
+ if (!dryRun && (installed.has(spec) || installed.has(dshLoaderName(spec)))) {
11544
11564
  notes.push(`skipped-existing: ${spec} (already installed in profile ${DSH_PROFILE})`);
11545
11565
  continue;
11546
11566
  }
@@ -11585,7 +11605,7 @@ function runDoctor2(scope) {
11585
11605
  }
11586
11606
  const byName = new Map(entries.map((entry) => [entry.name, entry]));
11587
11607
  for (const spec of DSH_PLUGIN_SPECS) {
11588
- const entry = byName.get(spec);
11608
+ const entry = byName.get(spec) ?? byName.get(dshLoaderName(spec));
11589
11609
  const state = !entry ? "uninstalled" : entry.enabled ? "mounted" : "disabled";
11590
11610
  notes.push(`${spec}: ${state}`);
11591
11611
  if (state === "mounted")
@@ -11606,9 +11626,8 @@ var dshAdapter = {
11606
11626
  import fs5 from "node:fs";
11607
11627
  import path8 from "node:path";
11608
11628
  import { execFileSync as execFileSync8 } from "node:child_process";
11609
- var OMP_PLUGIN_MARKER = ".omp-plugin/plugin.json";
11610
- var CLAUDE_PLUGIN_MARKER = ".claude-plugin/plugin.json";
11611
- var PACKAGE_NAMES = new Set(["morning-star", PLUGIN_NAME, "github:btspoony/mstar-harness"]);
11629
+ var OMP_PACKAGE_REL = path8.join("packages", "omp");
11630
+ var PACKAGE_NAMES = new Set(["morning-star", PLUGIN_NAME, "github:btspoony/mstar-harness", "@mstar-harness/omp"]);
11612
11631
  var SKILL_SMOKE = ["mstar-host", "mstar-harness-core", "pm"];
11613
11632
  var COMMAND_SMOKE = ["iteration-start", "iteration-drive", "iteration-loop", "codebase-audit"];
11614
11633
  function ompAvailable() {
@@ -11671,11 +11690,9 @@ function findInstalledPlugin(plugins) {
11671
11690
  }
11672
11691
  function validatePluginTree(pluginRoot) {
11673
11692
  const errors2 = [];
11674
- for (const marker of [OMP_PLUGIN_MARKER, CLAUDE_PLUGIN_MARKER]) {
11675
- const markerPath = path8.join(pluginRoot, marker);
11676
- if (!fs5.existsSync(markerPath)) {
11677
- errors2.push(`Missing omp plugin marker: ${markerPath}`);
11678
- }
11693
+ const markerPath = path8.join(pluginRoot, "plugin.json");
11694
+ if (!fs5.existsSync(markerPath)) {
11695
+ errors2.push(`Missing omp plugin marker: ${markerPath}`);
11679
11696
  }
11680
11697
  for (const skill of SKILL_SMOKE) {
11681
11698
  const skillPath = path8.join(pluginRoot, "skills", skill, "SKILL.md");
@@ -11712,9 +11729,33 @@ function runInit3(scope, dryRun) {
11712
11729
  }
11713
11730
  }
11714
11731
  if (!ompAvailable()) {
11715
- notes.push("omp CLI not found on PATH. Install Oh My Pi (`omp`), then re-run init or manually: omp plugin install github:btspoony/mstar-harness");
11732
+ notes.push("omp CLI not found on PATH. Install Oh My Pi (`omp`), then re-run init or manually: omp plugin install @mstar-harness/omp");
11716
11733
  } else {
11717
- const linkArgs = ["plugin", "link", HARNESS_REPO_PATH];
11734
+ const ompPackagePath = path8.join(HARNESS_REPO_PATH, OMP_PACKAGE_REL);
11735
+ if (!dryRun && !fs5.existsSync(path8.join(ompPackagePath, "plugin.json"))) {
11736
+ try {
11737
+ runCliCommand(["bun", "install"], { cwd: HARNESS_REPO_PATH, dryRun });
11738
+ runCliCommand(["bun", "run", "engine:build"], { cwd: HARNESS_REPO_PATH, dryRun });
11739
+ runCliCommand(["bun", "run", "omp:build"], { cwd: HARNESS_REPO_PATH, dryRun });
11740
+ notes.push("Built the omp package (engine dist + discovery mirrors) before linking.");
11741
+ } catch (buildError) {
11742
+ const buildMessage = buildError instanceof Error ? buildError.message : String(buildError);
11743
+ notes.push(`Warning: could not build packages/omp (${buildMessage}). Falling back to: omp plugin install @mstar-harness/omp`);
11744
+ const installArgs = ["plugin", "install", "@mstar-harness/omp"];
11745
+ if (scope === "project")
11746
+ installArgs.push("--scope", "project");
11747
+ try {
11748
+ runOmp(installArgs, dryRun);
11749
+ notes.push(`Installed @mstar-harness/omp via omp plugin install (${scope}).`);
11750
+ } catch (installError) {
11751
+ notes.push(`omp plugin install also failed: ${installError instanceof Error ? installError.message : String(installError)}`);
11752
+ }
11753
+ notes.push(...postInstallNotes(scope, dryRun, projectRoot));
11754
+ return { location: HARNESS_REPO_PATH, notes };
11755
+ }
11756
+ }
11757
+ notes.push(`Linked omp plugin tree resolved via the workspace engine member; dist + root mirrors are gitignored build outputs (rebuilt automatically above when absent)`);
11758
+ const linkArgs = ["plugin", "link", ompPackagePath];
11718
11759
  if (scope === "project")
11719
11760
  linkArgs.push("--scope", "project");
11720
11761
  if (dryRun) {
@@ -11722,16 +11763,16 @@ function runInit3(scope, dryRun) {
11722
11763
  } else {
11723
11764
  try {
11724
11765
  runOmp(linkArgs, dryRun);
11725
- notes.push(`Linked local harness into omp plugins (${scope}): omp plugin link ${HARNESS_REPO_PATH}${scope === "project" ? " --scope project" : ""}`);
11766
+ notes.push(`Linked local harness omp package into omp plugins (${scope}): omp plugin link ${ompPackagePath}${scope === "project" ? " --scope project" : ""}`);
11726
11767
  } catch (error) {
11727
11768
  const message = error instanceof Error ? error.message : String(error);
11728
- notes.push(`omp plugin link failed (${message}). Falling back guidance: omp plugin install github:btspoony/mstar-harness`);
11769
+ notes.push(`omp plugin link failed (${message}). Falling back guidance: omp plugin install @mstar-harness/omp`);
11729
11770
  try {
11730
- const installArgs = ["plugin", "install", "github:btspoony/mstar-harness"];
11771
+ const installArgs = ["plugin", "install", "@mstar-harness/omp"];
11731
11772
  if (scope === "project")
11732
11773
  installArgs.push("--scope", "project");
11733
11774
  runOmp(installArgs, dryRun);
11734
- notes.push(`Installed github:btspoony/mstar-harness via omp plugin install (${scope}).`);
11775
+ notes.push(`Installed @mstar-harness/omp via omp plugin install (${scope}).`);
11735
11776
  } catch (installError) {
11736
11777
  const installMessage = installError instanceof Error ? installError.message : String(installError);
11737
11778
  notes.push(`omp plugin install also failed: ${installMessage}`);
@@ -11746,16 +11787,28 @@ function runInit3(scope, dryRun) {
11746
11787
  notes.push("Verify with: omp plugin list");
11747
11788
  notes.push("Enter PM with /skill:pm ; commands: /iteration-start /iteration-drive /iteration-loop /codebase-audit");
11748
11789
  notes.push(`Host adapter: mstar-host \u2192 references/omp.md (skill://mstar-host/references/omp.md)`);
11749
- notes.push(`Alternate install without CLI link: omp plugin install ${REPO_URL.replace("https://github.com/", "github:").replace(/\.git$/, "")}`);
11790
+ notes.push(`Alternate install without CLI link: omp plugin install @mstar-harness/omp`);
11750
11791
  return {
11751
11792
  location: HARNESS_REPO_PATH,
11752
11793
  notes
11753
11794
  };
11754
11795
  }
11796
+ function postInstallNotes(scope, dryRun, projectRoot) {
11797
+ const notes = [];
11798
+ if (scope === "project") {
11799
+ notes.push(...appendHarnessProjectGitignore(projectRoot, dryRun));
11800
+ notes.push(...appendGitignore(projectRoot, [".omp/plugins/", ".omp/plugin-overrides.json", ".omp/plugins/installed_plugins.json"], dryRun));
11801
+ }
11802
+ notes.push("Verify with: omp plugin list");
11803
+ notes.push("Enter PM with /skill:pm ; commands: /iteration-start /iteration-drive /iteration-loop /codebase-audit");
11804
+ notes.push(`Host adapter: mstar-host \u2192 references/omp.md (skill://mstar-host/references/omp.md)`);
11805
+ notes.push(`Alternate install without CLI link: omp plugin install @mstar-harness/omp`);
11806
+ return notes;
11807
+ }
11755
11808
  function runDoctor3(scope) {
11756
11809
  const errors2 = [];
11757
11810
  errors2.push(...validateLocalHarnessRepo());
11758
- errors2.push(...validatePluginTree(HARNESS_REPO_PATH));
11811
+ errors2.push(...validatePluginTree(path8.join(HARNESS_REPO_PATH, OMP_PACKAGE_REL)));
11759
11812
  if (!ompAvailable()) {
11760
11813
  errors2.push("omp CLI not found on PATH (required for omp target doctor checks).");
11761
11814
  } else {
@@ -11930,7 +11983,6 @@ function marketplacePluginEntry() {
11930
11983
  name: PLUGIN_NAME,
11931
11984
  source: { ...GITHUB_SOURCE },
11932
11985
  description: PLUGIN_DESCRIPTION,
11933
- version: readHarnessVersion(),
11934
11986
  category: PLUGIN_CATEGORY
11935
11987
  };
11936
11988
  }
@@ -11998,7 +12050,7 @@ function validateMarketplaceJson() {
11998
12050
  errors2.push(`ZCode marketplace plugin source.repo must be ${expected.source.repo}.`);
11999
12051
  }
12000
12052
  const expectedVersion = readHarnessVersion();
12001
- if (entry.version !== expectedVersion) {
12053
+ if (entry.version !== undefined && entry.version !== expectedVersion) {
12002
12054
  errors2.push(`ZCode marketplace plugin version must be ${expectedVersion}.`);
12003
12055
  }
12004
12056
  return errors2;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mstar-harness/cli",
3
- "version": "3.6.0-alpha.4",
3
+ "version": "3.6.1",
4
4
  "description": "Morning Star harness CLI — installer bootstrap + mstar workflow verbs (path/status/lease/sdd/iteration/dispatch/worktree/lint/design-md/audit/compound/host/skill).",
5
5
  "license": "MIT",
6
6
  "repository": {