LSL Protocol/Restrained Love Open Relay Group/x-tensions

== Full list of x-tensions ==
At present, the list of x-tensions is short and it makes sense to list them all on a single page, In the future, it may make sense to separate the list into those that have group approval and those that do not, either because they are still under discussion or because they have been rejected by majority opinion.
Proposed list of approval stages here.
Feature table (including ORG x-tensions) of existing relays here.
x-tensions that have been implemented or proposed are:
These x-tensions are live, up and well running with several independant implementations:
x-tension	status 	version	description
who 	silver (?)	001 	tells the relay the identity of the avatar operating the controlling device. Can be useful in playgrounds with bondage furnitures whose grabbing function is open to everybody.
handover 	bronze (?)	001 	hands over the control of the relay to another device, with no further auth required, and possiblity to keep all the previous restrictions.
vision 	bronze (?)	001 	provide a means of obscuring the subjects vision WITHOUT having to muck about with extra wearables. Originally conceived as a MOUSELOOK ENFORCER/PUNISHER and REQUIRES a HUDstyle relay. (already implemented and available to use).
follow 	draft 	002 	makes the victim follow a given object or avatar at the given distance. 
::::This is exactly what current leashes already do, but without the particles. Useful for bringing the victim 
::::from one place to another without using magic tricks like teleportation.
email 	draft 	006 	initiates a gridwide email encapsulated protocol session.
::::The protocol itself is a work in progress now. A proof of concept is on its way in my relay and RLV remote. --Satomi Ahn 10:03, 19 May 2009 (UTC)
delay 	draft 	004 	!x-delay/10 will delay the execution of the remaining subcommands by 10 seconds. This can be useful either for setting release timers or... making delayed surprises.
These x-tensions have some working implementations are not considered useful anymore due to llRegionSayTo:
x-tension	status	version	description
channel 	draft 	001 	switches the control channel for the RLV relay communications to the specified channel to cut down on spam.
ack 	draft 	002 	!x-ack/quiet tells the relay to stop sending "ok" and "ko" acknowledgements... until it receives !x-ack/verbose. This should help reduce spam on the relay channel.
These x-tensions have only one implementation but their specifications look final enough:
x-tension	status	version	description
freeze 	draft 	002 	stop the victim dead in their tracks. Effectively disables the arrow movement keys, jump and crouch. 
::::Sure you can do it other ways, but this keeps down extra script/attachment counts and gives a 'standard interface'. 
::::Nice for area effects (prison lock-down perhaps), cages (hold them in place so you can open the cage and take out one specific captive.
key 	draft 	002 	creates an abstract key for the current session which enables another controller (or the same one after a relog) to take over the session; with !ping activated or not if the controller is not present
These x-tensions are under debate:
x-tension 	status 	version	description
simwide 	deprecated	000 	Enables simwide control without requiring a gridwide control: the viewer's answer is resent in a special channel and the relay performs the llSensor; interest of this simwide mode even if the capture avatar is close to the grabber: a scan is done around the avatar, not around the grabber.
speech 	draft 	002 	Forced speech
gridurl 	proposal 	000 	Persistent URL to get the UUID key of the relay
thirdview 	deprecated	001 	Forced mouselook mode
camera 	draft 	001 	Controlling/tracking the camera of the wearer of the relay (this x-tension contains thirdview)
autoforward	draft 	001 	Simpler alternative to simwide: no new listener is opened, fully compatible with a !x-email session
forward 	deprecated	001 	Deprecated but the first idea could be taken in a future version of autoforward, depending how these things will evolve
sensor 	draft 	002 	remote llSensor
cancel 	draft 	001 	release any avatars from any session controlled by an object owned by the owner of the object sending this command
These x-tensions have different stages of maturity but are not currently implemented and neither being worked on at the moment:
x-tension	status 	version	description
gender 	proposal	000 	allow the users to set their defined sex, and be queried by a device AND SET BY THE DEVICE.
species 	proposal	000 	ditto for species.
control 	proposal	000 	makes the victim move as if the control given in argument had been pressed. In conjunction with !x-freeze, this allows the device user to control the victim as if they controlled their own avatar.
listen 	? 	001 	opens up a listener on the specified channel. Useful for cutting down the load on a sim by only having multiple listeners as needed.
animate 	proposal	000 	animates the victim with the given animation. The animation has to be a standard one, or an animation from a freebie set we would have to standardize and include in every relay that supports x-animate.
http-in 	draft 	002 	initiates a gridwide http encapsulated protocol session, using the new SL server http-in feature.
::::I see it as using exactly the same mechanisms as the email extension. It is likely that one of the two methods should eventually be deprecated as they would have the same use and one of the two has to be more efficient than the other! --Satomi Ahn 10:03, 19 May 2009 (UTC)
message 	proposal	000 	Use the relay to send messages from the restraining device to the victim. 
::::Mainly to negate the inconvenients of llInstantMessage as the only means for a restraining device to send a message only to the victim (Especially useful with multi line messages where the inherent script delay for llInstantMessage is more apparent). --[Regan Flasheart] 13:59, 26 June 2009 (UTC)
::::llRegionSayTo(victim,0,message); works instantly in-sim, negating the need for this protocol. --[Da Chrome], 23 Nov 2012
custom 	proposal	001 	Asks the relay for a list of custom commands or sublists of such. The controlling device issuing this would display the list in a dialog to the device user. Items of the list could include simple actions like triggering animations, or blinding the relay wearer, or even display the menus of various compatible restraints worn by the relay wearer. The idea is to give the possibility for any relay maker to implement various custom extensions without having to wait for every furniture or remote maker to implement them in their menus.
mode 	proposal	000 	Queries for relay current auth mode. Answers (in ack) should tell the source useful information such as if the relay is in interactive mode (ask) or not (auto) and the presence of black and white lists.
safe 	proposal	000 	Enables safewording in the relay for the current source (if safewording was disabled). Options could specify that only conditional safewording ("evil safeword") should be allowed, thus allowing another way to close a session if the source is not available to send !release. This x-tension should have a command to query the current safewording mode.
multi 	proposal	000 	By announcing this x-tension, a relay announces it can support several simultaneous controllers. This x-tension should also contain a command to ask for (an estimation of) a number of available controllers, and a command to close the relay to new controllers.
status 	proposal	000 	an alternative for @getstatus
These commands are forever deprecated:
x-tension 	status 	version	description
(!x-)tensions	deprecated	000 	queries the relay for supported x-tensions. Deprecated by !x-orgversions, which is part of ORG core requirements.
Note: x-tension names do not contain "!x-" or even "x-". Only the meta-commands they define are prefixed that way. One x-tension can define several meta-commands, which must all be implemented if the x-tension is supported.