@swmansion/argent 0.16.1 → 0.16.2-next.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.
package/dist/cli.js CHANGED
@@ -81,6 +81,7 @@ Commands:
81
81
  enable Enable a feature flag (global by default, --scope project for project)
82
82
  disable Disable a feature flag (global by default, --scope project for project)
83
83
  flags Show current feature-flag state
84
+ config Manage configuration (list / get / set / unset, project & global)
84
85
  telemetry Manage opt-out telemetry (status / enable / disable)
85
86
 
86
87
  Options:
@@ -146,6 +147,8 @@ async function main() {
146
147
  return (await loadCli()).disable(rest);
147
148
  case "flags":
148
149
  return (await loadCli()).flags(rest);
150
+ case "config":
151
+ return (await loadCli()).config(rest);
149
152
  case "telemetry":
150
153
  return (await loadCli()).telemetry(rest);
151
154
  case "--version":
package/dist/cli.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AACA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAEH,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAIlC,OAAO,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAC3D,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EACL,sBAAsB,EACtB,sBAAsB,EACtB,kBAAkB,GAEnB,MAAM,qBAAqB,CAAC;AAE7B,MAAM,YAAY,GAAG,mBAAmB,CAAC;AAEzC,SAAS,mBAAmB;IAC1B,IAAI,CAAC;QACH,uEAAuE;QACvE,oDAAoD;QACpD,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,EAAE,cAAc,CAAC,CAAC;QACxE,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,OAAO,EAAE,MAAM,CAAC,CAAyB,CAAC;QACjF,OAAO,GAAG,CAAC,OAAO,IAAI,IAAI,CAAC;IAC7B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,MAAM,CAAC,EAAE,AAAD,EAAG,OAAO,EAAE,GAAG,IAAI,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;AAC5C,MAAM,WAAW,GAAG,OAAO,KAAK,KAAK,CAAC;AAEtC,oBAAoB,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC;AAEtC,8EAA8E;AAC9E,8EAA8E;AAC9E,4EAA4E;AAC5E,6EAA6E;AAC7E,aAAa;AACb,SAAS,kBAAkB,CAAC,OAAyB;IACnD,MAAM,IAAI,GAAG,sBAAsB,CAAC,OAAO,CAAC,CAAC;IAC7C,MAAM,OAAO,GAAG,CAAC,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,mBAAmB,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACvF,OAAO,GAAG,IAAI,CAAC,OAAO,GAAG,OAAO,EAAE,CAAC;AACrC,CAAC;AAED,SAAS,SAAS;IAChB,MAAM,OAAO,GAAG,mBAAmB,EAAE,IAAI,SAAS,CAAC;IACnD,OAAO,CAAC,GAAG,CAAC;UACJ,OAAO;;;;;;gBAMD,kBAAkB,CAAC,MAAM,CAAC;gBAC1B,kBAAkB,CAAC,SAAS,CAAC;gBAC7B,kBAAkB,CAAC,QAAQ,CAAC;gBAC5B,kBAAkB,CAAC,WAAW,CAAC;gBAC/B,kBAAkB,CAAC,QAAQ,CAAC;;;;;;;;;;;;;;;;;;;WAmBjC,YAAY;CACtB,CAAC,CAAC;AACH,CAAC;AAED,0EAA0E;AAC1E,2EAA2E;AAC3E,mEAAmE;AACnE,KAAK,UAAU,aAAa;IAC1B,OAAO,CAAC,MAAM,MAAM,CAAC,iBAAwB,CAAC,CAAqB,CAAC;AACtE,CAAC;AACD,KAAK,UAAU,OAAO;IACpB,OAAO,CAAC,MAAM,MAAM,CAAC,kBAAyB,CAAC,CAAe,CAAC;AACjE,CAAC;AACD,KAAK,UAAU,OAAO;IACpB,OAAO,CAAC,MAAM,MAAM,CAAC,gBAAuB,CAAC,CAAe,CAAC;AAC/D,CAAC;AAED,KAAK,UAAU,IAAI;IACjB,2EAA2E;IAC3E,yEAAyE;IACzE,wEAAwE;IACxE,4EAA4E;IAC5E,4EAA4E;IAC5E,IAAI,sBAAsB,CAAC,OAAO,EAAE,IAAI,CAAC,EAAE,CAAC;QAC1C,oEAAoE;QACpE,kBAAkB,CAAC,OAAmD,CAAC,CAAC;QACxE,OAAO;IACT,CAAC;IAED,QAAQ,OAAO,EAAE,CAAC;QAChB,KAAK,KAAK;YACR,OAAO,CAAC,MAAM,OAAO,EAAE,CAAC,CAAC,cAAc,CAAC,EAAE,KAAK,EAAE,qBAAqB,EAAE,CAAC,CAAC;QAC5E,KAAK,MAAM,CAAC;QACZ,KAAK,SAAS;YACZ,OAAO,CAAC,MAAM,aAAa,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC5C,KAAK,QAAQ;YACX,OAAO,CAAC,MAAM,aAAa,EAAE,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAC9C,KAAK,WAAW,CAAC;QACjB,KAAK,QAAQ;YACX,OAAO,CAAC,MAAM,aAAa,EAAE,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QACjD,KAAK,OAAO;YACV,OAAO,CAAC,MAAM,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,KAAK,EAAE,qBAAqB,EAAE,CAAC,CAAC;QACzE,KAAK,KAAK;YACR,OAAO,CAAC,MAAM,OAAO,EAAE,CAAC,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,KAAK,EAAE,qBAAqB,EAAE,CAAC,CAAC;QACvE,KAAK,MAAM;YACT,OAAO,CAAC,MAAM,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,KAAK,EAAE,qBAAqB,EAAE,CAAC,CAAC;QACxE,KAAK,QAAQ;YACX,OAAO,CAAC,MAAM,OAAO,EAAE,CAAC,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,KAAK,EAAE,qBAAqB,EAAE,CAAC,CAAC;QAC1E,KAAK,MAAM;YACT,OAAO,CAAC,MAAM,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,KAAK,EAAE,qBAAqB,EAAE,CAAC,CAAC;QACxE,KAAK,MAAM;YACT,OAAO,CAAC,MAAM,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACtC,KAAK,QAAQ;YACX,OAAO,CAAC,MAAM,OAAO,EAAE,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACxC,KAAK,QAAQ;YACX,OAAO,CAAC,MAAM,OAAO,EAAE,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACxC,KAAK,SAAS;YACZ,OAAO,CAAC,MAAM,OAAO,EAAE,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QACzC,KAAK,OAAO;YACV,OAAO,CAAC,MAAM,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACvC,KAAK,WAAW;YACd,OAAO,CAAC,MAAM,OAAO,EAAE,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QAC3C,KAAK,WAAW,CAAC;QACjB,KAAK,IAAI;YACP,OAAO,CAAC,GAAG,CAAC,mBAAmB,EAAE,IAAI,SAAS,CAAC,CAAC;YAChD,OAAO;QACT,KAAK,QAAQ,CAAC;QACd,KAAK,IAAI,CAAC;QACV;YACE,SAAS,EAAE,CAAC;YACZ,IAAI,OAAO,IAAI,OAAO,KAAK,QAAQ,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;gBACxD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClB,CAAC;IACL,CAAC;AACH,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;IACnB,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACnB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AACA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAEH,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAIlC,OAAO,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAC3D,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EACL,sBAAsB,EACtB,sBAAsB,EACtB,kBAAkB,GAEnB,MAAM,qBAAqB,CAAC;AAE7B,MAAM,YAAY,GAAG,mBAAmB,CAAC;AAEzC,SAAS,mBAAmB;IAC1B,IAAI,CAAC;QACH,uEAAuE;QACvE,oDAAoD;QACpD,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,EAAE,cAAc,CAAC,CAAC;QACxE,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,OAAO,EAAE,MAAM,CAAC,CAAyB,CAAC;QACjF,OAAO,GAAG,CAAC,OAAO,IAAI,IAAI,CAAC;IAC7B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,MAAM,CAAC,EAAE,AAAD,EAAG,OAAO,EAAE,GAAG,IAAI,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;AAC5C,MAAM,WAAW,GAAG,OAAO,KAAK,KAAK,CAAC;AAEtC,oBAAoB,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC;AAEtC,8EAA8E;AAC9E,8EAA8E;AAC9E,4EAA4E;AAC5E,6EAA6E;AAC7E,aAAa;AACb,SAAS,kBAAkB,CAAC,OAAyB;IACnD,MAAM,IAAI,GAAG,sBAAsB,CAAC,OAAO,CAAC,CAAC;IAC7C,MAAM,OAAO,GAAG,CAAC,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,mBAAmB,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACvF,OAAO,GAAG,IAAI,CAAC,OAAO,GAAG,OAAO,EAAE,CAAC;AACrC,CAAC;AAED,SAAS,SAAS;IAChB,MAAM,OAAO,GAAG,mBAAmB,EAAE,IAAI,SAAS,CAAC;IACnD,OAAO,CAAC,GAAG,CAAC;UACJ,OAAO;;;;;;gBAMD,kBAAkB,CAAC,MAAM,CAAC;gBAC1B,kBAAkB,CAAC,SAAS,CAAC;gBAC7B,kBAAkB,CAAC,QAAQ,CAAC;gBAC5B,kBAAkB,CAAC,WAAW,CAAC;gBAC/B,kBAAkB,CAAC,QAAQ,CAAC;;;;;;;;;;;;;;;;;;;;WAoBjC,YAAY;CACtB,CAAC,CAAC;AACH,CAAC;AAED,0EAA0E;AAC1E,2EAA2E;AAC3E,mEAAmE;AACnE,KAAK,UAAU,aAAa;IAC1B,OAAO,CAAC,MAAM,MAAM,CAAC,iBAAwB,CAAC,CAAqB,CAAC;AACtE,CAAC;AACD,KAAK,UAAU,OAAO;IACpB,OAAO,CAAC,MAAM,MAAM,CAAC,kBAAyB,CAAC,CAAe,CAAC;AACjE,CAAC;AACD,KAAK,UAAU,OAAO;IACpB,OAAO,CAAC,MAAM,MAAM,CAAC,gBAAuB,CAAC,CAAe,CAAC;AAC/D,CAAC;AAED,KAAK,UAAU,IAAI;IACjB,2EAA2E;IAC3E,yEAAyE;IACzE,wEAAwE;IACxE,4EAA4E;IAC5E,4EAA4E;IAC5E,IAAI,sBAAsB,CAAC,OAAO,EAAE,IAAI,CAAC,EAAE,CAAC;QAC1C,oEAAoE;QACpE,kBAAkB,CAAC,OAAmD,CAAC,CAAC;QACxE,OAAO;IACT,CAAC;IAED,QAAQ,OAAO,EAAE,CAAC;QAChB,KAAK,KAAK;YACR,OAAO,CAAC,MAAM,OAAO,EAAE,CAAC,CAAC,cAAc,CAAC,EAAE,KAAK,EAAE,qBAAqB,EAAE,CAAC,CAAC;QAC5E,KAAK,MAAM,CAAC;QACZ,KAAK,SAAS;YACZ,OAAO,CAAC,MAAM,aAAa,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC5C,KAAK,QAAQ;YACX,OAAO,CAAC,MAAM,aAAa,EAAE,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAC9C,KAAK,WAAW,CAAC;QACjB,KAAK,QAAQ;YACX,OAAO,CAAC,MAAM,aAAa,EAAE,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QACjD,KAAK,OAAO;YACV,OAAO,CAAC,MAAM,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,KAAK,EAAE,qBAAqB,EAAE,CAAC,CAAC;QACzE,KAAK,KAAK;YACR,OAAO,CAAC,MAAM,OAAO,EAAE,CAAC,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,KAAK,EAAE,qBAAqB,EAAE,CAAC,CAAC;QACvE,KAAK,MAAM;YACT,OAAO,CAAC,MAAM,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,KAAK,EAAE,qBAAqB,EAAE,CAAC,CAAC;QACxE,KAAK,QAAQ;YACX,OAAO,CAAC,MAAM,OAAO,EAAE,CAAC,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,KAAK,EAAE,qBAAqB,EAAE,CAAC,CAAC;QAC1E,KAAK,MAAM;YACT,OAAO,CAAC,MAAM,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,KAAK,EAAE,qBAAqB,EAAE,CAAC,CAAC;QACxE,KAAK,MAAM;YACT,OAAO,CAAC,MAAM,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACtC,KAAK,QAAQ;YACX,OAAO,CAAC,MAAM,OAAO,EAAE,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACxC,KAAK,QAAQ;YACX,OAAO,CAAC,MAAM,OAAO,EAAE,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACxC,KAAK,SAAS;YACZ,OAAO,CAAC,MAAM,OAAO,EAAE,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QACzC,KAAK,OAAO;YACV,OAAO,CAAC,MAAM,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACvC,KAAK,QAAQ;YACX,OAAO,CAAC,MAAM,OAAO,EAAE,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACxC,KAAK,WAAW;YACd,OAAO,CAAC,MAAM,OAAO,EAAE,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QAC3C,KAAK,WAAW,CAAC;QACjB,KAAK,IAAI;YACP,OAAO,CAAC,GAAG,CAAC,mBAAmB,EAAE,IAAI,SAAS,CAAC,CAAC;YAChD,OAAO;QACT,KAAK,QAAQ,CAAC;QACd,KAAK,IAAI,CAAC;QACV;YACE,SAAS,EAAE,CAAC;YACZ,IAAI,OAAO,IAAI,OAAO,KAAK,QAAQ,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;gBACxD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClB,CAAC;IACL,CAAC;AACH,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;IACnB,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACnB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
@@ -17072,6 +17072,21 @@ import * as path4 from "node:path";
17072
17072
  import * as fs from "node:fs";
17073
17073
  import * as path from "node:path";
17074
17074
  import { homedir } from "node:os";
17075
+ var PROJECT_MARKERS = [".argent", ".git", "package.json"];
17076
+ function findProjectRoot(startDir) {
17077
+ let current = path.resolve(startDir);
17078
+ while (true) {
17079
+ for (const marker of PROJECT_MARKERS) {
17080
+ if (fs.existsSync(path.join(current, marker))) return current;
17081
+ }
17082
+ const parent = path.dirname(current);
17083
+ if (parent === current) return null;
17084
+ current = parent;
17085
+ }
17086
+ }
17087
+ function resolveProjectRoot(startDir) {
17088
+ return findProjectRoot(startDir) ?? path.resolve(startDir);
17089
+ }
17075
17090
 
17076
17091
  // ../configuration-core/src/paths.ts
17077
17092
  import * as os from "node:os";
@@ -17085,19 +17100,26 @@ function argentHomeDir() {
17085
17100
  const home = process.platform === "win32" ? nonEmpty(process.env.USERPROFILE) ?? os.homedir() : nonEmpty(process.env.HOME) ?? os.homedir();
17086
17101
  return path2.join(home, ".argent");
17087
17102
  }
17088
- function configFilePath() {
17089
- return path2.join(argentHomeDir(), "config.json");
17103
+ function configDir(scope = "global", options = {}) {
17104
+ if (scope === "global") {
17105
+ return options.homeDir ? path2.join(options.homeDir, ".argent") : argentHomeDir();
17106
+ }
17107
+ const cwd = options.cwd ?? process.cwd();
17108
+ return path2.join(resolveProjectRoot(cwd), ".argent");
17109
+ }
17110
+ function configFilePath(scope = "global", options = {}) {
17111
+ return path2.join(configDir(scope, options), "config.json");
17090
17112
  }
17091
17113
 
17092
17114
  // ../configuration-core/src/config.ts
17093
17115
  import * as crypto from "node:crypto";
17094
17116
  import * as fs2 from "node:fs";
17095
17117
  import * as path3 from "node:path";
17096
- function readConfigObject() {
17118
+ function readConfigObject(scope = "global", options = {}) {
17097
17119
  try {
17098
- const raw = fs2.readFileSync(configFilePath(), "utf8");
17120
+ const raw = fs2.readFileSync(configFilePath(scope, options), "utf8");
17099
17121
  const json = JSON.parse(raw);
17100
- if (json && typeof json === "object") {
17122
+ if (json && typeof json === "object" && !Array.isArray(json)) {
17101
17123
  return json;
17102
17124
  }
17103
17125
  } catch {
@@ -17110,8 +17132,8 @@ var LOCK_RETRY_MS = 25;
17110
17132
  function sleepSync(ms) {
17111
17133
  Atomics.wait(new Int32Array(new SharedArrayBuffer(4)), 0, 0, ms);
17112
17134
  }
17113
- function acquireConfigLock() {
17114
- const lockPath = configFilePath() + ".lock";
17135
+ function acquireConfigLock(finalPath) {
17136
+ const lockPath = finalPath + ".lock";
17115
17137
  const deadline = Date.now() + LOCK_MAX_WAIT_MS;
17116
17138
  for (; ; ) {
17117
17139
  try {
@@ -17146,14 +17168,15 @@ function releaseConfigLock(lock) {
17146
17168
  } catch {
17147
17169
  }
17148
17170
  }
17149
- function updateConfig(mutate) {
17150
- fs2.mkdirSync(argentHomeDir(), { recursive: true });
17151
- const lock = acquireConfigLock();
17171
+ function updateConfig(mutate, scope = "global", options = {}) {
17172
+ const dir = configDir(scope, options);
17173
+ fs2.mkdirSync(dir, { recursive: true });
17174
+ const finalPath = configFilePath(scope, options);
17175
+ const lock = acquireConfigLock(finalPath);
17152
17176
  try {
17153
- const next = readConfigObject();
17177
+ const next = readConfigObject(scope, options);
17154
17178
  mutate(next);
17155
- const finalPath = configFilePath();
17156
- const tmpPath = path3.join(argentHomeDir(), `.config.tmp.${process.pid}.${crypto.randomUUID()}`);
17179
+ const tmpPath = path3.join(dir, `.config.tmp.${process.pid}.${crypto.randomUUID()}`);
17157
17180
  const fd = fs2.openSync(tmpPath, "wx", 384);
17158
17181
  try {
17159
17182
  fs2.writeSync(fd, JSON.stringify(next, null, 2) + "\n");
@@ -17435,16 +17458,20 @@ function hostPlatformKey() {
17435
17458
  }
17436
17459
  return process.platform;
17437
17460
  }
17461
+ function simulatorServerBinaryName() {
17462
+ return process.platform === "win32" ? "simulator-server.exe" : "simulator-server";
17463
+ }
17438
17464
  function platformBinDir() {
17439
17465
  return path6.join(BIN_DIR, hostPlatformKey());
17440
17466
  }
17441
17467
  function simulatorServerBinaryPath() {
17442
- const p = path6.join(platformBinDir(), "simulator-server");
17468
+ const binaryName = simulatorServerBinaryName();
17469
+ const p = path6.join(platformBinDir(), binaryName);
17443
17470
  if (!fs4.existsSync(p)) {
17444
- const flat = path6.join(BIN_DIR, "simulator-server");
17471
+ const flat = path6.join(BIN_DIR, binaryName);
17445
17472
  const migrationHint = fs4.existsSync(flat) ? ` Found a binary at the old flat path ${flat}; move it to ${p} or update ARGENT_SIMULATOR_SERVER_DIR to point at the parent of the platform subdirectory.` : "";
17446
17473
  throw new Error(
17447
- `simulator-server binary not found for platform "${hostPlatformKey()}" at ${p}. Supported hosts today: darwin, linux (x86_64 and arm64).${migrationHint}`
17474
+ `simulator-server binary not found for platform "${hostPlatformKey()}" at ${p}. Supported hosts today: darwin, linux (x86_64 and arm64), win32.${migrationHint}`
17448
17475
  );
17449
17476
  }
17450
17477
  return p;
@@ -18501,18 +18501,20 @@ import * as fs2 from "node:fs";
18501
18501
  import * as path4 from "node:path";
18502
18502
  import { homedir as homedir3 } from "node:os";
18503
18503
  var PROJECT_MARKERS = [".argent", ".git", "package.json"];
18504
- function resolveProjectRoot(startDir) {
18505
- const initial = path4.resolve(startDir);
18506
- let current = initial;
18504
+ function findProjectRoot(startDir) {
18505
+ let current = path4.resolve(startDir);
18507
18506
  while (true) {
18508
18507
  for (const marker of PROJECT_MARKERS) {
18509
18508
  if (fs2.existsSync(path4.join(current, marker))) return current;
18510
18509
  }
18511
18510
  const parent = path4.dirname(current);
18512
- if (parent === current) return initial;
18511
+ if (parent === current) return null;
18513
18512
  current = parent;
18514
18513
  }
18515
18514
  }
18515
+ function resolveProjectRoot(startDir) {
18516
+ return findProjectRoot(startDir) ?? path4.resolve(startDir);
18517
+ }
18516
18518
  function getFlagsPath(scope, options = {}) {
18517
18519
  const home = options.homeDir ?? homedir3();
18518
18520
  if (scope === "global") {
@@ -18566,19 +18568,26 @@ function argentHomeDir() {
18566
18568
  const home = process.platform === "win32" ? nonEmpty(process.env.USERPROFILE) ?? os.homedir() : nonEmpty(process.env.HOME) ?? os.homedir();
18567
18569
  return path5.join(home, ".argent");
18568
18570
  }
18569
- function configFilePath() {
18570
- return path5.join(argentHomeDir(), "config.json");
18571
+ function configDir(scope = "global", options = {}) {
18572
+ if (scope === "global") {
18573
+ return options.homeDir ? path5.join(options.homeDir, ".argent") : argentHomeDir();
18574
+ }
18575
+ const cwd = options.cwd ?? process.cwd();
18576
+ return path5.join(resolveProjectRoot(cwd), ".argent");
18577
+ }
18578
+ function configFilePath(scope = "global", options = {}) {
18579
+ return path5.join(configDir(scope, options), "config.json");
18571
18580
  }
18572
18581
 
18573
18582
  // ../configuration-core/src/config.ts
18574
18583
  import * as crypto from "node:crypto";
18575
18584
  import * as fs3 from "node:fs";
18576
18585
  import * as path6 from "node:path";
18577
- function readConfigObject() {
18586
+ function readConfigObject(scope = "global", options = {}) {
18578
18587
  try {
18579
- const raw = fs3.readFileSync(configFilePath(), "utf8");
18588
+ const raw = fs3.readFileSync(configFilePath(scope, options), "utf8");
18580
18589
  const json = JSON.parse(raw);
18581
- if (json && typeof json === "object") {
18590
+ if (json && typeof json === "object" && !Array.isArray(json)) {
18582
18591
  return json;
18583
18592
  }
18584
18593
  } catch {
@@ -18591,8 +18600,8 @@ var LOCK_RETRY_MS = 25;
18591
18600
  function sleepSync(ms) {
18592
18601
  Atomics.wait(new Int32Array(new SharedArrayBuffer(4)), 0, 0, ms);
18593
18602
  }
18594
- function acquireConfigLock() {
18595
- const lockPath = configFilePath() + ".lock";
18603
+ function acquireConfigLock(finalPath) {
18604
+ const lockPath = finalPath + ".lock";
18596
18605
  const deadline = Date.now() + LOCK_MAX_WAIT_MS;
18597
18606
  for (; ; ) {
18598
18607
  try {
@@ -18627,14 +18636,15 @@ function releaseConfigLock(lock) {
18627
18636
  } catch {
18628
18637
  }
18629
18638
  }
18630
- function updateConfig(mutate) {
18631
- fs3.mkdirSync(argentHomeDir(), { recursive: true });
18632
- const lock = acquireConfigLock();
18639
+ function updateConfig(mutate, scope = "global", options = {}) {
18640
+ const dir = configDir(scope, options);
18641
+ fs3.mkdirSync(dir, { recursive: true });
18642
+ const finalPath = configFilePath(scope, options);
18643
+ const lock = acquireConfigLock(finalPath);
18633
18644
  try {
18634
- const next = readConfigObject();
18645
+ const next = readConfigObject(scope, options);
18635
18646
  mutate(next);
18636
- const finalPath = configFilePath();
18637
- const tmpPath = path6.join(argentHomeDir(), `.config.tmp.${process.pid}.${crypto.randomUUID()}`);
18647
+ const tmpPath = path6.join(dir, `.config.tmp.${process.pid}.${crypto.randomUUID()}`);
18638
18648
  const fd = fs3.openSync(tmpPath, "wx", 384);
18639
18649
  try {
18640
18650
  fs3.writeSync(fd, JSON.stringify(next, null, 2) + "\n");