@swmansion/argent 0.22.1-next.2 → 0.22.1-next.4

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.
@@ -1,29 +1,24 @@
1
1
  #!/usr/bin/env node
2
2
  "use strict";
3
3
 
4
- // Thin dispatcher exposed as the `argent-simulator-server` bin entry in
5
- // package.json. Picks the platform-specific simulator-server binary at
6
- // invocation time and execs it with the caller's args. Required because
7
- // npm's `bin` field resolves to a single file regardless of host platform,
8
- // but the binary itself is platform-specific (Mach-O for darwin, ELF for
9
- // linux). The native-devtools-ios resolver uses the same per-platform
10
- // subdirectory layout, so a stable layout lives in exactly one place.
4
+ // Dispatcher published as the `argent-simulator-server` bin entry. npm's `bin`
5
+ // field resolves to a single file regardless of host platform, but the
6
+ // simulator-server binary is platform-specific, so pick it at invocation time
7
+ // and spawn it with the caller's args.
11
8
 
12
9
  const { spawn } = require("node:child_process");
13
10
  const path = require("node:path");
14
11
  const fs = require("node:fs");
15
12
 
16
- // Mirrors hostPlatformKey() in @argent/native-devtools-ios: darwin ships a
17
- // universal (lipo) binary, but Linux binaries are single-arch ELFs, so arm64
18
- // Linux resolves to its own "linux-arm64" directory next to the x86_64 one
19
- // ("linux"). Duplicated here because the dispatcher must stay a standalone
20
- // file — it ships verbatim as the npm `bin` entry.
13
+ // Mirrors hostPlatformKey() in @argent/native-devtools-ios; duplicated because
14
+ // this file ships verbatim as the npm `bin` entry and can't import. darwin ships
15
+ // a universal (lipo) binary, but Linux binaries are single-arch ELFs, so arm64
16
+ // Linux gets its own "linux-arm64" directory next to the x86_64 one ("linux").
21
17
  const platformKey =
22
18
  process.platform === "linux" && process.arch === "arm64" ? "linux-arm64" : process.platform;
23
19
 
24
- // PE `.exe` on Windows, extensionless ELF/Mach-O elsewhere. Mirrors
25
- // simulatorServerBinaryName() in @argent/native-devtools-ios; inlined because
26
- // this file ships verbatim as the npm `bin` entry and can't import.
20
+ // Mirrors simulatorServerBinaryName() in @argent/native-devtools-ios; inlined
21
+ // because this file ships verbatim as the npm `bin` entry and can't import.
27
22
  const binaryName = process.platform === "win32" ? "simulator-server.exe" : "simulator-server";
28
23
 
29
24
  const binary = path.join(__dirname, platformKey, binaryName);
@@ -39,9 +34,7 @@ const child = spawn(binary, process.argv.slice(2), { stdio: "inherit" });
39
34
 
40
35
  // Forward termination signals so a supervisor that signals only the dispatcher
41
36
  // PID (systemd, `kill -TERM <pid>`, container stop) doesn't orphan the child.
42
- // Ctrl+C in a TTY already broadcasts to the whole process group so the child
43
- // receives it too — these handlers cover the non-TTY case where the parent
44
- // would otherwise exit alone and leave the binary reparented to init.
37
+ // A TTY Ctrl+C already reaches the whole process group.
45
38
  /** @type {NodeJS.Signals[]} */
46
39
  const FORWARDED_SIGNALS = ["SIGTERM", "SIGINT", "SIGHUP"];
47
40
  for (const sig of FORWARDED_SIGNALS) {
@@ -50,7 +43,7 @@ for (const sig of FORWARDED_SIGNALS) {
50
43
  try {
51
44
  child.kill(sig);
52
45
  } catch {
53
- // Already exited between the signal arriving and us forwarding it.
46
+ // Child already exited between the signal arriving and forwarding.
54
47
  }
55
48
  }
56
49
  });
@@ -1,11 +1,11 @@
1
1
  import * as fs from "node:fs";
2
2
  import * as path from "node:path";
