Skip to content

feat(compose): expose source-attributed Runlet progress - #23

Merged
danielkov merged 2 commits into
mainfrom
feat/runlet-progress-bridge
Sep 8, 2026
Merged

feat(compose): expose source-attributed Runlet progress#23
danielkov merged 2 commits into
mainfrom
feat/runlet-progress-bridge

Conversation

@danielkov

Copy link
Copy Markdown
Owner

Summary

Expose bounded, source-attributed Runlet progress through RunletBackend::execute_with_progress, using published Runlet 0.6.0. Preserve the existing backend APIs while letting hosts observe exact compose-call ownership, execution incarnations, and compiled-source identity.

Motivation

Hosts cannot accurately assign nested tool activity to script expressions by tool name or call count. The Runlet progress stream supplies dynamic node identities and lifecycle states, but the compose adapter must preserve attribution and reconcile runtime completion with approval and cancellation outcomes.

Impact

The opt-in API delivers a per-execution receiver through a host-owned bounded channel. Events omit source text, arguments, outputs, and error text. Slow or dropped consumers do not stop execution; observation loss is explicit. Existing unobserved execution remains available.

Technical details

Exact identity and source matching

Each compiled execution carries its parent compose-call ID, a fresh process-local incarnation, and the digest of the exact compiled source. Auto-healed scripts are marked so their byte spans cannot be mistaken for offsets in submitted source.

Host-authoritative completion

Raw Runlet completion is suppressed until the adapter resolves its outcome. Approval interruption, cancellation, and dropped execution futures invalidate prior observations instead of reporting completion. The host polls in its own scoped task; the bridge starts no observer workers or callbacks.

@danielkov
danielkov merged commit a07ec8c into main Sep 8, 2026
1 check passed
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