xcomponent-ai 0.2.2 → 0.3.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.
Files changed (42) hide show
  1. package/EVENT-ACCUMULATION-GUIDE.md +505 -0
  2. package/EXTERNAL-API.md +719 -0
  3. package/LLM-GUIDE.md +575 -0
  4. package/QUICKSTART.md +1 -1
  5. package/SCALABILITY.md +455 -0
  6. package/dist/cli.js +170 -63
  7. package/dist/cli.js.map +1 -1
  8. package/dist/component-registry.d.ts +35 -4
  9. package/dist/component-registry.d.ts.map +1 -1
  10. package/dist/component-registry.js +194 -9
  11. package/dist/component-registry.js.map +1 -1
  12. package/dist/external-broker-api.d.ts +205 -0
  13. package/dist/external-broker-api.d.ts.map +1 -0
  14. package/dist/external-broker-api.js +222 -0
  15. package/dist/external-broker-api.js.map +1 -0
  16. package/dist/fsm-runtime.d.ts +47 -17
  17. package/dist/fsm-runtime.d.ts.map +1 -1
  18. package/dist/fsm-runtime.js +333 -136
  19. package/dist/fsm-runtime.js.map +1 -1
  20. package/dist/index.d.ts +4 -0
  21. package/dist/index.d.ts.map +1 -1
  22. package/dist/index.js +11 -1
  23. package/dist/index.js.map +1 -1
  24. package/dist/mermaid-generator.d.ts.map +1 -1
  25. package/dist/mermaid-generator.js +1 -17
  26. package/dist/mermaid-generator.js.map +1 -1
  27. package/dist/message-broker.d.ts +116 -0
  28. package/dist/message-broker.d.ts.map +1 -0
  29. package/dist/message-broker.js +225 -0
  30. package/dist/message-broker.js.map +1 -0
  31. package/dist/types.d.ts +92 -19
  32. package/dist/types.d.ts.map +1 -1
  33. package/examples/advanced-patterns-demo.yaml +339 -0
  34. package/examples/cross-component-demo.yaml +68 -0
  35. package/examples/distributed-demo/README.md +234 -0
  36. package/examples/distributed-demo/order.yaml +71 -0
  37. package/examples/distributed-demo/payment.yaml +60 -0
  38. package/examples/event-accumulation-demo.yaml +172 -0
  39. package/examples/explicit-transitions-demo.yaml +236 -0
  40. package/examples/payment-receiver.yaml +56 -0
  41. package/package.json +8 -1
  42. package/public/dashboard.html +647 -110
@@ -15,16 +15,30 @@
15
15
  Object.defineProperty(exports, "__esModule", { value: true });
16
16
  exports.ComponentRegistry = void 0;
17
17
  const events_1 = require("events");
18
+ const message_broker_1 = require("./message-broker");
18
19
  /**
19
20
  * ComponentRegistry manages multiple components and enables cross-component communication
20
21
  */
