Supported composition
Build knowledge from completed agent work¶
Flow¶
From an installed repository checkout:
python -m examples.quickstarts.agent_knowledge
Mari consumes observable activity after the host runtime has executed it. A caller-supplied model labels the workflow and phases. Mari checks those labels against the event sequence, then validates any proposed memory mutation.
"""Turn completed tool activity into a validated, reviewable memory plan."""
from mari_kit.knowledge import (
MemoryDecision,
MemoryOperation,
plan_memory_mutations,
)
from mari_kit.trajectories import parse_trajectory_analysis
def run() -> dict[str, object]:
events = (
{"name": "search", "args": {"query": "refund policy"}, "ok": True},
{"name": "read_document", "args": {"document_id": "refunds"}, "ok": True},
{"name": "approve_answer", "args": {"answer_id": "answer-7"}, "ok": True},
)
analysis = parse_trajectory_analysis(
events,
{
"workflow": "Find the current policy, inspect its source, and approve the answer.",
"activity": "Answer a policy question",
"category": "support",
"intent": "resolve_refund_question",
"rework": 0,
"phases": [
{
"name": "research",
"family": "discover",
"start": 0,
"end": 1,
"substate": "grounding",
},
{
"name": "review",
"family": "approve",
"start": 2,
"end": 2,
"substate": "complete",
},
],
},
)
candidates = {"procedure:refund-answer": analysis.grounded_workflow}
plan = plan_memory_mutations(
{},
candidates,
{
"procedure:refund-answer": MemoryDecision(
operation=MemoryOperation.ADD,
reason="successful reviewed run",
)
},
)
return {
"analysis": analysis,
"proposal": plan.writes[0],
"target_id": plan.writes[0].target_id,
}
if __name__ == "__main__":
print(run())
The returned mutation plan contains proposed writes. The host can send those proposals through evidence checks, human review, policy evaluation, and its own storage transaction. The host retains runtime and commit authority.
Input |
Mari operation |
Output |
|---|---|---|
Completed tool events |
|
Validated workflow, intent, phases, and rework |
Existing knowledge and candidates |
|
Add, update, delete, and no-op proposals |
Approved plan |
Host transaction |
Application-owned stored knowledge |
Search observed knowledge¶
Use conversation knowledge when the goal is retrieving lessons and decisions from messages or visible tool observations. Use trajectory mining for process structure and procedural learning for reviewable procedure candidates. These paths retain distinct evidence and promotion gates.