@seanhogg/builderforce-memory-engine 2026.6.35 → 2026.7.11

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 (96) hide show
  1. package/README.md +30 -2
  2. package/dist/codec/evermind_video.d.ts +35 -0
  3. package/dist/codec/evermind_video.d.ts.map +1 -0
  4. package/dist/codec/evermind_video.js +37 -0
  5. package/dist/codec/evermind_video.js.map +1 -0
  6. package/dist/codec/image_rvq.d.ts +28 -0
  7. package/dist/codec/image_rvq.d.ts.map +1 -0
  8. package/dist/codec/image_rvq.js +39 -0
  9. package/dist/codec/image_rvq.js.map +1 -0
  10. package/dist/codec/index.d.ts +13 -0
  11. package/dist/codec/index.d.ts.map +1 -0
  12. package/dist/codec/index.js +11 -0
  13. package/dist/codec/index.js.map +1 -0
  14. package/dist/codec/multimodal_vocab.d.ts +79 -0
  15. package/dist/codec/multimodal_vocab.d.ts.map +1 -0
  16. package/dist/codec/multimodal_vocab.js +96 -0
  17. package/dist/codec/multimodal_vocab.js.map +1 -0
  18. package/dist/codec/video_rvq.d.ts +116 -0
  19. package/dist/codec/video_rvq.d.ts.map +1 -0
  20. package/dist/codec/video_rvq.js +450 -0
  21. package/dist/codec/video_rvq.js.map +1 -0
  22. package/dist/import/evermind.d.ts +48 -0
  23. package/dist/import/evermind.d.ts.map +1 -0
  24. package/dist/import/evermind.js +111 -0
  25. package/dist/import/evermind.js.map +1 -0
  26. package/dist/import/index.d.ts +11 -0
  27. package/dist/import/index.d.ts.map +1 -0
  28. package/dist/import/index.js +10 -0
  29. package/dist/import/index.js.map +1 -0
  30. package/dist/import/safetensors.d.ts +13 -0
  31. package/dist/import/safetensors.d.ts.map +1 -0
  32. package/dist/import/safetensors.js +64 -0
  33. package/dist/import/safetensors.js.map +1 -0
  34. package/dist/index.d.ts +8 -3
  35. package/dist/index.d.ts.map +1 -1
  36. package/dist/index.js +5 -1
  37. package/dist/index.js.map +1 -1
  38. package/dist/kernels/selective_scan.d.ts.map +1 -1
  39. package/dist/kernels/selective_scan.js +9 -3
  40. package/dist/kernels/selective_scan.js.map +1 -1
  41. package/dist/kernels/ssd.d.ts.map +1 -1
  42. package/dist/kernels/ssd.js +8 -2
  43. package/dist/kernels/ssd.js.map +1 -1
  44. package/dist/kernels/weight_update.d.ts.map +1 -1
  45. package/dist/kernels/weight_update.js +22 -3
  46. package/dist/kernels/weight_update.js.map +1 -1
  47. package/dist/limbic/index.d.ts +2 -2
  48. package/dist/limbic/index.d.ts.map +1 -1
  49. package/dist/limbic/index.js +1 -1
  50. package/dist/limbic/index.js.map +1 -1
  51. package/dist/limbic/regions.d.ts +31 -0
  52. package/dist/limbic/regions.d.ts.map +1 -1
  53. package/dist/limbic/regions.js +34 -0
  54. package/dist/limbic/regions.js.map +1 -1
  55. package/dist/model/mamba_model.d.ts +17 -0
  56. package/dist/model/mamba_model.d.ts.map +1 -1
  57. package/dist/model/mamba_model.js +27 -0
  58. package/dist/model/mamba_model.js.map +1 -1
  59. package/dist/moe/index.d.ts +1 -1
  60. package/dist/moe/index.d.ts.map +1 -1
  61. package/dist/moe/moe_package.d.ts +40 -2
  62. package/dist/moe/moe_package.d.ts.map +1 -1
  63. package/dist/moe/moe_package.js +90 -7
  64. package/dist/moe/moe_package.js.map +1 -1
  65. package/dist/tokenizer/bpe.d.ts +37 -0
  66. package/dist/tokenizer/bpe.d.ts.map +1 -1
  67. package/dist/tokenizer/bpe.js +47 -0
  68. package/dist/tokenizer/bpe.js.map +1 -1
  69. package/dist/training/trainer.d.ts +34 -2
  70. package/dist/training/trainer.d.ts.map +1 -1
  71. package/dist/training/trainer.js +76 -26
  72. package/dist/training/trainer.js.map +1 -1
  73. package/dist/utils/quantization.d.ts.map +1 -1
  74. package/dist/utils/quantization.js +4 -1
  75. package/dist/utils/quantization.js.map +1 -1
  76. package/package.json +1 -1
  77. package/src/codec/evermind_video.ts +55 -0
  78. package/src/codec/image_rvq.ts +50 -0
  79. package/src/codec/index.ts +16 -0
  80. package/src/codec/multimodal_vocab.ts +115 -0
  81. package/src/codec/video_rvq.ts +496 -0
  82. package/src/import/evermind.ts +128 -0
  83. package/src/import/index.ts +11 -0
  84. package/src/import/safetensors.ts +67 -0
  85. package/src/index.ts +35 -0
  86. package/src/kernels/selective_scan.ts +9 -3
  87. package/src/kernels/ssd.ts +8 -2
  88. package/src/kernels/weight_update.ts +22 -3
  89. package/src/limbic/index.ts +2 -1
  90. package/src/limbic/regions.ts +60 -0
  91. package/src/model/mamba_model.ts +27 -0
  92. package/src/moe/index.ts +1 -0
  93. package/src/moe/moe_package.ts +107 -6
  94. package/src/tokenizer/bpe.ts +59 -0
  95. package/src/training/trainer.ts +92 -28
  96. package/src/utils/quantization.ts +4 -1
