@aleph-ai/tinyaleph 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (58) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +278 -0
  3. package/backends/cryptographic/index.js +196 -0
  4. package/backends/index.js +15 -0
  5. package/backends/interface.js +89 -0
  6. package/backends/scientific/index.js +272 -0
  7. package/backends/semantic/index.js +527 -0
  8. package/backends/semantic/surface.js +393 -0
  9. package/backends/semantic/two-layer.js +375 -0
  10. package/core/fano.js +127 -0
  11. package/core/hilbert.js +564 -0
  12. package/core/hypercomplex.js +141 -0
  13. package/core/index.js +133 -0
  14. package/core/llm.js +132 -0
  15. package/core/prime.js +184 -0
  16. package/core/resonance.js +695 -0
  17. package/core/rformer-tf.js +1086 -0
  18. package/core/rformer.js +806 -0
  19. package/core/sieve.js +350 -0
  20. package/data.json +8163 -0
  21. package/docs/EXAMPLES_PLAN.md +293 -0
  22. package/docs/README.md +159 -0
  23. package/docs/design/ALEPH_CHAT_ARCHITECTURE.md +499 -0
  24. package/docs/guide/01-quickstart.md +298 -0
  25. package/docs/guide/02-semantic-computing.md +409 -0
  26. package/docs/guide/03-cryptographic.md +420 -0
  27. package/docs/guide/04-scientific.md +494 -0
  28. package/docs/guide/05-llm-integration.md +568 -0
  29. package/docs/guide/06-advanced.md +996 -0
  30. package/docs/guide/README.md +188 -0
  31. package/docs/reference/01-core.md +695 -0
  32. package/docs/reference/02-physics.md +601 -0
  33. package/docs/reference/03-backends.md +892 -0
  34. package/docs/reference/04-engine.md +632 -0
  35. package/docs/reference/README.md +252 -0
  36. package/docs/theory/01-prime-semantics.md +327 -0
  37. package/docs/theory/02-hypercomplex-algebra.md +421 -0
  38. package/docs/theory/03-phase-synchronization.md +364 -0
  39. package/docs/theory/04-entropy-reasoning.md +348 -0
  40. package/docs/theory/05-non-commutativity.md +402 -0
  41. package/docs/theory/06-two-layer-meaning.md +414 -0
  42. package/docs/theory/07-resonant-field-interface.md +419 -0
  43. package/docs/theory/08-semantic-sieve.md +520 -0
  44. package/docs/theory/09-temporal-emergence.md +298 -0
  45. package/docs/theory/10-quaternionic-memory.md +415 -0
  46. package/docs/theory/README.md +162 -0
  47. package/engine/aleph.js +418 -0
  48. package/engine/index.js +7 -0
  49. package/index.js +23 -0
  50. package/modular.js +254 -0
  51. package/package.json +99 -0
  52. package/physics/collapse.js +95 -0
  53. package/physics/entropy.js +88 -0
  54. package/physics/index.js +65 -0
  55. package/physics/kuramoto.js +91 -0
  56. package/physics/lyapunov.js +80 -0
  57. package/physics/oscillator.js +95 -0
  58. package/types/index.d.ts +575 -0
