Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Library for working with autonomous agent events

License

Notifications You must be signed in to change notification settings

byteball/aa-hooks

Folders and files

NameName
Last commit message
Last commit date

Latest commit

History

28 Commits

Repository files navigation

AA hooks

Hook list

  • aaAddressIs
  • triggerAaAddressIs
  • triggerUnitIs
  • baseAaIs
  • responseContainsKey
  • responseKeyIs
  • responseKeyLessThan
  • responseKeyMoreThan
  • triggerDataExists
  • triggerDataContainsKey
  • triggerDataKeyIs
  • triggerDataKeyLessThan
  • triggerDataKeyMoreThan
  • responseOutputsAmountLessThan
  • responseOutputsAmountMoreThan
  • responseOutputsAmountIs
  • sentAmountLessThan
  • sentAmountMoreThan
  • sentAmountIs
  • isSuccess
  • isBounced
  • customFilter

Examples

const { Hooks } = require("aa-hooks");
// create net of hooks
const hooks = new Hooks(["O6H6ZIFI57X3PLTYHOCVYPP5A553CYFQ"], {
 newEventsOnly: false, // default: false
 parallelProcessing: false // default: false
});
const regSymbolHandler = async (triggerUnit, responseObj) => {
 const symbol = triggerUnit.messages.find((m => m.app === 'data'))?.payload?.symbol;
 console.error("Reg new symbol: ", symbol);
 console.error("Response unit: ", responseObj.response_unit);
 await hooks.addWatchedAddress("..."); // watch new agent
}
hooks.register(regSymbolHandler)
 .isSuccess()
 .triggerDataContainsKey("symbol")
 .triggerDataContainsKey("asset")
 .triggerDataContainsKey("drawer")
 .not.triggerDataContainsKey("decimals")
 ...
 
// custom filter
hooks.register(regSymbolHandler)
 .isSuccess()
 .customFilter(async (responseObj, meta) => {
 const { payload, trigger_unit } = meta;
 // this is a filter function
 // always returns boolean value
 }, ["payload", "trigger_unit"])
 .triggerDataContainsKey("symbol");