@@ -0,0 +1,11 @@
1
+ /**
2
+ * import/index.ts — the model-import (warm-start / weight-port) registry.
3
+ *
4
+ * The inverse of {@link ../export}: read a `.safetensors` checkpoint back into a
5
+ * live {@link ../lm/evermind_lm.EvermindLM}. Round-trips Evermind's own exports,
6
+ * and warm-starts a foreign SSM checkpoint via a `rename` map.
7
+ */
8
+ export { safetensorsToTensors } from "./safetensors.js";
9
+ export { importEvermind, importEvermindTensors, inferArchFromTensors } from "./evermind.js";
10
+ export type { ImportOptions } from "./evermind.js";
11
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/import/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AACxD,OAAO,EAAE,cAAc,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AAC5F,YAAY,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * import/index.ts — the model-import (warm-start / weight-port) registry.
3
+ *
4
+ * The inverse of {@link ../export}: read a `.safetensors` checkpoint back into a
5
+ * live {@link ../lm/evermind_lm.EvermindLM}. Round-trips Evermind's own exports,
6
+ * and warm-starts a foreign SSM checkpoint via a `rename` map.
7
+ */
8
+ export { safetensorsToTensors } from "./safetensors.js";
9
+ export { importEvermind, importEvermindTensors, inferArchFromTensors } from "./evermind.js";
10
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/import/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AACxD,OAAO,EAAE,cAAc,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC"}
@@ -0,0 +1,13 @@
1
+ /**
2
+ * import/safetensors.ts — read weights FROM the HF-native `.safetensors` format.
3
+ *
4
+ * The exact inverse of {@link ../export/safetensors.ts}: parse the 8-byte
5
+ * little-endian u64 header length, the JSON header (name → {dtype, shape,
6
+ * data_offsets}), then decode each tensor's raw bytes into a Float32Array.
7
+ * F32 and F16 are supported (F16 is widened to f32 on read). This is the reader
8
+ * half of the warm-start / weight-port path — export was one-directional before.
9
+ */
10
+ import type { NamedTensor } from "../export/tensors.js";
11
+ /** Decode a `.safetensors` byte buffer into named F32 tensors (header order). */
12
+ export declare function safetensorsToTensors(bytes: Uint8Array): NamedTensor[];
13
+ //# sourceMappingURL=safetensors.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"safetensors.d.ts","sourceRoot":"","sources":["../../src/import/safetensors.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AASxD,iFAAiF;AACjF,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,UAAU,GAAG,WAAW,EAAE,CA6BrE"}
@@ -0,0 +1,64 @@
1
+ /**
2
+ * import/safetensors.ts — read weights FROM the HF-native `.safetensors` format.
3
+ *
4
+ * The exact inverse of {@link ../export/safetensors.ts}: parse the 8-byte
5
+ * little-endian u64 header length, the JSON header (name → {dtype, shape,
6
+ * data_offsets}), then decode each tensor's raw bytes into a Float32Array.
7
+ * F32 and F16 are supported (F16 is widened to f32 on read). This is the reader
8
+ * half of the warm-start / weight-port path — export was one-directional before.
9
+ */
10
+ import { fp16ToFloat } from "../utils/quantization.js";
11
+ /** Decode a `.safetensors` byte buffer into named F32 tensors (header order). */
12
+ export function safetensorsToTensors(bytes) {
13
+ if (bytes.length < 8)
14
+ throw new Error("safetensors: buffer too short for header length");
15
+ const dv = new DataView(bytes.buffer, bytes.byteOffset, bytes.byteLength);
16
+ const headerLen = Number(dv.getBigUint64(0, true));
17
+ const headerEnd = 8 + headerLen;
18
+ if (headerEnd > bytes.length)
19
+ throw new Error(`safetensors: header length ${headerLen} exceeds buffer`);
20
+ const headerJson = new TextDecoder().decode(bytes.subarray(8, headerEnd));
21
+ let header;
22
+ try {
23
+ header = JSON.parse(headerJson);
24
+ }
25
+ catch (e) {
26
+ throw new Error(`safetensors: malformed JSON header (${e instanceof Error ? e.message : String(e)})`);
27
+ }
28
+ const dataBase = headerEnd;
29
+ const out = [];
30
+ for (const [name, raw] of Object.entries(header)) {
31
+ if (name === "__metadata__")
32
+ continue;
33
+ const entry = raw;
34
+ if (!entry || !Array.isArray(entry.shape) || !Array.isArray(entry.data_offsets)) {
35
+ throw new Error(`safetensors: malformed entry for "${name}"`);
36
+ }
37
+ const [start, end] = entry.data_offsets;
38
+ const numel = entry.shape.reduce((n, d) => n * d, 1);
39
+ const seg = bytes.subarray(dataBase + start, dataBase + end);
40
+ out.push({ name, shape: entry.shape, data: decodeTensor(seg, entry.dtype, numel, name) });
41
+ }
42
+ return out;
43
+ }
44
+ function decodeTensor(seg, dtype, numel, name) {
45
+ const dv = new DataView(seg.buffer, seg.byteOffset, seg.byteLength);
46
+ const data = new Float32Array(numel);
47
+ const d = dtype.toUpperCase();
48
+ if (d === "F32" || d === "FLOAT32") {
49
+ if (seg.length < numel * 4)
50
+ throw new Error(`safetensors: "${name}" F32 bytes ${seg.length} < ${numel * 4}`);
51
+ for (let i = 0; i < numel; i++)
52
+ data[i] = dv.getFloat32(i * 4, true);
53
+ return data;
54
+ }
55
+ if (d === "F16" || d === "FLOAT16") {
56
+ if (seg.length < numel * 2)
57
+ throw new Error(`safetensors: "${name}" F16 bytes ${seg.length} < ${numel * 2}`);
58
+ for (let i = 0; i < numel; i++)
59
+ data[i] = fp16ToFloat(dv.getUint16(i * 2, true));
60
+ return data;
61
+ }
62
+ throw new Error(`safetensors: unsupported dtype "${dtype}" for "${name}" (expected F32 or F16)`);
63
+ }
64
+ //# sourceMappingURL=safetensors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"safetensors.js","sourceRoot":"","sources":["../../src/import/safetensors.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -8,7 +8,7 @@ export { Mamba3Block } from './model/mamba3_block.js';
8
8
  export { AttentionBlock } from './model/attention_block.js';
9
9
  export { MambaBlock } from './model/mamba1_block.js';
10
10
  export { SharedExpertMoE, LoadBalanceAccumulator, DEFAULT_MOE_CONFIG, DEFAULT_MOE_SEED, MoETrainer, EvermindModelPackage, } from './moe/index.js';
11
- export type { MoEConfig, MoEParam, RouteResult, MoESample, MoETrainOptions, MoEEpochResult, EvermindModelManifest, EvermindModelCard, PackageMeta, ValidationResult, } from './moe/index.js';
11
+ export type { MoEConfig, MoEParam, RouteResult, MoESample, MoETrainOptions, MoEEpochResult, EvermindModelManifest, EvermindModelCard, EvermindModelType, EvermindModality, PackageMeta, ValidationResult, } from './moe/index.js';
12
12
  export { EvermindLM, EvermindLMTrainer, DEFAULT_LM_CONFIG, DEFAULT_LM_SEED } from './lm/index.js';
13
13
  export type { EvermindLMConfig, LMGenerateOptions, TextCodec } from './lm/index.js';
14
14
  export { AdamW } from './optim/adamw.js';
@@ -16,8 +16,13 @@ export type { AdamWOptions, OptimTarget, OptimParam } from './optim/adamw.js';
16
16
  export { MambaTrainer } from './training/trainer.js';
17
17
  export { Tensor, backward, enableGrad, noGrad, clearTape, recordOperation, crossEntropyLoss, crossEntropyGrad, } from './training/autograd.js';
18
18
  export { BPETokenizer } from './tokenizer/bpe.js';
19
+ export type { BPEEncodeOptions, PadSide, HuggingFaceTokenizerSpec, SpecialTokenOverrides } from './tokenizer/bpe.js';
20
+ export { MultimodalVocab, VIDEO_BANK_INTRA, VIDEO_BANK_INTER, VideoRVQCodec, ImageRVQCodec, buildVideoSequence, generateVideo, generateImage, } from './codec/index.js';
21
+ export type { MultimodalVocabConfig, TokenKind, VideoRVQConfig, Frame, Video, } from './codec/index.js';
19
22
  export { exportEvermind, EXPORT_FORMATS, exportSafetensors, tensorsToSafetensors, exportOnnx, exportGguf, configJson, generationConfigJson, tokenizerJson, modelCardMarkdown, namedTensors, evermindTensorSpec, archOf, paramCount, } from './export/index.js';
