Interface: MakaioBusContext
Makaio Framework / bus-core / MakaioBusContext
Interface: MakaioBusContext
Section titled “Interface: MakaioBusContext”Defined in: ../../../packages/bus-core/src/types/bus.ts:42
Internal bus context containing handler registries and shared state.
Enables creation of isolated bus instances (e.g., for testing) by providing separate handler maps per instance.
Handler arrays are sorted by priority (highest first), with registration order preserved for handlers with equal priority.
Properties
Section titled “Properties”anyHandlers
Section titled “anyHandlers”anyHandlers:
Set<AnyHandler>
Defined in: ../../../packages/bus-core/src/types/bus.ts:46
eventHandlers
Section titled “eventHandlers”eventHandlers:
Map<string,HandlerEntry<EventHandler<unknown>>[]>
Defined in: ../../../packages/bus-core/src/types/bus.ts:43
interceptorHandlers
Section titled “interceptorHandlers”interceptorHandlers:
Map<string,InterceptorEntry<InterceptorHandler<unknown>>[]>
Defined in: ../../../packages/bus-core/src/types/bus.ts:45
namespaceRegistry
Section titled “namespaceRegistry”namespaceRegistry:
object
Defined in: ../../../packages/bus-core/src/types/bus.ts:48
__resetNamespaces
Section titled “__resetNamespaces”__resetNamespaces: (() =>
void) |undefined
Internal
Reset all registered namespaces (for testing only).
extendSubjectSchema()
Section titled “extendSubjectSchema()”extendSubjectSchema(
fullSubjectKey,additionalFields):void
Additively extend a registered subject’s schema with new fields.
For request subjects, extends the request and/or response ZodObject via .extend().
For event subjects, extends the event ZodObject directly.
Successive calls accumulate fields; if a later extension redefines an existing key, the later definition wins (Zod .extend() semantics).
Parameters
Section titled “Parameters”fullSubjectKey
Section titled “fullSubjectKey”string
Fully-qualified key (e.g., “session.list”)
additionalFields
Section titled “additionalFields”Readonly<{[k: string]: $ZodType<unknown, unknown, $ZodTypeInternals<unknown, unknown>>; }> | { request?: Readonly<{[k: string]: $ZodType<unknown, unknown, $ZodTypeInternals<unknown, unknown>>; }>; response?: Readonly<{[k: string]: $ZodType<unknown, unknown, $ZodTypeInternals<unknown, unknown>>; }>; }
For request subjects: { request?, response? } each a record
of Zod field definitions. For event subjects: a flat record of Zod field definitions.
Returns
Section titled “Returns”void
Throws
Section titled “Throws”Error if the subject is not registered or the existing schema is not a ZodObject
getSchema()
Section titled “getSchema()”getSchema(
subject):BaseSubjectSchema|undefined
Get the schema for a registered subject. Returns the unwrapped schema (LocalSubjectSchema and ChannelSubjectSchema wrappers are removed during registration).
Parameters
Section titled “Parameters”subject
Section titled “subject”string | SubjectDefinition
Subject identifier (e.g., “adapter.getCapabilities”)
Returns
Section titled “Returns”BaseSubjectSchema | undefined
Schema if found, undefined otherwise
isLocalSubject()
Section titled “isLocalSubject()”isLocalSubject(
subject):boolean
Check if a subject was registered as a local-only subject.
Local subjects must never be routed over transports. The __local flag
is stripped by unwrapSchema, so locality is tracked in a separate set
populated at registration time.
Parameters
Section titled “Parameters”subject
Section titled “subject”string
Full subject identifier (e.g., “widget.register”)
Returns
Section titled “Returns”boolean
True if the subject was wrapped with localSubject()
isRequestSubject()
Section titled “isRequestSubject()”isRequestSubject(
subject):boolean
Check if a subject is registered as a request subject.
Parameters
Section titled “Parameters”subject
Section titled “subject”string
Subject identifier
Returns
Section titled “Returns”boolean
True if subject exists and is a request schema
listRegisteredSubjects()
Section titled “listRegisteredSubjects()”listRegisteredSubjects():
RegisteredSubjectSchema[]
List all registered subjects with their runtime schema metadata.
Returns
Section titled “Returns”RegisteredSubjectSchema[]
Registered subjects sorted by fully-qualified subject key
registerNamespace()
Section titled “registerNamespace()”registerNamespace<
Domain,Schemas>(domain,schemas,options?):BusNamespace<Domain,SubjectRecordFromSchemaRecord<Schemas>,{ [KeyType in PropertyKey]: AllPropertiesOfUnion<FilterablePayload<SubjectRecordFromSchemaRecord<Schemas>[keyof Schemas & string]>>[KeyType] },Schemas>
Register a namespace in the runtime registry.
The FilterPayload type parameter is computed eagerly from the schemas, enabling type-safe filtering via withFilter().
Type Parameters
Section titled “Type Parameters”Domain
Section titled “Domain”Domain extends string
Schemas
Section titled “Schemas”Schemas extends Record<string, SubjectSchema>
Parameters
Section titled “Parameters”domain
Section titled “domain”Domain
Domain string
schemas
Section titled “schemas”Schemas
SubjectNamespace object
options?
Section titled “options?”Registration options (e.g., skipBusValidation)
Returns
Section titled “Returns”BusNamespace<Domain, SubjectRecordFromSchemaRecord<Schemas>, { [KeyType in PropertyKey]: AllPropertiesOfUnion<FilterablePayload<SubjectRecordFromSchemaRecord<Schemas>[keyof Schemas & string]>>[KeyType] }, Schemas>
The registered namespace with pre-computed FilterPayload type
shouldSkipValidation()
Section titled “shouldSkipValidation()”shouldSkipValidation(
subject):boolean
Check if validation should be skipped for a subject.
Returns true if the subject belongs to a namespace registered
with skipBusValidation: true.
Parameters
Section titled “Parameters”subject
Section titled “subject”string
Full subject identifier (e.g., “adapter:github-copilot.sdk.event”)
Returns
Section titled “Returns”boolean
True if validation should be skipped
remoteEventHandlers
Section titled “remoteEventHandlers”remoteEventHandlers:
Map<string,Set<string>>
Defined in: ../../../packages/bus-core/src/types/bus.ts:60
Set of transport names that have subscribed to each subject with event-only handlers (i.e. subscribe messages whose priority array was empty).
Tracked separately from remoteRequestHandlers because event-only subscriptions
produce no priority entries yet must still influence advertised-state decisions:
if a remote has event-only handlers for a subject, peers should still receive a
subscribe (with an empty priority array) rather than an unsubscribe.
remoteRequestHandlers
Section titled “remoteRequestHandlers”remoteRequestHandlers:
Map<string,object[]>
Defined in: ../../../packages/bus-core/src/types/bus.ts:50
Remote handler priorities from subscribe messages; keyed by subject pattern.
requestHandlers
Section titled “requestHandlers”requestHandlers:
Map<string,HandlerEntry<RequestHandler<unknown,unknown>>[]>
Defined in: ../../../packages/bus-core/src/types/bus.ts:44
transportRegistry
Section titled “transportRegistry”transportRegistry:
object
Defined in: ../../../packages/bus-core/src/types/bus.ts:47
all():
BusTransport[]
Returns
Section titled “Returns”getPendingReady()
Section titled “getPendingReady()”getPendingReady():
Promise<void>[]
Return all unresolved transport ready promises for dispatch-level gating.
Use Promise.all(registry.getPendingReady()) to await full initialization.
Returns
Section titled “Returns”Promise<void>[]
Array of pending ready promises (empty when all transports are ready)
getTransport()
Section titled “getTransport()”getTransport<
K>(name):BusTransportRegistry[K] |undefined
Type Parameters
Section titled “Type Parameters”K extends keyof BusTransportRegistry
Parameters
Section titled “Parameters”K
Returns
Section titled “Returns”BusTransportRegistry[K] | undefined
names()
Section titled “names()”names(): keyof
BusTransportRegistry[]
Returns
Section titled “Returns”keyof BusTransportRegistry[]
registerTransport()
Section titled “registerTransport()”registerTransport<
K>(name,transport):TransportRegistration
Type Parameters
Section titled “Type Parameters”K extends keyof BusTransportRegistry
Parameters
Section titled “Parameters”K
transport
Section titled “transport”Returns
Section titled “Returns”setLifecycleEmitter()
Section titled “setLifecycleEmitter()”setLifecycleEmitter(
emitter):void
Set the lifecycle emitter used to publish BusLifecycle.connected /
BusLifecycle.disconnected events whenever a transport connects or
disconnects.
Called once by the owning bus after construction. Subsequent transport registrations automatically pick up the emitter through the closure.
Parameters
Section titled “Parameters”emitter
Section titled “emitter”TransportLifecycleEmitter
Lifecycle emitter to install.
Returns
Section titled “Returns”void