yakmesh 2.8.2 → 3.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +637 -0
- package/CONTRIBUTING.md +42 -0
- package/Caddyfile +77 -0
- package/README.md +119 -29
- package/adapters/adapter-mlv-bible/README.md +124 -0
- package/adapters/adapter-mlv-bible/index.js +400 -0
- package/adapters/chat-mod-adapter.js +532 -0
- package/adapters/content-adapter.js +273 -0
- package/content/api.js +50 -41
- package/content/index.js +2 -2
- package/content/store.js +355 -173
- package/dashboard/index.html +19 -3
- package/database/replication.js +117 -37
- package/docs/CRYPTO-AGILITY.md +204 -0
- package/docs/MTLS-RESEARCH.md +367 -0
- package/docs/NAMCHE-SPEC.md +681 -0
- package/docs/PEERQUANTA-YAKMESH-INTEGRATION.md +407 -0
- package/docs/PRECISION-DISCLOSURE.md +96 -0
- package/docs/README.md +76 -0
- package/docs/ROADMAP-2.4.0.md +447 -0
- package/docs/ROADMAP-2.5.0.md +244 -0
- package/docs/SECURITY-AUDIT-REPORT.md +306 -0
- package/docs/SST-INTEGRATION.md +712 -0
- package/docs/STEADYWATCH-IMPLEMENTATION.md +303 -0
- package/docs/TERNARY-AUDIT-REPORT.md +247 -0
- package/docs/TME-FAQ.md +221 -0
- package/docs/WHITEPAPER.md +623 -0
- package/docs/adapters.html +1001 -0
- package/docs/advanced-systems.html +1045 -0
- package/docs/annex.html +1046 -0
- package/docs/api.html +970 -0
- package/docs/business/response-templates.md +160 -0
- package/docs/c2c.html +1225 -0
- package/docs/cli.html +1332 -0
- package/docs/configuration.html +1248 -0
- package/docs/darshan.html +1085 -0
- package/docs/dharma.html +966 -0
- package/docs/docs-bundle.html +1075 -0
- package/docs/docs.css +3120 -0
- package/docs/docs.js +556 -0
- package/docs/doko.html +969 -0
- package/docs/geo-proof.html +858 -0
- package/docs/getting-started.html +840 -0
- package/docs/gumba-tutorial.html +1144 -0
- package/docs/gumba.html +1098 -0
- package/docs/index.html +914 -0
- package/docs/jhilke.html +1312 -0
- package/docs/karma.html +1100 -0
- package/docs/katha.html +1037 -0
- package/docs/lama.html +978 -0
- package/docs/mandala.html +1067 -0
- package/docs/mani.html +964 -0
- package/docs/mantra.html +967 -0
- package/docs/mesh.html +1409 -0
- package/docs/nakpak.html +869 -0
- package/docs/namche.html +928 -0
- package/docs/nav-order.json +53 -0
- package/docs/prahari.html +1043 -0
- package/docs/prism-bash.min.js +1 -0
- package/docs/prism-javascript.min.js +1 -0
- package/docs/prism-json.min.js +1 -0
- package/docs/prism-tomorrow.min.css +1 -0
- package/docs/prism.min.js +1 -0
- package/docs/privacy.html +699 -0
- package/docs/quick-reference.html +1181 -0
- package/docs/sakshi.html +1402 -0
- package/docs/sandboxing.md +386 -0
- package/docs/seva.html +911 -0
- package/docs/sherpa.html +871 -0
- package/docs/studio.html +860 -0
- package/docs/stupa.html +995 -0
- package/docs/tailwind.min.css +2 -0
- package/docs/tattva.html +1332 -0
- package/docs/terms.html +686 -0
- package/docs/time-server-deployment.md +166 -0
- package/docs/time-sources.html +1392 -0
- package/docs/tivra.html +1127 -0
- package/docs/trademark-policy.html +686 -0
- package/docs/tribhuj.html +1183 -0
- package/docs/trust-security.html +1029 -0
- package/docs/tutorials/backup-recovery.html +654 -0
- package/docs/tutorials/dashboard.html +604 -0
- package/docs/tutorials/domain-setup.html +605 -0
- package/docs/tutorials/host-website.html +456 -0
- package/docs/tutorials/mesh-network.html +505 -0
- package/docs/tutorials/mobile-access.html +445 -0
- package/docs/tutorials/privacy.html +467 -0
- package/docs/tutorials/raspberry-pi.html +600 -0
- package/docs/tutorials/security-basics.html +539 -0
- package/docs/tutorials/share-files.html +431 -0
- package/docs/tutorials/troubleshooting.html +637 -0
- package/docs/tutorials/trust-karma.html +419 -0
- package/docs/tutorials/yak-protocol.html +456 -0
- package/docs/tutorials.html +1034 -0
- package/docs/vani.html +1270 -0
- package/docs/webserver.html +809 -0
- package/docs/yak-protocol.html +940 -0
- package/docs/yak-timeserver-design.md +475 -0
- package/docs/yakapp.html +1015 -0
- package/docs/ypc27.html +1069 -0
- package/docs/yurt.html +1344 -0
- package/embedded-docs/bundle.js +334 -74
- package/gossip/protocol.js +247 -27
- package/identity/key-resolver.js +262 -0
- package/identity/machine-seed.js +632 -0
- package/identity/node-key.js +669 -368
- package/identity/tribhuj-ratchet.js +506 -0
- package/knowledge-base.js +37 -8
- package/launcher/yakmesh.bat +62 -0
- package/launcher/yakmesh.sh +70 -0
- package/mesh/annex.js +462 -108
- package/mesh/beacon-broadcast.js +113 -1
- package/mesh/darshan.js +1718 -0
- package/mesh/gumba.js +1567 -0
- package/mesh/jhilke.js +651 -0
- package/mesh/katha.js +1012 -0
- package/mesh/nakpak-routing.js +8 -5
- package/mesh/network.js +724 -34
- package/mesh/pulse-sync.js +4 -1
- package/mesh/rate-limiter.js +127 -15
- package/mesh/seva.js +526 -0
- package/mesh/sherpa-discovery.js +89 -8
- package/mesh/sybil-defense.js +19 -5
- package/mesh/temporal-encoder.js +4 -3
- package/mesh/vani.js +1364 -0
- package/mesh/yurt.js +1340 -0
- package/models/entropy-sentinel.onnx +0 -0
- package/models/karma-trust.onnx +0 -0
- package/models/manifest.json +43 -0
- package/models/sakshi-anomaly.onnx +0 -0
- package/oracle/code-proof-protocol.js +7 -6
- package/oracle/codebase-lock.js +257 -28
- package/oracle/index.js +74 -15
- package/oracle/ma902-snmp.js +678 -0
- package/oracle/module-sealer.js +5 -3
- package/oracle/network-identity.js +16 -0
- package/oracle/packet-checksum.js +201 -0
- package/oracle/sst.js +579 -0
- package/oracle/ternary-144t.js +714 -0
- package/oracle/ternary-ml.js +481 -0
- package/oracle/time-api.js +239 -0
- package/oracle/time-source.js +137 -47
- package/oracle/validation-oracle-hardened.js +1111 -1071
- package/oracle/validation-oracle.js +4 -2
- package/oracle/ypc27.js +211 -0
- package/package.json +20 -3
- package/protocol/yak-handler.js +35 -9
- package/protocol/yak-protocol.js +28 -13
- package/reference/cpp/yakmesh_mceliece_shard.cpp +168 -0
- package/reference/cpp/yakmesh_ypc27.cpp +179 -0
- package/sbom.json +87 -0
- package/scripts/security-audit.mjs +264 -0
- package/scripts/update-docs-nav.js +194 -0
- package/scripts/update-docs-sidebar.cjs +164 -0
- package/security/crypto-config.js +4 -3
- package/security/dharma-moderation.js +517 -0
- package/security/doko-identity.js +193 -143
- package/security/domain-consensus.js +86 -85
- package/security/fs-hardening.js +620 -0
- package/security/hardware-attestation.js +5 -3
- package/security/hybrid-trust.js +227 -87
- package/security/karma-rate-limiter.js +692 -0
- package/security/khata-protocol.js +22 -21
- package/security/khata-trust-integration.js +277 -150
- package/security/memory-safety.js +635 -0
- package/security/mesh-auth.js +11 -10
- package/security/mesh-revocation.js +373 -5
- package/security/namche-gateway.js +298 -69
- package/security/sakshi.js +460 -3
- package/security/sangha.js +770 -0
- package/security/secure-config.js +473 -0
- package/security/silicon-parity.js +13 -10
- package/security/steadywatch.js +1142 -0
- package/security/strike-system.js +32 -3
- package/security/temporal-signing.js +488 -0
- package/security/trit-commitment.js +464 -0
- package/server/crypto/annex.js +247 -0
- package/server/darshan-api.js +343 -0
- package/server/index.js +3259 -362
- package/server/komm-api.js +668 -0
- package/utils/accel.js +2273 -0
- package/utils/ternary-id.js +79 -0
- package/utils/verify-worker.js +57 -0
- package/webserver/index.js +95 -5
- package/assets/yakmesh-logo.png +0 -0
- package/assets/yakmesh-logo.svg +0 -80
- package/assets/yakmesh-logo2.png +0 -0
- package/assets/yakmesh-logo2sm.png +0 -0
- package/assets/ymsm.png +0 -0
- package/website/assets/silhouettes/adapters.svg +0 -107
- package/website/assets/silhouettes/api-endpoints.svg +0 -115
- package/website/assets/silhouettes/atomic-clock.svg +0 -83
- package/website/assets/silhouettes/base-camp.svg +0 -81
- package/website/assets/silhouettes/bridge.svg +0 -69
- package/website/assets/silhouettes/docs-bundle.svg +0 -113
- package/website/assets/silhouettes/doko-basket.svg +0 -70
- package/website/assets/silhouettes/fortress.svg +0 -93
- package/website/assets/silhouettes/gateway.svg +0 -54
- package/website/assets/silhouettes/gears.svg +0 -93
- package/website/assets/silhouettes/globe-satellite.svg +0 -67
- package/website/assets/silhouettes/karma-wheel.svg +0 -137
- package/website/assets/silhouettes/lama-council.svg +0 -141
- package/website/assets/silhouettes/mandala-network.svg +0 -169
- package/website/assets/silhouettes/mani-stones.svg +0 -149
- package/website/assets/silhouettes/mantra-wheel.svg +0 -116
- package/website/assets/silhouettes/mesh-nodes.svg +0 -113
- package/website/assets/silhouettes/nakpak.svg +0 -56
- package/website/assets/silhouettes/peak-lightning.svg +0 -73
- package/website/assets/silhouettes/sherpa.svg +0 -69
- package/website/assets/silhouettes/stupa-tower.svg +0 -119
- package/website/assets/silhouettes/tattva-eye.svg +0 -78
- package/website/assets/silhouettes/terminal.svg +0 -74
- package/website/assets/silhouettes/webserver.svg +0 -145
- package/website/assets/silhouettes/yak.svg +0 -78
- package/website/assets/yakmesh-logo.png +0 -0
- package/website/assets/yakmesh-logo.webp +0 -0
- package/website/assets/yakmesh-logo128x140.webp +0 -0
- package/website/assets/yakmesh-logo2.png +0 -0
- package/website/assets/yakmesh-logo2.svg +0 -51
- package/website/assets/yakmesh-logo40x44.webp +0 -0
- package/website/assets/yakmesh.gif +0 -0
- package/website/assets/yakmesh.ico +0 -0
- package/website/assets/yakmesh.jpg +0 -0
- package/website/assets/yakmesh.pdf +0 -0
- package/website/assets/yakmesh.png +0 -0
- package/website/assets/yakmesh.svg +0 -70
- package/website/assets/yakmesh128.webp +0 -0
- package/website/assets/yakmesh32.png +0 -0
- package/website/assets/yakmesh32.svg +0 -65
- package/website/assets/yakmesh32o.ico +0 -2
- package/website/assets/yakmesh32o.svg +0 -65
- package/website/assets/yakmesh32o.svgz +0 -0
|
@@ -17,15 +17,16 @@
|
|
|
17
17
|
*/
|
|
18
18
|
|
|
19
19
|
import { sha3_256 } from '@noble/hashes/sha3.js';
|
|
20
|
-
import { bytesToHex, utf8ToBytes
|
|
20
|
+
import { bytesToHex, utf8ToBytes } from '@noble/hashes/utils.js';
|
|
21
21
|
import { EventEmitter } from 'events';
|
|
22
22
|
import { createLogger } from '../utils/logger.js';
|
|
23
|
+
import { ternaryId } from '../utils/ternary-id.js';
|
|
23
24
|
|
|
24
25
|
// YPC-27 quantum-hard checksums for message integrity
|
|
25
|
-
import {
|
|
26
|
-
PROTOCOL_DOMAIN,
|
|
27
|
-
wrapWithChecksum,
|
|
28
|
-
unwrapWithChecksum
|
|
26
|
+
import {
|
|
27
|
+
PROTOCOL_DOMAIN,
|
|
28
|
+
wrapWithChecksum,
|
|
29
|
+
unwrapWithChecksum
|
|
29
30
|
} from '../oracle/packet-checksum.js';
|
|
30
31
|
|
|
31
32
|
const log = createLogger('security:khata');
|
|
@@ -52,10 +53,10 @@ const DEFAULT_CONFIG = {
|
|
|
52
53
|
};
|
|
53
54
|
|
|
54
55
|
/**
|
|
55
|
-
* Generate a unique message ID
|
|
56
|
+
* Generate a unique message ID (balanced ternary — '666' impossible by design)
|
|
56
57
|
*/
|
|
57
58
|
function generateMessageId() {
|
|
58
|
-
return
|
|
59
|
+
return ternaryId(16);
|
|
59
60
|
}
|
|
60
61
|
|
|
61
62
|
/**
|
|
@@ -93,17 +94,17 @@ export class KhataProtocol extends EventEmitter {
|
|
|
93
94
|
this.gateway = namcheGateway;
|
|
94
95
|
this.identity = nodeIdentity;
|
|
95
96
|
this.config = { ...DEFAULT_CONFIG, ...options };
|
|
96
|
-
|
|
97
|
+
|
|
97
98
|
// Message deduplication (messageHash -> timestamp)
|
|
98
99
|
this.seenMessages = new Map();
|
|
99
|
-
|
|
100
|
+
|
|
100
101
|
// Pending requests (requestId -> { resolve, reject, timeout })
|
|
101
102
|
this.pendingRequests = new Map();
|
|
102
|
-
|
|
103
|
+
|
|
103
104
|
// Peer send function (must be set by network layer)
|
|
104
105
|
this.sendToPeer = null;
|
|
105
106
|
this.broadcastToPeers = null;
|
|
106
|
-
|
|
107
|
+
|
|
107
108
|
// Cleanup interval for seen messages
|
|
108
109
|
this.cleanupInterval = setInterval(() => this.cleanup(), 60000);
|
|
109
110
|
|
|
@@ -230,10 +231,10 @@ export class KhataProtocol extends EventEmitter {
|
|
|
230
231
|
|
|
231
232
|
// Verify the DOKO through NAMCHE gateway
|
|
232
233
|
const verifyResult = await this.gateway.verify(message.doko);
|
|
233
|
-
|
|
234
|
+
|
|
234
235
|
if (verifyResult.valid) {
|
|
235
|
-
this.emit('announce', {
|
|
236
|
-
doko: message.doko,
|
|
236
|
+
this.emit('announce', {
|
|
237
|
+
doko: message.doko,
|
|
237
238
|
dokoHash: verifyResult.dokoHash,
|
|
238
239
|
fromPeerId,
|
|
239
240
|
hops: message.hops,
|
|
@@ -319,7 +320,7 @@ export class KhataProtocol extends EventEmitter {
|
|
|
319
320
|
this.pendingRequests.set(requestId, { resolve, reject, timeout });
|
|
320
321
|
|
|
321
322
|
this.stats.requestsSent++;
|
|
322
|
-
|
|
323
|
+
|
|
323
324
|
// Broadcast request
|
|
324
325
|
if (this.broadcastToPeers) {
|
|
325
326
|
this.broadcastToPeers(message);
|
|
@@ -497,14 +498,14 @@ export class KhataProtocol extends EventEmitter {
|
|
|
497
498
|
|
|
498
499
|
// Get the original DOKO to verify revocation authority
|
|
499
500
|
const originalDoko = this.gateway.lookupByHash(message.dokoHash);
|
|
500
|
-
|
|
501
|
+
|
|
501
502
|
if (originalDoko) {
|
|
502
503
|
// Process revocation through gateway
|
|
503
504
|
const result = await this.gateway.processRevocation(message, originalDoko);
|
|
504
|
-
|
|
505
|
+
|
|
505
506
|
if (result.success) {
|
|
506
|
-
this.emit('revoke', {
|
|
507
|
-
dokoHash: message.dokoHash,
|
|
507
|
+
this.emit('revoke', {
|
|
508
|
+
dokoHash: message.dokoHash,
|
|
508
509
|
reason: message.reason,
|
|
509
510
|
fromPeerId,
|
|
510
511
|
});
|
|
@@ -565,7 +566,7 @@ export class KhataProtocol extends EventEmitter {
|
|
|
565
566
|
cleanup() {
|
|
566
567
|
const now = Date.now();
|
|
567
568
|
const maxAge = this.config.announceTTL;
|
|
568
|
-
|
|
569
|
+
|
|
569
570
|
for (const [hash, timestamp] of this.seenMessages.entries()) {
|
|
570
571
|
if (now - timestamp > maxAge) {
|
|
571
572
|
this.seenMessages.delete(hash);
|
|
@@ -589,7 +590,7 @@ export class KhataProtocol extends EventEmitter {
|
|
|
589
590
|
*/
|
|
590
591
|
destroy() {
|
|
591
592
|
clearInterval(this.cleanupInterval);
|
|
592
|
-
|
|
593
|
+
|
|
593
594
|
// Reject all pending requests
|
|
594
595
|
for (const [requestId, pending] of this.pendingRequests.entries()) {
|
|
595
596
|
clearTimeout(pending.timeout);
|