@hviana/sema 0.1.3 → 0.1.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/example/demo.js +25 -25
- package/dist/example/train_base.d.ts +21 -19
- package/dist/example/train_base.js +1952 -1684
- package/dist/src/alphabet.d.ts +3 -3
- package/dist/src/alphabet.js +27 -24
- package/dist/src/alu/src/alu.d.ts +194 -169
- package/dist/src/alu/src/alu.js +414 -374
- package/dist/src/alu/src/expr.d.ts +43 -36
- package/dist/src/alu/src/expr.js +278 -252
- package/dist/src/alu/src/index.d.ts +98 -9
- package/dist/src/alu/src/index.js +63 -9
- package/dist/src/alu/src/kernel-arith.d.ts +5 -1
- package/dist/src/alu/src/kernel-arith.js +285 -195
- package/dist/src/alu/src/kernel-bits.d.ts +5 -1
- package/dist/src/alu/src/kernel-bits.js +115 -81
- package/dist/src/alu/src/kernel-logic.js +63 -33
- package/dist/src/alu/src/kernel-nd.js +195 -155
- package/dist/src/alu/src/kernel-numeric.d.ts +80 -16
- package/dist/src/alu/src/kernel-numeric.js +331 -259
- package/dist/src/alu/src/operation.d.ts +132 -112
- package/dist/src/alu/src/operation.js +163 -149
- package/dist/src/alu/src/parser.d.ts +175 -168
- package/dist/src/alu/src/parser.js +421 -382
- package/dist/src/alu/src/resonance.d.ts +25 -16
- package/dist/src/alu/src/resonance.js +56 -49
- package/dist/src/alu/src/text.d.ts +7 -3
- package/dist/src/alu/src/text.js +37 -31
- package/dist/src/alu/src/value.d.ts +14 -14
- package/dist/src/alu/src/value.js +160 -150
- package/dist/src/alu/test/alu.test.js +656 -543
- package/dist/src/bytes.d.ts +5 -1
- package/dist/src/bytes.js +40 -33
- package/dist/src/config.d.ts +102 -102
- package/dist/src/config.js +83 -83
- package/dist/src/derive/src/deduction.d.ts +62 -60
- package/dist/src/derive/src/deduction.js +109 -103
- package/dist/src/derive/src/index.d.ts +7 -1
- package/dist/src/derive/src/priority-queue.d.ts +8 -8
- package/dist/src/derive/src/priority-queue.js +61 -57
- package/dist/src/derive/src/rewrite.d.ts +18 -15
- package/dist/src/derive/src/rewrite.js +67 -59
- package/dist/src/derive/src/trie.d.ts +56 -56
- package/dist/src/derive/src/trie.js +179 -175
- package/dist/src/derive/test/derive.test.js +100 -96
- package/dist/src/extension.d.ts +16 -13
- package/dist/src/geometry.d.ts +42 -17
- package/dist/src/geometry.js +266 -235
- package/dist/src/index.d.ts +17 -2
- package/dist/src/index.js +7 -1
- package/dist/src/ingest-cache.d.ts +30 -25
- package/dist/src/ingest-cache.js +127 -108
- package/dist/src/mind/articulation.d.ts +5 -1
- package/dist/src/mind/articulation.js +112 -77
- package/dist/src/mind/attention.d.ts +108 -40
- package/dist/src/mind/attention.js +871 -749
- package/dist/src/mind/canonical.d.ts +19 -4
- package/dist/src/mind/canonical.js +31 -27
- package/dist/src/mind/graph-search.d.ts +225 -201
- package/dist/src/mind/graph-search.js +821 -742
- package/dist/src/mind/index.d.ts +10 -2
- package/dist/src/mind/junction.d.ts +58 -31
- package/dist/src/mind/junction.js +237 -172
- package/dist/src/mind/learning.d.ts +52 -16
- package/dist/src/mind/learning.js +165 -143
- package/dist/src/mind/match.d.ts +69 -20
- package/dist/src/mind/match.js +318 -259
- package/dist/src/mind/mechanisms/alu.js +16 -16
- package/dist/src/mind/mechanisms/cast.d.ts +13 -9
- package/dist/src/mind/mechanisms/cast.js +456 -363
- package/dist/src/mind/mechanisms/confluence.d.ts +12 -8
- package/dist/src/mind/mechanisms/confluence.js +183 -152
- package/dist/src/mind/mechanisms/cover.d.ts +8 -2
- package/dist/src/mind/mechanisms/cover.js +210 -148
- package/dist/src/mind/mechanisms/extraction.d.ts +34 -8
- package/dist/src/mind/mechanisms/extraction.js +288 -234
- package/dist/src/mind/mechanisms/recall.d.ts +10 -6
- package/dist/src/mind/mechanisms/recall.js +185 -126
- package/dist/src/mind/mind.d.ts +154 -129
- package/dist/src/mind/mind.js +288 -258
- package/dist/src/mind/pipeline-mechanism.d.ts +124 -112
- package/dist/src/mind/pipeline-mechanism.js +172 -161
- package/dist/src/mind/pipeline.d.ts +14 -4
- package/dist/src/mind/pipeline.js +189 -125
- package/dist/src/mind/primitives.d.ts +32 -8
- package/dist/src/mind/primitives.js +117 -99
- package/dist/src/mind/rationale.d.ts +98 -86
- package/dist/src/mind/rationale.js +121 -113
- package/dist/src/mind/reasoning.d.ts +13 -2
- package/dist/src/mind/reasoning.js +166 -129
- package/dist/src/mind/recognition.d.ts +4 -1
- package/dist/src/mind/recognition.js +208 -183
- package/dist/src/mind/resonance.d.ts +22 -5
- package/dist/src/mind/resonance.js +0 -0
- package/dist/src/mind/trace.d.ts +25 -6
- package/dist/src/mind/trace.js +58 -50
- package/dist/src/mind/traverse.d.ts +58 -16
- package/dist/src/mind/traverse.js +357 -304
- package/dist/src/mind/types.d.ts +127 -120
- package/dist/src/mind/types.js +69 -60
- package/dist/src/rabitq-hnsw/src/database.d.ts +179 -177
- package/dist/src/rabitq-hnsw/src/database.js +359 -342
- package/dist/src/rabitq-hnsw/src/heap.d.ts +12 -12
- package/dist/src/rabitq-hnsw/src/heap.js +80 -75
- package/dist/src/rabitq-hnsw/src/hnsw.d.ts +103 -103
- package/dist/src/rabitq-hnsw/src/hnsw.js +454 -428
- package/dist/src/rabitq-hnsw/src/index.d.ts +6 -1
- package/dist/src/rabitq-hnsw/src/prng.d.ts +10 -10
- package/dist/src/rabitq-hnsw/src/prng.js +27 -25
- package/dist/src/rabitq-hnsw/src/rabitq.d.ts +69 -69
- package/dist/src/rabitq-hnsw/src/rabitq.js +262 -246
- package/dist/src/rabitq-hnsw/src/store.d.ts +132 -132
- package/dist/src/rabitq-hnsw/src/store.js +843 -752
- package/dist/src/rabitq-hnsw/test/hnsw.test.js +1054 -805
- package/dist/src/sema.d.ts +35 -0
- package/dist/src/sema.js +77 -0
- package/dist/src/store-sqlite.d.ts +166 -144
- package/dist/src/store-sqlite.js +660 -578
- package/dist/src/store.d.ts +630 -593
- package/dist/src/store.js +1581 -1440
- package/dist/src/vec.d.ts +9 -5
- package/dist/src/vec.js +73 -61
- package/package.json +2 -2
- package/src/sema.ts +102 -0
|
@@ -9,15 +9,27 @@ 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(
|
|
12
|
+
export declare function leafIdAt(
|
|
13
|
+
ctx: MindContext,
|
|
14
|
+
bytes: Uint8Array,
|
|
15
|
+
p: number,
|
|
16
|
+
): number | null;
|
|
13
17
|
/** The leaf ids of the window `[from, to)`, or null the moment ANY byte in it
|
|
14
18
|
* is unknown — the all-or-nothing read {@link canonicalChunkId} anchors on. */
|
|
15
|
-
export declare function leafIdRun(
|
|
19
|
+
export declare function leafIdRun(
|
|
20
|
+
ctx: MindContext,
|
|
21
|
+
bytes: Uint8Array,
|
|
22
|
+
from: number,
|
|
23
|
+
to: number,
|
|
24
|
+
): number[] | null;
|
|
16
25
|
/** The leaf ids of the LONGEST KNOWN PREFIX of `bytes` — stops at the first
|
|
17
26
|
* unknown byte and returns what it has (possibly empty). The caller decides
|
|
18
27
|
* what a partial prefix means (deposit only interns the whole-stream flat
|
|
19
28
|
* branch when the prefix covers everything). */
|
|
20
|
-
export declare function leafIdPrefix(
|
|
29
|
+
export declare function leafIdPrefix(
|
|
30
|
+
ctx: MindContext,
|
|
31
|
+
bytes: Uint8Array,
|
|
32
|
+
): number[];
|
|
21
33
|
/** The canonical W-window node ids of a byte stream, offset → id — the
|
|
22
34
|
* CONTENT-ADDRESSED IDENTITY of every W-sized slice, under which any content
|
|
23
35
|
* two deposits share IS the same node (hash-consing paid the comparison at
|
|
@@ -26,4 +38,7 @@ export declare function leafIdPrefix(ctx: MindContext, bytes: Uint8Array): numbe
|
|
|
26
38
|
* flat branch, has no identity and is skipped. Confluence's meet and CAST's
|
|
27
39
|
* frame detection both read shared/common content through this — never
|
|
28
40
|
* through a byte scan. */
|
|
29
|
-
export declare function windowIds(
|
|
41
|
+
export declare function windowIds(
|
|
42
|
+
ctx: MindContext,
|
|
43
|
+
bytes: Uint8Array,
|
|
44
|
+
): Map<number, number>;
|
|
@@ -26,44 +26,46 @@
|
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
ids.push(lid);
|
|
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;
|
|
51
50
|
}
|
|
52
|
-
|
|
51
|
+
ids.push(lid);
|
|
52
|
+
}
|
|
53
|
+
return ids;
|
|
53
54
|
}
|
|
54
55
|
/** The leaf ids of the LONGEST KNOWN PREFIX of `bytes` — stops at the first
|
|
55
56
|
* unknown byte and returns what it has (possibly empty). The caller decides
|
|
56
57
|
* what a partial prefix means (deposit only interns the whole-stream flat
|
|
57
58
|
* branch when the prefix covers everything). */
|
|
58
59
|
export function leafIdPrefix(ctx, bytes) {
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
ids.push(lid);
|
|
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;
|
|
65
65
|
}
|
|
66
|
-
|
|
66
|
+
ids.push(lid);
|
|
67
|
+
}
|
|
68
|
+
return ids;
|
|
67
69
|
}
|
|
68
70
|
/** The canonical W-window node ids of a byte stream, offset → id — the
|
|
69
71
|
* CONTENT-ADDRESSED IDENTITY of every W-sized slice, under which any content
|
|
@@ -74,15 +76,17 @@ export function leafIdPrefix(ctx, bytes) {
|
|
|
74
76
|
* frame detection both read shared/common content through this — never
|
|
75
77
|
* through a byte scan. */
|
|
76
78
|
export function windowIds(ctx, bytes) {
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
const wid = ctx.store.findBranch(ids);
|
|
84
|
-
if (wid !== null)
|
|
85
|
-
out.set(off, wid);
|
|
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;
|
|
86
85
|
}
|
|
87
|
-
|
|
86
|
+
const wid = ctx.store.findBranch(ids);
|
|
87
|
+
if (wid !== null) {
|
|
88
|
+
out.set(off, wid);
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
return out;
|
|
88
92
|
}
|