swipium 1.2.0 → 1.3.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 (44) hide show
  1. package/README.md +7 -8
  2. package/dist/appMap/featureIndex.js +183 -0
  3. package/dist/appMap/featureIndex.js.map +1 -0
  4. package/dist/featureTesting/executionBootstrap.js +14 -10
  5. package/dist/featureTesting/executionBootstrap.js.map +1 -1
  6. package/dist/featureTesting/featureMap.js +53 -0
  7. package/dist/featureTesting/featureMap.js.map +1 -0
  8. package/dist/featureTesting/featureScope.js +354 -0
  9. package/dist/featureTesting/featureScope.js.map +1 -0
  10. package/dist/featureTesting/mapFeatureScope.js +143 -0
  11. package/dist/featureTesting/mapFeatureScope.js.map +1 -0
  12. package/dist/featureTesting/objectiveModel.js +129 -0
  13. package/dist/featureTesting/objectiveModel.js.map +1 -0
  14. package/dist/featureTesting/resultMerge.js +112 -0
  15. package/dist/featureTesting/resultMerge.js.map +1 -0
  16. package/dist/featureTesting/sources.js +96 -0
  17. package/dist/featureTesting/sources.js.map +1 -0
  18. package/dist/featureTesting/suiteBridge.js +51 -0
  19. package/dist/featureTesting/suiteBridge.js.map +1 -0
  20. package/dist/featureTesting/synonyms.js +73 -0
  21. package/dist/featureTesting/synonyms.js.map +1 -0
  22. package/dist/featureTesting/testCaseFactory.js +107 -0
  23. package/dist/featureTesting/testCaseFactory.js.map +1 -0
  24. package/dist/featureTesting/testPlan.js +50 -0
  25. package/dist/featureTesting/testPlan.js.map +1 -0
  26. package/dist/server.js +11 -0
  27. package/dist/server.js.map +1 -1
  28. package/dist/tools/build.js +172 -0
  29. package/dist/tools/build.js.map +1 -0
  30. package/dist/tools/bundletool.js +145 -0
  31. package/dist/tools/bundletool.js.map +1 -0
  32. package/dist/tools/capabilities.js +20 -0
  33. package/dist/tools/capabilities.js.map +1 -1
  34. package/dist/tools/featureTesting.js +344 -0
  35. package/dist/tools/featureTesting.js.map +1 -0
  36. package/dist/tools/resolveArtifact.js +80 -0
  37. package/dist/tools/resolveArtifact.js.map +1 -0
  38. package/dist/tools/resolveTarget.js +67 -0
  39. package/dist/tools/resolveTarget.js.map +1 -0
  40. package/dist/version.js +12 -2
  41. package/dist/version.js.map +1 -1
  42. package/docs/mcp-server.md +1 -1
  43. package/docs/tools.md +41 -3
  44. package/package.json +1 -1
@@ -100,7 +100,7 @@ qa_capabilities
100
100
 
101
101
  Use `qa_doctor` with `platform:"android"`, `platform:"ios"`, or `platform:"both"` when checking platform-specific readiness.
102
102
 
103
- Expected tool count: 83.
103
+ Expected tool count: 91.
104
104
 
105
105
  If the client lists fewer tools, restart the MCP client. MCP clients often keep an old server process alive after package upgrades.
106
106
 
package/docs/tools.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # Tool Reference
2
2
 
3
- Swipium exposes 83 public MCP tools. The intended default entry point is `qa_test_this`.
3
+ Swipium exposes 91 public MCP tools. The intended default entry point is `qa_test_this`.
4
4
 
5
5
  ## Start
6
6
 
@@ -33,6 +33,18 @@ Use these tools to verify the local environment, create sessions, and prepare si
33
33
  | `qa_ios` | Runs iOS Simulator lifecycle operations such as boot, install, launch, screenshot, logs, privacy reset, and erase. | Direct iOS simulator control is needed. |
34
34
  | `qa_wda` | Checks, builds, or starts WebDriverAgent for structured iOS simulator automation. | iOS needs structured UI tree access instead of visual-only checks. |
35
35
 
36
+ ## Build
37
+
38
+ Use these tools to resolve a device and an installable artifact, or build one from source locally. `qa_build` is consent-gated; the others are side-effect free.
39
+
40
+ | Tool | What it does | Use when |
41
+ | --- | --- | --- |
42
+ | `qa_resolve_target` | Picks the best device or simulator (prefers online over needing a boot; honors a requested platform or device). | The agent needs to choose where to run. |
43
+ | `qa_resolve_artifact` | Finds the best installable `.apk`/`.aab`/`.ipa`/`.app` and explains where it looked. | An artifact path is unknown or ambiguous. |
44
+ | `qa_build_plan` | Proposes the exact build commands per framework and platform without running them. | The agent needs to know how the app would be built. |
45
+ | `qa_build` | Builds from source as a consent-gated job, captures a build log, and re-resolves the artifact. | No reusable artifact exists and the project must be compiled. |
46
+ | `qa_bundletool` | Converts an `.aab` to an installable APK: a universal `.apk` or a device-specific APK set. | Only an Android App Bundle is available. |
47
+
36
48
  ## Device
