@cnstra/core 1.7.0 → 1.8.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 (36) hide show
  1. package/README.md +16 -588
  2. package/dist/CNS.d.ts +12 -83
  3. package/dist/CNS.d.ts.map +1 -1
  4. package/dist/CNSNetwork.d.ts +87 -0
  5. package/dist/CNSNetwork.d.ts.map +1 -0
  6. package/dist/CNSNeuronActivationPump.d.ts +27 -0
  7. package/dist/CNSNeuronActivationPump.d.ts.map +1 -0
  8. package/dist/CNSStimulation.d.ts +27 -6
  9. package/dist/CNSStimulation.d.ts.map +1 -1
  10. package/dist/index.cjs +324 -304
  11. package/dist/index.cjs.map +1 -1
  12. package/dist/index.d.ts +2 -1
  13. package/dist/index.d.ts.map +1 -1
  14. package/dist/index.js +324 -304
  15. package/dist/index.js.map +1 -1
  16. package/dist/interfaces/ICNS.d.ts +12 -24
  17. package/dist/interfaces/ICNS.d.ts.map +1 -1
  18. package/dist/interfaces/ICNSStimulationContextStore.d.ts +3 -2
  19. package/dist/interfaces/ICNSStimulationContextStore.d.ts.map +1 -1
  20. package/dist/types/TCNSDendrite.d.ts +2 -2
  21. package/dist/types/TCNSDendrite.d.ts.map +1 -1
  22. package/dist/types/TCNSNeuronActivationTask.d.ts +8 -0
  23. package/dist/types/TCNSNeuronActivationTask.d.ts.map +1 -0
  24. package/dist/types/TCNSNeuronActivationTaskFailure.d.ts +7 -0
  25. package/dist/types/TCNSNeuronActivationTaskFailure.d.ts.map +1 -0
  26. package/dist/types/TCNSStimulationOptions.d.ts +7 -4
  27. package/dist/types/TCNSStimulationOptions.d.ts.map +1 -1
  28. package/dist/types/TCNSStimulationResponse.d.ts +11 -4
  29. package/dist/types/TCNSStimulationResponse.d.ts.map +1 -1
  30. package/dist/types/TCNSStimulationSerializedContextValue.d.ts +4 -0
  31. package/dist/types/TCNSStimulationSerializedContextValue.d.ts.map +1 -0
  32. package/package.json +1 -1
  33. package/dist/CNSFunctionalQueue.d.ts +0 -26
  34. package/dist/CNSFunctionalQueue.d.ts.map +0 -1
  35. package/dist/types/TCNSSerializedSignal.d.ts +0 -7
  36. package/dist/types/TCNSSerializedSignal.d.ts.map +0 -1
package/dist/CNS.d.ts CHANGED
@@ -1,42 +1,21 @@
1
1
  import { TCNSNeuron } from './types/TCNSNeuron';
2
2
  import { TCNSDendrite } from './types/TCNSDendrite';
3
- import { ICNS } from './interfaces/ICNS';
4
- import { TCNSSubscriber } from './types/TCNSSubscriber';
5
3
  import { TCNSOptions } from './types/TCNSOptions';
6
4
  import { TCNSStimulationOptions } from './types/TCNSStimulationOptions';
7
- import { CNSCollateral } from './CNSCollateral';
5
+ import { CNSStimulation } from './CNSStimulation';
8
6
  import { TCNSSignal } from './types/TCNSSignal';
9
7
  import { CNSInstanceNeuronQueue } from './CNSInstanceNeuronQueue';
10
8
  import { TCNSStimulationResponse } from './types/TCNSStimulationResponse';
