P2 — implement the closed Android device-capability registry and typed action adapters #174

Closed
opened 2026-08-22 21:55:42 +00:00 by lost-rob0t · 0 comments
lost-rob0t commented 2026-08-22 21:55:42 +00:00 (Migrated from github.com)

Parent epic: #152
Depends on: #173, #159

Goal

Implement Android's local allow-listed capability layer. The server requests semantic typed actions; Android maps them to explicit platform APIs under local permission/policy.

Initial candidates

Open URI, launch supported installed app, notification, clipboard operation under modern Android restrictions, share intent, safe local timer/alarm adapter where research approves, media action where allowed. Keep mic/speaker in the voice issue. Screen/camera require separate explicit privacy permission design and need not ship in v1.

Invariants

  • registry contains stable capability ids and closed typed argument schemas;
  • no action adapter accepts arbitrary shell/class/method/Intent object serialization;
  • server capability advertisement cannot grant Android OS permission;
  • permission/availability changes update advertisement;
  • target request bound to authenticated device/session;
  • user-visible sensitive action confirmation where Android/policy requires it;
  • no clipboard/URI/private payload in routine logs;
  • safe URI parsing and bounded inputs.

Tests

Permission granted/denied/revoked, unknown capability, malformed args, intent/URI injection attempts, wrong target device, replay/cancel/result races, app missing, clipboard restrictions, notification disabled, lifecycle recreation, capability snapshot update, fake admin capability rejected.

Acceptance

The Android client can advertise and execute a small reviewed set of device actions with explicit OS permission/result semantics, while arbitrary remote execution is impossible by construction.

Parent epic: #152 Depends on: #173, #159 ## Goal Implement Android's local allow-listed capability layer. The server requests semantic typed actions; Android maps them to explicit platform APIs under local permission/policy. ## Initial candidates Open URI, launch supported installed app, notification, clipboard operation under modern Android restrictions, share intent, safe local timer/alarm adapter where research approves, media action where allowed. Keep mic/speaker in the voice issue. Screen/camera require separate explicit privacy permission design and need not ship in v1. ## Invariants - registry contains stable capability ids and closed typed argument schemas; - no action adapter accepts arbitrary shell/class/method/Intent object serialization; - server capability advertisement cannot grant Android OS permission; - permission/availability changes update advertisement; - target request bound to authenticated device/session; - user-visible sensitive action confirmation where Android/policy requires it; - no clipboard/URI/private payload in routine logs; - safe URI parsing and bounded inputs. ## Tests Permission granted/denied/revoked, unknown capability, malformed args, intent/URI injection attempts, wrong target device, replay/cancel/result races, app missing, clipboard restrictions, notification disabled, lifecycle recreation, capability snapshot update, fake admin capability rejected. ## Acceptance The Android client can advertise and execute a small reviewed set of device actions with explicit OS permission/result semantics, while arbitrary remote execution is impossible by construction.
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
nsaspy/zara#174
No description provided.