@hviana/sema 0.1.5 → 0.1.6

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 (160) hide show
  1. package/AGENTS.md +6 -5
  2. package/CITATION.cff +49 -0
  3. package/HOW_IT_WORKS.md +11 -12
  4. package/README.md +7 -5
  5. package/dist/example/demo.js +25 -25
  6. package/dist/example/train_base.d.ts +19 -21
  7. package/dist/example/train_base.js +1687 -1952
  8. package/dist/src/alphabet.d.ts +3 -3
  9. package/dist/src/alphabet.js +24 -27
  10. package/dist/src/alu/src/alu.d.ts +169 -194
  11. package/dist/src/alu/src/alu.js +374 -414
  12. package/dist/src/alu/src/expr.d.ts +36 -43
  13. package/dist/src/alu/src/expr.js +252 -278
  14. package/dist/src/alu/src/index.d.ts +9 -98
  15. package/dist/src/alu/src/index.js +10 -64
  16. package/dist/src/alu/src/kernel-arith.d.ts +1 -5
  17. package/dist/src/alu/src/kernel-arith.js +195 -285
  18. package/dist/src/alu/src/kernel-bits.d.ts +1 -5
  19. package/dist/src/alu/src/kernel-bits.js +81 -115
  20. package/dist/src/alu/src/kernel-logic.js +33 -63
  21. package/dist/src/alu/src/kernel-nd.js +155 -195
  22. package/dist/src/alu/src/kernel-numeric.d.ts +16 -80
  23. package/dist/src/alu/src/kernel-numeric.js +259 -331
  24. package/dist/src/alu/src/operation.d.ts +112 -132
  25. package/dist/src/alu/src/operation.js +149 -163
  26. package/dist/src/alu/src/parser.d.ts +168 -175
  27. package/dist/src/alu/src/parser.js +382 -421
  28. package/dist/src/alu/src/resonance.d.ts +16 -25
  29. package/dist/src/alu/src/resonance.js +49 -56
  30. package/dist/src/alu/src/text.d.ts +3 -7
  31. package/dist/src/alu/src/text.js +31 -37
  32. package/dist/src/alu/src/value.d.ts +14 -14
  33. package/dist/src/alu/src/value.js +150 -160
  34. package/dist/src/alu/test/alu.test.js +543 -656
  35. package/dist/src/bytes.d.ts +1 -5
  36. package/dist/src/bytes.js +33 -40
  37. package/dist/src/config.d.ts +99 -102
  38. package/dist/src/config.js +78 -83
  39. package/dist/src/derive/src/deduction.d.ts +60 -62
  40. package/dist/src/derive/src/deduction.js +103 -109
  41. package/dist/src/derive/src/index.d.ts +1 -7
  42. package/dist/src/derive/src/priority-queue.d.ts +8 -8
  43. package/dist/src/derive/src/priority-queue.js +57 -61
  44. package/dist/src/derive/src/rewrite.d.ts +15 -18
  45. package/dist/src/derive/src/rewrite.js +59 -67
  46. package/dist/src/derive/src/trie.d.ts +56 -56
  47. package/dist/src/derive/src/trie.js +175 -179
  48. package/dist/src/derive/test/derive.test.js +96 -100
  49. package/dist/src/extension.d.ts +13 -16
  50. package/dist/src/geometry.d.ts +17 -42
  51. package/dist/src/geometry.js +235 -266
  52. package/dist/src/index.d.ts +2 -17
  53. package/dist/src/index.js +2 -12
  54. package/dist/src/ingest-cache.d.ts +25 -30
  55. package/dist/src/ingest-cache.js +108 -127
  56. package/dist/src/mind/articulation.d.ts +1 -5
  57. package/dist/src/mind/articulation.js +77 -112
  58. package/dist/src/mind/attention.d.ts +40 -108
  59. package/dist/src/mind/attention.js +749 -871
  60. package/dist/src/mind/canonical.d.ts +4 -19
  61. package/dist/src/mind/canonical.js +27 -31
  62. package/dist/src/mind/graph-search.d.ts +201 -225
  63. package/dist/src/mind/graph-search.js +742 -821
  64. package/dist/src/mind/index.d.ts +2 -10
  65. package/dist/src/mind/junction.d.ts +31 -58
  66. package/dist/src/mind/junction.js +172 -237
  67. package/dist/src/mind/learning.d.ts +16 -52
  68. package/dist/src/mind/learning.js +143 -165
  69. package/dist/src/mind/match.d.ts +20 -69
  70. package/dist/src/mind/match.js +259 -318
  71. package/dist/src/mind/mechanisms/alu.js +16 -16
  72. package/dist/src/mind/mechanisms/cast.d.ts +9 -13
  73. package/dist/src/mind/mechanisms/cast.js +363 -456
  74. package/dist/src/mind/mechanisms/confluence.d.ts +8 -12
  75. package/dist/src/mind/mechanisms/confluence.js +152 -183
  76. package/dist/src/mind/mechanisms/cover.d.ts +2 -8
  77. package/dist/src/mind/mechanisms/cover.js +148 -210
  78. package/dist/src/mind/mechanisms/extraction.d.ts +8 -34
  79. package/dist/src/mind/mechanisms/extraction.js +234 -288
  80. package/dist/src/mind/mechanisms/recall.d.ts +6 -10
  81. package/dist/src/mind/mechanisms/recall.js +126 -185
  82. package/dist/src/mind/mind.d.ts +129 -154
  83. package/dist/src/mind/mind.js +258 -288
  84. package/dist/src/mind/pipeline-mechanism.d.ts +112 -124
  85. package/dist/src/mind/pipeline-mechanism.js +161 -172
  86. package/dist/src/mind/pipeline.d.ts +4 -14
  87. package/dist/src/mind/pipeline.js +125 -189
  88. package/dist/src/mind/primitives.d.ts +8 -32
  89. package/dist/src/mind/primitives.js +99 -117
  90. package/dist/src/mind/rationale.d.ts +86 -98
  91. package/dist/src/mind/rationale.js +113 -121
  92. package/dist/src/mind/reasoning.d.ts +2 -13
  93. package/dist/src/mind/reasoning.js +129 -166
  94. package/dist/src/mind/recognition.d.ts +1 -4
  95. package/dist/src/mind/recognition.js +183 -208
  96. package/dist/src/mind/resonance.d.ts +5 -22
  97. package/dist/src/mind/resonance.js +0 -0
  98. package/dist/src/mind/trace.d.ts +6 -25
  99. package/dist/src/mind/trace.js +50 -58
  100. package/dist/src/mind/traverse.d.ts +16 -58
  101. package/dist/src/mind/traverse.js +304 -357
  102. package/dist/src/mind/types.d.ts +120 -127
  103. package/dist/src/mind/types.js +60 -69
  104. package/dist/src/rabitq-ivf/src/database.d.ts +113 -0
  105. package/dist/src/rabitq-ivf/src/database.js +201 -0
  106. package/dist/src/rabitq-ivf/src/index.d.ts +7 -0
  107. package/dist/src/{rabitq-hnsw → rabitq-ivf}/src/index.js +1 -3
  108. package/dist/src/rabitq-ivf/src/ivf.d.ts +200 -0
  109. package/dist/src/rabitq-ivf/src/ivf.js +1165 -0
  110. package/dist/src/rabitq-ivf/src/prng.d.ts +19 -0
  111. package/dist/src/rabitq-ivf/src/prng.js +36 -0
  112. package/dist/src/rabitq-ivf/src/rabitq.d.ts +95 -0
  113. package/dist/src/rabitq-ivf/src/rabitq.js +283 -0
  114. package/dist/src/sema.d.ts +9 -13
  115. package/dist/src/sema.js +26 -40
  116. package/dist/src/store-sqlite.d.ts +169 -166
  117. package/dist/src/store-sqlite.js +762 -662
  118. package/dist/src/store.d.ts +586 -630
  119. package/dist/src/store.js +1423 -1581
  120. package/dist/src/vec.d.ts +5 -9
  121. package/dist/src/vec.js +61 -73
  122. package/example/train_base.ts +13 -10
  123. package/package.json +1 -1
  124. package/src/alu/README.md +1 -1
  125. package/src/alu/src/index.ts +1 -1
  126. package/src/config.ts +19 -27
  127. package/src/index.ts +6 -11
  128. package/src/rabitq-ivf/README.md +56 -0
  129. package/src/rabitq-ivf/src/database.ts +276 -0
  130. package/src/{rabitq-hnsw → rabitq-ivf}/src/index.ts +2 -5
  131. package/src/rabitq-ivf/src/ivf.ts +1330 -0
  132. package/src/{rabitq-hnsw → rabitq-ivf}/src/prng.ts +1 -1
  133. package/src/store-sqlite.ts +196 -9
  134. package/src/store.ts +8 -32
  135. package/test/08-storage.test.mjs +3 -3
  136. package/test/14-scaling.test.mjs +2 -2
  137. package/test/35-ivf.test.mjs +263 -0
  138. package/test/36-bloom.test.mjs +123 -0
  139. package/dist/src/rabitq-hnsw/src/database.d.ts +0 -202
  140. package/dist/src/rabitq-hnsw/src/database.js +0 -405
  141. package/dist/src/rabitq-hnsw/src/heap.d.ts +0 -22
  142. package/dist/src/rabitq-hnsw/src/heap.js +0 -94
  143. package/dist/src/rabitq-hnsw/src/hnsw.d.ts +0 -125
  144. package/dist/src/rabitq-hnsw/src/hnsw.js +0 -500
  145. package/dist/src/rabitq-hnsw/src/index.d.ts +0 -15
  146. package/dist/src/rabitq-hnsw/src/prng.d.ts +0 -19
  147. package/dist/src/rabitq-hnsw/src/prng.js +0 -38
  148. package/dist/src/rabitq-hnsw/src/rabitq.d.ts +0 -95
  149. package/dist/src/rabitq-hnsw/src/rabitq.js +0 -299
  150. package/dist/src/rabitq-hnsw/src/store.d.ts +0 -162
  151. package/dist/src/rabitq-hnsw/src/store.js +0 -916
  152. package/dist/src/rabitq-hnsw/test/hnsw.test.d.ts +0 -1
  153. package/dist/src/rabitq-hnsw/test/hnsw.test.js +0 -1197
  154. package/src/rabitq-hnsw/README.md +0 -303
  155. package/src/rabitq-hnsw/src/database.ts +0 -492
  156. package/src/rabitq-hnsw/src/heap.ts +0 -90
  157. package/src/rabitq-hnsw/src/hnsw.ts +0 -514
  158. package/src/rabitq-hnsw/src/store.ts +0 -994
  159. package/src/rabitq-hnsw/test/hnsw.test.ts +0 -1213
  160. /package/src/{rabitq-hnsw → rabitq-ivf}/src/rabitq.ts +0 -0