@@ -0,0 +1,892 @@
1
+ # Backends Module Reference
2
+
3
+ The backends module provides domain-specific computation engines built on Aleph's core primitives.
4
+
5
+ ## Backend Interface (`backends/interface.js`)
6
+
7
+ ### BackendInterface
8
+
9
+ Abstract base class for all backends.
10
+
11
+ ```javascript
12
+ class BackendInterface {
13
+ constructor(config) { }
14
+ encode(input) { }
15
+ decode(primes) { }
16
+ process(input) { }
17
+ }
18
+ ```
19
+
20
+ #### constructor(config)
21
+
22
+ Initialize backend with configuration.
23
+
24
+ **Parameters:**
25
+ - `config` (Object): Backend configuration
26
+ - `dimension` (number): State dimension (default 16)
27
+ - `transforms` (Array): Available transforms
28
+ - `vocabulary` (Object): Word-to-prime mappings
29
+ - `ontology` (Object): Prime-to-meaning mappings
30
+
31
+ ---
32
+
33
+ #### encode(input)
34
+
35
+ Convert input to prime encoding. Must be implemented by subclasses.
36
+
37
+ ```javascript
38
+ backend.encode(input)
39
+ ```
40
+
41
+ **Parameters:**
42
+ - `input` (any): Backend-specific input
43
+
44
+ **Returns:** Array<number> - Prime encoding
45
+
46
+ ---
47
+
48
+ #### decode(primes)
49
+
50
+ Convert primes back to output. Must be implemented by subclasses.
51
+
52
+ ```javascript
53
+ backend.decode(primes)
54
+ ```
55
+
56
+ **Parameters:**
57
+ - `primes` (Array<number>): Prime encoding
58
+
59
+ **Returns:** any - Backend-specific output
60
+
61
+ ---
62
+
63
+ #### process(input)
64
+
65
+ Full processing pipeline. Must be implemented by subclasses.
66
+
67
+ ```javascript
68
+ backend.process(input)
69
+ ```
70
+
71
+ **Parameters:**
72
+ - `input` (any): Backend-specific input
73
+
74
+ **Returns:** Object - Processing result
75
+
76
+ ---
77
+
78
+ #### primesToState(primes)
79
+
80
+ Convert prime array to hypercomplex state.
81
+
82
+ ```javascript
83
+ backend.primesToState(primes)
84
+ ```
85
+
86
+ **Parameters:**
87
+ - `primes` (Array<number>): Prime numbers
88
+
89
+ **Returns:** SedenionState
90
+
91
+ **Notes:**
92
+ - Maps primes to basis states via modular arithmetic
93
+ - Multiplies basis states in sequence
94
+
95
+ ---
96
+
97
+ ## Semantic Backend (`backends/semantic/index.js`)
98
+
99
+ Natural language and concept processing engine.
100
+
101
+ ### Constructor
102
+
103
+ ```javascript
104
+ new SemanticBackend(config)
105
+ ```
106
+
107
+ **Parameters:**
108
+ - `config` (Object):
109
+ - `vocabulary` (Object): Word-to-prime mappings
110
+ - `ontology` (Object): Prime semantic meanings
111
+ - `stopWords` (Array): Words to filter
112
+ - `transforms` (Array): Semantic transforms
113
+ - `dimension` (number): State dimension (default 16)
114
+
115
+ **Example:**
116
+ ```javascript
117
+ const backend = new SemanticBackend({
118
+ vocabulary: {
119
+ 'love': [2, 3, 5],
120
+ 'truth': [7, 11, 13]
121
+ },
122
+ ontology: {
123
+ 2: 'existence',
124
+ 3: 'unity',
125
+ 5: 'life'
126
+ },
127
+ stopWords: ['the', 'a', 'is'],
128
+ dimension: 16
129
+ });
130
+ ```
131
+
132
+ ---
133
+
134
+ ### Text Processing
135
+
136
+ #### tokenize(text, filterStopWords)
137
+
138
+ Tokenize text into structured tokens.
139
+
140
+ ```javascript
141
+ backend.tokenize(text, filterStopWords)
142
+ ```
143
+
144
+ **Parameters:**
145
+ - `text` (string): Input text
146
+ - `filterStopWords` (boolean): Remove stop words (default false)
147
+
148
+ **Returns:** Array<Token>
149
+
150
+ **Token Structure:**
151
+ ```javascript
152
+ {
153
+ word: string, // Lowercase word
154
+ primes: number[], // Associated primes
155
+ known: boolean, // In vocabulary
156
+ isStop: boolean, // Is stop word
157
+ position: number // Position in text
158
+ }
159
+ ```
160
+
161
+ **Example:**
162
+ ```javascript
163
+ const tokens = backend.tokenize('Love is truth');
164
+ // [
165
+ // { word: 'love', primes: [2,3,5], known: true, isStop: false, position: 0 },
166
+ // { word: 'is', primes: [], known: true, isStop: true, position: 1 },
167
+ // { word: 'truth', primes: [7,11,13], known: true, isStop: false, position: 2 }
168
+ // ]
169
+ ```
170
+
171
+ ---
172
+
173
+ #### encode(text)
174
+
175
+ Encode text to prime array (unordered).
176
+
177
+ ```javascript
178
+ backend.encode(text)
179
+ ```
180
+
181
+ **Parameters:**
182
+ - `text` (string): Input text
183
+
184
+ **Returns:** Array<number> - All primes from all words
185
+
186
+ **Example:**
187
+ ```javascript
188
+ const primes = backend.encode('love and truth');
189
+ // [2, 3, 5, 7, 11, 13]
190
+ ```
191
+
192
+ ---
193
+
194
+ #### encodeOrdered(text)
195
+
196
+ Encode text preserving word order.
197
+
198
+ ```javascript
199
+ backend.encodeOrdered(text)
200
+ ```
201
+
202
+ **Parameters:**
203
+ - `text` (string): Input text
204
+
205
+ **Returns:** Array<Object> - Ordered tokens with primes
206
+
207
+ **Example:**
208
+ ```javascript
209
+ const ordered = backend.encodeOrdered('dog bites man');
210
+ // [
211
+ // { word: 'dog', primes: [...], position: 0 },
212
+ // { word: 'bites', primes: [...], position: 1 },
213
+ // { word: 'man', primes: [...], position: 2 }
214
+ // ]
215
+ ```
216
+
217
+ ---
218
+
219
+ #### decode(primes)
220
+
221
+ Decode primes to text.
222
+
223
+ ```javascript
224
+ backend.decode(primes)
225
+ ```
226
+
227
+ **Parameters:**
228
+ - `primes` (Array<number>): Prime encoding
229
+
230
+ **Returns:** string - Decoded text
231
+
232
+ **Notes:**
233
+ - Uses greedy covering algorithm
234
+ - May not perfectly reconstruct original text
235
+
236
+ ---
237
+
238
+ ### State Conversion
239
+
240
+ #### primesToState(primes)
241
+
242
+ Convert primes to hypercomplex state (commutative).
243
+
244
+ ```javascript
245
+ backend.primesToState(primes)
246
+ ```
247
+
248
+ **Parameters:**
249
+ - `primes` (Array<number>): Prime array
250
+
251
+ **Returns:** SedenionState
252
+
253
+ **Notes:**
254
+ - Order-independent (commutative combination)
255
+ - Suitable for concept matching, not phrase matching
256
+
257
+ ---
258
+
259
+ #### orderedPrimesToState(tokens)
260
+
261
+ Convert ordered tokens to state (non-commutative).
262
+
263
+ ```javascript
264
+ backend.orderedPrimesToState(tokens)
265
+ ```
266
+
267
+ **Parameters:**
268
+ - `tokens` (Array<Object>): Ordered tokens from encodeOrdered()
269
+
270
+ **Returns:** SedenionState
271
+
272
+ **Notes:**
273
+ - Order-dependent (non-commutative multiplication)
274
+ - "dog bites man" ≠ "man bites dog"
275
+
276
+ ---
277
+
278
+ #### textToOrderedState(text)
279
+
280
+ Convenience method: text → ordered state.
281
+
282
+ ```javascript
283
+ backend.textToOrderedState(text)
284
+ ```
285
+
286
+ **Parameters:**
287
+ - `text` (string): Input text
288
+
289
+ **Returns:** SedenionState
290
+
291
+ ---
292
+
293
+ ### Vocabulary Management
294
+
295
+ #### hasWord(word)
296
+
297
+ Check if word is in vocabulary.
298
+
299
+ ```javascript
300
+ backend.hasWord(word)
301
+ ```
302
+
303
+ **Parameters:**
304
+ - `word` (string): Word to check
305
+
306
+ **Returns:** boolean
307
+
308
+ ---
309
+
310
+ #### getWordPrimes(word)
311
+
312
+ Get primes for a word.
313
+
314
+ ```javascript
315
+ backend.getWordPrimes(word)
316
+ ```
317
+
318
+ **Parameters:**
319
+ - `word` (string): Word to look up
320
+
321
+ **Returns:** Array<number> | null
322
+
323
+ ---
324
+
325
+ #### learn(word, primes)
326
+
327
+ Add word to vocabulary.
328
+
329
+ ```javascript
330
+ backend.learn(word, primes)
331
+ ```
332
+
333
+ **Parameters:**
334
+ - `word` (string): New word
335
+ - `primes` (Array<number>): Prime encoding
336
+
337
+ **Returns:** void
338
+
339
+ ---
340
+
341
+ #### getVocabularySize()
342
+
343
+ Get vocabulary size.
344
+
345
+ ```javascript
346
+ backend.getVocabularySize()
347
+ ```
348
+
349
+ **Returns:** number
350
+
351
+ ---
352
+
353
+ ### Ontology Access
354
+
355
+ #### getOntologyMeaning(prime)
356
+
357
+ Get meaning of a prime.
358
+
359
+ ```javascript
360
+ backend.getOntologyMeaning(prime)
361
+ ```
362
+
363
+ **Parameters:**
364
+ - `prime` (number): Prime number
365
+
366
+ **Returns:** string | null - Semantic meaning
367
+
368
+ ---
369
+
370
+ #### getAxisPrimes(axis)
371
+
372
+ Get primes associated with a semantic axis.
373
+
374
+ ```javascript
375
+ backend.getAxisPrimes(axis)
376
+ ```
377
+
378
+ **Parameters:**
379
+ - `axis` (number): Axis index (0-15)
380
+
381
+ **Returns:** Array<number>
382
+
383
+ ---
384
+
385
+ #### getOntologyTerms()
386
+
387
+ Get all defined ontology terms.
388
+
389
+ ```javascript
390
+ backend.getOntologyTerms()
391
+ ```
392
+
393
+ **Returns:** Array<string>
394
+
395
+ ---
396
+
397
+ ### Transform Application
398
+
399
+ #### applyTransform(primes, transform)
400
+
401
+ Apply a single transform.
402
+
403
+ ```javascript
404
+ backend.applyTransform(primes, transform)
405
+ ```
406
+
407
+ **Parameters:**
408
+ - `primes` (Array<number>): Current primes
409
+ - `transform` (Object): Transform to apply
410
+
411
+ **Returns:** Array<number> - Transformed primes
412
+
413
+ ---
414
+
415
+ #### process(text)
416
+
417
+ Full processing with transform application.
418
+
419
+ ```javascript
420
+ backend.process(text)
421
+ ```
422
+
423
+ **Parameters:**
424
+ - `text` (string): Input text
425
+
426
+ **Returns:** Object
427
+ ```javascript
428
+ {
429
+ input: string,
430
+ primes: number[],
431
+ state: SedenionState,
432
+ output: string,
433
+ entropy: number,
434
+ steps: TransformStep[]
435
+ }
436
+ ```
437
+
438
+ ---
439
+
440
+ ## Two-Layer Engine (`backends/semantic/two-layer.js`)
441
+
442
+ Separates invariant meaning from surface vocabulary.
443
+
444
+ ### Constructor
445
+
446
+ ```javascript
447
+ new TwoLayerEngine(config)
448
+ ```
449
+
450
+ **Parameters:**
451
+ - `config` (Object):
452
+ - `core` (Object): Core configuration
453
+ - `registers` (Object): Surface register definitions
454
+ - `defaultRegister` (string): Default register name
455
+
456
+ ---
457
+
458
+ ### Methods
459
+
460
+ #### process(text)
461
+
462
+ Process text through both layers.
463
+
464
+ ```javascript
465
+ engine.process(text)
466
+ ```
467
+
468
+ **Returns:** Object
469
+ ```javascript
470
+ {
471
+ meaning: {
472
+ primes: number[],
473
+ state: SedenionState,
474
+ entropy: number
475
+ },
476
+ surface: {
477
+ words: string[],
478
+ register: string
479
+ }
480
+ }
481
+ ```
482
+
483
+ ---
484
+
485
+ #### translate(text, fromRegister, toRegister)
486
+
487
+ Translate between surface registers.
488
+
489
+ ```javascript
490
+ engine.translate(text, fromRegister, toRegister)
491
+ ```
492
+
493
+ **Parameters:**
494
+ - `text` (string): Input text
495
+ - `fromRegister` (string): Source register
496
+ - `toRegister` (string): Target register
497
+
498
+ **Returns:** Object - `{ original, translated, meaning }`
499
+
500
+ ---
501
+
502
+ #### useRegister(name)
503
+
504
+ Set active surface register.
505
+
506
+ ```javascript
507
+ engine.useRegister(name)
508
+ ```
509
+
510
+ **Parameters:**
511
+ - `name` (string): Register name
512
+
513
+ ---
514
+
515
+ #### generateWithStyle(primes, style)
516
+
517
+ Generate text from primes with style.
518
+
519
+ ```javascript
520
+ engine.generateWithStyle(primes, style)
521
+ ```
522
+
523
+ **Parameters:**
524
+ - `primes` (Array<number>): Meaning primes
525
+ - `style` (string): Style modifier
526
+
527
+ **Returns:** string - Styled text
528
+
529
+ ---
530
+
531
+ ## Cryptographic Backend (`backends/cryptographic/index.js`)
532
+
533
+ Semantic hashing and key derivation.
534
+
535
+ ### Constructor
536
+
537
+ ```javascript
538
+ new CryptographicBackend(config)
539
+ ```
540
+
541
+ **Parameters:**
542
+ - `config` (Object):
543
+ - `vocabulary` (Object): Word mappings
544
+ - `dimension` (number): State dimension
545
+ - `hashRounds` (number): Strengthening rounds
546
+
547
+ ---
548
+
549
+ ### Hashing
550
+
551
+ #### hash(text)
552
+
553
+ Create semantic hash of text.
554
+
555
+ ```javascript
556
+ backend.hash(text)
557
+ ```
558
+
559
+ **Parameters:**
560
+ - `text` (string): Input text
561
+
562
+ **Returns:** string - Hash string
563
+
564
+ **Notes:**
565
+ - Similar meanings → similar hashes
566
+ - Deterministic
567
+
568
+ ---
569
+
570
+ #### hashToState(text)
571
+
572
+ Hash text to full state object.
573
+
574
+ ```javascript
575
+ backend.hashToState(text)
576
+ ```
577
+
578
+ **Parameters:**
579
+ - `text` (string): Input text
580
+
581
+ **Returns:** SedenionState
582
+
583
+ ---
584
+
585
+ ### Key Derivation
586
+
587
+ #### deriveKey(phrase)
588
+
589
+ Derive key from passphrase.
590
+
591
+ ```javascript
592
+ backend.deriveKey(phrase)
593
+ ```
594
+
595
+ **Parameters:**
596
+ - `phrase` (string): Key phrase
597
+
598
+ **Returns:** SedenionState - Derived key
599
+
600
+ ---
601
+
602
+ #### strengthenKey(key, rounds)
603
+
604
+ Apply key strengthening.
605
+
606
+ ```javascript
607
+ backend.strengthenKey(key, rounds)
608
+ ```
609
+
610
+ **Parameters:**
611
+ - `key` (SedenionState): Initial key
612
+ - `rounds` (number): Strengthening rounds
613
+
614
+ **Returns:** SedenionState - Strengthened key
615
+
616
+ ---
617
+
618
+ ### Encoding
619
+
620
+ #### encode(text)
621
+
622
+ Encode text to primes.
623
+
624
+ ```javascript
625
+ backend.encode(text)
626
+ ```
627
+
628
+ **Parameters:**
629
+ - `text` (string): Input text
630
+
631
+ **Returns:** Array<number>
632
+
633
+ ---
634
+
635
+ #### decode(primes)
636
+
637
+ Decode primes to text.
638
+
639
+ ```javascript
640
+ backend.decode(primes)
641
+ ```
642
+
643
+ **Parameters:**
644
+ - `primes` (Array<number>): Prime encoding
645
+
646
+ **Returns:** string
647
+
648
+ ---
649
+
650
+ ## Scientific Backend (`backends/scientific/index.js`)
651
+
652
+ Quantum-inspired computation and simulation.
653
+
654
+ ### Constructor
655
+
656
+ ```javascript
657
+ new ScientificBackend(config)
658
+ ```
659
+
660
+ **Parameters:**
661
+ - `config` (Object):
662
+ - `dimension` (number): State dimension (default 16)
663
+ - `precision` (number): Numerical precision
664
+
665
+ ---
666
+
667
+ ### State Creation
668
+
669
+ #### createState(components)
670
+
671
+ Create state from components.
672
+
673
+ ```javascript
674
+ backend.createState(components)
675
+ ```
676
+
677
+ **Parameters:**
678
+ - `components` (Array<number>): 16 real components
679
+
680
+ **Returns:** SedenionState
681
+
682
+ ---
683
+
684
+ #### createRandomState()
685
+
686
+ Create random normalized state.
687
+
688
+ ```javascript
689
+ backend.createRandomState()
690
+ ```
691
+
692
+ **Returns:** SedenionState
693
+
694
+ ---
695
+
696
+ #### createBasisState(index)
697
+
698
+ Create basis state eᵢ.
699
+
700
+ ```javascript
701
+ backend.createBasisState(index)
702
+ ```
703
+
704
+ **Parameters:**
705
+ - `index` (number): Basis index (0-15)
706
+
707
+ **Returns:** SedenionState
708
+
709
+ ---
710
+
711
+ ### State Operations
712
+
713
+ #### superpose(state1, weight1, state2, weight2)
714
+
715
+ Create weighted superposition.
716
+
717
+ ```javascript
718
+ backend.superpose(state1, weight1, state2, weight2)
719
+ ```
720
+
721
+ **Parameters:**
722
+ - `state1` (SedenionState): First state
723
+ - `weight1` (number): First weight
724
+ - `state2` (SedenionState): Second state
725
+ - `weight2` (number): Second weight
726
+
727
+ **Returns:** SedenionState - Normalized superposition
728
+
729
+ ---
730
+
731
+ #### evolve(state, hamiltonian, dt)
732
+
733
+ Time evolve state.
734
+
735
+ ```javascript
736
+ backend.evolve(state, hamiltonian, dt)
737
+ ```
738
+
739
+ **Parameters:**
740
+ - `state` (SedenionState): Current state
741
+ - `hamiltonian` (SedenionState): Evolution operator
742
+ - `dt` (number): Time step
743
+
744
+ **Returns:** SedenionState - Evolved state
745
+
746
+ ---
747
+
748
+ #### collapse(state, target, strength)
749
+
750
+ Collapse toward target.
751
+
752
+ ```javascript
753
+ backend.collapse(state, target, strength)
754
+ ```
755
+
756
+ **Parameters:**
757
+ - `state` (SedenionState): State to collapse
758
+ - `target` (SedenionState): Target attractor
759
+ - `strength` (number): Collapse strength
760
+
761
+ **Returns:** SedenionState
762
+
763
+ ---
764
+
765
+ ### Measurements
766
+
767
+ #### measureProbability(state, projector)
768
+
769
+ Calculate measurement probability.
770
+
771
+ ```javascript
772
+ backend.measureProbability(state, projector)
773
+ ```
774
+
775
+ **Parameters:**
776
+ - `state` (SedenionState): State to measure
777
+ - `projector` (SedenionState): Measurement projector
778
+
779
+ **Returns:** number - Probability [0, 1]
780
+
781
+ ---
782
+
783
+ #### measure(state, basis)
784
+
785
+ Perform measurement with collapse.
786
+
787
+ ```javascript
788
+ backend.measure(state, basis)
789
+ ```
790
+
791
+ **Parameters:**
792
+ - `state` (SedenionState): State to measure
793
+ - `basis` (Array<SedenionState>): Measurement basis
794
+
795
+ **Returns:** Object - `{ outcome, probability, finalState }`
796
+
797
+ ---
798
+
799
+ ### Encoding Interface
800
+
801
+ #### encode(input)
802
+
803
+ Encode numeric input to primes.
804
+
805
+ ```javascript
806
+ backend.encode(input)
807
+ ```
808
+
809
+ **Parameters:**
810
+ - `input` (Array<number>): Numeric data
811
+
812
+ **Returns:** Array<number>
813
+
814
+ ---
815
+
816
+ #### decode(primes)
817
+
818
+ Decode primes to numeric output.
819
+
820
+ ```javascript
821
+ backend.decode(primes)
822
+ ```
823
+
824
+ **Parameters:**
825
+ - `primes` (Array<number>): Prime encoding
826
+
827
+ **Returns:** Array<number>
828
+
829
+ ---
830
+
831
+ #### process(input)
832
+
833
+ Full scientific processing.
834
+
835
+ ```javascript
836
+ backend.process(input)
837
+ ```
838
+
839
+ **Parameters:**
840
+ - `input` (Object): Processing request
841
+
842
+ **Returns:** Object - Processing result
843
+
844
+ ---
845
+
846
+ ## Backend Registration
847
+
848
+ ### registerBackend(name, BackendClass)
849
+
850
+ Register a custom backend.
851
+
852
+ ```javascript
853
+ const { registerBackend } = require('./modular');
854
+
855
+ registerBackend('custom', CustomBackend);
856
+ ```
857
+
858
+ **Parameters:**
859
+ - `name` (string): Backend identifier
860
+ - `BackendClass` (class): Backend constructor
861
+
862
+ ---
863
+
864
+ ### getBackend(name)
865
+
866
+ Get registered backend class.
867
+
868
+ ```javascript
869
+ const { getBackend } = require('./modular');
870
+
871
+ const SemanticBackend = getBackend('semantic');
872
+ ```
873
+
874
+ **Parameters:**
875
+ - `name` (string): Backend identifier
876
+
877
+ **Returns:** class | null
878
+
879
+ ---
880
+
881
+ ### listBackends()
882
+
883
+ List all registered backends.
884
+
885
+ ```javascript
886
+ const { listBackends } = require('./modular');
887
+
888
+ console.log(listBackends());
889
+ // ['semantic', 'cryptographic', 'scientific']
890
+ ```
891
+
892
+ **Returns:** Array<string>