Skip to content

bang404/graph

v1.0.5MIT

Dependency graph execution through OpenAgent checkpoints.

OpenAgent Graph

The standard Agent Plugin package for dependency aware Graph execution. The package owns the graph schema, reducer, persistence, child conversations, parallel scheduling, prompts, recovery, MCP tools, and progress projection. OpenAgent supplies the same generic capability bridge available to every plugin: conversations, branches, Agent submission and wake, roles, events, cancellation, permissions, and ordinary checkpoint storage.

The package uses the portable Agent Plugins 1.0.0 format and is an ordinary package; the Runtime does not select or implement Graph behavior. The graph command is exposed as /graph through the generic package-id alias; /graph:graph remains the full namespaced route. mcp.json starts bin/graph-mcp.mjs, which persists Graph state under PLUGIN_DATA/graphs/ and wakes child Agents through agent.wake.

The slash command only supplies the planning/execution prompt. It does not write package state or publish an empty running projection. A Graph starts when the Agent successfully calls create_goal_graph; that tool persists the DAG and publishes its first projection before scheduling nodes. If a model returns only a plan without calling the tool, no run is created and an earlier branch projection remains intact. The bootstrap prompt requires same-turn creation and progress reads through the terminal outcome, but a prompt cannot guarantee that a model will call tools.

The package persists its complete display projection through the generic conversation.flow.set capability after each reducer advance; the graph files under PLUGIN_DATA remain authoritative. The plugin:graph:graph value in that projection is only the package's own flow identifier. Runtime does not register, inspect, or execute a Graph implementation based on that string.

State and recovery

Each parent conversation branch has one package-owned Graph record. Nodes are validated as a DAG, marked started before their child conversation is created, and reduced serially as child Agent turns finish. A node stores its child conversation, branch, checkpoint, status, and result. The package resumes running records when its MCP server starts, and cancellation propagates through the generic conversation cancellation bridge.

plugin-flow-updated is a transient display event. The Runtime carries the package's optional projection opaquely in checkpoints and never interprets node dependencies or Graph completion rules.

The parent and every recorded child branch display the same authoritative Graph projection. After every state transition, the package persists it to those exact branches before emitting their display events; a missing child does not prevent updates to the other branches. Historical checkpoints and unrelated child branches are not rewritten. On MCP restart, terminal records also republish their projection to repair older child snapshots without waking any Agent.

Only a child checkpoint with phase final_completed supplies a successful node result. An interrupted checkpoint may contain planning text or an approval request: the node remains running and its dependents wait until that same child branch resumes. Recovery retains interrupted or in-progress children instead of cancelling and replacing them. Failed or cancelled child turns fail the Graph; explicit Graph cancellation stops polling and cancels its children. New child conversations use their parent's workspace, even when another desktop conversation becomes active during scheduling.

Language support

The package declares English and Chinese in plugin.json. OpenAgent supplies the current application language to each MCP call and through locale.get for the slash command. Plugin metadata, the command label, validation feedback, and operational notices follow that language. Graph IDs, node IDs, status values, and user-authored task text keep their original values.

Development

Stable GitHub releases include an installable ZIP with plugin.json at the archive root. OpenAgent verifies the release asset's SHA-256 digest before offering an explicit update; installed Graph data is preserved during activation.

Validate it with the validator from an OpenAgent Plugin Kit checkout, pointing at this directory.

bun <plugin-kit>/scripts/validate-plugin.mjs .
bun test

License

MIT