@ainize/core 0.1.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 (75) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +20 -0
  3. package/dist/ain-ledger.d.ts +191 -0
  4. package/dist/ain-ledger.d.ts.map +1 -0
  5. package/dist/ain-ledger.js +714 -0
  6. package/dist/ain-ledger.js.map +1 -0
  7. package/dist/browser.d.ts +15 -0
  8. package/dist/browser.d.ts.map +1 -0
  9. package/dist/browser.js +16 -0
  10. package/dist/browser.js.map +1 -0
  11. package/dist/bytes.d.ts +3 -0
  12. package/dist/bytes.d.ts.map +1 -0
  13. package/dist/bytes.js +14 -0
  14. package/dist/bytes.js.map +1 -0
  15. package/dist/canonical.d.ts +5 -0
  16. package/dist/canonical.d.ts.map +1 -0
  17. package/dist/canonical.js +70 -0
  18. package/dist/canonical.js.map +1 -0
  19. package/dist/catalog.d.ts +181 -0
  20. package/dist/catalog.d.ts.map +1 -0
  21. package/dist/catalog.js +496 -0
  22. package/dist/catalog.js.map +1 -0
  23. package/dist/config-schema.d.ts +222 -0
  24. package/dist/config-schema.d.ts.map +1 -0
  25. package/dist/config-schema.js +302 -0
  26. package/dist/config-schema.js.map +1 -0
  27. package/dist/config.d.ts +128 -0
  28. package/dist/config.d.ts.map +1 -0
  29. package/dist/config.js +330 -0
  30. package/dist/config.js.map +1 -0
  31. package/dist/events.d.ts +14 -0
  32. package/dist/events.d.ts.map +1 -0
  33. package/dist/events.js +20 -0
  34. package/dist/events.js.map +1 -0
  35. package/dist/identity.d.ts +15 -0
  36. package/dist/identity.d.ts.map +1 -0
  37. package/dist/identity.js +59 -0
  38. package/dist/identity.js.map +1 -0
  39. package/dist/index.d.ts +17 -0
  40. package/dist/index.d.ts.map +1 -0
  41. package/dist/index.js +17 -0
  42. package/dist/index.js.map +1 -0
  43. package/dist/ledger.d.ts +134 -0
  44. package/dist/ledger.d.ts.map +1 -0
  45. package/dist/ledger.js +2 -0
  46. package/dist/ledger.js.map +1 -0
  47. package/dist/lineage.d.ts +63 -0
  48. package/dist/lineage.d.ts.map +1 -0
  49. package/dist/lineage.js +156 -0
  50. package/dist/lineage.js.map +1 -0
  51. package/dist/local-ledger.d.ts +74 -0
  52. package/dist/local-ledger.d.ts.map +1 -0
  53. package/dist/local-ledger.js +229 -0
  54. package/dist/local-ledger.js.map +1 -0
  55. package/dist/npz.d.ts +107 -0
  56. package/dist/npz.d.ts.map +1 -0
  57. package/dist/npz.js +502 -0
  58. package/dist/npz.js.map +1 -0
  59. package/dist/ops.d.ts +65 -0
  60. package/dist/ops.d.ts.map +1 -0
  61. package/dist/ops.js +9 -0
  62. package/dist/ops.js.map +1 -0
  63. package/dist/teach-auth.d.ts +19 -0
  64. package/dist/teach-auth.d.ts.map +1 -0
  65. package/dist/teach-auth.js +33 -0
  66. package/dist/teach-auth.js.map +1 -0
  67. package/dist/types.d.ts +1096 -0
  68. package/dist/types.d.ts.map +1 -0
  69. package/dist/types.js +98 -0
  70. package/dist/types.js.map +1 -0
  71. package/dist/x402.d.ts +35 -0
  72. package/dist/x402.d.ts.map +1 -0
  73. package/dist/x402.js +84 -0
  74. package/dist/x402.js.map +1 -0
  75. package/package.json +49 -0
