@swmansion/argent 0.28.1-next.9 → 0.29.1-next.0

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.
Files changed (54) hide show
  1. package/agents/argent-environment-inspector.md +7 -7
  2. package/agents/references/quality-control-checklist.md +14 -14
  3. package/assets/manifest.json +2 -2
  4. package/bin/argent-android-devtools-0.3.0.apk +0 -0
  5. package/bin/darwin/ax-service +0 -0
  6. package/bin/darwin/simulator-server +0 -0
  7. package/bin/darwin/tvos-ax-service +0 -0
  8. package/bin/darwin/tvos-hid-daemon +0 -0
  9. package/bin/linux/simulator-server +0 -0
  10. package/bin/linux-arm64/simulator-server +0 -0
  11. package/bin/tcp/ax-service +0 -0
  12. package/bin/win32/simulator-server.exe +0 -0
  13. package/dist/cli-cmds.mjs +4 -1
  14. package/dist/client.d.ts +18 -0
  15. package/dist/client.js +3 -0
  16. package/dist/installer.mjs +9 -2
  17. package/dist/mcp-server.mjs +13 -1
  18. package/dist/tool-args.generated.d.ts +87 -77
  19. package/dist/tool-server.cjs +947 -370
  20. package/dylibs/libArgentInjectionBootstrap.dylib +0 -0
  21. package/dylibs/libKeyboardPatch.dylib +0 -0
  22. package/dylibs/libNativeDevtoolsIos.dylib +0 -0
  23. package/dylibs/tcp/libArgentInjectionBootstrap.dylib +0 -0
  24. package/dylibs/tcp/libKeyboardPatch.dylib +0 -0
  25. package/dylibs/tcp/libNativeDevtoolsIos.dylib +0 -0
  26. package/dylibs/tvos/libArgentInjectionBootstrap.dylib +0 -0
  27. package/dylibs/tvos/libKeyboardPatch.dylib +0 -0
  28. package/dylibs/tvos/libNativeDevtoolsIos.dylib +0 -0
  29. package/package.json +1 -1
  30. package/rules/argent.md +16 -16
  31. package/skills/argent-android-emulator-setup/SKILL.md +9 -9
  32. package/skills/argent-create-flow/references/flow-yaml.md +11 -11
  33. package/skills/argent-create-flow/references/live-authoring.md +11 -11
  34. package/skills/argent-create-flow/references/reliability-and-recovery.md +13 -13
  35. package/skills/argent-device-interact/SKILL.md +47 -47
  36. package/skills/argent-device-interact/references/chromium.md +1 -1
  37. package/skills/argent-device-interact/references/gesture-examples.md +7 -7
  38. package/skills/argent-device-interact/references/secrets.md +6 -6
  39. package/skills/argent-lens/SKILL.md +21 -21
  40. package/skills/argent-metro-debugger/SKILL.md +24 -24
  41. package/skills/argent-metro-debugger/references/failure-scenarios.md +11 -11
  42. package/skills/argent-metro-debugger/references/source-maps.md +4 -4
  43. package/skills/argent-native-profiler/SKILL.md +13 -13
  44. package/skills/argent-qa-flows/SKILL.md +3 -3
  45. package/skills/argent-react-native-app-workflow/SKILL.md +18 -18
  46. package/skills/argent-react-native-optimization/SKILL.md +12 -12
  47. package/skills/argent-react-native-optimization/references/fix-reference.md +10 -10
  48. package/skills/argent-react-native-optimization/references/lint-rules.md +1 -1
  49. package/skills/argent-react-native-profiler/SKILL.md +25 -25
  50. package/skills/argent-react-native-profiler/references/diagnostic-tools.md +19 -19
  51. package/skills/argent-screen-recording/SKILL.md +14 -14
  52. package/skills/argent-test-ui-flow/SKILL.md +9 -9
  53. package/skills/argent-tv-interact/SKILL.md +19 -19
  54. package/bin/argent-android-devtools-0.2.0.apk +0 -0
@@ -4,7 +4,7 @@ description: >
4
4
  Inspects a mobile app project's environment and returns structured JSON covering
