-
Notifications
You must be signed in to change notification settings - Fork 0
feat(notices): subscription-aware resources/updated for the notice inbox (#99 stage 4) #376
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
Merged
Changes from all commits
Commits
Show all changes
18 commits
Select commit
Hold shift + click to select a range
c804f6d
feat(notices): subscription-aware resources/updated for the notice in…
ScriptedAlchemy 9a8173b
fix(notices): claim the availability budget atomically before the wir…
ScriptedAlchemy b195a0c
fix(notices): serialize unsubscribe with in-flight inbox observations
ScriptedAlchemy c6de0fe
fix(notices): reserve the availability slot before the wire write, sp…
ScriptedAlchemy 76e4aea
fix(notices): keep wire-successful receipts owed and renew the hold d…
ScriptedAlchemy 37f1568
fix(notices): refuse receipts from lost holds and retry owed receipts…
ScriptedAlchemy 2e0cb71
fix(notices): judge a reserved receipt against the exact state it com…
ScriptedAlchemy 08bf845
fix(notices): record a receipt on a notice that turned terminal while…
ScriptedAlchemy 890807f
chore(changeset): bump @agent-bundle/runtime minor and write the cons…
ScriptedAlchemy e200fbd
fix(notices): refuse to re-create a hold whose budget the takeover al…
ScriptedAlchemy f6595a6
fix(notices): keep tracking on a repeated subscribe and drain owed re…
ScriptedAlchemy 314f73d
fix(notices): move the notice ledger to schema version 2 with an in-p…
ScriptedAlchemy c134d5e
fix(mcp): detach the inbox observation from render completion; impera…
ScriptedAlchemy bb93840
fix(mcp): always close the protocol transport, even when notice or ho…
ScriptedAlchemy 8dc8aab
fix(notices,mcp): let pinned receipt retries replay through the store…
ScriptedAlchemy ebac066
fix(notices): await in-flight renewals, abandon wedged sends on close…
ScriptedAlchemy 473f963
fix(notices): never await an unanswered renewal once the signaller is…
ScriptedAlchemy 98d57ea
fix(notices): bound every store wait by shutdown; give the close-time…
ScriptedAlchemy File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
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
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,6 @@ | ||
| --- | ||
| "@agent-bundle/runtime": minor | ||
| "agent-bundle": patch | ||
| --- | ||
|
|
||
| Deliver notices over the `mcp-resource-updated` route from generated MCP servers with a workspace-durable state lifetime: accept `resources/subscribe` / `resources/unsubscribe` for the reserved inbox resource `AGENT_NOTICE_INBOX_URI`, advertise `resources.subscribe` only when that wiring is active, and send each subscribed session at most one `notifications/resources/updated` per newly eligible pending notice — honouring `nextAttemptAt`, bounded per notice by `retryBudget` across restarts, never duplicated across concurrent server processes over one store, detached from the render that triggered it and coalesced behind a pending write so a slow subscriber never delays a tool result nor grows a queue, abandoned (never awaited) by server teardown when its write or ledger call cannot settle (`closeTimeoutMs` bounds the close-time receipt drain), and recorded as an `availability` receipt (never a delivery claim) that the inbox projection exposes beside `exposure`. Fail subscriptions closed when the store is unreadable; volatile lifetimes advertise no subscription capability. Use the new exports `createNoticeInboxSignaller`, `AGENT_NOTICE_AVAILABILITY_RESERVATION_TTL_MS`, `AGENT_NOTICE_STATE_VERSION`, and the `AgentNoticeError` code `reservation-lost` from `@agent-bundle/runtime/notices`, and `createGeneratedNoticeRuntime` plus `GeneratedRuntimeState.noticeLedger()` from `@agent-bundle/runtime/mount`. Update implementers of `AgentNoticeLedger`: the interface now requires `reserveAvailability()` and `releaseAvailability()`, and `AgentNotice` gains the optional `availabilityReservation` field (breaking). Existing workspace-durable notice stores migrate in place to schema version 2 on first open, with no data loss. (#376) |
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
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
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
Oops, something went wrong.
Oops, something went wrong.
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.
Uh oh!
There was an error while loading. Please reload this page.