Agent session indexes
July 4, 2026 ยท View on GitHub
Session browsers and analytics tools are good at answering "what happened in this coding-agent run?" ATS answers a different question: "what durable context should future agents retrieve from the task system?"
The split is intentional:
- session-index tools own raw transcript search, token charts, timeline views, and per-run debugging
- ATS owns durable task-linked memory, lifecycle validity, provenance, retrieval, and writeback
@reneza/ats-core/session-index provides the handoff schema between those layers.
An agentsview-style tool can summarize a run and attach it to the task graph
without asking ATS to become a transcript database.
import { normalizeSessionIndexEntry, sessionIndexTaskBody } from '@reneza/ats-core/session-index';
const session = normalizeSessionIndexEntry({
id: 'codex-2026-07-04-trivy-gate',
source: 'agentsview',
title: 'Build Trivy gate for skillgate',
repo: 'renezander030/skillgate',
cwd: '/work/github-repos/skillgate',
startedAt: '2026-07-04T08:00:00Z',
endedAt: '2026-07-04T08:40:00Z',
models: ['gpt-5'],
tools: ['shell', 'apply_patch'],
files: ['src/core.ts', 'src/spec.ts', 'test/core.test.ts'],
tasks: [{ projectId: 'github-oss', taskId: 'skillgate-trivy', role: 'source' }],
tokenStats: { input: 42000, output: 9000 },
outcome: 'tests-pass',
summary: 'Added a Trivy-backed gate for secrets, critical CVEs, and SBOM generation.',
});
const body = sessionIndexTaskBody(session);
The normalized entry is stable JSON: timestamps are ISO strings, arrays are
deduplicated and sorted, token totals are explicit, and task references are kept
as { projectId, taskId, role } edges. Store the raw transcript wherever the
session tool prefers; store the durable summary in ATS where retrieval can join
it to work, decisions, blockers, and follow-up tasks.