5
5
  project type, platform support, build and startup commands, bundler config, env
6
6
  resolution, key packages, QA/feedback-loop tooling, and Argent-specific workflow
7
- commands. Works on any project — determines whether it is React Native, Expo,
7
+ commands. Works on any project: determines whether it is React Native, Expo,
8
8
  Flutter, native iOS/Android, or another stack, and provides environment context
9
9
  regardless. Has deeper React Native introspection via gather-workspace-data but
10
10
  also reports useful information for non-RN projects.
@@ -15,7 +15,7 @@ description: >
15
15
 
16
16
  You are the **environment-inspector** subagent. Your job is to inspect a mobile app
17
17
  project and return a single JSON block describing the project's environment. You do
18
- not write files — the main agent handles persistence.
18
+ not write files; the main agent handles persistence.
19
19
 
20
20
  **Your first task is to determine what kind of project this is.**. The project could be, for example:
21
21
 
@@ -52,7 +52,7 @@ but required by the main agent, fill it in by manual inspection of the project.
52
52
  - Non-obvious `scripts/` directory contents and what each script does.
53
53
  - CI workflow files (`.github/workflows/*.yml`) to understand what "passing" means.
54
54
  - Custom Makefile or Fastfile targets.
55
- - `package.json` scripts beyond `start`/`test` — look for `check`, `verify`,
55
+ - `package.json` scripts beyond `start`/`test`: look for `check`, `verify`,
56
56
  `ci`, `precommit`, `prepush`, flavors, and env-specific variants.
57
57
  - `.husky/` hook contents to understand pre-commit/pre-push validation.
58
58
  - `lint-staged` config to understand what runs on commit.
@@ -70,7 +70,7 @@ but required by the main agent, fill it in by manual inspection of the project.
70
70
  Prefer concrete commands over generic ones (e.g. `yarn start:local` over
71
71
  `npx react-native start` if the project defines a custom script).
72
72
 
73
- 5. **Return the JSON block** — no prose, no markdown fences, no
73
+ 5. **Return the JSON block**: no prose, no markdown fences, no
74
74
  explanation. The main agent parses your entire response as JSON.
75
75
 
76
76
  ## Output schema
@@ -85,9 +85,9 @@ Return a JSON object with these top-level fields:
85
85
  | `is_ios` / `is_android` | bool | Platform directories exist |
86
86
  | `is_expo` / `is_web` / `is_flutter` | bool | Framework detection flags |
87
87
  | `is_native_ios` / `is_native_android` | bool | Native without cross-platform framework |
88
- | `startup_commands` | array | `[{ command, context }]` — concrete dev server start commands |
89
- | `build_commands` | array | `[{ command, platform, context }]` — build commands per platform |
90
- | `argent_workflow` | object | `{ start_dev_server, build_ios, build_android, notes }` — exact commands for Argent |
88
+ | `startup_commands` | array | `[{ command, context }]`: concrete dev server start commands |
89
+ | `build_commands` | array | `[{ command, platform, context }]`: build commands per platform |
90
+ | `argent_workflow` | object | `{ start_dev_server, build_ios, build_android, notes }`: exact commands for Argent |
91
91
  | `ios_has_podfile` | bool | True when `ios/Podfile` exists |
92
92
  | `android_has_gradle` | bool | True when `android/gradlew` exists |
93
93
  | `configs` | object | Paths to metro, babel, app, tsconfig, pubspec, xcode, gradle configs (`null` if absent) |
@@ -17,12 +17,12 @@ Look for these beyond the obvious lint/test configs, regardless of project type:
17
17
 
18
18
  **Immediate feedback tools (agent can trigger during a task):**
19
19
 
