@swmansion/argent 0.32.1-next.19 → 0.32.1-next.20

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,7 +1,7 @@
1
1
  {
2
2
  "packageName": "com.argent.androiddevtools",
3
3
  "instrumentationRunner": "com.argent.androiddevtools/.SnapshotInstrumentation",
4
- "versionName": "0.3.0",
5
- "versionCode": 3,
4
+ "versionName": "0.4.0",
5
+ "versionCode": 4,
6
6
  "installFlags": ["-r", "-t"]
7
7
  }
Binary file
Binary file
Binary file
Binary file
Binary file
package/dist/cli-cmds.mjs CHANGED
@@ -35871,7 +35871,7 @@ var _CI_VENDOR_COUNT_FOR_TEST = vendors_default.length;
35871
35871
  var SESSION_ID2 = randomUUID5();
35872
35872
  function readCliVersion() {
35873
35873
  if (true) {
35874
- return "0.32.1-next.18";
35874
+ return "0.32.1-next.20";
35875
35875
  }
35876
35876
  return "0.0.0";
35877
35877
  }
@@ -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.32.1-next.18";
16984
+ return "0.32.1-next.20";
16985
16985
  }
16986
16986
  return "0.0.0";
16987
16987
  }
@@ -79538,14 +79538,18 @@ function platformMatrix(platform, capability41) {
79538
79538
  return capability41.macos;
79539
79539
  }
79540
79540
  }
