Skip to main content

Module notifications

Module notifications 

Source
Expand description

notifications.* method types — paginated history + ack + push for incoming notifications.

The notification lifecycle (SPEC §2.12.8 emergency example):

  1. Operator publishes via backend HTTP API → backend writes to NATS NOTIFICATIONS JetStream.
  2. Agent consumes the stream, fans out to connected clients via notifications.new push.
  3. User clicks “確認” → client sends notifications.ack → agent writes notifications_read KV (keyed by {pc_id}.{user_sid}.{notification_id}) AND publishes events.notifications.acked.{pc_id}.{user_sid}.{notification_id} so the SPA can show per-user confirmation status.
  4. Past notifications stay queryable via notifications.list — that’s the recovery path when the agent missed a push during a network blip.

Structs§

Notification
Notification body — used both for NotificationsListResult entries and the NotificationNewParams push.
NotificationNewParams
Push payload for notifications.new. The full notification body inline — no second round-trip needed.
NotificationsAckParams
notifications.ack params — mark this notification read for the caller’s user (SID derived from the OS at connect time, NOT from the payload). SPEC §2.12.4 forbids ack-ing other users’ notifications even on a shared PC — the agent rejects with Unauthorized if the notification’s audience doesn’t include the caller.
NotificationsAckResult
notifications.ack response — confirms the agent persisted the ack and published the events.notifications.acked.> event.
NotificationsListParams
notifications.list params — paginated history of notifications this user has received (per-user, scoped via OS SID).
NotificationsListResult
notifications.list response.
NotificationsSubscribeParams
NotificationsSubscribeResult
NotificationsUnsubscribeParams

Enums§

NotificationPriority
Severity ladder. Drives the SPA color, toast/dialog choice, and whether the Client App grabs window focus on push arrival. #[non_exhaustive] so a future SPEC can add severities (e.g. Critical above Emergency) without a wire bump.
NotificationsFilter
History-list filter selector.