Skip to main content
Compendium / AI Collaboration / Reasoning & Trace / Tool-Call Trace Row
#622

Tool-Call Trace Row

A single tool invocation in a trace — tool name, arguments preview, exit status.

STABLE CO
#list #real-content #dark-mode-tested #responsive
Live
// tool call t+0.84s
fs.read OK 1280B
args: { path: 'src/auth/oauth.ts', range: [1, 42] }
Spec

Intent

Reasoning rows describe thought; tool-call rows describe action. Auditors need to see what the agent did to the outside world: which tool, what arguments, what came back.

Acceptance Criteria

  • [ ] Tool name on the leading edge, monospace
  • [ ] Argument preview in a code-block strip, truncated
  • [ ] Exit status chip — OK / ERR / TIMEOUT
  • [ ] Returned-byte count in the trailing slot

Constraints

  • Pure markup
  • Theme-aware via tokens
  • overflow-hidden, no horizontal scroll
// tool-call-trace-row.astro
---
import type { CompendiumMeta } from '../../../data/types';

export const meta: CompendiumMeta = {
  id: 622,
  slug: 'tool-call-trace-row',
  name: 'Tool-Call Trace Row',
  category: 'ai-collaboration',
  subcategory: 'reasoning-and-trace',
  pillar: 'co',
  description: 'A single tool invocation in a trace — tool name, arguments preview, exit status.',
  spec: `## Intent
Reasoning rows describe thought; tool-call rows describe action. Auditors need to see what the agent did to the outside world: which tool, what arguments, what came back.

## Acceptance Criteria
- [ ] Tool name on the leading edge, monospace
- [ ] Argument preview in a code-block strip, truncated
- [ ] Exit status chip — OK / ERR / TIMEOUT
- [ ] Returned-byte count in the trailing slot

## Constraints
- Pure markup
- Theme-aware via tokens
- overflow-hidden, no horizontal scroll`,
  tags: ['list', 'real-content', 'dark-mode-tested', 'responsive'],
  status: 'stable',
  health: { ics: 89, a11y: 'aa', themed: true, animated: false },
};

const call = {
  tool: 'fs.read',
  args: "{ path: 'src/auth/oauth.ts', range: [1, 42] }",
  status: 'OK' as const,
  bytes: 1280,
};
const statusToken = call.status === 'OK' ? 'success' : call.status === 'TIMEOUT' ? 'attention' : 'danger';
---

<div data-this-component class="w-full bg-paper text-black border-4 border-black overflow-hidden">
  <header class="px-3 py-1.5 border-b-2 border-black flex items-baseline justify-between">
    <span class="font-mono text-[10px] uppercase tracking-widest opacity-60">// tool call</span>
    <span class="font-mono text-[10px] tabular-nums opacity-60">t+0.84s</span>
  </header>
  <div class="px-3 py-2 flex items-center gap-2 overflow-hidden">
    <span class="font-mono text-[11px] font-black shrink-0">{call.tool}</span>
    <span class={`font-black text-[9px] uppercase tracking-widest px-1.5 py-0.5 border-2 border-black bg-${statusToken} ${call.status === 'OK' ? 'text-black' : 'text-white'} shrink-0`}>{call.status}</span>
    <span class="ms-auto font-mono text-[10px] tabular-nums opacity-60 shrink-0">{call.bytes}B</span>
  </div>
  <div class="mx-3 mb-3 px-2 py-1.5 border-2 border-black bg-ink text-paper font-mono text-[10px] truncate overflow-hidden">
    <span class="opacity-60">args:</span> {call.args}
  </div>
</div>