Example triggerUnit
{
 "version": "3.0t",
 "alt": "2",
 "messages": [
 	{
 		"app": "data",
 		"payload_location": "inline",
 		"payload": {
 			"asset": "tZgXWTAv+1v1Ow4pMEVFFNlZAobGxMm2kIcr2dVR68c=",
 			"symbol": "ETH3",
 			"decimals": 8,
 			"description": "ETH on Obyte"
 		},
 		"payload_hash": "SLL9ew+vIImeuk88nh78xav/kNsp5DgvZU/JwW8g+9w="
 	},
 	{
 		"app": "payment",
 		"payload_location": "inline",
 		"payload_hash": "aEoZ8aNjru503wcW8D2FtfEVlJ0vI8H138afFegz5kI=",
 		"payload": {
 			"inputs": [
 				{
 					"unit": "EgJcb2OejlGnCceBGy/ToQMl4AGJpcMfnvzqLA7le+k=",
 					"message_index": 0,
 					"output_index": 1
 				}
 			],
 			"outputs": [
 				{
 					"address": "O6H6ZIFI57X3PLTYHOCVYPP5A553CYFQ",
 					"amount": 100000000
 				},
 				{
 					"address": "TNM2YRTJOANVGXMCFOH2FBVC3KYHZ4O6",
 					"amount": 999999047
 				}
 			]
 		}
 	}
 ],
 "authors": [
 	{
 		"address": "TNM2YRTJOANVGXMCFOH2FBVC3KYHZ4O6",
 		"authentifiers": {
 			"r": "eypr8bDqB5GGj+yVZgGJajMtUfrI6KxFBFh+olGG6XF8EaBtSsss4sryd45oBU7TZB1L9QWZRJeHKWytoIPQRQ=="
 		}
 		}
 ],
 "parent_units": [
 	"v+Yp106wJ03H5B/iUET6qIL4ZA/urwckH9y2iaRdnN4="
 ],
 "last_ball": "iaI+7i0vUjvxjj5Qyhpv8vcYi8eJE78J5KGRd7ppTSc=",
 "last_ball_unit": "Mf1h7ObKs1unBiKCcnluHZjKa6qO+ODdDMMh/zS+wz0=",
 "timestamp": 1624754674,
 "witness_list_unit": "TvqutGPz3T4Cs6oiChxFlclY92M2MvCvfXR5/FETato=",
 "headers_commission": 452,
 "payload_commission": 501,
 "unit": "o+Xe1O4MfEBz2/3UOPTgc+5PNnpdhEPhhho52Iyf1HM=",
 "main_chain_index": 2045972
}
Example responseObj
{
 "mci": 2045972,
 "trigger_address": "TNM2YRTJOANVGXMCFOH2FBVC3KYHZ4O6",
 "aa_address": "O6H6ZIFI57X3PLTYHOCVYPP5A553CYFQ",
 "trigger_unit": "o+Xe1O4MfEBz2/3UOPTgc+5PNnpdhEPhhho52Iyf1HM=",
 "bounced": 0,
 "response_unit": "qYfdrDF0yFtaXv3iM1r0SBOruHAdp4A1rDhpJwXcC1U=",
 "response": {
 	"responseVars": {
 		"ETH3": "tZgXWTAv+1v1Ow4pMEVFFNlZAobGxMm2kIcr2dVR68c=",
 		"tZgXWTAv+1v1Ow4pMEVFFNlZAobGxMm2kIcr2dVR68c=": "ETH3",
 		"TNM2YRTJOANVGXMCFOH2FBVC3KYHZ4O6_0_ETH3_tZgXWTAv+1v1Ow4pMEVFFNlZAobGxMm2kIcr2dVR68c=": 100000000,
 		"message": "Your description is now the current"
 	}
 },
 "timestamp": 1624754674,
 "creation_date": "2021年06月27日 00:45:48",
 "objResponseUnit": {
 	"version": "3.0t",
 	"alt": "2",
 	"timestamp": 1624754674,
 	"messages": [
 		{
 			"app": "data",
 			"payload": {
 				"asset": "tZgXWTAv+1v1Ow4pMEVFFNlZAobGxMm2kIcr2dVR68c=",
 				"name": "ETH3",
 				"decimals": 8
 			},
 			"payload_location": "inline",
 			"payload_hash": "gRcVodd+gpMN/AMh0e7QsUhhYD2F04ppNBrMaCDUiKc="
 		},
 		{
 			"app": "payment",
 			"payload": {
 				"outputs": [
 					{
 						"address": "O6H6ZIFI57X3PLTYHOCVYPP5A553CYFQ",
 						"amount": 99999227
 					}
 				],
 				"inputs": [
 					{
 						"unit": "FF7QEM1urqVa3nsbyPga6z6duE3gZK2nU3yG5x7Nkw8=",
 						"message_index": 1,
 						"output_index": 0
 					}
 				]
 			},
 			"payload_location": "inline",
 			"payload_hash": "6ZJLUc4CleXBDL8E38gUXTsG7oPpebMvCM0PZ0DinWk="
 		}
 	],
 	"authors": [
 		{
 			"address": "O6H6ZIFI57X3PLTYHOCVYPP5A553CYFQ"
 		}
 	],
 	"last_ball_unit": "Mf1h7ObKs1unBiKCcnluHZjKa6qO+ODdDMMh/zS+wz0=",
 	"last_ball": "iaI+7i0vUjvxjj5Qyhpv8vcYi8eJE78J5KGRd7ppTSc=",
 	"witness_list_unit": "TvqutGPz3T4Cs6oiChxFlclY92M2MvCvfXR5/FETato=",
 	"parent_units": [
 		"o+Xe1O4MfEBz2/3UOPTgc+5PNnpdhEPhhho52Iyf1HM="
 	],
 	"headers_commission": 350,
 	"payload_commission": 423,
 	"unit": "qYfdrDF0yFtaXv3iM1r0SBOruHAdp4A1rDhpJwXcC1U=",
 	"main_chain_index": 2046004
 }
}

Configuring

The default settings are in the library's conf.js, they can be overridden in your project root's conf.js, then in conf.json in the app data folder. The app data folder is:

  • macOS: ~/Library/Application Support/<appname>
  • Linux: ~/.config/<appname>
  • Windows: %LOCALAPPDATA%\<appname>

<appname> is name in your package.json.

Donations

To support our work, donate through kivach.org.

Kivach

About

Library for working with autonomous agent events

Resources

License

Stars

Watchers

Forks

AltStyle によって変換されたページ (->オリジナル) /