agent-prototype

2.0.6 • Public • Published

agent-prototype

an extendable agent for building multi agent systems in javascript using prototypal inheritance.

methods

you must provide an event emitter via the constructor which is used as a global communication bus between agents.

listen(handler)

listen for messages on the bus (event emitter), accepts a function handler.

shout(message)

send a message to the communication bus, message can be an object or string.

spawn(bus)

spawn a new agent, optionally provide a communication bus (event emitter).

messages

Internally the agent uses the event emitter... with the following convention. To send a message from the outside just make sure to emit to the message channel and use the sender property to let others know who you are!

bus.emit('message', {
  sender: 'custom',
  message: 'hello from example!'
})

bus.on('message', console.log) // hear *ALL* messages in the system

example

var EventEmitter = require('events').EventEmitter
var bus = new EventEmitter()

var agentPrototype = require('agent-prototype')

var a = new agentPrototype(bus)
var b = new agentPrototype(bus)

a.listen(console.log)
b.listen(console.log)

setInterval(function () {
  var number = Math.round(Math.random()*11)
  bus.emit('message', { message: number, sender: 'environment' })
}, 1300)

extending example

This example shows how to add custom methods and extend the prototype.

var agentPrototype = require('agent-prototype')

var EventEmitter = require('events').EventEmitter
var bus = new EventEmitter()

var a = new agentPrototype (bus)

agentPrototype.prototype.custom = function () {
  return Math.random()
}

a.listen(function (data) {
  console.log('.', data.message)
  if (Math.random()>0.9) a.shout('hello world! from '+a.id)
})

setInterval(function () {
  bus.emit('message', {
  	message: Math.random(),
  	sender: 'environment'
  })
  console.log('..', a.custom())
}, 120)

bus.on('message', console.log)

topics

  • actors
  • multi agent systems

installation

npm i agent-prototype

Readme

Keywords

Package Sidebar

Install

npm i agent-prototype

Weekly Downloads

9

Version

2.0.6

License

MIT

Unpacked Size

4.96 kB

Total Files

5

Last publish

Collaborators

  • m-onz