Reintroduce sink interceptor type#28
Open
PederHP wants to merge 1 commit into
Open
Conversation
Adds a third interceptor type, `sink`, for non-blocking, non-mutating interceptors that react to context to drive concurrent UX, workflow state, or downstream pipelines (avatar animation, voice-mode triggers, real-time UI affordances, background indexing) without affecting the request/response interaction. Additive to the validator/mutator split and `mode: "audit"`. Audit mode disables enforcement while preserving the validator/mutator interface; sinks are structurally non-enforcing and cannot be promoted to affect the interaction. Renamed from the original draft's `observability` to `sink` to avoid implying overlap with OpenTelemetry / general logging. Re-homed from Degiorgio/modelcontextprotocol#1 (a PR against the SEP author's personal fork) onto this repo's working copy of the SEP, which PR #21 established as where the WG maintains and reviews the SEP. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Closed
3 tasks
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.
Adds a third interceptor type —
sink— to the working copy of the SEP (docs/sep.md).What
A sink is a non-blocking, non-mutating interceptor that reacts to a context operation without affecting the interaction. It MUST NOT block execution and MUST NOT modify the payload — it exists to drive concurrent UX, workflow state, or downstream pipelines based on what the agent is doing.
Use cases: avatar/character animation from conversation mood, voice-mode / TTS switching, real-time UI affordances, background context indexing, secondary-agent triggers. The C# reference impl already demonstrates the avatar case end-to-end in
AvatarMoodInterceptorSample.Changes to
docs/sep.md:"validation" | "mutation" | "sink"(all sites incl.ChainEntry/ChainExecutionResult)SinkResultaudit-loggerexample reframed as a sink; newavatar-moodsink example addedmode: "audit", and why "sink" and not "observability" (avoids implying OpenTelemetry overlap)Sinks are additive to the validator/mutator split and
mode: "audit": audit mode disables enforcement while preserving a validator/mutator's interface; sinks are structurally non-enforcing and cannot be promoted to affect the interaction. Implementations MUST reject sinks declared withmode: "audit".Why here
This re-homes the proposal from
Degiorgio/modelcontextprotocol#1— which targeted the SEP author's personal fork — onto this repo's working copy of the SEP. #21 establisheddocs/sep.mdas where the WG maintains and reviews the SEP, so the sink proposal belongs here. Once the WG agrees, it folds upstream into SEP-2624 along with the rest ofdocs/sep.md.🤖 Generated with Claude Code