Generated wire contract reference¶
This reference is projected from contract/asyncapi.yaml. The contract file remains normative. NOW's eight-byte binary frame is normative prose in that file because AsyncAPI describes messages, not this custom framing layer.
- AsyncAPI version:
3.0.0 - Product contract version:
0.2.0 - Contract revision:
2 - Default content type:
application/json
Channels¶
| ID | Address | Purpose |
|---|---|---|
control |
0 |
JSON control messages, framed on channel 0. |
bulk |
1 |
Raw payload bytes on channel 1, correlated by the frame header's transfer id. Four payload kinds ride it: capture pixel data (rows top-to-bottom, rowBytes apart; depth 8 uses the guest's palette; 16 is RGB555 big-endian; 32 is xRGB8888 big-endian), file content (file.begin describes the container), a scene document (scene.begin: UTF-8 JSON, the Mirror IR whose major is irVersion — or, when scene.begin says delta:true, a delta against the baseline the request named), with menu rows carrying an additive optional submenu boolean. Classic Menu Manager records overload the hierarchical row's command byte and store the submenu id in the mark byte, so submenu:true and mark:true are distinct visual and interaction facts rather than two readings of the same byte. and a cloud preview (preview.begin: raw indexed rows, top-to-bottom, rowBytes apart, already dithered by the HOST to the depth the guest asked — no palette block, because the target is the classic system table for that depth, which both sides already own). The control message that began the transfer says which. |
Operations¶
| Operation | Direction | Channel | Messages |
|---|---|---|---|
hostPublishesUpdates |
send |
control |
updateOffer |
guestRequestsUpdate |
send |
control |
updateRequest, updateResult |
hostExecutesLine |
receive |
control |
execRequest, execCancel, execInput |
guestAnswersExec |
send |
control |
execOutput, execResult |
guestOffersCapture |
send |
control |
captureOffer, captureBegin, captureEnd |
hostRequestsScene |
receive |
control |
sceneRequest |
guestServesScene |
send |
control |
sceneBegin, sceneEnd, sceneSame |
hostControlsStream |
receive |
control |
streamStart, streamStop, streamRefresh |
guestRequestsStream |
send |
control |
streamRequest |
guestEndsStream |
send |
control |
streamStopped |
hostBrowsesFiles |
receive |
control |
fileList, fileGet, fileCancel |
hostPutsFiles |
receive |
control |
fileOffer |
hostChangesFiles |
receive |
control |
fileMove, fileTrash, fileRestore, fileMkdir |
guestServesFiles |
send |
control |
fileListing, fileRefuse, fileBegin, fileEnd, fileProgress |
hostAnswersOffer |
receive |
control |
captureAccept, captureRefuse |
hostRequestsCapture |
receive |
control |
captureRequest, captureCancel |
censusExchange |
send |
control |
censusRequest, censusReport |
hostBrowsesProcesses |
receive |
control |
processList |
guestServesProcesses |
send |
control |
processListing |
hostBrowsesSoftware |
receive |
control |
softwareList |
guestServesSoftware |
send |
control |
softwareListing |
hostDrivesProcess |
receive |
control |
processFront, processQuit, processShot |
guestAnswersDrive |
send |
control |
processResult |
guestAsksCloud |
send |
control |
cloudServices, cloudList, cloudDetail, cloudGet, cloudPreview |
hostServesCloud |
receive |
control |
cloudReport, cloudListing, cloudCard, cloudRefuse, previewBegin, previewEnd |
guestAsksChat |
send |
control |
chatModels, chatSend, chatCancel, chatReset, chatChats, chatOpen, chatHistory, chatProjects, chatProject, chatSkills |
hostServesChat |
receive |
control |
chatCatalog, chatRoster, chatTranscript, chatProjectRoster, chatSkillRoster, chatDelta, chatStatus, chatResult |
guestAsksWeb |
send |
control |
webRequest, webCancel |
hostServesWeb |
receive |
control |
webResponseBegin, webResponseChunk, webResponseEnd |
guestAsksHostSurface |
send |
control |
hostShow |
hostServesHostSurface |
receive |
control |
hostShown |
hostAsksGuestContinuity |
send |
control |
continuityArm, continuityDisarm, continuityKey, continuityGrab, continuityOffer, continuityHostDragBegin |
guestReportsContinuity |
receive |
control |
continuityReport, continuityKeyReport, continuitySelection, continuityDragBegin, continuityGrab |
peerAnnouncesMirrorInvalidation |
send |
control |
mirrorInvalidate |
peerReceivesMirrorInvalidation |
receive |
control |
mirrorInvalidate |
Messages¶
| Registry ID | Wire name | Payload schema |
|---|---|---|
hello |
hello |
Hello |
refuse |
refuse |
Refuse |
ping |
ping |
Ping |
pong |
pong |
Pong |
bye |
bye |
Bye |
error |
error |
Error |
commandRequest |
command.request |
CommandRequest |
commandResult |
command.result |
CommandResult |
execRequest |
exec.request |
ExecRequest |
execOutput |
exec.output |
ExecOutput |
execResult |
exec.result |
ExecResult |
execCancel |
exec.cancel |
ExecCancel |
execInput |
exec.input |
ExecInput |
censusRequest |
census.request |
CensusRequest |
censusReport |
census.report |
CensusReport |
captureRequest |
capture.request |
CaptureRequest |
streamRequest |
stream.request |
StreamRequest |
streamStart |
stream.start |
StreamStart |
streamStop |
stream.stop |
StreamStop |
streamRefresh |
stream.refresh |
StreamRefresh |
streamStopped |
stream.stopped |
StreamStopped |
fileList |
file.list |
FileList |
fileListing |
file.listing |
FileListing |
fileGet |
file.get |
FileGet |
fileOffer |
file.offer |
FileOffer |
updateOffer |
update.offer |
UpdateOffer |
updateRequest |
update.request |
UpdateRequest |
updateResult |
update.result |
UpdateResult |
fileAccept |
file.accept |
FileAccept |
fileDone |
file.done |
FileDone |
fileProgress |
file.progress |
FileProgress |
fileRefuse |
file.refuse |
FileRefuse |
fileBegin |
file.begin |
FileBegin |
fileEnd |
file.end |
FileEnd |
fileMove |
file.move |
FileMove |
fileTrash |
file.trash |
FileTrash |
fileRestore |
file.restore |
FileRestore |
fileMkdir |
file.mkdir |
FileMkdir |
fileResult |
file.result |
FileResult |
fileCancel |
file.cancel |
FileCancel |
captureOffer |
capture.offer |
CaptureOffer |
captureAccept |
capture.accept |
CaptureAccept |
captureRefuse |
capture.refuse |
CaptureRefuse |
captureCancel |
capture.cancel |
CaptureCancel |
captureBegin |
capture.begin |
CaptureBegin |
captureEnd |
capture.end |
CaptureEnd |
sceneRequest |
scene.request |
SceneRequest |
sceneBegin |
scene.begin |
SceneBegin |
sceneEnd |
scene.end |
SceneEnd |
sceneSame |
scene.same |
SceneSame |
processList |
process.list |
ProcessList |
processListing |
process.listing |
ProcessListing |
processFront |
process.front |
ProcessFront |
processQuit |
process.quit |
ProcessQuit |
processShot |
process.shot |
ProcessShot |
processResult |
process.result |
ProcessResult |
softwareList |
software.list |
SoftwareList |
softwareListing |
software.listing |
SoftwareListing |
agentAccess |
agent.access |
AgentAccess |
continuityArm |
continuity.arm |
ContinuityArm |
continuityReport |
continuity.report |
ContinuityReport |
continuityDisarm |
continuity.disarm |
ContinuityDisarm |
continuityKey |
continuity.key |
ContinuityKey |
continuityKeyReport |
continuity.keyReport |
ContinuityKeyReport |
continuitySelection |
continuity.selection |
ContinuitySelection |
continuityDragBegin |
continuity.dragBegin |
ContinuityDragBegin |
continuityGrab |
continuity.grab |
ContinuityGrab |
continuityOffer |
continuity.offer |
ContinuityOffer |
continuityHostDragBegin |
continuity.hostDragBegin |
ContinuityHostDragBegin |
cloudServices |
cloud.services |
CloudServices |
cloudReport |
cloud.report |
CloudReport |
cloudList |
cloud.list |
CloudList |
cloudListing |
cloud.listing |
CloudListing |
cloudDetail |
cloud.detail |
CloudDetail |
cloudCard |
cloud.card |
CloudCard |
cloudGet |
cloud.get |
CloudGet |
cloudPreview |
cloud.preview |
CloudPreview |
cloudRefuse |
cloud.refuse |
CloudRefuse |
chatModels |
chat.models |
ChatModels |
chatCatalog |
chat.catalog |
ChatCatalog |
chatSend |
chat.send |
ChatSend |
chatDelta |
chat.delta |
ChatDelta |
chatStatus |
chat.status |
ChatStatus |
chatResult |
chat.result |
ChatResult |
chatCancel |
chat.cancel |
ChatCancel |
chatReset |
chat.reset |
— |
chatChats |
chat.chats |
— |
chatRoster |
chat.roster |
— |
chatOpen |
chat.open |
— |
chatHistory |
chat.history |
— |
chatTranscript |
chat.transcript |
— |
chatProjects |
chat.projects |
— |
chatProjectRoster |
chat.projectroster |
— |
chatProject |
chat.project |
ChatProject |
chatSkills |
chat.skills |
ChatSkills |
chatSkillRoster |
chat.skillroster |
ChatSkillRoster |
webRequest |
web.request |
WebRequest |
webResponseBegin |
web.response.begin |
WebResponseBegin |
webResponseChunk |
web.response.chunk |
WebResponseChunk |
webResponseEnd |
web.response.end |
WebResponseEnd |
webCancel |
web.cancel |
WebCancel |
previewBegin |
preview.begin |
PreviewBegin |
previewEnd |
preview.end |
PreviewEnd |
hostShow |
host.show |
HostShow |
hostShown |
host.shown |
HostShown |
mirrorInvalidate |
mirror.invalidate |
MirrorInvalidate |
Commands¶
Commands are a NOW extension under components.x-commands. The receiver owns the grammar and behavior; the sender treats the name and arguments as contract data.
| Command | Arguments | Output keys | Summary |
|---|---|---|---|
development |
— | development |
The PPC guest's human-registered Projects and MPW environment. |
development-build |
action (required), projectID, candidateID |
development-build |
Starts, observes or cancels the PPC guest's page-neutral MPW ToolServer service. |
development-project |
action, projectID, cursor |
development-project |
Lists the active projects beneath the human-selected Projects root, or measures and pages one of them. |
development-stage |
action (required), candidateID (required), projectID, expectedDigest, expectedFiles, baseGuestDigest |
development-stage |
Prepares, observes or discards one inactive guest project candidate. |
development-run |
productRef (required) |
development-run |
Launches only the unchanged opaque product measured by the last successful Development build. |
development-test |
productRef (required) |
development-test |
Executes the closed test plan declared by the Project.ckp that produced the unchanged opaque product. |
development-open |
projectID (required) |
development-open |
Optionally locates and launches CodeKitten through the classic Desktop database, then sends the active Project.ckp for one opaque project ID using the standard open-documents Apple Event. |
help |
topic |
help |
What commands THIS machine serves, asked of the machine that serves them. |
update |
component, hostApproved |
update |
Reads the exact application and extension builds the connected host has published. |
gestalt |
— | snapshot, cpu, memory, os, network, hw, notice |
The guest's own account of itself, via the Gestalt Manager. |
romdump |
— | romdump |
Writes the responder's complete ROM to New Old World ROM.bin under its configured Files share. |
ls |
path |
ls |
List a folder in the guest's share. |
put |
name |
put |
Send a file from the guest to the host. |
cancel |
— | cancel |
Abandon the transfer in flight, in whichever direction it is going. |
net |
— | net |
What the guest can say about its own networking, as four groups of rows: the link it is holding to this host, its TCP/IP configuration, the network ports the machine has, and — last — why a list of that Mac's connections is not among them. |
putstat |
— | putstat |
Where the last file the guest RECEIVED spent its time: bytes, chunk and write counts, and the milliseconds inside FSWrite against the whole receive path. |
desktop |
— | desktop, source, hasPattern, hasPicture, patternBytes, patternCarried, note |
What the guest's desktop is actually drawn from, asked of the running machine rather than read out of a resource. |
wirestat |
action, value |
wirestat |
How long the guest takes to NOTICE a request, as two distributions it alone can take: the interval between its own wire service passes, and the delay from Open Transport announcing that data arrived to its event loop reading it. |
tail |
lines, area, before |
tail, log |
Lines of the guest's log for this launch, read from the in-memory ring — 2000 lines (the guest's kLogKept, restated here so both sides read one number), live even when disk logging is off. |
vprobe |
— | vprobe |
Measure the guest's VRAM read cost by access method: raw framebuffer reads at 8/16/32/64-bit widths against the CopyBits baseline, reread caching, partial-read linearity, and pixel fidelity. |
screenshot |
depth, save |
screenshot |
Capture the guest's screen. |
shotdiag |
— | shotdiag |
Stage a capture down the guest's real wire path and report where it read from: the framebuffer base as the guest resolved it, StripAddress of that base, whether the machine is in 32-bit addressing at the moment of the walk, and the first sixteen bytes of row 0 as the walk sees them beside the same row as CopyBits copies it. |
ps |
— | ps |
The guest's running processes, one row per process: the name, and its kind / size / whether it is frontmost. |
census |
probe |
census |
Run one hardware-census probe and return its rows. |
catsearch |
— | catsearch |
Time a whole-volume catalog search for applications: PBCatSearch over the receiver's startup volume matching file type APPL, run in short time slices — cold, then warm to expose caching. |
sw |
domain |
sw |
The receiver's installed software, one page a domain. |
launch |
target |
launch |
Open an application on the receiver: the software family's one mutation. |
quit |
target |
quit |
Ask a RUNNING process on the receiver to quit, named the way a person names it — by the name ps and process.listing show. |
front |
target |
front |
Bring a RUNNING process on the receiver to the front, named the way a person names it — by the name ps and process.listing show. |
hide |
target |
hide |
Hide or show a RUNNING application on the receiver, named the way a person names it, and report what its visibility actually is afterwards. |
reveal |
target |
reveal |
Show an installed item in the RECEIVER's own Finder, selected in its enclosing window — the read-only companion to launch. |
vers |
target |
vers |
One file's 'vers' resources — the short version, the numeric version and stage, the Get Info string, and the product (id 2) when present — read from that one file's resource fork alone (Get1Resource, never the chain: the System's 'vers' answering for a file that has none is the most convincing wrong answer). |
winact |
window (required), action (required), left, top, width, height |
winact |
Select, move, resize, zoom or close ONE window. |
cursoract |
window (required), h (required), v (required) |
cursoract |
Place the guest's drawn cursor at one point inside ONE observed window, without clicking, selecting the window, or changing front order. |
textget |
element (required) |
textget |
Read the text of ONE addressed text element. |
textset |
element (required), text (required) |
textset |
Replace the whole contents of ONE addressed text element. |
elements |
serialHi, serialLo |
elements |
Name this Mac's on-screen elements, so that they can be acted on. |
ctlact |
element (required), part (required), h, v |
ctlact |
Act on ONE control, by answering the owning application's own TrackControl with the part code named. |
dragpress |
element, window, h, v, toH, toV, idle, cap |
dragpress |
Press the mouse button on ONE element and LEAVE IT DOWN, handing the gesture to the resident's drag vehicle. |
dragmove |
session (required), h (required), v (required) |
dragmove |
Publish a new pointer position for a drag already holding the button, and relay that the caller is still alive. |
dragrelease |
session (required) |
dragrelease |
Ask the resident to release a drag it is holding. |
ditemact |
element (required), item (required) |
ditemact |
Select ONE live Dialog Manager item through the owning application's own dialog event path. |
menuact |
menu (required), item (required), titleLeft (required), serialHi, serialLo |
menuact |
Perform ONE menu command, by answering the owning application's own MenuSelect. |
activate |
serialHi (required), serialLo (required) |
activate |
Bring ONE process forward, named by its process serial number. |
actselftest |
serialHi, serialLo |
actselftest |
Prove the act plane's trap calling convention, in one process, from inside the machine. |
mouseloc |
— | mouseloc |
Where this Mac's pointer IS, and — since P8 — where its PICTURE was last put. |
key |
named, char, code, mods |
key |
Post ONE keystroke into this Mac's event queue — the mechanism textset is not, rather than a better one. |
script |
source (required), timeoutMs, purpose |
script |
Run ONE AppleScript on this Mac, through its own OSA component. |
aesend |
event (required), serialHi (required), serialLo (required), path |
aesend |
Send ONE core Apple Event to a process named by its serial. |
qdtrace |
op, a5, serialHi, serialLo, front, window, mode, ttlTicks, cursor, maxBytes, maxRecords |
qdtrace |
What is DRAWING on this Mac — read from a ring the NOW Extension's resident half fills at draw time inside an armed application. |
transitions |
op, a5, serialHi, serialLo, front, target, ttlTicks, cursor, maxRecords |
transitions |
What CHANGED on this Mac between two of its own event passes - read from a ring the NOW Extension's resident half fills inside an armed process, at the frequency of that process's event loop. |
observe |
scope |
observe |
Walk this Mac's on-screen elements and MINT an opaque reference for each one seen. |
handle |
ref (required) |
handle |
Take ONE reference back to a live element, or refuse — precisely. |
axtree |
scope |
axtree |
The read surface over the same walk observe performs. |
axsnap |
— | axsnap |
The cheap one: who is front, whether the reference layer can see it, and how many references are live. |
cycle |
— | cycle |
Brings each application on the guest forward in turn, with the anchor plane armed, so that it executes its own event loop once and the resident captures its anchor — then restores the application that was frontmost. |
mirror |
— | mirror |
The guest's read-only lifecycle view of the ONE optional NOW Extension and its data planes. |
mirrorlog |
action |
mirrorlog |
The mirror log area's DEBUG TIER, on one session-scoped switch that is OFF each launch. |
offer |
action |
offer |
The file the person at the Mac is holding out to this Macintosh, and the one thing somebody standing at this Macintosh can do about it. |
Change discipline¶
A behavior change begins in the contract. Implement the receiving side's share on the host, PPC guest, and 68K guest where supported; state intentional asymmetry; then update conformance fixtures and re-run the documentation projection.