20
23
  export type { ExportFormat, ExportFile, ExportResult, ExportOptions, HfMeta, NamedTensor, EvermindArch, TensorSpec, } from './export/index.js';
24
+ export { safetensorsToTensors, importEvermind, importEvermindTensors, inferArchFromTensors, } from './import/index.js';
25
+ export type { ImportOptions } from './import/index.js';
21
26
  export { benchmarkModel, benchmarkModelAsync, benchmarkText, compareModels, compareReports, corpusToSequences, trainAndBenchmark, argmax as benchArgmax, topKIndices, perplexity, bitsPerToken, LN2, } from './bench/index.js';
22
27
  export type { LogitsModel, AsyncLogitsModel, BenchmarkOptions, BenchmarkReport, ComparisonReport, TrainAndBenchmarkOptions, TrainAndBenchmarkResult, } from './bench/index.js';
23
28
  export { crc32, appendCrcTrailer, verifyCrcTrailer, CRC_TRAILER_MAGIC } from './utils/crc32.js';
@@ -41,8 +46,8 @@ export { ACTIVATIONS_WGSL, ACTIVATIONS_BACKWARD_WGSL, SOFTMAX_FORWARD_WGSL, SOFT
41
46
  export { SSD_FORWARD_WGSL, SSD_BACKWARD_WGSL } from './kernels/ssd.js';
42
47
  export { COMPLEX_SSD_FORWARD_WGSL, COMPLEX_SSD_BACKWARD_WGSL } from './kernels/complex_ssd.js';
43
48
  export { ATTENTION_FORWARD_WGSL, ATTENTION_BACKWARD_WGSL, SOFTMAX_WGSL } from './kernels/attention.js';
44
- export { REGION, LIMBIC_DIM, LIMBIC_DIM_NAMES, LIMBIC_STATE_DIM, LIMBIC_BOUNDS, NEUTRAL_STATE, clampDim, clampState, neutralState, stateToRecord, recordToState, LimbicModel, DEFAULT_LIMBIC_CONFIG, DEFAULT_LIMBIC_SEED, LimbicTrainer, } from './limbic/index.js';
45
- export type { Region, LimbicDimName, LimbicModelConfig, LimbicForward, LimbicParam, LimbicSample, LimbicTrainOptions, } from './limbic/index.js';
49
+ export { REGION, LIMBIC_DIM, LIMBIC_DIM_NAMES, LIMBIC_STATE_DIM, LIMBIC_BOUNDS, NEUTRAL_STATE, clampDim, clampState, neutralState, stateToRecord, recordToState, personalitySetpoint, LimbicModel, DEFAULT_LIMBIC_CONFIG, DEFAULT_LIMBIC_SEED, LimbicTrainer, } from './limbic/index.js';
50
+ export type { Region, LimbicDimName, PersonalityTraits, LimbicModelConfig, LimbicForward, LimbicParam, LimbicSample, LimbicTrainOptions, } from './limbic/index.js';
46
51
  export { LIMBIC_AFFECT_WGSL } from './kernels/limbic_affect.js';
47
52
  export declare const VERSION = "2.0.0";
48
53
  export declare const DESCRIPTION = "MambaCode.js: WebGPU-accelerated Mamba-1/2/3 and Hybrid SSM for browser code models";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,OAAO,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAGtE,OAAO,EAAE,WAAW,EAAE,MAAQ,yBAAyB,CAAC;AACxD,OAAO,EAAE,WAAW,EAAE,MAAQ,yBAAyB,CAAC;AACxD,OAAO,EAAE,WAAW,EAAE,MAAQ,yBAAyB,CAAC;AACxD,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAG5D,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAGrD,OAAO,EACH,eAAe,EACf,sBAAsB,EACtB,kBAAkB,EAClB,gBAAgB,EAChB,UAAU,EACV,oBAAoB,GACvB,MAAM,gBAAgB,CAAC;AACxB,YAAY,EACR,SAAS,EACT,QAAQ,EACR,WAAW,EACX,SAAS,EACT,eAAe,EACf,cAAc,EACd,qBAAqB,EACrB,iBAAiB,EACjB,iBAAiB,EACjB,gBAAgB,EAChB,WAAW,EACX,gBAAgB,GACnB,MAAM,gBAAgB,CAAC;AAGxB,OAAO,EAAE,UAAU,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAClG,YAAY,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AACpF,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AACzC,YAAY,EAAE,YAAY,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAI9E,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,EACH,MAAM,EACN,QAAQ,EACR,UAAU,EACV,MAAM,EACN,SAAS,EACT,eAAe,EACf,gBAAgB,EAChB,gBAAgB,GACnB,MAAM,wBAAwB,CAAC;AAIhC,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,YAAY,EAAE,gBAAgB,EAAE,OAAO,EAAE,wBAAwB,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAIrH,OAAO,EACH,eAAe,EACf,gBAAgB,EAChB,gBAAgB,EAChB,aAAa,EACb,aAAa,EACb,kBAAkB,EAClB,aAAa,EACb,aAAa,GAChB,MAAM,kBAAkB,CAAC;AAC1B,YAAY,EACR,qBAAqB,EACrB,SAAS,EACT,cAAc,EACd,KAAK,EACL,KAAK,GACR,MAAM,kBAAkB,CAAC;AAI1B,OAAO,EACH,cAAc,EACd,cAAc,EACd,iBAAiB,EACjB,oBAAoB,EACpB,UAAU,EACV,UAAU,EACV,UAAU,EACV,oBAAoB,EACpB,aAAa,EACb,iBAAiB,EACjB,YAAY,EACZ,kBAAkB,EAClB,MAAM,EACN,UAAU,GACb,MAAM,mBAAmB,CAAC;AAC3B,YAAY,EACR,YAAY,EACZ,UAAU,EACV,YAAY,EACZ,aAAa,EACb,MAAM,EACN,WAAW,EACX,YAAY,EACZ,UAAU,GACb,MAAM,mBAAmB,CAAC;AAI3B,OAAO,EACH,oBAAoB,EACpB,cAAc,EACd,qBAAqB,EACrB,oBAAoB,GACvB,MAAM,mBAAmB,CAAC;AAC3B,YAAY,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAIvD,OAAO,EACH,cAAc,EACd,mBAAmB,EACnB,aAAa,EACb,aAAa,EACb,cAAc,EACd,iBAAiB,EACjB,iBAAiB,EACjB,MAAM,IAAI,WAAW,EACrB,WAAW,EACX,UAAU,EACV,YAAY,EACZ,GAAG,GACN,MAAM,kBAAkB,CAAC;AAC1B,YAAY,EACR,WAAW,EACX,gBAAgB,EAChB,gBAAgB,EAChB,eAAe,EACf,gBAAgB,EAChB,wBAAwB,EACxB,uBAAuB,GAC1B,MAAM,kBAAkB,CAAC;AAI1B,OAAO,EAAE,KAAK,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAChG,YAAY,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EACH,eAAe,EACf,aAAa,EACb,iBAAiB,EACjB,mBAAmB,EACnB,eAAe,EACf,mBAAmB,GACtB,MAAM,kBAAkB,CAAC;AAC1B,YAAY,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAIjD,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAI9E,YAAY,EACR,sBAAsB,EACtB,gBAAgB,EAChB,kBAAkB,EAClB,eAAe,EACf,SAAS,GACZ,MAAM,wBAAwB,CAAC;AAEhC,YAAY,EAAE,aAAa,EAAE,UAAU,EAAE,SAAS,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAC1G,YAAY,EAAE,iBAAiB,EAAE,UAAU,EAAE,UAAU,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC/H,YAAY,EAAE,iBAAiB,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAC9E,YAAY,EAAE,iBAAiB,EAAE,WAAW,EAAE,MAAO,yBAAyB,CAAC;AAC/E,YAAY,EAAE,oBAAoB,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAIvF,OAAO,EACH,UAAU,EACV,mBAAmB,EACnB,wBAAwB,EACxB,mBAAmB,EACnB,qBAAqB,EACrB,eAAe,EACf,cAAc,EACd,UAAU,EACV,YAAY,EACZ,IAAI,EACJ,UAAU,GACb,MAAM,sBAAsB,CAAC;AAI9B,OAAO,EACH,YAAY,EACZ,cAAc,EACd,WAAW,EACX,WAAW,EACX,YAAY,EACZ,cAAc,EACd,sBAAsB,EACtB,wBAAwB,EACxB,cAAc,GACjB,MAAM,yBAAyB,CAAC;AAKjC,OAAO,EAAE,2BAA2B,EAAE,4BAA4B,EAAE,MAC3D,6BAA6B,CAAC;AACvC,OAAO,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,MAC3C,qBAAqB,CAAC;AAC/B,OAAO,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,MAC3C,gCAAgC,CAAC;AAC1C,OAAO,EAAE,kBAAkB,EAAE,cAAc,EAAE,MACpC,4BAA4B,CAAC;AACtC,OAAO,EAAE,gBAAgB,EAAE,yBAAyB,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,MAC1F,0BAA0B,CAAC;AAGpC,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MACrC,kBAAkB,CAAC;AAG5B,OAAO,EAAE,wBAAwB,EAAE,yBAAyB,EAAE,MACrD,0BAA0B,CAAC;AAGpC,OAAO,EAAE,sBAAsB,EAAE,uBAAuB,EAAE,YAAY,EAAE,MAC/D,wBAAwB,CAAC;AAIlC,OAAO,EACH,MAAM,EACN,UAAU,EACV,gBAAgB,EAChB,gBAAgB,EAChB,aAAa,EACb,aAAa,EACb,QAAQ,EACR,UAAU,EACV,YAAY,EACZ,aAAa,EACb,aAAa,EACb,mBAAmB,EACnB,WAAW,EACX,qBAAqB,EACrB,mBAAmB,EACnB,aAAa,GAChB,MAAM,mBAAmB,CAAC;AAC3B,YAAY,EACR,MAAM,EACN,aAAa,EACb,iBAAiB,EACjB,iBAAiB,EACjB,aAAa,EACb,WAAW,EACX,YAAY,EACZ,kBAAkB,GACrB,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAIhE,eAAO,MAAM,OAAO,UAAc,CAAC;AACnC,eAAO,MAAM,WAAW,wFAAwF,CAAC"}
package/dist/index.js CHANGED
@@ -20,8 +20,12 @@ export { MambaTrainer } from './training/trainer.js';
20
20
  export { Tensor, backward, enableGrad, noGrad, clearTape, recordOperation, crossEntropyLoss, crossEntropyGrad, } from './training/autograd.js';
21
21
  // ── Tokenizer ─────────────────────────────────────────────────────────────────
22
22
  export { BPETokenizer } from './tokenizer/bpe.js';
23
+ // ── Modality codecs (media ⇄ tokens; lets EvermindLM generate video) ────────────
24
+ export { MultimodalVocab, VIDEO_BANK_INTRA, VIDEO_BANK_INTER, VideoRVQCodec, ImageRVQCodec, buildVideoSequence, generateVideo, generateImage, } from './codec/index.js';
23
25
  // ── Model export (the publishing step: ONNX / safetensors / GGUF / HF repo) ─────
24
26
  export { exportEvermind, EXPORT_FORMATS, exportSafetensors, tensorsToSafetensors, exportOnnx, exportGguf, configJson, generationConfigJson, tokenizerJson, modelCardMarkdown, namedTensors, evermindTensorSpec, archOf, paramCount, } from './export/index.js';
27
+ // ── Model import (warm-start / weight-port: safetensors → EvermindLM) ────────────
28
+ export { safetensorsToTensors, importEvermind, importEvermindTensors, inferArchFromTensors, } from './import/index.js';
25
29
  // ── Benchmarking (held-out perplexity / accuracy / throughput + A/B) ──────────
26
30
  export { benchmarkModel, benchmarkModelAsync, benchmarkText, compareModels, compareReports, corpusToSequences, trainAndBenchmark, argmax as benchArgmax, topKIndices, perplexity, bitsPerToken, LN2, } from './bench/index.js';
27
31
  // ── Checkpoint integrity (CRC-32 + trailer) ───────────────────────────────────
@@ -47,7 +51,7 @@ export { COMPLEX_SSD_FORWARD_WGSL, COMPLEX_SSD_BACKWARD_WGSL } from './kernels/c
47
51
  // Attention kernels
48
52
  export { ATTENTION_FORWARD_WGSL, ATTENTION_BACKWARD_WGSL, SOFTMAX_WGSL } from './kernels/attention.js';
49
53
  // ── Limbic system (trainable affective dynamics) ──────────────────────────────
50
- export { REGION, LIMBIC_DIM, LIMBIC_DIM_NAMES, LIMBIC_STATE_DIM, LIMBIC_BOUNDS, NEUTRAL_STATE, clampDim, clampState, neutralState, stateToRecord, recordToState, LimbicModel, DEFAULT_LIMBIC_CONFIG, DEFAULT_LIMBIC_SEED, LimbicTrainer, } from './limbic/index.js';
54
+ export { REGION, LIMBIC_DIM, LIMBIC_DIM_NAMES, LIMBIC_STATE_DIM, LIMBIC_BOUNDS, NEUTRAL_STATE, clampDim, clampState, neutralState, stateToRecord, recordToState, personalitySetpoint, LimbicModel, DEFAULT_LIMBIC_CONFIG, DEFAULT_LIMBIC_SEED, LimbicTrainer, } from './limbic/index.js';
51
55
  export { LIMBIC_AFFECT_WGSL } from './kernels/limbic_affect.js';
52
56
  // ── Version ───────────────────────────────────────────────────────────────────
53
57
  export const VERSION = '2.0.0';
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"selective_scan.d.ts","sourceRoot":"","sources":["../../src/kernels/selective_scan.ts"],"names":[],"mappings":"AAUA,eAAO,MAAM,2BAA2B,EAAE,MAwNzC,CAAC;AAKF,eAAO,MAAM,4BAA4B,EAAE,MA0H1C,CAAC"}
1
+ {"version":3,"file":"selective_scan.d.ts","sourceRoot":"","sources":["../../src/kernels/selective_scan.ts"],"names":[],"mappings":"AAUA,eAAO,MAAM,2BAA2B,EAAE,MA2NzC,CAAC;AAKF,eAAO,MAAM,4BAA4B,EAAE,MA6H1C,CAAC"}
@@ -59,12 +59,15 @@ fn softplus(x: f32) -> f32 {
59
59
  // B_bar = (A_bar - 1) / A * B ≈ Δ * B (first-order for simplicity)
60
60
  fn discretise_A(delta_val: f32, a_log: f32) -> f32 {
61
61
  // A is stored as -exp(a_log) to ensure A_bar < 1 (stable)
62
- let a_cont = -exp(a_log);
62
+ // Clamp log-decay so -exp(a_log) can't overflow to -Inf (A_bar→0, state
63
+ // death) nor collapse toward 0 (A_bar→1, no decay). Keeps A_bar strictly in
64
+ // (0,1) across repeated adapts. Belt-and-suspenders: WSLA also freezes A_log.
65
+ let a_cont = -exp(clamp(a_log, -10.0, 5.0));
63
66
  return exp(delta_val * a_cont);
64
67
  }
65
68
 
66
69
  fn discretise_B(delta_val: f32, a_log: f32, b_val: f32) -> f32 {
67
- let a_cont = -exp(a_log);
70
+ let a_cont = -exp(clamp(a_log, -10.0, 5.0));
68
71
  let a_bar = exp(delta_val * a_cont);
69
72
  // (A_bar - 1) / A_cont * B
70
73
  let b_bar = (a_bar - 1.0) / a_cont * b_val;
@@ -261,7 +264,10 @@ fn softplus_grad(x: f32) -> f32 {
261
264
  }
262
265
 
263
266
  fn discretise_A(delta_val: f32, a_log: f32) -> f32 {
264
- let a_cont = -exp(a_log);
267
+ // Clamp log-decay so -exp(a_log) can't overflow to -Inf (A_bar→0, state
268
+ // death) nor collapse toward 0 (A_bar→1, no decay). Keeps A_bar strictly in
269
+ // (0,1) across repeated adapts. Belt-and-suspenders: WSLA also freezes A_log.
270
+ let a_cont = -exp(clamp(a_log, -10.0, 5.0));
265
271
  return exp(delta_val * a_cont);
266
272
  }
267
273
 
@@ -1 +1 @@
1
- {"version":3,"file":"selective_scan.js","sourceRoot":"","sources":["../../src/kernels/selective_scan.ts"],"names":[],"mappings":"AAAA,sCAAsC;AACtC,qEAAqE;AACrE,4EAA4E;AAC5E,EAAE;AACF,2BAA2B;AAC3B,oCAAoC;AACpC,8BAA8B;AAC9B,EAAE;AACF,qEAAqE;AAErE,MAAM,CAAC,MAAM,2BAA2B,GAAW,UAAU,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAwN5D,CAAC;AAEF,gDAAgD;AAChD,uEAAuE;AAEvE,MAAM,CAAC,MAAM,4BAA4B,GAAW,UAAU,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA0H7D,CAAC"}
1
+ {"version":3,"file":"selective_scan.js","sourceRoot":"","sources":["../../src/kernels/selective_scan.ts"],"names":[],"mappings":"AAAA,sCAAsC;AACtC,qEAAqE;AACrE,4EAA4E;AAC5E,EAAE;AACF,2BAA2B;AAC3B,oCAAoC;AACpC,8BAA8B;AAC9B,EAAE;AACF,qEAAqE;AAErE,MAAM,CAAC,MAAM,2BAA2B,GAAW,UAAU,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA2N5D,CAAC;AAEF,gDAAgD;AAChD,uEAAuE;AAEvE,MAAM,CAAC,MAAM,4BAA4B,GAAW,UAAU,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA6H7D,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"ssd.d.ts","sourceRoot":"","sources":["../../src/kernels/ssd.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAEH,eAAO,MAAM,gBAAgB,EAAE,MA+H9B,CAAC;AAIF,eAAO,MAAM,iBAAiB,EAAE,MAuH/B,CAAC"}
1
+ {"version":3,"file":"ssd.d.ts","sourceRoot":"","sources":["../../src/kernels/ssd.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAEH,eAAO,MAAM,gBAAgB,EAAE,MAkI9B,CAAC;AAIF,eAAO,MAAM,iBAAiB,EAAE,MA0H/B,CAAC"}
@@ -49,7 +49,10 @@ struct SsdParams {
49
49
  @group(0) @binding(9) var<storage, read_write> state_carry : array<f32>; // [n_chunks+1,B,H,N,d_head]
50
50
 
51
51
  fn softplus(x: f32) -> f32 {
52
- return log(1.0 + exp(x));
52
+ // Numerically stable: max(x,0) + log1p(exp(-|x|)). The naive log(1+exp(x))
53
+ // overflows to +Inf for x ≳ 88 (f32 exp range) — and a downstream
54
+ // exp(-Inf*0) then yields NaN, poisoning the state. This form never overflows.
55
+ return max(x, 0.0) + log(1.0 + exp(-abs(x)));
53
56
  }
54
57
 
55
58
  // Workgroup: one chunk × one head × one batch item
@@ -183,7 +186,10 @@ struct SsdParams {
183
186
  @group(0) @binding(14) var<storage, read_write> dD_vec : array<f32>;
184
187
 
185
188
  fn softplus(x: f32) -> f32 {
186
- return log(1.0 + exp(x));
189
+ // Numerically stable: max(x,0) + log1p(exp(-|x|)). The naive log(1+exp(x))
190
+ // overflows to +Inf for x ≳ 88 (f32 exp range) — and a downstream
191
+ // exp(-Inf*0) then yields NaN, poisoning the state. This form never overflows.
192
+ return max(x, 0.0) + log(1.0 + exp(-abs(x)));
187
193
  }
188
194
  fn d_softplus(x: f32) -> f32 {
189
195
  return 1.0 / (1.0 + exp(-x));
@@ -1 +1 @@
1
- {"version":3,"file":"ssd.js","sourceRoot":"","sources":["../../src/kernels/ssd.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAEH,MAAM,CAAC,MAAM,gBAAgB,GAAW,UAAU,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA+HjD,CAAC;AAEF,iFAAiF;AAEjF,MAAM,CAAC,MAAM,iBAAiB,GAAW,UAAU,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAuHlD,CAAC"}
1
+ {"version":3,"file":"ssd.js","sourceRoot":"","sources":["../../src/kernels/ssd.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAEH,MAAM,CAAC,MAAM,gBAAgB,GAAW,UAAU,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAkIjD,CAAC;AAEF,iFAAiF;AAEjF,MAAM,CAAC,MAAM,iBAAiB,GAAW,UAAU,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA0HlD,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"weight_update.d.ts","sourceRoot":"","sources":["../../src/kernels/weight_update.ts"],"names":[],"mappings":"AAUA,eAAO,MAAM,kBAAkB,EAAE,MAgDhC,CAAC;AAIF,eAAO,MAAM,cAAc,EAAE,MAyD5B,CAAC"}
1
+ {"version":3,"file":"weight_update.d.ts","sourceRoot":"","sources":["../../src/kernels/weight_update.ts"],"names":[],"mappings":"AAUA,eAAO,MAAM,kBAAkB,EAAE,MAmEhC,CAAC;AAIF,eAAO,MAAM,cAAc,EAAE,MAyD5B,CAAC"}
@@ -18,6 +18,10 @@ struct AdamParams {
18
18
  weight_decay : f32, // default 0.01
19
19
  beta1_t : f32, // beta1^t (precomputed bias correction term)
20
20
  beta2_t : f32, // beta2^t
21
+ max_delta : f32, // trust region: max |Δθ| per step (0 ⇒ unbounded)
22
+ _pad0 : f32, // pad struct to a 16-byte multiple (uniform layout)
23
+ _pad1 : f32,
24
+ _pad2 : f32,
21
25
  };
22
26
 
23
27
  @group(0) @binding(0) var<uniform> adam : AdamParams;
@@ -51,9 +55,24 @@ fn adamw_update(
51
55
  let m_hat = m_new / (1.0 - adam.beta1_t);
52
56
  let v_hat = v_new / (1.0 - adam.beta2_t);
53
57
 
54
- // Weight decay (decoupled) + gradient step
55
- param[i] = p * (1.0 - adam.lr * adam.weight_decay) -
56
- adam.lr * m_hat / (sqrt(v_hat) + adam.eps);
58
+ // Adam step.
59
+ var step = adam.lr * m_hat / (sqrt(v_hat) + adam.eps);
60
+
61
+ // Numerical guard: never write a non-finite step into a weight. A NaN or Inf
62
+ // here (from a bad gradient, a zero v_hat, an overflow) would permanently
63
+ // poison the parameter and every future forward — the "model dies" failure.
64
+ // NaN fails self-comparison; treat ±Inf-magnitude as non-finite too.
65
+ if (step != step || step > 3.4e38 || step < -3.4e38) { step = 0.0; }
66
+
67
+ // Trust region: bound how far ONE step can move a weight. With write-through
68
+ // adaptation running repeatedly, an unbounded step (even from a noisy
69
+ // gradient) compounds across executions and blows the weights up; clamping
70
+ // the per-element delta keeps every adapt small and reversible. max_delta==0
71
+ // disables the bound (full-training callers that don't set it).
72
+ if (adam.max_delta > 0.0) { step = clamp(step, -adam.max_delta, adam.max_delta); }
73
+
74
+ // Weight decay (decoupled) + bounded gradient step
75
+ param[i] = p * (1.0 - adam.lr * adam.weight_decay) - step;
57
76
  }
58
77
  `;
59
78
  // Gradient clipping kernel – clips global gradient norm to max_norm.
@@ -1 +1 @@
1
- {"version":3,"file":"weight_update.js","sourceRoot":"","sources":["../../src/kernels/weight_update.ts"],"names":[],"mappings":"AAAA,8CAA8C;AAC9C,sDAAsD;AACtD,EAAE;AACF,qBAAqB;AACrB,8CAA8C;AAC9C,gDAAgD;AAChD,gCAAgC;AAChC,gCAAgC;AAChC,uFAAuF;AAEvF,MAAM,CAAC,MAAM,kBAAkB,GAAW,UAAU,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAgDnD,CAAC;AAEF,qEAAqE;AACrE,gFAAgF;AAChF,MAAM,CAAC,MAAM,cAAc,GAAW,UAAU,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAyD/C,CAAC"}
1
+ {"version":3,"file":"weight_update.js","sourceRoot":"","sources":["../../src/kernels/weight_update.ts"],"names":[],"mappings":"AAAA,8CAA8C;AAC9C,sDAAsD;AACtD,EAAE;AACF,qBAAqB;AACrB,8CAA8C;AAC9C,gDAAgD;AAChD,gCAAgC;AAChC,gCAAgC;AAChC,uFAAuF;AAEvF,MAAM,CAAC,MAAM,kBAAkB,GAAW,UAAU,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAmEnD,CAAC;AAEF,qEAAqE;AACrE,gFAAgF;AAChF,MAAM,CAAC,MAAM,cAAc,GAAW,UAAU,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAyD/C,CAAC"}
@@ -5,8 +5,8 @@
5
5
  * personality sets the homeostatic setpoints, the limbic model learns — in
6
6
  * WebGPU — how an agent's affective state moves in response to experience.
7
7
  */
8
- export { REGION, LIMBIC_DIM, LIMBIC_DIM_NAMES, LIMBIC_STATE_DIM, LIMBIC_BOUNDS, NEUTRAL_STATE, clampDim, clampState, neutralState, stateToRecord, recordToState, } from "./regions.js";
9
- export type { Region, LimbicDimName } from "./regions.js";
8
+ export { REGION, LIMBIC_DIM, LIMBIC_DIM_NAMES, LIMBIC_STATE_DIM, LIMBIC_BOUNDS, NEUTRAL_STATE, clampDim, clampState, neutralState, stateToRecord, recordToState, personalitySetpoint, } from "./regions.js";
9
+ export type { Region, LimbicDimName, PersonalityTraits } from "./regions.js";
10
10
  export { LimbicModel, DEFAULT_LIMBIC_CONFIG, DEFAULT_LIMBIC_SEED } from "./limbic_model.js";
11
11
  export type { LimbicModelConfig, LimbicForward, LimbicParam } from "./limbic_model.js";
12
12
  export { LimbicTrainer } from "./limbic_trainer.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/limbic/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EACL,MAAM,EACN,UAAU,EACV,gBAAgB,EAChB,gBAAgB,EAChB,aAAa,EACb,aAAa,EACb,QAAQ,EACR,UAAU,EACV,YAAY,EACZ,aAAa,EACb,aAAa,GACd,MAAM,cAAc,CAAC;AACtB,YAAY,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAE1D,OAAO,EAAE,WAAW,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAC5F,YAAY,EAAE,iBAAiB,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAEvF,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,YAAY,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/limbic/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EACL,MAAM,EACN,UAAU,EACV,gBAAgB,EAChB,gBAAgB,EAChB,aAAa,EACb,aAAa,EACb,QAAQ,EACR,UAAU,EACV,YAAY,EACZ,aAAa,EACb,aAAa,EACb,mBAAmB,GACpB,MAAM,cAAc,CAAC;AACtB,YAAY,EAAE,MAAM,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAE7E,OAAO,EAAE,WAAW,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAC5F,YAAY,EAAE,iBAAiB,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAEvF,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,YAAY,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC"}
@@ -5,7 +5,7 @@
5
5
  * personality sets the homeostatic setpoints, the limbic model learns — in
6
6
  * WebGPU — how an agent's affective state moves in response to experience.
7
7
  */
8
- export { REGION, LIMBIC_DIM, LIMBIC_DIM_NAMES, LIMBIC_STATE_DIM, LIMBIC_BOUNDS, NEUTRAL_STATE, clampDim, clampState, neutralState, stateToRecord, recordToState, } from "./regions.js";
8
+ export { REGION, LIMBIC_DIM, LIMBIC_DIM_NAMES, LIMBIC_STATE_DIM, LIMBIC_BOUNDS, NEUTRAL_STATE, clampDim, clampState, neutralState, stateToRecord, recordToState, personalitySetpoint, } from "./regions.js";
9
9
  export { LimbicModel, DEFAULT_LIMBIC_CONFIG, DEFAULT_LIMBIC_SEED } from "./limbic_model.js";
10
10
  export { LimbicTrainer } from "./limbic_trainer.js";
11
11
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/limbic/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EACL,MAAM,EACN,UAAU,EACV,gBAAgB,EAChB,gBAAgB,EAChB,aAAa,EACb,aAAa,EACb,QAAQ,EACR,UAAU,EACV,YAAY,EACZ,aAAa,EACb,aAAa,GACd,MAAM,cAAc,CAAC;AAGtB,OAAO,EAAE,WAAW,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAG5F,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/limbic/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EACL,MAAM,EACN,UAAU,EACV,gBAAgB,EAChB,gBAAgB,EAChB,aAAa,EACb,aAAa,EACb,QAAQ,EACR,UAAU,EACV,YAAY,EACZ,aAAa,EACb,aAAa,EACb,mBAAmB,GACpB,MAAM,cAAc,CAAC;AAGtB,OAAO,EAAE,WAAW,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAG5F,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC"}
@@ -76,4 +76,35 @@ export declare function neutralState(): Float32Array;
76
76
  export declare function stateToRecord(state: ArrayLike<number>): Record<LimbicDimName, number>;
77
77
  /** Build a dense state vector from a (possibly partial) labelled record. */
78
78
  export declare function recordToState(rec: Partial<Record<LimbicDimName, number>>): Float32Array;
79
+ /**
80
+ * The static psychometric traits (0..100, 50 = neutral) that pull the resting
81
+ * affective setpoint away from {@link NEUTRAL_STATE}. A subset of the full
82
+ * personality vector — only the dimensions that map to a limbic drive. All
83
+ * optional; an omitted trait is treated as neutral (50).
84
+ *
85
+ * Keep the mapping in {@link personalitySetpoint} in sync with the runtime
86
+ * compiler `deriveLimbicSetpoints` in `@builderforce/agent-tools` so the on-prem
87
+ * runtime, the cloud engine, and this WebGPU trainer settle on the SAME baseline
88
+ * for the same personality. The two are coupled only by this mapping.
89
+ */
90
+ export interface PersonalityTraits {
91
+ openness?: number;
92
+ emotionality?: number;
93
+ conscientiousness?: number;
94
+ extraversion?: number;
95
+ /** Regulatory focus: 0 = prevention, 100 = promotion. */
96
+ regulatoryFocus?: number;
97
+ riskTolerance?: number;
98
+ grit?: number;
99
+ /** Schwartz "stimulation" value. */
100
+ stimulation?: number;
101
+ }
102
+ /**
103
+ * Derive the personality-conditioned resting SETPOINT from a trait vector — the
104
+ * homeostatic target the limbic dynamics relax toward and that the trainable
105
+ * affect model rides on top of ("personality = setpoints, limbic = dynamics").
106
+ * Returns a fresh clamped 8-dim state vector. A fully-neutral trait vector yields
107
+ * {@link NEUTRAL_STATE}. Mirrors `deriveLimbicSetpoints` in `@builderforce/agent-tools`.
108
+ */
109
+ export declare function personalitySetpoint(traits: PersonalityTraits | undefined): Float32Array;
79
110
  //# sourceMappingURL=regions.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"regions.d.ts","sourceRoot":"","sources":["../../src/limbic/regions.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,gFAAgF;AAChF,eAAO,MAAM,MAAM;;;;;;CAMT,CAAC;AACX,MAAM,MAAM,MAAM,GAAG,CAAC,OAAO,MAAM,CAAC,CAAC,MAAM,OAAO,MAAM,CAAC,CAAC;AAE1D;;;;;GAKG;AACH,eAAO,MAAM,UAAU;IACrB,yEAAyE;;IAEzE,kEAAkE;;IAElE,2EAA2E;;IAE3E,yEAAyE;;IAEzE,+EAA+E;;IAE/E,mFAAmF;;IAEnF,kEAAkE;;IAElE,qFAAqF;;CAE7E,CAAC;AACX,MAAM,MAAM,aAAa,GAAG,MAAM,OAAO,UAAU,CAAC;AAEpD,4CAA4C;AAC5C,eAAO,MAAM,gBAAgB,IAAI,CAAC;AAElC,gEAAgE;AAChE,eAAO,MAAM,gBAAgB,EAAE,aAAa,EAS3C,CAAC;AAEF,mFAAmF;AACnF,eAAO,MAAM,aAAa,EAAE,aAAa,CAAC,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,CASlE,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,aAAa,EAAE,aAAa,CAAC,MAAM,CAS/C,CAAC;AAEF,8CAA8C;AAC9C,wBAAgB,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAK7D;AAED,yDAAyD;AACzD,wBAAgB,UAAU,CAAC,KAAK,EAAE,YAAY,GAAG,YAAY,CAK5D;AAED,oCAAoC;AACpC,wBAAgB,YAAY,IAAI,YAAY,CAE3C;AAED,mFAAmF;AACnF,wBAAgB,aAAa,CAAC,KAAK,EAAE,SAAS,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC,aAAa,EAAE,MAAM,CAAC,CAMrF;AAED,4EAA4E;AAC5E,wBAAgB,aAAa,CAAC,GAAG,EAAE,OAAO,CAAC,MAAM,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC,GAAG,YAAY,CAOvF"}
1
+ {"version":3,"file":"regions.d.ts","sourceRoot":"","sources":["../../src/limbic/regions.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,gFAAgF;AAChF,eAAO,MAAM,MAAM;;;;;;CAMT,CAAC;AACX,MAAM,MAAM,MAAM,GAAG,CAAC,OAAO,MAAM,CAAC,CAAC,MAAM,OAAO,MAAM,CAAC,CAAC;AAE1D;;;;;GAKG;AACH,eAAO,MAAM,UAAU;IACrB,yEAAyE;;IAEzE,kEAAkE;;IAElE,2EAA2E;;IAE3E,yEAAyE;;IAEzE,+EAA+E;;IAE/E,mFAAmF;;IAEnF,kEAAkE;;IAElE,qFAAqF;;CAE7E,CAAC;AACX,MAAM,MAAM,aAAa,GAAG,MAAM,OAAO,UAAU,CAAC;AAEpD,4CAA4C;AAC5C,eAAO,MAAM,gBAAgB,IAAI,CAAC;AAElC,gEAAgE;AAChE,eAAO,MAAM,gBAAgB,EAAE,aAAa,EAS3C,CAAC;AAEF,mFAAmF;AACnF,eAAO,MAAM,aAAa,EAAE,aAAa,CAAC,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,CASlE,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,aAAa,EAAE,aAAa,CAAC,MAAM,CAS/C,CAAC;AAEF,8CAA8C;AAC9C,wBAAgB,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAK7D;AAED,yDAAyD;AACzD,wBAAgB,UAAU,CAAC,KAAK,EAAE,YAAY,GAAG,YAAY,CAK5D;AAED,oCAAoC;AACpC,wBAAgB,YAAY,IAAI,YAAY,CAE3C;AAED,mFAAmF;AACnF,wBAAgB,aAAa,CAAC,KAAK,EAAE,SAAS,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC,aAAa,EAAE,MAAM,CAAC,CAMrF;AAED,4EAA4E;AAC5E,wBAAgB,aAAa,CAAC,GAAG,EAAE,OAAO,CAAC,MAAM,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC,GAAG,YAAY,CAOvF;AAED;;;;;;;;;;GAUG;AACH,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,yDAAyD;IACzD,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,oCAAoC;IACpC,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAQD;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,iBAAiB,GAAG,SAAS,GAAG,YAAY,CAqBvF"}
@@ -129,4 +129,38 @@ export function recordToState(rec) {
129
129
  }
130
130
  return s;
131
131
  }
132
+ /** Signed influence of a 0..100 trait around its neutral midpoint → [-1, 1]. */
133
+ function infl(s) {
134
+ const v = typeof s === "number" && !Number.isNaN(s) ? Math.max(0, Math.min(100, s)) : 50;
135
+ return (v - 50) / 50;
136
+ }
137
+ /**
138
+ * Derive the personality-conditioned resting SETPOINT from a trait vector — the
139
+ * homeostatic target the limbic dynamics relax toward and that the trainable
140
+ * affect model rides on top of ("personality = setpoints, limbic = dynamics").
141
+ * Returns a fresh clamped 8-dim state vector. A fully-neutral trait vector yields
142
+ * {@link NEUTRAL_STATE}. Mirrors `deriveLimbicSetpoints` in `@builderforce/agent-tools`.
143
+ */
144
+ export function personalitySetpoint(traits) {
145
+ const s = neutralState();
146
+ if (!traits)
147
+ return s;
148
+ const open = infl(traits.openness);
149
+ const emo = infl(traits.emotionality);
150
+ const consc = infl(traits.conscientiousness);
151
+ const extra = infl(traits.extraversion);
152
+ const reg = infl(traits.regulatoryFocus);
153
+ const risk = infl(traits.riskTolerance);
154
+ const grit = infl(traits.grit);
155
+ const stim = infl(traits.stimulation);
156
+ s[LIMBIC_DIM.driveCuriosity] = clampDim(LIMBIC_DIM.driveCuriosity, 0.5 + 0.35 * open + 0.15 * stim);
157
+ s[LIMBIC_DIM.exploration] = clampDim(LIMBIC_DIM.exploration, 0.4 + 0.3 * open + 0.25 * risk + 0.15 * reg);
158
+ s[LIMBIC_DIM.driveCaution] = clampDim(LIMBIC_DIM.driveCaution, 0.5 + 0.3 * consc - 0.3 * risk - 0.2 * reg + 0.15 * emo);
159
+ s[LIMBIC_DIM.arousal] = clampDim(LIMBIC_DIM.arousal, 0.2 + 0.2 * emo + 0.1 * extra);
160
+ s[LIMBIC_DIM.driveSocial] = clampDim(LIMBIC_DIM.driveSocial, 0.5 + 0.35 * extra);
161
+ s[LIMBIC_DIM.driveEffort] = clampDim(LIMBIC_DIM.driveEffort, 0.8 + 0.15 * grit + 0.1 * consc);
162
+ s[LIMBIC_DIM.valence] = clampDim(LIMBIC_DIM.valence, 0.0 + 0.1 * reg - 0.1 * emo);
163
+ s[LIMBIC_DIM.attention] = clampDim(LIMBIC_DIM.attention, 0.7 + 0.1 * consc);
164
+ return s;
165
+ }
132
166
  //# sourceMappingURL=regions.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"regions.js","sourceRoot":"","sources":["../../src/limbic/regions.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"regions.js","sourceRoot":"","sources":["../../src/limbic/regions.ts"],"names":[],"mappings":"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"}
@@ -104,6 +104,23 @@ export declare class HybridMambaModel {
104
104
  embed(tokenIds: number[] | Uint32Array): Promise<Float32Array>;
105
105
  generate(promptIds: number[], maxNewTokens?: number, samplingOpts?: SamplingOptions): Promise<number[]>;
106
106
  parameters(): LayerParam[];
107
+ /**
108
+ * The parameters a `learn()` / `adapt()` step is allowed to update.
109
+ *
110
+ * Under WSLA (write-through / narrow adaptation — the Evermind "update ==
111
+ * replace" path) this is ONLY the per-layer narrow subset (the input
112
+ * projections that produce Δ/B/C). The backbone — token embedding, final
113
+ * norm, and every block's `A_log` / conv / output projection — stays FROZEN.
114
+ * Freezing `A_log` is the key stability guarantee: the state-transition
115
+ * decay can never drift into a degenerate regime (state death / no-decay)
116
+ * across repeated adapts, which is what made the model "die after several
117
+ * executions". Outside WSLA every parameter trains (full fine-tune / distill).
118
+ *
119
+ * Param names are namespaced `layer{i}.{name}` to match {@link parameters},
120
+ * so a name-keyed optimizer (see MambaTrainer) reuses the same Adam moments
121
+ * whether it's stepping the full set or just the WSLA subset.
122
+ */
123
+ getTrainableParams(): LayerParam[];
107
124
  setWSLAMode(enabled: boolean): void;
108
125
  /**
109
126
  * Export all parameters to an ArrayBuffer.
@@ -1 +1 @@
1
- {"version":3,"file":"mamba_model.d.ts","sourceRoot":"","sources":["../../src/model/mamba_model.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"mamba_model.d.ts","sourceRoot":"","sources":["../../src/model/mamba_model.ts"],"names":[],"mappings":"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"}
@@ -282,6 +282,33 @@ export class HybridMambaModel {
282
282
  });
283
283
  return params;
284
284
  }
285
+ /**
286
+ * The parameters a `learn()` / `adapt()` step is allowed to update.
287
+ *
288
+ * Under WSLA (write-through / narrow adaptation — the Evermind "update ==
289
+ * replace" path) this is ONLY the per-layer narrow subset (the input
290
+ * projections that produce Δ/B/C). The backbone — token embedding, final
291
+ * norm, and every block's `A_log` / conv / output projection — stays FROZEN.
292
+ * Freezing `A_log` is the key stability guarantee: the state-transition
293
+ * decay can never drift into a degenerate regime (state death / no-decay)
294
+ * across repeated adapts, which is what made the model "die after several
295
+ * executions". Outside WSLA every parameter trains (full fine-tune / distill).
296
+ *
297
+ * Param names are namespaced `layer{i}.{name}` to match {@link parameters},
298
+ * so a name-keyed optimizer (see MambaTrainer) reuses the same Adam moments
299
+ * whether it's stepping the full set or just the WSLA subset.
300
+ */
301
+ getTrainableParams() {
302
+ if (!this._wslaMode)
303
+ return this.parameters();
304
+ const params = [];
305
+ for (let i = 0; i < this.layers.length; i++) {
306
+ for (const p of this.layers[i].getTrainableParams()) {
307
+ params.push({ ...p, name: `layer${i}.${p.name}` });
308
+ }
309
+ }
310
+ return params;
311
+ }
285
312
  setWSLAMode(enabled) {
286
313
  for (const layer of this.layers)
287
314
  layer.setWSLAMode(enabled);