20
- - `tsc --noEmit` — instant type error feedback after edits (TypeScript projects)
21
- - `eslint --fix` / `swiftlint` / `ktlint` — auto-fixable lint errors
22
- - `jest --testPathPattern <file>` — single test file (JS/TS projects)
23
- - `dart analyze` — static analysis (Flutter projects)
24
- - `flutter test <file>` — single test file (Flutter projects)
25
- - `yarn test --watch` / `flutter test --watch` — reactive test runner
20
+ - `tsc --noEmit`: instant type error feedback after edits (TypeScript projects)
21
+ - `eslint --fix` / `swiftlint` / `ktlint`: auto-fixable lint errors
22
+ - `jest --testPathPattern <file>`: single test file (JS/TS projects)
23
+ - `dart analyze`: static analysis (Flutter projects)
24
+ - `flutter test <file>`: single test file (Flutter projects)
25
+ - `yarn test --watch` / `flutter test --watch`: reactive test runner
26
26
  - Metro hot reload (via `debugger-reload-metro` Argent tool, RN only)
27
27
  - Flutter hot reload / hot restart
28
28
 
@@ -34,12 +34,12 @@ Look for these beyond the obvious lint/test configs, regardless of project type:
34
34
 
35
35
  **Indicators to check (all project types):**
36
36
 
37
- - `scripts/` directory at project root — often contains custom validation scripts
38
- - `Makefile` / `Fastfile` targets — look for `lint`, `test`, `typecheck`, `check`, `validate`
37
+ - `scripts/` directory at project root: often contains custom validation scripts
38
+ - `Makefile` / `Fastfile` targets: look for `lint`, `test`, `typecheck`, `check`, `validate`
39
39
  - `package.json` scripts named `check`, `verify`, `ci`, `precommit`, `prepush`
40
- - `.husky/` directory — which hooks run and what they execute
41
- - `lint-staged` config — what runs on commit
42
- - CI config files — the CI steps are ground truth for what "passing" means
43
- - `Podfile` / `Package.swift` — iOS dependency management
44
- - `build.gradle` / `build.gradle.kts` / `settings.gradle` / `settings.gradle.kts` — Android build config and flavor definitions (Groovy or Kotlin DSL)
45
- - `pubspec.yaml` / `analysis_options.yaml` — Flutter project config and lint rules
40
+ - `.husky/` directory: which hooks run and what they execute
41
+ - `lint-staged` config: what runs on commit
42
+ - CI config files: the CI steps are ground truth for what "passing" means
43
+ - `Podfile` / `Package.swift`: iOS dependency management
44
+ - `build.gradle` / `build.gradle.kts` / `settings.gradle` / `settings.gradle.kts`: Android build config and flavor definitions (Groovy or Kotlin DSL)
45
+ - `pubspec.yaml` / `analysis_options.yaml`: Flutter project config and lint rules
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "packageName": "com.argent.androiddevtools",
3
3
  "instrumentationRunner": "com.argent.androiddevtools/.SnapshotInstrumentation",
4
- "versionName": "0.2.0",
5
- "versionCode": 2,
4
+ "versionName": "0.3.0",
5
+ "versionCode": 3,
6
6
  "installFlags": ["-r", "-t"]
