Repository navigation
stagent v0.11.0
Added
- Host screen (ホストの画面, ADR 0008):
host_screen.list,
host_screen.start,host_screen.ack,host_screen.stopand the
notificationshost_screen.frameandhost_screen.stateshow a page of
a browser an agent drives in an app tab, over the tab's own bridge. The
browsers listed are the user's Chromium-family browsers started with
--remote-debugging-port(0read fromDevToolsActivePort), each
port checked with/json/version, with their page targets and the tool
told by the profile path. A page is shown with one
Page.captureScreenshotand thenPage.startScreencast(JPEG, quality
70); at most two frames wait for the app's ack, of the frames taken
meanwhile only the newest is kept, and a stalled app gets the
screencast paused and resumed with a full frame. Served to bridges
under a coding agent too (#640). host_screen.list: a browser started with--remote-debugging-pipe
only is listed withconnectable: falseandreason: "pipe_only"
(with its tool), andcdp_portsnames ports on 127.0.0.1 by hand: each
that answers/json/versionas CDP is listed withmanual: true, in
one item with a browser found on the same port; a port outside 1–65535
isbad_request(#642).- Host screen: Android emulators.
host_screen.listhas anandroid
section: the emulators ofadb devices -l(never a physical device),
matched by serial with the files they advertise their gRPC port in
(avd/running/pid_<pid>.ini), with the AVD name; one without gRPC
(started with-portonly) isconnectable: false,reason: "no_grpc", and a host without adb getsmissing: {code: "adb_not_found"}.host_screen.start {target: {kind: "android", serial}}shows the emulator through its gRPCstreamScreenshot
(Bearergrpc.token, RGB888 at half resolution, encoded to JPEG
quality 70);widthandheightare the display's px and swap when
it turns, and a stopped emulator sendsstate: "gone"(#643). - Host screen of an iOS simulator (macOS only, capability
host_screen_ios):host_screen.listhas aniossection with the
booted iOS simulators (xcrun simctl;missingxcode_not_found
without Xcode,simctl_failedwith simctl's error as the message when
it fails or runs out of time, a simulatorcompanion_not_foundwithout
idb_companion), andhost_screen.start {target: {kind: "ios", udid}}
shows one through an idb_companion started for the stream on a private
Unix socket (no TCP port): its MJPEGvideo_stream(half resolution,
quality 0.7, redrawn screens only), sized in points. The companion is
stopped with the stream (stop, anotherstart, the bridge exiting;
--idle-shutdown-timeshould stagent die), and a simulator shut down
sendsstate: "gone". Other hosts answerunsupported(#645). host_screen.inputoperates the page shown:tap,drag,scroll,
textandnavigate(back,forward,reload,url), points as
fractions of the frame turned into CSS px with the screencast's
metadata (deviceWidth,deviceHeight,offsetTop,
pageScaleFactor). A browser gets onlyInput.*(insertTextfor
text in any script, an Enter key event forenter),Page.navigate,
Page.reloadand the history'sPage.getNavigationHistoryand
Page.navigateToHistoryEntry;keyisunsupported. Inputs
run in order onstart's queue while acks are answered at once, so a
slow input never stops the frames (#641).host_screen.inputoperates an Android emulator:tap,dragand
scroll(one swipe from the cursor) through gRPCsendTouchin the
display's px, turned back with the emulator's rotation;keyback,
home,recentsthroughadb shell input keyevent(works with
hw.keyboard=no, no gRPCsendKey);textthroughadb shell input textwhen printable ASCII, else gRPCsetClipboardand
KEYCODE_PASTE, withKEYCODE_ENTERforenter.navigateis
unsupported(#644).host_screen.inputoperates an iOS simulator:tap,drag,scroll
(one swipe from the cursor),textof ASCII andkey: "home", as HID
events on the stream's idb_companionhidstream, kept open and
reopened when the companion ends it (no program per input). Points are
fractions of the frame in pt; text is typed as key presses of a US
keyboard (Shift for capitals and the upper symbols),enteras Return.
back,recents,navigateand text with a character other than
ASCII (Japanese input is pending, #649) areunsupported. A drag cut
short (the bridge ending) lifts its touch, and stopping the stream lets
the companion perform what was sent (up to a second) before stopping
it (#646).
stagent 0.11.0 — server binary for SSH Term. Built from this tag (0208b4f) with go1.27.1 via scripts/release.sh (reproducible: CGO_ENABLED=0, -trimpath, no VCS stamp, empty build id); verify downloads against SHA256SUMS.