feat: ucas render --pipe/-p for stdin { type, value } input #48

Closed
opened 2026-05-31 07:27:49 +00:00 by xiaoju · 0 comments
Owner

Background

ucas render currently only accepts a store hash. But all JSON output commands produce { type, value } envelopes. We need a pipe mode to compose commands:

ucas get some-hash | ucas render -p
ucas resolve some-hash | ucas render -p --resolution 0.5

Design

Core layer (render.ts)

  • New public function: renderDirect(type, value, store?, options?)
  • Accepts raw { type, value } — renders in-memory without store lookup
  • Store is optional, only needed when value contains cas:XXXXX references that need expansion
  • Resolution decay applies normally to nested structures

CLI layer

  • ucas render --pipe / ucas render -p: read JSON from stdin
  • Parse { type, value } envelope
  • Call renderDirect with in-memory value
  • All existing flags (--resolution, --decay, --epsilon) still apply
  • Error if stdin is not valid { type, value } JSON

Key principle

No store writes — pipe mode should not pollute the store with temporary data. Store is read-only (for expanding nested cas refs if any).

Ref

Continues render system from #36 (RFC), #39 (Phase 3), #40 (Phase 4)

## Background ucas render <hash> currently only accepts a store hash. But all JSON output commands produce { type, value } envelopes. We need a pipe mode to compose commands: ucas get some-hash | ucas render -p ucas resolve some-hash | ucas render -p --resolution 0.5 ## Design ### Core layer (render.ts) - New public function: renderDirect(type, value, store?, options?) - Accepts raw { type, value } — renders in-memory without store lookup - Store is optional, only needed when value contains cas:XXXXX references that need expansion - Resolution decay applies normally to nested structures ### CLI layer - ucas render --pipe / ucas render -p: read JSON from stdin - Parse { type, value } envelope - Call renderDirect with in-memory value - All existing flags (--resolution, --decay, --epsilon) still apply - Error if stdin is not valid { type, value } JSON ### Key principle No store writes — pipe mode should not pollute the store with temporary data. Store is read-only (for expanding nested cas refs if any). ## Ref Continues render system from #36 (RFC), #39 (Phase 3), #40 (Phase 4)
This repo is archived. You cannot comment on issues.
No Label
1 Participants
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: uncaged/json-cas#48