7
7
  }
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
package/dist/cli-cmds.mjs CHANGED
@@ -9760,6 +9760,9 @@ var FAILURE_CODES = {
9760
9760
  KEYBOARD_CHARACTER_UNSUPPORTED: "KEYBOARD_CHARACTER_UNSUPPORTED",
9761
9761
  KEYBOARD_TEXT_AND_KEY_COMBINED: "KEYBOARD_TEXT_AND_KEY_COMBINED",
9762
9762
  KEYBOARD_INPUT_NOT_FOCUSED: "KEYBOARD_INPUT_NOT_FOCUSED",
9763
+ FILL_NO_FOCUSED_FIELD: "FILL_NO_FOCUSED_FIELD",
9764
+ FILL_NOT_VERIFIED: "FILL_NOT_VERIFIED",
9765
+ FILL_UNSUPPORTED_FIELD: "FILL_UNSUPPORTED_FIELD",
9763
9766
  SECRET_PLACEHOLDER_UNKNOWN: "SECRET_PLACEHOLDER_UNKNOWN",
9764
9767
  SCREENSHOT_DIFF_INPUT_INVALID: "SCREENSHOT_DIFF_INPUT_INVALID",
9765
9768
  BOOT_DEVICE_TARGET_SELECTION_INVALID: "BOOT_DEVICE_TARGET_SELECTION_INVALID",
@@ -30092,7 +30095,7 @@ var _CI_VENDOR_COUNT_FOR_TEST = vendors_default.length;
30092
30095
  var SESSION_ID2 = randomUUID5();
30093
30096
  function readCliVersion() {
30094
30097
  if (true) {
30095
- return "0.28.1-next.9";
30098
+ return "0.29.1-next.0";
30096
30099
  }
30097
30100
  return "0.0.0";
30098
30101
  }
package/dist/client.d.ts CHANGED
@@ -81,6 +81,24 @@ export interface UiTree {
81
81
  */
82
82
  unsupportedFields: string[];
83
83
  }
84
+ /** The `foreground-app` result: which app is in front, as `UiTree.foregroundApp` reports it. */
85
+ export interface ForegroundApp {
86
+ /** iOS bundle id or Android package of the app in front; under a system alert, the app it covers. Unset when unknown. */
87
+ bundleId?: string;
88
+ /** iOS: the app's display name. */
89
+ name?: string;
90
+ /** A system alert or dialog covers the app. Unset when unknown. */
91
+ alertVisible?: boolean;
92
+ }
93
+ /**
94
+ * The `fill` result. It never carries the field's text or the text that was
95
+ * asked for: either may be a credential. A field that does not read back the
96
+ * text fails with FILL_NOT_VERIFIED instead.
97
+ */
98
+ export interface FillResult {
99
+ /** The field was read back and holds the text. False on a physical iPhone, where nothing can read it back. */
100
+ verified: boolean;
101
+ }
84
102
  export interface CallToolOptions {
85
103
  /** Receive progress events while a long-running tool works. */
86
104
  onProgress?: (event: unknown) => void;
package/dist/client.js CHANGED
@@ -8963,6 +8963,9 @@ var FAILURE_CODES = {
8963
8963
  KEYBOARD_CHARACTER_UNSUPPORTED: "KEYBOARD_CHARACTER_UNSUPPORTED",
8964
8964
  KEYBOARD_TEXT_AND_KEY_COMBINED: "KEYBOARD_TEXT_AND_KEY_COMBINED",
8965
8965
  KEYBOARD_INPUT_NOT_FOCUSED: "KEYBOARD_INPUT_NOT_FOCUSED",
8966
+ FILL_NO_FOCUSED_FIELD: "FILL_NO_FOCUSED_FIELD",
8967
+ FILL_NOT_VERIFIED: "FILL_NOT_VERIFIED",
8968
+ FILL_UNSUPPORTED_FIELD: "FILL_UNSUPPORTED_FIELD",
8966
8969
  SECRET_PLACEHOLDER_UNKNOWN: "SECRET_PLACEHOLDER_UNKNOWN",
8967
8970
  SCREENSHOT_DIFF_INPUT_INVALID: "SCREENSHOT_DIFF_INPUT_INVALID",
8968
8971
  BOOT_DEVICE_TARGET_SELECTION_INVALID: "BOOT_DEVICE_TARGET_SELECTION_INVALID",
@@ -15893,6 +15893,9 @@ var FAILURE_CODES = {
15893
15893
  KEYBOARD_CHARACTER_UNSUPPORTED: "KEYBOARD_CHARACTER_UNSUPPORTED",
15894
15894
  KEYBOARD_TEXT_AND_KEY_COMBINED: "KEYBOARD_TEXT_AND_KEY_COMBINED",
15895
15895
  KEYBOARD_INPUT_NOT_FOCUSED: "KEYBOARD_INPUT_NOT_FOCUSED",
15896
+ FILL_NO_FOCUSED_FIELD: "FILL_NO_FOCUSED_FIELD",
15897
+ FILL_NOT_VERIFIED: "FILL_NOT_VERIFIED",
15898
+ FILL_UNSUPPORTED_FIELD: "FILL_UNSUPPORTED_FIELD",
15896
15899
  SECRET_PLACEHOLDER_UNKNOWN: "SECRET_PLACEHOLDER_UNKNOWN",
15897
15900
  SCREENSHOT_DIFF_INPUT_INVALID: "SCREENSHOT_DIFF_INPUT_INVALID",
15898
15901
  BOOT_DEVICE_TARGET_SELECTION_INVALID: "BOOT_DEVICE_TARGET_SELECTION_INVALID",
@@ -16736,7 +16739,7 @@ var _CI_VENDOR_COUNT_FOR_TEST = vendors_default.length;
16736
16739
  var SESSION_ID = randomUUID4();
16737
16740
  function readCliVersion() {
16738
16741
  if (true) {
16739
- return "0.28.1-next.9";
16742
+ return "0.29.1-next.0";
16740
16743
  }
16741
16744
  return "0.0.0";
16742
16745
  }
@@ -20037,10 +20040,14 @@ var PROJECT_ROOT_MARKERS = [
20037
20040
  "opencode.jsonc",
20038
20041
  "skills-lock.json"
20039
20042
  ];
20040
- function resolveProjectRoot2(startDir) {
20043
+ function resolveProjectRoot2(startDir, homeDir = os2.homedir()) {
20041
20044
  const initialDir = path16.resolve(startDir);
20045
+ const home = path16.resolve(homeDir);
20042
20046
  let currentDir = initialDir;
20043
20047
  while (true) {
20048
+ if (currentDir === home && currentDir !== initialDir) {
20049
+ return initialDir;
20050
+ }
20044
20051
  if (PROJECT_ROOT_MARKERS.some((marker) => fs15.existsSync(path16.join(currentDir, marker)))) {
20045
20052
  return currentDir;
20046
20053
  }
@@ -23998,6 +23998,9 @@ var FAILURE_CODES = {
23998
23998
  KEYBOARD_CHARACTER_UNSUPPORTED: "KEYBOARD_CHARACTER_UNSUPPORTED",
23999
23999
  KEYBOARD_TEXT_AND_KEY_COMBINED: "KEYBOARD_TEXT_AND_KEY_COMBINED",
24000
24000
  KEYBOARD_INPUT_NOT_FOCUSED: "KEYBOARD_INPUT_NOT_FOCUSED",
24001
+ FILL_NO_FOCUSED_FIELD: "FILL_NO_FOCUSED_FIELD",
24002
+ FILL_NOT_VERIFIED: "FILL_NOT_VERIFIED",
24003
+ FILL_UNSUPPORTED_FIELD: "FILL_UNSUPPORTED_FIELD",
24001
24004
  SECRET_PLACEHOLDER_UNKNOWN: "SECRET_PLACEHOLDER_UNKNOWN",
24002
24005
  SCREENSHOT_DIFF_INPUT_INVALID: "SCREENSHOT_DIFF_INPUT_INVALID",
24003
24006
  BOOT_DEVICE_TARGET_SELECTION_INVALID: "BOOT_DEVICE_TARGET_SELECTION_INVALID",
@@ -27070,6 +27073,15 @@ function getAutoScreenshotDelayMs(toolName) {
27070
27073
  }
27071
27074
 
27072
27075
  // ../argent-mcp/src/tool-mapping.ts
27076
+ function withoutRetiredParams(schema) {
27077
+ const properties = schema.properties;
27078
+ if (!properties) return schema;
27079
+ const live = Object.entries(properties).filter(
27080
+ ([, prop]) => !prop.not || Object.keys(prop.not).length > 0
27081
+ );
27082
+ if (live.length === Object.keys(properties).length) return schema;
27083
+ return { ...schema, properties: Object.fromEntries(live) };
27084
+ }
27073
27085
  function toMcpTool(t) {
27074
27086
  const meta2 = {};
27075
27087
  if (t.alwaysLoad) meta2["anthropic/alwaysLoad"] = true;
@@ -27077,7 +27089,7 @@ function toMcpTool(t) {
27077
27089
  return {
27078
27090
  name: t.name,
27079
27091
  description: t.description,
27080
- inputSchema: { type: "object", ...t.inputSchema },
27092
+ inputSchema: { type: "object", ...withoutRetiredParams(t.inputSchema) },
27081
27093
  ...Object.keys(meta2).length > 0 ? { _meta: meta2 } : {}
27082
27094
  };
27083
27095
  }