feat: add tactility controls and notes CRUD
This commit is contained in:
@@ -4,16 +4,15 @@ On-demand CLI façade for Reyna family MCP services and LAN devices. The goal is
|
||||
|
||||
## Phase 2 scope
|
||||
|
||||
- **Devices parent command**: All local devices are now under `reyna-cli devices`.
|
||||
- **Devices parent command**: Non-Tactility local devices remain under `reyna-cli devices`; ESP32 boards use the dedicated `reyna-cli tactility` command group.
|
||||
- `reyna-cli devices screen ...` (ESP32 screen)
|
||||
- `reyna-cli devices laptop ...` (personal laptop MCP screen)
|
||||
- `reyna-cli devices computer ...` (this computer's desktop companion client)
|
||||
- `reyna-cli devices iphone ...` (iPhone app)
|
||||
- `reyna-cli devices arm ...` (Robot arm)
|
||||
- **Robot Arm**: Dynamic tool resolution for `state`, `home`, `wave`, `battery`.
|
||||
- **Tactility boards**: mDNS-first discovery with reserved-IP fallback, plus direct web API access for sysinfo, apps, app installation/run, and filesystem operations.
|
||||
- **Immich**: On-demand MCP bridge at `http://127.0.0.1:8626/mcp`.
|
||||
- **MongoDB**: On-demand MCP bridge at `http://127.0.0.1:8630/mcp`.
|
||||
- **Top-level aliases**: `reyna-cli screen`, `reyna-cli laptop`, `reyna-cli iphone`, `reyna-cli arm` still work for compatibility.
|
||||
- **Top-level aliases**: `reyna-cli screen`, `reyna-cli laptop`, and `reyna-cli iphone` still work for compatibility.
|
||||
|
||||
## Install / run
|
||||
|
||||
@@ -22,6 +21,23 @@ uv sync
|
||||
uv run reyna-cli doctor
|
||||
```
|
||||
|
||||
## Signed Python launcher (macOS permissions)
|
||||
|
||||
The manually built, signed **Reyna CLI.app** owns the macOS privacy identity. Use the `signed` wrapper to launch the current Python CLI through that app:
|
||||
|
||||
```bash
|
||||
# Optional: use a different active checkout or interpreter without rebuilding the app.
|
||||
cat > ~/.reyna-cli.env <<'EOF'
|
||||
REYNA_CLI_DIR=/Users/adolforeyna/Projects/platform/reyna-cli
|
||||
REYNA_CLI_PYTHON=/Users/adolforeyna/Projects/platform/reyna-cli/.venv/bin/python
|
||||
EOF
|
||||
|
||||
uv run reyna-cli signed doctor
|
||||
uv run reyna-cli signed local-services speech transcribe-file ./sample.wav --json
|
||||
```
|
||||
|
||||
The signed launcher reads `~/.reyna-cli.env`, then `~/.config/reyna-cli/env`; `REYNA_CLI_DIR` and `REYNA_CLI_PYTHON` environment variables override those values. Python-only edits take effect on the next `signed` run—**do not rebuild or re-sign the app for those edits**. Changes to Swift sources, `Info.plist`, or app signing require a new manual signed Xcode build before they can be used by `signed`.
|
||||
|
||||
## Device discovery
|
||||
|
||||
```bash
|
||||
@@ -29,6 +45,25 @@ uv run reyna-cli devices list --json
|
||||
uv run reyna-cli devices ping esp32_screen --json
|
||||
uv run reyna-cli devices tools esp32_screen --json
|
||||
uv run reyna-cli devices describe esp32_screen --for-hermes
|
||||
|
||||
# Tactility fleet discovery; offline boards remain visible in the JSON report
|
||||
uv run reyna-cli tactility discover --json
|
||||
uv run reyna-cli tactility sysinfo kidsos1 --json
|
||||
uv run reyna-cli tactility apps kidsos1 --json
|
||||
uv run reyna-cli tactility tools Grace --json
|
||||
uv run reyna-cli tactility describe Grace --json
|
||||
uv run reyna-cli tactility call Grace get_screenshot --args '{}' --json
|
||||
uv run reyna-cli tactility call Grace draw_color_bmp --args '{"bmp_base64":"...","x":0,"y":0}' --json
|
||||
uv run reyna-cli tactility call Grace play_tone --args '{"frequency":440,"duration_ms":500,"volume":40}' --json
|
||||
uv run reyna-cli tactility call Grace get_sensors --args '{}' --json
|
||||
uv run reyna-cli tactility install kidsos1 ./build/my.app --json
|
||||
uv run reyna-cli tactility run kidsos1 one.tactility.myapp --json
|
||||
uv run reyna-cli tactility report kidsos1 --json
|
||||
uv run reyna-cli tactility screen clear kidsos1 --width 320 --height 240 --json
|
||||
uv run reyna-cli tactility screen text kidsos1 "Grace\\nReady" --json
|
||||
uv run reyna-cli tactility screen text kidsos1 "Layer intentionally" --no-clear-first --json
|
||||
uv run reyna-cli tactility fs list kidsos1 --path /sdcard --json
|
||||
uv run reyna-cli tactility fs upload kidsos1 ./manifest.json /sdcard/manifest.json --json
|
||||
```
|
||||
|
||||
## Generic MCP calls
|
||||
@@ -37,15 +72,6 @@ uv run reyna-cli devices describe esp32_screen --for-hermes
|
||||
uv run reyna-cli devices call esp32_screen draw_text --args '{"text":"Hello","x":10,"y":20,"size":2}' --json
|
||||
```
|
||||
|
||||
## Robot Arm
|
||||
|
||||
```bash
|
||||
uv run reyna-cli devices arm state
|
||||
uv run reyna-cli devices arm home
|
||||
uv run reyna-cli devices arm wave
|
||||
uv run reyna-cli devices arm battery --json
|
||||
```
|
||||
|
||||
## ESP32 screen, laptop screen, this computer & iPhone
|
||||
|
||||
```bash
|
||||
|
||||
Reference in New Issue
Block a user