Skip to content

feat: chunked exec streaming (exec_chunk) — remove 10MB output ceiling (#116) - #119

Merged
blaspat merged 10 commits into
mainfrom
feat/issue-116-exec-chunk
Aug 11, 2026
Merged

feat: chunked exec streaming (exec_chunk) — remove 10MB output ceiling (#116)#119
blaspat merged 10 commits into
mainfrom
feat/issue-116-exec-chunk

Conversation

@blaspat

@blaspat blaspat commented Aug 11, 2026

Copy link
Copy Markdown
Owner

What

Adds chunked exec streaming (exec_chunk) — replaces the single 10MB-capped exec_result with incremental base64-encoded chunks sent as stdout becomes available. Removes the 10MB output ceiling entirely.

How

Capability negotiation: node advertises exec_chunk in hello.capabilities; server echoes back in hello_ack.capabilities. Only active when both sides support it. Falls back to current exec_result + 10MB cap otherwise.

Protocol (§3.7a):

  • exec_chunk messages carry seq (monotonic), data (base64), more (true/false)
  • Final chunk (more: false) carries exit_code, status, duration_ms, truncated
  • Chunk size configurable via chunk_size in config.toml (default 1 MiB, range 4 KiB–10 MiB)

Go changes:

  • messages.goTypeExecChunk, ExecChunkPayload, NewExecChunkEnvelope
  • HelloAckPayload — new Capabilities field
  • client.go — store server caps, expose ServerCapabilities()
  • config.goChunkSize field with clamped accessor
  • shell.goChunkWriter callback in demuxer goroutine; flushes at chunk boundary
  • handler_exec.go — dual-path: chunk streaming via WriteEnvelope or legacy exec_result; NoResponse field on Envelope signals dispatcher to skip write
  • dispatch.goNoResponse check
  • main.go — wire WriteFunc, ChunkSize, SetServerCapabilities
  • PROTOCOL.md — §3.7a spec + updated examples

Tests: 7/7 packages pass with -race.

blaspat added 10 commits August 11, 2026 07:52
Signed-off-by: Blasius Patrick <blasius.patrick@gmail.com>
Signed-off-by: Blasius Patrick <blasius.patrick@gmail.com>
Signed-off-by: Blasius Patrick <blasius.patrick@gmail.com>
Signed-off-by: Blasius Patrick <blasius.patrick@gmail.com>
Signed-off-by: Blasius Patrick <blasius.patrick@gmail.com>
#116)

Signed-off-by: Blasius Patrick <blasius.patrick@gmail.com>
…#116)

Signed-off-by: Blasius Patrick <blasius.patrick@gmail.com>
Signed-off-by: Blasius Patrick <blasius.patrick@gmail.com>
Signed-off-by: Blasius Patrick <blasius.patrick@gmail.com>
Signed-off-by: Blasius Patrick <blasius.patrick@gmail.com>
@blaspat
blaspat merged commit 9952a7e into main Aug 11, 2026
14 checks passed
@blaspat
blaspat deleted the feat/issue-116-exec-chunk branch August 11, 2026 02:42
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant