@m4trix/core 0.14.0 → 0.15.0

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.
@@ -106,15 +106,15 @@ declare class Agent<TParams, TTriggerEvent = never, TEmitEvent = never> {
106
106
 
107
107
  type BaseSchemaDefintion = Schema.Schema.Any;
108
108
 
109
- type EventDef$2 = AgentNetworkEventDef<string, Schema.Schema.Any>;
109
+ type EventDef$3 = AgentNetworkEventDef<string, Schema.Schema.Any>;
110
110
  /** Extracts the envelope type (name, meta, payload) from an event definition */
111
- type EventEnvelope<E extends EventDef$2> = E extends AgentNetworkEventDef<infer N, infer PS> ? {
111
+ type EventEnvelope$1<E extends EventDef$3> = E extends AgentNetworkEventDef<infer N, infer PS> ? {
112
112
  name: N;
113
113
  meta: EventMeta;
114
114
  payload: Schema.Schema.Type<PS>;
115
115
  } : never;
116
116
  /** What the user passes to emit() – no meta required */
117
- type EmitPayload<E extends EventDef$2> = E extends AgentNetworkEventDef<infer N, infer PS> ? {
117
+ type EmitPayload$1<E extends EventDef$3> = E extends AgentNetworkEventDef<infer N, infer PS> ? {
118
118
  name: N;
119
119
  payload: Schema.Schema.Type<PS>;
120
120
  } : never;
@@ -126,7 +126,7 @@ type LogicFn<TParams, TTriggerEvent, TEmitEvent> = (ctx: {
126
126
  runEvents: RunEvents;
127
127
  contextEvents: ContextEvents;
128
128
  }) => Promise<void>;
129
- declare class AgentFactory<TParams = unknown, TListensTo extends EventDef$2 = never, TEmits extends EventDef$2 = never> {
129
+ declare class AgentFactory<TParams = unknown, TListensTo extends EventDef$3 = never, TEmits extends EventDef$3 = never> {
130
130
  private _listensTo;
131
131
  private _emits;
132
132
  private _logic;
@@ -137,13 +137,13 @@ declare class AgentFactory<TParams = unknown, TListensTo extends EventDef$2 = ne
137
137
  getListensTo(): ReadonlyArray<TListensTo>;
138
138
  /** Union of all event definitions this agent can emit */
139
139
  getEmits(): ReadonlyArray<TEmits>;
140
- getLogic(): LogicFn<TParams, EventEnvelope<TListensTo>, EmitPayload<TEmits>> | undefined;
140
+ getLogic(): LogicFn<TParams, EventEnvelope$1<TListensTo>, EmitPayload$1<TEmits>> | undefined;
141
141
  static run(): AgentFactory<unknown, never, never>;
142
142
  params<TSchema extends BaseSchemaDefintion>(params: TSchema): AgentFactory<TSchema['Type'], TListensTo, TEmits>;
143
- listensTo<E extends EventDef$2>(events: Array<E>): AgentFactory<TParams, TListensTo | E, TEmits>;
144
- emits<E extends EventDef$2>(events: Array<E>): AgentFactory<TParams, TListensTo, TEmits | E>;
145
- logic(fn: LogicFn<TParams, EventEnvelope<TListensTo>, EmitPayload<TEmits>>): AgentFactory<TParams, TListensTo, TEmits>;
146
- produce(params: TParams): Agent<TParams, EventEnvelope<TListensTo>, EmitPayload<TEmits>>;
143
+ listensTo<E extends EventDef$3>(events: Array<E>): AgentFactory<TParams, TListensTo | E, TEmits>;
144
+ emits<E extends EventDef$3>(events: Array<E>): AgentFactory<TParams, TListensTo, TEmits | E>;
145
+ logic(fn: LogicFn<TParams, EventEnvelope$1<TListensTo>, EmitPayload$1<TEmits>>): AgentFactory<TParams, TListensTo, TEmits>;
146
+ produce(params: TParams): Agent<TParams, EventEnvelope$1<TListensTo>, EmitPayload$1<TEmits>>;
147
147
  }
148
148
 
149
149
  /**
@@ -171,7 +171,7 @@ declare const Sink: {
171
171
  httpStream(): SinkDef;
172
172
  };
173
173
  declare function isHttpStreamSink(sink: SinkDef): boolean;
174
- type EventDef$1 = AgentNetworkEventDef<string, Schema.Schema.Any>;
174
+ type EventDef$2 = AgentNetworkEventDef<string, Schema.Schema.Any>;
175
175
  type ChannelDef = {
176
176
  readonly _tag: 'ChannelDef';
177
177
  readonly name: ChannelName;
@@ -186,10 +186,10 @@ declare class ConfiguredChannel {
186
186
  private _events;
187
187
  private _sinks;
188
188
  constructor(name: ChannelName);
189
- events(events: ReadonlyArray<EventDef$1>): this;
189
+ events(events: ReadonlyArray<EventDef$2>): this;
190
190
  sink(sink: SinkDef): this;
191
191
  sinks(sinks: ReadonlyArray<SinkDef>): this;
192
- getEvents(): ReadonlyArray<EventDef$1>;
192
+ getEvents(): ReadonlyArray<EventDef$2>;
193
193
  getSinks(): ReadonlyArray<SinkDef>;
194
194
  }
195
195
  declare const Channel: {
@@ -298,7 +298,7 @@ type ExposedAPI = {
298
298
  createStream: StreamFactory;
299
299
  };
300
300
 
301
- type EventDef = AgentNetworkEventDef<string, Schema.Schema.Any>;
301
+ type EventDef$1 = AgentNetworkEventDef<string, Schema.Schema.Any>;
302
302
  /** Structural interface for any Agent – avoids variance issues with private fields. */
303
303
  interface AnyAgent {
304
304
  getId(): string;
@@ -326,7 +326,7 @@ type SpawnCallbackContext<TRegistry extends Record<string, AgentFactory> = Recor
326
326
  spawn: SpawnFn;
327
327
  };
328
328
  type SpawnerBuilder<TRegistry extends Record<string, AgentFactory> = Record<string, AgentFactory>> = {
329
- listen(channel: ConfiguredChannel, event: EventDef): SpawnerBuilder<TRegistry>;
329
+ listen(channel: ConfiguredChannel, event: EventDef$1): SpawnerBuilder<TRegistry>;
330
330
  registry<R extends Record<string, AgentFactory>>(reg: R): SpawnerBuilder<R>;
331
331
  defaultBinding(fn: (ctx: {
332
332
  kind: string;
@@ -341,6 +341,7 @@ type SetupContext = {
341
341
  createChannel: (name: string) => ConfiguredChannel;
342
342
  sink: typeof Sink;
343
343
  registerAgent: (agent: AnyAgent) => AgentBinding;
344
+ registerAggregator: (aggregator: AnyAgent) => AgentBinding;
344
345
  spawner: (factory: typeof AgentFactory) => SpawnerBuilder;
345
346
  };
346
347
  type AgentRegistration = {
@@ -351,7 +352,7 @@ type AgentRegistration = {
351
352
  type SpawnerRegistration = {
352
353
  factoryClass: typeof AgentFactory;
353
354
  listenChannel?: ConfiguredChannel;
354
- listenEvent?: EventDef;
355
+ listenEvent?: EventDef$1;
355
356
  registry: Record<string, AgentFactory>;
356
357
  defaultBindingFn?: (ctx: {
357
358
  kind: string;
@@ -372,6 +373,7 @@ declare class AgentNetwork {
372
373
  private addChannel;
373
374
  private setMainChannel;
374
375
  private registerAgentInternal;
376
+ private registerAggregatorInternal;
375
377
  private createSpawnerInternal;
376
378
  getChannels(): Map<string, ConfiguredChannel>;
377
379
  getMainChannel(): ConfiguredChannel | undefined;
@@ -401,6 +403,55 @@ declare class AgentNetwork {
401
403
  private runScoped;
402
404
  }
403
405
 
406
+ type EventDef = AgentNetworkEventDef<string, Schema.Schema.Any>;
407
+ type EventEnvelope<E extends EventDef> = E extends AgentNetworkEventDef<infer N, infer PS> ? {
408
+ name: N;
409
+ meta: EventMeta;
410
+ payload: Schema.Schema.Type<PS>;
411
+ } : never;
412
+ type EmitPayload<E extends EventDef> = E extends AgentNetworkEventDef<infer N, infer PS> ? {
413
+ name: N;
414
+ payload: Schema.Schema.Type<PS>;
415
+ } : never;
416
+ type EmitWhenFn<TTriggerEvent> = (ctx: {
417
+ triggerEvent: TTriggerEvent;
418
+ runEvents: RunEvents;
419
+ contextEvents: ContextEvents;
420
+ }) => boolean | Promise<boolean>;
421
+ type MapToEmitFn<TTriggerEvent, TEmitEvent> = (ctx: {
422
+ triggerEvent: TTriggerEvent;
423
+ emit: (event: TEmitEvent) => void;
424
+ runEvents: RunEvents;
425
+ contextEvents: ContextEvents;
426
+ }) => void | Promise<void>;
427
+ declare class EventAggregator<TListensTo extends EventDef = never, TEmits extends EventDef = never> {
428
+ private _listensTo;
429
+ private _emits;
430
+ private _emitWhen;
431
+ private constructor();
432
+ static listensTo<E extends EventDef>(events: Array<E>): EventAggregator<E, never>;
433
+ emits<E extends EventDef>(events: Array<E>): EventAggregator<TListensTo, TEmits | E>;
434
+ emitWhen(fn: EmitWhenFn<EventEnvelope<TListensTo>>): EventAggregator<TListensTo, TEmits>;
435
+ mapToEmit(fn: MapToEmitFn<EventEnvelope<TListensTo>, EmitPayload<TEmits>>): EventAggregatorInstance<EventEnvelope<TListensTo>, EmitPayload<TEmits>>;
436
+ }
437
+ type EventAggregatorInstanceCtor<TTriggerEvent, TEmitEvent> = {
438
+ listensTo: ReadonlyArray<string>;
439
+ emitWhen: EmitWhenFn<TTriggerEvent>;
440
+ mapToEmit: MapToEmitFn<TTriggerEvent, TEmitEvent>;
441
+ };
442
+ declare class EventAggregatorInstance<TTriggerEvent, TEmitEvent> {
443
+ #private;
444
+ constructor({ listensTo, emitWhen, mapToEmit, }: EventAggregatorInstanceCtor<TTriggerEvent, TEmitEvent>);
445
+ getId(): string;
446
+ getListensTo(): readonly string[];
447
+ invoke(options?: {
448
+ triggerEvent?: TTriggerEvent;
449
+ emit?: (event: TEmitEvent) => void;
450
+ runEvents?: RunEvents;
451
+ contextEvents?: ContextEvents;
452
+ }): Promise<void>;
453
+ }
454
+
404
455
  /**
405
456
  * Branded type for layer/dependency names. Enforces camelCase at runtime via refinement.
406
457
  * Used internally for parsing, validation, and uniqueness enforcement across layers.
@@ -590,4 +641,4 @@ declare const consoleTracer: Tracer.Tracer;
590
641
  */
591
642
  declare const consoleTracerLayer: Layer.Layer<never>;
592
643
 
593
- export { Agent, AgentBinding, AgentFactory, AgentNetwork, AgentNetworkEvent, AgentNetworkEventDef, AnyAgent, AuthResult, Channel, ChannelDef, ChannelName, ConfiguredChannel, ContextEvents, DepedencyLayer, DepedencyLayerDef, Done, EmitPayload, EnvelopeLike, EventEnvelope, EventMeta, EventMetaSchema, EventPlane, ExposeAuthError, ExposeOptions, ExposeRequest, ExposeSelect, ExposedAPI, ExposedStream, ExpressEndpoint, ExpressEndpointOptions, ExpressHandler, ExpressRequest, ExpressResponse, LayerName, LayersFromDeps, NextEndpoint, NextEndpointOptions, NextGetHandler, OnRequestContext, RunEvents, SetupContext, Sink, SinkDef, Skill, SkillDefineContext, SkillInstance, SkillRuntimeOptions, SpawnCallbackContext, SpawnFn, SpawnerBuilder, StreamFactory, UnboundEvent, consoleTracer, consoleTracerLayer, formatSSE, isHttpStreamSink, toSSEStream };
644
+ export { Agent, AgentBinding, AgentFactory, AgentNetwork, AgentNetworkEvent, AgentNetworkEventDef, AnyAgent, AuthResult, Channel, ChannelDef, ChannelName, ConfiguredChannel, ContextEvents, DepedencyLayer, DepedencyLayerDef, Done, EmitPayload$1 as EmitPayload, EnvelopeLike, EventAggregator, EventAggregatorInstance, EventEnvelope$1 as EventEnvelope, EventMeta, EventMetaSchema, EventPlane, ExposeAuthError, ExposeOptions, ExposeRequest, ExposeSelect, ExposedAPI, ExposedStream, ExpressEndpoint, ExpressEndpointOptions, ExpressHandler, ExpressRequest, ExpressResponse, LayerName, LayersFromDeps, NextEndpoint, NextEndpointOptions, NextGetHandler, OnRequestContext, RunEvents, SetupContext, Sink, SinkDef, Skill, SkillDefineContext, SkillInstance, SkillRuntimeOptions, SpawnCallbackContext, SpawnFn, SpawnerBuilder, StreamFactory, UnboundEvent, consoleTracer, consoleTracerLayer, formatSSE, isHttpStreamSink, toSSEStream };
@@ -501,6 +501,7 @@ var AgentNetwork = class _AgentNetwork {
501
501
  createChannel: (name) => network.addChannel(name),
502
502
  sink: Sink,
503
503
  registerAgent: (agent) => network.registerAgentInternal(agent),
504
+ registerAggregator: (aggregator) => network.registerAggregatorInternal(aggregator),
504
505
  spawner: (factory) => network.createSpawnerInternal(factory)
505
506
  };
506
507
  callback(ctx);
@@ -535,6 +536,9 @@ var AgentNetwork = class _AgentNetwork {
535
536
  };
536
537
  return binding;
537
538
  }
539
+ registerAggregatorInternal(aggregator) {
540
+ return this.registerAgentInternal(aggregator);
541
+ }
538
542
  createSpawnerInternal(factoryClass) {
539
543
  const reg = {
540
544
  factoryClass,
@@ -656,20 +660,110 @@ var AgentNetworkEvent = {
656
660
  };
657
661
  }
658
662
  };
659
- var _params, _logic, _id, _listensTo;
663
+ var EventAggregator = class _EventAggregator {
664
+ constructor({
665
+ listensTo = [],
666
+ emits = [],
667
+ emitWhen
668
+ }) {
669
+ this._listensTo = listensTo;
670
+ this._emits = emits;
671
+ this._emitWhen = emitWhen;
672
+ }
673
+ static listensTo(events) {
674
+ return new _EventAggregator({ listensTo: [...events] });
675
+ }
676
+ emits(events) {
677
+ return new _EventAggregator({
678
+ listensTo: this._listensTo,
679
+ emits: [...this._emits, ...events],
680
+ emitWhen: this._emitWhen
681
+ });
682
+ }
683
+ emitWhen(fn) {
684
+ return new _EventAggregator({
685
+ listensTo: this._listensTo,
686
+ emits: this._emits,
687
+ emitWhen: fn
688
+ });
689
+ }
690
+ mapToEmit(fn) {
691
+ return new EventAggregatorInstance({
692
+ listensTo: this._listensTo.map((eventDef) => eventDef.name),
693
+ emitWhen: this._emitWhen ?? (() => true),
694
+ mapToEmit: fn
695
+ });
696
+ }
697
+ };
698
+ var _id, _listensTo, _emitWhen, _mapToEmit;
699
+ var EventAggregatorInstance = class {
700
+ constructor({
701
+ listensTo,
702
+ emitWhen,
703
+ mapToEmit
704
+ }) {
705
+ __privateAdd(this, _id, void 0);
706
+ __privateAdd(this, _listensTo, void 0);
707
+ __privateAdd(this, _emitWhen, void 0);
708
+ __privateAdd(this, _mapToEmit, void 0);
709
+ __privateSet(this, _id, `event-aggregator-${randomUUID()}`);
710
+ __privateSet(this, _listensTo, listensTo);
711
+ __privateSet(this, _emitWhen, emitWhen);
712
+ __privateSet(this, _mapToEmit, mapToEmit);
713
+ }
714
+ getId() {
715
+ return __privateGet(this, _id);
716
+ }
717
+ getListensTo() {
718
+ return __privateGet(this, _listensTo);
719
+ }
720
+ async invoke(options) {
721
+ const { triggerEvent, emit, runEvents, contextEvents } = options ?? {};
722
+ if (triggerEvent == null) {
723
+ return;
724
+ }
725
+ const emitFn = emit ?? ((_event) => {
726
+ });
727
+ const runEventsValue = runEvents ?? [];
728
+ const contextEventsValue = contextEvents ?? {
729
+ all: [],
730
+ byRun: () => [],
731
+ map: /* @__PURE__ */ new Map()
732
+ };
733
+ const shouldEmit = await __privateGet(this, _emitWhen).call(this, {
734
+ triggerEvent,
735
+ runEvents: runEventsValue,
736
+ contextEvents: contextEventsValue
737
+ });
738
+ if (!shouldEmit) {
739
+ return;
740
+ }
741
+ await __privateGet(this, _mapToEmit).call(this, {
742
+ triggerEvent,
743
+ emit: emitFn,
744
+ runEvents: runEventsValue,
745
+ contextEvents: contextEventsValue
746
+ });
747
+ }
748
+ };
749
+ _id = new WeakMap();
750
+ _listensTo = new WeakMap();
751
+ _emitWhen = new WeakMap();
752
+ _mapToEmit = new WeakMap();
753
+ var _params, _logic, _id2, _listensTo2;
660
754
  var Agent = class {
661
755
  constructor(logic, params, listensTo) {
662
756
  __privateAdd(this, _params, void 0);
663
757
  __privateAdd(this, _logic, void 0);
664
- __privateAdd(this, _id, void 0);
665
- __privateAdd(this, _listensTo, void 0);
758
+ __privateAdd(this, _id2, void 0);
759
+ __privateAdd(this, _listensTo2, void 0);
666
760
  __privateSet(this, _logic, logic);
667
761
  __privateSet(this, _params, params);
668
- __privateSet(this, _id, `agent-${randomUUID()}`);
669
- __privateSet(this, _listensTo, listensTo ?? []);
762
+ __privateSet(this, _id2, `agent-${randomUUID()}`);
763
+ __privateSet(this, _listensTo2, listensTo ?? []);
670
764
  }
671
765
  getListensTo() {
672
- return __privateGet(this, _listensTo);
766
+ return __privateGet(this, _listensTo2);
673
767
  }
674
768
  async invoke(options) {
675
769
  const { triggerEvent, emit, runEvents, contextEvents } = options ?? {};
@@ -688,13 +782,13 @@ var Agent = class {
688
782
  });
689
783
  }
690
784
  getId() {
691
- return __privateGet(this, _id);
785
+ return __privateGet(this, _id2);
692
786
  }
693
787
  };
694
788
  _params = new WeakMap();
695
789
  _logic = new WeakMap();
696
- _id = new WeakMap();
697
- _listensTo = new WeakMap();
790
+ _id2 = new WeakMap();
791
+ _listensTo2 = new WeakMap();
698
792
 
699
793
  // src/matrix/agent-factory.ts
700
794
  var AgentFactory = class _AgentFactory {
@@ -1139,6 +1233,6 @@ var consoleTracerLayer = Layer.setTracer(
1139
1233
  consoleTracer
1140
1234
  );
1141
1235
 
1142
- export { Agent, AgentFactory, AgentNetwork, AgentNetworkEvent, Channel, ChannelName, ConfiguredChannel, DepedencyLayer, Done, EventMetaSchema, ExposeAuthError, ExpressEndpoint, LayerName, NextEndpoint, Sink, Skill, consoleTracer, consoleTracerLayer, formatSSE, isHttpStreamSink, toSSEStream };
1236
+ export { Agent, AgentFactory, AgentNetwork, AgentNetworkEvent, Channel, ChannelName, ConfiguredChannel, DepedencyLayer, Done, EventAggregator, EventAggregatorInstance, EventMetaSchema, ExposeAuthError, ExpressEndpoint, LayerName, NextEndpoint, Sink, Skill, consoleTracer, consoleTracerLayer, formatSSE, isHttpStreamSink, toSSEStream };
1143
1237
  //# sourceMappingURL=out.js.map
1144
1238
  //# sourceMappingURL=index.js.map