37
49
 
38
50
  Use these tools to inspect and control the device and app environment without raw `adb` or `simctl`. Mutating actions are consent-gated and recorded as environment changes; network changes are auto-restored at report end.
@@ -104,6 +116,16 @@ Use these tools to build and read Swipium's durable app knowledge map.
104
116
  | `qa_app_map_feature_scope` | Resolves a feature query or feature id into focused testing scope and recommended plan. | The agent needs to test a specific feature. |
105
117
  | `qa_app_map_validate` | Validates schema, provenance, links, duplicate ids, impossible states, and stale fingerprints. | The map must be trusted before feature-focused testing. |
106
118
 
119
+ ## Feature Testing
120
+
121
+ Use these tools to test a specific feature by name, backed by the app knowledge map.
122
+
123
+ | Tool | What it does | Use when |
124
+ | --- | --- | --- |
125
+ | `qa_feature_scope` | Maps a natural-language feature ("weather analysis") to code, screens, routes, runtime, and tests, plus an objective and strategy. Read-only. | The user names a feature and the agent needs its scope. |
126
+ | `qa_feature_test_plan` | Produces a feature test plan: scope, objective, generated cases, fixtures, automation readiness, and an execution plan. Read-only. | A feature needs a concrete test plan before running. |
127
+ | `qa_test_feature` | Runs a focused feature test: scope, targeted exploration toward the feature, recorded cases, then updates the feature map and report. | The user asks to test a specific feature. |
128
+
107
129
  ## Flows and Suites
108
130
 
109
131
  Use these tools to create, validate, run, and compile reusable test assets.
@@ -176,9 +198,9 @@ Use these tools to generate and validate automation code from Swipium evidence.
176
198
  | `qa_automation_generate` | Generates an Appium POM suite from recorded actions and validates it. | The run should produce automation code. |
177
199
  | `qa_automation_validate` | Validates generated automation code without a device. | Generated files need checks for secrets, durability, capabilities, syntax, and empty files. |
178
200
 
179
- ## Detailed Reference: Device, Visual, State, and History Tools
201
+ ## Detailed Reference: Device, Visual, State, History, Build, and Feature Tools
180
202
 
181
- Technical detail for the tools added alongside the device-parity, visual-intelligence, seeded-state, and reporting phases. All take a `sessionId` from `qa_start_session` (except `qa_report_compare`, which is filesystem-only). Mutating actions accept `consentId` + `approve` and are recorded in the report's mutation ledger.
203
+ Technical detail for the tools added alongside the device-parity, visual-intelligence, seeded-state, reporting, build, and feature-testing phases. Most take a `sessionId` from `qa_start_session`; the build, artifact, and read-only feature tools also accept a `projectRoot` so they work before a session exists. Mutating actions accept `consentId` + `approve` and are recorded in the report's mutation ledger.
182
204
 
183
205
  ### Device and app environment
184
206
 
@@ -209,6 +231,20 @@ Technical detail for the tools added alongside the device-parity, visual-intelli
209
231
  - **`qa_report_compare`** — diff two reports. *Inputs:* `current`, `baseline` (paths to `report.json`), `trendRoot?`. *Outputs:* new/fixed failures, changed screenshots, outcome changes, runtime regression, optional flake status, and a `summary`. Filesystem-only — no session or device.
210
232
  - **`qa_run_history`** — local trend summary. *Inputs:* `sessionId?` or `projectRoot?`. *Outputs:* report count, per-flow `passRate`, median/average runtime, top failures, flaky flows, confidence calibration, and slowest steps. Reads `.swipium/runs/**/report.json` (and legacy `.swipium/ci/**`).
211
233
 
