Audio / Video Capture
Status: not yet shipped. The user-facing media controls described below (Capture photo / Record video / Record audio) are not implemented in the product UI yet — the capture adapter exists only as a library (src/lib/media-capture) with no renderer wiring. Until that lands, do not direct users to media controls that do not exist; treat this document as the design reference for the planned flow.
Use this skill only for an explicitly authorized physical Target. Capture is a user-driven feature of the visible browser or packaged Electron renderer: the renderer uses navigator.mediaDevices, owns permission prompts and recording controls, and uploads accepted media through the normal Evidence path. It is not an MCP or autonomous agent capability — the browser tool policy classifies capturePhoto/startVideoStream/startAudioStream as mutating agent actions, so they are intentionally unavailable to the agent. Capture is an observation capability, never a physical-control capability.
Preconditions
- Record the physical Target, location or fixture identifier, owner/authorization, purpose, allowed camera or microphone source, observation window, retention expectation, and stop condition.
- Ask the user to initiate this exact capture in the visible media controls. The saved Evidence record must bind the authorized Target; a generic “watch/listen” instruction is insufficient.
- Confirm that people are not unintentionally captured. Do not capture private conversations, neighboring property, credentials, screens, faces, or bystanders. Reposition, mask, or stop when the scene is not suitable.
- State the hypothesis in observable terms. Example: “the latch is visibly disengaged” or “fan noise is lower relative to the pre-change baseline.” Do not infer a physical action succeeded merely because a control endpoint reported success.
Renderer Controls
The user selects the exact authorized physical target locator/fixture ID and a locally permissioned device. The agent may explain what evidence would be useful, but it cannot select a device, grant media permission, or start recording.
| Control | Use | Bound |
|---|
| Capture photo | One still frame to document a visible state or instrument reading. | Prefer one frame; capture another only when the state changed. |
| Record video | Short, bounded observation of a transition. | 1–60 seconds; stop as soon as the proof bar is met. |
| Record audio | Short, bounded relative acoustic observation. | 1–60 seconds; report relative change, not identity or speech content. |
Do not use capture controls to actuate locks, doors, alarms, appliances, or other physical equipment. Remote physical control is a separate, explicitly approved integration and is outside this skill.
Capture Procedure
- Capture a baseline only if it is necessary to compare the same source, placement, and environmental conditions.
- Use the smallest capture that can test the hypothesis. Start with
capturePhoto; use video only for motion/state transitions and audio only for a non-speech relative signal.
- Save media as an Evidence Artifact with capture time, source ID/label, target, capture duration, MIME type, hash, relevant placement notes, and any framing/cropping applied at capture. Preserve the original media exactly; never save an altered copy in its place. Uploads route through the Evidence Interface (src/server/evidence/artifact-service.ts), which enforces custody byte caps: verify an artifact ID comes back; if the capture exceeds the cap or the upload fails, treat it as unsaved evidence and say so.
- Describe what is directly observable, separate from interpretation. Example: “the frame shows the door gap unchanged at the end of the 15-second window”; not “the door is locked.”
- Stop immediately on unexpected people, speech, scope drift, a safety concern, or sufficient evidence. Do not keep a continuous stream running.
Interpretation
- Treat a honeypot or control-system acknowledgement as a separate signal, not proof of a physical outcome.
- For temperature/infrared instruments, record the instrument type, emissivity/range settings when relevant, angle/distance, timestamp, and baseline conditions. Do not claim calibrated measurements from an uncalibrated camera.
- For fan/equipment audio, compare only relative level or spectral change under matched placement and ambient conditions. Do not identify speakers, transcribe speech, or derive health/identity inferences.
- Report uncertainty, alternate explanations, and the next lowest-risk observation if evidence is ambiguous.
Evidence Record
Include: target and authorization ID, user capture confirmation, source ID, capture type, started/ended timestamps, duration, content type, artifact hash/ID, direct observation, environmental notes, and stop reason. Link the artifact to the relevant task or finding rather than embedding raw media in a chat summary.