These ASCII wiring diagrams reflect the WAgent examples in examples/.
Each arrow implies a typed connection with integrity constraints.
[user] --text(U)--> [membrane] --text(U)--> [chaperone] --json(V)--> [executor] --toolcall(V)--> [sink]
| ^
| |
+--toolcall(V)--> [verifier] --approval(T)
[user] --text(U)--> [membrane] --text(U)--> [validator] --text(V)--> [parser] --json(V)--> [planner]
|
v
[serializer] --text(V)--> [policy] --approval(T)
|
[validator] --text(V)--> [attestor] --text(T)--> [operator_console] v
[planner] --json(V)--> [tool_builder] --toolcall(V)--------------------------------------------> [sink]
[nutrient_sensor] --json(U)--> [nutrient_validator] --json(V)---+
[machinery_sensor] --json(U)--> [machinery_validator] --json(V)--+--> [budget_aggregator] --json(T)--> [allocator]
[energy_sensor] --json(U)--> [energy_validator] --json(V)---+ |
+--> [policy] --approval(T)
[allocator] --growth(V)--> [growth_executor] --toolcall(V)--> [growth_sink]
[allocator] --maint(V)--> [maintenance_executor] --toolcall(V)--> [maintenance_sink]
[allocator] --spec(V)--> [specialization_executor] --toolcall(V)--> [specialization_sink]
[policy] --approval(T)--> [growth_sink]
[policy] --approval(T)--> [maintenance_sink]
[policy] --approval(T)--> [specialization_sink]
[user] --text(U)--> [sanitizer] --text(V)--> [voter_a] --vote(V)--+
|--> [voter_b] --vote(V)----+--> [quorum] --approval(T)--> [sink]
|--> [voter_c] --vote(V)----+
|
+--> [tool_builder] --toolcall(V)------------------------> [sink]
[user] --text(U)--> [validator] --text(V)--> [planner] --plan(V)--+
+--> [tool_builder] --toolcall(V)--> [sink]
+--> [policy] --approval(T)--------> [sink]
Ingress:
[user] --text(U)--> [membrane] --text(U)--> [sanitizer] --text(V)
Execution:
[planner] --plan(V)--> [tool_builder] --toolcall(V)--> [sink]
[planner] --plan(V)--> [policy] --approval(T)--------> [sink]
Composition:
[ingress.sanitizer] --text(V)--> [exec.planner]
Ingress:
[user] --text(U)--> [membrane] --text(U)--> [sanitizer] --text(V)
Execution:
[planner] --plan(V)--> [tool_builder_write] --toolcall(V)--> [write_sink]
[planner] --plan(V)--> [tool_builder_net] --toolcall(V)--> [net_sink]
[planner] --plan(V)--> [policy] --approval(T)----------------> [write_sink]
[planner] --plan(V)--> [policy] --approval(T)----------------> [net_sink]
Composition:
[ingress.sanitizer] --text(V)--> [exec.planner]
[user] --text(U)--> [validator] --text(V)--> [planner] --plan(V)--+
+--> [tool_builder] --toolcall(V)--> [sink]
+--> [policy] --approval(T)--------> [sink]
[user] --text(U)--> [validator] --text(V)--> [planner] --plan(V)--+
+--> [tool_builder] --toolcall(V)--> [sink]
+--> [policy] --approval(T)--------> [sink]
[user] --text(U)--> [membrane] --text(U)--> [sanitizer] --text(V)--> [prompt_assembler]
[sanitizer] --text(V)--> [context_retriever] --json(V)--> [prompt_assembler]
[genome_policy] --json(T)--> [prompt_assembler]
[tool_registry] --json(T)--> [prompt_assembler]
[prompt_assembler] --text(V)--> [nucleus_llm] --json(U)--> [plan_validator] --json(V)--+
+--> [policy_gate] --approval(T)--> [executor]
+--> [tool_builder] --toolcall(V)--> [executor]
[nucleus_llm] --text(U)--> [response_sanitizer] --text(V)--> [response_merger] <--json(T)-- [executor]
[executor] --json(T)--> [memory_writer] --json(T)--> [episodic_store]
[response_merger] --text(V)--> [outbox]
[user] --text(U)--> [membrane] --text(U)--> [sanitizer] --text(V)--> [prompt_assembler] --text(V)--> [nucleus_llm]
[sanitizer] --text(V)--> [context_retriever] --json(V)--> [prompt_assembler]
[genome_policy] --json(T)--> [prompt_assembler]
[tool_registry] --json(T)--> [prompt_assembler]
[nucleus_llm] --json(U)--> [plan_validator] --json(V)--+--> [policy_gate] --approval(T)--> [executor]
+--> [tool_builder] --toolcall(V)--> [executor]
[nucleus_llm] --text(U)--> [response_sanitizer] --text(V)--> [response_merger] <--json(T)-- [executor]
[response_merger] --text(V)--> [outbox]
[user] --text(U)--> [membrane] --text(U)--> [sanitizer] --text(V)
[sanitizer] --text(V)--> [budget_allocator]
[sanitizer] --text(V)--> [prompt_fast]
[sanitizer] --text(V)--> [prompt_deep]
[sanitizer] --text(V)--> [prompt_safety]
[resource_monitor] --json(T)--> [budget_allocator]
[budget_allocator] --json(T)--> [prompt_fast] --text(V)--> [nucleus_fast] --json(U)--+
[budget_allocator] --json(T)--> [prompt_deep] --text(V)--> [nucleus_deep] --json(U)--+--> [plan_aggregator] --json(V)--> [policy_gate] --approval(T)--> [response_builder] --text(V)--> [outbox]
[budget_allocator] --json(T)--> [prompt_safety] --text(V)--> [nucleus_safety] --json(U)--+
[SharedMitochondria]
(ATP Pool)
|
+-------------------+-------------------+
| | |
consume(c) consume(c) consume(c)
| | |
v v v
[task] --task(U)--> [worker_1] --+ [worker_2] --+ [worker_3] --+
| | | | | |
result(V) | result(V) | result(V) |
| | | | | |
v v v v v v
[collector] <--------+--------+ [DEAD] (r<c)
|
candidates(V)
|
v
[verifier] <-- consume(c) -- [SharedMitochondria]
|
verdict(T)
|
v
[output]
Termination: solved | ischemia | swarm_collapse | verifier_death | entropy_limit
Legend: U = UNTRUSTED, V = VALIDATED, T = TRUSTED.