@cnstra/core 1.2.2 → 1.3.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.
Files changed (39) hide show
  1. package/README.md +242 -557
  2. package/dist/CNS.d.ts +54 -61
  3. package/dist/CNS.d.ts.map +1 -1
  4. package/dist/CNSCollateral.d.ts +4 -2
  5. package/dist/CNSCollateral.d.ts.map +1 -1
  6. package/dist/CNSFunctionalQueue.d.ts +26 -0
  7. package/dist/CNSFunctionalQueue.d.ts.map +1 -0
  8. package/dist/CNSStimulation.d.ts +52 -0
  9. package/dist/CNSStimulation.d.ts.map +1 -0
  10. package/dist/CNSStimulationContextStore.d.ts +1 -0
  11. package/dist/CNSStimulationContextStore.d.ts.map +1 -1
  12. package/dist/factory/index.d.ts.map +1 -1
  13. package/dist/index.cjs +490 -214
  14. package/dist/index.cjs.map +1 -1
  15. package/dist/index.js +490 -214
  16. package/dist/index.js.map +1 -1
  17. package/dist/interfaces/ICNS.d.ts +14 -0
  18. package/dist/interfaces/ICNS.d.ts.map +1 -0
  19. package/dist/interfaces/ICNSCollateral.d.ts +6 -0
  20. package/dist/interfaces/ICNSCollateral.d.ts.map +1 -0
  21. package/dist/interfaces/ICNSStimulationContextStore.d.ts +1 -0
  22. package/dist/interfaces/ICNSStimulationContextStore.d.ts.map +1 -1
  23. package/dist/types/TCNSDendrite.d.ts +2 -1
  24. package/dist/types/TCNSDendrite.d.ts.map +1 -1
  25. package/dist/types/TCNSNeuronResponseReturn.d.ts +3 -0
  26. package/dist/types/TCNSNeuronResponseReturn.d.ts.map +1 -0
  27. package/dist/types/TCNSOptions.d.ts +11 -0
  28. package/dist/types/TCNSOptions.d.ts.map +1 -0
  29. package/dist/types/TCNSSignal.d.ts +3 -2
  30. package/dist/types/TCNSSignal.d.ts.map +1 -1
  31. package/dist/types/TCNSStimulationOptions.d.ts +13 -0
  32. package/dist/types/TCNSStimulationOptions.d.ts.map +1 -0
  33. package/dist/types/TCNSStimulationQueueItem.d.ts +10 -0
  34. package/dist/types/TCNSStimulationQueueItem.d.ts.map +1 -0
  35. package/dist/types/TCNSStimulationResponse.d.ts +11 -0
  36. package/dist/types/TCNSStimulationResponse.d.ts.map +1 -0
  37. package/dist/types/TCNSSubscriber.d.ts +7 -0
  38. package/dist/types/TCNSSubscriber.d.ts.map +1 -0
  39. package/package.json +1 -1
package/dist/CNS.d.ts CHANGED
@@ -1,83 +1,76 @@
1
1
  import { TCNSNeuron } from './types/TCNSNeuron';
2
2
  import { TCNSDendrite } from './types/TCNSDendrite';