@@ -9,27 +9,15 @@ export declare function canonicalWindows(W: number): [number, number];
9
9
  export declare function chainReach(W: number): number;
10
10
  /** The id of the single-byte leaf at position `p`, or null when that byte was
11
11
  * never interned. */
12
- export declare function leafIdAt(
13
- ctx: MindContext,
14
- bytes: Uint8Array,
15
- p: number,
16
- ): number | null;
12
+ export declare function leafIdAt(ctx: MindContext, bytes: Uint8Array, p: number): number | null;
17
13
  /** The leaf ids of the window `[from, to)`, or null the moment ANY byte in it
18
14
  * is unknown — the all-or-nothing read {@link canonicalChunkId} anchors on. */
19
- export declare function leafIdRun(
20
- ctx: MindContext,
21
- bytes: Uint8Array,
22
- from: number,
23
- to: number,
24
- ): number[] | null;
15
+ export declare function leafIdRun(ctx: MindContext, bytes: Uint8Array, from: number, to: number): number[] | null;
25
16
  /** The leaf ids of the LONGEST KNOWN PREFIX of `bytes` — stops at the first
26
17
  * unknown byte and returns what it has (possibly empty). The caller decides
27
18
  * what a partial prefix means (deposit only interns the whole-stream flat
28
19
  * branch when the prefix covers everything). */
