{% extends "base.html" %}
{% block title %}Workflow trajectories - Memorizz{% endblock %}
{% block body_attrs %} data-sidebar-scope="learning" data-sidebar-default="collapsed"{% endblock %}
{% block head %}{% endblock %}
{% block content %}
{% from '_ui.html' import page_header, empty_state, id_chip %}
{% from '_learning_tabs.html' import learning_tabs %}
{% set s = view.summary %}
{% set short_status = {'ready': 'Ready', 'failing': 'Failing', 'evidence': 'Needs evidence', 'promoted': 'Promoted'} %}
{% set status_pill = {'ready': 'pill--success', 'failing': 'pill--danger', 'evidence': '', 'promoted': 'pill--info'} %}
{% call page_header('Workflow trajectories', 'Tool runs grouped into trajectory classes, one tool path per agent. A class that meets all four promotion criteria can be distilled into a learned skill.', 'Continual learning', nav=learning_tabs('workflows')) %}
View learned skills
{% endcall %}
{% if view.agents %}
{% for agent in view.reports %}
{% set report = agent.report %}
Last promotion report
{% if report.promoted %}
| {{ cls.agent_label }} | {% for tool in cls.tools.split(' → ') %}{% if not loop.first %}{% endif %}{{ tool }}{% endfor %} | {{ short_status[cls.status] }} | {{ cls.executions }} | {{ cls.success_rate }} | {{ cls.distinct_queries }} | {{ cls.criteria_met }}/{{ cls.criteria_total }} {% for gate in cls.gates %}{% endfor %} | {{ cls.last_seen_ago }} |
|---|
{% if view.rows %}No trajectory classes match this filter.{% else %}No trajectory classes yet. Runs without recorded tool steps are not grouped.{% endif %}
| Agent | Classes | Runs | Ready | Promoted | Success | Newest run | Actions |
|---|---|---|---|---|---|---|---|
| {% if view.agents|length > 1 %}{% else %}{{ agent.label }}{% endif %} {% if agent.short and agent.label != agent.short %}{{ agent.short }}{% endif %} | {{ agent.classes }} | {{ agent.runs }} | {{ agent.ready }} | {{ agent.promoted }} | {{ agent.success_rate }} | {{ agent.newest_ago }} | {% if agent.can_act %} {% endif %} |