II.
Page JSON
Structured · livepage:docs-harness-features-backlog-gaps-tools-capabilities-gap-tools-029
GAP-TOOLS-029: Structured Output Tool json
Inspect the normalized record payload exactly as the atlas UI reads it.
{
"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"
}
]
}