{# Agent — one screen, six tabs (043 §7, phase 4 / WS-AF1). Derived from docs/design/040/web/agent*.html. The six-tab subnav is server-rendered; every pane below it is drawn client-side by webview/static/app/agent.js from the tenant-scoped Agent readers (/api/webgate/{doctor,capabilities,memory/search,flags,identity,preferences, ledger}, /pfp.json, /api/webgate/knowledge/kb). The tabs are panes on this one page, not six routes: agent.js reveals the pane whose `data-pane` matches the active tab and hides the rest, so /agent answers with the whole screen and the switch is client-side. Every word comes from webview/copy/en.py. No inline script on any 043 template (tests/unit/webview/test_no_new_inline_script.py): the words ride on #agent-copy's data attributes and agent.js reads them off `dataset`. ⚠️ The names carry an UNDERSCORE, not a hyphen: `dataset` camel-cases a hyphen away, and the JS keys the words by the copy name, which is snake_case. The four posture axes ride here as DATA (server-computed from build_posture_card), so a person reads one plain sentence per axis and the state it is in — never the same axis twice in two vocabularies, which is what doctor and /autonomy print on one screen today. #} {% extends "shell.html" %} {% block body %}

{{ t('agent.title') }}

{{ t('agent.sub') }}

{# Overview — health leads, then the face, then the four posture axes, then what Rob is connected to. Drawn by agent.js from /api/webgate/doctor + /pfp.json; the posture axes render from the data attributes below. #}
{# Identity — the persona you wrote (read-only) and what Rob has learned about itself (a reviewable change). Drawn from /api/webgate/identity; an edit posts /api/webgate/self-context and lands in review. #} {# Capabilities — skills, tools and connected services as one list, plus the read-only helpers. Drawn from /api/webgate/capabilities. #} {# Memory — what Rob remembers about you (add/forget here), what it works out on its own, and what it has read. Drawn from /api/webgate/memory/search + /api/webgate/knowledge/kb; add posts /api/webgate/memory, forget deletes it. #} {# Settings — the preferences people actually change, grouped by intent, plus the money limits. Drawn from /api/webgate/preferences + /ledger. #} {# Advanced — every setting, search-first (nothing until you ask), and the diagnostic report behind a disclosure. Drawn from /api/webgate/flags + /api/webgate/doctor. #}

{{ t('agent.sources')|safe }}

{# The words agent.js renders, and the posture values it renders once as four sentences. read_only rides here so the module draws no write control it cannot act on. #} {% endblock %}