code wiki / (root) / nx_message.nx

nx_message.nx

buildroot/runtime/nx_message.nx

12793 B351 linesdepth 2pulls 2 transitivereach 39 importersview sourcekind library
docsdependenciesstructsconstsfunctions

about

nx_message.nx -- typed inter-actor message passing substrate. Per CARDINAL [[feedback-parallel-companion-multimodal-dnd-real-time]]: concurrent actors need to communicate. The LLM-actor emits tokens that the audio-TTS-actor + the on-screen-text-renderer-actor both consume. The game-action-actor emits dice rolls that the LLM-actor receives as context. Without typed message passing, every actor shares mutable state -- classic data-race anti-pattern. V1 ships sealed message-kind enum + actor-addressed mailbox + ring buffer + fan-out (one sender, multiple subscribers) + delivery verdict + content-addressed payload handles.

dependencies 2 imports · 34 importers

nx_syscalls.nx nx_tier.nx nx_message.nx nx_actor_role_audio_grader.nx nx_actor_role_audio_grader_test.nx nx_actor_role_game_logic.nx nx_actor_role_game_logic_test.nx nx_actor_role_image_grader.nx nx_actor_role_image_grader_test.nx nx_actor_role_llm.nx nx_actor_role_llm_test.nx nx_actor_role_llm_v2.nx nx_actor_role_llm_v2_autoreg_test.

diagram shows first 10 each side; +0 more imports, +24 more importers in the complete lists below.

imports: nx_syscalls.nxnx_tier.nx

imported by: nx_actor_role_audio_grader.nxnx_actor_role_audio_grader_test.nxnx_actor_role_game_logic.nxnx_actor_role_game_logic_test.nxnx_actor_role_image_grader.nxnx_actor_role_image_grader_test.nxnx_actor_role_llm.nxnx_actor_role_llm_test.nxnx_actor_role_llm_v2.nxnx_actor_role_llm_v2_autoreg_test.nxnx_actor_role_llm_v2_real_autoreg_test.nxnx_actor_role_llm_v2_real_test.nxnx_actor_role_llm_v2_test.nxnx_bench_companion.nxnx_bench_companion_test.nxnx_bench_companion_timed_test.nxnx_bench_dist_emit_test.nxnx_bench_dist_persist_test.nxnx_bench_scale_dist_emit_test.nxnx_bench_scale_test.nxnx_bench_stress_autoreg_test.nxnx_bench_stress_emit_test.nxnx_bench_v1_vs_v2_test.nxnx_companion_compose_test.nxnx_dual_companion_compose_test.nxnx_dual_real_llm_compose_test.nxnx_dual_real_llm_emit_test.nxnx_message_test.nxnx_quad_companion_compose_test.nxnx_quad_real_emit_test.nxnx_session.nxnx_session_real_llm_compose_test.nxnx_session_test.nxnx_triple_companion_compose_test.nx

structs

51struct NxMessage
64struct NxMailbox
79struct NxSubscription
86struct NxMessageBus

consts

19const NX_MS_KIND_LLM_TOKEN: nx_int = 0
20const NX_MS_KIND_LLM_DONE: nx_int = 1
21const NX_MS_KIND_TOOL_CALL: nx_int = 2
22const NX_MS_KIND_TOOL_RESULT: nx_int = 3
23const NX_MS_KIND_IMAGE_TILE: nx_int = 4
24const NX_MS_KIND_AUDIO_FRAME: nx_int = 5
25const NX_MS_KIND_GAME_ACTION: nx_int = 6
26const NX_MS_KIND_GAME_STATE: nx_int = 7
27const NX_MS_KIND_OPERATOR_INPUT: nx_int = 8
28const NX_MS_KIND_SYSTEM_EVENT: nx_int = 9
29const NX_MS_KIND_ERROR_REPORT: nx_int = 10
30const NX_MS_KIND_N: nx_int = 11
34const NX_MS_MODE_UNICAST: nx_int = 0 // exactly one recipient
35const NX_MS_MODE_FANOUT: nx_int = 1 // all subscribers
36const NX_MS_MODE_BROADCAST: nx_int = 2 // every actor in scheduler
37const NX_MS_MODE_N: nx_int = 3
41const NX_MS_V_DELIVERED: nx_int = 0
42const NX_MS_V_QUEUED: nx_int = 1 // recipient not yet ready
43const NX_MS_V_DROPPED_FULL: nx_int = 2 // mailbox full
44const NX_MS_V_DROPPED_NO_ROUTE: nx_int = 3 // no recipient subscribed
45const NX_MS_V_INVALID: nx_int = 4
46const NX_MS_V_NULL: nx_int = 5
47const NX_MS_V_N: nx_int = 6
62const NX_MS_M_BYTES: nx_int = 64
75const NX_MS_BX_BYTES: nx_int = 64
84const NX_MS_SU_BYTES: nx_int = 16
97const NX_MS_BU_BYTES: nx_int = 64

functions

101func nx_ms_kind_is_valid(k: nx_int) -> nx_int
107func nx_ms_mode_is_valid(m: nx_int) -> nx_int
called by 1: main
113func nx_ms_v_is_valid(v: nx_int) -> nx_int
called by 1: main
121func nx_ms_bus_new(mb_capacity: nx_int,
called by 13: mainmainmainmainmainmain+7 calls 1: sys_mmap
140func _ms_mb_at(b: *NxMessageBus, idx: nx_int) -> *NxMailbox
147func _ms_sub_at(b: *NxMessageBus, idx: nx_int) -> *NxSubscription
156func nx_ms_register(b: *NxMessageBus, actor_id: nx_int) -> nx_int
called by 12: mainmainmainmainmainmain+6 calls 1: sys_mmap
174func nx_ms_find_mailbox(b: *NxMessageBus, actor_id: nx_int) -> *NxMailbox
187func nx_ms_subscribe(b: *NxMessageBus,
204func _ms_mb_push(mb: *NxMailbox,
234func nx_ms_send_unicast(b: *NxMessageBus,
250func nx_ms_send_fanout(b: *NxMessageBus,
277func nx_ms_send_broadcast(b: *NxMessageBus,
305func nx_ms_receive(b: *NxMessageBus, recipient: nx_int) -> *NxMessage
319func nx_ms_pending(b: *NxMessageBus, recipient: nx_int) -> nx_int
326func nx_ms_delivered_total(b: *NxMessageBus, recipient: nx_int) -> nx_int
called by 1: main calls 1: nx_ms_find_mailbox
333func nx_ms_dropped_total(b: *NxMessageBus, recipient: nx_int) -> nx_int
called by 1: main calls 1: nx_ms_find_mailbox
340func nx_ms_subscription_count(b: *NxMessageBus, kind: nx_int) -> nx_int