234
+ ### Build and artifact resolution
235
+
236
+ - **`qa_resolve_target`** — choose the best device or simulator, deterministically and side-effect free. *Inputs:* `sessionId?`, `projectRoot?`, `platform?` (`android`/`ios`), `device?` (name/serial/udid), `preferRealDevice?`. *Outputs:* `selection` (kind + id), a human `reason`, `alternatives[]`, `preconditions` (e.g. WDA/signing), and `willBoot`. Does not boot anything — `qa_prepare_target`/`qa_ios` do that.
237
+ - **`qa_resolve_artifact`** — find the best installable artifact and explain the search. *Inputs:* `sessionId?`, `projectRoot?`, `platform?` (`android`/`ios`/`any`), `buildType?` (`debug`/`release`/`any`), `path?` (explicit artifact), `allowOutsideRoot?`, `requireInstallableOn?` (`android-emulator`/`android-real`/`ios-simulator`/`ios-real`). *Outputs:* the resolved `.apk`/`.aab`/`.ipa`/`.app` and its type; on failure, the exact globs searched plus a `qa_build_plan` → `qa_build` next step. Read-only.
238
+ - **`qa_build_plan`** — propose exact build commands without running them. *Inputs:* `sessionId?`, `projectRoot?`, `platform` (`android`/`ios`), `variant?` (`debug`/`release`). *Outputs:* detected `framework`, the exact build commands, the expected artifact path, and a cost estimate. Returns a typed error when no supported framework (Expo, bare React Native, native Android/iOS, Flutter) is detected. Side-effect free.
239
+ - **`qa_build`** — build from source as a consent-gated job. *Inputs:* `sessionId` (required), `platform` (`android`/`ios`), `variant?`, `timeoutMs?`, `consentId?`/`approve?`. *Outputs:* a `jobId` to poll with `qa_job_status`; on completion a build-log artifact and the re-resolved artifact path. Consent-gated (it compiles the app).
240
+ - **`qa_bundletool`** — convert an Android App Bundle to an installable APK. *Inputs:* `sessionId` (required), `aab?` (default: the best `.aab` under the project), `force?`, `connectedDevice?` (device-specific APK set vs a universal APK), `install?` (also run `install-apks`), `deviceId?`, `consentId?`/`approve?`. *Outputs:* the generated APK or APK-set path. `install` is consent-gated because it installs app code on a device/emulator.
241
+
242
+ ### Feature-focused testing
243
+
244
+ - **`qa_feature_scope`** — map a natural-language feature to the app, read-only. *Inputs:* `feature` (required, e.g. "weather analysis"), `sessionId?` (adds runtime screen-graph evidence), `projectRoot?` (static code scope), `platform?`, `includeCode?` (default true), `limit?`. *Outputs:* ranked `candidates` each tagged by `source` (`code`/`screen`/`route`/`runtime`/`test`) with confidence, plus a test `objective` and `strategy`. No consent. Returns `found:false` with guidance when nothing matches.
245
+ - **`qa_feature_test_plan`** — generate a full feature test plan, read-only. *Inputs:* `feature` (required), `sessionId?`/`projectRoot?`, `platform?`, `creativity?` (`conservative`=happy path; `standard` (default)=+validation/empty/error; `creative`=+boundary/offline/interruption; `adversarial`=+destructive), `allowAdversarial?`, `includeCode?`, `limit?`. *Outputs:* a `plan` with scope, objective, generated `cases`, `fixtures`, automation readiness, and an execution plan. Adversarial cases are consent-gated at execution time.
246
+ - **`qa_test_feature`** — run a focused test toward a named feature. *Inputs:* `feature` (required), `sessionId` (required), `mode?` (`plan` (default) / `execute` (focused run as a job) / `interactive` (run until the first question)), `platform?`, `device?`, `creativity?`, `allowAdversarial?`, `maxScreens?`, `maxActions?`, `timeoutMs?`, `generateCases?`, `consentId?`/`approve?`. *Outputs:* in `plan` mode the scope + cases; in `execute` mode a `jobId` whose run performs targeted exploration toward the feature, records cases, updates the feature map, and emits a report. `execute`/`interactive` are consent-gated.
247
+
212
248
  ## Recommended Entry Points
213
249
 
214
250
  | User intent | First tool |
@@ -222,6 +258,8 @@ Technical detail for the tools added alongside the device-parity, visual-intelli
222
258
  | "Explore the app" | `qa_explore` |
223
259
  | "Generate report" | `qa_report` |
224
260
  | "Read app memory" | `qa_app_map_read` |
261
+ | "Test the X feature" | `qa_test_feature` |
262
+ | "Find/build an artifact" | `qa_resolve_artifact` / `qa_build` |
225
263
  | "Create a flow" | `qa_flow_generate` |
226
264
  | "Generate automation" | `qa_automation_plan` |
227
265
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "swipium",
3
- "version": "1.2.0",
3
+ "version": "1.3.0",
4
4
  "private": false,
5
5
  "description": "Swipium MCP server for simulator-based mobile QA workflows, evidence capture, app maps, and generated test suites.",
6
6
  "keywords": [