UNPKG

mahler

Version:

A automated task composer and HTN based planner for building autonomous system agents

472 lines (334 loc) • 13 kB
# Changelog All notable changes to this project will be documented in this file automatically by Versionist. DO NOT EDIT THIS FILE MANUALLY! This project adheres to [Semantic Versioning](http://semver.org/). # v4.1.5 ## (2025-03-19) * Update dependency tar-stream to v3.1.7 [balena-renovate[bot]] # v4.1.4 ## (2025-03-19) * Update dependency @types/tar-stream to v2.2.3 [balena-renovate[bot]] # v4.1.3 ## (2025-02-10) * Move noUncheckedIndexAccess to release tsconfig [Felipe Lalanne] * Keep comments on TS builds [Felipe Lalanne] # v4.1.2 ## (2024-12-09) * Calculate task id base on user definition [Felipe Lalanne] * Fix bug with generated delete actions [Felipe Lalanne] # v4.1.1 ## (2024-09-19) * Use noUncheckedIndexedAccess as TS configuration [Felipe Lalanne] # v4.1.0 ## (2024-08-05) * Improve Task contructor typings [Felipe Lalanne] * Improve README [Felipe Lalanne] # v4.0.0 ## (2024-07-25) * Add agent option to abort planning with timeout [Felipe Lalanne] * Improve Pointer type to be more precise [Felipe Lalanne] * Remove `logger` property of AgentOpts [Felipe Lalanne] * Move state rollback to Agent runtime [Felipe Lalanne] * Modify runtime to report changes [Felipe Lalanne] * Simplify Sensor interface. [Felipe Lalanne] * Refactor operation types [Felipe Lalanne] # v3.5.1 ## (2024-05-10) * Fix import paths using `lib/*` [Felipe Lalanne] # v3.5.0 ## (2024-05-10) * Update sensor subscription at runtime init [Felipe Lalanne] * Add lens utilities [Felipe Lalanne] * Allow using observables for sensors [Felipe Lalanne] * Add `filter` operation to Observable [Felipe Lalanne] * Allow lens variables for Sensor constructor [Felipe Lalanne] # v3.4.1 ## (2024-04-30) * Use parallel plan representation when debugging [Felipe Lalanne] * Settle parallel branches before re-planning [Felipe Lalanne] # v3.4.0 ## (2024-04-28) * Expose `reduce` function on the DAG module [Felipe Lalanne] * Refactor planner node module to use DAG types [Felipe Lalanne] * Use DAG operations in agent runtime [Felipe Lalanne] * Use DAG.reverse in planner [Felipe Lalanne] * Add mapReduce and reverse methods to DAG [Felipe Lalanne] * Generate real DAGs using the PlanBuilder interface [Felipe Lalanne] * Use dag module in planner and testing modules [Felipe Lalanne] * Create generic DAG interface and methods [Felipe Lalanne] # v3.3.0 ## (2024-04-10) * Add test utility to run a task [Felipe Lalanne] # v3.2.1 ## (2024-04-10) * Fix UnorderedArray comparison failing for undefined [Felipe Lalanne] # v3.2.0 ## (2024-04-10) * Add support for 'strict' targets on the Agent interface [Felipe Lalanne] * Fix issue with ignore globs [Felipe Lalanne] # v3.1.1 ## (2024-04-04) * Update @balena/lint to v8 [Felipe Lalanne] # v3.1.0 ## (2024-01-10) * Create UnorderedArray type [Felipe Lalanne] * Export deepEqual as part of the `utils` namespace [Felipe Lalanne] # v3.0.2 ## (2024-01-03) * Do not recurse into arrays when constructing Target [Felipe Lalanne] # v3.0.1 ## (2023-12-12) * Export Task constructor prop types [Felipe Lalanne] # v3.0.0 ## (2023-12-06) * Remove duplicate tasks when constructing Planner [Felipe Lalanne] * Clone target when grounding tasks [Felipe Lalanne] * Rename test `console` as `logger` [Felipe Lalanne] * Improve error messaging for failed plans on runtime [Felipe Lalanne] * Clone the current state before planning [Felipe Lalanne] * Do not catch applyPatch errors. [Felipe Lalanne] * Allow method recursion [Felipe Lalanne] * Refactor planner to allow errors to abort search [Felipe Lalanne] * Fix maxSearchDepth on Planner [Felipe Lalanne] * Fix mermaid diagramming on search failures [Felipe Lalanne] * Do not initialize objects for `create` actions [Felipe Lalanne] * Improve input types for task constructors [Felipe Lalanne] # v2.5.1 ## (2023-12-01) * Fix observe so new object assignments are also reported [Felipe Lalanne] # v2.5.0 ## (2023-11-29) * Improve types to avoid unnecessary type conversions [Felipe Lalanne] * Update mermaid tests [Felipe Lalanne] * Convert Path type into a branded type [Felipe Lalanne] # v2.4.1 ## (2023-11-25) * Return a copy of the state from agent runtime [Felipe Lalanne] # v2.4.0 ## (2023-11-24) * Allow ignoring certain paths in Target construtor [Felipe Lalanne] # v2.3.0 ## (2023-11-23) * Allow method actions to have empty effects [Felipe Lalanne] # v2.2.0 ## (2023-11-17) * Add `metadata` method to mermaid trace object [Felipe Lalanne] # v2.1.1 ## (2023-11-17) * Update default task descriptions [Felipe Lalanne] # v2.1.0 ## (2023-11-10) * Revert changes to state if action fails [Felipe Lalanne] # v2.0.0 ## (2023-11-10) * Make Agent maxRetries count failed plan runs [Felipe Lalanne] # v1.2.0 ## (2023-11-09) * Improve logging messages [Felipe Lalanne] * Add `diff` function to distance module [Felipe Lalanne] * Add 'source' property to UpdateOperation [Felipe Lalanne] * Rename Operation.value to Operation.target [Felipe Lalanne] # v1.1.1 ## (2023-11-08) * Propagate state changes in parallel tasks [Felipe Lalanne] # v1.1.0 ## (2023-11-06) * Add Target constructor [Felipe Lalanne] # v1.0.1 ## (2023-11-06) * Export the Observable interface [Felipe Lalanne] # v1.0.0 ## (2023-10-31) * Improve type documentation [Felipe Lalanne] * Update README [Felipe Lalanne] * Refactor View interface out of the lens module [Felipe Lalanne] * Update test:compose script [Felipe Lalanne] * Add maxSearchDepth planner option [Felipe Lalanne] * Add Domain interface. [Felipe Lalanne] * Fix agent heater tests leaking into each other [Felipe Lalanne] * Improve Observable implementation [Felipe Lalanne] * Fix mermaid tests for the new API [Felipe Lalanne] * Fix planning utils tests [Felipe Lalanne] * Improve pointer interface [Felipe Lalanne] * Fix observable tests [Felipe Lalanne] * Fix orchestrator tests [Felipe Lalanne] * Rename `Diff` interface to `Distance` [Felipe Lalanne] * Rename Target.DELETED to UNDEFINED [Felipe Lalanne] * Fix Task tests [Felipe Lalanne] * Fix composer tests [Felipe Lalanne] * Use View instead of Ref for action and effect functions [Felipe Lalanne] * Fix bug in Mermaid diagramming [Felipe Lalanne] * Add zip test utility [Felipe Lalanne] * Add default conditions for `create` and `delete` tasks [Felipe Lalanne] * Add method `expansion` property [Felipe Lalanne] * Update README examples with new API [Felipe Lalanne] * Refactor Task API to use references and lenses [Felipe Lalanne] * Create Ref type [Felipe Lalanne] * Rename `Agent.of` to `Agent.from` [Felipe Lalanne] * Rename `Planner.of` to `Planner.from` [Felipe Lalanne] * Design v1 API [Felipe Lalanne] # v0.21.2 ## (2023-10-04) * Fix bug when mapping effects [Felipe Lalanne] # v0.21.1 ## (2023-10-03) * Fix bug with loop detection. [Felipe Lalanne] # v0.21.0 ## (2023-10-03) * Make task action default to the value of the effect [Felipe Lalanne] # v0.20.0 ## (2023-09-30) * Rename mermaid build method to `render` [Felipe Lalanne] * Remove title as a mermaid graph argument [Felipe Lalanne] * Fix bug when diagraming nested method calls [Felipe Lalanne] # v0.19.0 ## (2023-09-30) * Fix Node ids in Mermaid test suite [Felipe Lalanne] * Modify Action definition to return an Effect [Felipe Lalanne] * Create the `Effect` type [Felipe Lalanne] * Improve Observable API. [Felipe Lalanne] * Remove .eslintrc.json [Felipe Lalanne] # v0.18.2 ## (2023-09-15) * Add local prettierrc/eslintrc for editor compat [Felipe Lalanne] # v0.18.1 ## (2023-09-11) * Update to @balena/lint v7 [Felipe Lalanne] # v0.18.0 ## (2023-09-06) * Remove parallel tasks [Felipe Lalanne] * Improve testing tools to work with parallel plans [Felipe Lalanne] * Fix wrong assumption about action nodes in mermaid [Felipe Lalanne] * Update diagramming feature to work with parallel tasks [Felipe Lalanne] * Implement planning for parallel tasks [Felipe Lalanne] * Convert Plan from a Linked List to a DAG [Felipe Lalanne] * Refactor @mahler/testing sub-module [Felipe Lalanne] * Add Parallel task support. [Felipe Lalanne] # v0.17.2 ## (2023-08-11) * Fix bug with Context type inference [Felipe Lalanne] # v0.17.1 ## (2023-08-10) * Move the method expansion check to findPlan [Felipe Lalanne] # v0.17.0 ## (2023-08-10) * Ensure task ids are deterministic [Felipe Lalanne] # v0.16.2 ## (2023-08-10) * Add test utility to generate mermaid graph [Felipe Lalanne] * Simplify findPlan arguments [Felipe Lalanne] # v0.16.1 ## (2023-08-09) * Use only relevant state for Node id generation [Felipe Lalanne] # v0.16.0 ## (2023-08-09) * Add instruction serialization with toJSON [Felipe Lalanne] * Formalize the plan trace interface [Felipe Lalanne] # v0.15.0 ## (2023-08-09) * Expose planner API via mahler/planner [Felipe Lalanne] * Move Plan types to planner/plan.ts [Felipe Lalanne] # v0.14.0 ## (2023-07-17) * Do not generate hash for Instruction id [Felipe Lalanne] * Use a linked list to represent a Plan [Felipe Lalanne] * Rename tsconfig paths for more clarity [Felipe Lalanne] * Create testing namespace to put test related utils [Felipe Lalanne] * Add `path` and `target` to instructions [Felipe Lalanne] # v0.13.2 ## (2023-07-10) * Improve planner loop detection [Felipe Lalanne] # v0.13.1 ## (2023-07-08) * Allow action tasks to return an Observable [Felipe Lalanne] # v0.13.0 ## (2023-07-08) * Remove RedirectTask [Felipe Lalanne] * Remove `id` from valid task creation arguments [Felipe Lalanne] # v0.12.0 ## (2023-07-07) * Remove the need for async `seek()` method in Agent [Felipe Lalanne] * Make Agent into an Observable [Felipe Lalanne] * Refactor agent runtime [Felipe Lalanne] * Simplify the Agent interface [Felipe Lalanne] * Simplify observable implementation [Felipe Lalanne] * Move `equals` json helper outside of diff [Felipe Lalanne] * Remove the `wait` function from observable [Felipe Lalanne] * Remove callable syntax from Observable [Felipe Lalanne] # v0.11.0 ## (2023-06-23) * Improve 'Initializer' helper task [Felipe Lalanne] * Create NoOp helper [Felipe Lalanne] * Allow returning single task from method [Felipe Lalanne] * Improve default description for tasks [Felipe Lalanne] * Add `path` property to Context type [Felipe Lalanne] * Refactor task module [Felipe Lalanne] * Move task.ts to task/index.ts [Felipe Lalanne] # v0.10.0 ## (2023-06-22) * Add orchestrator test using redirect task [Felipe Lalanne] * Add support for redirect tasks [Felipe Lalanne] # v0.9.3 ## (2023-06-22) * Refactor planner module [Felipe Lalanne] * Move lib/planner.ts to lib/planner/index.ts [Felipe Lalanne] * Remove extractPath utility function from planner [Felipe Lalanne] # v0.9.2 ## (2023-06-19) * Add service migration task to orchestrator example [Felipe Lalanne] # v0.9.1 ## (2023-06-19) * Add usage information to README files [Felipe Lalanne] # v0.9.0 ## (2023-06-19) * Add some documentation for examples under tests/ [Felipe Lalanne] * Add release update to agent tests [Felipe Lalanne] * Make Task context aware of the operation [Felipe Lalanne] * Add `del()` function to context [Felipe Lalanne] * Add orchestrator example/integration tests [Felipe Lalanne] * Create utility tasks for operating on state [Felipe Lalanne] * Improve diff calculation to return all possible ops [Felipe Lalanne] * Improve Action/Method interfaces to be callable [Felipe Lalanne] * Improve task types for testing [Felipe Lalanne] * Split composer tests into multiple files [Felipe Lalanne] # v0.8.1 ## (2023-06-09) * Remove tests from build [Felipe Lalanne] # v0.8.0 ## (2023-05-10) * Refactor Diff interface [Felipe Lalanne] # v0.7.0 ## (2023-05-09) * Refactor agent, split into multiple files [Felipe Lalanne] # v0.6.0 ## (2023-05-05) * Make task description default to the id [Felipe Lalanne] * Simplify task interface and remove unused code [Felipe Lalanne] # v0.5.0 ## (2023-05-05) * Allow providing a planner instance to Agent init [Felipe Lalanne] # v0.4.0 ## (2023-05-05) * Improve plan search trace logic [Felipe Lalanne] * Refactor findPlan function of planne for readability [Felipe Lalanne] * Refactor planner to return a result object [Felipe Lalanne] * Rename Planner.plan to Planner.find [Felipe Lalanne] * Make debug module a dev dependency [Felipe Lalanne] * Simplify PlanNotFound error [Felipe Lalanne] * Allow passing a debugging function to the planner [Felipe Lalanne] # v0.3.0 ## (2023-04-29) * Change '*' to 'update' as default task operation [Felipe Lalanne] # v0.2.0 ## (2023-04-29) * Add updating tasks to container composer tests [Felipe Lalanne] * Add debugging to planning function [Felipe Lalanne] * Calculate the target before planning [Felipe Lalanne] * Split service tasks into install and start [Felipe Lalanne] * Rename docker-compose test to container-compose [Felipe Lalanne] # v0.1.0 ## (2023-04-24) * Add service to docker-compose to enable flowzone testing [Felipe Lalanne] * Move default logger to its own module [Felipe Lalanne] * Setup flowzone [Felipe Lalanne] * Update package.json with repository metadata [Felipe Lalanne]