29
- export declare function leafIdPrefix(
30
- ctx: MindContext,
31
- bytes: Uint8Array,
32
- ): number[];
20
+ export declare function leafIdPrefix(ctx: MindContext, bytes: Uint8Array): number[];
33
21
  /** The canonical W-window node ids of a byte stream, offset → id — the
34
22
  * CONTENT-ADDRESSED IDENTITY of every W-sized slice, under which any content
35
23
  * two deposits share IS the same node (hash-consing paid the comparison at
@@ -38,7 +26,4 @@ export declare function leafIdPrefix(
38
26
  * flat branch, has no identity and is skipped. Confluence's meet and CAST's
39
27
  * frame detection both read shared/common content through this — never
40
28
  * through a byte scan. */
41
- export declare function windowIds(
42
- ctx: MindContext,
43
- bytes: Uint8Array,
44
- ): Map<number, number>;
29
+ export declare function windowIds(ctx: MindContext, bytes: Uint8Array): Map<number, number>;
@@ -26,46 +26,44 @@
26
26
  * ids: W−1 and W (the river's grouping quantum and its off-by-one neighbour,
27
27
  * so a form straddling a group boundary is reachable from either cut). */
28
28
  export function canonicalWindows(W) {
29
- return [W - 1, W];
29
+ return [W - 1, W];
30
30
  }
