Repository navigation
Conversation
Let explicitly opted-in plugins render growing fenced content and receive terminal lifecycle updates with original transcript identity. Preserve closed-fence props-once behavior for existing registrations. Observe asynchronous content growth without weakening the source fallback or renderer trust boundaries. Cover routing, stable local state, completion, unload and overflow using public host modules in isolated Electron.
Collaborator
|
需要解决所有ci问题 |
This branch has not been deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Renderer plugins currently receive a fenced block only after it closes, with no transcript identity or completion lifecycle. This prevents GenUI from displaying completed components while a reply is still arriving and from associating explicit actions with the original message.
Add an optional
streaming: trueblockRenderer registration. Opted-in plugins receive growing source, closed/streaming status, and host-owned session/message/fence identity. Terminal status updates are delivered even when source does not change. Legacy registrations retain their closed-fence, props-once behavior and original two props.Keep namespaced ownership, renderer trust, error/unload source fallback and the 4000px guard. Observe both the clamp and its content so asynchronous growth past 4000px remains detectable. Update the SDK types, contract documentation, E2E scenario and a proposed ADR.
This PR contains only the host/SDK support needed by streaming GenUI. It does not bundle GenUI, change renderer privileges or introduce automatic model actions. The JSX runtime work from #1644 is already in the base.
Draft / maintainer scope decision requested: this is a feature proposal. The repository currently limits external landing candidates to fix/perf; this draft is not a claim of a policy exception or approval to merge. Please confirm whether this additive plugin contract is in scope before considering landing.
Validation on head
f15df3f08aa9846de4f38887a6bbc0984c6cc1e4, based on upstream mainb6e439437769b7763e9a51b78725a3534a52ab8f:node scripts/e2e-streaming-plugin-fences.mjs: passed in isolated sandboxed Electron, covering growing source, stable local state, unchanged-source terminal update, original identity, legacy props-once, unload, asynchronous 4000→4001px overflow and render-error fallback.Full workspace/release builds and installed-GenUI Desktop acceptance have not been run. No live user Desktop instance or real provider was used. GenUI plugin publishing remains separate.