79541
+ function macosAppsUnavailableReason() {
79542
+ if (!isFlagEnabled(MACOS_APPS_FLAG)) return MACOS_APPS_FLAG_OFF_REASON;
79543
+ if (process.platform !== "darwin") return "native Mac apps can only be driven on macOS";
79544
+ return null;
79545
+ }
79541
79546
  function assertSupported(toolId, capability41, device) {
79542
79547
  if (!capability41) return;
79543
79548
  if (device.platform === "harmony" && !isHarmonyEnabled()) {
79544
79549
  throw new UnsupportedOperationError(toolId, device, HARMONY_DISABLED_REASON);
79545
79550
  }
79546
- if (device.platform === "macos" && !isFlagEnabled(MACOS_APPS_FLAG)) {
79547
- throw new UnsupportedOperationError(toolId, device, MACOS_APPS_FLAG_OFF_REASON);
79548
- }
79551
+ const macosRefusal = device.platform === "macos" ? macosAppsUnavailableReason() : null;
79552
+ if (macosRefusal) throw new UnsupportedOperationError(toolId, device, macosRefusal);
79549
79553
  const matrix = platformMatrix(device.platform, capability41);
79550
79554
  if (!matrix) {
79551
79555
  const reason2 = (device.platform === "macos" ? MACOS_REFUSAL_REASONS[toolId] : void 0) ?? `no ${device.platform} support declared`;
@@ -101252,7 +101256,7 @@ var _CI_VENDOR_COUNT_FOR_TEST = vendors_default.length;
101252
101256
  var SESSION_ID = (0, import_node_crypto3.randomUUID)();
101253
101257
  function readCliVersion() {
101254
101258
  if (true) {
101255
- return "0.32.1-next.18";
101259
+ return "0.32.1-next.20";
101256
101260
  }
101257
101261
  return "0.0.0";
101258
101262
  }
@@ -125696,11 +125700,12 @@ function isMacosAppsEnabled() {
125696
125700
  return isFlagEnabled(MACOS_APPS_FLAG);
125697
125701
  }
125698
125702
  function assertMacosAppsEnabled(toolId, device) {
125699
- if (isMacosAppsEnabled()) return;
125703
+ const reason2 = macosAppsUnavailableReason();
125704
+ if (!reason2) return;
125700
125705
  throw new UnsupportedOperationError(
125701
125706
  toolId,
125702
125707
  device ?? { id: MACOS_APP_ID_PREFIX, platform: "macos", kind: "app" },
125703
- MACOS_APPS_FLAG_OFF_REASON
125708
+ reason2
125704
125709
  );
125705
125710
  }
125706
125711
  function macosFailure(message, error_code, failure_stage, error_kind, cause) {
@@ -143560,10 +143565,14 @@ function extractBearerToken(authHeader) {
143560
143565
  }
143561
143566
  function isToolExposed(def) {
143562
143567
  if (!def) return false;
143563
- if (def.featureFlag && !isFlagEnabled(def.featureFlag)) return false;
143568
+ if (def.featureFlag && !isFlagOffered(def.featureFlag)) return false;
143564
143569
  if (def.hideWhen?.()) return false;
143565
143570
  return true;
143566
143571
  }
143572
+ function isFlagOffered(flag) {
143573
+ if (flag === MACOS_APPS_FLAG) return macosAppsUnavailableReason() === null;
143574
+ return isFlagEnabled(flag);
143575
+ }
143567
143576
  function findDependencyMissing(err) {
143568
143577
  return findErrorInCauseChain(err, DependencyMissingError);
143569
143578
  }
@@ -143896,18 +143905,18 @@ function createHttpApp(registry2, options) {
143896
143905
  const tools = snapshot.tools.map((id) => registry2.getTool(id)).filter((def) => isToolExposed(def)).flatMap((def) => {
143897
143906
  const entry = {
143898
143907
  name: def.id,
143899
- description: renderFlagGated(def.description ?? "", isFlagEnabled),
143908
+ description: renderFlagGated(def.description ?? "", isFlagOffered),
143900
143909
  inputSchema: renderFlagGated(
143901
143910
  def.inputSchema ?? { type: "object", properties: {} },
143902
- isFlagEnabled
143911
+ isFlagOffered
143903
143912
  )
143904
143913
  };
143905
- if (def.outputHint) entry.outputHint = renderFlagGated(def.outputHint, isFlagEnabled);
143914
+ if (def.outputHint) entry.outputHint = renderFlagGated(def.outputHint, isFlagOffered);
143906
143915
  if (def.fileInputs && def.fileInputs.length > 0) {
143907
143916
  entry.fileInputs = withFormerParamSpecs(def.id, def.fileInputs);
143908
143917
  }
143909
143918
  if (def.alwaysLoad) entry.alwaysLoad = true;
143910
- if (def.searchHint) entry.searchHint = renderFlagGated(def.searchHint, isFlagEnabled);
143919
+ if (def.searchHint) entry.searchHint = renderFlagGated(def.searchHint, isFlagOffered);
143911
143920
  if (def.longRunning) entry.longRunning = true;
143912
143921
  if (def.hideFromMcp) entry.hideFromMcp = true;
143913
143922
  if (def.readOnly) entry.readOnly = true;
@@ -146507,6 +146516,8 @@ function toRequestLine(record2) {
146507
146516
  // ../tool-server/src/tools/native-devtools/native-find-views.ts
146508
146517
  init_zod();
146509
146518
  init_src2();
146519
+ init_device_info();
146520
+ var MACOS_NO_MATCH_NOTE = "No NSView matched. SwiftUI sets a control's identifier and label on an accessibility element, not on an NSView, so this search does not find SwiftUI controls: describe lists them with their identifiers and frames.";
146510
146521
  var zodSchema5 = external_exports.object({
146511
146522
  ...nativeAppTarget,
146512
146523
  className: external_exports.string().optional().describe("UIView class name to match (exact, e.g. UIButton)"),
@@ -146525,7 +146536,7 @@ var nativeFindViewsTool = {
146525
146536
  description: `Search for specific UIViews in the running app by class name, accessibility identifier, accessibility label, tag or React Native nativeID; at least one of these params is required.
146526
146537
  Use when you need to locate a specific view by its properties without dumping the entire native-full-hierarchy.
146527
146538
  Returns { status: "ok", matches }: the matching views with their frames, properties, optional ancestors and optional children. Frames are in points. frame and center are relative to the superview, and windowFrame turns with the UI. To tap a view, divide the centre of its screenFrame by the screen size in points, which native-full-hierarchy returns as screen (maxDepth: 1 is enough), and pass the result to gesture-tap. Matches are not filtered for visibility. Before tapping, call native-user-interactable-view-at-point at that centre with skipClasses ["UITextEffectsWindow"]. If it does not return the match or a descendant, check a screenshot.
146528
- <flag:macos-apps>On a Mac app it searches the NSViews of every visible window: className is the NSView class, and identifier matches the accessibility identifier or the view identifier. The tap recipe above and the statuses below are iOS only.
146539
+ <flag:macos-apps>On a Mac app it searches the NSViews of every visible window: className is the NSView class, and identifier matches the accessibility identifier or the view identifier. SwiftUI sets a control's identifier and label on an accessibility element, not on an NSView, so an identifier or label search does not find SwiftUI controls: describe lists them with their identifiers and frames. The tap recipe above and the statuses below are iOS only.
146529
146540
  </flag:macos-apps>If status is restart_required: follow the message (usually restart-app), then retry. If status is service_stale: the app is already injected, so restarting it cannot help. Restart the tool-server (\`argent server stop && argent server start --detach\`) and retry. If the same status comes back after that restart, stop restarting: follow the message, which names the terminal fallback. If status is connect_pending: the app is injected and still connecting. Do not restart it, wait a few seconds and retry. If status is init_failed: follow the message (re-boot the simulator) rather than retrying.
146530
146541
  An Apple system app is rejected outright (terminal: never retry it).`,
146531
146542
  zodSchema: zodSchema5,
@@ -146544,17 +146555,24 @@ An Apple system app is rejected outright (terminal: never retry it).`,
146544
146555
  macos: { app: true }
146545
146556
  },
146546
146557
  services: nativeAppServices,
146547
- execute: (services, params) => queryViewHierarchyFor(
146548
- services,
146549
- params,
146550
- "native-find-views",
146551
- "ViewHierarchy.findViews",
146552
- FAILURE_CODES.NATIVE_DEVTOOLS_FIND_VIEWS_ERROR,
146553
- (result) => ({
146554
- status: "ok",
146555
- matches: result.matches ?? []
146556
- })
146557
- )
146558
+ execute: (services, params) => {
146559
+ const noteOnEmpty = resolveDevice(params.udid).platform === "macos" && (params.identifier !== void 0 || params.label !== void 0);
146560
+ return queryViewHierarchyFor(
146561
+ services,
146562
+ params,
146563
+ "native-find-views",
146564
+ "ViewHierarchy.findViews",
146565
+ FAILURE_CODES.NATIVE_DEVTOOLS_FIND_VIEWS_ERROR,
146566
+ (result) => {
146567
+ const matches2 = result.matches ?? [];
146568
+ return {
146569
+ status: "ok",
146570
+ matches: matches2,
146571
+ ...noteOnEmpty && matches2.length === 0 ? { note: MACOS_NO_MATCH_NOTE } : {}
146572
+ };
146573
+ }
146574
+ );
146575
+ }
146558
146576
  };
146559
146577
 
146560
146578
  // ../tool-server/src/tools/native-devtools/native-full-hierarchy.ts
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.32.1-next.19",
3
+ "version": "0.32.1-next.20",
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",