@cnstra/core 2.4.0 → 2.6.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.
- package/dist/CNS.d.ts +32 -10
- package/dist/CNS.d.ts.map +1 -1
- package/dist/CNSCollateral.d.ts +2 -2
- package/dist/CNSCollateral.d.ts.map +1 -1
- package/dist/CNSNetwork.d.ts +7 -7
- package/dist/CNSNetwork.d.ts.map +1 -1
- package/dist/CNSStimulation.d.ts +55 -15
- package/dist/CNSStimulation.d.ts.map +1 -1
- package/dist/CNSStimulationContextStore.d.ts +1 -1
- package/dist/CNSStimulationContextStore.d.ts.map +1 -1
- package/dist/factory/index.d.ts +26 -82
- package/dist/factory/index.d.ts.map +1 -1
- package/dist/index.cjs +235 -136
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.ts +1 -14
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +236 -134
- package/dist/index.js.map +1 -1
- package/dist/utils/CNSStimulationGate.d.ts +7 -7
- package/dist/utils/CNSStimulationGate.d.ts.map +1 -1
- package/package.json +4 -1
- package/dist/CNSPersistOptionsRegistry.d.ts +0 -28
- package/dist/CNSPersistOptionsRegistry.d.ts.map +0 -1
- package/dist/interfaces/ICNS.d.ts +0 -20
- package/dist/interfaces/ICNS.d.ts.map +0 -1
- package/dist/interfaces/ICNSCollateral.d.ts +0 -6
- package/dist/interfaces/ICNSCollateral.d.ts.map +0 -1
- package/dist/interfaces/ICNSStimulationContextStore.d.ts +0 -8
- package/dist/interfaces/ICNSStimulationContextStore.d.ts.map +0 -1
- package/dist/types/TCNSAfferentPath.d.ts +0 -4
- package/dist/types/TCNSAfferentPath.d.ts.map +0 -1
- package/dist/types/TCNSAxon.d.ts +0 -26
- package/dist/types/TCNSAxon.d.ts.map +0 -1
- package/dist/types/TCNSDendrite.d.ts +0 -9
- package/dist/types/TCNSDendrite.d.ts.map +0 -1
- package/dist/types/TCNSHandlerContext.d.ts +0 -24
- package/dist/types/TCNSHandlerContext.d.ts.map +0 -1
- package/dist/types/TCNSLocalContextValueStore.d.ts +0 -6
- package/dist/types/TCNSLocalContextValueStore.d.ts.map +0 -1
- package/dist/types/TCNSModality.d.ts +0 -5
- package/dist/types/TCNSModality.d.ts.map +0 -1
- package/dist/types/TCNSNeuron.d.ts +0 -12
- package/dist/types/TCNSNeuron.d.ts.map +0 -1
- package/dist/types/TCNSNeuronActivationTask.d.ts +0 -8
- package/dist/types/TCNSNeuronActivationTask.d.ts.map +0 -1
- package/dist/types/TCNSNeuronActivationTaskFailure.d.ts +0 -7
- package/dist/types/TCNSNeuronActivationTaskFailure.d.ts.map +0 -1
- package/dist/types/TCNSNeuronResponseReturn.d.ts +0 -9
- package/dist/types/TCNSNeuronResponseReturn.d.ts.map +0 -1
- package/dist/types/TCNSOptions.d.ts +0 -11
- package/dist/types/TCNSOptions.d.ts.map +0 -1
- package/dist/types/TCNSPersist.d.ts +0 -16
- package/dist/types/TCNSPersist.d.ts.map +0 -1
- package/dist/types/TCNSSignal.d.ts +0 -6
- package/dist/types/TCNSSignal.d.ts.map +0 -1
- package/dist/types/TCNSStimulationOptions.d.ts +0 -14
- package/dist/types/TCNSStimulationOptions.d.ts.map +0 -1
- package/dist/types/TCNSStimulationQueueItem.d.ts +0 -11
- package/dist/types/TCNSStimulationQueueItem.d.ts.map +0 -1
- package/dist/types/TCNSStimulationResponse.d.ts +0 -17
- package/dist/types/TCNSStimulationResponse.d.ts.map +0 -1
- package/dist/types/TCNSStimulationSerializedContextValue.d.ts +0 -4
- package/dist/types/TCNSStimulationSerializedContextValue.d.ts.map +0 -1
- package/dist/types/TCNSSubscriber.d.ts +0 -7
- package/dist/types/TCNSSubscriber.d.ts.map +0 -1
package/dist/CNS.d.ts
CHANGED
|
@@ -1,15 +1,16 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
1
|
+
import type { ICNSCollateral } from '@cnstra/types';
|
|
2
|
+
import { TCNSNeuron } from '@cnstra/types';
|
|
3
|
+
import { TCNSDendrite } from '@cnstra/types';
|
|
4
|
+
import { TCNSOptions } from '@cnstra/types';
|
|
5
|
+
import { TCNSStimulationOptions } from '@cnstra/types';
|
|
5
6
|
import { CNSStimulation } from './CNSStimulation';
|
|
6
|
-
import { TCNSSignal } from '
|
|
7
|
+
import { TCNSSignal } from '@cnstra/types';
|
|
7
8
|
import { CNSInstanceNeuronQueue } from './CNSInstanceNeuronQueue';
|
|
8
|
-
import { TCNSStimulationResponse } from '
|
|
9
|
-
import {
|
|
9
|
+
import { TCNSStimulationResponse } from '@cnstra/types';
|
|
10
|
+
import { TCNSStimulationDrain } from '@cnstra/types';
|
|
11
|
+
import { TCNSNeuronActivationTask } from '@cnstra/types';
|
|
10
12
|
import { CNSNetwork } from './CNSNetwork';
|
|
11
|
-
import { ICNS } from '
|
|
12
|
-
import { CNSCollateral } from './CNSCollateral';
|
|
13
|
+
import { ICNS } from '@cnstra/types';
|
|
13
14
|
export declare class CNS<TNeuron extends TCNSNeuron<any, any>, TDendrite extends TCNSDendrite<any, any, any> = TCNSDendrite<any, any, any>> implements ICNS<TNeuron, TDendrite> {
|
|
14
15
|
protected readonly neurons: TNeuron[];
|
|
15
16
|
readonly options?: TCNSOptions | undefined;
|
|
@@ -26,6 +27,10 @@ export declare class CNS<TNeuron extends TCNSNeuron<any, any>, TDendrite extends
|
|
|
26
27
|
* Global response listeners applied to every stimulation.
|
|
27
28
|
*/
|
|
28
29
|
private readonly globalResponseListeners;
|
|
30
|
+
/**
|
|
31
|
+
* Global batch-boundary listeners applied to every stimulation.
|
|
32
|
+
*/
|
|
33
|
+
private readonly globalDrainListeners;
|
|
29
34
|
/**
|
|
30
35
|
* Shared, app/organism-wide value handed to every dendrite as `ctx.global`.
|
|
31
36
|
* Stored untyped (the type is baked into neurons via `neuronFactory().withGlobal<T>()`);
|
|
@@ -34,8 +39,25 @@ export declare class CNS<TNeuron extends TCNSNeuron<any, any>, TDendrite extends
|
|
|
34
39
|
readonly global?: unknown;
|
|
35
40
|
constructor(neurons: TNeuron[], options?: TCNSOptions | undefined, global?: unknown);
|
|
36
41
|
addResponseListener(listener: (response: TCNSStimulationResponse) => void | Promise<void>): () => void;
|
|
42
|
+
/**
|
|
43
|
+
* Register a listener called once at the end of every synchronous turn of
|
|
44
|
+
* every stimulation - see {@link TCNSStimulationDrain}. This is how an
|
|
45
|
+
* integration (a state manager, an in-memory database) installs a single
|
|
46
|
+
* commit point for the whole organism instead of passing `onDrain` per call.
|
|
47
|
+
*
|
|
48
|
+
* Returns an unsubscribe function.
|
|
49
|
+
*/
|
|
50
|
+
addDrainListener(listener: (drain: TCNSStimulationDrain) => void): () => void;
|
|
51
|
+
/**
|
|
52
|
+
* Fan a drain out to the local and global listeners, or return undefined when
|
|
53
|
+
* there are none so the stimulation can skip the boundary check entirely.
|
|
54
|
+
*
|
|
55
|
+
* Listener errors are isolated: a drain is a notification, and one broken
|
|
56
|
+
* flush must not stop the others or derail the stimulation that triggered it.
|
|
57
|
+
*/
|
|
58
|
+
private wrapOnDrain;
|
|
37
59
|
private wrapOnResponse;
|
|
38
|
-
stimulate(signalOrSignals: TCNSSignal<
|
|
60
|
+
stimulate(signalOrSignals: TCNSSignal<ICNSCollateral<unknown>> | TCNSSignal<ICNSCollateral<unknown>>[], options?: TCNSStimulationOptions<TCNSStimulationResponse>): CNSStimulation<TNeuron, TDendrite>;
|
|
39
61
|
/**
|
|
40
62
|
* Start a stimulation with activation tasks directly
|
|
41
63
|
*/
|
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,
|
|
1
|
+
{"version":3,"file":"CNS.d.ts","sourceRoot":"","sources":["../src/CNS.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AACpD,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,sBAAsB,EAAE,MAAM,eAAe,CAAC;AACvD,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAClE,OAAO,EAAE,uBAAuB,EAAE,MAAM,eAAe,CAAC;AACxD,OAAO,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AACrD,OAAO,EAAE,wBAAwB,EAAE,MAAM,eAAe,CAAC;AACzD,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AAErC,qBAAa,GAAG,CACZ,OAAO,SAAS,UAAU,CAAC,GAAG,EAAE,GAAG,CAAC,EACpC,SAAS,SAAS,YAAY,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,YAAY,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAC7E,YAAW,IAAI,CAAC,OAAO,EAAE,SAAS,CAAC;IAoC7B,SAAS,CAAC,QAAQ,CAAC,OAAO,EAAE,OAAO,EAAE;aACrB,OAAO,CAAC,EAAE,WAAW;IAnCzC;;OAEG;IACH,SAAgB,OAAO,EAAE,UAAU,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;IAExD;;;OAGG;IACH,SAAS,CAAC,QAAQ,CAAC,mBAAmB,kCACI;IAE1C;;OAEG;IACH,OAAO,CAAC,QAAQ,CAAC,uBAAuB,CAEjC;IAEP;;OAEG;IACH,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAE9B;IAEP;;;;OAIG;IACH,SAAgB,MAAM,CAAC,EAAE,OAAO,CAAC;gBAGV,OAAO,EAAE,OAAO,EAAE,EACrB,OAAO,CAAC,EAAE,WAAW,YAAA,EACrC,MAAM,CAAC,EAAE,OAAO;IAMb,mBAAmB,CACtB,QAAQ,EAAE,CAAC,QAAQ,EAAE,uBAAuB,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,GACtE,MAAM,IAAI;IAWb;;;;;;;OAOG;IACI,gBAAgB,CACnB,QAAQ,EAAE,CAAC,KAAK,EAAE,oBAAoB,KAAK,IAAI,GAChD,MAAM,IAAI;IAWb;;;;;;OAMG;IACH,OAAO,CAAC,WAAW;IAsBnB,OAAO,CAAC,cAAc;IAmDf,SAAS,CACZ,eAAe,EACT,UAAU,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,GACnC,UAAU,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,EAAE,EAC3C,OAAO,CAAC,EAAE,sBAAsB,CAAC,uBAAuB,CAAC,GAC1D,cAAc,CAAC,OAAO,EAAE,SAAS,CAAC;IAarC;;OAEG;IACI,QAAQ,CACX,KAAK,EAAE,wBAAwB,CAAC,OAAO,CAAC,EAAE,EAC1C,OAAO,CAAC,EAAE,sBAAsB,CAAC,uBAAuB,CAAC,GAC1D,cAAc,CAAC,OAAO,EAAE,SAAS,CAAC;CAYxC"}
|
package/dist/CNSCollateral.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { TCNSSignal } from '
|
|
2
|
-
import { ICNSCollateral } from '
|
|
1
|
+
import { TCNSSignal } from '@cnstra/types';
|
|
2
|
+
import { ICNSCollateral } from '@cnstra/types';
|
|
3
3
|
export declare class CNSCollateral<TPayload> implements ICNSCollateral<TPayload> {
|
|
4
4
|
createSignal(): TCNSSignal<CNSCollateral<TPayload>>;
|
|
5
5
|
createSignal(payload: TPayload): TCNSSignal<CNSCollateral<TPayload>>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CNSCollateral.d.ts","sourceRoot":"","sources":["../src/CNSCollateral.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"CNSCollateral.d.ts","sourceRoot":"","sources":["../src/CNSCollateral.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAE/C,qBAAa,aAAa,CAAC,QAAQ,CAAE,YAAW,cAAc,CAAC,QAAQ,CAAC;IACpE,YAAY,IAAI,UAAU,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;IACnD,YAAY,CAAC,OAAO,EAAE,QAAQ,GAAG,UAAU,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;CAIvE"}
|
package/dist/CNSNetwork.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
1
|
+
import type { ICNSCollateral } from '@cnstra/types';
|
|
2
|
+
import { TCNSNeuron } from '@cnstra/types';
|
|
3
|
+
import { TCNSSubscriber } from '@cnstra/types';
|
|
4
|
+
import { TCNSDendrite } from '@cnstra/types';
|
|
5
5
|
export declare class CNSNetwork<TNeuron extends TCNSNeuron<any, any>, TDendrite extends TCNSDendrite<any, any, any>> {
|
|
6
6
|
private readonly neurons;
|
|
7
7
|
/**
|
|
@@ -68,9 +68,9 @@ export declare class CNSNetwork<TNeuron extends TCNSNeuron<any, any>, TDendrite
|
|
|
68
68
|
*/
|
|
69
69
|
canNeuronBeGuaranteedDone(neuron: TNeuron, activeSccCounts: Map<number, number>): boolean;
|
|
70
70
|
private buildIndexes;
|
|
71
|
-
getParentNeuronByCollateral(collateral:
|
|
71
|
+
getParentNeuronByCollateral(collateral: ICNSCollateral<unknown>): TNeuron | undefined;
|
|
72
72
|
getDendrites(): TDendrite[];
|
|
73
|
-
getCollaterals():
|
|
74
|
-
getSubscribers(collateral:
|
|
73
|
+
getCollaterals(): ICNSCollateral<unknown>[];
|
|
74
|
+
getSubscribers(collateral: ICNSCollateral<unknown>): TCNSSubscriber<TNeuron, TDendrite>[];
|
|
75
75
|
}
|
|
76
76
|
//# sourceMappingURL=CNSNetwork.d.ts.map
|
package/dist/CNSNetwork.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CNSNetwork.d.ts","sourceRoot":"","sources":["../src/CNSNetwork.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"CNSNetwork.d.ts","sourceRoot":"","sources":["../src/CNSNetwork.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AACpD,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAE7C,qBAAa,UAAU,CACnB,OAAO,SAAS,UAAU,CAAC,GAAG,EAAE,GAAG,CAAC,EACpC,SAAS,SAAS,YAAY,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;IA2CjC,OAAO,CAAC,QAAQ,CAAC,OAAO;IAzCpC;;;;;;OAMG;IACH,OAAO,CAAC,4BAA4B,CAAsB;IAC1D,OAAO,CAAC,QAAQ,CAAS;IAEzB,IAAW,2BAA2B,IAAI,GAAG,CAAC,OAAO,CAAC,EAAE,CAGvD;IAED;;OAEG;IACH,OAAO,CAAC,WAAW,CAA8B;IAEjD;;OAEG;IACH,OAAO,CAAC,MAAM,CAAuC;IAErD;;OAEG;IACH,OAAO,CAAC,YAAY,CAAuC;IAE3D;;;OAGG;IACH,OAAO,CAAC,QAAQ,CAGZ;IAEJ,OAAO,CAAC,wBAAwB,CAA+C;gBAElD,OAAO,EAAE,OAAO,EAAE;IAM/C,+DAA+D;IAC/D,OAAO,CAAC,SAAS;IAMjB;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAiCxB;;OAEG;IACH,OAAO,CAAC,QAAQ;IAqEhB;;OAEG;IACH,OAAO,CAAC,WAAW;IA6BnB;;;OAGG;IACH,OAAO,CAAC,iBAAiB;IAmDzB;;;;OAIG;IACI,iBAAiB,CAAC,MAAM,EAAE,OAAO;IASxC;;OAEG;IACI,mBAAmB,CAAC,MAAM,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS;IAK/D;;;OAGG;IACI,yBAAyB,CAC5B,MAAM,EAAE,OAAO,EACf,eAAe,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,GACrC,OAAO;IA6BV,OAAO,CAAC,YAAY;IAsBb,2BAA2B,CAAC,UAAU,EAAE,cAAc,CAAC,OAAO,CAAC;IAM/D,YAAY;IAaZ,cAAc;IAUd,cAAc,CACjB,UAAU,EAAE,cAAc,CAAC,OAAO,CAAC,GACpC,cAAc,CAAC,OAAO,EAAE,SAAS,CAAC,EAAE;CAG1C"}
|
package/dist/CNSStimulation.d.ts
CHANGED
|
@@ -1,15 +1,16 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
1
|
+
import type { ICNSCollateral } from '@cnstra/types';
|
|
2
|
+
import { ICNSStimulationContextStore } from '@cnstra/types';
|
|
3
|
+
import { TCNSStimulationOptions } from '@cnstra/types';
|
|
4
|
+
import { TCNSNeuron } from '@cnstra/types';
|
|
5
|
+
import { TCNSDendrite } from '@cnstra/types';
|
|
6
|
+
import { TCNSSubscriber } from '@cnstra/types';
|
|
6
7
|
import { CNSInstanceNeuronQueue } from './CNSInstanceNeuronQueue';
|
|
7
|
-
import { TCNSSignal } from '
|
|
8
|
-
import { TCNSNeuronActivationTask } from '
|
|
8
|
+
import { TCNSSignal } from '@cnstra/types';
|
|
9
|
+
import { TCNSNeuronActivationTask } from '@cnstra/types';
|
|
9
10
|
import { CNS } from './CNS';
|
|
10
|
-
import { TCNSNeuronActivationTaskFailure } from '
|
|
11
|
-
import { TCNSStimulationResponse } from '
|
|
12
|
-
import {
|
|
11
|
+
import { TCNSNeuronActivationTaskFailure } from '@cnstra/types';
|
|
12
|
+
import { TCNSStimulationResponse } from '@cnstra/types';
|
|
13
|
+
import { TCNSStimulationDrain } from '@cnstra/types';
|
|
13
14
|
export declare class CNSStimulation<TNeuron extends TCNSNeuron<any, any>, TDendrite extends TCNSDendrite<any, any, any> = TCNSDendrite<any, any, any>> {
|
|
14
15
|
readonly cns: CNS<TNeuron, TDendrite>;
|
|
15
16
|
readonly options?: TCNSStimulationOptions<TCNSStimulationResponse> | undefined;
|
|
@@ -23,9 +24,11 @@ export declare class CNSStimulation<TNeuron extends TCNSNeuron<any, any>, TDendr
|
|
|
23
24
|
private activeTasks?;
|
|
24
25
|
private pumping;
|
|
25
26
|
private needsPump;
|
|
27
|
+
private turnDepth;
|
|
26
28
|
private readonly neuronVisitMap?;
|
|
27
29
|
private readonly instanceNeuronQueue;
|
|
28
30
|
private scheduledCount;
|
|
31
|
+
private reservedActivations;
|
|
29
32
|
private pendingTasks?;
|
|
30
33
|
private failedTasks?;
|
|
31
34
|
private completed?;
|
|
@@ -40,12 +43,18 @@ export declare class CNSStimulation<TNeuron extends TCNSNeuron<any, any>, TDendr
|
|
|
40
43
|
* undefined when there is neither a local nor any global listener.
|
|
41
44
|
*/
|
|
42
45
|
private readonly onResponse?;
|
|
46
|
+
/**
|
|
47
|
+
* The (already wrapped) drain listener, or undefined when there is neither a
|
|
48
|
+
* local nor any global one. When undefined, endTurn() bails immediately, so a
|
|
49
|
+
* stimulation with no drain listener pays only the turn depth counter.
|
|
50
|
+
*/
|
|
51
|
+
private readonly onDrain?;
|
|
43
52
|
/**
|
|
44
53
|
* Track active SCCs: SCC index -> count of active neurons in that SCC.
|
|
45
54
|
* Only allocated when context auto-cleanup is enabled.
|
|
46
55
|
*/
|
|
47
56
|
private readonly activeSccCounts?;
|
|
48
|
-
constructor(cns: CNS<TNeuron, TDendrite>, instanceNeuronQueue: CNSInstanceNeuronQueue<TNeuron>, options?: TCNSStimulationOptions<TCNSStimulationResponse> | undefined, onResponse?: (response: TCNSStimulationResponse) => void | Promise<void
|
|
57
|
+
constructor(cns: CNS<TNeuron, TDendrite>, instanceNeuronQueue: CNSInstanceNeuronQueue<TNeuron>, options?: TCNSStimulationOptions<TCNSStimulationResponse> | undefined, onResponse?: (response: TCNSStimulationResponse) => void | Promise<void>, onDrain?: (drain: TCNSStimulationDrain) => void);
|
|
49
58
|
private pushFailedTask;
|
|
50
59
|
private finalizeResolve;
|
|
51
60
|
private finalizeReject;
|
|
@@ -59,6 +68,29 @@ export declare class CNSStimulation<TNeuron extends TCNSNeuron<any, any>, TDendr
|
|
|
59
68
|
private qEnqueue;
|
|
60
69
|
private qGetQueuedTasks;
|
|
61
70
|
private pump;
|
|
71
|
+
/**
|
|
72
|
+
* Open a synchronous turn. Turns nest: a drain is announced only when the
|
|
73
|
+
* outermost one closes, so an enqueue that happens while the pump is already
|
|
74
|
+
* running does not produce its own boundary.
|
|
75
|
+
*/
|
|
76
|
+
private beginTurn;
|
|
77
|
+
/**
|
|
78
|
+
* Close a synchronous turn and, if it was the outermost and nothing more can
|
|
79
|
+
* run without yielding to the event loop, announce the drain.
|
|
80
|
+
*
|
|
81
|
+
* This is the only place the synchronous frontier is observable. A response
|
|
82
|
+
* cannot serve the purpose: responses are emitted when an activation
|
|
83
|
+
* *finishes*, but a turn just as often ends when one *starts* and returns a
|
|
84
|
+
* promise - at which point there is nothing left to emit a response from.
|
|
85
|
+
*/
|
|
86
|
+
private endTurn;
|
|
87
|
+
/**
|
|
88
|
+
* Activations that exist (or are reserved) but whose dendrite body has not
|
|
89
|
+
* been invoked yet: sitting in the ring buffer, created and held in
|
|
90
|
+
* pendingTasks, or reserved by an array fan-out mid-dispatch. Subscribers
|
|
91
|
+
* parked behind an async onResponse land here too - their body has not run.
|
|
92
|
+
*/
|
|
93
|
+
private get pendingActivations();
|
|
62
94
|
private tryResolveCompleted;
|
|
63
95
|
waitUntilComplete(): Promise<void>;
|
|
64
96
|
/**
|
|
@@ -69,6 +101,14 @@ export declare class CNSStimulation<TNeuron extends TCNSNeuron<any, any>, TDendr
|
|
|
69
101
|
* Returns all tasks that failed or were aborted
|
|
70
102
|
*/
|
|
71
103
|
getFailedTasks(): Array<TCNSNeuronActivationTaskFailure<TNeuron>>;
|
|
104
|
+
/**
|
|
105
|
+
* The current outstanding frontier — every task that has not completed:
|
|
106
|
+
* queued, active, and pending (awaiting an async onResponse), plus any
|
|
107
|
+
* failed/aborted tasks. This is the set to persist for resume: re-activating
|
|
108
|
+
* it re-runs exactly the not-yet-done work. Safe to call at any point during
|
|
109
|
+
* a run (for progress) or after it fails.
|
|
110
|
+
*/
|
|
111
|
+
getOutstandingTasks(): TCNSNeuronActivationTask<TNeuron>[];
|
|
72
112
|
/**
|
|
73
113
|
* Get the context store for this stimulation
|
|
74
114
|
*/
|
|
@@ -100,11 +140,11 @@ export declare class CNSStimulation<TNeuron extends TCNSNeuron<any, any>, TDendr
|
|
|
100
140
|
*/
|
|
101
141
|
protected canNeuronBeGuaranteedDone(neuron: TNeuron): boolean;
|
|
102
142
|
protected cleanupCtxIfNeeded(neuron: TNeuron): void;
|
|
103
|
-
protected createSubscriberQueueItem(subscriber: TCNSSubscriber<TNeuron, TDendrite>, inputSignal?: TCNSSignal<
|
|
143
|
+
protected createSubscriberQueueItem(subscriber: TCNSSubscriber<TNeuron, TDendrite>, inputSignal?: TCNSSignal<ICNSCollateral<unknown>>): TCNSNeuronActivationTask<TNeuron>;
|
|
104
144
|
private executeActivationTask;
|
|
105
145
|
private runStarter;
|
|
106
|
-
protected processResponseOrResponses(emitter: TNeuron | undefined, inputSignal?: TCNSSignal<
|
|
107
|
-
protected processResponse(emitter: TNeuron | undefined, inputSignal?: TCNSSignal<
|
|
108
|
-
responseToSignal(signalOrSignals: TCNSSignal<
|
|
146
|
+
protected processResponseOrResponses(emitter: TNeuron | undefined, inputSignal?: TCNSSignal<ICNSCollateral<unknown>>, outputSignalOrSignals?: TCNSSignal<ICNSCollateral<unknown>> | TCNSSignal<ICNSCollateral<unknown>>[], error?: any): void;
|
|
147
|
+
protected processResponse(emitter: TNeuron | undefined, inputSignal?: TCNSSignal<ICNSCollateral<unknown>>, outputSignal?: TCNSSignal<ICNSCollateral<unknown>>, error?: any): void;
|
|
148
|
+
responseToSignal(signalOrSignals: TCNSSignal<ICNSCollateral<unknown>> | TCNSSignal<ICNSCollateral<unknown>>[]): void;
|
|
109
149
|
}
|
|
110
150
|
//# sourceMappingURL=CNSStimulation.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CNSStimulation.d.ts","sourceRoot":"","sources":["../src/CNSStimulation.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"CNSStimulation.d.ts","sourceRoot":"","sources":["../src/CNSStimulation.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { ICNSStimulationContextStore } from '
|
|
1
|
+
import { ICNSStimulationContextStore } from '@cnstra/types';
|
|
2
2
|
export declare class CNSStimulationContextStore implements ICNSStimulationContextStore {
|
|
3
3
|
private ctx?;
|
|
4
4
|
constructor(ctx?: Map<object, unknown>);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CNSStimulationContextStore.d.ts","sourceRoot":"","sources":["../src/CNSStimulationContextStore.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,2BAA2B,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"CNSStimulationContextStore.d.ts","sourceRoot":"","sources":["../src/CNSStimulationContextStore.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,2BAA2B,EAAE,MAAM,eAAe,CAAC;AAE5D,qBAAa,0BAA2B,YAAW,2BAA2B;IAG1E,OAAO,CAAC,GAAG,CAAC,CAAuB;gBAEvB,GAAG,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC;IAItC,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAIzB,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,IAAI;IAItC,MAAM,IAAI,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC;IAI9B,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAM1C,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;CAG5B"}
|
package/dist/factory/index.d.ts
CHANGED
|
@@ -1,67 +1,64 @@
|
|
|
1
|
-
import { CNS } from '../CNS';
|
|
2
1
|
import { CNSCollateral } from '../CNSCollateral';
|
|
3
|
-
import {
|
|
4
|
-
import { TCNSAxon } from '
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
9
|
-
import {
|
|
10
|
-
import { TCNSModality } from '../types/TCNSModality';
|
|
11
|
-
import { TCNSAfferentPath } from '../types/TCNSAfferentPath';
|
|
2
|
+
import type { ICNSCollateral } from '@cnstra/types';
|
|
3
|
+
import { TCNSAxon } from '@cnstra/types';
|
|
4
|
+
import { TCNSDendrite } from '@cnstra/types';
|
|
5
|
+
import { TCNSHandlerContext } from '@cnstra/types';
|
|
6
|
+
import { TNCNeuronResponseReturn } from '@cnstra/types';
|
|
7
|
+
import { TCNSModality } from '@cnstra/types';
|
|
8
|
+
import { TCNSAfferentPath } from '@cnstra/types';
|
|
12
9
|
export declare const collateral: <TPayload = undefined>() => CNSCollateral<TPayload>;
|
|
13
|
-
type CollateralPayloadUnion<TCollaterals extends readonly
|
|
14
|
-
[K in keyof TCollaterals]: TCollaterals[K] extends
|
|
10
|
+
type CollateralPayloadUnion<TCollaterals extends readonly ICNSCollateral<unknown>[]> = {
|
|
11
|
+
[K in keyof TCollaterals]: TCollaterals[K] extends ICNSCollateral<infer P> ? P : never;
|
|
15
12
|
}[number];
|
|
16
13
|
type InterNeuronAPI<TContextValue, TAxonType extends TCNSAxon = TCNSAxon, TGlobal = unknown> = {
|
|
17
14
|
axon: TAxonType;
|
|
18
15
|
concurrency?: number;
|
|
19
16
|
maxDuration?: number;
|
|
20
|
-
dendrites: TCNSDendrite<TContextValue,
|
|
17
|
+
dendrites: TCNSDendrite<TContextValue, ICNSCollateral<unknown>, TAxonType, TGlobal>[];
|
|
21
18
|
setConcurrency: (n: number | undefined) => InterNeuronAPI<TContextValue, TAxonType, TGlobal>;
|
|
22
19
|
setMaxDuration: (ms: number | undefined) => InterNeuronAPI<TContextValue, TAxonType, TGlobal>;
|
|
23
|
-
bind: <TFollowAxon extends Record<string,
|
|
20
|
+
bind: <TFollowAxon extends Record<string, ICNSCollateral<unknown>>>(axon: TFollowAxon, dendrites: {
|
|
24
21
|
[K in keyof TFollowAxon]: TCNSDendrite<TContextValue, TFollowAxon[K], TAxonType, TGlobal> | TCNSDendrite<TContextValue, TFollowAxon[K], TAxonType, TGlobal>['response'];
|
|
25
22
|
}) => InterNeuronAPI<TContextValue, TAxonType, TGlobal>;
|
|
26
23
|
dendrite: {
|
|
27
|
-
<TSenderCollateral extends
|
|
24
|
+
<TSenderCollateral extends ICNSCollateral<unknown>>(s: {
|
|
28
25
|
collateral: TSenderCollateral;
|
|
29
|
-
response: (payload: TSenderCollateral extends
|
|
26
|
+
response: (payload: TSenderCollateral extends ICNSCollateral<infer P> ? P : never, axon: TAxonType, ctx: TCNSHandlerContext<TContextValue, TGlobal>) => TNCNeuronResponseReturn<TAxonType>;
|
|
30
27
|
}): InterNeuronAPI<TContextValue, TAxonType, TGlobal>;
|
|
31
28
|
<TCollaterals extends readonly [
|
|
32
|
-
|
|
33
|
-
...
|
|
29
|
+
ICNSCollateral<unknown>,
|
|
30
|
+
...ICNSCollateral<unknown>[]
|
|
34
31
|
]>(s: {
|
|
35
32
|
collateral: TCollaterals;
|
|
36
33
|
response: (payload: CollateralPayloadUnion<TCollaterals>, axon: TAxonType, ctx: TCNSHandlerContext<TContextValue, TGlobal>) => TNCNeuronResponseReturn<TAxonType>;
|
|
37
34
|
}): InterNeuronAPI<TContextValue, TAxonType, TGlobal>;
|
|
38
35
|
<TPayloadUnion>(s: {
|
|
39
|
-
collateral:
|
|
36
|
+
collateral: ICNSCollateral<unknown>[];
|
|
40
37
|
response: (payload: TPayloadUnion, axon: TAxonType, ctx: TCNSHandlerContext<TContextValue, TGlobal>) => TNCNeuronResponseReturn<TAxonType>;
|
|
41
38
|
}): InterNeuronAPI<TContextValue, TAxonType, TGlobal>;
|
|
42
|
-
(s: TCNSDendrite<TContextValue,
|
|
39
|
+
(s: TCNSDendrite<TContextValue, ICNSCollateral<unknown>, TAxonType, TGlobal>): InterNeuronAPI<TContextValue, TAxonType, TGlobal>;
|
|
43
40
|
};
|
|
44
41
|
modalityDendrite: {
|
|
45
|
-
<TSenderCollateral extends
|
|
42
|
+
<TSenderCollateral extends ICNSCollateral<unknown>, TResult>(s: {
|
|
46
43
|
collateral: TSenderCollateral;
|
|
47
44
|
modality: TCNSModality;
|
|
48
|
-
afferentPaths?: Map<TCNSAfferentPath, (payload: TSenderCollateral extends
|
|
49
|
-
default?: (payload: TSenderCollateral extends
|
|
45
|
+
afferentPaths?: Map<TCNSAfferentPath, (payload: TSenderCollateral extends ICNSCollateral<infer P> ? P : never, axon: TAxonType, ctx: TCNSHandlerContext<TContextValue, TGlobal>) => TResult | Promise<TResult>>;
|
|
46
|
+
default?: (payload: TSenderCollateral extends ICNSCollateral<infer P> ? P : never, axon: TAxonType, ctx: TCNSHandlerContext<TContextValue, TGlobal>) => TResult | Promise<TResult>;
|
|
50
47
|
output: (result: TResult, axon: TAxonType, ctx: TCNSHandlerContext<TContextValue, TGlobal>) => TNCNeuronResponseReturn<TAxonType>;
|
|
51
48
|
}): InterNeuronAPI<TContextValue, TAxonType, TGlobal>;
|
|
52
|
-
<TSenderCollateral extends
|
|
49
|
+
<TSenderCollateral extends ICNSCollateral<unknown>, TResult>(s: {
|
|
53
50
|
collateral: TSenderCollateral;
|
|
54
51
|
modalities: Array<{
|
|
55
52
|
modality: TCNSModality;
|
|
56
|
-
afferentPaths?: Map<TCNSAfferentPath, (payload: TSenderCollateral extends
|
|
57
|
-
default?: (payload: TSenderCollateral extends
|
|
53
|
+
afferentPaths?: Map<TCNSAfferentPath, (payload: TSenderCollateral extends ICNSCollateral<infer P> ? P : never, axon: TAxonType, ctx: TCNSHandlerContext<TContextValue, TGlobal>) => TResult | Promise<TResult>>;
|
|
54
|
+
default?: (payload: TSenderCollateral extends ICNSCollateral<infer P> ? P : never, axon: TAxonType, ctx: TCNSHandlerContext<TContextValue, TGlobal>) => TResult | Promise<TResult>;
|
|
58
55
|
}>;
|
|
59
|
-
default?: (payload: TSenderCollateral extends
|
|
56
|
+
default?: (payload: TSenderCollateral extends ICNSCollateral<infer P> ? P : never, axon: TAxonType, ctx: TCNSHandlerContext<TContextValue, TGlobal>) => TResult | Promise<TResult>;
|
|
60
57
|
output: (result: TResult, axon: TAxonType, ctx: TCNSHandlerContext<TContextValue, TGlobal>) => TNCNeuronResponseReturn<TAxonType>;
|
|
61
58
|
}): InterNeuronAPI<TContextValue, TAxonType, TGlobal>;
|
|
62
59
|
};
|
|
63
60
|
};
|
|
64
|
-
export declare const neuron: <TContextValue, TProvidedAxon extends Record<string,
|
|
61
|
+
export declare const neuron: <TContextValue, TProvidedAxon extends Record<string, ICNSCollateral<unknown>>, TGlobal = unknown>(axon: TProvidedAxon) => InterNeuronAPI<TContextValue, TCNSAxon<TProvidedAxon>, TGlobal>;
|
|
65
62
|
/**
|
|
66
63
|
* A composable neuron factory. Each `.withX<T>()` returns a *new typed view* of
|
|
67
64
|
* the same underlying builder (the layers are type-only — zero runtime cost, no
|
|
@@ -92,7 +89,7 @@ export type TNeuronFactory<TContextValue, TExt = unknown> = {
|
|
|
92
89
|
withGlobal: <T>() => TNeuronFactory<TContextValue, TExt & {
|
|
93
90
|
global: T;
|
|
94
91
|
}>;
|
|
95
|
-
neuron: <TProvidedAxon extends Record<string,
|
|
92
|
+
neuron: <TProvidedAxon extends Record<string, ICNSCollateral<unknown>>>(axon: TProvidedAxon) => InterNeuronAPI<TContextValue, TCNSAxon<TProvidedAxon>, TExt>;
|
|
96
93
|
};
|
|
97
94
|
export declare const neuronFactory: <TContextValue = undefined, TExt = unknown>() => TNeuronFactory<TContextValue, TExt>;
|
|
98
95
|
/** Sugar: `neuronFactory().withCtx<T>()`. Still exposes `.neuron`, so existing usage is unchanged. */
|
|
@@ -103,58 +100,5 @@ export declare const withGlobal: <T>() => TNeuronFactory<undefined, {
|
|
|
103
100
|
}>;
|
|
104
101
|
export declare const afferentPath: (parentAfferentPath?: TCNSAfferentPath) => TCNSAfferentPath;
|
|
105
102
|
export declare const modality: (afferentPaths: Record<string | number, TCNSAfferentPath>) => TCNSModality;
|
|
106
|
-
type CNSRegistryValue<N extends TCNSNeuron<any, any>> = N | (N extends TCNSNeuron<any, infer TAxon> ? {
|
|
107
|
-
neuron: N;
|
|
108
|
-
collaterals?: {
|
|
109
|
-
[K in keyof TAxon]?: string;
|
|
110
|
-
};
|
|
111
|
-
} : never);
|
|
112
|
-
/**
|
|
113
|
-
* Creates a CNSPersistOptionsRegistry from a plain object of named neurons.
|
|
114
|
-
* All axon collaterals are registered automatically.
|
|
115
|
-
*
|
|
116
|
-
* @example
|
|
117
|
-
* // Auto names from JS identifiers:
|
|
118
|
-
* export const registry = createPersistRegistry({ deckNeuron, cardNeuron });
|
|
119
|
-
*
|
|
120
|
-
* // Explicit neuron name:
|
|
121
|
-
* export const registry = createPersistRegistry({ 'deck-neuron': deckNeuron });
|
|
122
|
-
*
|
|
123
|
-
* // Explicit collateral names (keys are type-checked against the neuron's axon):
|
|
124
|
-
* export const registry = createPersistRegistry({
|
|
125
|
-
* 'deck-neuron': { neuron: deckNeuron, collaterals: { deckCreated: 'deck-created' } }
|
|
126
|
-
* });
|
|
127
|
-
*/
|
|
128
|
-
export declare const createPersistRegistry: <TMap extends Record<string, TCNSNeuron<any, any>>>(namedNeurons: { [K in keyof TMap]: CNSRegistryValue<TMap[K]>; }) => CNSPersistOptionsRegistry;
|
|
129
|
-
/**
|
|
130
|
-
* Creates a CNS and its CNSPersistOptionsRegistry from a single plain object of
|
|
131
|
-
* named neurons, so the neuron set is listed exactly once.
|
|
132
|
-
*
|
|
133
|
-
* `cns` is the runtime engine; `registry` carries the names used by devtools,
|
|
134
|
-
* mcp and persistence. Both derive from the same map, so they can never drift.
|
|
135
|
-
* If you don't need naming/persistence, just use `new CNS([...])` directly —
|
|
136
|
-
* this factory is purely additive.
|
|
137
|
-
*
|
|
138
|
-
* @example
|
|
139
|
-
* const { cns, registry } = createCNS({
|
|
140
|
-
* task: createTaskNeuron(store),
|
|
141
|
-
* comment: createCommentNeuron(store),
|
|
142
|
-
* });
|
|
143
|
-
*
|
|
144
|
-
* // Explicit names / collateral names work exactly like createPersistRegistry:
|
|
145
|
-
* const { cns, registry } = createCNS({
|
|
146
|
-
* 'task-neuron': { neuron: taskNeuron, collaterals: { taskCreated: 'task-created' } },
|
|
147
|
-
* });
|
|
148
|
-
*
|
|
149
|
-
* // Inject the shared `global` once — it surfaces as `ctx.global` in every neuron
|
|
150
|
-
* // (type it once via `neuronFactory().withGlobal<T>()`). Swappable per instance:
|
|
151
|
-
* const { cns } = createCNS(map, { global: { store, now, newId } });
|
|
152
|
-
*/
|
|
153
|
-
export declare const createCNS: <TMap extends Record<string, TCNSNeuron<any, any>>, TGlobal = undefined>(namedNeurons: { [K in keyof TMap]: CNSRegistryValue<TMap[K]>; }, options?: TCNSOptions & {
|
|
154
|
-
global?: TGlobal;
|
|
155
|
-
}) => {
|
|
156
|
-
cns: CNS<TCNSNeuron<any, any>>;
|
|
157
|
-
registry: CNSPersistOptionsRegistry;
|
|
158
|
-
};
|
|
159
103
|
export {};
|
|
160
104
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/factory/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/factory/index.ts"],"names":[],"mappings":"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"}
|