21
22
  class ComponentRegistry extends events_1.EventEmitter {
22
23
  runtimes;
23
24
  components;
24
- constructor() {
25
+ broker;
26
+ /**
27
+ * Create a ComponentRegistry
28
+ *
29
+ * @param broker Message broker for cross-component communication (defaults to InMemoryMessageBroker)
30
+ */
31
+ constructor(broker) {
25
32
  super();
26
33
  this.runtimes = new Map();
27
34
  this.components = new Map();
35
+ this.broker = broker || new message_broker_1.InMemoryMessageBroker();
36
+ }
37
+ /**
38
+ * Initialize the registry and connect the message broker
39
+ */
40
+ async initialize() {
41
+ await this.broker.connect();
28
42
  }
29
43
  /**
30
44
  * Register a component with its runtime
@@ -38,6 +52,61 @@ class ComponentRegistry extends events_1.EventEmitter {
38
52
  }
39
53
  this.runtimes.set(component.name, runtime);
40
54
  this.components.set(component.name, component);
55
+ // Set registry reference in runtime for cross-component communication
56
+ runtime.setRegistry(this);
57
+ // Forward runtime events to registry (for ExternalBrokerAPI and monitoring)
58
+ runtime.on('state_change', (data) => {
59
+ this.emit('state_change', { ...data, componentName: component.name });
60
+ });
61
+ runtime.on('instance_created', (data) => {
62
+ this.emit('instance_created', { ...data, componentName: component.name });
63
+ });
64
+ runtime.on('instance_disposed', (data) => {
65
+ this.emit('instance_disposed', { ...data, componentName: component.name });
66
+ });
67
+ runtime.on('error', (data) => {
68
+ this.emit('instance_error', { ...data, componentName: component.name });
69
+ });
70
+ // Subscribe to messages for this component via message broker
71
+ this.broker.subscribe(component.name, async (message) => {
72
+ try {
73
+ // Get instances of the target machine
74
+ let instances;
75
+ if (!message.targetState || message.targetState === '*') {
76
+ // Broadcast to all instances of this machine (any state)
77
+ instances = runtime.getAllInstances().filter(inst => inst.machineName === message.targetMachine);
78
+ }
79
+ else {
80
+ // Filter by specific state
81
+ instances = runtime.getAllInstances().filter(inst => inst.machineName === message.targetMachine &&
82
+ inst.currentState === message.targetState);
83
+ }
84
+ // Apply property filters if specified
85
+ if (message.filters && message.filters.length > 0) {
86
+ instances = instances.filter(inst => this.matchesFilters(inst, message.filters));
87
+ }
88
+ // Send event to each matching instance
89
+ for (const instance of instances) {
90
+ try {
91
+ await runtime.sendEvent(instance.id, message.event);
92
+ }
93
+ catch (error) {
94
+ this.emit('broadcast_error', {
95
+ componentName: component.name,
96
+ instanceId: instance.id,
97
+ error: error instanceof Error ? error.message : String(error),
98
+ });
99
+ }
100
+ }
101
+ }
102
+ catch (error) {
103
+ this.emit('message_error', {
104
+ componentName: component.name,
105
+ message,
106
+ error: error instanceof Error ? error.message : String(error),
107
+ });
108
+ }
109
+ });
41
110
  // Forward runtime events
42
111
  this.forwardRuntimeEvents(component.name, runtime);
43
112
  this.emit('component_registered', {
@@ -144,18 +213,74 @@ class ComponentRegistry extends events_1.EventEmitter {
144
213
  /**
145
214
  * Broadcast event to instances in a specific component
146
215
  *
216
+ * Uses the configured message broker (in-memory or distributed)
217
+ *
147
218
  * @param componentName Target component name
148
219
  * @param machineName Target machine name
149
- * @param currentState Current state filter
150
220
  * @param event Event to broadcast
221
+ * @param sourceComponent Source component name (for tracing)
222
+ * @param filters Optional property filters to target specific instances
223
+ * @param currentState Optional state filter. Use '*' or omit to broadcast to all states
151
224
  * @returns Number of instances processed
152
225
  */
153
- async broadcastToComponent(componentName, machineName, currentState, event) {
154
- const runtime = this.runtimes.get(componentName);
155
- if (!runtime) {
156
- throw new Error(`Component ${componentName} not found`);
226
+ async broadcastToComponent(componentName, machineName, event, sourceComponent, filters, currentState) {
227
+ // Check if target component exists (only for in-memory broker)
228
+ if (this.broker instanceof message_broker_1.InMemoryMessageBroker) {
229
+ const runtime = this.runtimes.get(componentName);
230
+ if (!runtime) {
231
+ throw new Error(`Component ${componentName} not found`);
232
+ }
233
+ }
234
+ // Publish message via broker (works for both in-memory and distributed)
235
+ const message = {
236
+ sourceComponent: sourceComponent || 'unknown',
237
+ targetComponent: componentName,
238
+ targetMachine: machineName,
239
+ targetState: currentState || '*',
240
+ event,
241
+ filters, // Include filters for distributed mode
242
+ };
243
+ const channel = `xcomponent:${componentName}`;
244
+ // For in-memory broker, we can directly process instances and return the count
245
+ // For distributed broker, we publish to Redis and can't know the count
246
+ if (this.broker instanceof message_broker_1.InMemoryMessageBroker) {
247
+ const runtime = this.runtimes.get(componentName);
248
+ // Get instances of the target machine
249
+ let instances;
250
+ if (!currentState || currentState === '*') {
251
+ // Broadcast to all instances of this machine (any state)
252
+ instances = runtime.getAllInstances().filter(inst => inst.machineName === machineName);
253
+ }
254
+ else {
255
+ // Filter by specific state
256
+ instances = runtime.getAllInstances().filter(inst => inst.machineName === machineName && inst.currentState === currentState);
257
+ }
258
+ // Apply property filters if specified
259
+ if (filters && filters.length > 0) {
260
+ instances = instances.filter(inst => this.matchesFilters(inst, filters));
261
+ }
262
+ // Send event to each matching instance
263
+ let count = 0;
264
+ for (const instance of instances) {
265
+ try {
266
+ await runtime.sendEvent(instance.id, event);
267
+ count++;
268
+ }
269
+ catch (error) {
270
+ this.emit('broadcast_error', {
271
+ componentName,
272
+ instanceId: instance.id,
273
+ error: error instanceof Error ? error.message : String(error),
274
+ });
275
+ }
276
+ }
277
+ return count;
278
+ }
279
+ else {
280
+ // Distributed mode: publish to broker (the handler will process it)
281
+ await this.broker.publish(channel, message);
282
+ return 0; // Count not available in distributed mode
157
283
  }
158
- return await runtime.broadcastEvent(machineName, currentState, event);
159
284
  }
160
285
  /**
161
286
  * Broadcast event to all components
@@ -171,7 +296,7 @@ class ComponentRegistry extends events_1.EventEmitter {
171
296
  let total = 0;
172
297
  for (const [componentName, runtime] of this.runtimes) {
173
298
  try {
174
- const count = await runtime.broadcastEvent(machineName, currentState, event);
299
+ const count = await runtime.broadcastEvent(machineName, event, currentState);
175
300
  total += count;
176
301
  }
177
302
  catch (error) {
@@ -338,6 +463,54 @@ class ComponentRegistry extends events_1.EventEmitter {
338
463
  }
339
464
  return [];
340
465
  }
466
+ /**
467
+ * Check if an instance matches all property filters
468
+ *
469
+ * @param instance FSM instance to check
470
+ * @param filters Property filters to apply
471
+ * @returns true if instance matches ALL filters (AND logic)
472
+ */
473
+ matchesFilters(instance, filters) {
474
+ for (const filter of filters) {
475
+ const value = this.getNestedProperty(instance.context, filter.property);
476
+ const operator = filter.operator || '===';
477
+ let matches = false;
478
+ switch (operator) {
479
+ case '===':
480
+ matches = value === filter.value;
481
+ break;
482
+ case '!==':
483
+ matches = value !== filter.value;
484
+ break;
485
+ case '>':
486
+ matches = value > filter.value;
487
+ break;
488
+ case '<':
489
+ matches = value < filter.value;
490
+ break;
491
+ case '>=':
492
+ matches = value >= filter.value;
493
+ break;
494
+ case '<=':
495
+ matches = value <= filter.value;
496
+ break;
497
+ }
498
+ if (!matches) {
499
+ return false; // AND logic: all filters must match
500
+ }
501
+ }
502
+ return true;
503
+ }
504
+ /**
505
+ * Get nested property value from object using dot notation
506
+ *
507
+ * @param obj Object to get property from
508
+ * @param path Property path (e.g., "customer.id", "amount")
509
+ * @returns Property value or undefined
510
+ */
511
+ getNestedProperty(obj, path) {
512
+ return path.split('.').reduce((current, prop) => current?.[prop], obj);
513
+ }
341
514
  /**
342
515
  * Forward runtime events to registry
343
516
  */
@@ -364,7 +537,17 @@ class ComponentRegistry extends events_1.EventEmitter {
364
537
  /**
365
538
  * Dispose all components and cleanup
366
539
  */
367
- dispose() {
540
+ async dispose() {
541
+ // Unsubscribe from all component messages
542
+ for (const componentName of this.components.keys()) {
543
+ try {
544
+ this.broker.unsubscribe(componentName);
545
+ }
546
+ catch (error) {
547
+ console.error(`Error unsubscribing component ${componentName}:`, error);
548
+ }
549
+ }
550
+ // Dispose all runtimes
368
551
  for (const [componentName, runtime] of this.runtimes) {
369
552
  try {
370
553
  runtime.dispose();
@@ -373,6 +556,8 @@ class ComponentRegistry extends events_1.EventEmitter {
373
556
  console.error(`Error disposing component ${componentName}:`, error);
374
557
  }
375
558
  }
559
+ // Disconnect broker
560
+ await this.broker.disconnect();
376
561
  this.runtimes.clear();
377
562
  this.components.clear();
378
563
  this.removeAllListeners();
@@ -1 +1 @@
1
- {"version":3,"file":"component-registry.js","sourceRoot":"","sources":["../src/component-registry.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;GAYG;;;AAEH,mCAAsC;AAYtC;;GAEG;AACH,MAAa,iBAAkB,SAAQ,qBAAY;IACzC,QAAQ,CAA0B;IAClC,UAAU,CAAyB;IAE3C;QACE,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,QAAQ,GAAG,IAAI,GAAG,EAAE,CAAC;QAC1B,IAAI,CAAC,UAAU,GAAG,IAAI,GAAG,EAAE,CAAC;IAC9B,CAAC;IAED;;;;;OAKG;IACH,iBAAiB,CAAC,SAAoB,EAAE,OAAmB;QACzD,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC;YACtC,MAAM,IAAI,KAAK,CAAC,aAAa,SAAS,CAAC,IAAI,wBAAwB,CAAC,CAAC;QACvE,CAAC;QAED,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QAC3C,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;QAE/C,yBAAyB;QACzB,IAAI,CAAC,oBAAoB,CAAC,SAAS,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QAEnD,IAAI,CAAC,IAAI,CAAC,sBAAsB,EAAE;YAChC,aAAa,EAAE,SAAS,CAAC,IAAI;YAC7B,OAAO,EAAE,SAAS,CAAC,OAAO;YAC1B,YAAY,EAAE,SAAS,CAAC,aAAa,CAAC,MAAM;SAC7C,CAAC,CAAC;IACL,CAAC;IAED;;;;OAIG;IACH,mBAAmB,CAAC,aAAqB;QACvC,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;QACjD,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,MAAM,IAAI,KAAK,CAAC,aAAa,aAAa,YAAY,CAAC,CAAC;QAC1D,CAAC;QAED,kBAAkB;QAClB,OAAO,CAAC,OAAO,EAAE,CAAC;QAElB,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;QACpC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;QAEtC,IAAI,CAAC,IAAI,CAAC,wBAAwB,EAAE,EAAE,aAAa,EAAE,CAAC,CAAC;IACzD,CAAC;IAED;;;;;OAKG;IACH,UAAU,CAAC,aAAqB;QAC9B,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;IAC1C,CAAC;IAED;;;;;OAKG;IACH,YAAY,CAAC,aAAqB;QAChC,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;IAC5C,CAAC;IAED;;;;;OAKG;IACH,YAAY,CAAC,aAAqB;QAChC,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;IAC1C,CAAC;IAED;;;;OAIG;IACH,iBAAiB;QACf,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC;IAC1C,CAAC;IAED;;;;;OAKG;IACH,gBAAgB,CAAC,aAAqB;QACpC,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;QACjD,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;QAErD,IAAI,CAAC,OAAO,IAAI,CAAC,SAAS,EAAE,CAAC;YAC3B,OAAO,SAAS,CAAC;QACnB,CAAC;QAED,OAAO;YACL,IAAI,EAAE,SAAS,CAAC,IAAI;YACpB,OAAO;YACP,OAAO,EAAE,SAAS,CAAC,OAAO;YAC1B,YAAY,EAAE,SAAS,CAAC,aAAa,CAAC,MAAM;YAC5C,aAAa,EAAE,OAAO,CAAC,eAAe,EAAE,CAAC,MAAM;SAChD,CAAC;IACJ,CAAC;IAED;;;;OAIG;IACH,mBAAmB;QACjB,OAAO,IAAI,CAAC,iBAAiB,EAAE;aAC5B,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;aACxC,MAAM,CAAC,CAAC,IAAI,EAAyB,EAAE,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC;IACjE,CAAC;IAED;;;;;;OAMG;IACH,KAAK,CAAC,oBAAoB,CACxB,aAAqB,EACrB,UAAkB,EAClB,KAAe;QAEf,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;QACjD,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,MAAM,IAAI,KAAK,CAAC,aAAa,aAAa,YAAY,CAAC,CAAC;QAC1D,CAAC;QAED,MAAM,OAAO,CAAC,SAAS,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;IAC7C,CAAC;IAED;;;;;;;;OAQG;IACH,KAAK,CAAC,oBAAoB,CACxB,aAAqB,EACrB,WAAmB,EACnB,YAAoB,EACpB,KAAe;QAEf,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;QACjD,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,MAAM,IAAI,KAAK,CAAC,aAAa,aAAa,YAAY,CAAC,CAAC;QAC1D,CAAC;QAED,OAAO,MAAM,OAAO,CAAC,cAAc,CAAC,WAAW,EAAE,YAAY,EAAE,KAAK,CAAC,CAAC;IACxE,CAAC;IAED;;;;;;;;;OASG;IACH,KAAK,CAAC,cAAc,CAClB,WAAmB,EACnB,YAAoB,EACpB,KAAe;QAEf,IAAI,KAAK,GAAG,CAAC,CAAC;QAEd,KAAK,MAAM,CAAC,aAAa,EAAE,OAAO,CAAC,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YACrD,IAAI,CAAC;gBACH,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,cAAc,CAAC,WAAW,EAAE,YAAY,EAAE,KAAK,CAAC,CAAC;gBAC7E,KAAK,IAAI,KAAK,CAAC;YACjB,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE;oBAC3B,aAAa;oBACb,WAAW;oBACX,YAAY;oBACZ,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;iBAC9D,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QAED,OAAO,KAAK,CAAC;IACf,CAAC;IAED;;;;;;;OAOG;IACH,yBAAyB,CACvB,aAAqB,EACrB,WAAmB,EACnB,cAAmC;QAEnC,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;QACjD,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,MAAM,IAAI,KAAK,CAAC,aAAa,aAAa,YAAY,CAAC,CAAC;QAC1D,CAAC;QAED,OAAO,OAAO,CAAC,cAAc,CAAC,WAAW,EAAE,cAAc,CAAC,CAAC;IAC7D,CAAC;IAED;;;;;OAKG;IACH,YAAY,CAAC,UAAkB;QAC7B,KAAK,MAAM,CAAC,aAAa,EAAE,OAAO,CAAC,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YACrD,MAAM,QAAQ,GAAG,OAAO,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;YACjD,IAAI,QAAQ,EAAE,CAAC;gBACb,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,CAAC;YACrC,CAAC;QACH,CAAC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;IAED;;;;OAIG;IACH,eAAe;QACb,MAAM,MAAM,GAA4D,EAAE,CAAC;QAE3E,KAAK,MAAM,CAAC,aAAa,EAAE,OAAO,CAAC,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YACrD,MAAM,SAAS,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC;YAC5C,SAAS,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE;gBAC3B,MAAM,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,aAAa,EAAE,CAAC,CAAC;YAC3C,CAAC,CAAC,CAAC;QACL,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;IAED;;;;OAIG;IACH,QAAQ;QAMN,MAAM,UAAU,GAAG,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAE9C,OAAO;YACL,cAAc,EAAE,UAAU,CAAC,MAAM;YACjC,cAAc,EAAE,UAAU,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,aAAa,EAAE,CAAC,CAAC;YACvE,aAAa,EAAE,UAAU,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,YAAY,EAAE,CAAC,CAAC;YACrE,UAAU,EAAE,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;gBAC/B,IAAI,EAAE,CAAC,CAAC,IAAI;gBACZ,SAAS,EAAE,CAAC,CAAC,aAAa;gBAC1B,QAAQ,EAAE,CAAC,CAAC,YAAY;aACzB,CAAC,CAAC;SACJ,CAAC;IACJ,CAAC;IAED;;;;;;;;OAQG;IACH,KAAK,CAAC,0BAA0B,CAAC,OAAe;QAC9C,MAAM,SAAS,GAAuC,EAAE,CAAC;QACzD,MAAM,QAAQ,GAAG,IAAI,GAAG,EAA4C,CAAC;QAErE,yCAAyC;QACzC,KAAK,MAAM,CAAC,EAAE,OAAO,CAAC,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YACxC,IAAI,CAAC;gBACH,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,qBAAqB,EAAE,CAAC;gBACrD,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;oBACrB,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;oBAC9B,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBACxB,CAAC,CAAC,CAAC;YACL,CAAC;YAAC,MAAM,CAAC;gBACP,mDAAmD;gBACnD,SAAS;YACX,CAAC;QACH,CAAC;QAED,wBAAwB;QACxB,MAAM,MAAM,GAAuC,EAAE,CAAC;QACtD,MAAM,OAAO,GAAG,IAAI,GAAG,EAAU,CAAC;QAElC,MAAM,KAAK,GAAG,CAAC,EAAU,EAAE,EAAE;YAC3B,IAAI,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;gBAAE,OAAO;YAC5B,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAEhB,MAAM,KAAK,GAAG,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAC/B,IAAI,CAAC,KAAK;gBAAE,OAAO;YAEnB,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAEnB,kCAAkC;YAClC,IAAI,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC5C,KAAK,MAAM,QAAQ,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;oBACpC,KAAK,CAAC,QAAQ,CAAC,CAAC;gBAClB,CAAC;YACH,CAAC;QACH,CAAC,CAAC;QAEF,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,OAAO,MAAM,CAAC;IAChB,CAAC;IAED;;;;;;OAMG;IACH,KAAK,CAAC,qBAAqB;QACzB,MAAM,QAAQ,GAAG,IAAI,GAAG,EAA4C,CAAC;QAErE,KAAK,MAAM,CAAC,EAAE,OAAO,CAAC,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YACxC,IAAI,CAAC;gBACH,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,qBAAqB,EAAE,CAAC;gBACrD,iEAAiE;gBACjE,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC,CAAC;YACzD,CAAC;YAAC,MAAM,CAAC;gBACP,mDAAmD;gBACnD,SAAS;YACX,CAAC;QACH,CAAC;QAED,yCAAyC;QACzC,OAAO,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,GAAG,CAAC,CAAC,WAAW,CAAC,CAAC;IACrF,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,kBAAkB,CAAC,UAAkB;QACzC,KAAK,MAAM,CAAC,EAAE,OAAO,CAAC,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YACxC,IAAI,CAAC;gBACH,MAAM,QAAQ,GAAG,OAAO,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;gBACjD,IAAI,QAAQ,EAAE,CAAC;oBACb,OAAO,MAAM,OAAO,CAAC,kBAAkB,CAAC,UAAU,CAAC,CAAC;gBACtD,CAAC;YACH,CAAC;YAAC,MAAM,CAAC;gBACP,SAAS;YACX,CAAC;QACH,CAAC;QAED,OAAO,EAAE,CAAC;IACZ,CAAC;IAED;;OAEG;IACK,oBAAoB,CAAC,aAAqB,EAAE,OAAmB;QACrE,oDAAoD;QACpD,MAAM,eAAe,GAAG;YACtB,cAAc;YACd,kBAAkB;YAClB,mBAAmB;YACnB,gBAAgB;YAChB,cAAc;YACd,mBAAmB;YACnB,eAAe;SAChB,CAAC;QAEF,eAAe,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE;YAClC,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,IAAS,EAAE,EAAE;gBAClC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;oBACnB,GAAG,IAAI;oBACP,aAAa;iBACd,CAAC,CAAC;YACL,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACH,OAAO;QACL,KAAK,MAAM,CAAC,aAAa,EAAE,OAAO,CAAC,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YACrD,IAAI,CAAC;gBACH,OAAO,CAAC,OAAO,EAAE,CAAC;YACpB,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,OAAO,CAAC,KAAK,CAAC,6BAA6B,aAAa,GAAG,EAAE,KAAK,CAAC,CAAC;YACtE,CAAC;QACH,CAAC;QAED,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;QACtB,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;QACxB,IAAI,CAAC,kBAAkB,EAAE,CAAC;IAC5B,CAAC;CACF;AAvaD,8CAuaC"}
1
+ {"version":3,"file":"component-registry.js","sourceRoot":"","sources":["../src/component-registry.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,205 @@
1
+ /**
2
+ * External Broker API
3
+ *
4
+ * Enables external systems to interact with xcomponent-ai via message broker
5
+ * WITHOUT needing HTTP API access. This is useful for:
6
+ * - Microservices communicating via message bus
7
+ * - Event-driven architectures
8
+ * - Language-agnostic integrations (Python, Go, Java can use Redis/RabbitMQ clients)
9
+ * - Real-time subscriptions to FSM events
10
+ *
11
+ * Channels:
12
+ * - `xcomponent:external:commands` - Send events to FSM instances from external systems
13
+ * - `xcomponent:events:state_change` - Subscribe to state transitions
14
+ * - `xcomponent:events:instance_created` - Subscribe to instance creations
15
+ * - `xcomponent:events:instance_disposed` - Subscribe to instance disposals
16
+ */
17
+ import { MessageBroker, PropertyFilter } from './message-broker';
18
+ import { ComponentRegistry } from './component-registry';
19
+ import { FSMEvent } from './types';
20
+ export type { PropertyFilter };
21
+ /**
22
+ * External command to send event to FSM instance
23
+ */
24
+ export interface ExternalCommand {
25
+ /** Component name */
26
+ componentName: string;
27
+ /** Instance ID to target */
28
+ instanceId: string;
29
+ /** Event to send */
30
+ event: FSMEvent;
31
+ }
32
+ /**
33
+ * External broadcast command (sends to instances in a state)
34
+ *
35
+ * Without filters: broadcasts to ALL instances in the state
36
+ * With filters: only instances matching ALL filters receive the event
37
+ *
38
+ * Example (broadcast to specific customer):
39
+ * ```json
40
+ * {
41
+ * "componentName": "OrderComponent",
42
+ * "machineName": "Order",
43
+ * "currentState": "Pending",
44
+ * "filters": [
45
+ * {"property": "customerId", "operator": "===", "value": "CUST-001"}
46
+ * ],
47
+ * "event": {"type": "TIMEOUT"}
48
+ * }
49
+ * ```
50
+ * This broadcasts ONLY to Orders with customerId === "CUST-001"
51
+ *
52
+ * Multiple filters example (AND logic):
53
+ * ```json
54
+ * {
55
+ * "filters": [
56
+ * {"property": "customerId", "value": "CUST-001"},
57
+ * {"property": "amount", "operator": ">", "value": 1000}
58
+ * ]
59
+ * }
60
+ * ```
61
+ * Broadcasts to Orders with customerId === "CUST-001" AND amount > 1000
62
+ */
63
+ export interface ExternalBroadcastCommand {
64
+ /** Component name */
65
+ componentName: string;
66
+ /** Machine name */
67
+ machineName: string;
68
+ /** Current state filter */
69
+ currentState: string;
70
+ /** Event to broadcast */
71
+ event: FSMEvent;
72
+ /**
73
+ * Optional property filters to target specific instances
74
+ * If omitted, broadcasts to ALL instances in the state
75
+ * If specified, only instances matching ALL filters receive the event (AND logic)
76
+ *
77
+ * Can target a single instance if filters are specific enough
78
+ */
79
+ filters?: PropertyFilter[];
80
+ }
81
+ /**
82
+ * Published FSM event for external subscribers
83
+ */
84
+ export interface PublishedFSMEvent {
85
+ /** Event type (state_change, instance_created, etc.) */
86
+ type: string;
87
+ /** Component name */
88
+ componentName: string;
89
+ /** Event data */
90
+ data: any;
91
+ /** Timestamp */
92
+ timestamp: number;
93
+ }
94
+ /**
95
+ * External Broker API Configuration
96
+ */
97
+ export interface ExternalBrokerConfig {
98
+ /** Message broker to use */
99
+ broker: MessageBroker;
100
+ /** Component registry */
101
+ registry: ComponentRegistry;
102
+ /** Publish FSM events to broker (default: false) */
103
+ publishEvents?: boolean;
104
+ /** Handle external commands (default: true) */
105
+ handleCommands?: boolean;
106
+ }
107
+ /**
108
+ * External Broker API
109
+ *
110
+ * Provides message broker-based API for external systems
111
+ */
112
+ export declare class ExternalBrokerAPI {
113
+ private broker;
114
+ private registry;
115
+ private publishEvents;
116
+ private handleCommands;
117
+ constructor(config: ExternalBrokerConfig);
118
+ /**
119
+ * Initialize the external API
120
+ * - Subscribe to external commands
121
+ * - Forward FSM events to broker (if enabled)
122
+ */
123
+ initialize(): Promise<void>;
124
+ /**
125
+ * Subscribe to external commands channel
126
+ * External systems can publish commands to control FSM instances
127
+ */
128
+ private subscribeToExternalCommands;
129
+ /**
130
+ * Forward FSM events to message broker for external subscribers
131
+ */
132
+ private forwardFSMEventsToBroker;
133
+ /**
134
+ * Publish an FSM event to the broker
135
+ */
136
+ private publishEvent;
137
+ /**
138
+ * Cleanup
139
+ */
140
+ dispose(): Promise<void>;
141
+ }
142
+ /**
143
+ * Helper: Publish external command to message broker
144
+ * (For use by external systems)
145
+ *
146
+ * Example (from Node.js):
147
+ * ```typescript
148
+ * import { createClient } from 'redis';
149
+ *
150
+ * const redis = createClient({ url: 'redis://localhost:6379' });
151
+ * await redis.connect();
152
+ *
153
+ * await publishExternalCommand(redis, {
154
+ * componentName: 'OrderComponent',
155
+ * instanceId: 'order-123',
156
+ * event: { type: 'VALIDATE', payload: {} }
157
+ * });
158
+ * ```
159
+ *
160
+ * Example (from Python):
161
+ * ```python
162
+ * import redis
163
+ * import json
164
+ *
165
+ * r = redis.Redis(host='localhost', port=6379)
166
+ * r.publish('xcomponent:external:commands', json.dumps({
167
+ * 'componentName': 'OrderComponent',
168
+ * 'instanceId': 'order-123',
169
+ * 'event': {'type': 'VALIDATE', 'payload': {}}
170
+ * }))
171
+ * ```
172
+ */
173
+ export declare function publishExternalCommand(redisClient: any, command: ExternalCommand): Promise<void>;
174
+ /**
175
+ * Helper: Subscribe to FSM events from external systems
176
+ *
177
+ * Example (from Node.js):
178
+ * ```typescript
179
+ * import { createClient } from 'redis';
180
+ *
181
+ * const redis = createClient({ url: 'redis://localhost:6379' });
182
+ * await redis.connect();
183
+ *
184
+ * await subscribeToFSMEvents(redis, 'state_change', (event) => {
185
+ * console.log('State changed:', event);
186
+ * });
187
+ * ```
188
+ *
189
+ * Example (from Python):
190
+ * ```python
191
+ * import redis
192
+ * import json
193
+ *
194
+ * r = redis.Redis(host='localhost', port=6379)
195
+ * pubsub = r.pubsub()
196
+ * pubsub.subscribe('xcomponent:events:state_change')
197
+ *
198
+ * for message in pubsub.listen():
199
+ * if message['type'] == 'message':
200
+ * event = json.loads(message['data'])
201
+ * print('State changed:', event)
202
+ * ```
203
+ */
204
+ export declare function subscribeToFSMEvents(redisClient: any, eventType: string, handler: (event: PublishedFSMEvent) => void): Promise<void>;
205
+ //# sourceMappingURL=external-broker-api.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"external-broker-api.d.ts","sourceRoot":"","sources":["../src/external-broker-api.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AACjE,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAGnC,YAAY,EAAE,cAAc,EAAE,CAAC;AAE/B;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,qBAAqB;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,4BAA4B;IAC5B,UAAU,EAAE,MAAM,CAAC;IACnB,oBAAoB;IACpB,KAAK,EAAE,QAAQ,CAAC;CACjB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,MAAM,WAAW,wBAAwB;IACvC,qBAAqB;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,mBAAmB;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,2BAA2B;IAC3B,YAAY,EAAE,MAAM,CAAC;IACrB,yBAAyB;IACzB,KAAK,EAAE,QAAQ,CAAC;IAChB;;;;;;OAMG;IACH,OAAO,CAAC,EAAE,cAAc,EAAE,CAAC;CAC5B;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,wDAAwD;IACxD,IAAI,EAAE,MAAM,CAAC;IACb,qBAAqB;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,iBAAiB;IACjB,IAAI,EAAE,GAAG,CAAC;IACV,gBAAgB;IAChB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,4BAA4B;IAC5B,MAAM,EAAE,aAAa,CAAC;IACtB,yBAAyB;IACzB,QAAQ,EAAE,iBAAiB,CAAC;IAC5B,oDAAoD;IACpD,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,+CAA+C;IAC/C,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B;AAED;;;;GAIG;AACH,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,MAAM,CAAgB;IAC9B,OAAO,CAAC,QAAQ,CAAoB;IACpC,OAAO,CAAC,aAAa,CAAU;IAC/B,OAAO,CAAC,cAAc,CAAU;gBAEpB,MAAM,EAAE,oBAAoB;IAOxC;;;;OAIG;IACG,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAYjC;;;OAGG;YACW,2BAA2B;IA+CzC;;OAEG;IACH,OAAO,CAAC,wBAAwB;IA2BhC;;OAEG;YACW,YAAY;IAkB1B;;OAEG;IACG,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;CAQ/B;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,wBAAsB,sBAAsB,CAC1C,WAAW,EAAE,GAAG,EAChB,OAAO,EAAE,eAAe,GACvB,OAAO,CAAC,IAAI,CAAC,CAKf;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,wBAAsB,oBAAoB,CACxC,WAAW,EAAE,GAAG,EAChB,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,CAAC,KAAK,EAAE,iBAAiB,KAAK,IAAI,GAC1C,OAAO,CAAC,IAAI,CAAC,CAWf"}