11
- export declare class CNS<TCollateralName extends string, TNeuronName extends string, TNeuron extends TCNSNeuron<any, TNeuronName, any, any, any, any, any>, TDendrite extends TCNSDendrite<any, any, any, any, any, any>> implements ICNS<TNeuron, TDendrite> {
9
+ import { TCNSNeuronActivationTask } from './types/TCNSNeuronActivationTask';
10
+ import { CNSNetwork } from './CNSNetwork';
11
+ import { ICNS } from './interfaces/ICNS';
12
+ export declare class CNS<TCollateralName extends string, TNeuronName extends string, TNeuron extends TCNSNeuron<any, TNeuronName, any, any, any, any, any>, TDendrite extends TCNSDendrite<any, any, any, any, any, any>> implements Omit<ICNS<TCollateralName, TNeuronName, TNeuron, TDendrite>, 'stimulate'> {
12
13
  protected readonly neurons: TNeuron[];
13
14
  readonly options?: TCNSOptions | undefined;
14
15
  /**
15
- * Fast lookup: collateralName -> list of (neuron, dendrite) subscribers.
16
- * Built once at construction time.
17
- */
18
- private subIndex;
19
- private neuronIndex;
20
- private dendriteIndex;
21
- private collateralIndex;
22
- private parentNeuronByCollateralName;
23
- /**
24
- * Strongly Connected Components of the neuron graph.
25
- * Each component is a set of neuron IDs that can reach each other.
16
+ * Network graph analysis and strongly connected components.
26
17
  */
27
- stronglyConnectedComponents: Set<string>[];
28
- /**
29
- * Quick lookup: neuron ID -> SCC index for fast reachability checks.
30
- */
31
- private neuronToSCC;
32
- /**
33
- * DAG of SCCs: SCC index -> set of SCC indices that can reach this SCC
34
- */
35
- private sccDag;
36
- /**
37
- * Precomputed ancestor sets for each SCC for fast reachability checks
38
- */
39
- private sccAncestors;
18
+ readonly network: CNSNetwork<TCollateralName, TNeuronName, TNeuron, TDendrite>;
40
19
  /**
41
20
  * Global per-neuron concurrency gates shared across all stimulations.
42
21
  */
@@ -45,68 +24,18 @@ export declare class CNS<TCollateralName extends string, TNeuronName extends str
45
24
  * Global task queue used by stimulation to schedule per-neuron gated work.
46
25
  * Does not replace per-stimulation concurrency; only coordinates global per-neuron limits.
47
26
  */
48
- private readonly globalTaskQueue;
49
27
  protected readonly instanceNeuronQueue: CNSInstanceNeuronQueue<TNeuron>;
50
28
  /**
51
29
  * Global response listeners applied to every stimulation.
52
30
  */
53
31
  private readonly globalResponseListeners;
54
32
  constructor(neurons: TNeuron[], options?: TCNSOptions | undefined);
33
+ addResponseListener<TInputPayload, TOutputPayload>(listener: (response: TCNSStimulationResponse<TCollateralName, TInputPayload, TOutputPayload, TNeuronName>) => void | Promise<void>): () => void;
34
+ private wrapOnResponse;
35
+ stimulate<TInputPayload extends TOutputPayload, TOutputPayload = TInputPayload>(signalOrSignals: TCNSSignal<TCollateralName, TInputPayload> | TCNSSignal<TCollateralName, TInputPayload>[], options?: TCNSStimulationOptions<TCollateralName, TInputPayload, TOutputPayload, TNeuronName, TNeuron, TDendrite>): CNSStimulation<TCollateralName, TNeuronName, TNeuron, TDendrite, TInputPayload, TOutputPayload>;
55
36
  /**
56
- * Validate uniqueness constraints:
57
- * - neuron names are unique and non-empty
58
- * - axon collateral types are globally unique (single owner)
59
- * - the same collateral instance cannot be owned by multiple neurons
60
- * Throws aggregated error if violations are found.
61
- */
62
- private validateUniqueIdentifiers;
63
- addResponseListener(listener: <TInputPayload, TOutputPayload>(response: TCNSStimulationResponse<TCollateralName, TInputPayload, TOutputPayload>) => void | Promise<void>): () => void;
64
- wrapOnResponse<T>(local?: (response: T) => void | Promise<void>): (response: T) => void | Promise<void>;
65
- protected runWithNeuronConcurrency(neuron: TNeuron, fn: () => (() => void) | Promise<() => void>): Promise<void>;
66
- private buildIndexes;
67
- /**
68
- * Build the neuron graph where neurons are connected if one can stimulate the other.
69
- */
70
- private buildNeuronGraph;
71
- /**
72
- * Build strongly connected components using Tarjan's algorithm.
73
- */
74
- private buildSCC;
75
- /**
76
- * Build DAG between SCCs based on the original neuron graph
77
- */
78
- private buildSCCDAG;
79
- /**
80
- * Precompute ancestor sets for each SCC for fast reachability checks
81
- * Uses topological sort for efficient computation
82
- */
83
- private buildSCCAncestors;
84
- /**
85
- * Get outgoing edges for a given SCC index
86
- */
87
- private getOutgoingEdges;
88
- /**
89
- * Check if a neuron can be reached again (including self-calling).
90
- * Returns true if the neuron is in a strongly connected component with more than one member,
91
- * or if it's in a single-member SCC that can reach itself.
92
- */
93
- getSCCSetByNeuronName(neuronName: string): Set<string> | undefined;
94
- /**
95
- * Get the SCC index for a given neuron ID
96
- */
97
- getSccIndexByNeuronName(neuronName: string): number | undefined;
98
- /**
99
- * Check if a neuron can be guaranteed not to be visited again during the current propagation.
100
- * This is the core logic for safe context cleanup.
37
+ * Start a stimulation with activation tasks directly
101
38
  */
102
- canNeuronBeGuaranteedDone(neuronName: string, activeSccCounts: Map<number, number>): boolean;
103
- getParentNeuronByCollateralName(collateralName: TCollateralName): TNeuron | undefined;
104
- getDendrites(): TDendrite[];
105
- getCollaterals(): CNSCollateral<TCollateralName, unknown>[];
106
- getNeurons(): TNeuron[];
107
- getCollateralByName<TName extends string = string>(collateralName: TName): CNSCollateral<TName, unknown> | undefined;
108
- getNeuronByName<TName extends string = string>(neuronName: TName): TNeuron | undefined;
109
- getSubscribers(collateralName: TCollateralName): TCNSSubscriber<TNeuron, TDendrite>[];
110
- stimulate<TInputPayload extends TOutputPayload, TOutputPayload>(signalOrSignals: TCNSSignal<TCollateralName, TInputPayload> | TCNSSignal<TCollateralName, TInputPayload>[], options?: TCNSStimulationOptions<TCollateralName, TInputPayload, TOutputPayload>): Promise<void>;
39
+ activate<TInputPayload, TOutputPayload>(tasks: TCNSNeuronActivationTask<TCollateralName, TNeuronName>[], options?: TCNSStimulationOptions<TCollateralName, TInputPayload, TOutputPayload, TNeuronName, TNeuron, TDendrite>): CNSStimulation<TCollateralName, TNeuronName, TNeuron, TDendrite, TInputPayload, TOutputPayload>;
111
40
  }
112
41
  //# 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":"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"}
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,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAAE,sBAAsB,EAAE,MAAM,gCAAgC,CAAC;AACxE,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAChD,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAClE,OAAO,EAAE,uBAAuB,EAAE,MAAM,iCAAiC,CAAC;AAC1E,OAAO,EAAE,wBAAwB,EAAE,MAAM,kCAAkC,CAAC;AAC5E,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AAEzC,qBAAa,GAAG,CACZ,eAAe,SAAS,MAAM,EAC9B,WAAW,SAAS,MAAM,EAC1B,OAAO,SAAS,UAAU,CAAC,GAAG,EAAE,WAAW,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EACrE,SAAS,SAAS,YAAY,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAC9D,YACM,IAAI,CACA,IAAI,CAAC,eAAe,EAAE,WAAW,EAAE,OAAO,EAAE,SAAS,CAAC,EACtD,WAAW,CACd;IAmCD,SAAS,CAAC,QAAQ,CAAC,OAAO,EAAE,OAAO,EAAE;aACrB,OAAO,CAAC,EAAE,WAAW;IAlCzC;;OAEG;IACH,SAAgB,OAAO,EAAE,UAAU,CAC/B,eAAe,EACf,WAAW,EACX,OAAO,EACP,SAAS,CACZ,CAAC;IAEF;;OAEG;IACH,OAAO,CAAC,QAAQ,CAAC,WAAW,CAGxB;IAEJ;;;OAGG;IACH,SAAS,CAAC,QAAQ,CAAC,mBAAmB,kCACI;IAE1C;;OAEG;IACH,OAAO,CAAC,QAAQ,CAAC,uBAAuB,CAEjC;gBAGgB,OAAO,EAAE,OAAO,EAAE,EACrB,OAAO,CAAC,EAAE,WAAW,YAAA;IAKlC,mBAAmB,CAAC,aAAa,EAAE,cAAc,EACpD,QAAQ,EAAE,CACN,QAAQ,EAAE,uBAAuB,CAC7B,eAAe,EACf,aAAa,EACb,cAAc,EACd,WAAW,CACd,KACA,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,GAC1B,MAAM,IAAI;IAWb,OAAO,CAAC,cAAc;IAkDf,SAAS,CACZ,aAAa,SAAS,cAAc,EACpC,cAAc,GAAG,aAAa,EAE9B,eAAe,EACT,UAAU,CAAC,eAAe,EAAE,aAAa,CAAC,GAC1C,UAAU,CAAC,eAAe,EAAE,aAAa,CAAC,EAAE,EAClD,OAAO,CAAC,EAAE,sBAAsB,CAC5B,eAAe,EACf,aAAa,EACb,cAAc,EACd,WAAW,EACX,OAAO,EACP,SAAS,CACZ,GACF,cAAc,CACb,eAAe,EACf,WAAW,EACX,OAAO,EACP,SAAS,EACT,aAAa,EACb,cAAc,CACjB;IAiBD;;OAEG;IACI,QAAQ,CAAC,aAAa,EAAE,cAAc,EACzC,KAAK,EAAE,wBAAwB,CAAC,eAAe,EAAE,WAAW,CAAC,EAAE,EAC/D,OAAO,CAAC,EAAE,sBAAsB,CAC5B,eAAe,EACf,aAAa,EACb,cAAc,EACd,WAAW,EACX,OAAO,EACP,SAAS,CACZ,GACF,cAAc,CACb,eAAe,EACf,WAAW,EACX,OAAO,EACP,SAAS,EACT,aAAa,EACb,cAAc,CACjB;CAgBJ"}
@@ -0,0 +1,87 @@
1
+ import { TCNSNeuron } from './types/TCNSNeuron';
2
+ import { TCNSSubscriber } from './types/TCNSSubscriber';
3
+ import { TCNSDendrite } from './types/TCNSDendrite';
4
+ import { CNSCollateral } from './CNSCollateral';
5
+ export declare class CNSNetwork<TCollateralName extends string, TNeuronName extends string, TNeuron extends TCNSNeuron<any, TNeuronName, any, any, any, any, any>, TDendrite extends TCNSDendrite<any, any, any, any, any, any>> {
6
+ private readonly neurons;
7
+ /**
8
+ * Strongly Connected Components of the neuron graph.
9
+ * Each component is a set of neuron IDs that can reach each other.
10
+ */
11
+ stronglyConnectedComponents: Set<string>[];
12
+ /**
13
+ * Quick lookup: neuron ID -> SCC index for fast reachability checks.
14
+ */
15
+ private neuronToSCC;
16
+ /**
17
+ * DAG of SCCs: SCC index -> set of SCC indices that can reach this SCC
18
+ */
19
+ private sccDag;
20
+ /**
21
+ * Precomputed ancestor sets for each SCC for fast reachability checks
22
+ */
23
+ private sccAncestors;
24
+ /**
25
+ * Fast lookup: collateralName -> list of (neuron, dendrite) subscribers.
26
+ * Built once at construction time.
27
+ */
28
+ private subIndex;
29
+ private neuronIndex;
30
+ private dendriteIndex;
31
+ private collateralIndex;
32
+ private parentNeuronByCollateralName;
33
+ constructor(neurons: TNeuron[]);
34
+ /**
35
+ * Validate uniqueness constraints:
36
+ * - neuron names are unique and non-empty
37
+ * - axon collateral types are globally unique (single owner)
38
+ * - the same collateral instance cannot be owned by multiple neurons
39
+ * Throws aggregated error if violations are found.
40
+ */
41
+ private validateUniqueIdentifiers;
42
+ /**
43
+ * Build the neuron graph where neurons are connected if one can stimulate the other.
44
+ */
45
+ private buildNeuronGraph;
46
+ /**
47
+ * Build strongly connected components using Tarjan's algorithm.
48
+ */
49
+ private buildSCC;
50
+ /**
51
+ * Build DAG between SCCs based on the original neuron graph
52
+ */
53
+ private buildSCCDAG;
54
+ /**
55
+ * Precompute ancestor sets for each SCC for fast reachability checks
56
+ * Uses topological sort for efficient computation
57
+ */
58
+ private buildSCCAncestors;
59
+ /**
60
+ * Get outgoing edges for a given SCC index
61
+ */
62
+ private getOutgoingEdges;
63
+ /**
64
+ * Check if a neuron can be reached again (including self-calling).
65
+ * Returns true if the neuron is in a strongly connected component with more than one member,
66
+ * or if it's in a single-member SCC that can reach itself.
67
+ */
68
+ getSCCSetByNeuronName(neuronName: string): Set<string> | undefined;
69
+ /**
70
+ * Get the SCC index for a given neuron ID
71
+ */
72
+ getSccIndexByNeuronName(neuronName: string): number | undefined;
73
+ /**
74
+ * Check if a neuron can be guaranteed not to be visited again during the current propagation.
75
+ * This is the core logic for safe context cleanup.
76
+ */
77
+ canNeuronBeGuaranteedDone(neuronName: string, activeSccCounts: Map<number, number>): boolean;
78
+ private buildIndexes;
79
+ getParentNeuronByCollateralName(collateralName: TCollateralName): TNeuron | undefined;
80
+ getDendrites(): TDendrite[];
81
+ getCollaterals(): CNSCollateral<TCollateralName, unknown>[];
82
+ getNeurons(): TNeuron[];
83
+ getCollateralByName<TName extends string = string>(collateralName: TName): CNSCollateral<TName, unknown> | undefined;
84
+ getNeuronByName<TName extends string = string>(neuronName: TName): TNeuron | undefined;
85
+ getSubscribers(collateralName: TCollateralName): TCNSSubscriber<TNeuron, TDendrite>[];
86
+ }
87
+ //# sourceMappingURL=CNSNetwork.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CNSNetwork.d.ts","sourceRoot":"","sources":["../src/CNSNetwork.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAChD,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAEhD,qBAAa,UAAU,CACnB,eAAe,SAAS,MAAM,EAC9B,WAAW,SAAS,MAAM,EAC1B,OAAO,SAAS,UAAU,CAAC,GAAG,EAAE,WAAW,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EACrE,SAAS,SAAS,YAAY,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;IAyChD,OAAO,CAAC,QAAQ,CAAC,OAAO;IAvCpC;;;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;IAE3D;;;OAGG;IACH,OAAO,CAAC,QAAQ,CAGZ;IAEJ,OAAO,CAAC,WAAW,CAAmC;IACtD,OAAO,CAAC,aAAa,CAAyC;IAC9D,OAAO,CAAC,eAAe,CAGnB;IAEJ,OAAO,CAAC,4BAA4B,CAAuC;gBAE9C,OAAO,EAAE,OAAO,EAAE;IAM/C;;;;;;OAMG;IACH,OAAO,CAAC,yBAAyB;IAuBjC;;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,qBAAqB,CAAC,UAAU,EAAE,MAAM;IAQ/C;;OAEG;IACI,uBAAuB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAItE;;;OAGG;IACI,yBAAyB,CAC5B,UAAU,EAAE,MAAM,EAClB,eAAe,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,GACrC,OAAO;IA4BV,OAAO,CAAC,YAAY;IA8Bb,+BAA+B,CAAC,cAAc,EAAE,eAAe;IAI/D,YAAY;IAIZ,cAAc;IAId,UAAU;IAIV,mBAAmB,CAAC,KAAK,SAAS,MAAM,GAAG,MAAM,EACpD,cAAc,EAAE,KAAK,GAIL,aAAa,CAAC,KAAK,EAAE,OAAO,CAAC,GAAG,SAAS;IAGtD,eAAe,CAAC,KAAK,SAAS,MAAM,GAAG,MAAM,EAAE,UAAU,EAAE,KAAK;IAIhE,cAAc,CACjB,cAAc,EAAE,eAAe,GAChC,cAAc,CAAC,OAAO,EAAE,SAAS,CAAC,EAAE;CAG1C"}
@@ -0,0 +1,27 @@
1
+ import { TCNSNeuronActivationTask } from './types/TCNSNeuronActivationTask';
2
+ export declare class CNSNeuronActivationPump<TCollateralName extends string, TNeuronName extends string> {
3
+ private readonly processor;
4
+ protected readonly concurrency?: number | undefined;
5
+ protected readonly abortSignal?: AbortSignal | undefined;
6
+ private items;
7
+ private head;
8
+ private tail;
9
+ private size;
10
+ private capacity;
11
+ protected activeOperations: number;
12
+ private activeTasks;
13
+ private pumping;
14
+ private needsPump;
15
+ constructor(processor: (neuronActivationTask: TCNSNeuronActivationTask<TCollateralName, TNeuronName>) => (() => void) | Promise<() => void>, concurrency?: number | undefined, abortSignal?: AbortSignal | undefined, initialCapacity?: number);
16
+ protected get canStartOperation(): boolean;
17
+ private resize;
18
+ private dequeue;
19
+ private enqueueItem;
20
+ protected pump(): void;
21
+ enqueue(neuronActivationTask: TCNSNeuronActivationTask<TCollateralName, TNeuronName>): void;
22
+ get length(): number;
23
+ getActiveOperationsCount(): number;
24
+ getQueuedTasks(): TCNSNeuronActivationTask<TCollateralName, TNeuronName>[];
25
+ getActiveTasks(): TCNSNeuronActivationTask<TCollateralName, TNeuronName>[];
26
+ }
27
+ //# sourceMappingURL=CNSNeuronActivationPump.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CNSNeuronActivationPump.d.ts","sourceRoot":"","sources":["../src/CNSNeuronActivationPump.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAE,MAAM,kCAAkC,CAAC;AAE5E,qBAAa,uBAAuB,CAChC,eAAe,SAAS,MAAM,EAC9B,WAAW,SAAS,MAAM;IAkBtB,OAAO,CAAC,QAAQ,CAAC,SAAS;IAM1B,SAAS,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM;IACvC,SAAS,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,WAAW;IAvBhD,OAAO,CAAC,KAAK,CACN;IACP,OAAO,CAAC,IAAI,CAAK;IACjB,OAAO,CAAC,IAAI,CAAK;IACjB,OAAO,CAAC,IAAI,CAAK;IACjB,OAAO,CAAC,QAAQ,CAAM;IACtB,SAAS,CAAC,gBAAgB,SAAK;IAC/B,OAAO,CAAC,WAAW,CAEf;IAGJ,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,SAAS,CAAS;gBAGL,SAAS,EAAE,CACxB,oBAAoB,EAAE,wBAAwB,CAC1C,eAAe,EACf,WAAW,CACd,KACA,CAAC,MAAM,IAAI,CAAC,GAAG,OAAO,CAAC,MAAM,IAAI,CAAC,EACpB,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;IAaf,OAAO,CAAC,WAAW;IAenB,SAAS,CAAC,IAAI;IA4Dd,OAAO,CACH,oBAAoB,EAAE,wBAAwB,CAC1C,eAAe,EACf,WAAW,CACd;IAQL,IAAI,MAAM,WAET;IAED,wBAAwB;IAIjB,cAAc,IAAI,wBAAwB,CAC7C,eAAe,EACf,WAAW,CACd,EAAE;IAWI,cAAc,IAAI,wBAAwB,CAC7C,eAAe,EACf,WAAW,CACd,EAAE;CAGN"}
@@ -1,31 +1,52 @@
1
- import { ICNS } from './interfaces/ICNS';
1
+ import { ICNSStimulationContextStore } from './interfaces/ICNSStimulationContextStore';
2
2
  import { TCNSStimulationOptions } from './types/TCNSStimulationOptions';
3
3
  import { TCNSNeuron } from './types/TCNSNeuron';
4
4
  import { TCNSDendrite } from './types/TCNSDendrite';
5
5
  import { TCNSSubscriber } from './types/TCNSSubscriber';
6
6
  import { CNSInstanceNeuronQueue } from './CNSInstanceNeuronQueue';
7
7
  import { TCNSSignal } from './types/TCNSSignal';
8
- import { TCNSSerializedQueueItem } from './types/TCNSSerializedSignal';
8
+ import { TCNSNeuronActivationTask } from './types/TCNSNeuronActivationTask';
9
+ import { CNS } from './CNS';
10
+ import { TCNSNeuronActivationTaskFailure } from './types/TCNSNeuronActivationTaskFailure';
9
11
  export declare class CNSStimulation<TCollateralName extends string, TNeuronName extends string, TNeuron extends TCNSNeuron<any, TNeuronName, TCollateralName, any, any, any, any>, TDendrite extends TCNSDendrite<any, any, any, any, any, any>, TInputPayload, TOutputPayload> {
10
12
  private readonly cns;
11
- readonly options?: TCNSStimulationOptions<TCollateralName, TInputPayload, TOutputPayload> | undefined;
13
+ readonly options?: TCNSStimulationOptions<TCollateralName, TInputPayload, TOutputPayload, TNeuronName> | undefined;
12
14
  private readonly ctx;
13
15
  private readonly queue;
14
16
  private readonly nueronVisitMap?;
15
17
  private readonly instanceNeuronQueue;
16
18
  private scheduledCount;
19
+ private readonly pendingTasks;
20
+ private readonly failedTasks;
17
21
  private completed;
18
22
  private resolveCompleted;
19
23
  private rejectCompleted;
20
24
  private isCompleted;
25
+ private onResponseError;
21
26
  /**
22
27
  * Track active SCCs: SCC index -> count of active neurons in that SCC
23
28
  */
24
29
  private readonly activeSccCounts;
25
30
  readonly id: string;
26
- constructor(cns: ICNS<TNeuron, TDendrite>, instanceNeuronQueue: CNSInstanceNeuronQueue<TNeuron>, options?: TCNSStimulationOptions<TCollateralName, TInputPayload, TOutputPayload> | undefined);
31
+ constructor(cns: CNS<TCollateralName, TNeuronName, TNeuron, TDendrite>, instanceNeuronQueue: CNSInstanceNeuronQueue<TNeuron>, options?: TCNSStimulationOptions<TCollateralName, TInputPayload, TOutputPayload, TNeuronName> | undefined);
27
32
  private tryResolveCompleted;
28
33
  waitUntilComplete(): Promise<void>;
34
+ /**
35
+ * Returns all current activation tasks: queued, active, and pending (scheduled but not yet enqueued)
36
+ */
37
+ getAllActivationTasks(): TCNSNeuronActivationTask<TCollateralName, TNeuronName>[];
38
+ /**
39
+ * Returns all tasks that failed or were aborted
40
+ */
41
+ getFailedTasks(): Array<TCNSNeuronActivationTaskFailure<TCollateralName, TNeuronName>>;
42
+ /**
43
+ * Get the context store for this stimulation
44
+ */
45
+ getContext(): ICNSStimulationContextStore;
46
+ /**
47
+ * Enqueue activation tasks directly into the stimulation queue
48
+ */
49
+ enqueueTasks(tasks: TCNSNeuronActivationTask<TCollateralName, TNeuronName>[]): void;
29
50
  protected get concurrencyEnabled(): boolean;
30
51
  protected get autoCleanupContextsEnabled(): boolean;
31
52
  /**
@@ -49,8 +70,8 @@ export declare class CNSStimulation<TCollateralName extends string, TNeuronName
49
70
  */
50
71
  protected canNeuronBeGuaranteedDone(neuronId: TNeuronName): boolean;
51
72
  protected cleanupCtxIfNeeded(neuron: TNeuron): void;
52
- protected createSubscriberQueueItem(subscriber: TCNSSubscriber<TNeuron, TDendrite>, inputSignal?: TCNSSignal<TCollateralName, any>): TCNSSerializedQueueItem<TCollateralName, TNeuronName>;
53
- private processQueueItem;
73
+ protected createSubscriberQueueItem(subscriber: TCNSSubscriber<TNeuron, TDendrite>, inputSignal?: TCNSSignal<TCollateralName, any>): TCNSNeuronActivationTask<TCollateralName, TNeuronName>;
74
+ private executeActivationTask;
54
75
  protected processResponseOrResponses(inputSignal?: TCNSSignal<TCollateralName, TInputPayload>, outputSignalOrSignals?: TCNSSignal<TCollateralName, TOutputPayload> | TCNSSignal<TCollateralName, TOutputPayload>[], error?: any): void;
55
76
  protected processResponse(inputSignal?: TCNSSignal<TCollateralName, TInputPayload>, outputSignal?: TCNSSignal<TCollateralName, TOutputPayload>, error?: any): void;
56
77
  responseToSignal(signalOrSignals: TCNSSignal<TCollateralName, TOutputPayload> | TCNSSignal<TCollateralName, TOutputPayload>[]): void;
@@ -1 +1 @@
1
- {"version":3,"file":"CNSStimulation.d.ts","sourceRoot":"","sources":["../src/CNSStimulation.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"CNSStimulation.d.ts","sourceRoot":"","sources":["../src/CNSStimulation.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,2BAA2B,EAAE,MAAM,0CAA0C,CAAC;AACvF,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,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAClE,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAChD,OAAO,EAAE,wBAAwB,EAAE,MAAM,kCAAkC,CAAC;AAC5E,OAAO,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC;AAE5B,OAAO,EAAE,+BAA+B,EAAE,MAAM,yCAAyC,CAAC;AAE1F,qBAAa,cAAc,CACvB,eAAe,SAAS,MAAM,EAC9B,WAAW,SAAS,MAAM,EAC1B,OAAO,SAAS,UAAU,CACtB,GAAG,EACH,WAAW,EACX,eAAe,EACf,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;IAiCV,OAAO,CAAC,QAAQ,CAAC,GAAG;aAOJ,OAAO,CAAC,EAAE,sBAAsB,CAC5C,eAAe,EACf,aAAa,EACb,cAAc,EACd,WAAW,CACd;IA3CL,OAAO,CAAC,QAAQ,CAAC,GAAG,CAA8B;IAClD,OAAO,CAAC,QAAQ,CAAC,KAAK,CAGpB;IACF,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAC,CAA2B;IAC3D,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAkC;IACtE,OAAO,CAAC,cAAc,CAAK;IAC3B,OAAO,CAAC,QAAQ,CAAC,YAAY,CAEzB;IACJ,OAAO,CAAC,QAAQ,CAAC,WAAW,CAErB;IACP,OAAO,CAAC,SAAS,CAGd;IACH,OAAO,CAAC,gBAAgB,CAAc;IACtC,OAAO,CAAC,eAAe,CAAoB;IAC3C,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,eAAe,CAAoB;IAE3C;;OAEG;IACH,OAAO,CAAC,QAAQ,CAAC,eAAe,CAA6B;IAE7D,SAAgB,EAAE,EAAE,MAAM,CAAC;gBAGN,GAAG,EAAE,GAAG,CACrB,eAAe,EACf,WAAW,EACX,OAAO,EACP,SAAS,CACZ,EACD,mBAAmB,EAAE,sBAAsB,CAAC,OAAO,CAAC,EACpC,OAAO,CAAC,EAAE,sBAAsB,CAC5C,eAAe,EACf,aAAa,EACb,cAAc,EACd,WAAW,CACd,YAAA;IAsBL,OAAO,CAAC,mBAAmB;IAmDpB,iBAAiB,IAAI,OAAO,CAAC,IAAI,CAAC;IAIzC;;OAEG;IACI,qBAAqB,IAAI,wBAAwB,CACpD,eAAe,EACf,WAAW,CACd,EAAE;IAOH;;OAEG;IACI,cAAc,IAAI,KAAK,CAC1B,+BAA+B,CAAC,eAAe,EAAE,WAAW,CAAC,CAChE;IAID;;OAEG;IACI,UAAU,IAAI,2BAA2B;IAIhD;;OAEG;IACI,YAAY,CACf,KAAK,EAAE,wBAAwB,CAAC,eAAe,EAAE,WAAW,CAAC,EAAE,GAChE,IAAI;IAeP,SAAS,KAAK,kBAAkB,IAAI,OAAO,CAK1C;IAED,SAAS,KAAK,0BAA0B,IAAI,OAAO,CAElD;IAED;;OAEG;IACH,SAAS,CAAC,gBAAgB,CAAC,QAAQ,EAAE,WAAW,GAAG,IAAI;IAMvD;;OAEG;IACH,SAAS,CAAC,kBAAkB,CAAC,QAAQ,EAAE,WAAW,GAAG,IAAI;IAMzD;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAQzB;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAgBzB;;OAEG;IACH,SAAS,CAAC,yBAAyB,CAAC,QAAQ,EAAE,WAAW,GAAG,OAAO;IAQnE,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,eAAe,EAAE,GAAG,CAAC;IAgClD,OAAO,CAAC,qBAAqB;IA+K7B,SAAS,CAAC,0BAA0B,CAChC,WAAW,CAAC,EAAE,UAAU,CAAC,eAAe,EAAE,aAAa,CAAC,EACxD,qBAAqB,CAAC,EAChB,UAAU,CAAC,eAAe,EAAE,cAAc,CAAC,GAC3C,UAAU,CAAC,eAAe,EAAE,cAAc,CAAC,EAAE,EACnD,KAAK,CAAC,EAAE,GAAG,GACZ,IAAI;IAmBP,SAAS,CAAC,eAAe,CACrB,WAAW,CAAC,EAAE,UAAU,CAAC,eAAe,EAAE,aAAa,CAAC,EACxD,YAAY,CAAC,EAAE,UAAU,CAAC,eAAe,EAAE,cAAc,CAAC,EAC1D,KAAK,CAAC,EAAE,GAAG,GACZ,IAAI;IAoGA,gBAAgB,CACnB,eAAe,EACT,UAAU,CAAC,eAAe,EAAE,cAAc,CAAC,GAC3C,UAAU,CAAC,eAAe,EAAE,cAAc,CAAC,EAAE,GACpD,IAAI;CA+BV"}