npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2025 – Pkg Stats / Ryan Hefner

@totemorg/agent

v1.14.0

Published

Totem agent

Downloads

26

Readme

AGENT

Provides methods to attach agents, to regulate jobs, and to fetch data.

Install

npm install @totemorg/agent	
npm update

Start

npm run start 					# Start/unit-test

Manage

npm run verminor				# Roll minor version
npm run vermajor				# Roll major version
npm run redoc					# Regen documentation
npm run pubminor				# republish as minor version
npm run pubmajor				# republish as major version

Usage

Acquire and optionally configure AGENT as follows:

import { $ } from "@totemorg/agent");

See Program Reference for usage details.

Program Reference

agent

Attach agents to endpoints. Regulate job workflows. Fetch data, file, graph, and json stores. This module documented IAW jsdoc.

From a remote agent node (a @totemorg/agent-deprived node), get/revise the agent registration template, or get/revise a agent service template from your local @totemorg/totem to register agents with the agent cloud.

From a native agent nodes (a @totemorg/agent-ready node), agents directly attach themselves to the agent cloud using the agent attach template.

Requires: module:http, module:https, module:os, module:vm, module:enums

agent.attachAgents(opts, agents, cb) ⇒

Attach agents to the agent cloud, where each agent(req,res) specifies its endpoint as follows:

NAME: agent                     // handle notebook/data requests
"/AREA": agent                  // handle file requests
".TYPE": agent                  // handle conversion requests 
"/": agent 	                    // default handler for file requests 
".": agent	                    // default handler for type conversions
NAME_MACHINE: agent             // handle requests via a MACHINE = py|cv|m|jx|db| ... 
_IGNORE: agent                  // ignored
"#EVENT": agent                 // handle notebook EVENT = charge|run requests
GET|PUT|POST|DELETE: agent      // handle CRUD data requests 

The supplied agents hash is automatically extended with "/json", "/graph", and "/file" reader agents.

When a request arrives to a agent server , attachAgents first

  • attempts to resolve the request to the master agent, then (if SQL-equipped)
  • attempts to resolve the request to a remote agent, then
  • attempts to resolve the request to a notebook agent, then
  • defaults to a CRUD agent based on the request type.

The following options opts can be provided when attaching agents:

  • cores number of servers (workers) attached to the agents.

  • port number that servers listen on.

  • CORS flag to support Cross-Origin-Scripting.

  • multipart flag to permit multipart files in request bodies.

  • never = file cacheing exemption hash { AREA: 1, PATH: 1, ... }.

  • mimes mime hash sets the mime header for requested TYPE.

  • https options hash when creating a HTTPS server.

  • map = area remapping hash {AREA: "/MappedPath", ...}.

  • access(req) method to validate client request req.

  • proxy(cert,headers) method to adjust cert from http headers.

  • init(server,agents) method to initialize the agent server after listener attached.

  • busy() method to block DOS attacks. Machines* require additional modules:

  • py,cv,m requires @totemorg/agent

  • jx requires @totemorg/man

  • db requires @totemorg/enums

to support installed python, opencv, matlab, mathjx, mysql db, and neo4j db.

Each agent(req,res) is provided a res response method accepting a:

string
object
array
error
function

and a req request containing:

cookie: "...."		// client cookie string
agent: "..."		// client browser info
ipAddress: "..."	// client ip address
referer: "http://site"		// url during a cross-site request
method: "GET|PUT|POST|DELETE" 		// http request method
now: date			// date stamp when request started
post: "..."			// raw body text
url	: "/query"		// requested url path
reqSocket: socket	// socket to retrieve client cert, post etc
resSocket: socket	// method to create socket to accept response
cert: {...} 		// full client cert

path: "/[area/...]name.type"	// full node path
area: "name"		// file area being requested
table: "name"		// name of dataset/table being requested
type: "type" 		// type descriptor 

query: {...} 		// raw keys from url
where: {...} 		// sql-ized query keys from url
body: {...}			// body keys from request 
flags: {...} 		// flag keys from url
index: {...}		// sql-ized index keys from url

To attach your nodejs-ready machine to the agent cloud:

curl "http://totem/attach" | node [- ?|option=value|list|file.js] 

where option overrides the default port,cores,agents,etc.

Kind: static method of agent
Returns: macs Context of machines required by the agents

| Param | Type | Description | | --- | --- | --- | | opts | Object | Service options | | agents | function | Object | Hash of (req,res)-agents | | cb | function | Optional callback(agent) to process resolved agent |

attachAgents~getGraph(req, res)

Graph reader agent returns neo4j graph at the requested path = /AGENT/GRAPH?QUERY

Kind: inner method of attachAgents

| Param | Type | Description | | --- | --- | --- | | req | Object | totem session request | | res | function | totem session response |

attachAgents~getJson(req, res)

Json reader Agent returns json store at the requested path = /AGENT/TABLE/STORE$EXPRESSION.

Kind: inner method of attachAgents

| Param | Type | Description | | --- | --- | --- | | req | Object | totem session request | | res | function | totem session response |

attachAgents~getFile(req, res)

File reader agent returns file at the requested path = /AREA/FILE

Kind: inner method of attachAgents

| Param | Type | Description | | --- | --- | --- | | req | Object | totem session request | | res | function | totem session response |

attachAgents~getAgent(spec, agents)

