diff options
| author | Andrew Branson <andrew.branson@jolla.com> | 2026-06-02 00:17:51 +0200 |
|---|---|---|
| committer | Andrew Branson <andrew.branson@jolla.com> | 2026-06-02 00:17:51 +0200 |
| commit | 0cdf2d00cdc1a9af5f5b0b14241a2afe717661f6 (patch) | |
| tree | a41154a24cb2c226847aef053d0121e34ff99ad6 /README.md | |
| parent | 1f14c5483ee111105f94d66fb3b82208946d914a (diff) | |
Add Sailfish MCP build and device helpers
Add OBS root scoping, user-session/browser/touch workflow device tools, local SDK metadata refresh, and asynchronous RPM build job status support.
Diffstat (limited to 'README.md')
| -rw-r--r-- | README.md | 62 |
1 files changed, 49 insertions, 13 deletions
@@ -14,12 +14,16 @@ The server currently exposes tools for: - defaultuser session-bus calls - Lipstick screenshots - touchscreen discovery and tap/swipe injection +- combined screenshot, touchscreen discovery, and touch injection workflows - topmost window PID lookup - process map inspection - journal log reads - RPM copy/install on a device - system and user service management +- user-session command execution with the configured D-Bus environment +- Sailfish Browser launch/debug helpers - Docker/mb2 RPM builds through the local `build-sailfishos` helper +- installed SDK repository metadata refresh - Jolla OBS result and build-log lookup through `osc` - repository status and search under the configured git root - RPM spec metadata summaries @@ -27,8 +31,8 @@ The server currently exposes tools for: The committed defaults are deliberately generic. Device tools default to the placeholder SSH target `root@device`, the Sailfish user-session bus at -`/run/user/100000/dbus/user_bus_socket`, `~/git` as the local source root, and -the vendored build helper at +`/run/user/100000/dbus/user_bus_socket`, `~/git` as the local source root, +`~/OBS` as the OBS checkout root, and the vendored build helper at `src/sailfish_devel_mcp/vendor/build_sailfishos.py`. Put a config file at `~/.config/sailfish-devel-mcp/config.json` or pass `--config` to provide your real device and OBS settings. Device entries can also carry the preferred @@ -81,8 +85,9 @@ Example: } }, "paths": { - "git_root": "/home/you/git", - "ssh_config": "/home/you/.ssh/config", + "git_root": "~/git", + "obs_root": "~/OBS", + "ssh_config": "~/.ssh/config", "local_sdk": "/srv/mer/sdks/sfossdk/sdk-chroot", "osc_api_alias": "your-obs-alias" } @@ -91,18 +96,23 @@ Example: ## Tool Notes -The server keeps local paths scoped to the configured git root and `/tmp` for -tools that read or write files. Device access still uses SSH, so the usual SSH -prompts, permissions, and command failures are surfaced as tool results. +The server keeps local paths scoped to the configured git root, OBS checkout +root, and `/tmp` for tools that read or write files. Device access still uses +SSH, so the usual SSH prompts, permissions, and command failures are surfaced +as tool results. Mutating tools are annotated as non-read-only: - `sailfish_device_lipstick_screenshot` - `sailfish_device_touch` +- `sailfish_device_touch_workflow` - `sailfish_device_user_bus_call` +- `sailfish_device_user_session_command` - `sailfish_device_install_rpm` - `sailfish_device_restart_service` +- `sailfish_device_browser_launch` - `sailfish_build_rpm` +- `sailfish_sdk_refresh_metadata` `sailfish_device_lipstick_screenshot` defaults to `~/Pictures/Screenshots/lipstick-<timestamp>.png` under `/home/<username>`, @@ -119,16 +129,42 @@ input event device unless `input_device` is supplied. Coordinates are raw input/display coordinates, so pair this tool with a current screenshot when choosing points. +`sailfish_device_touch_workflow` wraps the common UI-debugging sequence: +capture a Lipstick screenshot, optionally list touch devices, inject a tap or +swipe, and optionally capture a second screenshot. It returns each step's +structured result separately. + +`sailfish_device_user_session_command` runs an argv command with +`XDG_RUNTIME_DIR` and `DBUS_SESSION_BUS_ADDRESS` set from the configured device. +Set `run_as_user` when the command should execute as the configured Sailfish +username through `runuser` or `su`. + +`sailfish_device_browser_launch` stops the browser booster service and stale +browser/firejail PIDs when requested, launches Sailfish Browser through +`invoker` with the display and user-session environment, then queries Lipstick +for the topmost PID and checks whether that process has `libxul.so` mapped. + `sailfish_build_rpm` can use a configured device's `architecture` and `release` as defaults when the call includes `device`. If `paths.local_sdk` is set, the -build helper first checks the installed SDK targets. `live` uses the unversioned -local target for the requested architecture, for example `aarch64`; a named -release such as `5.0.0` uses a matching versioned local target such as -`aarch64-5.0.0`. If the required target is not installed, the helper falls back -to the release-specific coderus Docker SDK image. The wrapper image defaults to -`sailfish-sdk-build-engine:$USER` and can be overridden with +build defaults to `live` and first checks the installed SDK targets. `live` uses +the unversioned local target for the requested architecture, for example +`aarch64`. A named production release such as `5.0.0` is used only when passed +explicitly through the tool arguments, environment, or device config; it uses a +matching versioned local target such as `aarch64-5.0.0` when available, and +otherwise falls back to the release-specific coderus Docker SDK image. The +wrapper image defaults to `sailfish-sdk-build-engine:$USER` and can be +overridden with `SAILFISH_SDK_BUILD_ENGINE_IMAGE`. +`sailfish_sdk_refresh_metadata` refreshes zypper metadata in the installed SDK +main target, for example `aarch64.default`, using the same privileged Docker +wrapper style as local SDK builds. Use it when local SDK builds fail because a +package listed in repository metadata cannot be downloaded. + +`sailfish_obs_buildlog` defaults to `osc api` with `nostream=1` so a build log +request does not become a long-running live stream. Set `nostream` to `false` +to use `osc remotebuildlog`. + Read-only tools include the journal, topmost PID, process maps, OBS lookup, repo search, spec summary, and QML checks. |
