deepseek-harness/docs
Chinesezjc a4d4404708 feat(ui-tool): render read_image results as the image
A settled top-level `read_image` call printed its raw attachment object as
literal text in the tool card — `{"type":"image","attachment":{…}}` —
instead of the image, because no presentation metadata told a client card
how to present the reference and the tool-card layer had no image concept.

Host: `read_image` declares an `output.presentationMeta` persisting
`{ path }` only. The attachment reference deliberately lives in the
settled result content — the single record a `tools/post-execute`
replacement rewrites — not in `meta`; the id is opaque and
provider-owned, checked for existence only.

Client: `imageCardModel` derives the card from the call head, the meta
path, the result's own image block, and a shape-matched envelope. ToolRow
gains an `image` card slot; the `read_image` toolview declares the
Tool-owned `tool.call.images` slot as its child and dispatches the
gallery through it. ui-chat down-threads the session-authorized loader
(`ChatNodeOwnerProps.loadImage`), so the tool layer supplies only derived
references plus the loader and never imports an attachment
implementation; ui-attachment fills the slot with its message gallery
renderer. The card keeps the envelope text below the gallery for the
no-attachment-plugin deployment. An image-bearing tool registers a keyed
toolview; the generic fallback keeps its flattened text. `read_image`
joins the read variant with its own locale title key; both rows share
`read-family-row.tsx`.

