@swmansion/argent 0.33.1-next.0 → 0.33.1-next.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Binary file
Binary file
Binary file
Binary file
Binary file
package/dist/cli-cmds.mjs CHANGED
@@ -35872,7 +35872,7 @@ var _CI_VENDOR_COUNT_FOR_TEST = vendors_default.length;
35872
35872
  var SESSION_ID2 = randomUUID5();
35873
35873
  function readCliVersion() {
35874
35874
  if (true) {
35875
- return "0.33.1-next.0";
35875
+ return "0.33.1-next.2";
35876
35876
  }
35877
35877
  return "0.0.0";
35878
35878
  }
@@ -16981,7 +16981,7 @@ var _CI_VENDOR_COUNT_FOR_TEST = vendors_default.length;
16981
16981
  var SESSION_ID = randomUUID4();
16982
16982
  function readCliVersion() {
16983
16983
  if (true) {
16984
- return "0.33.1-next.0";
16984
+ return "0.33.1-next.2";
16985
16985
  }
16986
16986
  return "0.0.0";
16987
16987
  }
@@ -20663,12 +20663,13 @@ function npxChildEnv(env = process.env) {
20663
20663
  }
20664
20664
  return childEnv;
20665
20665
  }
20666
- function isSkillsCliAvailable() {
20666
+ function isSkillsCliAvailable(cwd) {
20667
20667
  try {
20668
20668
  execSync("npx --force --no-install skills --version", {
20669
20669
  env: npxChildEnv(),
20670
20670
  stdio: ["ignore", "ignore", "ignore"],
20671
- timeout: PROBE_TIMEOUT_MS
20671
+ timeout: PROBE_TIMEOUT_MS,
20672
+ ...cwd ? { cwd } : {}
20672
20673
  });
20673
20674
  return true;
20674
20675
  } catch {
@@ -23345,10 +23346,10 @@ function bundledCopyFor(version) {
23345
23346
  }
23346
23347
  return SKILLS_DIR;
23347
23348
  }
23348
- function printManualInstructions(source, bundledCopy, scope, customRoot, npxMissing = false) {
23349
- const root = scope === "global" ? "~" : scope === "custom" ? customRoot : ".";
23349
+ function printManualInstructions(source, bundledCopy, scope, root, npxMissing = false) {
23350
+ const dir = (sub) => scope === "global" ? `~/${sub}` : shellQuotePath(`${root}/${sub}`);
23350
23351
  const add = `skills add ${source}${scope === "global" ? " -g" : ""} --skill '*' -y`;
23351
- const cd = scope === "custom" ? `cd ${customRoot} && ` : "";
23352
+ const cd = scope === "global" ? "" : `cd ${shellQuotePath(root)} && `;
23352
23353
  note(
23353
23354
  [
23354
23355
  `Skills are bundled at:`,
@@ -23357,10 +23358,10 @@ function printManualInstructions(source, bundledCopy, scope, customRoot, npxMiss
23357
23358
  `To install manually, copy them to your editor's skills directory:`,
23358
23359
  ``,
23359
23360
  ` ${import_picocolors10.default.dim("# Claude Code")}`,
23360
- ` mkdir -p ${root}/.claude/skills && cp -r ${bundledCopy}/* ${root}/.claude/skills/`,
23361
+ ` mkdir -p ${dir(".claude/skills")} && cp -r ${bundledCopy}/* ${dir(".claude/skills/")}`,
23361
23362
  ``,
23362
23363
  ` ${import_picocolors10.default.dim("# Cursor")}`,
23363
- ` mkdir -p ${root}/.cursor/skills && cp -r ${bundledCopy}/* ${root}/.cursor/skills/`,
23364
+ ` mkdir -p ${dir(".cursor/skills")} && cp -r ${bundledCopy}/* ${dir(".cursor/skills/")}`,
23364
23365
  ``,
23365
23366
  ...npxMissing ? [` ${import_picocolors10.default.dim("# Or, with pnpm:")}`, ` ${cd}pnpm dlx ${add}`] : [` ${import_picocolors10.default.dim("# Or use npx skills directly:")}`, ` ${cd}npx ${add}`]
23366
23367
  ].join("\n"),
@@ -23392,12 +23393,13 @@ function formatSkillsSummaryLine(skills) {
23392
23393
  return `${import_picocolors10.default.green("Skills")} ${written} installed`;
23393
23394
  }
23394
23395
  async function runSkillsStep(args) {
23395
- const { nonInteractive, fromTar, version, scope, customRoot } = args;
23396
+ const { nonInteractive, fromTar, version, scope, effectiveRoot } = args;
23397
+ const skillsCwd = scope === "global" ? void 0 : effectiveRoot;
23396
23398
  log.step(import_picocolors10.default.bold("Step 2: Skills Installation"));
23397
23399
  log.warn(import_picocolors10.default.yellow("Skills installation is required for Argent to function properly."));
23398
23400
  let skillsMethod;
23399
23401
  const online = await isOnline();
23400
- const offlineWithCache = !online && isSkillsCliAvailable();
23402
+ const offlineWithCache = !online && isSkillsCliAvailable(skillsCwd);
23401
23403
  const skillsCliReady = online || offlineWithCache;
23402
23404
  if (!skillsCliReady) {
23403
23405
  log.warn(
@@ -23436,8 +23438,7 @@ async function runSkillsStep(args) {
23436
23438
  const useGitHubSource = online && !fromTar && version !== "unknown";
23437
23439
  const skillsSource = useGitHubSource ? buildArgentSkillsSource(version) : SKILLS_DIR;
23438
23440
  const bundledCopy = useGitHubSource ? bundledCopyFor(version) : SKILLS_DIR;
23439
- const skillsCwd = scope === "custom" ? customRoot : void 0;
23440
- const skillsRoot = scope === "global" ? os3.homedir() : skillsCwd ?? process.cwd();
23441
+ const skillsRoot = scope === "global" ? os3.homedir() : effectiveRoot;
23441
23442
  const skillsScope = scope === "global" ? "global" : "project";
23442
23443
  const expected = listBundledSkills(bundledCopy);
23443
23444
  const snapshot = () => snapshotArgentSkills(skillsRoot, skillsScope, expected);
@@ -23447,7 +23448,7 @@ async function runSkillsStep(args) {
23447
23448
  let installedFrom = skillsSource;
23448
23449
  let fallbackReason = null;
23449
23450
  if (skillsMethod === "manual") {
23450
- printManualInstructions(skillsSource, bundledCopy, scope, customRoot);
23451
+ printManualInstructions(skillsSource, bundledCopy, scope, effectiveRoot);
23451
23452
  skillOutcome = "skipped";
23452
23453
  } else {
23453
23454
  const interactive = skillsMethod === "interactive";
@@ -23471,7 +23472,7 @@ async function runSkillsStep(args) {
23471
23472
  const fail = (err, attempted, npxMissing = false) => {
23472
23473
  if (!interactive) spinner2.stop(import_picocolors10.default.red("Skills installation failed."));
23473
23474
  log.error(`Failed to install skills from ${attempted}: ${meaningfulLine(err)}`);
23474
- printManualInstructions(bundledCopy, bundledCopy, scope, customRoot, npxMissing);
23475
+ printManualInstructions(bundledCopy, bundledCopy, scope, effectiveRoot, npxMissing);
23475
23476
  return "failure";
23476
23477
  };
23477
23478
  try {
@@ -23746,7 +23747,7 @@ async function init2(args) {
23746
23747
  fromTar: parsed.fromTar,
23747
23748
  version,
23748
23749
  scope,
23749
- customRoot
23750
+ effectiveRoot
23750
23751
  });
23751
23752
  log.step(import_picocolors11.default.bold("Step 3: Rules"));
23752
23753
  const copyResults = copyRulesAndAgents(
@@ -101273,7 +101273,7 @@ var _CI_VENDOR_COUNT_FOR_TEST = vendors_default.length;
101273
101273
  var SESSION_ID = (0, import_node_crypto3.randomUUID)();
101274
101274
  function readCliVersion() {
101275
101275
  if (true) {
101276
- return "0.33.1-next.0";
101276
+ return "0.33.1-next.2";
101277
101277
  }
101278
101278
  return "0.0.0";
101279
101279
  }
@@ -143362,7 +143362,7 @@ function debuggerServiceRef(params) {
143362
143362
  // ../tool-server/src/tools/debugger/not-connected.ts
143363
143363
  var GUIDANCE = {
143364
143364
  metro_not_running: "Metro is not running on this port. Do not retry in a loop \u2014 the result will not change until Metro is started. Start Metro with the project's own start script if it has one (else `npx react-native start` or `npx expo start`) or ask the user, wait for it to report ready, then retry once.",
143365
- no_app_connected: "Metro is running but no app is attached. Do not retry immediately \u2014 launch or restart the RN app on the target device (launch-app / restart-app), wait a few seconds for the bundle to load, then retry once. On Android, if the app cannot reach Metro, first run `adb reverse tcp:<port> tcp:<port>`.",
143365
+ no_app_connected: "Metro is running, but no app on the target device is attached to it. Do not retry immediately \u2014 launch or restart the RN app on the target device (launch-app / restart-app), wait a few seconds for the bundle to load, then retry once. On Android, if the app cannot reach Metro, first run `adb reverse tcp:<port> tcp:<port>`.",
143366
143366
  device_mismatch: "The device_id does not match any debugger target on this Metro. Re-target with the logicalDeviceId listed in the detail message, or give the device its own Metro port.",
143367
143367
  cdp_unreachable: "The runtime's CDP endpoint could not be reached. Verify the app is running (launch-app), then call debugger-connect and retry once.",
143368
143368
  runtime_unresponsive: "The runtime accepted the debugger connection but did not answer within the timeout \u2014 it is likely frozen, or paused at a breakpoint. Do not retry in a loop (each attempt waits out the full timeout). Check the app; if it is hung, restart it (restart-app), then retry once.",
@@ -146924,8 +146924,18 @@ function deviceKey(target) {
146924
146924
  }
146925
146925
  return target.deviceName;
146926
146926
  }
146927
+ var seenLogicalDeviceIds = /* @__PURE__ */ new Set();
146928
+ function listDevices(devices) {
146929
+ return [...devices].map(
146930
+ (d) => d.logicalId ? `${d.name ?? "unknown"} (${d.logicalId})` : `${d.name ?? "unknown"} (legacy inspector \u2014 no logicalDeviceId)`
146931
+ ).join(", ");
146932
+ }
146927
146933
  function selectTarget(targets, port, options) {
146928
146934
  const pool = targets;
146935
+ for (const t of pool) {
146936
+ const id = t.reactNative?.logicalDeviceId;
146937
+ if (id) seenLogicalDeviceIds.add(id);
146938
+ }
146929
146939
  let candidates = pool;
146930
146940
  if (typeof options?.deviceId === "string" && options.deviceId) {
146931
146941
  const deviceId = options.deviceId;
@@ -146944,9 +146954,7 @@ function selectTarget(targets, port, options) {
146944
146954
  }
146945
146955
  }
146946
146956
  if (distinctDevices.size > 1) {
146947
- const listed = [...distinctDevices.values()].map(
146948
- (d) => d.logicalId ? `${d.name ?? "unknown"} (${d.logicalId})` : `${d.name ?? "unknown"} (legacy inspector \u2014 no logicalDeviceId)`
146949
- ).join(", ");
146957
+ const listed = listDevices(distinctDevices.values());
146950
146958
  throw new FailureError(
146951
146959
  `No debugger target matches device_id "${deviceId}". ${distinctDevices.size} devices are connected to Metro on port ${port}: ${listed}. Re-target with the logicalDeviceId in parentheses \u2014 that is what debugger-connect returns and what subsequent debugger-* calls must pass. A legacy-inspector device (RN 0.72 / Vega) reports none and cannot be singled out of a shared Metro: give it its own Metro port.`,
146952
146960
  {
@@ -146957,6 +146965,17 @@ function selectTarget(targets, port, options) {
146957
146965
  }
146958
146966
  );
146959
146967
  }
146968
+ if (seenLogicalDeviceIds.has(deviceId)) {
146969
+ throw new FailureError(
146970
+ `Device with logicalDeviceId "${deviceId}" is no longer attached to Metro on port ${port} \u2014 its app likely exited or reloaded onto another Metro. Not falling back to the remaining device: ${listDevices(distinctDevices.values())}. If the app exited, relaunch it on the target device (launch-app / restart-app), then retry with the same id: a relaunched app keeps its logicalDeviceId. If it was reinstalled (reinstall-app), iOS can give it a new logicalDeviceId: when the device listed above is your target, retry with the id shown for it.`,
146971
+ {
146972
+ error_code: FAILURE_CODES.DEBUGGER_METRO_NO_TARGETS,
146973
+ failure_stage: "debugger_select_target",
146974
+ failure_area: "tool_server",
146975
+ error_kind: "not_found"
146976
+ }
146977
+ );
146978
+ }
146960
146979
  }
146961
146980
  }
146962
146981
  if (options?.deviceName) {
Binary file
Binary file
Binary file
Binary file
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@swmansion/argent",
3
- "version": "0.33.1-next.0",
3
+ "version": "0.33.1-next.2",
4
4
  "mcpName": "io.github.software-mansion/argent",
5
5
  "description": "MCP server for iOS Simulator, Android Emulator, Chromium app and Mac app control",
6
6
  "license": "Apache-2.0",