2.0.6 • Published 5 years ago

agent-prototype v2.0.6

Weekly downloads
12
License
MIT
Repository
github
Last release
5 years ago

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
2.0.6

5 years ago

2.0.5

5 years ago

2.0.4

5 years ago

2.0.3

5 years ago

2.0.2

5 years ago

2.0.1

5 years ago

2.0.0

5 years ago

1.0.1

5 years ago

1.0.0

5 years ago