Brick
__tests__/
domain/
host/
server/
testing/
Host adapter (not part of the brick)
| 1 | /** |
| 2 | * The pure entrypoint: types and logic with no React and no I/O. Importable |
| 3 | * from both server and client code. |
| 4 | */ |
| 5 | |
| 6 | export type { Conversation, Message, ConversationStatus, MessageStatus, NotifyOnMessageInput, ISODateTime } from './types'; |
| 7 | export { NotificationSystemError, NotImplemented } from './errors'; |
| 8 | export type { NotificationSystemErrorCode } from './errors'; |
| 9 | export { initialConversationStatus, canConversation, transitionConversation, availableConversationEvents, initialMessageStatus, canMessage, transitionMessage, availableMessageEvents } from './lifecycle'; |
| 10 | export type { ConversationEvent, MessageEvent } from './lifecycle'; |
| 11 |
Requirements
- ✓
REQ-1User is notified when they receive a new message
✓ [REQ-1] User is notified when they receive a new message #1
- ✓
GATE-PORTABLESelf-contained: relative imports only, nothing escapes the brick (R1–R6)
brick-lint + builder harness
- ✓
GATE-CONTRACTVendored host contract is byte-identical (R8)
sha-256 comparison
- ✓
GATE-TYPESTypechecks under the strictest-superset tsconfig
in-process tsc
- ✓
GATE-TESTSShips its own tests and they pass (R12)
19 passing
- ✓
GATE-LIFECYCLE-CONVERSATIONConversation.status only changes through declared transitions
4 generated lifecycle tests
- ✓
GATE-LIFECYCLE-MESSAGEMessage.status only changes through declared transitions
14 generated lifecycle tests
Built 05/10/2026, 17:26:48 by Ada Lovelace · 19 tests passing · operations by openrouter