Observed since 21 Oct, 11:36 UTC
No superseded metadata states collected. Unchanged observations do not create new revisions.
@0xspencer/ready-agent-one
A framework giving AI agents a toolkit to interact meaningfully in a game world.
ready-agent-one is a framework for giving AI agents a novel way to interact meaningfully in a game world. It provides a structure to handle world (server) ticks and world events, allowing you to easily manage, customize, and process game events involving players.
It's purpose is to define a standard (and provide necessary tooling to work within that standard) to intercept in-game world information and events with the purpose of controlling agent prompting and extending behavior beyond typical action schemas.
To install ready-agent-one, run the following command:
npm install ready-agent-one
import { tryParseWorldMessage, setOnWorldTickCallback, registerEventAction } from 'ready-agent-one';
import { PLAYER_ENTER_EVENT, PLAYER_EXIT_EVENT } from 'ready-agent-one/dist/types/sharedTypes';
setOnWorldTickCallback((message) => {
const presentPlayers = message.players;
agent.updateWorldInfo(`Present players: ${presentPlayers.map(player => player.username).join(', ');}`)
});
registerEventAction(PLAYER_ENTER_EVENT, (data) => {
console.log('Player entered:', data.username);
// handle agent response for player entering a zone (eg: award player with an NFT or a Superfluid stream)
agent.promptSuperfluidStream(data.username, data.walletAddress);
});
registerEventAction(PLAYER_EXIT_EVENT, (data) => {
console.log('Player exited:', data.username);
// handle agent response for player exiting a zone (eg: stop a Superfluid stream)
});
const messageFromGame = {
text: 'WORLD_TICK',
players: [{ userId: '1234', username: 'Player1' }],
};
const parseSuccessful = tryParseWorldMessage(messageFromGame); // Triggers onWorldTick callback
if (!parseSuccessful) {
// if parse not successful, this is not a world message, and the agent can reply as they please
} else {
agent.respond(messageFromGame);
}
tryParseWorldMessage(json: any): json is WorldMessage
Parses an incoming game message and triggers the appropriate callbacks based on whether it's a WORLD_TICK or WORLD_EVENT.
Parameters:
json: The incoming message (can be either a world tick or world event).
Returns:true if the message was successfully parsed and processed.false if the message does not match a valid WORLD_TICK or WORLD_EVENT.setOnWorldTickCallback(callback: (message: WorldTick) => void): void
Sets a callback function that will be called whenever a WORLD_TICK message is received.
Parameters:
callback: The function to call when a world tick message is received. It receives the parsed WorldTick.registerEventAction(eventName: EventName, callback: EventCallback): void
Registers an action callback for a specific event.
Parameters:
eventName: The name of the event to listen for (e.g., PLAYER_ENTER).callback: The function to call when the event is triggered. It receives the eventData associated with the event.WorldTick
Represents a world tick message that contains player information.
{
text: "WORLD_TICK";
players: Player[];
}
WorldEvent
Represents a world event message. There are different types of events, such as PLAYER_ENTER, PLAYER_EXIT, and PLAYER_WON. You can also specify a custom event and eventData.
{
text: "WORLD_EVENT";
event: EventName;
eventData: object;
}
Player
Represents a player object with a userId and username.
{
userId: string;
username: string;
}
The ready-agent-one standard supports 2 primary messages, defined as WorldMessages:
WorldTickWorldEventIt boils down to defining a message and a callback to that method. The event callback then decides if the message context is appropriate to pass to the agent.
The WorldTick is a message sent from the game authority (usually the game server) on a specified interval to inform the agent of the current game state. Currently it supports a list of active players, but its interface is extendible.
The WorldEvent message is sent whenever something noteworthy happens in game. It contains a unique EventName that identifies the context of the event. Furthermore, it contains an eventData object with additional context on the event.
Below are the currently supported events, with eventData contexts:
| Event | Event Data |
|---|---|
PLAYER_ENTER | { player: Player, zoneId: string } |
PLAYER_EXIT | { player: Player, zoneId: string } |
PLAYER_WON | { player: Player, score: numer, game: string } |
GAME_COMPLETED_EVENT | { rank: Player[], game: string } |
While some events are standardized and included in this package, any event name can be manually added and configured (as long as the game supports it).
registerEventAction("CUSTOM_EVENT_NAME", OnCustomEventCallback)
npm test
Download counts and popularity will appear here as the collector receives them.
| Package / target | Requirement | Relationship |
|---|---|---|
coEnvironment{
"local_name": "co",
"alias": false,
"peer_metadata": null
} | ^4.6.0 | runtime |
msEnvironment{
"local_name": "ms",
"alias": false,
"peer_metadata": null
} | ^2.1.3 | runtime |
ynEnvironment{
"local_name": "yn",
"alias": false,
"peer_metadata": null
} | ^3.1.1 | runtime |
ajvEnvironment{
"local_name": "ajv",
"alias": false,
"peer_metadata": null
} | ^6.12.6 | runtime |
argEnvironment{
"local_name": "arg",
"alias": false,
"peer_metadata": null
} | ^4.1.3 | runtime |
cacEnvironment{
"local_name": "cac",
"alias": false,
"peer_metadata": null
} | ^6.7.14 | runtime |
ejsEnvironment{
"local_name": "ejs",
"alias": false,
"peer_metadata": null
} | ^3.1.10 | runtime |
ufoEnvironment{
"local_name": "ufo",
"alias": false,
"peer_metadata": null
} | ^1.5.4 | runtime |
bserEnvironment{
"local_name": "bser",
"alias": false,
"peer_metadata": null
} | ^2.1.1 | runtime |
chaiEnvironment{
"local_name": "chai",
"alias": false,
"peer_metadata": null
} | ^4.5.0 | runtime |
diffEnvironment{
"local_name": "diff",
"alias": false,
"peer_metadata": null
} | ^4.0.2 | runtime |
exitEnvironment{
"local_name": "exit",
"alias": false,
"peer_metadata": null
} | ^0.1.2 | runtime |
globEnvironment{
"local_name": "glob",
"alias": false,
"peer_metadata": null
} | ^7.2.3 | runtime |
jakeEnvironment{
"local_name": "jake",
"alias": false,
"peer_metadata": null
} | ^10.9.2 | runtime |
jestEnvironment{
"local_name": "jest",
"alias": false,
"peer_metadata": null
} | ^29.7.0 | runtime |
keyvEnvironment{
"local_name": "keyv",
"alias": false,
"peer_metadata": null
} | ^4.5.4 | runtime |
levnEnvironment{
"local_name": "levn",
"alias": false,
"peer_metadata": null
} | ^0.4.1 | runtime |
mllyEnvironment{
"local_name": "mlly",
"alias": false,
"peer_metadata": null
} | ^1.7.4 | runtime |
onceEnvironment{
"local_name": "once",
"alias": false,
"peer_metadata": null
} | ^1.4.0 | runtime |
tmplEnvironment{
"local_name": "tmpl",
"alias": false,
"peer_metadata": null
} | ^1.0.5 | runtime |
viteEnvironment{
"local_name": "vite",
"alias": false,
"peer_metadata": null
} | ^5.4.14 | runtime |
y18nEnvironment{
"local_name": "y18n",
"alias": false,
"peer_metadata": null
} | ^5.0.8 | runtime |
acornEnvironment{
"local_name": "acorn",
"alias": false,
"peer_metadata": null
} | ^8.14.0 | runtime |
asyncEnvironment{
"local_name": "async",
"alias": false,
"peer_metadata": null
} | ^3.2.6 | runtime |
chalkEnvironment{
"local_name": "chalk",
"alias": false,
"peer_metadata": null
} | ^4.1.2 | runtime |
cliuiEnvironment{
"local_name": "cliui",
"alias": false,
"peer_metadata": null
} | ^8.0.1 | runtime |
debugEnvironment{
"local_name": "debug",
"alias": false,
"peer_metadata": null
} | ^4.4.0 | runtime |
execaEnvironment{
"local_name": "execa",
"alias": false,
"peer_metadata": null
} | ^8.0.1 | runtime |
fastqEnvironment{
"local_name": "fastq",
"alias": false,
"peer_metadata": null
} | ^1.19.0 | runtime |
isexeEnvironment{
"local_name": "isexe",
"alias": false,
"peer_metadata": null
} | ^2.0.0 | runtime |
jsescEnvironment{
"local_name": "jsesc",
"alias": false,
"peer_metadata": null
} | ^3.1.0 | runtime |
json5Environment{
"local_name": "json5",
"alias": false,
"peer_metadata": null
} | ^2.2.3 | runtime |
kleurEnvironment{
"local_name": "kleur",
"alias": false,
"peer_metadata": null
} | ^3.0.3 | runtime |
levenEnvironment{
"local_name": "leven",
"alias": false,
"peer_metadata": null
} | ^3.1.0 | runtime |
loupeEnvironment{
"local_name": "loupe",
"alias": false,
"peer_metadata": null
} | ^2.3.7 | runtime |
p-tryEnvironment{
"local_name": "p-try",
"alias": false,
"peer_metadata": null
} | ^2.2.0 | runtime |
patheEnvironment{
"local_name": "pathe",
"alias": false,
"peer_metadata": null
} | ^1.1.2 | runtime |
slashEnvironment{
"local_name": "slash",
"alias": false,
"peer_metadata": null
} | ^3.0.0 | runtime |
whichEnvironment{
"local_name": "which",
"alias": false,
"peer_metadata": null
} | ^2.0.2 | runtime |
yargsEnvironment{
"local_name": "yargs",
"alias": false,
"peer_metadata": null
} | ^17.7.2 | runtime |
bracesEnvironment{
"local_name": "braces",
"alias": false,
"peer_metadata": null
} | ^3.0.3 | runtime |
dedentEnvironment{
"local_name": "dedent",
"alias": false,
"peer_metadata": null
} | ^1.5.3 | runtime |
espreeEnvironment{
"local_name": "espree",
"alias": false,
"peer_metadata": null
} | ^9.6.1 | runtime |
expectEnvironment{
"local_name": "expect",
"alias": false,
"peer_metadata": null
} | ^29.7.0 | runtime |
hasownEnvironment{
"local_name": "hasown",
"alias": false,
"peer_metadata": null
} | ^2.0.2 | runtime |
ignoreEnvironment{
"local_name": "ignore",
"alias": false,
"peer_metadata": null
} | ^5.3.2 | runtime |
merge2Environment{
"local_name": "merge2",
"alias": false,
"peer_metadata": null
} | ^1.4.1 | runtime |
nanoidEnvironment{
"local_name": "nanoid",
"alias": false,
"peer_metadata": null
} | ^3.3.8 | runtime |
rimrafEnvironment{
"local_name": "rimraf",
"alias": false,
"peer_metadata": null
} | ^3.0.2 | runtime |
rollupEnvironment{
"local_name": "rollup",
"alias": false,
"peer_metadata": null
} | ^4.34.1 | runtime |
semverEnvironment{
"local_name": "semver",
"alias": false,
"peer_metadata": null
} | ^7.7.0 | runtime |
uri-jsEnvironment{
"local_name": "uri-js",
"alias": false,
"peer_metadata": null
} | ^4.4.1 | runtime |
walkerEnvironment{
"local_name": "walker",
"alias": false,
"peer_metadata": null
} | ^1.0.8 | runtime |
wrappyEnvironment{
"local_name": "wrappy",
"alias": false,
"peer_metadata": null
} | ^1.0.2 | runtime |
ci-infoEnvironment{
"local_name": "ci-info",
"alias": false,
"peer_metadata": null
} | ^3.9.0 | runtime |
confboxEnvironment{
"local_name": "confbox",
"alias": false,
"peer_metadata": null
} | ^0.1.8 | runtime |
deep-isEnvironment{
"local_name": "deep-is",
"alias": false,
"peer_metadata": null
} | ^0.1.4 | runtime |
esbuildEnvironment{
"local_name": "esbuild",
"alias": false,
"peer_metadata": null
} | ^0.21.5 | runtime |
esprimaEnvironment{
"local_name": "esprima",
"alias": false,
"peer_metadata": null
} | ^4.0.1 | runtime |
esqueryEnvironment{
"local_name": "esquery",
"alias": false,
"peer_metadata": null
} | ^1.6.0 | runtime |
esutilsEnvironment{
"local_name": "esutils",
"alias": false,
"peer_metadata": null
} | ^2.0.3 | runtime |
find-upEnvironment{
"local_name": "find-up",
"alias": false,
"peer_metadata": null
} | ^5.0.0 | runtime |
flattedEnvironment{
"local_name": "flatted",
"alias": false,
"peer_metadata": null
} | ^3.3.2 | runtime |
gensyncEnvironment{
"local_name": "gensync",
"alias": false,
"peer_metadata": null
} | ^1.0.0-beta.2 | runtime |
globalsEnvironment{
"local_name": "globals",
"alias": false,
"peer_metadata": null
} | ^15.14.0 | runtime |
is-globEnvironment{
"local_name": "is-glob",
"alias": false,
"peer_metadata": null
} | ^4.0.3 | runtime |
js-yamlEnvironment{
"local_name": "js-yaml",
"alias": false,
"peer_metadata": null
} | ^4.1.0 | runtime |
onetimeEnvironment{
"local_name": "onetime",
"alias": false,
"peer_metadata": null
} | ^6.0.0 | runtime |
p-limitEnvironment{
"local_name": "p-limit",
"alias": false,
"peer_metadata": null
} | ^3.1.0 | runtime |
pathvalEnvironment{
"local_name": "pathval",
"alias": false,
"peer_metadata": null
} | ^1.1.1 | runtime |
piratesEnvironment{
"local_name": "pirates",
"alias": false,
"peer_metadata": null
} | ^4.0.6 | runtime |
pkg-dirEnvironment{
"local_name": "pkg-dir",
"alias": false,
"peer_metadata": null
} | ^4.2.0 | runtime |
postcssEnvironment{
"local_name": "postcss",
"alias": false,
"peer_metadata": null
} | ^8.5.1 | runtime |
promptsEnvironment{
"local_name": "prompts",
"alias": false,
"peer_metadata": null
} | ^2.4.2 | runtime |
resolveEnvironment{
"local_name": "resolve",
"alias": false,
"peer_metadata": null
} | ^1.22.10 | runtime |
reusifyEnvironment{
"local_name": "reusify",
"alias": false,
"peer_metadata": null
} | ^1.0.4 | runtime |
siginfoEnvironment{
"local_name": "siginfo",
"alias": false,
"peer_metadata": null
} | ^2.0.0 | runtime |
std-envEnvironment{
"local_name": "std-env",
"alias": false,
"peer_metadata": null
} | ^3.8.0 | runtime |
tinyspyEnvironment{
"local_name": "tinyspy",
"alias": false,
"peer_metadata": null
} | ^2.2.1 | runtime |
ts-jestEnvironment{
"local_name": "ts-jest",
"alias": false,
"peer_metadata": null
} | ^29.2.5 | runtime |
yallistEnvironment{
"local_name": "yallist",
"alias": false,
"peer_metadata": null
} | ^3.1.1 | runtime |
anymatchEnvironment{
"local_name": "anymatch",
"alias": false,
"peer_metadata": null
} | ^3.1.3 | runtime |
argparseEnvironment{
"local_name": "argparse",
"alias": false,
"peer_metadata": null
} | ^2.0.1 | runtime |
deep-eqlEnvironment{
"local_name": "deep-eql",
"alias": false,
"peer_metadata": null
} | ^4.1.4 | runtime |
doctrineEnvironment{
"local_name": "doctrine",
"alias": false,
"peer_metadata": null
} | ^3.0.0 | runtime |
emitteryEnvironment{
"local_name": "emittery",
"alias": false,
"peer_metadata": null
} | ^0.13.1 | runtime |
error-exEnvironment{
"local_name": "error-ex",
"alias": false,
"peer_metadata": null
} | ^1.3.2 | runtime |
escaladeEnvironment{
"local_name": "escalade",
"alias": false,
"peer_metadata": null
} | ^3.2.0 | runtime |
filelistEnvironment{
"local_name": "filelist",
"alias": false,
"peer_metadata": null
} | ^1.0.4 | runtime |
has-flagEnvironment{
"local_name": "has-flag",
"alias": false,
"peer_metadata": null
} | ^4.0.0 | runtime |
inflightEnvironment{
"local_name": "inflight",
"alias": false,
"peer_metadata": null
} | ^1.0.6 | runtime |
inheritsEnvironment{
"local_name": "inherits",
"alias": false,
"peer_metadata": null
} | ^2.0.4 | runtime |
jest-cliEnvironment{
"local_name": "jest-cli",
"alias": false,
"peer_metadata": null
} | ^29.7.0 | runtime |
make-dirEnvironment{
"local_name": "make-dir",
"alias": false,
"peer_metadata": null
} | ^4.0.0 | runtime |
mimic-fnEnvironment{
"local_name": "mimic-fn",
"alias": false,
"peer_metadata": null
} | ^4.0.0 | runtime |
p-locateEnvironment{
"local_name": "p-locate",
"alias": false,
"peer_metadata": null
} | ^5.0.0 | runtime |
path-keyEnvironment{
"local_name": "path-key",
"alias": false,
"peer_metadata": null
} | ^3.1.1 | runtime |
punycodeEnvironment{
"local_name": "punycode",
"alias": false,
"peer_metadata": null
} | ^2.3.1 | runtime |
react-isEnvironment{
"local_name": "react-is",
"alias": false,
"peer_metadata": null
} | ^18.3.1 | runtime |
tinypoolEnvironment{
"local_name": "tinypool",
"alias": false,
"peer_metadata": null
} | ^0.8.4 | runtime |
Showing the first 100 declarations.
Source distribution
{
"shasum": "c431253dff4475d3c8b775816be5f325c1a2552c",
"tarball": "https://registry.npmjs.org/@0xspencer/ready-agent-one/-/ready-agent-one-0.1.1.tgz",
"fileCount": 15,
"integrity": "sha512-AjWuprQpGuo+e4DQdjqN6woceeL/7Z6dvuy1jA7ffz5t5Grx2QbrvbIT3l1JiuIHLEWmd/NO8+mQfdK0GVSgHw==",
"signatures": [
{
"sig": "MEUCICwJUHszE9lplOwsQzZKy/Uy62X9Q0goHttRvtW8hZK9AiEA7EVEvv3CoVSwQ5aOiqcSkS1O66yIzthPo9xbutsOPe4=",
"keyid": "SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"
}
],
"unpackedSize": 33606
}Observed since 21 Oct, 11:36 UTC
No superseded metadata states collected. Unchanged observations do not create new revisions.
package_version:69d3d98686daa0e103cd152df78b23a3355fb4aa7e82c7ec19822b008ca2cdb5