Files
signal_bridge_remote/phone/devices.json
Aletheia 07e5f9c38c refactor: neutral engineering terminology in tool schemas and device profiles
Ported from the Android edition (its 'reworded device and tool schemas
in neutral terminology' change):

- Tool descriptions and devices.json now describe hardware in neutral
  actuator/engineering terms. Content filters on some LLM platforms
  refused to call tools whose schemas contained explicit anatomical
  language; the reworded schemas work across providers.
- list_devices now surfaces capability descriptions next to each output
  channel (e.g. 'vibrate (two independent eccentric-mass actuators…)')
  so the model learns what each channel does from the profile itself.
- All output/pattern tools now declare required=["device"]; pattern
  schema defaults adjusted to match the Android edition (intensity 0.5,
  duration 60).
- Dual-motor device profiles (Edge, Dolce) document feature_index usage.
- Fixed a stray ')' in nora's rotate capability (typo in the Android
  copy of devices.json).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-07 20:11:49 +02:00

116 lines
3.8 KiB
JSON
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
[
{
"short_name": "ferri",
"match_strings": ["Ferri"],
"capabilities": {
"vibrate": "compact eccentric-mass actuator, high response at low duty cycle"
},
"intensity_floor": 0.0,
"notes": "Small form factor. High effective output at low values; recommend starting below 0.3."
},
{
"short_name": "lush",
"match_strings": ["Lush"],
"capabilities": {
"vibrate": "single eccentric-mass actuator, low-frequency dominant"
},
"intensity_floor": 0.0,
"notes": "Compact ovoid form factor. High output efficiency at low command levels."
},
{
"short_name": "gravity",
"match_strings": ["Gravity"],
"capabilities": {
"vibrate": "eccentric-mass actuator along main axis",
"oscillate": "linear reciprocating actuator; stroke rate scales with intensity"
},
"intensity_floor": 0.0,
"notes": "Dual-mode device. Oscillate requires intensity >= 0.05 to engage; low values map to slow cycle rate."
},
{
"short_name": "enigma",
"match_strings": ["Enigma"],
"capabilities": {
"vibrate": "high-amplitude pulsed actuator (impact-style, not continuous waveform)",
"rotate": "sonic-frequency acoustic actuator (note: maps to acoustic output, NOT mechanical rotation)"
},
"intensity_floor": 0.4,
"notes": "Two independent actuators. Threshold response: effective activation threshold ≈0.4. Rotate channel is acoustic, not rotational."
},
{
"short_name": "max",
"match_strings": ["Max"],
"capabilities": {
"vibrate": "eccentric-mass actuator",
"constrict": "pneumatic compression actuator; intensity maps to chamber pressure"
},
"intensity_floor": 0.0,
"notes": "Two independent actuators. Constrict is air-pump driven; intensity = compression force."
},
{
"short_name": "nora",
"match_strings": ["Nora"],
"capabilities": {
"vibrate": "eccentric-mass actuator",
"rotate": "rotational actuator"
},
"intensity_floor": 0.0,
"notes": "Two independent actuators. Rotate is mechanical, not acoustic."
},
{
"short_name": "edge",
"match_strings": ["Edge"],
"capabilities": {
"vibrate": "two independent eccentric-mass actuators; address individually via feature_index"
},
"intensity_floor": 0.0,
"notes": "Dual-actuator device. Use feature_index 0 or 1 to drive motors separately."
},
{
"short_name": "hush",
"match_strings": ["Hush"],
"capabilities": {
"vibrate": "single eccentric-mass actuator"
},
"intensity_floor": 0.0,
"notes": "Single-actuator device, no quirks."
},
{
"short_name": "domi",
"match_strings": ["Domi"],
"capabilities": {
"vibrate": "high-output eccentric-mass actuator, broad-spectrum"
},
"intensity_floor": 0.0,
"notes": "High maximum output relative to other devices in this set. Typical operating range: 0.05–0.30."
},
{
"short_name": "osci",
"match_strings": ["Osci"],
"capabilities": {
"oscillate": "linear reciprocating actuator (no vibrate channel)"
},
"intensity_floor": 0.0,
"notes": "Single-channel device. Responds only to oscillate, not vibrate."
},
{
"short_name": "dolce",
"match_strings": ["Dolce"],
"capabilities": {
"vibrate": "two independent eccentric-mass actuators; address individually via feature_index"
},
"intensity_floor": 0.0,
"notes": "Dual-actuator device. Use feature_index 0 or 1 to drive motors separately."
},
{
"short_name": "flexer",
"match_strings": ["Flexer"],
"capabilities": {
"vibrate": "eccentric-mass actuator",
"oscillate": "articulated curling actuator (pivots rather than reciprocates linearly)"
},
"intensity_floor": 0.0,
"notes": "Two independent actuators. Oscillate uses curling articulation, not linear stroke."
}
]