@swmansion/argent 0.28.1-next.8 → 0.29.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.
- package/agents/argent-environment-inspector.md +7 -7
- package/agents/references/quality-control-checklist.md +14 -14
- package/assets/manifest.json +2 -2
- package/bin/argent-android-devtools-0.3.0.apk +0 -0
- package/bin/darwin/ax-service +0 -0
- package/bin/darwin/simulator-server +0 -0
- package/bin/darwin/tvos-ax-service +0 -0
- package/bin/darwin/tvos-hid-daemon +0 -0
- package/bin/linux/simulator-server +0 -0
- package/bin/linux-arm64/simulator-server +0 -0
- package/bin/tcp/ax-service +0 -0
- package/bin/win32/simulator-server.exe +0 -0
- package/dist/cli-cmds.mjs +4 -1
- package/dist/client.d.ts +18 -0
- package/dist/client.js +3 -0
- package/dist/installer.mjs +9 -2
- package/dist/mcp-server.mjs +13 -1
- package/dist/tool-args.generated.d.ts +87 -77
- package/dist/tool-server.cjs +948 -370
- package/dylibs/libArgentInjectionBootstrap.dylib +0 -0
- package/dylibs/libKeyboardPatch.dylib +0 -0
- package/dylibs/libNativeDevtoolsIos.dylib +0 -0
- package/dylibs/tcp/libArgentInjectionBootstrap.dylib +0 -0
- package/dylibs/tcp/libKeyboardPatch.dylib +0 -0
- package/dylibs/tcp/libNativeDevtoolsIos.dylib +0 -0
- package/dylibs/tvos/libArgentInjectionBootstrap.dylib +0 -0
- package/dylibs/tvos/libKeyboardPatch.dylib +0 -0
- package/dylibs/tvos/libNativeDevtoolsIos.dylib +0 -0
- package/package.json +1 -1
- package/rules/argent.md +16 -16
- package/skills/argent-android-emulator-setup/SKILL.md +9 -9
- package/skills/argent-create-flow/references/flow-yaml.md +11 -11
- package/skills/argent-create-flow/references/live-authoring.md +11 -11
- package/skills/argent-create-flow/references/reliability-and-recovery.md +13 -13
- package/skills/argent-device-interact/SKILL.md +47 -47
- package/skills/argent-device-interact/references/chromium.md +1 -1
- package/skills/argent-device-interact/references/gesture-examples.md +7 -7
- package/skills/argent-device-interact/references/secrets.md +6 -6
- package/skills/argent-lens/SKILL.md +21 -21
- package/skills/argent-metro-debugger/SKILL.md +24 -24
- package/skills/argent-metro-debugger/references/failure-scenarios.md +11 -11
- package/skills/argent-metro-debugger/references/source-maps.md +4 -4
- package/skills/argent-native-profiler/SKILL.md +13 -13
- package/skills/argent-qa-flows/SKILL.md +3 -3
- package/skills/argent-react-native-app-workflow/SKILL.md +18 -18
- package/skills/argent-react-native-optimization/SKILL.md +12 -12
- package/skills/argent-react-native-optimization/references/fix-reference.md +10 -10
- package/skills/argent-react-native-optimization/references/lint-rules.md +1 -1
- package/skills/argent-react-native-profiler/SKILL.md +25 -25
- package/skills/argent-react-native-profiler/references/diagnostic-tools.md +19 -19
- package/skills/argent-screen-recording/SKILL.md +14 -14
- package/skills/argent-test-ui-flow/SKILL.md +9 -9
- package/skills/argent-tv-interact/SKILL.md +19 -19
- 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
|
|
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
|
|
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
|
|
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
|
|
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 }]
|
|
89
|
-
| `build_commands` | array | `[{ command, platform, context }]
|
|
90
|
-
| `argent_workflow` | object | `{ start_dev_server, build_ios, build_android, notes }
|
|
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
|
|
21
|
-
- `eslint --fix` / `swiftlint` / `ktlint
|
|
22
|
-
- `jest --testPathPattern <file
|
|
23
|
-
- `dart analyze
|
|
24
|
-
- `flutter test <file
|
|
25
|
-
- `yarn test --watch` / `flutter test --watch
|
|
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
|
|
38
|
-
- `Makefile` / `Fastfile` targets
|
|
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
|
|
41
|
-
- `lint-staged` config
|
|
42
|
-
- CI config files
|
|
43
|
-
- `Podfile` / `Package.swift
|
|
44
|
-
- `build.gradle` / `build.gradle.kts` / `settings.gradle` / `settings.gradle.kts
|
|
45
|
-
- `pubspec.yaml` / `analysis_options.yaml
|
|
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
|
package/assets/manifest.json
CHANGED
|
Binary file
|
package/bin/darwin/ax-service
CHANGED
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
package/bin/tcp/ax-service
CHANGED
|
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.
|
|
30098
|
+
return "0.29.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",
|
package/dist/installer.mjs
CHANGED
|
@@ -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.
|
|
16742
|
+
return "0.29.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
|
}
|
package/dist/mcp-server.mjs
CHANGED
|
@@ -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
|
}
|