3
- // Installed package version, read from the shipped package.json. Lets the
4
- // launcher detect a stale tool-server after an in-place version bump (a local
5
- // devDependency update rewrites tool-server.cjs at the same path) and respawn
6
- // it with no install-time hook: install scripts are frequently disabled
7
- // (--ignore-scripts, pnpm's build gate, Yarn PnP, locked-down CI), which is
8
- // why argent ships no postinstall script at all.
3
+ // Installed package version, read from the shipped package.json. Feeds the
4
+ // launcher's version gate as the fallback for its on-disk read, so an in-place
5
+ // bump (a local devDependency update rewrites tool-server.cjs at the same
6
+ // path) retires the stale tool-server with no install-time hook: install
7
+ // scripts are frequently disabled (--ignore-scripts, pnpm's build gate, Yarn
8
+ // PnP, locked-down CI), which is why argent ships no postinstall script.
9
9
  function readPackageVersion() {
10
10
  try {
11
11
  const pkg = JSON.parse(fs.readFileSync(path.join(import.meta.dirname, "..", "package.json"), "utf8"));
@@ -46,12 +46,10 @@ function findDeclaringRoot(startDir) {
46
46
  // The version-STABLE package dir: the conventional <dir>/node_modules/<pkg>
47
47
  // symlink closest to cwd that resolves to the running package. Unlike
48
48
  // import.meta's realpath — pnpm's version-pinned .pnpm store dir, pruned on a
49
- // bump — this symlink survives an in-place update. In a pnpm WORKSPACE the
50
- // symlink sits in the DECLARING member's node_modules, a level below the root
51
- // where the .pnpm store lives, so scan every level from cwd up rather than
52
- // only the level where the store matched. Only ever returns a path whose
53
- // realpath equals the running package, so it can never point at a different
54
- // install — just a different (stable) alias of the same real dir.
49
+ // bump — this symlink survives an in-place update. Scan every level from cwd
50
+ // up: in a pnpm WORKSPACE the symlink sits in the DECLARING member's
51
+ // node_modules, below the root where the .pnpm store lives. The realpath check
52
+ // means the result is only ever another alias of the same real dir.
55
53
  export function findStablePackageDir(startDir, packageRoot) {
56
54
  let dir = startDir;
57
55
  for (;;) {
@@ -72,8 +70,7 @@ export function findStablePackageDir(startDir, packageRoot) {
72
70
  // Install topology of this running package: a project's local devDependency
73
71
  // (package root inside a node_modules found by walking up from cwd) or the
74
72
  // global PATH install — and, for local, WHICH project. Classified at process
75
- // start, the moment cwd is trustworthy (a committed local MCP command only
76
- // resolves with cwd at the project root); the launcher forwards both as
73
+ // start, while cwd is still trustworthy; the launcher forwards both as
77
74
  // ARGENT_INSTALL_KIND / ARGENT_PROJECT_ROOT so update-argent doesn't re-infer
78
75
  // them from the detached server's editor-chosen cwd.
79
76
  function classifyInstall() {
@@ -82,8 +79,8 @@ function classifyInstall() {
82
79
  let cwd;
83
80
  try {
84
81
  packageRoot = fs.realpathSync(path.join(import.meta.dirname, ".."));
85
- // cwd can throw (ENOENT) when the shell's directory was deleted and this
86
- // runs at module import, before any fatal handler is installed.
82
+ // cwd throws (ENOENT) when the shell's directory was deleted, and this runs
83
+ // at module import, before fatal handlers are installed.
87
84
  cwd = process.cwd();
88
85
  dir = cwd;
89
86
  }
@@ -94,11 +91,9 @@ function classifyInstall() {
94
91
  try {
95
92
  const nmReal = fs.realpathSync(path.join(dir, "node_modules"));
96
93
  if (packageRoot === nmReal || packageRoot.startsWith(nmReal + path.sep)) {
97
- // Local install. Prefer the DECLARING root over this physical hoist
98
- // root: in a hoisted workspace the declaring manifest sits at cwd
99
- // (the member root) or an ancestor below `dir`. The version-stable
100
- // package dir (used for runtime paths that must survive a pnpm store
101
- // prune) is found by its own cwd-up scan — see findStablePackageDir.
94
+ // Prefer the DECLARING root over this physical hoist root: in a
95
+ // hoisted workspace the declaring manifest sits at cwd (the member
96
+ // root) or an ancestor below `dir`.
102
97
  return {
103
98
  kind: "local",
104
99
  projectRoot: findDeclaringRoot(cwd) ?? dir,
@@ -114,10 +109,9 @@ function classifyInstall() {
114
109
  break;
115
110
  dir = parent;
116
111
  }
117
- // Yarn PnP local installs have no node_modules anywhere: the package runs
118
- // from the project's .yarn dir (unplugged/cache). Falling through to
119
- // "global" would make the agent-triggered update target a global install
120
- // the user may not even have.
112
+ // Yarn PnP has no node_modules anywhere: the package runs from the project's
113
+ // .yarn dir. Falling through to "global" would point the update at a global
114
+ // install the user may not even have.
121
115
  if (packageRoot.includes(`${path.sep}.yarn${path.sep}`)) {
122
116
  const declRoot = findDeclaringRoot(cwd);
123
117
  if (declRoot)
@@ -126,9 +120,8 @@ function classifyInstall() {
126
120
  return { kind: "global" };
127
121
  }
128
122
  const classifiedInstall = classifyInstall();
129
- // __dirname in ESM (compiled from TS) will be dist/. Bundle artifacts ship
130
- // next to the compiled launcher; prefer the version-stable package dir when
131
- // the classification found one (see classifyInstall).
123
+ // import.meta.dirname is dist/ in the published package, so ".." is the
124
+ // package root; prefer the version-stable alias when classification found one.
132
125
  const packageDir = classifiedInstall.stablePackageDir ?? path.join(import.meta.dirname, "..");
133
126
  export const BUNDLED_RUNTIME_PATHS = {
134
127
  bundlePath: path.join(packageDir, "dist", "tool-server.cjs"),
@@ -1 +1 @@
1
- {"version":3,"file":"bundled-paths.js","sourceRoot":"","sources":["../src/bundled-paths.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"bundled-paths.js","sourceRoot":"","sources":["../src/bundled-paths.ts"],"names":[],"mappings":"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"}
package/dist/cli-cmds.mjs CHANGED
@@ -2405,15 +2405,12 @@ var FAILURE_CODES = {
2405
2405
  NATIVE_PROFILER_SESSION_TORN_DOWN: "NATIVE_PROFILER_SESSION_TORN_DOWN",
2406
2406
  NATIVE_PROFILER_APP_PROCESS_NOT_FOUND: "NATIVE_PROFILER_APP_PROCESS_NOT_FOUND",
2407
2407
  NATIVE_PROFILER_NO_EXPORTED_TRACE: "NATIVE_PROFILER_NO_EXPORTED_TRACE",
2408
- // Android perfetto start-failure modes mirror the iOS xctrace set so a
2409
- // failed recording start is classified rather than falling through to the
2410
- // generic tool-execution bucket.
2408
+ // Android perfetto start failures, mirroring the iOS xctrace set above.
2411
2409
  NATIVE_PROFILER_PERFETTO_PROCESS_ERROR: "NATIVE_PROFILER_PERFETTO_PROCESS_ERROR",
2412
2410
  NATIVE_PROFILER_PERFETTO_READY_TIMEOUT: "NATIVE_PROFILER_PERFETTO_READY_TIMEOUT",
2413
2411
  NATIVE_PROFILER_PERFETTO_READY_EXITED: "NATIVE_PROFILER_PERFETTO_READY_EXITED",
2414
- // screen-recording-start / screen-recording-stop. One capture path for every
2415
- // platform (simulator-server's frame stream into ffmpeg), so the stages name
2416
- // the step that failed rather than the device family.
2412
+ // iOS and Android share one capture path (simulator-server frames into
2413
+ // ffmpeg), so these name the failing stage, not the device family.
2417
2414
  SCREEN_RECORDING_FACTORY_OPTIONS_MISSING: "SCREEN_RECORDING_FACTORY_OPTIONS_MISSING",
2418
2415
  SCREEN_RECORDING_WRONG_PLATFORM: "SCREEN_RECORDING_WRONG_PLATFORM",
2419
2416
  SCREEN_RECORDING_ALREADY_ACTIVE: "SCREEN_RECORDING_ALREADY_ACTIVE",
@@ -3272,14 +3269,12 @@ var CONFIG_SCHEMA = [
3272
3269
  description: "Whether anonymous opt-out telemetry is enabled (on by default; environment opt-outs like DO_NOT_TRACK are not reflected here \u2014 `argent telemetry status` shows effective consent).",
3273
3270
  scopes: ["global"],
3274
3271
  parse: asBoolean,
3275
- // A committed project file must never re-enable telemetry a user disabled
3276
- // globally, so the more-restrictive (opt-out) value always wins.
3277
3272
  merge: "prioritize-restrictive",
3278
- // Telemetry is opt-out: with nothing stored, consent.ts treats it as
3279
- // enabled, and the config surface must report the same instead of "(unset)".
3273
+ // Opt-out: consent.ts reads an unstored value as enabled, so the config
3274
+ // surface must show the same rather than "(unset)".
3280
3275
  default: true,
3281
- // Read-only under `argent config`: opt-in/out goes through the dedicated
3282
- // command so the live client is drained/reset, not just the file rewritten.
3276
+ // Opt-in/out goes through the dedicated command so the live client is
3277
+ // drained/reset, not just the file rewritten.
3283
3278
  manageCommand: "argent telemetry"
3284
3279
  },
3285
3280
  {
@@ -3287,8 +3282,6 @@ var CONFIG_SCHEMA = [
3287
3282
  description: "Coding-agent id remembered by `argent lens` to skip the picker.",
3288
3283
  scopes: ["project", "global"],
3289
3284
  parse: asString,
3290
- // A repo can pin the agent its screenshots should use; falls back to the
3291
- // user's global remembered choice.
3292
3285
  merge: "prioritize-local",
3293
3286
  example: "claude"
3294
3287
  },
@@ -3297,11 +3290,9 @@ var CONFIG_SCHEMA = [
3297
3290
  description: "Additional CoreSimulator device-set directories whose simulators argent should see alongside the default set. Absolute paths (or ~/\u2026); relative entries resolve against the project root (project scope) or home (global scope).",
3298
3291
  scopes: ["project", "global"],
3299
3292
  parse: asStringArray,
3300
- // Additive: the scopes extend each other rather than shadow — a repo's
3301
- // committed device sets are appended to the user's global ones (global
3302
- // baseline first, project extras after, deduplicated). Note that
3303
- // `getAdditionalIosDeviceSets` re-implements this union (path resolution
3304
- // must precede dedup) and guards on the preset staying "union".
3293
+ // Additive rather than shadowing: global baseline first, project extras
3294
+ // after, deduplicated. `getAdditionalIosDeviceSets` re-implements this union
3295
+ // (path resolution must precede dedup) and guards on the preset staying "union".
3305
3296
  merge: "union",
3306
3297
  example: '["~/DeviceSets/ci"]'
3307
3298
  },
@@ -3310,10 +3301,8 @@ var CONFIG_SCHEMA = [
3310
3301
  description: "Directory where finished screen recordings (mp4) are saved on the client host. Absolute, `~`-prefixed, or relative to the project root (home dir when not in a project). Unset \u21D2 `.argent/recordings` under the project root.",
3311
3302
  scopes: ["project", "global"],
3312
3303
  parse: asString,
3313
- // A repo can pin where its recordings land; falls back to the user's global
3314
- // preference. Resolution happens on the client (the machine the mp4 is
3315
- // persisted to), so with a remote `argent link` tool-server it is the
3316
- // *client's* config that decides.
3304
+ // Resolved on the client (the machine the mp4 is persisted to), so with a
3305
+ // remote `argent link` tool-server it is the *client's* config that decides.
3317
3306
  merge: "prioritize-local",
3318
3307
  example: "~/Movies/argent"
3319
3308
  }
@@ -6382,17 +6371,16 @@ function createExporter(config2) {
6382
6371
  // The exporter bounds a request with `req.setTimeout()`, which Node only
6383
6372
  // arms once the socket is CONNECTED — so a collector whose address drops
6384
6373
  // packets (corporate egress filter, dead host behind a firewall) leaves a
6385
- // socket stuck in the connecting state that no export deadline can reach,
6386
- // holding the process open for the OS connect timeout (~75s on macOS)
6387
- // after shutdown() has already resolved. The agent's socket timeout is
6388
- // armed when the socket is CREATED, so it also covers connect: it fires,
6389
- // the request emits 'timeout', and the exporter's handler destroys it.
6374
+ // socket stuck connecting that no export deadline can reach, holding the
6375
+ // process open for the OS connect timeout after shutdown() has resolved.
6376
+ // The agent's socket timeout is armed when the socket is CREATED, so it
6377
+ // covers connect too: it fires, the request emits 'timeout', and the
6378
+ // exporter's handler destroys it.
6390
6379
  //
6391
6380
  // keepAlive is restated because supplying httpAgentOptions at all
6392
- // replaces the agent the SDK would otherwise build, and its default is
6393
- // keepAlive: true. Without it the long-lived tool-server pays a fresh
6394
- // TCP+TLS handshake for every 10s batch — measured as one socket per
6395
- // request against a loopback collector, versus one socket shared.
6381
+ // replaces the agent the SDK would otherwise build, whose default is
6382
+ // keepAlive: true; without it the long-lived tool-server pays a fresh
6383
+ // TCP+TLS handshake for every batch.
6396
6384
  httpAgentOptions: { timeout: EXPORT_TIMEOUT_MS, keepAlive: true }
6397
6385
  });
6398
6386
  } finally {
@@ -6603,7 +6591,6 @@ var ALLOWED = {
6603
6591
  install_mode: INSTALL_MODE
6604
6592
  },
6605
6593
  "installation:global_install_decision": {
6606
- // `from_tar` is intentionally absent; the installer skips that dev path.
6607
6594
  decision: oneOf(["install", "cancel", "already_installed"])
6608
6595
  },
6609
6596
  "installation:update_decision": {
@@ -6682,9 +6669,8 @@ var ALLOWED = {
6682
6669
  tool_invocation_id: UUID,
6683
6670
  platform: PLATFORM,
6684
6671
  duration_ms: DURATION_MS,
6685
- // Schema-declared parameter names only (emit side filters against the tool's
6686
- // own zod shape and caps at 16 before this gate); the array validator also
6687
- // voids anything longer or with a non-identifier element.
6672
+ // Emit side sends only names declared in the tool's zod shape, capped at 16
6673
+ // because arrayOf voids the whole array once it is longer.
6688
6674
  invalid_params: arrayOf(matches(/^[a-z][a-z0-9_]{0,63}$/i, 64), 16),
6689
6675
  ...FAILURE_SIGNAL,
6690
6676
  ...AI_TELEMETRY
@@ -7216,7 +7202,7 @@ var _CI_VENDOR_COUNT_FOR_TEST = vendors_default.length;
7216
7202
  var SESSION_ID2 = randomUUID5();
7217
7203
  function readCliVersion() {
7218
7204
  if (true) {
7219
- return "0.22.1-next.2";
7205
+ return "0.22.1-next.4";
7220
7206
  }
7221
7207
  return "0.0.0";
7222
7208
  }
@@ -7513,15 +7499,11 @@ function resolveHostFingerprint() {
7513
7499
  const out = execFileSync2(simulatorServerBinaryPath(), ["fingerprint"], {
7514
7500
  encoding: "utf8",
7515
7501
  timeout: FINGERPRINT_TIMEOUT_MS,
7516
- // Reap with SIGKILL, not the default SIGTERM: a binary that ignores SIGTERM
7517
- // would otherwise block the (synchronous) event loop past the cap forever.
7518
- // SIGKILL can't be trapped, so the timeout is a genuine bound here.
7502
+ // SIGKILL, not the default SIGTERM: a binary that ignores SIGTERM would
7503
+ // otherwise block the (synchronous) event loop past the cap forever.
7519
7504
  killSignal: "SIGKILL",
7520
- // Cap captured stdout (same limit as the async variant): a binary streaming
7521
- // output is SIGKILL'd at this cap rather than filling Node's 1 MiB default.
7522
7505
  maxBuffer: FINGERPRINT_MAX_BUFFER,
7523
- // Ignore stderr so a binary that logs diagnostics doesn't pollute the
7524
- // caller's stderr; stdout (index 1) is captured as the return value.
7506
+ // Ignore stderr so the binary's diagnostics don't pollute the caller's.
7525
7507
  stdio: ["ignore", "pipe", "ignore"]
7526
7508
  }).trim();
7527
7509
  return out.length > 0 ? out : null;
@@ -9558,8 +9540,8 @@ async function runDetached(paths, port, host, idleTimeoutMinutes, token) {
9558
9540
  startedAt: (/* @__PURE__ */ new Date()).toISOString(),
9559
9541
  bundlePath: paths.bundlePath,
9560
9542
  host,
9561
- // Mark this as an explicitly-started (possibly supervisor-managed) server so
9562
- // the MCP auto-spawn path's kill-before-respawn never terminates it.
9543
+ // Tags this as explicitly started (possibly supervisor-managed) so the MCP
9544
+ // auto-spawn path's kill-before-respawn never terminates it.
9563
9545
  managed: "cli",
9564
9546
  ...token ? { token } : {}
9565
9547
  });
package/dist/cli.d.ts CHANGED
@@ -1,29 +1,7 @@
1
1
  #!/usr/bin/env node
2
2
  /**
3
- * argent CLI — globally-installed entry point.
4
- *
5
- * This dispatcher is intentionally minimal: it parses the top-level command,
6
- * lazy-imports the matching bundle, and forwards arguments. The actual
7
- * subcommand implementations live in sibling workspace packages and ship as
8
- * pre-bundled CJS files in dist/ alongside this dispatcher.
9
- *
10
- * Usage:
11
- * argent mcp Start the MCP stdio server (used by editors)
12
- * argent init Set up argent in a workspace (MCP + skills + rules)
13
- * argent install Alias for init
14
- * argent update Check for updates, refresh configuration
15
- * argent uninstall Remove argent from a workspace
16
- * argent remove Alias for uninstall
17
- * argent tools List tools exposed by the tool-server
18
- * argent tools describe <name> Show one tool's flags
19
- * argent run <tool> [flags] Invoke a tool by name
20
- * argent server start [flags] Spawn a long-lived tool-server (foreground by default)
21
- * argent server status|stop|logs Manage the shared tool-server
22
- * argent lens Open Argent Lens bound to a fresh coding-agent session (macOS)
23
- * argent link [flags] Route client requests to a remote tool-server
24
- * argent unlink Remove the persisted remote link
25
- * argent enable <flag> Enable a feature flag (global by default)
26
- * argent disable <flag> Disable a feature flag (global by default)
27
- * argent flags Show current feature-flag state
3
+ * argent CLI entry point. Dispatch only: subcommand implementations live in the
4
+ * sibling workspace packages (@argent/installer, @argent/mcp, @argent/cli) and
5
+ * are lazy-imported from bundles in dist/.
28
6
  */
29
7
  export {};
package/dist/cli.js CHANGED
@@ -1,30 +1,8 @@
1
1
  #!/usr/bin/env node
2
2
  /**
3
- * argent CLI — globally-installed entry point.
4
- *
5
- * This dispatcher is intentionally minimal: it parses the top-level command,
6
- * lazy-imports the matching bundle, and forwards arguments. The actual
7
- * subcommand implementations live in sibling workspace packages and ship as
8
- * pre-bundled CJS files in dist/ alongside this dispatcher.
9
- *
10
- * Usage:
11
- * argent mcp Start the MCP stdio server (used by editors)
12
- * argent init Set up argent in a workspace (MCP + skills + rules)
13
- * argent install Alias for init
14
- * argent update Check for updates, refresh configuration
15
- * argent uninstall Remove argent from a workspace
16
- * argent remove Alias for uninstall
17
- * argent tools List tools exposed by the tool-server
18
- * argent tools describe <name> Show one tool's flags
19
- * argent run <tool> [flags] Invoke a tool by name
20
- * argent server start [flags] Spawn a long-lived tool-server (foreground by default)
21
- * argent server status|stop|logs Manage the shared tool-server
22
- * argent lens Open Argent Lens bound to a fresh coding-agent session (macOS)
23
- * argent link [flags] Route client requests to a remote tool-server
24
- * argent unlink Remove the persisted remote link
25
- * argent enable <flag> Enable a feature flag (global by default)
26
- * argent disable <flag> Disable a feature flag (global by default)
27
- * argent flags Show current feature-flag state
3
+ * argent CLI entry point. Dispatch only: subcommand implementations live in the
4
+ * sibling workspace packages (@argent/installer, @argent/mcp, @argent/cli) and
5
+ * are lazy-imported from bundles in dist/.
28
6
  */
29
7
  import * as fs from "node:fs";
30
8
  import * as path from "node:path";
@@ -34,8 +12,6 @@ import { INSTALLER_COMMAND_META, installerHelpRequested, printInstallerHelp, } f
34
12
  const PACKAGE_NAME = "@swmansion/argent";
35
13
  function getInstalledVersion() {
36
14
  try {
37
- // dist/cli.js lives in the published package's dist/, so two-up is the
38
- // package root containing the shipped package.json.
39
15
  const pkgPath = path.resolve(import.meta.dirname, "..", "package.json");
40
16
  const pkg = JSON.parse(fs.readFileSync(pkgPath, "utf8"));
41
17
  return pkg.version ?? null;
@@ -47,11 +23,8 @@ function getInstalledVersion() {
47
23
  const [, , command, ...rest] = process.argv;
48
24
  const isMcpServer = command === "mcp";
49
25
  installFatalHandlers({ isMcpServer });
50
- // One installer row of the command table: the command's one-line summary plus
51
- // its indented detail lines, both from INSTALLER_COMMAND_META. The summary is
52
- // shared with the per-command `--help`, so the two can't drift; the details
53
- // are table-only prose kept in the meta so each command's help text lives in
54
- // one place.
26
+ // `summary` is shared with the per-command `--help` so the two can't drift;
27
+ // `details` are rendered only in this table.
55
28
  function installerHelpEntry(command) {
56
29
  const meta = INSTALLER_COMMAND_META[command];
57
30
  const details = (meta.details ?? []).map((line) => `\n ${line}`).join("");
@@ -94,9 +67,8 @@ Run \`argent <command> --help\` for command-specific help.
94
67
  Package: ${PACKAGE_NAME}
95
68
  `);
96
69
  }
97
- // Lazy-load each subcommand bundle. Bundles are produced at build time by
98
- // scripts/bundle-tools.cjs and shipped alongside this dispatcher in dist/.
99
- // Typed against the workspace packages so calls are still checked.
70
+ // The bundles are produced at build time by scripts/bundle-tools.cjs into dist/;
71
+ // typed against the workspace packages so calls are still checked.
100
72
  async function loadInstaller() {
101
73
  return (await import("./installer.mjs"));
102
74
  }
@@ -107,12 +79,11 @@ async function loadCli() {
107
79
  return (await import("./cli-cmds.mjs"));
108
80
  }
109
81
  async function main() {
110
- // Some subcommands never look at their own argv: the installers forward it
111
- // to side-effecting functions that ignore `--help` (so `argent uninstall
112
- // --help` would run the real, destructive command), and `mcp` is handed no
113
- // argv at all, so a help flag there starts the stdio server and blocks
114
- // reading JSON-RPC from stdin. Intercept help for that set before
115
- // dispatching. Every other subcommand parses `--help` itself.
82
+ // The installers forward argv to side-effecting functions that ignore
83
+ // `--help` (so `argent uninstall --help` would run the real, destructive
84
+ // command), and `mcp` is handed no argv at all, so a help flag there starts
85
+ // the stdio server and blocks on stdin. Every other subcommand parses
86
+ // `--help` itself.
116
87
  if (installerHelpRequested(command, rest)) {
117
88
  // installerHelpRequested only returns true for an InstallerCommand.
118
89
  printInstallerHelp(command);
package/dist/cli.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AACA;;;;GAIG;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,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,4EAA4E;AAC5E,6CAA6C;AAC7C,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;;;;;gBAKD,kBAAkB,CAAC,KAAK,CAAC;gBACzB,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;;;;;;;;;;;;;;;;;;;;;WAqBjC,YAAY;CACtB,CAAC,CAAC;AACH,CAAC;AAED,iFAAiF;AACjF,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,sEAAsE;IACtE,yEAAyE;IACzE,4EAA4E;IAC5E,sEAAsE;IACtE,mBAAmB;IACnB,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,SAAS;YACZ,OAAO,CAAC,MAAM,OAAO,EAAE,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QACzC,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,25 +1,21 @@
1
- // Process-level handlers for uncaughtException and unhandledRejection.
1
+ // Process-level uncaughtException/unhandledRejection handlers.
2
2
  //
3
3
  // In MCP-server mode we do NOT exit on every uncaught error — many are
4
4
  // transient and the editor expects the server to keep running. But the naive
5
5
  // version (`stderr.write(...); if (!isMcp) exit`) burns 100% CPU when stderr
6
6
  // itself is broken (e.g. the parent process is gone): the write emits an
7
- // async 'error' event on the stream, which without a listener becomes another
8
- // uncaughtException, runs the handler, writes to the same broken stream, ...
7
+ // async 'error' event, which without a listener becomes another
8
+ // uncaughtException, which writes to the same broken stream, ...
9
9
  //
10
- // The fix has three pieces:
11
- // 1. `'error'` listeners on stdout/stderr broken stdio is fatal; exit
12
- // before the failure round-trips into uncaughtException. This is what
13
- // breaks the production loop.
14
- // 2. try/catch around `stderr.write` synchronous write failures also exit
15
- // cleanly instead of escaping into another uncaughtException.
16
- // 3. try/catch around the formatter — a throwing `.stack` getter or
17
- // `toString` (the production trace pointed at defaultPrepareStackTrace)
18
- // can't take down the handler.
10
+ // Hence: `'error'` listeners on stdout/stderr (broken stdio is fatal — exit
11
+ // before the failure round-trips into uncaughtException; this is what breaks
12
+ // the loop), try/catch around `stderr.write` for synchronous failures, and
13
+ // try/catch around the formatter, since a throwing `.stack` getter is what
14
+ // the production trace pointed at.
19
15
  //
20
- // When stdio is unusable we cannot tell the parent process what went wrong,
21
- // so we leave a breadcrumb on disk at `~/.argent/mcp-fatal.log`. Sibling of
22
- // the other persistent argent diagnostic logs (`tool-server.log`, etc.).
16
+ // With stdio unusable we cannot report to the parent, so we leave a
17
+ // breadcrumb at `~/.argent/mcp-fatal.log`, next to the other persistent
18
+ // argent logs.
23
19
  import * as fs from "node:fs";
24
20
  import * as os from "node:os";
25
21
  import * as path from "node:path";
@@ -32,8 +28,8 @@ function appendFatalLog(label, detail) {
32
28
  fs.appendFileSync(FATAL_LOG_PATH, line);
33
29
  }
34
30
  catch {
35
- // Last-resort log if even this write fails (read-only fs, missing home),
36
- // there is nothing more we can do. Swallow so we still exit cleanly.
31
+ // Last-resort log; if even this fails (read-only fs, missing home) there
32
+ // is nothing left to try.
37
33
  }
38
34
  }
39
35
  export function installFatalHandlers(opts) {
@@ -1 +1 @@
1
- {"version":3,"file":"fatal-handlers.js","sourceRoot":"","sources":["../src/fatal-handlers.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"fatal-handlers.js","sourceRoot":"","sources":["../src/fatal-handlers.ts"],"names":[],"mappings":"AAAA,+DAA+D;AAC/D,EAAE;AACF,uEAAuE;AACvE,6EAA6E;AAC7E,6EAA6E;AAC7E,yEAAyE;AACzE,gEAAgE;AAChE,iEAAiE;AACjE,EAAE;AACF,4EAA4E;AAC5E,6EAA6E;AAC7E,2EAA2E;AAC3E,2EAA2E;AAC3E,mCAAmC;AACnC,EAAE;AACF,oEAAoE;AACpE,wEAAwE;AACxE,eAAe;AAEf,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAElC,IAAI,SAAS,GAAG,KAAK,CAAC;AAEtB,MAAM,cAAc,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,eAAe,CAAC,CAAC;AAE3E,SAAS,cAAc,CAAC,KAAa,EAAE,MAAc;IACnD,IAAI,CAAC;QACH,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAChE,MAAM,IAAI,GAAG,IAAI,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,SAAS,OAAO,CAAC,GAAG,IAAI,KAAK,KAAK,MAAM,IAAI,CAAC;QACtF,EAAE,CAAC,cAAc,CAAC,cAAc,EAAE,IAAI,CAAC,CAAC;IAC1C,CAAC;IAAC,MAAM,CAAC;QACP,yEAAyE;QACzE,0BAA0B;IAC5B,CAAC;AACH,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,IAA8B;IACjE,IAAI,SAAS;QAAE,OAAO;IACtB,SAAS,GAAG,IAAI,CAAC;IAEjB,KAAK,MAAM,MAAM,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,MAAM,CAAU,EAAE,CAAC;QAC/D,MAAM,IAAI,GAAG,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC;QAC7D,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE;YACzB,cAAc,CAAC,UAAU,IAAI,EAAE,EAAE,MAAM,CAAE,GAAa,EAAE,KAAK,IAAI,GAAG,CAAC,CAAC,CAAC;YACvE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC,CAAC,CAAC;IACL,CAAC;IAED,SAAS,WAAW,CAAC,KAAa,EAAE,SAAuB;QACzD,IAAI,MAAc,CAAC;QACnB,IAAI,CAAC;YACH,IAAI,CAAC;gBACH,MAAM,GAAG,SAAS,EAAE,CAAC;YACvB,CAAC;YAAC,MAAM,CAAC;gBACP,MAAM,GAAG,oBAAoB,CAAC;YAChC,CAAC;YACD,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,YAAY,KAAK,KAAK,MAAM,IAAI,CAAC,CAAC;QACzD,CAAC;QAAC,MAAM,CAAC;YACP,cAAc,CAAC,KAAK,EAAE,MAAO,CAAC,CAAC;YAC/B,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QACD,IAAI,CAAC,IAAI,CAAC,WAAW;YAAE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACzC,CAAC;IAED,OAAO,CAAC,EAAE,CAAC,mBAAmB,EAAE,CAAC,GAAG,EAAE,EAAE;QACtC,WAAW,CAAC,oBAAoB,EAAE,GAAG,EAAE,CAAC,MAAM,CAAE,GAAa,EAAE,KAAK,IAAI,GAAG,CAAC,CAAC,CAAC;IAChF,CAAC,CAAC,CAAC;IACH,OAAO,CAAC,EAAE,CAAC,oBAAoB,EAAE,CAAC,MAAM,EAAE,EAAE;QAC1C,WAAW,CAAC,qBAAqB,EAAE,GAAG,EAAE,CACtC,MAAM,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAC5E,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC"}