API reference

This is the supported authoring surface used by the bundled examples and tests. Internal scratch objects and underscore-suffixed fields are not stable extension APIs. This experimental release does not promise compatibility with every TADS or adv3Lite class/property.

The library reference indexes every declaration, including implementation symbols. Entries marked author or host describe supported interfaces; entries marked internal are included for source navigation.

Surface Author sets or overrides Library maintains
gameMain initialRoom, intro, usePastTense Startup dispatch
Thing name, desc, vocab, flags, bulk/capacity, presentation Adventure interactions and discovery
Room Description and exit relation rows Room description and scope policy
Container / Door Open/locked properties and initial relation rows State changes from actions
Thing.rank(action, role) Candidate rank Candidate resolution
Thing.refuses(action, command) Nil or refusal text Refusal dispatch
Action Argument requirements, rank, preCond, exec, report Resolved command flow
Verb Unique code, action, optional direction and label Code lookup
Message Stable id, priority/activity, text or say Active message selection
Actor / ActorState Initial state and behaviour hooks Current state and turn scheduling
AccompanyingState actor, accompanyingActor Coordinated travel
TopicEntry actor, matchObj, inState, id/reply, once used after an accepted exchange
Event / Fuse / Daemon owner, prop, interval/activity and initial delay Remaining delay and dispatch
Conversation id, target, choices, availability and opening/closing hooks Active conversation relation
DialogueChoice id, labelId, knowledge requirements, once, availability and selection hook Per-asker consumption
InternalSpeaker voiceOwner relation Eligibility for the bound asker

Call vhylStart() once at startup. Delegate text turns to vhylTurn(tokens) and structured actions to vhylAct(code, arguments). Use here() for the player's current room. Use relations to change placement and setKnowsAbout/forget for explicit knowledge changes.

Read the actions guide before overriding hooks and the dialogue guide before interpreting conversation events. Conditions used while observing or presenting the world must not mutate it.

Machine-readable interfaces: messages and verbs. Regenerate these with python3 tools/export_surface.py; CI checks they match the library. Application declarations belong in application catalogues.