package/dist/npz.js ADDED
@@ -0,0 +1,502 @@
1
+ /**
2
+ * Minimal NumPy .npz reader — enough to read a knowledge patch:
3
+ * addrs: int64[N], before: float32[N, D], after: float32[N, D]
4
+ * Supports ZIP_STORED and ZIP_DEFLATED members. Reads only what is asked for,
5
+ * so a 350 MB patch can be inspected (row count, address set) cheaply.
6
+ */
7
+ import { openSync, readSync, closeSync, fstatSync, writeFileSync } from 'node:fs';
8
+ import { inflateRawSync } from 'node:zlib';
9
+ import { bf16Bits, preStateSha256 } from './lineage.js';
10
+ function readAt(fd, offset, length) {
11
+ const buf = Buffer.alloc(length);
12
+ let done = 0;
13
+ while (done < length) {
14
+ const n = readSync(fd, buf, done, length - done, offset + done);
15
+ if (n <= 0)
16
+ break;
17
+ done += n;
18
+ }
19
+ return buf.subarray(0, done);
20
+ }
21
+ function readCentralDirectory(fd, fileSize) {
22
+ // End of central directory record: search last 64KB+22 bytes for signature 0x06054b50.
23
+ const tailLen = Math.min(fileSize, 65557);
24
+ const tail = readAt(fd, fileSize - tailLen, tailLen);
25
+ let eocd = -1;
26
+ for (let i = tail.length - 22; i >= 0; i--) {
27
+ if (tail.readUInt32LE(i) === 0x06054b50) {
28
+ eocd = i;
29
+ break;
30
+ }
31
+ }
32
+ if (eocd < 0)
33
+ throw new Error('npz: end of central directory not found');
34
+ let cdSize = tail.readUInt32LE(eocd + 12);
35
+ let cdOffset = tail.readUInt32LE(eocd + 16);
36
+ let total = tail.readUInt16LE(eocd + 10);
37
+ // ZIP64?
38
+ if (cdOffset === 0xffffffff || cdSize === 0xffffffff || total === 0xffff) {
39
+ const locIdx = eocd - 20;
40
+ if (locIdx >= 0 && tail.readUInt32LE(locIdx) === 0x07064b50) {
41
+ const z64Off = Number(tail.readBigUInt64LE(locIdx + 8));
42
+ const z64 = readAt(fd, z64Off, 56);
43
+ if (z64.readUInt32LE(0) !== 0x06064b50)
44
+ throw new Error('npz: bad zip64 eocd');
45
+ total = Number(z64.readBigUInt64LE(32));
46
+ cdSize = Number(z64.readBigUInt64LE(40));
47
+ cdOffset = Number(z64.readBigUInt64LE(48));
48
+ }
49
+ }
50
+ const cd = readAt(fd, cdOffset, cdSize);
51
+ const entries = [];
52
+ let p = 0;
53
+ for (let i = 0; i < total && p + 46 <= cd.length; i++) {
54
+ if (cd.readUInt32LE(p) !== 0x02014b50)
55
+ break;
56
+ const method = cd.readUInt16LE(p + 10);
57
+ let compressedSize = cd.readUInt32LE(p + 20);
58
+ let uncompressedSize = cd.readUInt32LE(p + 24);
59
+ const nameLen = cd.readUInt16LE(p + 28);
60
+ const extraLen = cd.readUInt16LE(p + 30);
61
+ const commentLen = cd.readUInt16LE(p + 32);
62
+ let localHeaderOffset = cd.readUInt32LE(p + 42);
63
+ const name = cd.subarray(p + 46, p + 46 + nameLen).toString('utf8');
64
+ // zip64 extra field
65
+ let ep = p + 46 + nameLen;
66
+ const extraEnd = ep + extraLen;
67
+ while (ep + 4 <= extraEnd) {
68
+ const id = cd.readUInt16LE(ep);
69
+ const sz = cd.readUInt16LE(ep + 2);
70
+ if (id === 0x0001) {
71
+ let q = ep + 4;
72
+ if (uncompressedSize === 0xffffffff) {
73
+ uncompressedSize = Number(cd.readBigUInt64LE(q));
74
+ q += 8;
75
+ }
76
+ if (compressedSize === 0xffffffff) {
77
+ compressedSize = Number(cd.readBigUInt64LE(q));
78
+ q += 8;
79
+ }
80
+ if (localHeaderOffset === 0xffffffff) {
81
+ localHeaderOffset = Number(cd.readBigUInt64LE(q));
82
+ q += 8;
83
+ }
84
+ }
85
+ ep += 4 + sz;
86
+ }
87
+ entries.push({ name, method, compressedSize, uncompressedSize, localHeaderOffset });
88
+ p += 46 + nameLen + extraLen + commentLen;
89
+ }
90
+ return entries;
91
+ }
92
+ function entryData(fd, e) {
93
+ const lh = readAt(fd, e.localHeaderOffset, 30);
94
+ if (lh.readUInt32LE(0) !== 0x04034b50)
95
+ throw new Error('npz: bad local header');
96
+ const nameLen = lh.readUInt16LE(26);
97
+ const extraLen = lh.readUInt16LE(28);
98
+ const start = e.localHeaderOffset + 30 + nameLen + extraLen;
99
+ const raw = readAt(fd, start, e.compressedSize);
100
+ if (e.method === 0)
101
+ return raw;
102
+ if (e.method === 8)
103
+ return inflateRawSync(raw);
104
+ throw new Error(`npz: unsupported compression method ${e.method}`);
105
+ }
106
+ export function parseNpyHeader(buf) {
107
+ if (buf.subarray(0, 6).toString('latin1') !== '\x93NUMPY')
108
+ throw new Error('npy: bad magic');
109
+ const major = buf[6];
110
+ let headerLen;
111
+ let off;
112
+ if (major === 1) {
113
+ headerLen = buf.readUInt16LE(8);
114
+ off = 10;
115
+ }
116
+ else {
117
+ headerLen = buf.readUInt32LE(8);
118
+ off = 12;
119
+ }
120
+ const header = buf.subarray(off, off + headerLen).toString('latin1');
121
+ const descr = /'descr':\s*'([^']+)'/.exec(header)?.[1] ?? '';
122
+ const fortranOrder = /'fortran_order':\s*(True|False)/.exec(header)?.[1] === 'True';
123
+ const shapeStr = /'shape':\s*\(([^)]*)\)/.exec(header)?.[1] ?? '';
124
+ const shape = shapeStr.split(',').map((s) => s.trim()).filter(Boolean).map(Number);
125
+ return { descr, fortranOrder, shape, dataOffset: off + headerLen };
126
+ }
127
+ /** Inspect an .npz without loading array bodies (except headers). */
128
+ export function inspectNpz(path) {
129
+ const fd = openSync(path, 'r');
130
+ try {
131
+ const size = fstatSync(fd).size;
132
+ const entries = readCentralDirectory(fd, size);
133
+ const members = entries.map((e) => {
134
+ // Only need the first ~256 bytes for the header; stored members can be sliced, deflated must be inflated.
135
+ let head;
136
+ if (e.method === 0) {
137
+ const lh = readAt(fd, e.localHeaderOffset, 30);
138
+ const nameLen = lh.readUInt16LE(26);
139
+ const extraLen = lh.readUInt16LE(28);
140
+ head = readAt(fd, e.localHeaderOffset + 30 + nameLen + extraLen, Math.min(e.uncompressedSize, 4096));
141
+ }
142
+ else {
143
+ head = entryData(fd, e).subarray(0, 4096);
144
+ }
145
+ const h = parseNpyHeader(head);
146
+ return { name: e.name.replace(/\.npy$/, ''), descr: h.descr, shape: h.shape, bytes: e.uncompressedSize };
147
+ });
148
+ const addrs = members.find((m) => m.name === 'addrs');
149
+ const after = members.find((m) => m.name === 'after');
150
+ return {
151
+ members,
152
+ rows: addrs?.shape[0] ?? 0,
153
+ rowDim: after?.shape[1] ?? 0,
154
+ };
155
+ }
156
+ finally {
157
+ closeSync(fd);
158
+ }
159
+ }
160
+ /** Load the int64 address array as BigInt64Array (copy). */
161
+ export function readNpzAddrs(path) {
162
+ const fd = openSync(path, 'r');
163
+ try {
164
+ const size = fstatSync(fd).size;
165
+ const entries = readCentralDirectory(fd, size);
166
+ const e = entries.find((x) => x.name === 'addrs.npy');
167
+ if (!e)
168
+ throw new Error('npz: no addrs member');
169
+ const data = entryData(fd, e);
170
+ const h = parseNpyHeader(data);
171
+ if (!/^[<|=]i8$/.test(h.descr))
172
+ throw new Error(`npz: addrs dtype ${h.descr} unsupported (expected int64)`);
173
+ const body = data.subarray(h.dataOffset);
174
+ const aligned = Buffer.alloc(body.length);
175
+ body.copy(aligned);
176
+ return new BigInt64Array(aligned.buffer, aligned.byteOffset, body.length / 8);
177
+ }
178
+ finally {
179
+ closeSync(fd);
180
+ }
181
+ }
182
+ /** Sorted, de-duplicated address set. */
183
+ export function addressSet(addrs) {
184
+ const copy = BigInt64Array.from(addrs);
185
+ copy.sort();
186
+ let w = 0;
187
+ for (let i = 0; i < copy.length; i++) {
188
+ if (i === 0 || copy[i] !== copy[i - 1])
189
+ copy[w++] = copy[i];
190
+ }
191
+ return copy.subarray(0, w);
192
+ }
193
+ /** |A ∩ B| for two sorted address sets (도 6 conflict test). */
194
+ export function intersectionCount(a, b) {
195
+ let i = 0, j = 0, n = 0;
196
+ while (i < a.length && j < b.length) {
197
+ if (a[i] === b[j]) {
198
+ n++;
199
+ i++;
200
+ j++;
201
+ }
202
+ else if (a[i] < b[j])
203
+ i++;
204
+ else
205
+ j++;
206
+ }
207
+ return n;
208
+ }
209
+ /** Bottom-k MinHash-style sketch of an address set for cheap remote pre-checks. */
210
+ export function addressSketch(addrs, k = 64) {
211
+ // Mix with a fixed 64-bit multiplier and keep the k smallest 32-bit values.
212
+ const MUL = 0x9e3779b97f4a7c15n;
213
+ const MASK = (1n << 64n) - 1n;
214
+ const heap = [];
215
+ for (const a of addrs) {
216
+ const h = Number(((BigInt.asUintN(64, a) * MUL) & MASK) >> 32n);
217
+ if (heap.length < k) {
218
+ heap.push(h);
219
+ if (heap.length === k)
220
+ heap.sort((x, y) => x - y);
221
+ }
222
+ else if (h < heap[k - 1]) {
223
+ let pos = k - 1;
224
+ while (pos > 0 && heap[pos - 1] > h) {
225
+ heap[pos] = heap[pos - 1];
226
+ pos--;
227
+ }
228
+ heap[pos] = h;
229
+ }
230
+ }
231
+ return heap.length < k ? heap.sort((x, y) => x - y) : heap;
232
+ }
233
+ /** Estimated Jaccard similarity from two bottom-k sketches. */
234
+ export function sketchJaccard(a, b) {
235
+ if (!a.length || !b.length)
236
+ return 0;
237
+ const k = Math.min(a.length, b.length);
238
+ const union = Array.from(new Set([...a, ...b])).sort((x, y) => x - y).slice(0, k);
239
+ const setB = new Set(b);
240
+ let both = 0;
241
+ for (const v of union)
242
+ if (a.includes(v) && setB.has(v))
243
+ both++;
244
+ return both / k;
245
+ }
246
+ // ---------------------------------------------------------------- generic member access + minimal writer (teach mode)
247
+ /** Read one array member of an .npz (header + raw little-endian body). Used by the teach stub to copy fixture rows. */
248
+ export function readNpzMember(path, name) {
249
+ const fd = openSync(path, 'r');
250
+ try {
251
+ const size = fstatSync(fd).size;
252
+ const entries = readCentralDirectory(fd, size);
253
+ const e = entries.find((x) => x.name === `${name}.npy` || x.name === name);
254
+ if (!e)
255
+ throw new Error(`npz: no ${name} member`);
256
+ const data = entryData(fd, e);
257
+ const header = parseNpyHeader(data);
258
+ const body = Buffer.alloc(data.length - header.dataOffset);
259
+ data.copy(body, 0, header.dataOffset);
260
+ return { header, body };
261
+ }
262
+ finally {
263
+ closeSync(fd);
264
+ }
265
+ }
266
+ function crc32(buf) {
267
+ let c;
268
+ const table = crc32.table ?? (crc32.table = (() => { const t = new Int32Array(256); for (let n = 0; n < 256; n++) {
269
+ c = n;
270
+ for (let k = 0; k < 8; k++)
271
+ c = c & 1 ? 0xedb88320 ^ (c >>> 1) : c >>> 1;
272
+ t[n] = c;
273
+ } return t; })());
274
+ let crc = -1;
275
+ for (let i = 0; i < buf.length; i++)
276
+ crc = table[(crc ^ buf[i]) & 0xff] ^ (crc >>> 8);
277
+ return (crc ^ -1) >>> 0;
278
+ }
279
+ crc32.table = null;
280
+ function npyBytes(m) {
281
+ const shape = m.shape.length === 1 ? `(${m.shape[0]},)` : `(${m.shape.join(', ')})`;
282
+ let header = `{'descr': '${m.descr}', 'fortran_order': False, 'shape': ${shape}, }`;
283
+ const pad = 64 - ((10 + header.length + 1) % 64);
284
+ header += ' '.repeat(pad) + '\n';
285
+ const h = Buffer.alloc(10 + header.length);
286
+ h.write('\x93NUMPY', 0, 'latin1');
287
+ h[6] = 1;
288
+ h[7] = 0;
289
+ h.writeUInt16LE(header.length, 8);
290
+ h.write(header, 10, 'latin1');
291
+ return Buffer.concat([h, m.body]);
292
+ }
293
+ /**
294
+ * Write a minimal .npz (ZIP_STORED members, npy v1) — enough for `inspectNpz` / `readNpzAddrs` / numpy.load.
295
+ * Only the teach stub backend uses it (a valid 1-row knowledge file when no fixture is available).
296
+ */
297
+ export function writeNpz(path, members) {
298
+ const locals = [];
299
+ const centrals = [];
300
+ let offset = 0;
301
+ for (const m of members) {
302
+ const name = Buffer.from(`${m.name}.npy`, 'utf8');
303
+ const data = npyBytes(m);
304
+ const crc = crc32(data);
305
+ const lh = Buffer.alloc(30);
306
+ lh.writeUInt32LE(0x04034b50, 0);
307
+ lh.writeUInt16LE(20, 4);
308
+ lh.writeUInt16LE(0, 6);
309
+ lh.writeUInt16LE(0, 8);
310
+ lh.writeUInt16LE(0, 10);
311
+ lh.writeUInt16LE(0, 12);
312
+ lh.writeUInt32LE(crc, 14);
313
+ lh.writeUInt32LE(data.length, 18);
314
+ lh.writeUInt32LE(data.length, 22);
315
+ lh.writeUInt16LE(name.length, 26);
316
+ lh.writeUInt16LE(0, 28);
317
+ const ch = Buffer.alloc(46);
318
+ ch.writeUInt32LE(0x02014b50, 0);
319
+ ch.writeUInt16LE(20, 4);
320
+ ch.writeUInt16LE(20, 6);
321
+ ch.writeUInt16LE(0, 8);
322
+ ch.writeUInt16LE(0, 10);
323
+ ch.writeUInt16LE(0, 12);
324
+ ch.writeUInt16LE(0, 14);
325
+ ch.writeUInt32LE(crc, 16);
326
+ ch.writeUInt32LE(data.length, 20);
327
+ ch.writeUInt32LE(data.length, 24);
328
+ ch.writeUInt16LE(name.length, 28);
329
+ ch.writeUInt16LE(0, 30);
330
+ ch.writeUInt16LE(0, 32);
331
+ ch.writeUInt16LE(0, 34);
332
+ ch.writeUInt16LE(0, 36);
333
+ ch.writeUInt32LE(0, 38);
334
+ ch.writeUInt32LE(offset, 42);
335
+ locals.push(lh, name, data);
336
+ centrals.push(ch, name);
337
+ offset += lh.length + name.length + data.length;
338
+ }
339
+ const cd = Buffer.concat(centrals);
340
+ const eocd = Buffer.alloc(22);
341
+ eocd.writeUInt32LE(0x06054b50, 0);
342
+ eocd.writeUInt16LE(0, 4);
343
+ eocd.writeUInt16LE(0, 6);
344
+ eocd.writeUInt16LE(members.length, 8);
345
+ eocd.writeUInt16LE(members.length, 10);
346
+ eocd.writeUInt32LE(cd.length, 12);
347
+ eocd.writeUInt32LE(offset, 16);
348
+ eocd.writeUInt16LE(0, 20);
349
+ writeFileSync(path, Buffer.concat([...locals, cd, eocd]));
350
+ }
351
+ /**
352
+ * Row-level agreement between two knowledge files (§9 step 2, and the evidence behind "these two really do
353
+ * disagree"): over the addresses both files touch, how many hold bf16-identical `after` values.
354
+ *
355
+ * bf16 is the comparison unit because that is what the table stores (patch_hook.py:98) — two files whose float32
356
+ * `after` differ in the dropped 16 bits are the same row as far as the model is concerned.
357
+ */
358
+ export function valuesEqualCount(pathA, pathB) {
359
+ const a = loadPair(pathA), b = loadPair(pathB);
360
+ const dim = Math.min(a.dim, b.dim);
361
+ const index = new Map();
362
+ for (let i = 0; i < a.addrs.length; i++)
363
+ index.set(String(a.addrs[i]), i);
364
+ let shared = 0, equal = 0;
365
+ for (let j = 0; j < b.addrs.length; j++) {
366
+ const i = index.get(String(b.addrs[j]));
367
+ if (i === undefined)
368
+ continue;
369
+ shared++;
370
+ let same = true;
371
+ for (let d = 0; d < dim && same; d++)
372
+ same = bf16Bits(a.after[i * a.dim + d]) === bf16Bits(b.after[j * b.dim + d]);
373
+ if (same)
374
+ equal++;
375
+ }
376
+ return { shared, equal, differ: shared - equal, dim };
377
+ }
378
+ export function compareNpz(pathA, pathB) {
379
+ const a = loadPair(pathA), b = loadPair(pathB);
380
+ const dim = Math.min(a.dim, b.dim);
381
+ const index = new Map();
382
+ for (let i = 0; i < a.addrs.length; i++)
383
+ if (!index.has(String(a.addrs[i])))
384
+ index.set(String(a.addrs[i]), i);
385
+ let shared = 0, equal = 0, opposing = 0, beforeDiffers = 0;
386
+ const seen = new Set();
387
+ for (let j = 0; j < b.addrs.length; j++) {
388
+ const key = String(b.addrs[j]);
389
+ const i = index.get(key);
390
+ if (i === undefined)
391
+ continue;
392
+ if (seen.has(key))
393
+ continue;
394
+ seen.add(key);
395
+ shared++;
396
+ let same = true, bothWrote = true, sameBefore = true;
397
+ for (let d = 0; d < dim; d++) {
398
+ const av = bf16Bits(a.after[i * a.dim + d]), bv = bf16Bits(b.after[j * b.dim + d]);
399
+ if (av !== bv)
400
+ same = false;
401
+ if (bf16Bits(a.before[i * a.dim + d]) !== bf16Bits(b.before[j * b.dim + d]))
402
+ sameBefore = false;
403
+ }
404
+ if (!sameBefore)
405
+ beforeDiffers++;
406
+ if (same) {
407
+ equal++;
408
+ continue;
409
+ }
410
+ // both files changed this row relative to their own `before`
411
+ let aMoved = false, bMoved = false;
412
+ for (let d = 0; d < dim && !(aMoved && bMoved); d++) {
413
+ if (bf16Bits(a.after[i * a.dim + d]) !== bf16Bits(a.before[i * a.dim + d]))
414
+ aMoved = true;
415
+ if (bf16Bits(b.after[j * b.dim + d]) !== bf16Bits(b.before[j * b.dim + d]))
416
+ bMoved = true;
417
+ }
418
+ bothWrote = aMoved && bMoved;
419
+ if (bothWrote)
420
+ opposing++;
421
+ }
422
+ return {
423
+ a_rows: a.addrs.length, b_rows: b.addrs.length,
424
+ a_only: a.addrs.length - shared, b_only: b.addrs.length - shared,
425
+ shared, equal, disagree: shared - equal, opposing, before_differs: beforeDiffers, dim,
426
+ };
427
+ }
428
+ /**
429
+ * **T0 “Just combine”** (design §9 step 3): the row UNION of two knowledge files, written as a new .npz — no training,
430
+ * no GPU, seconds.
431
+ *
432
+ * It is allowed only when the two files cannot contradict each other on the model: either their address sets are
433
+ * disjoint, or every shared address holds a bf16-identical `after` AND a bf16-identical `before`. Anything else throws
434
+ * — **nothing is averaged and nothing is added** (design §9 “Forbidden”, F8): a row two files disagree about has to be
435
+ * retrained (T1) or rebuilt (T2), because a value neither file measured is not knowledge.
436
+ *
437
+ * `extra` members (a job marker, `meta`) are written beside `addrs`/`before`/`after` exactly as given.
438
+ */
439
+ export function unionNpz(dest, pathA, pathB, extra = []) {
440
+ const a = loadPair(pathA), b = loadPair(pathB);
441
+ if (a.dim !== b.dim)
442
+ throw new Error(`union_refused: dim_mismatch (${a.dim} vs ${b.dim})`);
443
+ const D = a.dim;
444
+ const index = new Map();
445
+ for (let i = 0; i < a.addrs.length; i++)
446
+ if (!index.has(String(a.addrs[i])))
447
+ index.set(String(a.addrs[i]), i);
448
+ let shared = 0;
449
+ const take = [];
450
+ for (let i = 0; i < a.addrs.length; i++)
451
+ take.push({ addr: a.addrs[i], from: 'a', at: i });
452
+ for (let j = 0; j < b.addrs.length; j++) {
453
+ const i = index.get(String(b.addrs[j]));
454
+ if (i === undefined) {
455
+ take.push({ addr: b.addrs[j], from: 'b', at: j });
456
+ continue;
457
+ }
458
+ shared++;
459
+ for (let d = 0; d < D; d++) {
460
+ if (bf16Bits(a.after[i * D + d]) !== bf16Bits(b.after[j * D + d]))
461
+ throw new Error(`union_refused: rows_disagree at address ${a.addrs[i]}`);
462
+ if (bf16Bits(a.before[i * D + d]) !== bf16Bits(b.before[j * D + d]))
463
+ throw new Error(`union_refused: before_differs at address ${a.addrs[i]}`);
464
+ }
465
+ }
466
+ const N = take.length;
467
+ const addrs = Buffer.alloc(8 * N);
468
+ const before = Buffer.alloc(4 * D * N);
469
+ const after = Buffer.alloc(4 * D * N);
470
+ for (const [r, t] of take.entries()) {
471
+ const src = t.from === 'a' ? a : b;
472
+ addrs.writeBigInt64LE(t.addr, 8 * r);
473
+ for (let d = 0; d < D; d++) {
474
+ before.writeFloatLE(src.before[t.at * D + d], 4 * (D * r + d));
475
+ after.writeFloatLE(src.after[t.at * D + d], 4 * (D * r + d));
476
+ }
477
+ }
478
+ const pre = preStateSha256(new BigInt64Array(addrs.buffer, addrs.byteOffset, N), new Float32Array(before.buffer, before.byteOffset, N * D), D);
479
+ writeNpz(dest, [
480
+ { name: 'addrs', descr: '<i8', shape: [N], body: addrs },
481
+ { name: 'before', descr: '<f4', shape: [N, D], body: before },
482
+ { name: 'after', descr: '<f4', shape: [N, D], body: after },
483
+ ...extra,
484
+ ]);
485
+ return { rows: N, a_rows: a.addrs.length, b_rows: b.addrs.length, shared, pre_state_sha256: pre, dim: D };
486
+ }
487
+ /** `addrs` + both matrices of one file. */
488
+ function loadPair(path) {
489
+ const addrs = readNpzAddrs(path);
490
+ const read = (name) => {
491
+ const { header, body } = readNpzMember(path, name);
492
+ if (!/^[<|=]f4$/.test(header.descr))
493
+ throw new Error(`npz: ${name} dtype ${header.descr} unsupported (expected float32)`);
494
+ const aligned = Buffer.alloc(body.length);
495
+ body.copy(aligned);
496
+ return { arr: new Float32Array(aligned.buffer, aligned.byteOffset, body.length / 4), dim: header.shape[1] ?? 1 };
497
+ };
498
+ const b = read('before');
499
+ const a = read('after');
500
+ return { addrs, before: b.arr, after: a.arr, dim: Math.min(a.dim, b.dim) };
501
+ }
502
+ //# sourceMappingURL=npz.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"npz.js","sourceRoot":"","sources":["../src/npz.ts"],"names":[],"mappings":"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"}
package/dist/ops.d.ts ADDED
@@ -0,0 +1,65 @@
1
+ /**
2
+ * Shapes an operator's tools read back from a node — over HTTP, or in-process when the tool IS the node.
3
+ *
4
+ * These live in core because the CLI receives every one of them as JSON from `/api/me/blobs`, `/api/status`
5
+ * and friends. Importing them from `@ainize/node` made a terminal that only ever talks to a remote node build
6
+ * against express, sqlite and the trainer to name the type of a response it had already parsed.
7
+ */
8
+ export interface DiskReport {
9
+ /** Absolute path of the data directory these numbers describe. */
10
+ path: string;
11
+ /** Patch bodies (.npz) fetched or imported into `<dataDir>/blobs`. */
12
+ blobs: number;
13
+ /** Published training sets under `<dataDir>/blobs/datasets`. */
14
+ datasets: number;
15
+ /** Whatever multer wrote for uploads (`<dataDir>/uploads`). */
16
+ uploads: number;
17
+ /** node.sqlite + its WAL/SHM sidecars, and the local ledger file when there is one. */
18
+ db: number;
19
+ /** AINIZE_HOME/node.log, when the node knows its home. */
20
+ log: number;
21
+ /** blobs + datasets + uploads + db + log. */
22
+ total: number;
23
+ /** Free bytes on the filesystem holding the data directory (null when it cannot be read). */
24
+ free: number | null;
25
+ /** Total bytes of that filesystem (null when it cannot be read). */
26
+ size: number | null;
27
+ /** How many body files are in the blob store. */
28
+ blob_files: number;
29
+ /**
30
+ * Bodies this node neither authored nor bought — verification leftovers, re-fetchable from any peer that holds
31
+ * them. What `ainize gc` would remove. Filled in by the market (it needs the catalogue); zero here on its own.
32
+ */
33
+ reclaimable_files: number;
34
+ reclaimable_bytes: number;
35
+ }
36
+ export interface GcCandidate {
37
+ patch_id: string;
38
+ sha256: string;
39
+ name: string;
40
+ status: string;
41
+ bytes: number;
42
+ path: string;
43
+ /** Why this node has it at all — always 'verification' today; the field exists so a reason can never be implied. */
44
+ reason: 'verification';
45
+ /** Last time this node touched the body (import time). */
46
+ imported_at: number;
47
+ /** Peers advertising the same body: how many places it can be fetched back from. */
48
+ holders: number;
49
+ }
50
+ export interface SeedOptions {
51
+ repo?: string;
52
+ synthetic?: boolean;
53
+ real?: boolean;
54
+ prototype?: boolean;
55
+ announce?: boolean;
56
+ versions?: boolean;
57
+ }
58
+ export interface SeedReport {
59
+ imported_prototype: number;
60
+ created: string[];
61
+ branches: string[];
62
+ skipped: string[];
63
+ missing: string[];
64
+ }
65
+ //# sourceMappingURL=ops.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ops.d.ts","sourceRoot":"","sources":["../src/ops.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,MAAM,WAAW,UAAU;IACzB,kEAAkE;IAClE,IAAI,EAAE,MAAM,CAAC;IACb,sEAAsE;IACtE,KAAK,EAAE,MAAM,CAAC;IACd,gEAAgE;IAChE,QAAQ,EAAE,MAAM,CAAC;IACjB,+DAA+D;IAC/D,OAAO,EAAE,MAAM,CAAC;IAChB,uFAAuF;IACvF,EAAE,EAAE,MAAM,CAAC;IACX,0DAA0D;IAC1D,GAAG,EAAE,MAAM,CAAC;IACZ,6CAA6C;IAC7C,KAAK,EAAE,MAAM,CAAC;IACd,6FAA6F;IAC7F,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,oEAAoE;IACpE,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,iDAAiD;IACjD,UAAU,EAAE,MAAM,CAAC;IACnB;;;OAGG;IACH,iBAAiB,EAAE,MAAM,CAAC;IAC1B,iBAAiB,EAAE,MAAM,CAAC;CAC3B;AAED,MAAM,WAAW,WAAW;IAC1B,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,oHAAoH;IACpH,MAAM,EAAE,cAAc,CAAC;IACvB,0DAA0D;IAC1D,WAAW,EAAE,MAAM,CAAC;IACpB,oFAAoF;IACpF,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,WAAW;IAAG,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,OAAO,CAAC;IAAC,IAAI,CAAC,EAAE,OAAO,CAAC;IAAC,SAAS,CAAC,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;CAAE;AAEjJ,MAAM,WAAW,UAAU;IAAG,kBAAkB,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,EAAE,CAAC;IAAC,QAAQ,EAAE,MAAM,EAAE,CAAC;IAAC,OAAO,EAAE,MAAM,EAAE,CAAC;IAAC,OAAO,EAAE,MAAM,EAAE,CAAC;CAAE"}
package/dist/ops.js ADDED
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Shapes an operator's tools read back from a node — over HTTP, or in-process when the tool IS the node.
3
+ *
4
+ * These live in core because the CLI receives every one of them as JSON from `/api/me/blobs`, `/api/status`
5
+ * and friends. Importing them from `@ainize/node` made a terminal that only ever talks to a remote node build
6
+ * against express, sqlite and the trainer to name the type of a response it had already parsed.
7
+ */
8
+ export {};
9
+ //# sourceMappingURL=ops.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ops.js","sourceRoot":"","sources":["../src/ops.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG"}
@@ -0,0 +1,19 @@
1
+ export declare const TEACH_AUTH_SKEW_MS: number;
2
+ export declare const TEACH_AUTH_V2 = "v2";
3
+ export interface TeachAuthTarget {
4
+ node: string;
5
+ method: string;
6
+ path: string;
7
+ body?: string | Uint8Array | null;
8
+ purpose?: string;
9
+ }
10
+ /** The string a v2 client signs. `path` is the request target as sent (path + query); the body hash is appended only when a body is sent. */
11
+ export declare function teachAuthMessage(t: TeachAuthTarget & {
12
+ ts: number;
13
+ }): string;
14
+ /** Build a v2 header for one request (CLI / scripts; the browser helper mirrors this). */
15
+ export declare function teachAuthHeaderFor(key: {
16
+ privateKey: string;
17
+ address: string;
18
+ }, t: TeachAuthTarget, ts?: number): string;
19
+ //# sourceMappingURL=teach-auth.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"teach-auth.d.ts","sourceRoot":"","sources":["../src/teach-auth.ts"],"names":[],"mappings":"AAmBA,eAAO,MAAM,kBAAkB,QAAa,CAAC;AAC7C,eAAO,MAAM,aAAa,OAAO,CAAC;AAElC,MAAM,WAAW,eAAe;IAAG,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,GAAG,UAAU,GAAG,IAAI,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE;AAIpI,6IAA6I;AAC7I,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,eAAe,GAAG;IAAE,EAAE,EAAE,MAAM,CAAA;CAAE,GAAG,MAAM,CAI5E;AAED,0FAA0F;AAC1F,wBAAgB,kBAAkB,CAAC,GAAG,EAAE;IAAE,UAAU,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,EAAE,CAAC,EAAE,eAAe,EAAE,EAAE,SAAa,GAAG,MAAM,CAE5H"}