Verification: `read-image.spec.ts` (metadata projection, envelope by
shape, reference narrowing, real-execution round trip, rejection
branches incl. non-digest ids), `image-card.client.spec.tsx` (derivation,
row render site dispatching the slot, keyed registration with the
child-slot declaration, empty-slot fallbacks, media-type enum), keyless
snapshots (`read-image-gif` added; read-image/-dimension/-reencode
updated to the `{path}` meta), five injected-defect negative controls,
and a demo GIF recorded from this PR's head through the official
image-capable model.
2026-08-29 17:41:05 +08:00
..
cookbook docs(api): document the converged ctx.remote programming surface 2026-08-28 22:37:36 +08:00
cordis-api docs: rebuild the documentation skill and standards (#2983) 2026-08-25 23:47:20 +08:00
cordis-tutorial Merge remote-tracking branch 'origin/master' into xtr/message-tool-call-id 2026-08-25 14:37:44 +08:00
i18n docs: rebuild the documentation skill and standards (#2983) 2026-08-25 23:47:20 +08:00
postmortem docs: rebuild the documentation skill and standards (#2983) 2026-08-25 23:47:20 +08:00
subsystems feat(ui-tool): render read_image results as the image 2026-08-29 17:41:05 +08:00
user Merge commit 'bc954280ae67e349291e51e5787c6987e767fa40' into schedule-web-catalog 2026-08-28 07:24:24 +08:00
agent-lifecycle.i18n.yaml fix(web): show system prompts in chat 2026-08-25 14:44:08 +08:00
agent-lifecycle.md fix(web): show system prompts in chat 2026-08-25 14:44:08 +08:00
agent-lifecycle.zh.md fix(web): show system prompts in chat 2026-08-25 14:44:08 +08:00
AGENTS.md docs: rebuild the documentation skill and standards (#2983) 2026-08-25 23:47:20 +08:00
api-gateway.i18n.yaml docs(api): correct the api-gateway reference codes and the failure-vocabulary note 2026-08-29 03:12:46 +08:00
api-gateway.md docs(api): correct the api-gateway reference codes and the failure-vocabulary note 2026-08-29 03:12:46 +08:00
api-gateway.zh.md docs(api): correct the api-gateway reference codes and the failure-vocabulary note 2026-08-29 03:12:46 +08:00
architecture.i18n.yaml fix(session-projection): preserve optional registrations 2026-08-26 16:51:36 +08:00
architecture.md fix(session-projection): preserve optional registrations 2026-08-26 16:51:36 +08:00
architecture.zh.md fix(session-projection): preserve optional registrations 2026-08-26 16:51:36 +08:00
capability-seams.i18n.yaml fix: repair merged README remnants and note links after the master rebase 2026-08-27 23:14:33 +08:00
capability-seams.md fix: repair merged README remnants and note links after the master rebase 2026-08-27 23:14:33 +08:00
capability-seams.zh.md fix: repair merged README remnants and note links after the master rebase 2026-08-27 23:14:33 +08:00
config-catalog.i18n.yaml test(connection): verify and document recovery behavior 2026-08-29 11:18:58 +08:00
config-catalog.md test(connection): verify and document recovery behavior 2026-08-29 11:18:58 +08:00
config-catalog.zh.md test(connection): verify and document recovery behavior 2026-08-29 11:18:58 +08:00
cordis-primer.i18n.yaml docs: rebuild the documentation skill and standards (#2983) 2026-08-25 23:47:20 +08:00
cordis-primer.md docs: rebuild the documentation skill and standards (#2983) 2026-08-25 23:47:20 +08:00
cordis-primer.zh.md docs: rebuild the documentation skill and standards (#2983) 2026-08-25 23:47:20 +08:00
deepseek-llm-api-wire-extensions.i18n.yaml refactor(session): require known event types on read 2026-08-26 00:22:31 +08:00
deepseek-llm-api-wire-extensions.md refactor(session): require known event types on read 2026-08-26 00:22:31 +08:00
deepseek-llm-api-wire-extensions.zh.md refactor(session): require known event types on read 2026-08-26 00:22:31 +08:00
defensive-patterns.i18n.yaml docs(i18n): localize Chinese internal links 2026-08-18 19:00:37 +08:00
defensive-patterns.md docs: add junction-safe unlink rule to defensive patterns 2026-08-13 15:16:12 +08:00
defensive-patterns.zh.md docs(i18n): localize Chinese internal links 2026-08-18 19:00:37 +08:00
development.i18n.yaml rename code-mode to ptc (PTC mode), except session-persistent vocabulary 2026-08-27 23:14:31 +08:00
development.md rename code-mode to ptc (PTC mode), except session-persistent vocabulary 2026-08-27 23:14:31 +08:00
development.zh.md rename code-mode to ptc (PTC mode), except session-persistent vocabulary 2026-08-27 23:14:31 +08:00
event-producer-consumer.i18n.yaml chore(docs): regenerate catalogs, graphs, and the message-feedback golden 2026-08-28 22:37:42 +08:00
event-producer-consumer.md chore(docs): regenerate catalogs, graphs, and the message-feedback golden 2026-08-28 22:37:42 +08:00
event-producer-consumer.zh.md chore(docs): regenerate catalogs, graphs, and the message-feedback golden 2026-08-28 22:37:42 +08:00
glossary.i18n.yaml docs: rebuild the documentation skill and standards (#2983) 2026-08-25 23:47:20 +08:00
glossary.md docs: rebuild the documentation skill and standards (#2983) 2026-08-25 23:47:20 +08:00
glossary.zh.md docs: rebuild the documentation skill and standards (#2983) 2026-08-25 23:47:20 +08:00
graph-atlas.i18n.yaml refactor(repo): retire top-level examples 2026-08-24 22:02:44 +08:00
graph-atlas.md refactor(repo): retire top-level examples 2026-08-24 22:02:44 +08:00
graph-atlas.zh.md refactor(repo): retire top-level examples 2026-08-24 22:02:44 +08:00
module-graph.i18n.yaml chore: package.json update 2026-08-29 14:26:43 +08:00
module-graph.md chore: package.json update 2026-08-29 14:26:43 +08:00
module-graph.zh.md chore: package.json update 2026-08-29 14:26:43 +08:00
persistence-catalog.i18n.yaml Merge remote-tracking branch 'github/master' into xtr/session-projection-migrations 2026-08-28 10:59:30 +08:00
persistence-catalog.md Merge remote-tracking branch 'github/master' into xtr/session-projection-migrations 2026-08-28 10:59:30 +08:00
persistence-catalog.zh.md Merge remote-tracking branch 'github/master' into xtr/session-projection-migrations 2026-08-28 10:59:30 +08:00
rescope.i18n.yaml docs: rebuild the documentation skill and standards (#2983) 2026-08-25 23:47:20 +08:00
rescope.md docs: rebuild the documentation skill and standards (#2983) 2026-08-25 23:47:20 +08:00
rescope.zh.md docs: rebuild the documentation skill and standards (#2983) 2026-08-25 23:47:20 +08:00
testing.i18n.yaml docs: rebuild the documentation skill and standards (#2983) 2026-08-25 23:47:20 +08:00
testing.md docs: rebuild the documentation skill and standards (#2983) 2026-08-25 23:47:20 +08:00
testing.zh.md docs: rebuild the documentation skill and standards (#2983) 2026-08-25 23:47:20 +08:00
tool-catalog.i18n.yaml docs(zh): sync remaining code mode-value prose to ptc 2026-08-28 00:16:29 +08:00
tool-catalog.md rename code-mode to ptc (PTC mode), except session-persistent vocabulary 2026-08-27 23:14:31 +08:00
tool-catalog.zh.md docs(zh): sync remaining code mode-value prose to ptc 2026-08-28 00:16:29 +08:00
tool-execution-pipeline.i18n.yaml fix: align mode-value prose and stale persistent mentions with the split 2026-08-27 23:14:32 +08:00
tool-execution-pipeline.md rename code-mode to ptc (PTC mode), except session-persistent vocabulary 2026-08-27 23:14:31 +08:00
tool-execution-pipeline.zh.md fix: align mode-value prose and stale persistent mentions with the split 2026-08-27 23:14:32 +08:00
web-styling.i18n.yaml docs(i18n): localize Chinese internal links 2026-08-18 19:00:37 +08:00
web-styling.md
web-styling.zh.md docs(i18n): localize Chinese internal links 2026-08-18 19:00:37 +08:00