@almadar/runtime 4.0.0 → 4.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,5 +1,5 @@
1
1
  import { Router } from 'express';
2
- import { I as IEventBus, g as RuntimeEvent, f as EventListener, U as Unsubscribe, T as TraitDefinition, R as RuntimeConfig, i as TransitionObserver, h as TraitState, j as TransitionResult, E as EvaluationContextExtensions, a as EffectHandlers } from './types-B8OfRFfV.js';
2
+ import { I as IEventBus, g as RuntimeEvent, f as EventListener, U as Unsubscribe, T as TraitDefinition, R as RuntimeConfig, i as TransitionObserver, h as TraitState, j as TransitionResult, E as EvaluationContextExtensions, a as EffectHandlers } from './types-CVSBlnzV.js';
3
3
  import { EventPayload, EntityRow, OrbitalSchema, Orbital, Trait, OrbitalDefinition, Entity, TraitTick } from '@almadar/core';
4
4
 
5
5
  /**
@@ -1,4 +1,4 @@
1
1
  import 'express';
2
- export { B as EffectResult, C as LoaderConfig, D as LocalPersistenceAdapter, O as OrbitalEventRequest, e as OrbitalEventResponse, F as OrbitalServerRuntime, f as OrbitalServerRuntimeConfig, P as PersistenceAdapter, R as RegisteredOrbital, k as RuntimeOrbital, l as RuntimeOrbitalSchema, m as RuntimeTrait, G as RuntimeTraitTick, H as createOrbitalServerRuntime } from './OrbitalServerRuntime-CXfyKGAS.js';
3
- import './types-B8OfRFfV.js';
2
+ export { B as EffectResult, C as LoaderConfig, D as LocalPersistenceAdapter, O as OrbitalEventRequest, e as OrbitalEventResponse, F as OrbitalServerRuntime, f as OrbitalServerRuntimeConfig, P as PersistenceAdapter, R as RegisteredOrbital, k as RuntimeOrbital, l as RuntimeOrbitalSchema, m as RuntimeTrait, G as RuntimeTraitTick, H as createOrbitalServerRuntime } from './OrbitalServerRuntime-DMe0zqCc.js';
3
+ import './types-CVSBlnzV.js';
4
4
  import '@almadar/core';
@@ -1,4 +1,4 @@
1
- import { EventBus, createUnifiedLoader, preprocessSchema, StateMachineManager, createContextFromBindings, EffectExecutor } from './chunk-WIWVHE3P.js';
1
+ import { EventBus, createUnifiedLoader, preprocessSchema, StateMachineManager, createContextFromBindings, EffectExecutor } from './chunk-7WP4AE6X.js';
2
2
  import './chunk-PZ5AY32C.js';
3
3
  import { Router } from 'express';
4
4
  import * as fs from 'fs';
@@ -953,10 +953,12 @@ var OrbitalServerRuntime = class {
953
953
  for (const trait of registered.traits) {
954
954
  if (!trait.listens) continue;
955
955
  for (const listener of trait.listens) {
956
- const cleanup = this.eventBus.on(listener.event, async (event) => {
956
+ const { bareEvent, matcher } = parseListenSource(listener, orbitalName);
957
+ const cleanup = this.eventBus.on(bareEvent, async (event) => {
958
+ if (!matcher(event.source)) return;
957
959
  if (this.config.debug) {
958
960
  console.log(
959
- `[OrbitalRuntime] ${orbitalName}.${trait.name} received: ${listener.event}`
961
+ `[OrbitalRuntime] ${orbitalName}.${trait.name} received: ${listener.event} (from ${event.source?.orbital ?? "?"}.${event.source?.trait ?? "?"})`
960
962
  );
961
963
  }
962
964
  let mappedPayload = event.payload;
@@ -1256,11 +1258,15 @@ var OrbitalServerRuntime = class {
1256
1258
  let bindingsRef = null;
1257
1259
  let contextRef = null;
1258
1260
  const handlers = {
1259
- emit: (event, eventPayload) => {
1261
+ emit: (event, eventPayload, source) => {
1260
1262
  if (this.config.debug) {
1261
- console.log(`[OrbitalRuntime] Emitting: ${event}`, eventPayload);
1263
+ console.log(`[OrbitalRuntime] Emitting: ${event}`, eventPayload, source);
1262
1264
  }
1263
- this.eventBus.emit(event, eventPayload);
1265
+ const stamp = source ?? {
1266
+ orbital: registered.schema.name,
1267
+ trait: traitName
1268
+ };
1269
+ this.eventBus.emit(event, eventPayload, stamp);
1264
1270
  emittedEvents.push({ event, payload: eventPayload });
1265
1271
  },
1266
1272
  set: async (targetId, field, value) => {
@@ -1594,7 +1600,7 @@ var OrbitalServerRuntime = class {
1594
1600
  const atomicExecutor = new EffectExecutor({
1595
1601
  handlers,
1596
1602
  bindings: bindingsRef ?? {},
1597
- context: contextRef ?? { traitName, state: "unknown", transition: "unknown" },
1603
+ context: contextRef ?? { traitName, orbitalName: registered.schema.name, state: "unknown", transition: "unknown" },
1598
1604
  debug: this.config.debug,
1599
1605
  contextExtensions: this.config.contextExtensions
1600
1606
  });
@@ -1655,6 +1661,7 @@ var OrbitalServerRuntime = class {
1655
1661
  bindingsRef = bindings;
1656
1662
  const context = {
1657
1663
  traitName,
1664
+ orbitalName: registered.schema.name,
1658
1665
  state: state?.currentState || "unknown",
1659
1666
  transition: "unknown",
1660
1667
  entityId
@@ -2000,6 +2007,53 @@ var OrbitalServerRuntime = class {
2000
2007
  function createOrbitalServerRuntime(config) {
2001
2008
  return new OrbitalServerRuntime(config);
2002
2009
  }
2010
+ function parseListenSource(listener, listenerOrbital) {
2011
+ const explicit = listener.source;
2012
+ if (explicit && typeof explicit === "object") {
2013
+ return {
2014
+ bareEvent: listener.event,
2015
+ matcher: buildMatcher(explicit, listenerOrbital)
2016
+ };
2017
+ }
2018
+ const key = listener.event;
2019
+ const parts = key.split(".");
2020
+ if (parts.length === 1) {
2021
+ return { bareEvent: key, matcher: () => true };
2022
+ }
2023
+ if (parts.length === 2) {
2024
+ const [sourceOrStar, eventName] = parts;
2025
+ if (sourceOrStar === "*") {
2026
+ return { bareEvent: eventName, matcher: () => true };
2027
+ }
2028
+ return {
2029
+ bareEvent: eventName,
2030
+ matcher: buildMatcher(
2031
+ { kind: "trait", trait: sourceOrStar },
2032
+ listenerOrbital
2033
+ )
2034
+ };
2035
+ }
2036
+ if (parts.length >= 3) {
2037
+ const eventName = parts[parts.length - 1];
2038
+ const trait = parts[parts.length - 2];
2039
+ const orbital = parts.slice(0, parts.length - 2).join(".");
2040
+ return {
2041
+ bareEvent: eventName,
2042
+ matcher: buildMatcher({ kind: "orbital", orbital, trait }, listenerOrbital)
2043
+ };
2044
+ }
2045
+ return { bareEvent: key, matcher: () => true };
2046
+ }
2047
+ function buildMatcher(src, listenerOrbital) {
2048
+ if (src.kind === "any") return () => true;
2049
+ if (src.kind === "trait") {
2050
+ const wantedTrait2 = src.trait;
2051
+ return (source) => !!source && source.orbital === listenerOrbital && source.trait === wantedTrait2;
2052
+ }
2053
+ const wantedOrbital = src.orbital;
2054
+ const wantedTrait = src.trait;
2055
+ return (source) => !!source && source.orbital === wantedOrbital && source.trait === wantedTrait;
2056
+ }
2003
2057
 
2004
2058
  export { LocalPersistenceAdapter, OrbitalServerRuntime, createOrbitalServerRuntime };
2005
2059
  //# sourceMappingURL=OrbitalServerRuntime.js.map