maxsimcli 3.1.2 → 3.1.3

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/install.cjs CHANGED
@@ -7516,8 +7516,180 @@ var dist_default = createPrompt((config, done) => {
7516
7516
  ].filter(Boolean).join("\n").trimEnd()}${cursorHide}`;
7517
7517
  });
7518
7518
 
7519
+ //#endregion
7520
+ //#region ../../node_modules/minimist/index.js
7521
+ var require_minimist = /* @__PURE__ */ __commonJSMin(((exports, module) => {
7522
+ function hasKey(obj, keys) {
7523
+ var o = obj;
7524
+ keys.slice(0, -1).forEach(function(key) {
7525
+ o = o[key] || {};
7526
+ });
7527
+ return keys[keys.length - 1] in o;
7528
+ }
7529
+ function isNumber(x) {
7530
+ if (typeof x === "number") return true;
7531
+ if (/^0x[0-9a-f]+$/i.test(x)) return true;
7532
+ return /^[-+]?(?:\d+(?:\.\d*)?|\.\d+)(e[-+]?\d+)?$/.test(x);
7533
+ }
7534
+ function isConstructorOrProto(obj, key) {
7535
+ return key === "constructor" && typeof obj[key] === "function" || key === "__proto__";
7536
+ }
7537
+ module.exports = function(args, opts) {
7538
+ if (!opts) opts = {};
7539
+ var flags = {
7540
+ bools: {},
7541
+ strings: {},
7542
+ unknownFn: null
7543
+ };
7544
+ if (typeof opts.unknown === "function") flags.unknownFn = opts.unknown;
7545
+ if (typeof opts.boolean === "boolean" && opts.boolean) flags.allBools = true;
7546
+ else [].concat(opts.boolean).filter(Boolean).forEach(function(key) {
7547
+ flags.bools[key] = true;
7548
+ });
7549
+ var aliases = {};
7550
+ function aliasIsBoolean(key) {
7551
+ return aliases[key].some(function(x) {
7552
+ return flags.bools[x];
7553
+ });
7554
+ }
7555
+ Object.keys(opts.alias || {}).forEach(function(key) {
7556
+ aliases[key] = [].concat(opts.alias[key]);
7557
+ aliases[key].forEach(function(x) {
7558
+ aliases[x] = [key].concat(aliases[key].filter(function(y) {
7559
+ return x !== y;
7560
+ }));
7561
+ });
7562
+ });
7563
+ [].concat(opts.string).filter(Boolean).forEach(function(key) {
7564
+ flags.strings[key] = true;
7565
+ if (aliases[key]) [].concat(aliases[key]).forEach(function(k) {
7566
+ flags.strings[k] = true;
7567
+ });
7568
+ });
7569
+ var defaults = opts.default || {};
7570
+ var argv = { _: [] };
7571
+ function argDefined(key, arg) {
7572
+ return flags.allBools && /^--[^=]+$/.test(arg) || flags.strings[key] || flags.bools[key] || aliases[key];
7573
+ }
7574
+ function setKey(obj, keys, value) {
7575
+ var o = obj;
7576
+ for (var i = 0; i < keys.length - 1; i++) {
7577
+ var key = keys[i];
7578
+ if (isConstructorOrProto(o, key)) return;
7579
+ if (o[key] === void 0) o[key] = {};
7580
+ if (o[key] === Object.prototype || o[key] === Number.prototype || o[key] === String.prototype) o[key] = {};
7581
+ if (o[key] === Array.prototype) o[key] = [];
7582
+ o = o[key];
7583
+ }
7584
+ var lastKey = keys[keys.length - 1];
7585
+ if (isConstructorOrProto(o, lastKey)) return;
7586
+ if (o === Object.prototype || o === Number.prototype || o === String.prototype) o = {};
7587
+ if (o === Array.prototype) o = [];
7588
+ if (o[lastKey] === void 0 || flags.bools[lastKey] || typeof o[lastKey] === "boolean") o[lastKey] = value;
7589
+ else if (Array.isArray(o[lastKey])) o[lastKey].push(value);
7590
+ else o[lastKey] = [o[lastKey], value];
7591
+ }
7592
+ function setArg(key, val, arg) {
7593
+ if (arg && flags.unknownFn && !argDefined(key, arg)) {
7594
+ if (flags.unknownFn(arg) === false) return;
7595
+ }
7596
+ var value = !flags.strings[key] && isNumber(val) ? Number(val) : val;
7597
+ setKey(argv, key.split("."), value);
7598
+ (aliases[key] || []).forEach(function(x) {
7599
+ setKey(argv, x.split("."), value);
7600
+ });
7601
+ }
7602
+ Object.keys(flags.bools).forEach(function(key) {
7603
+ setArg(key, defaults[key] === void 0 ? false : defaults[key]);
7604
+ });
7605
+ var notFlags = [];
7606
+ if (args.indexOf("--") !== -1) {
7607
+ notFlags = args.slice(args.indexOf("--") + 1);
7608
+ args = args.slice(0, args.indexOf("--"));
7609
+ }
7610
+ for (var i = 0; i < args.length; i++) {
7611
+ var arg = args[i];
7612
+ var key;
7613
+ var next;
7614
+ if (/^--.+=/.test(arg)) {
7615
+ var m = arg.match(/^--([^=]+)=([\s\S]*)$/);
7616
+ key = m[1];
7617
+ var value = m[2];
7618
+ if (flags.bools[key]) value = value !== "false";
7619
+ setArg(key, value, arg);
7620
+ } else if (/^--no-.+/.test(arg)) {
7621
+ key = arg.match(/^--no-(.+)/)[1];
7622
+ setArg(key, false, arg);
7623
+ } else if (/^--.+/.test(arg)) {
7624
+ key = arg.match(/^--(.+)/)[1];
7625
+ next = args[i + 1];
7626
+ if (next !== void 0 && !/^(-|--)[^-]/.test(next) && !flags.bools[key] && !flags.allBools && (aliases[key] ? !aliasIsBoolean(key) : true)) {
7627
+ setArg(key, next, arg);
7628
+ i += 1;
7629
+ } else if (/^(true|false)$/.test(next)) {
7630
+ setArg(key, next === "true", arg);
7631
+ i += 1;
7632
+ } else setArg(key, flags.strings[key] ? "" : true, arg);
7633
+ } else if (/^-[^-]+/.test(arg)) {
7634
+ var letters = arg.slice(1, -1).split("");
7635
+ var broken = false;
7636
+ for (var j = 0; j < letters.length; j++) {
7637
+ next = arg.slice(j + 2);
7638
+ if (next === "-") {
7639
+ setArg(letters[j], next, arg);
7640
+ continue;
7641
+ }
7642
+ if (/[A-Za-z]/.test(letters[j]) && next[0] === "=") {
7643
+ setArg(letters[j], next.slice(1), arg);
7644
+ broken = true;
7645
+ break;
7646
+ }
7647
+ if (/[A-Za-z]/.test(letters[j]) && /-?\d+(\.\d*)?(e-?\d+)?$/.test(next)) {
7648
+ setArg(letters[j], next, arg);
7649
+ broken = true;
7650
+ break;
7651
+ }
7652
+ if (letters[j + 1] && letters[j + 1].match(/\W/)) {
7653
+ setArg(letters[j], arg.slice(j + 2), arg);
7654
+ broken = true;
7655
+ break;
7656
+ } else setArg(letters[j], flags.strings[letters[j]] ? "" : true, arg);
7657
+ }
7658
+ key = arg.slice(-1)[0];
7659
+ if (!broken && key !== "-") if (args[i + 1] && !/^(-|--)[^-]/.test(args[i + 1]) && !flags.bools[key] && (aliases[key] ? !aliasIsBoolean(key) : true)) {
7660
+ setArg(key, args[i + 1], arg);
7661
+ i += 1;
7662
+ } else if (args[i + 1] && /^(true|false)$/.test(args[i + 1])) {
7663
+ setArg(key, args[i + 1] === "true", arg);
7664
+ i += 1;
7665
+ } else setArg(key, flags.strings[key] ? "" : true, arg);
7666
+ } else {
7667
+ if (!flags.unknownFn || flags.unknownFn(arg) !== false) argv._.push(flags.strings._ || !isNumber(arg) ? arg : Number(arg));
7668
+ if (opts.stopEarly) {
7669
+ argv._.push.apply(argv._, args.slice(i + 1));
7670
+ break;
7671
+ }
7672
+ }
7673
+ }
7674
+ Object.keys(defaults).forEach(function(k) {
7675
+ if (!hasKey(argv, k.split("."))) {
7676
+ setKey(argv, k.split("."), defaults[k]);
7677
+ (aliases[k] || []).forEach(function(x) {
7678
+ setKey(argv, x.split("."), defaults[k]);
7679
+ });
7680
+ }
7681
+ });
7682
+ if (opts["--"]) argv["--"] = notFlags.slice();
7683
+ else notFlags.forEach(function(k) {
7684
+ argv._.push(k);
7685
+ });
7686
+ return argv;
7687
+ };
7688
+ }));
7689
+
7519
7690
  //#endregion
7520
7691
  //#region src/adapters/base.ts
7692
+ var import_minimist = /* @__PURE__ */ __toESM(require_minimist());
7521
7693
  /**
7522
7694
  * @maxsim/adapters — Shared base utilities extracted from bin/install.js
7523
7695
  */
@@ -8115,16 +8287,40 @@ const codexAdapter = {
8115
8287
  //#region src/install.ts
8116
8288
  const pkg = JSON.parse(node_fs.readFileSync(node_path.resolve(__dirname, "..", "package.json"), "utf-8"));
8117
8289
  const templatesRoot = node_path.resolve(__dirname, "assets", "templates");
8118
- const args = process.argv.slice(2);
8119
- const hasGlobal = args.includes("--global") || args.includes("-g");
8120
- const hasLocal = args.includes("--local") || args.includes("-l");
8121
- const hasOpencode = args.includes("--opencode");
8122
- const hasClaude = args.includes("--claude");
8123
- const hasGemini = args.includes("--gemini");
8124
- const hasCodex = args.includes("--codex");
8125
- const hasBoth = args.includes("--both");
8126
- const hasAll = args.includes("--all");
8127
- const hasUninstall = args.includes("--uninstall") || args.includes("-u");
8290
+ const argv = (0, import_minimist.default)(process.argv.slice(2), {
8291
+ boolean: [
8292
+ "global",
8293
+ "local",
8294
+ "opencode",
8295
+ "claude",
8296
+ "gemini",
8297
+ "codex",
8298
+ "both",
8299
+ "all",
8300
+ "uninstall",
8301
+ "help",
8302
+ "version",
8303
+ "force-statusline",
8304
+ "network"
8305
+ ],
8306
+ string: ["config-dir"],
8307
+ alias: {
8308
+ g: "global",
8309
+ l: "local",
8310
+ u: "uninstall",
8311
+ h: "help",
8312
+ c: "config-dir"
8313
+ }
8314
+ });
8315
+ const hasGlobal = !!argv["global"];
8316
+ const hasLocal = !!argv["local"];
8317
+ const hasOpencode = !!argv["opencode"];
8318
+ const hasClaude = !!argv["claude"];
8319
+ const hasGemini = !!argv["gemini"];
8320
+ const hasCodex = !!argv["codex"];
8321
+ const hasBoth = !!argv["both"];
8322
+ const hasAll = !!argv["all"];
8323
+ const hasUninstall = !!argv["uninstall"];
8128
8324
  let selectedRuntimes = [];
8129
8325
  if (hasAll) selectedRuntimes = [
8130
8326
  "claude",
@@ -8239,31 +8435,10 @@ function getOpencodeGlobalDir() {
8239
8435
  return opencodeAdapter.getGlobalDir();
8240
8436
  }
8241
8437
  const banner = "\n" + chalk.cyan(figlet.default.textSync("MAXSIM", { font: "ANSI Shadow" }).split("\n").map((line) => " " + line).join("\n")) + "\n\n MAXSIM " + chalk.dim("v" + pkg.version) + "\n A meta-prompting, context engineering and spec-driven\n development system for Claude Code, OpenCode, Gemini, and Codex.\n";
8242
- function parseConfigDirArg() {
8243
- const configDirIndex = args.findIndex((arg) => arg === "--config-dir" || arg === "-c");
8244
- if (configDirIndex !== -1) {
8245
- const nextArg = args[configDirIndex + 1];
8246
- if (!nextArg || nextArg.startsWith("-")) {
8247
- console.error(` ${chalk.yellow("--config-dir requires a path argument")}`);
8248
- process.exit(1);
8249
- }
8250
- return nextArg;
8251
- }
8252
- const configDirArg = args.find((arg) => arg.startsWith("--config-dir=") || arg.startsWith("-c="));
8253
- if (configDirArg) {
8254
- const value = configDirArg.split("=")[1];
8255
- if (!value) {
8256
- console.error(` ${chalk.yellow("--config-dir requires a non-empty path")}`);
8257
- process.exit(1);
8258
- }
8259
- return value;
8260
- }
8261
- return null;
8262
- }
8263
- const explicitConfigDir = parseConfigDirArg();
8264
- const hasHelp = args.includes("--help") || args.includes("-h");
8265
- const hasVersion = args.includes("--version");
8266
- const forceStatusline = args.includes("--force-statusline");
8438
+ const explicitConfigDir = argv["config-dir"] || null;
8439
+ const hasHelp = !!argv["help"];
8440
+ const hasVersion = !!argv["version"];
8441
+ const forceStatusline = !!argv["force-statusline"];
8267
8442
  if (hasVersion) {
8268
8443
  console.log(pkg.version);
8269
8444
  process.exit(0);
@@ -9240,7 +9415,7 @@ async function installAllRuntimes(runtimes, isGlobal, isInteractive) {
9240
9415
  finishInstall(result.settingsPath, result.settings, result.statuslineCommand, useStatusline, result.runtime, isGlobal);
9241
9416
  }
9242
9417
  }
9243
- const subcommand = args.find((a) => !a.startsWith("-"));
9418
+ const subcommand = argv._[0];
9244
9419
  (async () => {
9245
9420
  if (subcommand === "dashboard") {
9246
9421
  const { spawn: spawnDash, execSync: execSyncDash } = await import("node:child_process");
@@ -9269,7 +9444,7 @@ const subcommand = args.find((a) => !a.startsWith("-"));
9269
9444
  console.log(" Install MAXSIM first: " + chalk.cyan("npx maxsimcli@latest") + "\n");
9270
9445
  process.exit(0);
9271
9446
  }
9272
- const forceNetwork = args.includes("--network");
9447
+ const forceNetwork = !!argv["network"];
9273
9448
  const dashboardDir = node_path.dirname(serverPath);
9274
9449
  const dashboardConfigPath = node_path.join(node_path.dirname(dashboardDir), "dashboard.json");
9275
9450
  let projectCwd = process.cwd();