@cnstra/core 2.3.0 → 2.4.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/README.md CHANGED
@@ -1,18 +1,28 @@
1
1
  # @cnstra/core
2
2
 
3
- **Workflow / orchestration engine for TypeScript — deterministic, embeddable, in-memory.**
3
+ **Orchestration engine for TypeScript — deterministic, embeddable, in-memory.**
4
4
 
5
5
  📚 **[Full Documentation →](https://cnstra.org/)** | [Quick Start](https://cnstra.org/docs/core/quick-start) | [API Reference](https://cnstra.org/docs/core/api) | [Recipes](https://cnstra.org/docs/recipes)
6
6
 
7
7
  ## What is CNStra?
8
8
 
9
- **CNStra (Central Nervous System Orchestrator)** models your app as a **typed neuron graph**. You explicitly start a run with `cns.stimulate(...)`; CNStra then performs a **deterministic, hop-bounded traversal** from **collateral → dendrite → returned signal**, step by step.
9
+ **CNStra** (Central Nervous System Orchestrator) models your app's control flow as a graph of **neurons** wired together by **typed signals**. You orchestrate work by wiring the graph — not by standing up an event bus.
10
10
 
11
- **Zero dependencies** • **No pub/sub** • **CNS approach** (Central Neural Network of your app)
11
+ Instead of an event bus that broadcasts to whoever happens to be listening, CNStra keeps the flow explicit. You start a run with `cns.stimulate(signal)`, and it walks the graph deterministically — one hop at a time, `collateral → dendrite → returned signal` — until nothing is left to fire. A neuron receives a signal on one of its dendrites, does its work, and returns the next signal; that returned signal **is** the edge to the next neuron. No hidden subscribers, no fan-out you can't trace.
12
12
 
13
- Common backend use-cases:
14
- - **Jobs** (queues/workers), **sync/integrations** (webhooks), **ETL/pipelines**
15
- - **Retries/timeouts/cancellation** and **saga-style compensations**
13
+ Four primitives:
14
+
15
+ - **Collateral** — a typed channel; a signal is a payload sent on one.
16
+ - **Neuron** — a unit of logic with one or more dendrites.
17
+ - **Dendrite** — a handler that reacts to a collateral and returns the next signal.
18
+ - **Signal** — what actually flows through a run.
19
+
20
+ Because traversal is deterministic and hop-bounded, a run is reproducible and easy to reason about — which is what makes CNStra a good fit for:
21
+
22
+ - **Jobs & workers**, **webhooks & integrations**, **ETL / pipelines**
23
+ - **Retries, timeouts, cancellation**, and **saga-style compensations**
24
+
25
+ Zero dependencies. No pub/sub. In-memory.
16
26
 
17
27
  👉 **[Read the full documentation →](https://cnstra.org/)**
18
28
 
@@ -94,6 +104,18 @@ export const registry = createPersistRegistry({ deckNeuron, cardNeuron });
94
104
  // explicit collateral names: { 'deck-neuron': { neuron: deckNeuron, collaterals: { deckCreated: 'deck-created' } } }
95
105
  ```
96
106
 
107
+ **CNS + registry from one map:** if you're going to build both, `createCNS` lists the
108
+ neuron set once and returns both — they derive from the same map, so the names can never
109
+ drift from the runtime graph. Accepts the same explicit-name syntax as `createPersistRegistry`.
110
+
111
+ ```ts
112
+ import { createCNS } from '@cnstra/core';
113
+
114
+ const { cns, registry } = createCNS({ deckNeuron, cardNeuron });
115
+ // `cns` is the runtime engine; `registry` carries the names for devtools/mcp/persistence.
116
+ // Don't need naming/persistence? Just use `new CNS([deckNeuron, cardNeuron])` directly.
117
+ ```
118
+
97
119
  ## Documentation
98
120
 
99
121
  - **[Quick Start Guide](https://cnstra.org/docs/core/quick-start)** — Get up and running in minutes
package/dist/CNS.d.ts CHANGED
@@ -26,7 +26,13 @@ export declare class CNS<TNeuron extends TCNSNeuron<any, any>, TDendrite extends
26
26
  * Global response listeners applied to every stimulation.
27
27
  */
28
28
  private readonly globalResponseListeners;
29
- constructor(neurons: TNeuron[], options?: TCNSOptions | undefined);
29
+ /**
30
+ * Shared, app/organism-wide value handed to every dendrite as `ctx.global`.
31
+ * Stored untyped (the type is baked into neurons via `neuronFactory().withGlobal<T>()`);
32
+ * CNS is just a passthrough carrier, so injecting it here never touches the hot path.
33
+ */
34
+ readonly global?: unknown;
35
+ constructor(neurons: TNeuron[], options?: TCNSOptions | undefined, global?: unknown);
30
36
  addResponseListener(listener: (response: TCNSStimulationResponse) => void | Promise<void>): () => void;
31
37
  private wrapOnResponse;
32
38
  stimulate(signalOrSignals: TCNSSignal<CNSCollateral<unknown>> | TCNSSignal<CNSCollateral<unknown>>[], options?: TCNSStimulationOptions<TCNSStimulationResponse>): CNSStimulation<TNeuron, TDendrite>;
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,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;AACzC,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAEhD,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;IAsB7B,SAAS,CAAC,QAAQ,CAAC,OAAO,EAAE,OAAO,EAAE;aACrB,OAAO,CAAC,EAAE,WAAW;IArBzC;;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;gBAGgB,OAAO,EAAE,OAAO,EAAE,EACrB,OAAO,CAAC,EAAE,WAAW,YAAA;IAKlC,mBAAmB,CACtB,QAAQ,EAAE,CAAC,QAAQ,EAAE,uBAAuB,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,GACtE,MAAM,IAAI;IAWb,OAAO,CAAC,cAAc;IAmDf,SAAS,CACZ,eAAe,EACT,UAAU,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,GAClC,UAAU,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,EAAE,EAC1C,OAAO,CAAC,EAAE,sBAAsB,CAAC,uBAAuB,CAAC,GAC1D,cAAc,CAAC,OAAO,EAAE,SAAS,CAAC;IAYrC;;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;CAWxC"}
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;AACzC,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAEhD,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;IA6B7B,SAAS,CAAC,QAAQ,CAAC,OAAO,EAAE,OAAO,EAAE;aACrB,OAAO,CAAC,EAAE,WAAW;IA5BzC;;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;;;;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,OAAO,CAAC,cAAc;IAmDf,SAAS,CACZ,eAAe,EACT,UAAU,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,GAClC,UAAU,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,EAAE,EAC1C,OAAO,CAAC,EAAE,sBAAsB,CAAC,uBAAuB,CAAC,GAC1D,cAAc,CAAC,OAAO,EAAE,SAAS,CAAC;IAYrC;;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;CAWxC"}
@@ -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":"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"}
@@ -1,109 +1,106 @@
1
+ import { CNS } from '../CNS';
1
2
  import { CNSCollateral } from '../CNSCollateral';
2
3
  import { CNSPersistOptionsRegistry } from '../CNSPersistOptionsRegistry';
3
4
  import { TCNSAxon } from '../types/TCNSAxon';
5
+ import { TCNSOptions } from '../types/TCNSOptions';
4
6
  import { TCNSDendrite } from '../types/TCNSDendrite';
5
- import { TCNSLocalContextValueStore } from '../types/TCNSLocalContextValueStore';
7
+ import { TCNSHandlerContext } from '../types/TCNSHandlerContext';
6
8
  import { TNCNeuronResponseReturn } from '../types/TCNSNeuronResponseReturn';
7
9
  import { TCNSNeuron } from '../types/TCNSNeuron';
8
- import { ICNS } from '../interfaces/ICNS';
9
10
  import { TCNSModality } from '../types/TCNSModality';
10
11
  import { TCNSAfferentPath } from '../types/TCNSAfferentPath';
11
12
  export declare const collateral: <TPayload = undefined>() => CNSCollateral<TPayload>;
12
13
  type CollateralPayloadUnion<TCollaterals extends readonly CNSCollateral<unknown>[]> = {
13
14
  [K in keyof TCollaterals]: TCollaterals[K] extends CNSCollateral<infer P> ? P : never;
14
15
  }[number];
15
- type InterNeuronAPI<TContextValue, TAxonType extends TCNSAxon = TCNSAxon> = {
16
+ type InterNeuronAPI<TContextValue, TAxonType extends TCNSAxon = TCNSAxon, TGlobal = unknown> = {
16
17
  axon: TAxonType;
17
18
  concurrency?: number;
18
19
  maxDuration?: number;
19
- dendrites: TCNSDendrite<TContextValue, CNSCollateral<unknown>, TAxonType>[];
20
- setConcurrency: (n: number | undefined) => InterNeuronAPI<TContextValue, TAxonType>;
21
- setMaxDuration: (ms: number | undefined) => InterNeuronAPI<TContextValue, TAxonType>;
20
+ dendrites: TCNSDendrite<TContextValue, CNSCollateral<unknown>, TAxonType, TGlobal>[];
21
+ setConcurrency: (n: number | undefined) => InterNeuronAPI<TContextValue, TAxonType, TGlobal>;
22
+ setMaxDuration: (ms: number | undefined) => InterNeuronAPI<TContextValue, TAxonType, TGlobal>;
22
23
  bind: <TFollowAxon extends Record<string, CNSCollateral<unknown>>>(axon: TFollowAxon, dendrites: {
23
- [K in keyof TFollowAxon]: TCNSDendrite<TContextValue, TFollowAxon[K], TAxonType> | TCNSDendrite<TContextValue, TFollowAxon[K], TAxonType>['response'];
24
- }) => InterNeuronAPI<TContextValue, TAxonType>;
24
+ [K in keyof TFollowAxon]: TCNSDendrite<TContextValue, TFollowAxon[K], TAxonType, TGlobal> | TCNSDendrite<TContextValue, TFollowAxon[K], TAxonType, TGlobal>['response'];
25
+ }) => InterNeuronAPI<TContextValue, TAxonType, TGlobal>;
25
26
  dendrite: {
26
27
  <TSenderCollateral extends CNSCollateral<unknown>>(s: {
27
28
  collateral: TSenderCollateral;
28
- response: (payload: TSenderCollateral extends CNSCollateral<infer P> ? P : never, axon: TAxonType, ctx: TCNSLocalContextValueStore<TContextValue> & {
29
- abortSignal?: AbortSignal;
30
- cns?: ICNS<any, any>;
31
- stimulation?: any;
32
- }) => TNCNeuronResponseReturn<TAxonType>;
33
- }): InterNeuronAPI<TContextValue, TAxonType>;
29
+ response: (payload: TSenderCollateral extends CNSCollateral<infer P> ? P : never, axon: TAxonType, ctx: TCNSHandlerContext<TContextValue, TGlobal>) => TNCNeuronResponseReturn<TAxonType>;
30
+ }): InterNeuronAPI<TContextValue, TAxonType, TGlobal>;
34
31
  <TCollaterals extends readonly [
35
32
  CNSCollateral<unknown>,
36
33
  ...CNSCollateral<unknown>[]
37
34
  ]>(s: {
38
35
  collateral: TCollaterals;
39
- response: (payload: CollateralPayloadUnion<TCollaterals>, axon: TAxonType, ctx: TCNSLocalContextValueStore<TContextValue> & {
40
- abortSignal?: AbortSignal;
41
- cns?: ICNS<any, any>;
42
- stimulation?: any;
43
- }) => TNCNeuronResponseReturn<TAxonType>;
44
- }): InterNeuronAPI<TContextValue, TAxonType>;
36
+ response: (payload: CollateralPayloadUnion<TCollaterals>, axon: TAxonType, ctx: TCNSHandlerContext<TContextValue, TGlobal>) => TNCNeuronResponseReturn<TAxonType>;
37
+ }): InterNeuronAPI<TContextValue, TAxonType, TGlobal>;
45
38
  <TPayloadUnion>(s: {
46
39
  collateral: CNSCollateral<unknown>[];
47
- response: (payload: TPayloadUnion, axon: TAxonType, ctx: TCNSLocalContextValueStore<TContextValue> & {
48
- abortSignal?: AbortSignal;
49
- cns?: ICNS<any, any>;
50
- stimulation?: any;
51
- }) => TNCNeuronResponseReturn<TAxonType>;
52
- }): InterNeuronAPI<TContextValue, TAxonType>;
53
- (s: TCNSDendrite<TContextValue, CNSCollateral<unknown>, TAxonType>): InterNeuronAPI<TContextValue, TAxonType>;
40
+ response: (payload: TPayloadUnion, axon: TAxonType, ctx: TCNSHandlerContext<TContextValue, TGlobal>) => TNCNeuronResponseReturn<TAxonType>;
41
+ }): InterNeuronAPI<TContextValue, TAxonType, TGlobal>;
42
+ (s: TCNSDendrite<TContextValue, CNSCollateral<unknown>, TAxonType, TGlobal>): InterNeuronAPI<TContextValue, TAxonType, TGlobal>;
54
43
  };
55
44
  modalityDendrite: {
56
45
  <TSenderCollateral extends CNSCollateral<unknown>, TResult>(s: {
57
46
  collateral: TSenderCollateral;
58
47
  modality: TCNSModality;
59
- afferentPaths?: Map<TCNSAfferentPath, (payload: TSenderCollateral extends CNSCollateral<infer P> ? P : never, axon: TAxonType, ctx: TCNSLocalContextValueStore<TContextValue> & {
60
- abortSignal?: AbortSignal;
61
- cns?: ICNS<any, any>;
62
- stimulation?: any;
63
- }) => TResult | Promise<TResult>>;
64
- default?: (payload: TSenderCollateral extends CNSCollateral<infer P> ? P : never, axon: TAxonType, ctx: TCNSLocalContextValueStore<TContextValue> & {
65
- abortSignal?: AbortSignal;
66
- cns?: ICNS<any, any>;
67
- stimulation?: any;
68
- }) => TResult | Promise<TResult>;
69
- output: (result: TResult, axon: TAxonType, ctx: TCNSLocalContextValueStore<TContextValue> & {
70
- abortSignal?: AbortSignal;
71
- cns?: ICNS<any, any>;
72
- stimulation?: any;
73
- }) => TNCNeuronResponseReturn<TAxonType>;
74
- }): InterNeuronAPI<TContextValue, TAxonType>;
48
+ afferentPaths?: Map<TCNSAfferentPath, (payload: TSenderCollateral extends CNSCollateral<infer P> ? P : never, axon: TAxonType, ctx: TCNSHandlerContext<TContextValue, TGlobal>) => TResult | Promise<TResult>>;
49
+ default?: (payload: TSenderCollateral extends CNSCollateral<infer P> ? P : never, axon: TAxonType, ctx: TCNSHandlerContext<TContextValue, TGlobal>) => TResult | Promise<TResult>;
50
+ output: (result: TResult, axon: TAxonType, ctx: TCNSHandlerContext<TContextValue, TGlobal>) => TNCNeuronResponseReturn<TAxonType>;
51
+ }): InterNeuronAPI<TContextValue, TAxonType, TGlobal>;
75
52
  <TSenderCollateral extends CNSCollateral<unknown>, TResult>(s: {
76
53
  collateral: TSenderCollateral;
77
54
  modalities: Array<{
78
55
  modality: TCNSModality;
79
- afferentPaths?: Map<TCNSAfferentPath, (payload: TSenderCollateral extends CNSCollateral<infer P> ? P : never, axon: TAxonType, ctx: TCNSLocalContextValueStore<TContextValue> & {
80
- abortSignal?: AbortSignal;
81
- cns?: ICNS<any, any>;
82
- stimulation?: any;
83
- }) => TResult | Promise<TResult>>;
84
- default?: (payload: TSenderCollateral extends CNSCollateral<infer P> ? P : never, axon: TAxonType, ctx: TCNSLocalContextValueStore<TContextValue> & {
85
- abortSignal?: AbortSignal;
86
- cns?: ICNS<any, any>;
87
- stimulation?: any;
88
- }) => TResult | Promise<TResult>;
56
+ afferentPaths?: Map<TCNSAfferentPath, (payload: TSenderCollateral extends CNSCollateral<infer P> ? P : never, axon: TAxonType, ctx: TCNSHandlerContext<TContextValue, TGlobal>) => TResult | Promise<TResult>>;
57
+ default?: (payload: TSenderCollateral extends CNSCollateral<infer P> ? P : never, axon: TAxonType, ctx: TCNSHandlerContext<TContextValue, TGlobal>) => TResult | Promise<TResult>;
89
58
  }>;
90
- default?: (payload: TSenderCollateral extends CNSCollateral<infer P> ? P : never, axon: TAxonType, ctx: TCNSLocalContextValueStore<TContextValue> & {
91
- abortSignal?: AbortSignal;
92
- cns?: ICNS<any, any>;
93
- stimulation?: any;
94
- }) => TResult | Promise<TResult>;
95
- output: (result: TResult, axon: TAxonType, ctx: TCNSLocalContextValueStore<TContextValue> & {
96
- abortSignal?: AbortSignal;
97
- cns?: ICNS<any, any>;
98
- stimulation?: any;
99
- }) => TNCNeuronResponseReturn<TAxonType>;
100
- }): InterNeuronAPI<TContextValue, TAxonType>;
59
+ default?: (payload: TSenderCollateral extends CNSCollateral<infer P> ? P : never, axon: TAxonType, ctx: TCNSHandlerContext<TContextValue, TGlobal>) => TResult | Promise<TResult>;
60
+ output: (result: TResult, axon: TAxonType, ctx: TCNSHandlerContext<TContextValue, TGlobal>) => TNCNeuronResponseReturn<TAxonType>;
61
+ }): InterNeuronAPI<TContextValue, TAxonType, TGlobal>;
101
62
  };
102
63
  };
103
- export declare const neuron: <TContextValue, TProvidedAxon extends Record<string, CNSCollateral<unknown>>>(axon: TProvidedAxon) => InterNeuronAPI<TContextValue, TCNSAxon<TProvidedAxon>>;
104
- export declare const withCtx: <TContextValue>() => {
105
- neuron: <TProvidedAxon extends Record<string, CNSCollateral<unknown>>>(axon: TProvidedAxon) => InterNeuronAPI<TContextValue, TCNSAxon<TProvidedAxon>>;
64
+ export declare const neuron: <TContextValue, TProvidedAxon extends Record<string, CNSCollateral<unknown>>, TGlobal = unknown>(axon: TProvidedAxon) => InterNeuronAPI<TContextValue, TCNSAxon<TProvidedAxon>, TGlobal>;
65
+ /**
66
+ * A composable neuron factory. Each `.withX<T>()` returns a *new typed view* of
67
+ * the same underlying builder (the layers are type-only — zero runtime cost, no
68
+ * per-activation overhead), so you bake your ctx additions once and reuse them
69
+ * everywhere. Layers compose in any order and never touch the handler signature.
70
+ *
71
+ * `TExt` is the accumulated ctx extension: each layer *intersects* its own fields
72
+ * into it, so a base factory (`TExt = unknown`) hands neurons the plain ctx bag —
73
+ * nothing is forced onto anyone who didn't ask for it. `withGlobal<T>()` is the
74
+ * built-in layer; make `T` an object to carry as much as you want (store, clock,
75
+ * logger, …) through the single runtime channel wired at `createCNS`/`new CNS`.
76
+ *
77
+ * @example
78
+ * // src/neurons/factory.ts — ctx shape baked once
79
+ * type TGlobal = { store: Store; now(): number; newId(): string };
80
+ * export const { neuron } = neuronFactory().withGlobal<TGlobal>().withCtx<TCtx>();
81
+ *
82
+ * // any neuron file — plain value, reaches deps via ctx.global
83
+ * export const taskNeuron = neuron({ taskCreated }).bind({ createTask }, {
84
+ * createTask: ({ title }, axon, { global }) =>
85
+ * axon.taskCreated.createSignal({ id: global.newId(), title, at: global.now() }),
86
+ * });
87
+ */
88
+ export type TNeuronFactory<TContextValue, TExt = unknown> = {
89
+ /** Bake the per-stimulation, per-neuron context value type (`ctx.get()/set()`). */
90
+ withCtx: <T>() => TNeuronFactory<T, TExt>;
91
+ /** Add `{ global: T }` to ctx; the value is injected once at `createCNS`/`new CNS`. */
92
+ withGlobal: <T>() => TNeuronFactory<TContextValue, TExt & {
93
+ global: T;
94
+ }>;
95
+ neuron: <TProvidedAxon extends Record<string, CNSCollateral<unknown>>>(axon: TProvidedAxon) => InterNeuronAPI<TContextValue, TCNSAxon<TProvidedAxon>, TExt>;
106
96
  };
97
+ export declare const neuronFactory: <TContextValue = undefined, TExt = unknown>() => TNeuronFactory<TContextValue, TExt>;
98
+ /** Sugar: `neuronFactory().withCtx<T>()`. Still exposes `.neuron`, so existing usage is unchanged. */
99
+ export declare const withCtx: <TContextValue>() => TNeuronFactory<TContextValue>;
100
+ /** Sugar: `neuronFactory().withGlobal<T>()`. */
101
+ export declare const withGlobal: <T>() => TNeuronFactory<undefined, {
102
+ global: T;
103
+ }>;
107
104
  export declare const afferentPath: (parentAfferentPath?: TCNSAfferentPath) => TCNSAfferentPath;
108
105
  export declare const modality: (afferentPaths: Record<string | number, TCNSAfferentPath>) => TCNSModality;
109
106
  type CNSRegistryValue<N extends TCNSNeuron<any, any>> = N | (N extends TCNSNeuron<any, infer TAxon> ? {
@@ -129,5 +126,35 @@ type CNSRegistryValue<N extends TCNSNeuron<any, any>> = N | (N extends TCNSNeuro
129
126
  * });
130
127
  */
131
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
+ };
132
159
  export {};
133
160
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/factory/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/factory/index.ts"],"names":[],"mappings":"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"}
package/dist/index.cjs CHANGED
@@ -33,6 +33,12 @@ var CNSDendriteContext = class {
33
33
  this.abortSignal = abortSignal;
34
34
  this.cns = cns;
35
35
  }
36
+ // Prototype getter, not a constructor field: the per-activation allocation is
37
+ // unchanged (still 4 fields) and you only pay a single `cns.global` read on the
38
+ // dendrites that actually reach for it. Value getter, so `{ global }` destructuring is safe.
39
+ get global() {
40
+ return this.cns.global;
41
+ }
36
42
  get() {
37
43
  return this.stimulation.getContext().get(this.neuron);
38
44
  }
@@ -944,7 +950,7 @@ var CNSNetwork = class {
944
950
 
945
951
  // src/CNS.ts
946
952
  var CNS = class {
947
- constructor(neurons, options) {
953
+ constructor(neurons, options, global) {
948
954
  this.neurons = neurons;
949
955
  this.options = options;
950
956
  /**
@@ -957,6 +963,7 @@ var CNS = class {
957
963
  */
958
964
  this.globalResponseListeners = [];
959
965
  this.network = new CNSNetwork(this.neurons);
966
+ this.global = global;
960
967
  }
961
968
  addResponseListener(listener) {
962
969
  this.globalResponseListeners.push(listener);
@@ -1282,11 +1289,16 @@ var neuron = (axon) => {
1282
1289
  };
1283
1290
  return api;
1284
1291
  };
1285
- var withCtx = () => ({
1286
- neuron: (axon) => {
1287
- return neuron(axon);
1288
- }
1289
- });
1292
+ var neuronFactory = () => {
1293
+ const factory = {
1294
+ withCtx: () => factory,
1295
+ withGlobal: () => factory,
1296
+ neuron: (axon) => neuron(axon)
1297
+ };
1298
+ return factory;
1299
+ };
1300
+ var withCtx = () => neuronFactory();
1301
+ var withGlobal = () => neuronFactory();
1290
1302
  var afferentPath = (parentAfferentPath) => {
1291
1303
  return {
1292
1304
  ...parentAfferentPath !== void 0 && {
@@ -1315,6 +1327,14 @@ var createPersistRegistry = (namedNeurons) => {
1315
1327
  }
1316
1328
  return registry;
1317
1329
  };
1330
+ var createCNS = (namedNeurons, options) => {
1331
+ const neurons = Object.values(namedNeurons).map(
1332
+ (entry) => entry && typeof entry === "object" && "neuron" in entry ? entry.neuron : entry
1333
+ );
1334
+ const cns = new CNS(neurons, options, options?.global);
1335
+ const registry = createPersistRegistry(namedNeurons);
1336
+ return { cns, registry };
1337
+ };
1318
1338
 
1319
1339
  exports.CNS = CNS;
1320
1340
  exports.CNSCollateral = CNSCollateral;
@@ -1323,9 +1343,12 @@ exports.CNSStimulationContextStore = CNSStimulationContextStore;
1323
1343
  exports.CNSStimulationGate = CNSStimulationGate;
1324
1344
  exports.afferentPath = afferentPath;
1325
1345
  exports.collateral = collateral;
1346
+ exports.createCNS = createCNS;
1326
1347
  exports.createPersistRegistry = createPersistRegistry;
1327
1348
  exports.modality = modality;
1328
1349
  exports.neuron = neuron;
1350
+ exports.neuronFactory = neuronFactory;
1329
1351
  exports.withCtx = withCtx;
1352
+ exports.withGlobal = withGlobal;
1330
1353
  //# sourceMappingURL=index.cjs.map
1331
1354
  //# sourceMappingURL=index.cjs.map