3
- import { CNSCollateral } from './CNSCollateral';
4
- import { ICNSStimulationContextStore } from './interfaces/ICNSStimulationContextStore';
5
- export declare class CNS<TCollateralId extends string, TNeuron extends TCNSNeuron<any, any, any, any, any, any, any>, TDendrite extends TCNSDendrite<any, any, any, any, any, any>> {
3
+ import { ICNS } from './interfaces/ICNS';
4
+ import { TCNSSubscriber } from './types/TCNSSubscriber';
5
+ import { TCNSOptions } from './types/TCNSOptions';
6
+ import { TCNSStimulationOptions } from './types/TCNSStimulationOptions';
7
+ import { TCNSSignal } from './types/TCNSSignal';
8
+ export declare class CNS<TCollateralId extends string, TNeuronId extends string, TNeuron extends TCNSNeuron<any, TNeuronId, any, any, any, any, any>, TDendrite extends TCNSDendrite<any, any, any, any, any, any>> implements ICNS<TNeuron, TDendrite> {
6
9
  protected readonly neurons: TNeuron[];
10
+ readonly options?: TCNSOptions | undefined;
7
11
  /**
8
12
  * Fast lookup: collateralId -> list of (neuron, dendrite) subscribers.
9
13
  * Built once at construction time.
10
14
  */
11
15
  private subIndex;
16
+ private parentNeuronByCollateralId;
12
17
  /**
13
- * Cached hashes for stable IDs to optimize dedup key generation.
18
+ * Strongly Connected Components of the neuron graph.
19
+ * Each component is a set of neuron IDs that can reach each other.
14
20
  */
15
- private neuronHashes;
16
- private collateralHashes;
17
- constructor(neurons: TNeuron[]);
18
- private buildIndex;
21
+ stronglyConnectedComponents: Set<string>[];
19
22
  /**
20
- * Precompute hashes for stable neuron and collateral IDs to optimize
21
- * dedup key generation during stimulation.
23
+ * Quick lookup: neuron ID -> SCC index for fast reachability checks.
22
24
  */
23
- private precomputeHashes;
25
+ private neuronToSCC;
24
26
  /**
25
- * Simple but effective hash function for string keys.
27
+ * DAG of SCCs: SCC index -> set of SCC indices that can reach this SCC
26
28
  */
27
- private simpleHash;
29
+ private sccDag;
28
30
  /**
29
- * Get or compute hash for a string, using cache for stable IDs.
31
+ * Precomputed ancestor sets for each SCC for fast reachability checks
30
32
  */
31
- private getHash;
33
+ private sccAncestors;
34
+ constructor(neurons: TNeuron[], options?: TCNSOptions | undefined);
35
+ private buildIndexes;
32
36
  /**
33
- * Create optimized dedup key using composite numeric hash.
34
- * This replaces string concatenation with faster numeric operations.
35
- * Includes hops to allow signals to pass through the same neuron at different levels.
37
+ * Build the neuron graph where neurons are connected if one can stimulate the other.
36
38
  */
37
- private createDedupKey;
39
+ private buildNeuronGraph;
38
40
  /**
39
- * Fire-and-forget fan-out for a single queue item.
40
- *
41
- * Behavior:
42
- * - Synchronous dendrite responses enqueue their outgoing signals immediately.
43
- * - Asynchronous responses:
44
- * • We DO NOT await them (no per-item barrier).
45
- * • We attach `.then` to enqueue outgoing signals when ready.
46
- * • We notify the scheduler when the first async for this item starts,
47
- * and when the last async for this item settles.
48
- * - No error handling: we do not try/catch. Rejections bubble via wireRejectionToRun().
49
- *
50
- * Returns:
51
- * boolean — whether this item launched any async work (>= 1 promises).
41
+ * Build strongly connected components using Tarjan's algorithm.
52
42
  */
53
- private fanOutFireAndForget;
54
- stimulate<TAfferentCollateralId extends TCollateralId, TAfferentCollateralPayload>(collateral: CNSCollateral<TAfferentCollateralId, TAfferentCollateralPayload>, payload: TAfferentCollateralPayload, opts?: {
55
- maxHops?: number;
56
- allowType?: (t: TCollateralId) => boolean;
57
- onTrace?: (e: {
58
- collateralId: TCollateralId;
59
- hops: number;
60
- payload: unknown;
61
- queueLength: number;
62
- error?: Error;
63
- contextStore: ICNSStimulationContextStore;
64
- }) => void;
65
- abortSignal?: AbortSignal;
66
- spikeId?: string;
67
- ctx?: ICNSStimulationContextStore;
68
- /**
69
- * Factory method to create a new context store.
70
- * Useful for recovery scenarios where you want to restore state.
71
- */
72
- createContextStore?: () => ICNSStimulationContextStore;
73
- /**
74
- * Maximum number of signal processing operations active at once.
75
- * - Sync operations count for their brief execution time
76
- * - Async operations count until completion
77
- * - undefined / <= 0 => Infinity (no limit)
78
- * Maintains streaming flow - no artificial barriers or level synchronization.
79
- */
80
- concurrency?: number;
81
- }): void;
43
+ private buildSCC;
44
+ /**
45
+ * Build DAG between SCCs based on the original neuron graph
46
+ */
47
+ private buildSCCDAG;
48
+ /**
49
+ * Precompute ancestor sets for each SCC for fast reachability checks
50
+ * Uses topological sort for efficient computation
51
+ */
52
+ private buildSCCAncestors;
53
+ /**
54
+ * Get outgoing edges for a given SCC index
55
+ */
56
+ private getOutgoingEdges;
57
+ /**
58
+ * Check if a neuron can be reached again (including self-calling).
59
+ * Returns true if the neuron is in a strongly connected component with more than one member,
60
+ * or if it's in a single-member SCC that can reach itself.
61
+ */
62
+ getSCCSetByNeuronId(neuronId: string): Set<string> | undefined;
63
+ /**
64
+ * Get the SCC index for a given neuron ID
65
+ */
66
+ getSccIndexByNeuronId(neuronId: string): number | undefined;
67
+ /**
68
+ * Check if a neuron can be guaranteed not to be visited again during the current propagation.
69
+ * This is the core logic for safe context cleanup.
70
+ */
71
+ canNeuronBeGuaranteedDone(neuronId: string, activeSccCounts: Map<number, number>): boolean;
72
+ getParentNeuronByCollateralId(collateralId: TCollateralId): TNeuron | undefined;
73
+ getSubscribers(collateralId: TCollateralId): TCNSSubscriber<TNeuron, TDendrite>[];
74
+ stimulate<TInputPayload extends TOutputPayload, TOutputPayload>(signal: TCNSSignal<TCollateralId, TInputPayload>, options?: TCNSStimulationOptions<TCollateralId, TInputPayload, TOutputPayload>): void;
82
75
  }
83
76
  //# sourceMappingURL=CNS.d.ts.map
package/dist/CNS.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"CNS.d.ts","sourceRoot":"","sources":["../src/CNS.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAChD,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,2BAA2B,EAAE,MAAM,0CAA0C,CAAC;AAyDvF,qBAAa,GAAG,CACZ,aAAa,SAAS,MAAM,EAC5B,OAAO,SAAS,UAAU,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAC7D,SAAS,SAAS,YAAY,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;IAiBhD,SAAS,CAAC,QAAQ,CAAC,OAAO,EAAE,OAAO,EAAE;IAfjD;;;OAGG;IACH,OAAO,CAAC,QAAQ,CAGZ;IAEJ;;OAEG;IACH,OAAO,CAAC,YAAY,CAA6B;IACjD,OAAO,CAAC,gBAAgB,CAA6B;gBAEtB,OAAO,EAAE,OAAO,EAAE;IAKjD,OAAO,CAAC,UAAU;IAelB;;;OAGG;IACH,OAAO,CAAC,gBAAgB;IASxB;;OAEG;IACH,OAAO,CAAC,UAAU;IAUlB;;OAEG;IACH,OAAO,CAAC,OAAO;IAuBf;;;;OAIG;IACH,OAAO,CAAC,cAAc;IActB;;;;;;;;;;;;;;OAcG;IACH,OAAO,CAAC,mBAAmB;IAgH3B,SAAS,CACL,qBAAqB,SAAS,aAAa,EAC3C,0BAA0B,EAE1B,UAAU,EAAE,aAAa,CACrB,qBAAqB,EACrB,0BAA0B,CAC7B,EACD,OAAO,EAAE,0BAA0B,EACnC,IAAI,CAAC,EAAE;QACH,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,SAAS,CAAC,EAAE,CAAC,CAAC,EAAE,aAAa,KAAK,OAAO,CAAC;QAC1C,OAAO,CAAC,EAAE,CAAC,CAAC,EAAE;YACV,YAAY,EAAE,aAAa,CAAC;YAC5B,IAAI,EAAE,MAAM,CAAC;YACb,OAAO,EAAE,OAAO,CAAC;YACjB,WAAW,EAAE,MAAM,CAAC;YACpB,KAAK,CAAC,EAAE,KAAK,CAAC;YACd,YAAY,EAAE,2BAA2B,CAAC;SAC7C,KAAK,IAAI,CAAC;QACX,WAAW,CAAC,EAAE,WAAW,CAAC;QAC1B,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,GAAG,CAAC,EAAE,2BAA2B,CAAC;QAClC;;;WAGG;QACH,kBAAkB,CAAC,EAAE,MAAM,2BAA2B,CAAC;QACvD;;;;;;WAMG;QACH,WAAW,CAAC,EAAE,MAAM,CAAC;KACxB,GACF,IAAI;CAqHV"}
1
+ {"version":3,"file":"CNS.d.ts","sourceRoot":"","sources":["../src/CNS.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAChD,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AACzC,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAAE,sBAAsB,EAAE,MAAM,gCAAgC,CAAC;AAGxE,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAEhD,qBAAa,GAAG,CACZ,aAAa,SAAS,MAAM,EAC5B,SAAS,SAAS,MAAM,EACxB,OAAO,SAAS,UAAU,CAAC,GAAG,EAAE,SAAS,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EACnE,SAAS,SAAS,YAAY,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAC9D,YAAW,IAAI,CAAC,OAAO,EAAE,SAAS,CAAC;IAmC7B,SAAS,CAAC,QAAQ,CAAC,OAAO,EAAE,OAAO,EAAE;aACrB,OAAO,CAAC,EAAE,WAAW;IAlCzC;;;OAGG;IACH,OAAO,CAAC,QAAQ,CAGZ;IAEJ,OAAO,CAAC,0BAA0B,CAAqC;IAEvE;;;OAGG;IACI,2BAA2B,EAAE,GAAG,CAAC,MAAM,CAAC,EAAE,CAAM;IAEvD;;OAEG;IACH,OAAO,CAAC,WAAW,CAA6B;IAEhD;;OAEG;IACH,OAAO,CAAC,MAAM,CAAuC;IAErD;;OAEG;IACH,OAAO,CAAC,YAAY,CAAuC;gBAGpC,OAAO,EAAE,OAAO,EAAE,EACrB,OAAO,CAAC,EAAE,WAAW,YAAA;IAQzC,OAAO,CAAC,YAAY;IAsBpB;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAiCxB;;OAEG;IACH,OAAO,CAAC,QAAQ;IAsEhB;;OAEG;IACH,OAAO,CAAC,WAAW;IA6BnB;;;OAGG;IACH,OAAO,CAAC,iBAAiB;IAiDzB;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAaxB;;;;OAIG;IACI,mBAAmB,CAAC,QAAQ,EAAE,MAAM;IAQ3C;;OAEG;IACI,qBAAqB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAIlE;;;OAGG;IACI,yBAAyB,CAC5B,QAAQ,EAAE,MAAM,EAChB,eAAe,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,GACrC,OAAO;IA4BH,6BAA6B,CAAC,YAAY,EAAE,aAAa;IAIzD,cAAc,CACjB,YAAY,EAAE,aAAa,GAC5B,cAAc,CAAC,OAAO,EAAE,SAAS,CAAC,EAAE;IAIhC,SAAS,CAAC,aAAa,SAAS,cAAc,EAAE,cAAc,EACjE,MAAM,EAAE,UAAU,CAAC,aAAa,EAAE,aAAa,CAAC,EAChD,OAAO,CAAC,EAAE,sBAAsB,CAC5B,aAAa,EACb,aAAa,EACb,cAAc,CACjB;CAYR"}
@@ -1,7 +1,9 @@
1
1
  import { TCNSSignal } from './types/TCNSSignal';
2
- export declare class CNSCollateral<TId extends string, TPayload> {
2
+ import { ICNSCollateral } from './interfaces/ICNSCollateral';
3
+ export declare class CNSCollateral<TId extends string, TPayload> implements ICNSCollateral<TId, TPayload> {
3
4
  readonly id: TId;
4
5
  constructor(id: TId);
5
- createSignal(...args: [TPayload] extends [undefined] ? [] : [payload: TPayload]): TCNSSignal<TId, TPayload>;
6
+ createSignal(): TCNSSignal<TId, TPayload>;
7
+ createSignal(payload: TPayload): TCNSSignal<TId, TPayload>;
6
8
  }
7
9
  //# sourceMappingURL=CNSCollateral.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"CNSCollateral.d.ts","sourceRoot":"","sources":["../src/CNSCollateral.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAEhD,qBAAa,aAAa,CAAC,GAAG,SAAS,MAAM,EAAE,QAAQ;aACvB,EAAE,EAAE,GAAG;gBAAP,EAAE,EAAE,GAAG;IAEnC,YAAY,CACR,GAAG,IAAI,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC,SAAS,CAAC,GAAG,EAAE,GAAG,CAAC,OAAO,EAAE,QAAQ,CAAC,GACnE,UAAU,CAAC,GAAG,EAAE,QAAQ,CAAC;CAI/B"}
1
+ {"version":3,"file":"CNSCollateral.d.ts","sourceRoot":"","sources":["../src/CNSCollateral.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAChD,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAE7D,qBAAa,aAAa,CAAC,GAAG,SAAS,MAAM,EAAE,QAAQ,CACnD,YAAW,cAAc,CAAC,GAAG,EAAE,QAAQ,CAAC;aAEZ,EAAE,EAAE,GAAG;gBAAP,EAAE,EAAE,GAAG;IAEnC,YAAY,IAAI,UAAU,CAAC,GAAG,EAAE,QAAQ,CAAC;IACzC,YAAY,CAAC,OAAO,EAAE,QAAQ,GAAG,UAAU,CAAC,GAAG,EAAE,QAAQ,CAAC;CAI7D"}
@@ -0,0 +1,26 @@
1
+ import { TCNSStimulationQueueItem } from './types/TCNSStimulationQueueItem';
2
+ import { TCNSNeuron } from './types/TCNSNeuron';
3
+ import { TCNSDendrite } from './types/TCNSDendrite';
4
+ export declare class CNSFunctionalQueue<TCollateralId extends string, TNeuronId extends string, TNeuron extends TCNSNeuron<any, TNeuronId, TCollateralId, any, any, any, any>, TDendrite extends TCNSDendrite<any, any, any, any, any, any>> {
5
+ private readonly processor;
6
+ protected readonly concurrency?: number | undefined;
7
+ protected readonly abortSignal?: AbortSignal | undefined;
8
+ private items;
9
+ private head;
10
+ private tail;
11
+ private size;
12
+ private capacity;
13
+ protected activeOperations: number;
14
+ private pumping;
15
+ private needsPump;
16
+ constructor(processor: (item: TCNSStimulationQueueItem<TCollateralId, TNeuronId, TNeuron, TDendrite>) => (() => void) | Promise<() => void>, concurrency?: number | undefined, abortSignal?: AbortSignal | undefined, initialCapacity?: number);
17
+ protected get canStartOperation(): boolean;
18
+ private resize;
19
+ private dequeue;
20
+ private enqueueItem;
21
+ protected pump(): void;
22
+ enqueue(x: TCNSStimulationQueueItem<TCollateralId, TNeuronId, TNeuron, TDendrite>): void;
23
+ get length(): number;
24
+ getActiveOperationsCount(): number;
25
+ }
26
+ //# sourceMappingURL=CNSFunctionalQueue.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CNSFunctionalQueue.d.ts","sourceRoot":"","sources":["../src/CNSFunctionalQueue.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAE,MAAM,kCAAkC,CAAC;AAC5E,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAChD,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAEpD,qBAAa,kBAAkB,CAC3B,aAAa,SAAS,MAAM,EAC5B,SAAS,SAAS,MAAM,EACxB,OAAO,SAAS,UAAU,CAAC,GAAG,EAAE,SAAS,EAAE,aAAa,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAC7E,SAAS,SAAS,YAAY,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;IAexD,OAAO,CAAC,QAAQ,CAAC,SAAS;IAC1B,SAAS,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM;IACvC,SAAS,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,WAAW;IAfhD,OAAO,CAAC,KAAK,CAAgF;IAC7F,OAAO,CAAC,IAAI,CAAK;IACjB,OAAO,CAAC,IAAI,CAAK;IACjB,OAAO,CAAC,IAAI,CAAK;IACjB,OAAO,CAAC,QAAQ,CAAM;IACtB,SAAS,CAAC,gBAAgB,SAAK;IAI/B,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,SAAS,CAAS;gBAGL,SAAS,EAAE,CAAC,IAAI,EAAE,wBAAwB,CAAC,aAAa,EAAE,SAAS,EAAE,OAAO,EAAE,SAAS,CAAC,KAAK,CAAC,MAAM,IAAI,CAAC,GAAG,OAAO,CAAC,MAAM,IAAI,CAAC,EAC7H,WAAW,CAAC,EAAE,MAAM,YAAA,EACpB,WAAW,CAAC,EAAE,WAAW,YAAA,EAC5C,eAAe,CAAC,EAAE,MAAM;IAQ5B,SAAS,KAAK,iBAAiB,IAAI,OAAO,CAGzC;IAED,OAAO,CAAC,MAAM;IAgBd,OAAO,CAAC,OAAO;IAWf,OAAO,CAAC,WAAW;IAUnB,SAAS,CAAC,IAAI;IAyDd,OAAO,CAAC,CAAC,EAAE,wBAAwB,CAAC,aAAa,EAAE,SAAS,EAAE,OAAO,EAAE,SAAS,CAAC;IAOjF,IAAI,MAAM,WAET;IAED,wBAAwB;CAI3B"}
@@ -0,0 +1,52 @@
1
+ import { ICNS } from './interfaces/ICNS';
2
+ import { TCNSStimulationOptions } from './types/TCNSStimulationOptions';
3
+ import { TCNSNeuron } from './types/TCNSNeuron';
4
+ import { TCNSDendrite } from './types/TCNSDendrite';
5
+ import { TCNSSubscriber } from './types/TCNSSubscriber';
6
+ import { TCNSSignal } from './types/TCNSSignal';
7
+ export declare class CNSStimulation<TCollateralId extends string, TNeuronId extends string, TNeuron extends TCNSNeuron<any, TNeuronId, TCollateralId, any, any, any, any>, TDendrite extends TCNSDendrite<any, any, any, any, any, any>, TInputPayload, TOutputPayload> {
8
+ private readonly cns;
9
+ readonly options?: TCNSStimulationOptions<TCollateralId, TInputPayload, TOutputPayload> | undefined;
10
+ private readonly ctx;
11
+ private readonly queue;
12
+ private readonly nueronVisitMap?;
13
+ private scheduledCount;
14
+ /**
15
+ * Track active SCCs: SCC index -> count of active neurons in that SCC
16
+ */
17
+ private readonly activeSccCounts;
18
+ readonly id: string;
19
+ constructor(cns: ICNS<TNeuron, TDendrite>, options?: TCNSStimulationOptions<TCollateralId, TInputPayload, TOutputPayload> | undefined);
20
+ protected get concurrencyEnabled(): boolean;
21
+ protected get autoCleanupContextsEnabled(): boolean;
22
+ /**
23
+ * Mark a neuron as active (being processed)
24
+ */
25
+ protected markNeuronActive(neuronId: TNeuronId): void;
26
+ /**
27
+ * Mark a neuron as inactive (finished processing)
28
+ */
29
+ protected markNeuronInactive(neuronId: TNeuronId): void;
30
+ /**
31
+ * Increment the active count for the SCC containing this neuron
32
+ */
33
+ private incrementSccCount;
34
+ /**
35
+ * Decrement the active count for the SCC containing this neuron
36
+ */
37
+ private decrementSccCount;
38
+ /**
39
+ * Check if a neuron can be guaranteed not to be visited again
40
+ */
41
+ protected canNeuronBeGuaranteedDone(neuronId: TNeuronId): boolean;
42
+ protected cleanupCtxIfNeeded(neuron: TNeuron): void;
43
+ protected createSubscriberQueueItem(subscriber: TCNSSubscriber<TNeuron, TDendrite>, inputSignal?: TCNSSignal<TCollateralId, any>): {
44
+ neuronId: TNeuronId;
45
+ subscriber: TCNSSubscriber<TNeuron, TDendrite>;
46
+ inputSignal: TCNSSignal<TCollateralId, any> | undefined;
47
+ };
48
+ private processQueueItem;
49
+ protected processResponse(inputSignal?: TCNSSignal<TCollateralId, TInputPayload>, outputSignal?: TCNSSignal<TCollateralId, TOutputPayload>, error?: any): void;
50
+ responseToSignal(signal: TCNSSignal<TCollateralId, TOutputPayload>): void;
51
+ }
52
+ //# sourceMappingURL=CNSStimulation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CNSStimulation.d.ts","sourceRoot":"","sources":["../src/CNSStimulation.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AAEzC,OAAO,EAAE,sBAAsB,EAAE,MAAM,gCAAgC,CAAC;AACxE,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAChD,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAExD,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAGhD,qBAAa,cAAc,CACvB,aAAa,SAAS,MAAM,EAC5B,SAAS,SAAS,MAAM,EACxB,OAAO,SAAS,UAAU,CACtB,GAAG,EACH,SAAS,EACT,aAAa,EACb,GAAG,EACH,GAAG,EACH,GAAG,EACH,GAAG,CACN,EACD,SAAS,SAAS,YAAY,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAC5D,aAAa,EACb,cAAc;IAoBV,OAAO,CAAC,QAAQ,CAAC,GAAG;aACJ,OAAO,CAAC,EAAE,sBAAsB,CAC5C,aAAa,EACb,aAAa,EACb,cAAc,CACjB;IAvBL,OAAO,CAAC,QAAQ,CAAC,GAAG,CAA8B;IAClD,OAAO,CAAC,QAAQ,CAAC,KAAK,CAKpB;IACF,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAyB;IACzD,OAAO,CAAC,cAAc,CAAK;IAE3B;;OAEG;IACH,OAAO,CAAC,QAAQ,CAAC,eAAe,CAA6B;IAE7D,SAAgB,EAAE,EAAE,MAAM,CAAC;gBAGN,GAAG,EAAE,IAAI,CAAC,OAAO,EAAE,SAAS,CAAC,EAC9B,OAAO,CAAC,EAAE,sBAAsB,CAC5C,aAAa,EACb,aAAa,EACb,cAAc,CACjB,YAAA;IAkBL,SAAS,KAAK,kBAAkB,IAAI,OAAO,CAK1C;IAED,SAAS,KAAK,0BAA0B,IAAI,OAAO,CAElD;IAED;;OAEG;IACH,SAAS,CAAC,gBAAgB,CAAC,QAAQ,EAAE,SAAS,GAAG,IAAI;IAMrD;;OAEG;IACH,SAAS,CAAC,kBAAkB,CAAC,QAAQ,EAAE,SAAS,GAAG,IAAI;IAMvD;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAQzB;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAgBzB;;OAEG;IACH,SAAS,CAAC,yBAAyB,CAAC,QAAQ,EAAE,SAAS,GAAG,OAAO;IAQjE,SAAS,CAAC,kBAAkB,CAAC,MAAM,EAAE,OAAO,GAAG,IAAI;IASnD,SAAS,CAAC,yBAAyB,CAC/B,UAAU,EAAE,cAAc,CAAC,OAAO,EAAE,SAAS,CAAC,EAC9C,WAAW,CAAC,EAAE,UAAU,CAAC,aAAa,EAAE,GAAG,CAAC;;;;;IA2BhD,OAAO,CAAC,gBAAgB;IA4DxB,SAAS,CAAC,eAAe,CACrB,WAAW,CAAC,EAAE,UAAU,CAAC,aAAa,EAAE,aAAa,CAAC,EACtD,YAAY,CAAC,EAAE,UAAU,CAAC,aAAa,EAAE,cAAc,CAAC,EACxD,KAAK,CAAC,EAAE,GAAG,GACZ,IAAI;IAoDA,gBAAgB,CACnB,MAAM,EAAE,UAAU,CAAC,aAAa,EAAE,cAAc,CAAC,GAClD,IAAI;CAWV"}
@@ -6,5 +6,6 @@ export declare class CNSStimulationContextStore implements ICNSStimulationContex
6
6
  set(key: string, value: unknown): void;
7
7
  getAll(): Record<string, unknown>;
8
8
  setAll(values: Record<string, unknown>): void;
9
+ delete(key: string): void;
9
10
  }
10
11
  //# sourceMappingURL=CNSStimulationContextStore.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"CNSStimulationContextStore.d.ts","sourceRoot":"","sources":["../src/CNSStimulationContextStore.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,2BAA2B,EAAE,MAAM,0CAA0C,CAAC;AAEvF,qBAAa,0BAA2B,YAAW,2BAA2B;IAC9D,OAAO,CAAC,QAAQ,CAAC,GAAG;gBAAH,GAAG,GAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAa;IAElE,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAIzB,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,IAAI;IAItC,MAAM,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAIjC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;CAKhD"}
1
+ {"version":3,"file":"CNSStimulationContextStore.d.ts","sourceRoot":"","sources":["../src/CNSStimulationContextStore.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,2BAA2B,EAAE,MAAM,0CAA0C,CAAC;AAEvF,qBAAa,0BAA2B,YAAW,2BAA2B;IAC9D,OAAO,CAAC,QAAQ,CAAC,GAAG;gBAAH,GAAG,GAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAa;IAElE,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAIzB,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,IAAI;IAItC,MAAM,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAIjC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAM7C,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;CAG5B"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/factory/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC7C,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAErD,eAAO,MAAM,UAAU,GAAI,QAAQ,GAAG,SAAS,EAAE,GAAG,SAAS,MAAM,GAAG,MAAM,EACxE,IAAI,GAAG,iCAC8B,CAAC;AAE1C,KAAK,cAAc,CACf,aAAa,EACb,OAAO,SAAS,MAAM,EACtB,yBAAyB,SAAS,MAAM,EACxC,8BAA8B,EAC9B,SAAS,SAAS,QAAQ,CACtB,yBAAyB,EACzB,8BAA8B,CACjC,IACD;IACA,EAAE,EAAE,OAAO,CAAC;IACZ,IAAI,EAAE,SAAS,CAAC;IAChB,SAAS,EAAE,YAAY,CACnB,aAAa,EACb,MAAM,EACN,OAAO,EACP,yBAAyB,EACzB,8BAA8B,EAC9B,SAAS,CACZ,EAAE,CAAC;IACJ,QAAQ,EAAE,CACN,4BAA4B,SAAS,MAAM,EAC3C,iCAAiC,EAEjC,CAAC,EAAE,YAAY,CACX,aAAa,EACb,4BAA4B,EAC5B,iCAAiC,EACjC,yBAAyB,EACzB,8BAA8B,EAC9B,SAAS,CACZ,KACA,cAAc,CACf,aAAa,EACb,OAAO,EACP,yBAAyB,EACzB,8BAA8B,EAC9B,SAAS,CACZ,CAAC;CACL,CAAC;AAGF,eAAO,MAAM,MAAM,GACf,aAAa,EACb,OAAO,SAAS,MAAM,EACtB,yBAAyB,SAAS,MAAM,EACxC,8BAA8B,EAC9B,SAAS,SAAS,QAAQ,CACtB,yBAAyB,EACzB,8BAA8B,CACjC,EAED,IAAI,OAAO,EACX,MAAM,SAAS,KAChB,cAAc,CACb,aAAa,EACb,OAAO,EACP,yBAAyB,EACzB,8BAA8B,EAC9B,SAAS,CAiDZ,CAAC;AAEF,eAAO,MAAM,OAAO,GAAI,aAAa;aAE7B,OAAO,SAAS,MAAM,EACtB,yBAAyB,SAAS,MAAM,EACxC,8BAA8B,EAC9B,SAAS,SAAS,QAAQ,CACtB,yBAAyB,EACzB,8BAA8B,CACjC,MAEG,OAAO,QACL,SAAS;CAUrB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/factory/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC7C,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAErD,eAAO,MAAM,UAAU,GAAI,QAAQ,GAAG,SAAS,EAAE,GAAG,SAAS,MAAM,GAAG,MAAM,EACxE,IAAI,GAAG,iCAC8B,CAAC;AAE1C,KAAK,cAAc,CACf,aAAa,EACb,OAAO,SAAS,MAAM,EACtB,yBAAyB,SAAS,MAAM,EACxC,8BAA8B,EAC9B,SAAS,SAAS,QAAQ,CACtB,yBAAyB,EACzB,8BAA8B,CACjC,IACD;IACA,EAAE,EAAE,OAAO,CAAC;IACZ,IAAI,EAAE,SAAS,CAAC;IAChB,SAAS,EAAE,YAAY,CACnB,aAAa,EACb,MAAM,EACN,OAAO,EACP,yBAAyB,EACzB,8BAA8B,EAC9B,SAAS,CACZ,EAAE,CAAC;IACJ,QAAQ,EAAE,CACN,4BAA4B,SAAS,MAAM,EAC3C,iCAAiC,EAEjC,CAAC,EAAE,YAAY,CACX,aAAa,EACb,4BAA4B,EAC5B,iCAAiC,EACjC,yBAAyB,EACzB,8BAA8B,EAC9B,SAAS,CACZ,KACA,cAAc,CACf,aAAa,EACb,OAAO,EACP,yBAAyB,EACzB,8BAA8B,EAC9B,SAAS,CACZ,CAAC;CACL,CAAC;AAGF,eAAO,MAAM,MAAM,GACf,aAAa,EACb,OAAO,SAAS,MAAM,EACtB,yBAAyB,SAAS,MAAM,EACxC,8BAA8B,EAC9B,SAAS,SAAS,QAAQ,CACtB,yBAAyB,EACzB,8BAA8B,CACjC,EAED,IAAI,OAAO,EACX,MAAM,SAAS,KAChB,cAAc,CACb,aAAa,EACb,OAAO,EACP,yBAAyB,EACzB,8BAA8B,EAC9B,SAAS,CAiDZ,CAAC;AAEF,eAAO,MAAM,OAAO,GAAI,aAAa;aAE7B,OAAO,SAAS,MAAM,EACtB,yBAAyB,SAAS,MAAM,EACxC,8BAA8B,EAC9B,SAAS,SAAS,QAAQ,CACtB,yBAAyB,EACzB,8BAA8B,CACjC,MAEG,OAAO,QACL,SAAS;CAUrB,CAAC"}