iiRecord
Agentic AI Atlas · GAP-TOOLS-029: Structured Output Tool
page:docs-harness-features-backlog-gaps-tools-capabilities-gap-tools-029a5c.ai
II.
Page JSON

page:docs-harness-features-backlog-gaps-tools-capabilities-gap-tools-029

Structured · live

GAP-TOOLS-029: Structured Output Tool json

Inspect the normalized record payload exactly as the atlas UI reads it.

File · wiki/docs/harness-features-backlog/gaps/tools-capabilities/gap-tools-029.mdCluster · wiki
Record JSON
{
  "id": "page:docs-harness-features-backlog-gaps-tools-capabilities-gap-tools-029",
  "_kind": "Page",
  "_file": "wiki/docs/harness-features-backlog/gaps/tools-capabilities/gap-tools-029.md",
  "_cluster": "wiki",
  "attributes": {
    "nodeKind": "Page",
    "sourcePath": "docs/harness-features-backlog/gaps/tools-capabilities/GAP-TOOLS-029.md",
    "sourceKind": "repo-docs",
    "title": "GAP-TOOLS-029: Structured Output Tool",
    "displayName": "GAP-TOOLS-029: Structured Output Tool",
    "slug": "docs/harness-features-backlog/gaps/tools-capabilities/gap-tools-029",
    "articlePath": "wiki/docs/harness-features-backlog/gaps/tools-capabilities/GAP-TOOLS-029.md",
    "article": "\n# GAP-TOOLS-029: Structured Output Tool\n\n| Field | Value |\n|-------|-------|\n| Category | tools-capabilities |\n| Priority | Medium |\n| Effort | M |\n| Status | Missing |\n\n## Description\nProduce structured output blocks (images, code blocks, downloadable files, tables,\ndiagrams) from within orchestrated tasks. CC's `SyntheticOutputTool` creates rich\noutput that appears in the conversation UI.\n\n## Current State\nTask results are stored as JSON in `result.json`. Large outputs go to blobs\n(`BLOB_THRESHOLD_BYTES: 1 MiB`). But there's no concept of typed output blocks --\neverything is unstructured text or JSON. No embedded SDK dashboard exists yet; `task:show`\nrenders all results the same way.\n\n## Target State\nA structured output system where effects can produce typed output blocks:\n- `code`: syntax-highlighted code blocks with language tag\n- `image`: base64 or file-referenced images (diagrams, screenshots)\n- `table`: structured tabular data\n- `diff`: unified diff output\n- `file`: downloadable file artifacts\n- `markdown`: rendered markdown\n\nOutput blocks stored in task result as `{ blocks: [{ type, content, metadata }] }`.\nEmbedded SDK dashboard and `task:show` render each block type appropriately.\n\n## Dependencies\n- [GAP-UX-001b](../user-experience/GAP-UX-001b.md) -- diff rendering for diff blocks\n- [GAP-UX-001d](../user-experience/GAP-UX-001d.md) -- type-specific rendering\n\n## Key Files\n| Component | Path |\n|-----------|------|\n| Task serializer | `packages/babysitter-sdk/src/tasks/serializer.ts` |\n| Agentic tools | `packages/babysitter-sdk/src/harness/agenticTools.ts` |\n\n## Recommendation\nPhase 3 (M5). Define output block schema in task types. Add rendering support in\nembedded SDK dashboard. Most impactful for code-generation tasks where seeing diffs\nand code blocks is critical.\n",
    "documents": []
  },
  "outgoingEdges": [],
  "incomingEdges": [
    {
      "from": "page:docs-harness-features-backlog",
      "to": "page:docs-harness-features-backlog-gaps-tools-capabilities-gap-tools-029",
      "kind": "contains_page"
    }
  ]
}