31
31
  /** The READ side's chain reach: how many leaf ids a canonical chain may grow
32
32
  * to from one position — W², the deepest two-level composite the write side's
33
33
  * windows can spell. */
34
34
  export function chainReach(W) {
35
- return W * W;
35
+ return W * W;
36
36
  }
37
37
  /** The id of the single-byte leaf at position `p`, or null when that byte was
38
38
  * never interned. */
39
39
  export function leafIdAt(ctx, bytes, p) {
40
- return ctx.store.findLeaf(bytes.subarray(p, p + 1));
40
+ return ctx.store.findLeaf(bytes.subarray(p, p + 1));
41
41
  }
42
42
  /** The leaf ids of the window `[from, to)`, or null the moment ANY byte in it
43
43
  * is unknown — the all-or-nothing read {@link canonicalChunkId} anchors on. */
44
44
  export function leafIdRun(ctx, bytes, from, to) {
45
- const ids = [];
46
- for (let i = from; i < to; i++) {
47
- const lid = leafIdAt(ctx, bytes, i);
48
- if (lid === null) {
49
- return null;
45
+ const ids = [];
46
+ for (let i = from; i < to; i++) {
47
+ const lid = leafIdAt(ctx, bytes, i);
48
+ if (lid === null)
49
+ return null;
50
+ ids.push(lid);
50
51
  }
51
- ids.push(lid);
52
- }
53
- return ids;
52
+ return ids;
54
53
  }
55
54
  /** The leaf ids of the LONGEST KNOWN PREFIX of `bytes` — stops at the first
56
55
  * unknown byte and returns what it has (possibly empty). The caller decides
57
56
  * what a partial prefix means (deposit only interns the whole-stream flat
58
57
  * branch when the prefix covers everything). */
59
58
  export function leafIdPrefix(ctx, bytes) {
60
- const ids = [];
61
- for (let i = 0; i < bytes.length; i++) {
62
- const lid = leafIdAt(ctx, bytes, i);
63
- if (lid === null) {
64
- break;
59
+ const ids = [];
60
+ for (let i = 0; i < bytes.length; i++) {
61
+ const lid = leafIdAt(ctx, bytes, i);
62
+ if (lid === null)
63
+ break;
64
+ ids.push(lid);
65
65
  }
66
- ids.push(lid);
67
- }
68
- return ids;
66
+ return ids;
69
67
  }
70
68
  /** The canonical W-window node ids of a byte stream, offset → id — the
71
69
  * CONTENT-ADDRESSED IDENTITY of every W-sized slice, under which any content
@@ -76,17 +74,15 @@ export function leafIdPrefix(ctx, bytes) {
76
74
  * frame detection both read shared/common content through this — never
77
75
  * through a byte scan. */
78
76
  export function windowIds(ctx, bytes) {
79
- const W = ctx.space.maxGroup;
80
- const out = new Map();
81
- for (let off = 0; off + W <= bytes.length; off++) {
82
- const ids = leafIdRun(ctx, bytes, off, off + W);
83
- if (ids === null) {
84
- continue;
77
+ const W = ctx.space.maxGroup;
78
+ const out = new Map();
79
+ for (let off = 0; off + W <= bytes.length; off++) {
80
+ const ids = leafIdRun(ctx, bytes, off, off + W);
81
+ if (ids === null)
82
+ continue;
83
+ const wid = ctx.store.findBranch(ids);
84
+ if (wid !== null)
85
+ out.set(off, wid);
85
86
  }
86
- const wid = ctx.store.findBranch(ids);
87
- if (wid !== null) {
88
- out.set(off, wid);
89
- }
90
- }
91
- return out;
87
+ return out;
92
88
  }