Return agent from the agents hash with the given {type,area,method,table} spec.

Kind: inner method of attachAgents

| Param | Type | Description | | --- | --- | --- | | spec | Object | {type,area,method,table} to derive agent | | agents | Object | hash of agents |

agent.regulateJob(spec, ctx, cb)

Regulate callback to cb(spec,ctx) on events defined by an event spec:

spec = "STEP / ONSTEPS / OFFSTEPS / START / END" || [spec, ...]

where each subspec is of the form

subspec = NUMBER | NUMBER [s|m|h|d|y] | dd-mm-yr

The context ctx can define:

ctx.queue = "task queue" to share job status
ctx.batch = NUMBER of records returned in callback cb(t,recs)
ctx.client = "client name" to chage this request
ctx.source = "sql table" record source
ctx.fields = "field, ..." source fields
ctx.priority = NUMBER of seconds to monitor signoff-status if required by client

Kind: static method of agent

| Param | Type | Description | | --- | --- | --- | | spec | String | Job regulation spec "STEP / ONSTEPS / OFFSTEPS / START / END" || [spec, ...] | | ctx | Object | Job context | | cb | function | Job callback(t,ctx) |

agent.fetchData(ref, data, ack)

Fetch data from a specified ref url

PROTOCOL://HOST/FILE ? QUERY 

where PROTOCOL is

  • http(s) = http (https) protocol
  • curl(s) = curl (curls uses certs/fetch.pfx to authenticate)
  • wget(s) = wget (wgets uses certs/fetch.pfx to authenticate)
  • mask = http access via rotated proxies
  • lexnex = Lexis-Nexis oauth access to documents
  • mysql = mysql database
  • neo4j = neo4j database
  • csv = csv file
  • stream = stream file
  • json = json file
  • jpg = image file
  • list = list file
  • null = null file
  • file = file/folder
  • SITEREF = shortcut name

File paths may also contain wild-* cards. The callback name (GET || PUT || POST || DELETE || JSON) determines the request method. Optional QUERY keys:

batch 	= NUMBER of records to fetch 
offset	= NUMBER of records to offset fetch
select	="FIELD, ..." to fetch
keys	= [...] header keys in csv source
comma	= "delim" for csv source
newline = "delim" for csv source

Kind: static method of agent

| Param | Type | Description | | --- | --- | --- | | ref | String | source URL | | data | function | object | or ack callback(results||null) | | ack | function | callback(results||null) |

Example

fetchData( ref, text => { // get request
})

Example

fetchData( ref, function json(ctx) {    // get request with json ctx
})

Example

fetchData( ref, [ ... ], function post(stat) { 	// post request with data hash list
})

Example

fetchData( ref, { ... }, function put(stat) { 	// put request with data hash
})

Example

fetchData( ref, null, function deete(stat) {	// delete request 
})

agent.LexisNexis()

Start N Lexis-Nexis scrapes residing at the endpoint endpt + random counter when R is non-zero.

Kind: static method of agent

agent~quickLinks

Fetch quick SITEREFs

    https://www.programmableweb.com/search/military

    ACLED
    https://www.programmableweb.com/api/acled-rest-api-v25
    ACCT [email protected] / ACLEDsnivel1
    API https://developer.acleddata.com/rehd/cms/views/acled_api/documents/API-User-Guide.pdf
    SITE https://developer.acleddata.com/
    The Armed Conflict Location & Event Data Project (ACLED) is a real-time data and and crisis analysis and mapping project on political violence and protest across the world. ACLED's mission is to produce dis-aggregated, locally informed data and analysis globally in real time. An ACLED REST API enables users to retrieve data about actors, actor type, country, region and get data in JSON, XML, CSV or text. Filter data by date, area, pagination, etc.

    Animetrics FIMS
    https://www.programmableweb.com/api/animetrics-fims-cloud-rest-api
    http://animetrics.com/fims-cloud
    Aimed at the law enforcement, security and military intelligence industries, Animetrics' FaceR Identity Management Solution (FIMS) allows organizations to bring mobile security and video surveillance facial-biometrics applications into the field for use in real time. FIMS Cloud is used to centralize and access a user's cloud based photographic stores using facial recognition. FIMS Cloud organizes, searches and centralizes access to photographic stores using 1:many web service based verification engine. Access to the service is provided via a RESTful API. Public documentation is not available.

    Navlost WXT Weather Tesseract
    https://www.programmableweb.com/api/navlost-wxt-weather-tesseract
    The WXT Weather Service provides atmospheric weather information through a REST architecture, HTTP requests, and JSON formats. It integrates METAR/TAF information, sun, and moon calculations, targeting aviation and energy applications. Advanced features include: -Upper atmosphere information (e.g., research, aviation, rocketry, military) -Automated, push-type notification of arbitrary weather-related events (alert service) -Calculation of arbitrary results derived from weather forecast information via a server-side scripting language. The default response type is application/json, although other formats may be supported. At the present time, there is partial support for comma-separated value (CSV) responses.
    https://wxt.navlost.eu/api/v1/
    https://wxt.navlost.eu/doc/api/

Kind: inner constant of agent

agent~maxRetry

Fetch wget/curl maxRetry

Kind: inner constant of agent

agent~certs

Fetch certs

Kind: inner constant of agent

Contacting, Contributing, Following

Feel free to


© 2012 ACMESDS