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
package/docs/c2c.html
ADDED
|
@@ -0,0 +1,1225 @@
|
|
|
1
|
+
<!DOCTYPE html>
|
|
2
|
+
<html lang="en" data-theme="c2c">
|
|
3
|
+
<head>
|
|
4
|
+
<meta charset="UTF-8">
|
|
5
|
+
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
6
|
+
<link rel="icon" href="favicon.ico" sizes="32x32">
|
|
7
|
+
<link rel="icon" href="icon.svg" type="image/svg+xml">
|
|
8
|
+
<link rel="apple-touch-icon" href="apple-touch-icon.png">
|
|
9
|
+
<title>C2C Integration | YAKMESH Documentation</title>
|
|
10
|
+
<meta name="description" content="Core to Cosmos — space strategy game integration with yakmesh networking and NPU acceleration.">
|
|
11
|
+
<link rel="stylesheet" href="tailwind.min.css">
|
|
12
|
+
<link rel="stylesheet" href="prism-tomorrow.min.css" media="print" onload="this.media='all'">
|
|
13
|
+
<noscript><link rel="stylesheet" href="prism-tomorrow.min.css"></noscript>
|
|
14
|
+
<link rel="stylesheet" href="docs.css">
|
|
15
|
+
<style>
|
|
16
|
+
.theme-accent { color: #fb923c; }
|
|
17
|
+
.theme-accent-hover:hover { color: #fdba74; }
|
|
18
|
+
.theme-badge { background: rgba(251, 146, 60, 0.2); color: #fb923c; }
|
|
19
|
+
.theme-border { border-color: #ea580c; }
|
|
20
|
+
.theme-callout { background: rgba(251, 146, 60, 0.1); border-color: #c2410c; }
|
|
21
|
+
.active-link { background: rgba(251, 146, 60, 0.2) !important; color: #fb923c !important; }
|
|
22
|
+
</style>
|
|
23
|
+
|
|
24
|
+
<!-- Open Graph -->
|
|
25
|
+
<meta property="og:type" content="article">
|
|
26
|
+
<meta property="og:site_name" content="Yakmesh Documentation">
|
|
27
|
+
<meta property="og:title" content="C2C — Yakmesh">
|
|
28
|
+
<meta property="og:description" content="Core to Cosmos — game and application integration platform on the mesh network.">
|
|
29
|
+
</head>
|
|
30
|
+
<body class="bg-mountain-900 text-white min-h-screen">
|
|
31
|
+
<!-- YAKMESH-ICON-SPRITE-START -->
|
|
32
|
+
<svg xmlns="http://www.w3.org/2000/svg" style="display:none">
|
|
33
|
+
<!--
|
|
34
|
+
Yakmesh Docs Icon Sprite Sheet
|
|
35
|
+
24×24 viewBox — stroke/fill set via .doc-icon CSS
|
|
36
|
+
Usage: <svg class="doc-icon"><use href="#icon-name"/></svg>
|
|
37
|
+
-->
|
|
38
|
+
|
|
39
|
+
<!-- ═══ GUIDES ═══ -->
|
|
40
|
+
|
|
41
|
+
<symbol id="icon-home" viewBox="0 0 24 24">
|
|
42
|
+
<path d="M3 9.5L12 3l9 6.5V20a1 1 0 01-1 1H4a1 1 0 01-1-1V9.5z"/>
|
|
43
|
+
<polyline points="9 22 9 12 15 12 15 22"/>
|
|
44
|
+
</symbol>
|
|
45
|
+
|
|
46
|
+
<symbol id="icon-rocket" viewBox="0 0 24 24">
|
|
47
|
+
<path d="M4.5 16.5c-1.5 1.26-2 5-2 5s3.74-.5 5-2c.71-.84.7-2.13-.09-2.91a2.18 2.18 0 00-2.91-.09z"/>
|
|
48
|
+
<path d="M12 15l-3-3a22 22 0 012-3.95A12.88 12.88 0 0122 2c0 2.72-.78 7.5-6 11a22.35 22.35 0 01-4 2z"/>
|
|
49
|
+
<path d="M9 12H4s.55-3.03 2-4c1.62-1.08 5 0 5 0"/>
|
|
50
|
+
<path d="M12 15v5s3.03-.55 4-2c1.08-1.62 0-5 0-5"/>
|
|
51
|
+
</symbol>
|
|
52
|
+
|
|
53
|
+
<symbol id="icon-book" viewBox="0 0 24 24">
|
|
54
|
+
<path d="M4 19.5A2.5 2.5 0 016.5 17H20"/>
|
|
55
|
+
<path d="M6.5 2H20v20H6.5A2.5 2.5 0 014 19.5v-15A2.5 2.5 0 016.5 2z"/>
|
|
56
|
+
<line x1="8" y1="7" x2="16" y2="7"/>
|
|
57
|
+
<line x1="8" y1="11" x2="13" y2="11"/>
|
|
58
|
+
</symbol>
|
|
59
|
+
|
|
60
|
+
<!-- ═══ PROTOCOL STACK ═══ -->
|
|
61
|
+
|
|
62
|
+
<!-- YAK:// — Content addressing (yak horns) -->
|
|
63
|
+
<symbol id="icon-yak" viewBox="0 0 24 24">
|
|
64
|
+
<path d="M4 4c1 3 3 5 5 6"/>
|
|
65
|
+
<path d="M20 4c-1 3-3 5-5 6"/>
|
|
66
|
+
<circle cx="12" cy="14" r="5"/>
|
|
67
|
+
<circle cx="10" cy="13" r="0.5" fill="currentColor"/>
|
|
68
|
+
<circle cx="14" cy="13" r="0.5" fill="currentColor"/>
|
|
69
|
+
<path d="M10 16c1 1 3 1 4 0"/>
|
|
70
|
+
</symbol>
|
|
71
|
+
|
|
72
|
+
<!-- ANNEX — Encrypted bridge -->
|
|
73
|
+
<symbol id="icon-annex" viewBox="0 0 24 24">
|
|
74
|
+
<path d="M4 18h3a4 4 0 004-4V8"/>
|
|
75
|
+
<path d="M20 18h-3a4 4 0 01-4-4V8"/>
|
|
76
|
+
<circle cx="7" cy="6" r="2"/>
|
|
77
|
+
<circle cx="17" cy="6" r="2"/>
|
|
78
|
+
<line x1="7" y1="8" x2="7" y2="18"/>
|
|
79
|
+
<line x1="17" y1="8" x2="17" y2="18"/>
|
|
80
|
+
</symbol>
|
|
81
|
+
|
|
82
|
+
<!-- JHILKE — Cricket / steganographic key lifecycle -->
|
|
83
|
+
<symbol id="icon-jhilke" viewBox="0 0 24 24">
|
|
84
|
+
<ellipse cx="12" cy="14" rx="4" ry="6"/>
|
|
85
|
+
<path d="M8 10c-2-3-4-6-3-8"/>
|
|
86
|
+
<path d="M16 10c2-3 4-6 3-8"/>
|
|
87
|
+
<line x1="10" y1="20" x2="8" y2="23"/>
|
|
88
|
+
<line x1="14" y1="20" x2="16" y2="23"/>
|
|
89
|
+
<path d="M9 12l-4 2"/>
|
|
90
|
+
<path d="M15 12l4 2"/>
|
|
91
|
+
</symbol>
|
|
92
|
+
|
|
93
|
+
<!-- NAKPAK — Onion layers / backpack -->
|
|
94
|
+
<symbol id="icon-nakpak" viewBox="0 0 24 24">
|
|
95
|
+
<circle cx="12" cy="12" r="10" opacity="0.3"/>
|
|
96
|
+
<circle cx="12" cy="12" r="7" opacity="0.5"/>
|
|
97
|
+
<circle cx="12" cy="12" r="4" opacity="0.8"/>
|
|
98
|
+
<circle cx="12" cy="12" r="1.5" fill="currentColor"/>
|
|
99
|
+
</symbol>
|
|
100
|
+
|
|
101
|
+
<!-- NAMCHE — Gateway door -->
|
|
102
|
+
<symbol id="icon-namche" viewBox="0 0 24 24">
|
|
103
|
+
<rect x="3" y="3" width="18" height="18" rx="2"/>
|
|
104
|
+
<path d="M9 3v18"/>
|
|
105
|
+
<path d="M15 3v18"/>
|
|
106
|
+
<line x1="3" y1="8" x2="9" y2="8"/>
|
|
107
|
+
<line x1="15" y1="8" x2="21" y2="8"/>
|
|
108
|
+
<circle cx="12" cy="14" r="1" fill="currentColor"/>
|
|
109
|
+
</symbol>
|
|
110
|
+
|
|
111
|
+
<!-- DOKO — Basket / certificate -->
|
|
112
|
+
<symbol id="icon-doko" viewBox="0 0 24 24">
|
|
113
|
+
<path d="M6 8l-2 12h16l-2-12"/>
|
|
114
|
+
<path d="M6 8c0-3 2.7-5 6-5s6 2 6 5"/>
|
|
115
|
+
<line x1="8" y1="10" x2="10" y2="18"/>
|
|
116
|
+
<line x1="16" y1="10" x2="14" y2="18"/>
|
|
117
|
+
<line x1="12" y1="10" x2="12" y2="18"/>
|
|
118
|
+
</symbol>
|
|
119
|
+
|
|
120
|
+
<!-- SHERPA — Mountain climber -->
|
|
121
|
+
<symbol id="icon-sherpa" viewBox="0 0 24 24">
|
|
122
|
+
<path d="M4 20L10 6l3 6 3-4 4 12"/>
|
|
123
|
+
<line x1="4" y1="20" x2="20" y2="20"/>
|
|
124
|
+
<circle cx="13" cy="4" r="1.5"/>
|
|
125
|
+
</symbol>
|
|
126
|
+
|
|
127
|
+
<!-- MANDALA — Network topology web -->
|
|
128
|
+
<symbol id="icon-mandala" viewBox="0 0 24 24">
|
|
129
|
+
<circle cx="12" cy="12" r="9"/>
|
|
130
|
+
<circle cx="12" cy="12" r="4.5"/>
|
|
131
|
+
<line x1="12" y1="3" x2="12" y2="21"/>
|
|
132
|
+
<line x1="3" y1="12" x2="21" y2="12"/>
|
|
133
|
+
<line x1="5.6" y1="5.6" x2="18.4" y2="18.4"/>
|
|
134
|
+
<line x1="18.4" y1="5.6" x2="5.6" y2="18.4"/>
|
|
135
|
+
</symbol>
|
|
136
|
+
|
|
137
|
+
<!-- MANTRA — Gossip / prayer wheel -->
|
|
138
|
+
<symbol id="icon-mantra" viewBox="0 0 24 24">
|
|
139
|
+
<circle cx="12" cy="10" r="7"/>
|
|
140
|
+
<path d="M12 3v14"/>
|
|
141
|
+
<path d="M8 7c2 1.5 6 1.5 8 0"/>
|
|
142
|
+
<path d="M8 13c2-1.5 6-1.5 8 0"/>
|
|
143
|
+
<line x1="12" y1="17" x2="12" y2="22"/>
|
|
144
|
+
<line x1="9" y1="22" x2="15" y2="22"/>
|
|
145
|
+
</symbol>
|
|
146
|
+
|
|
147
|
+
<!-- GUMBA — Temple / access control -->
|
|
148
|
+
<symbol id="icon-gumba" viewBox="0 0 24 24">
|
|
149
|
+
<path d="M12 2L3 9h18z"/>
|
|
150
|
+
<line x1="5" y1="9" x2="5" y2="19"/>
|
|
151
|
+
<line x1="9" y1="9" x2="9" y2="19"/>
|
|
152
|
+
<line x1="15" y1="9" x2="15" y2="19"/>
|
|
153
|
+
<line x1="19" y1="9" x2="19" y2="19"/>
|
|
154
|
+
<line x1="3" y1="19" x2="21" y2="19"/>
|
|
155
|
+
<line x1="3" y1="21" x2="21" y2="21"/>
|
|
156
|
+
</symbol>
|
|
157
|
+
|
|
158
|
+
<!-- YURT — Camp / room -->
|
|
159
|
+
<symbol id="icon-yurt" viewBox="0 0 24 24">
|
|
160
|
+
<path d="M3 20L12 4l9 16"/>
|
|
161
|
+
<line x1="3" y1="20" x2="21" y2="20"/>
|
|
162
|
+
<path d="M10 20v-5a2 2 0 014 0v5"/>
|
|
163
|
+
<path d="M6 14h12"/>
|
|
164
|
+
</symbol>
|
|
165
|
+
|
|
166
|
+
<!-- KATHA — Chat / story scroll -->
|
|
167
|
+
<symbol id="icon-katha" viewBox="0 0 24 24">
|
|
168
|
+
<path d="M21 15a2 2 0 01-2 2H7l-4 4V5a2 2 0 012-2h14a2 2 0 012 2z"/>
|
|
169
|
+
<line x1="8" y1="8" x2="16" y2="8"/>
|
|
170
|
+
<line x1="8" y1="12" x2="13" y2="12"/>
|
|
171
|
+
</symbol>
|
|
172
|
+
|
|
173
|
+
<!-- VANI — Voice / microphone -->
|
|
174
|
+
<symbol id="icon-vani" viewBox="0 0 24 24">
|
|
175
|
+
<rect x="9" y="2" width="6" height="11" rx="3"/>
|
|
176
|
+
<path d="M5 10a7 7 0 0014 0"/>
|
|
177
|
+
<line x1="12" y1="17" x2="12" y2="22"/>
|
|
178
|
+
<line x1="8" y1="22" x2="16" y2="22"/>
|
|
179
|
+
</symbol>
|
|
180
|
+
|
|
181
|
+
<!-- DARSHAN — Eye / viewing -->
|
|
182
|
+
<symbol id="icon-darshan" viewBox="0 0 24 24">
|
|
183
|
+
<path d="M1 12s4-8 11-8 11 8 11 8-4 8-11 8S1 12 1 12z"/>
|
|
184
|
+
<circle cx="12" cy="12" r="3"/>
|
|
185
|
+
</symbol>
|
|
186
|
+
|
|
187
|
+
<!-- STUPA — Tower / distributed storage -->
|
|
188
|
+
<symbol id="icon-stupa" viewBox="0 0 24 24">
|
|
189
|
+
<line x1="12" y1="2" x2="12" y2="5"/>
|
|
190
|
+
<path d="M10 5h4l1 3H9z"/>
|
|
191
|
+
<ellipse cx="12" cy="11" rx="5" ry="3"/>
|
|
192
|
+
<ellipse cx="12" cy="15" rx="6" ry="3"/>
|
|
193
|
+
<ellipse cx="12" cy="19" rx="7" ry="3"/>
|
|
194
|
+
</symbol>
|
|
195
|
+
|
|
196
|
+
<!-- LAMA — Crystal ball / consensus -->
|
|
197
|
+
<symbol id="icon-lama" viewBox="0 0 24 24">
|
|
198
|
+
<circle cx="12" cy="10" r="7"/>
|
|
199
|
+
<path d="M12 3c-1.5 2-2 5 0 7s4.5 2 6 0"/>
|
|
200
|
+
<path d="M7 19h10"/>
|
|
201
|
+
<path d="M9 22h6"/>
|
|
202
|
+
<line x1="9" y1="17" x2="9" y2="19"/>
|
|
203
|
+
<line x1="15" y1="17" x2="15" y2="19"/>
|
|
204
|
+
</symbol>
|
|
205
|
+
|
|
206
|
+
<!-- MANI — Prayer stone / time sync -->
|
|
207
|
+
<symbol id="icon-mani" viewBox="0 0 24 24">
|
|
208
|
+
<circle cx="12" cy="12" r="9"/>
|
|
209
|
+
<polyline points="12 6 12 12 16 14"/>
|
|
210
|
+
<circle cx="12" cy="12" r="1" fill="currentColor"/>
|
|
211
|
+
</symbol>
|
|
212
|
+
|
|
213
|
+
<!-- KARMA — Yin-yang / reputation -->
|
|
214
|
+
<symbol id="icon-karma" viewBox="0 0 24 24">
|
|
215
|
+
<circle cx="12" cy="12" r="9"/>
|
|
216
|
+
<path d="M12 3a4.5 4.5 0 010 9 4.5 4.5 0 000 9"/>
|
|
217
|
+
<circle cx="12" cy="7.5" r="1.5" fill="currentColor"/>
|
|
218
|
+
<circle cx="12" cy="16.5" r="1.5"/>
|
|
219
|
+
</symbol>
|
|
220
|
+
|
|
221
|
+
<!-- TATTVA — Quantum elements / atom -->
|
|
222
|
+
<symbol id="icon-tattva" viewBox="0 0 24 24">
|
|
223
|
+
<circle cx="12" cy="12" r="2.5" fill="currentColor" stroke="none"/>
|
|
224
|
+
<ellipse cx="12" cy="12" rx="10" ry="4"/>
|
|
225
|
+
<ellipse cx="12" cy="12" rx="10" ry="4" transform="rotate(60 12 12)"/>
|
|
226
|
+
<ellipse cx="12" cy="12" rx="10" ry="4" transform="rotate(120 12 12)"/>
|
|
227
|
+
</symbol>
|
|
228
|
+
|
|
229
|
+
<!-- TRIBHUJ — Triangle / balanced ternary -->
|
|
230
|
+
<symbol id="icon-tribhuj" viewBox="0 0 24 24">
|
|
231
|
+
<polygon points="12,3 21,20 3,20"/>
|
|
232
|
+
<line x1="12" y1="3" x2="12" y2="20"/>
|
|
233
|
+
<line x1="7.5" y1="11.5" x2="16.5" y2="11.5"/>
|
|
234
|
+
<circle cx="12" cy="14" r="1" fill="currentColor"/>
|
|
235
|
+
</symbol>
|
|
236
|
+
|
|
237
|
+
<!-- YPC-27 — Lock / cipher -->
|
|
238
|
+
<symbol id="icon-ypc27" viewBox="0 0 24 24">
|
|
239
|
+
<rect x="5" y="11" width="14" height="10" rx="2"/>
|
|
240
|
+
<path d="M8 11V7a4 4 0 118 0v4"/>
|
|
241
|
+
<circle cx="12" cy="16" r="1" fill="currentColor"/>
|
|
242
|
+
<line x1="12" y1="17" x2="12" y2="19"/>
|
|
243
|
+
</symbol>
|
|
244
|
+
|
|
245
|
+
<!-- SAKSHI — Witness / aperture eye -->
|
|
246
|
+
<symbol id="icon-sakshi" viewBox="0 0 24 24">
|
|
247
|
+
<circle cx="12" cy="12" r="9"/>
|
|
248
|
+
<path d="M12 3l3 9-3 9"/>
|
|
249
|
+
<path d="M12 3l-3 9 3 9"/>
|
|
250
|
+
<circle cx="12" cy="12" r="2.5"/>
|
|
251
|
+
<circle cx="12" cy="12" r="0.8" fill="currentColor"/>
|
|
252
|
+
</symbol>
|
|
253
|
+
|
|
254
|
+
<!-- PRAMAAN — Globe / geographic proof -->
|
|
255
|
+
<symbol id="icon-pramaan" viewBox="0 0 24 24">
|
|
256
|
+
<circle cx="12" cy="12" r="9"/>
|
|
257
|
+
<ellipse cx="12" cy="12" rx="4" ry="9"/>
|
|
258
|
+
<line x1="3" y1="9" x2="21" y2="9"/>
|
|
259
|
+
<line x1="3" y1="15" x2="21" y2="15"/>
|
|
260
|
+
<path d="M18 4l-2 2 1 3"/>
|
|
261
|
+
<path d="M6 18l2-1 3 1"/>
|
|
262
|
+
</symbol>
|
|
263
|
+
|
|
264
|
+
<!-- SURAKSHA — Shield / security -->
|
|
265
|
+
<symbol id="icon-suraksha" viewBox="0 0 24 24">
|
|
266
|
+
<path d="M12 2l8 4v6c0 5.5-3.8 10.7-8 12-4.2-1.3-8-6.5-8-12V6z"/>
|
|
267
|
+
<polyline points="9 12 11 14 15 10"/>
|
|
268
|
+
</symbol>
|
|
269
|
+
|
|
270
|
+
<!-- TIVRA — Lightning bolt / acceleration -->
|
|
271
|
+
<symbol id="icon-tivra" viewBox="0 0 24 24">
|
|
272
|
+
<polygon points="13,2 3,14 12,14 11,22 21,10 12,10"/>
|
|
273
|
+
</symbol>
|
|
274
|
+
|
|
275
|
+
<!-- PRAHARI — Satellite / sentinel -->
|
|
276
|
+
<symbol id="icon-prahari" viewBox="0 0 24 24">
|
|
277
|
+
<rect x="9" y="9" width="6" height="6" rx="1" transform="rotate(45 12 12)"/>
|
|
278
|
+
<line x1="12" y1="5" x2="12" y2="2"/>
|
|
279
|
+
<line x1="19" y1="12" x2="22" y2="12"/>
|
|
280
|
+
<line x1="12" y1="19" x2="12" y2="22"/>
|
|
281
|
+
<line x1="5" y1="12" x2="2" y2="12"/>
|
|
282
|
+
<path d="M7 7L5 5"/>
|
|
283
|
+
<path d="M17 7l2-2"/>
|
|
284
|
+
</symbol>
|
|
285
|
+
|
|
286
|
+
<!-- DHARMA — Balance scale / content moderation -->
|
|
287
|
+
<symbol id="icon-dharma" viewBox="0 0 24 24">
|
|
288
|
+
<line x1="12" y1="3" x2="12" y2="21"/>
|
|
289
|
+
<line x1="4" y1="7" x2="20" y2="7"/>
|
|
290
|
+
<path d="M4 7l2 7h0a3 3 0 006 0h0l2-7"/>
|
|
291
|
+
<path d="M14 7l2 7h0a3 3 0 006 0h0l2-7"/>
|
|
292
|
+
<line x1="10" y1="21" x2="14" y2="21"/>
|
|
293
|
+
</symbol>
|
|
294
|
+
|
|
295
|
+
<!-- SEVA — Helping hands / NPU sharing -->
|
|
296
|
+
<symbol id="icon-seva" viewBox="0 0 24 24">
|
|
297
|
+
<path d="M12 22c-4 0-8-2-8-6 0-2 1-3 3-4l5-3 5 3c2 1 3 2 3 4 0 4-4 6-8 6z"/>
|
|
298
|
+
<path d="M12 11V5"/>
|
|
299
|
+
<path d="M9 8l3-3 3 3"/>
|
|
300
|
+
<circle cx="12" cy="16" r="2"/>
|
|
301
|
+
</symbol>
|
|
302
|
+
|
|
303
|
+
<!-- ═══ APPLICATIONS ═══ -->
|
|
304
|
+
|
|
305
|
+
<!-- YakApp — Messenger -->
|
|
306
|
+
<symbol id="icon-yakapp" viewBox="0 0 24 24">
|
|
307
|
+
<path d="M21 11.5a8.38 8.38 0 01-.9 3.8 8.5 8.5 0 01-7.6 4.7 8.38 8.38 0 01-3.8-.9L3 21l1.9-5.7a8.38 8.38 0 01-.9-3.8 8.5 8.5 0 014.7-7.6 8.38 8.38 0 013.8-.9h.5a8.48 8.48 0 018 8v.5z"/>
|
|
308
|
+
</symbol>
|
|
309
|
+
|
|
310
|
+
<!-- C2C — Core to Cosmos -->
|
|
311
|
+
<symbol id="icon-c2c" viewBox="0 0 24 24">
|
|
312
|
+
<circle cx="12" cy="12" r="3"/>
|
|
313
|
+
<circle cx="12" cy="12" r="9"/>
|
|
314
|
+
<path d="M12 3v3"/>
|
|
315
|
+
<path d="M12 18v3"/>
|
|
316
|
+
<path d="M3 12h3"/>
|
|
317
|
+
<path d="M18 12h3"/>
|
|
318
|
+
</symbol>
|
|
319
|
+
|
|
320
|
+
<!-- Studio — Creative suite -->
|
|
321
|
+
<symbol id="icon-studio" viewBox="0 0 24 24">
|
|
322
|
+
<circle cx="13.5" cy="6.5" r="2.5"/>
|
|
323
|
+
<path d="M6 21l4-10 3 5 4-7 4 12"/>
|
|
324
|
+
<rect x="2" y="2" width="20" height="20" rx="2"/>
|
|
325
|
+
</symbol>
|
|
326
|
+
|
|
327
|
+
|
|
328
|
+
<!-- ═══ REFERENCE ═══ -->
|
|
329
|
+
|
|
330
|
+
<!-- Quick Reference — Clipboard -->
|
|
331
|
+
<symbol id="icon-quickref" viewBox="0 0 24 24">
|
|
332
|
+
<path d="M16 4h2a2 2 0 012 2v14a2 2 0 01-2 2H6a2 2 0 01-2-2V6a2 2 0 012-2h2"/>
|
|
333
|
+
<rect x="8" y="2" width="8" height="4" rx="1"/>
|
|
334
|
+
<line x1="8" y1="10" x2="16" y2="10"/>
|
|
335
|
+
<line x1="8" y1="14" x2="16" y2="14"/>
|
|
336
|
+
<line x1="8" y1="18" x2="12" y2="18"/>
|
|
337
|
+
</symbol>
|
|
338
|
+
|
|
339
|
+
<!-- GRANTH — Docs bundle -->
|
|
340
|
+
<symbol id="icon-granth" viewBox="0 0 24 24">
|
|
341
|
+
<path d="M4 19.5A2.5 2.5 0 016.5 17H20"/>
|
|
342
|
+
<path d="M6.5 2H20v20H6.5A2.5 2.5 0 014 19.5v-15A2.5 2.5 0 016.5 2z"/>
|
|
343
|
+
<path d="M8 7h8"/>
|
|
344
|
+
<path d="M8 11h5"/>
|
|
345
|
+
<path d="M8 15h3"/>
|
|
346
|
+
</symbol>
|
|
347
|
+
|
|
348
|
+
<!-- API — Signal tower -->
|
|
349
|
+
<symbol id="icon-api" viewBox="0 0 24 24">
|
|
350
|
+
<line x1="12" y1="10" x2="12" y2="22"/>
|
|
351
|
+
<path d="M8 6a6 6 0 018 0"/>
|
|
352
|
+
<path d="M5 3a10 10 0 0114 0"/>
|
|
353
|
+
<circle cx="12" cy="10" r="2"/>
|
|
354
|
+
</symbol>
|
|
355
|
+
|
|
356
|
+
<!-- Adapters — Plug connector -->
|
|
357
|
+
<symbol id="icon-adapters" viewBox="0 0 24 24">
|
|
358
|
+
<path d="M6 3v4"/>
|
|
359
|
+
<path d="M10 3v4"/>
|
|
360
|
+
<path d="M4 7h8v3a4 4 0 01-8 0V7z"/>
|
|
361
|
+
<line x1="8" y1="14" x2="8" y2="17"/>
|
|
362
|
+
<path d="M14 10h4v3a2 2 0 01-4 0v-3z"/>
|
|
363
|
+
<line x1="16" y1="7" x2="16" y2="10"/>
|
|
364
|
+
<line x1="16" y1="13" x2="16" y2="17"/>
|
|
365
|
+
<line x1="8" y1="17" x2="16" y2="17"/>
|
|
366
|
+
<line x1="12" y1="17" x2="12" y2="21"/>
|
|
367
|
+
</symbol>
|
|
368
|
+
|
|
369
|
+
<!-- ═══ EXTRA (pages outside nav-order) ═══ -->
|
|
370
|
+
|
|
371
|
+
<!-- Terminal / CLI -->
|
|
372
|
+
<symbol id="icon-terminal" viewBox="0 0 24 24">
|
|
373
|
+
<rect x="2" y="3" width="20" height="18" rx="2"/>
|
|
374
|
+
<polyline points="7 9 10 12 7 15"/>
|
|
375
|
+
<line x1="13" y1="15" x2="17" y2="15"/>
|
|
376
|
+
</symbol>
|
|
377
|
+
|
|
378
|
+
<!-- Gear / Configuration -->
|
|
379
|
+
<symbol id="icon-gear" viewBox="0 0 24 24">
|
|
380
|
+
<circle cx="12" cy="12" r="3"/>
|
|
381
|
+
<path d="M19.4 15a1.65 1.65 0 00.33 1.82l.06.06a2 2 0 01-2.83 2.83l-.06-.06a1.65 1.65 0 00-1.82-.33 1.65 1.65 0 00-1 1.51V21a2 2 0 01-4 0v-.09A1.65 1.65 0 009 19.4a1.65 1.65 0 00-1.82.33l-.06.06a2 2 0 01-2.83-2.83l.06-.06A1.65 1.65 0 004.68 15a1.65 1.65 0 00-1.51-1H3a2 2 0 010-4h.09A1.65 1.65 0 004.6 9a1.65 1.65 0 00-.33-1.82l-.06-.06a2 2 0 012.83-2.83l.06.06A1.65 1.65 0 009 4.68a1.65 1.65 0 001-1.51V3a2 2 0 014 0v.09a1.65 1.65 0 001 1.51 1.65 1.65 0 001.82-.33l.06-.06a2 2 0 012.83 2.83l-.06.06A1.65 1.65 0 0019.4 9a1.65 1.65 0 001.51 1H21a2 2 0 010 4h-.09a1.65 1.65 0 00-1.51 1z"/>
|
|
382
|
+
</symbol>
|
|
383
|
+
|
|
384
|
+
<!-- Server / Web hosting -->
|
|
385
|
+
<symbol id="icon-server" viewBox="0 0 24 24">
|
|
386
|
+
<rect x="2" y="2" width="20" height="8" rx="2"/>
|
|
387
|
+
<rect x="2" y="14" width="20" height="8" rx="2"/>
|
|
388
|
+
<line x1="6" y1="6" x2="6.01" y2="6"/>
|
|
389
|
+
<line x1="6" y1="18" x2="6.01" y2="18"/>
|
|
390
|
+
</symbol>
|
|
391
|
+
|
|
392
|
+
<!-- ═══ CHROME / UI ═══ -->
|
|
393
|
+
|
|
394
|
+
<!-- Mountain peak — logo icon (replaces 🏔️) -->
|
|
395
|
+
<symbol id="icon-mountain" viewBox="0 0 24 24">
|
|
396
|
+
<path d="M8 21l4.5-9 3 5.5L19 12l3 9H2l6-9z"/>
|
|
397
|
+
<path d="M12 12l1.5-3L16 14"/>
|
|
398
|
+
</symbol>
|
|
399
|
+
|
|
400
|
+
<!-- Dashboard / bar chart (replaces 📊) -->
|
|
401
|
+
<symbol id="icon-dashboard" viewBox="0 0 24 24">
|
|
402
|
+
<line x1="18" y1="20" x2="18" y2="10"/>
|
|
403
|
+
<line x1="12" y1="20" x2="12" y2="4"/>
|
|
404
|
+
<line x1="6" y1="20" x2="6" y2="14"/>
|
|
405
|
+
<rect x="2" y="2" width="20" height="20" rx="2" stroke-opacity="0.4"/>
|
|
406
|
+
</symbol>
|
|
407
|
+
|
|
408
|
+
<!-- ═══ GENERIC / CONTENT ICONS ═══ -->
|
|
409
|
+
|
|
410
|
+
<!-- Lock / encrypted (replaces 🔐) -->
|
|
411
|
+
<symbol id="icon-lock" viewBox="0 0 24 24">
|
|
412
|
+
<rect x="3" y="11" width="18" height="11" rx="2"/>
|
|
413
|
+
<path d="M7 11V7a5 5 0 0110 0v4"/>
|
|
414
|
+
</symbol>
|
|
415
|
+
|
|
416
|
+
<!-- Signal / broadcast (replaces 📡) -->
|
|
417
|
+
<symbol id="icon-signal" viewBox="0 0 24 24">
|
|
418
|
+
<path d="M2 12a10 10 0 0118 0"/>
|
|
419
|
+
<path d="M5 12a7 7 0 0112 0"/>
|
|
420
|
+
<path d="M8 12a4 4 0 016 0"/>
|
|
421
|
+
<circle cx="11" cy="12" r="1"/>
|
|
422
|
+
</symbol>
|
|
423
|
+
|
|
424
|
+
<!-- Link / chain (replaces 🔗) -->
|
|
425
|
+
<symbol id="icon-link" viewBox="0 0 24 24">
|
|
426
|
+
<path d="M10 13a5 5 0 007.54.54l3-3a5 5 0 00-7.07-7.07l-1.72 1.71"/>
|
|
427
|
+
<path d="M14 11a5 5 0 00-7.54-.54l-3 3a5 5 0 007.07 7.07l1.71-1.71"/>
|
|
428
|
+
</symbol>
|
|
429
|
+
|
|
430
|
+
<!-- Globe / network (replaces 🌐) -->
|
|
431
|
+
<symbol id="icon-globe" viewBox="0 0 24 24">
|
|
432
|
+
<circle cx="12" cy="12" r="10"/>
|
|
433
|
+
<line x1="2" y1="12" x2="22" y2="12"/>
|
|
434
|
+
<path d="M12 2a15.3 15.3 0 014 10 15.3 15.3 0 01-4 10 15.3 15.3 0 01-4-10 15.3 15.3 0 014-10z"/>
|
|
435
|
+
</symbol>
|
|
436
|
+
|
|
437
|
+
<!-- Sync / refresh (replaces 🔄) -->
|
|
438
|
+
<symbol id="icon-sync" viewBox="0 0 24 24">
|
|
439
|
+
<polyline points="23 4 23 10 17 10"/>
|
|
440
|
+
<polyline points="1 20 1 14 7 14"/>
|
|
441
|
+
<path d="M3.51 9a9 9 0 0114.85-3.36L23 10M1 14l4.64 4.36A9 9 0 0020.49 15"/>
|
|
442
|
+
</symbol>
|
|
443
|
+
|
|
444
|
+
<!-- Users / group (replaces 👥) -->
|
|
445
|
+
<symbol id="icon-users" viewBox="0 0 24 24">
|
|
446
|
+
<path d="M17 21v-2a4 4 0 00-4-4H5a4 4 0 00-4 4v2"/>
|
|
447
|
+
<circle cx="9" cy="7" r="4"/>
|
|
448
|
+
<path d="M23 21v-2a4 4 0 00-3-3.87"/>
|
|
449
|
+
<path d="M16 3.13a4 4 0 010 7.75"/>
|
|
450
|
+
</symbol>
|
|
451
|
+
|
|
452
|
+
<!-- Shield / protection (replaces 🛡) -->
|
|
453
|
+
<symbol id="icon-shield" viewBox="0 0 24 24">
|
|
454
|
+
<path d="M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z"/>
|
|
455
|
+
</symbol>
|
|
456
|
+
|
|
457
|
+
<!-- Heartbeat / pulse (replaces 💓) -->
|
|
458
|
+
<symbol id="icon-heartbeat" viewBox="0 0 24 24">
|
|
459
|
+
<path d="M3 12h4l3-9 4 18 3-9h4"/>
|
|
460
|
+
</symbol>
|
|
461
|
+
|
|
462
|
+
<!-- Map pin / location (replaces 📍) -->
|
|
463
|
+
<symbol id="icon-pin" viewBox="0 0 24 24">
|
|
464
|
+
<path d="M21 10c0 7-9 13-9 13s-9-6-9-13a9 9 0 0118 0z"/>
|
|
465
|
+
<circle cx="12" cy="10" r="3"/>
|
|
466
|
+
</symbol>
|
|
467
|
+
|
|
468
|
+
<!-- Traffic light / status (replaces 🚦) -->
|
|
469
|
+
<symbol id="icon-traffic" viewBox="0 0 24 24">
|
|
470
|
+
<rect x="7" y="2" width="10" height="20" rx="3"/>
|
|
471
|
+
<circle cx="12" cy="7" r="1.5"/>
|
|
472
|
+
<circle cx="12" cy="12" r="1.5"/>
|
|
473
|
+
<circle cx="12" cy="17" r="1.5"/>
|
|
474
|
+
</symbol>
|
|
475
|
+
|
|
476
|
+
<!-- Check circle (replaces ✅) -->
|
|
477
|
+
<symbol id="icon-check" viewBox="0 0 24 24">
|
|
478
|
+
<path d="M22 11.08V12a10 10 0 11-5.93-9.14"/>
|
|
479
|
+
<polyline points="22 4 12 14.01 9 11.01"/>
|
|
480
|
+
</symbol>
|
|
481
|
+
|
|
482
|
+
<!-- Megaphone / broadcast (replaces 📢) -->
|
|
483
|
+
<symbol id="icon-megaphone" viewBox="0 0 24 24">
|
|
484
|
+
<path d="M21 15a2 2 0 01-2 2H7l-4 4V5a2 2 0 012-2h14a2 2 0 012 2z"/>
|
|
485
|
+
</symbol>
|
|
486
|
+
|
|
487
|
+
<!-- Pen / signed (replaces ✍) -->
|
|
488
|
+
<symbol id="icon-pen" viewBox="0 0 24 24">
|
|
489
|
+
<path d="M12 20h9"/>
|
|
490
|
+
<path d="M16.5 3.5a2.121 2.121 0 013 3L7 19l-4 1 1-4L16.5 3.5z"/>
|
|
491
|
+
</symbol>
|
|
492
|
+
|
|
493
|
+
<!-- Warning / alert (replaces ⚠) -->
|
|
494
|
+
<symbol id="icon-warning" viewBox="0 0 24 24">
|
|
495
|
+
<path d="M10.29 3.86L1.82 18a2 2 0 001.71 3h16.94a2 2 0 001.71-3L13.71 3.86a2 2 0 00-3.42 0z"/>
|
|
496
|
+
<line x1="12" y1="9" x2="12" y2="13"/>
|
|
497
|
+
<line x1="12" y1="17" x2="12.01" y2="17"/>
|
|
498
|
+
</symbol>
|
|
499
|
+
|
|
500
|
+
<!-- Hourglass / timer (replaces ⏳) -->
|
|
501
|
+
<symbol id="icon-hourglass" viewBox="0 0 24 24">
|
|
502
|
+
<path d="M6 2h12v5l-4 4 4 4v5H6v-5l4-4-4-4V2z"/>
|
|
503
|
+
</symbol>
|
|
504
|
+
|
|
505
|
+
<!-- Scroll / document (replaces 📜) -->
|
|
506
|
+
<symbol id="icon-scroll" viewBox="0 0 24 24">
|
|
507
|
+
<path d="M14 2H6a2 2 0 00-2 2v16a2 2 0 002 2h12a2 2 0 002-2V8z"/>
|
|
508
|
+
<polyline points="14 2 14 8 20 8"/>
|
|
509
|
+
<line x1="16" y1="13" x2="8" y2="13"/>
|
|
510
|
+
<line x1="16" y1="17" x2="8" y2="17"/>
|
|
511
|
+
</symbol>
|
|
512
|
+
|
|
513
|
+
<!-- Bolt / lightning (replaces ⚡) -->
|
|
514
|
+
<symbol id="icon-bolt" viewBox="0 0 24 24">
|
|
515
|
+
<polygon points="13 2 3 14 12 14 11 22 21 10 12 10 13 2"/>
|
|
516
|
+
</symbol>
|
|
517
|
+
|
|
518
|
+
<!-- Target / crosshair (replaces 🎯) -->
|
|
519
|
+
<symbol id="icon-target" viewBox="0 0 24 24">
|
|
520
|
+
<circle cx="12" cy="12" r="10"/>
|
|
521
|
+
<circle cx="12" cy="12" r="6"/>
|
|
522
|
+
<circle cx="12" cy="12" r="2"/>
|
|
523
|
+
</symbol>
|
|
524
|
+
|
|
525
|
+
<!-- Handshake / trust (replaces 🤝) -->
|
|
526
|
+
<symbol id="icon-handshake" viewBox="0 0 24 24">
|
|
527
|
+
<path d="M11 17l-3.5-3.5a2.12 2.12 0 013-3L14 14"/>
|
|
528
|
+
<path d="M20.88 7.12l-3.17 3.17"/>
|
|
529
|
+
<path d="M3.12 7.12l3.17 3.17"/>
|
|
530
|
+
<path d="M2 12h4"/>
|
|
531
|
+
<path d="M18 12h4"/>
|
|
532
|
+
<path d="M7.76 4.25L12 2l4.24 2.25"/>
|
|
533
|
+
</symbol>
|
|
534
|
+
|
|
535
|
+
<!-- Leaf / organic (replaces 🌿) -->
|
|
536
|
+
<symbol id="icon-leaf" viewBox="0 0 24 24">
|
|
537
|
+
<path d="M17 8C8 10 5.9 16.17 3.82 21.34l1.89.66.95-2.3c.48.17.98.3 1.34.3C19 20 22 3 22 3c-1 0-8 0-10 2"/>
|
|
538
|
+
<path d="M7 15c2-2 5.5-3 9-3"/>
|
|
539
|
+
</symbol>
|
|
540
|
+
|
|
541
|
+
<!-- Satellite (replaces 🛰) -->
|
|
542
|
+
<symbol id="icon-satellite" viewBox="0 0 24 24">
|
|
543
|
+
<path d="M13 7L9 3 5 7l4 4"/>
|
|
544
|
+
<path d="M17 11l4 4-4 4-4-4"/>
|
|
545
|
+
<line x1="8" y1="11" x2="13" y2="16"/>
|
|
546
|
+
<line x1="3" y1="21" x2="3.01" y2="21"/>
|
|
547
|
+
<path d="M6 18a3 3 0 000 0"/>
|
|
548
|
+
<path d="M9 15a6 6 0 000 0"/>
|
|
549
|
+
</symbol>
|
|
550
|
+
|
|
551
|
+
<!-- Phone / mobile (replaces 📱) -->
|
|
552
|
+
<symbol id="icon-phone" viewBox="0 0 24 24">
|
|
553
|
+
<rect x="5" y="2" width="14" height="20" rx="2"/>
|
|
554
|
+
<line x1="12" y1="18" x2="12.01" y2="18"/>
|
|
555
|
+
</symbol>
|
|
556
|
+
|
|
557
|
+
<!-- Masks / theater (replaces 🎭) -->
|
|
558
|
+
<symbol id="icon-masks" viewBox="0 0 24 24">
|
|
559
|
+
<circle cx="12" cy="12" r="10"/>
|
|
560
|
+
<path d="M8 14s1.5 2 4 2 4-2 4-2"/>
|
|
561
|
+
<line x1="9" y1="9" x2="9.01" y2="9"/>
|
|
562
|
+
<line x1="15" y1="9" x2="15.01" y2="9"/>
|
|
563
|
+
</symbol>
|
|
564
|
+
|
|
565
|
+
<!-- Stars / cosmos (replaces 🌌) -->
|
|
566
|
+
<symbol id="icon-cosmos" viewBox="0 0 24 24">
|
|
567
|
+
<polygon points="12 2 15.09 8.26 22 9.27 17 14.14 18.18 21.02 12 17.77 5.82 21.02 7 14.14 2 9.27 8.91 8.26 12 2"/>
|
|
568
|
+
</symbol>
|
|
569
|
+
|
|
570
|
+
<!-- Gem / diamond (replaces 💎) -->
|
|
571
|
+
<symbol id="icon-gem" viewBox="0 0 24 24">
|
|
572
|
+
<polygon points="6 3 18 3 22 9 12 22 2 9 6 3"/>
|
|
573
|
+
<line x1="2" y1="9" x2="22" y2="9"/>
|
|
574
|
+
<line x1="12" y1="22" x2="8" y2="9"/>
|
|
575
|
+
<line x1="12" y1="22" x2="16" y2="9"/>
|
|
576
|
+
<line x1="8" y1="9" x2="10" y2="3"/>
|
|
577
|
+
<line x1="16" y1="9" x2="14" y2="3"/>
|
|
578
|
+
</symbol>
|
|
579
|
+
|
|
580
|
+
<!-- Search / magnifying glass (replaces 🔍) -->
|
|
581
|
+
<symbol id="icon-search" viewBox="0 0 24 24">
|
|
582
|
+
<circle cx="11" cy="11" r="8"/>
|
|
583
|
+
<line x1="21" y1="21" x2="16.65" y2="16.65"/>
|
|
584
|
+
</symbol>
|
|
585
|
+
|
|
586
|
+
</svg>
|
|
587
|
+
<!-- YAKMESH-ICON-SPRITE-END -->
|
|
588
|
+
<a href="#mainContent" class="skip-link">Skip to main content</a>
|
|
589
|
+
|
|
590
|
+
<nav class="docs-sidebar" id="sidebar">
|
|
591
|
+
<a href="index.html" class="sidebar-logo"><span class="logo-icon"><svg class="doc-icon" aria-hidden="true"><use href="#icon-mountain"/></svg></span><span class="logo-text">Yakmesh</span></a>
|
|
592
|
+
<a href="/dashboard" class="sidebar-dashboard-link"><svg class="doc-icon" aria-hidden="true"><use href="#icon-dashboard"/></svg> <span>Dashboard</span></a>
|
|
593
|
+
<ul class="sidebar-nav">
|
|
594
|
+
<li class="sidebar-section"><span><svg class="doc-icon" aria-hidden="true"><use href="#icon-book"/></svg> Guides</span></li>
|
|
595
|
+
<li><a href="index.html"><svg class="doc-icon" aria-hidden="true"><use href="#icon-home"/></svg> <span>Overview</span></a></li>
|
|
596
|
+
<li><a href="getting-started.html"><svg class="doc-icon" aria-hidden="true"><use href="#icon-rocket"/></svg> <span>Getting Started</span></a></li>
|
|
597
|
+
<li><a href="tutorials.html"><svg class="doc-icon" aria-hidden="true"><use href="#icon-book"/></svg> <span>Tutorials</span></a></li>
|
|
598
|
+
<li class="sidebar-section"><span><svg class="doc-icon" aria-hidden="true"><use href="#icon-yak"/></svg> Protocol Stack</span></li>
|
|
599
|
+
<li><a href="yak-protocol.html"><svg class="doc-icon" aria-hidden="true"><use href="#icon-yak"/></svg> <span>YAK://</span></a></li>
|
|
600
|
+
<li><a href="annex.html"><svg class="doc-icon" aria-hidden="true"><use href="#icon-annex"/></svg> <span>ANNEX</span></a></li>
|
|
601
|
+
<li><a href="jhilke.html"><svg class="doc-icon" aria-hidden="true"><use href="#icon-jhilke"/></svg> <span>JHILKE</span></a></li>
|
|
602
|
+
<li><a href="nakpak.html"><svg class="doc-icon" aria-hidden="true"><use href="#icon-nakpak"/></svg> <span>NAKPAK</span></a></li>
|
|
603
|
+
<li><a href="namche.html"><svg class="doc-icon" aria-hidden="true"><use href="#icon-namche"/></svg> <span>NAMCHE</span></a></li>
|
|
604
|
+
<li><a href="doko.html"><svg class="doc-icon" aria-hidden="true"><use href="#icon-doko"/></svg> <span>DOKO</span></a></li>
|
|
605
|
+
<li><a href="sherpa.html"><svg class="doc-icon" aria-hidden="true"><use href="#icon-sherpa"/></svg> <span>SHERPA</span></a></li>
|
|
606
|
+
<li><a href="mandala.html"><svg class="doc-icon" aria-hidden="true"><use href="#icon-mandala"/></svg> <span>MANDALA</span></a></li>
|
|
607
|
+
<li><a href="mantra.html"><svg class="doc-icon" aria-hidden="true"><use href="#icon-mantra"/></svg> <span>MANTRA</span></a></li>
|
|
608
|
+
<li><a href="gumba.html"><svg class="doc-icon" aria-hidden="true"><use href="#icon-gumba"/></svg> <span>GUMBA</span></a></li>
|
|
609
|
+
<li><a href="yurt.html"><svg class="doc-icon" aria-hidden="true"><use href="#icon-yurt"/></svg> <span>YURT</span></a></li>
|
|
610
|
+
<li><a href="katha.html"><svg class="doc-icon" aria-hidden="true"><use href="#icon-katha"/></svg> <span>KATHA</span></a></li>
|
|
611
|
+
<li><a href="vani.html"><svg class="doc-icon" aria-hidden="true"><use href="#icon-vani"/></svg> <span>VANI</span></a></li>
|
|
612
|
+
<li><a href="darshan.html"><svg class="doc-icon" aria-hidden="true"><use href="#icon-darshan"/></svg> <span>DARSHAN</span></a></li>
|
|
613
|
+
<li><a href="stupa.html"><svg class="doc-icon" aria-hidden="true"><use href="#icon-stupa"/></svg> <span>STUPA</span></a></li>
|
|
614
|
+
<li><a href="lama.html"><svg class="doc-icon" aria-hidden="true"><use href="#icon-lama"/></svg> <span>LAMA</span></a></li>
|
|
615
|
+
<li><a href="mani.html"><svg class="doc-icon" aria-hidden="true"><use href="#icon-mani"/></svg> <span>MANI</span></a></li>
|
|
616
|
+
<li><a href="karma.html"><svg class="doc-icon" aria-hidden="true"><use href="#icon-karma"/></svg> <span>KARMA</span></a></li>
|
|
617
|
+
<li><a href="tattva.html"><svg class="doc-icon" aria-hidden="true"><use href="#icon-tattva"/></svg> <span>TATTVA</span></a></li>
|
|
618
|
+
<li><a href="tribhuj.html"><svg class="doc-icon" aria-hidden="true"><use href="#icon-tribhuj"/></svg> <span>TRIBHUJ</span></a></li>
|
|
619
|
+
<li><a href="ypc27.html"><svg class="doc-icon" aria-hidden="true"><use href="#icon-ypc27"/></svg> <span>YPC-27</span></a></li>
|
|
620
|
+
<li><a href="sakshi.html"><svg class="doc-icon" aria-hidden="true"><use href="#icon-sakshi"/></svg> <span>SAKSHI</span></a></li>
|
|
621
|
+
<li><a href="geo-proof.html"><svg class="doc-icon" aria-hidden="true"><use href="#icon-pramaan"/></svg> <span>PRAMAAN</span></a></li>
|
|
622
|
+
<li><a href="trust-security.html"><svg class="doc-icon" aria-hidden="true"><use href="#icon-suraksha"/></svg> <span>SURAKSHA</span></a></li>
|
|
623
|
+
<li><a href="tivra.html"><svg class="doc-icon" aria-hidden="true"><use href="#icon-tivra"/></svg> <span>TIVRA</span></a></li>
|
|
624
|
+
<li><a href="prahari.html"><svg class="doc-icon" aria-hidden="true"><use href="#icon-prahari"/></svg> <span>PRAHARI</span></a></li>
|
|
625
|
+
<li><a href="dharma.html"><svg class="doc-icon" aria-hidden="true"><use href="#icon-dharma"/></svg> <span>DHARMA</span></a></li>
|
|
626
|
+
<li><a href="seva.html"><svg class="doc-icon" aria-hidden="true"><use href="#icon-seva"/></svg> <span>SEVA</span></a></li>
|
|
627
|
+
<li><a href="docs-bundle.html"><svg class="doc-icon" aria-hidden="true"><use href="#icon-granth"/></svg> <span>GRANTH</span></a></li>
|
|
628
|
+
<li><a href="api.html"><svg class="doc-icon" aria-hidden="true"><use href="#icon-api"/></svg> <span>API</span></a></li>
|
|
629
|
+
<li><a href="adapters.html"><svg class="doc-icon" aria-hidden="true"><use href="#icon-adapters"/></svg> <span>Adapters</span></a></li>
|
|
630
|
+
<li class="sidebar-section"><span><svg class="doc-icon" aria-hidden="true"><use href="#icon-rocket"/></svg> Applications</span></li>
|
|
631
|
+
<li><a href="yakapp.html"><svg class="doc-icon" aria-hidden="true"><use href="#icon-yakapp"/></svg> <span>YakApp</span></a></li>
|
|
632
|
+
<li><a href="c2c.html" class="active"><svg class="doc-icon" aria-hidden="true"><use href="#icon-c2c"/></svg> <span>C2C</span></a></li>
|
|
633
|
+
<li><a href="studio.html"><svg class="doc-icon" aria-hidden="true"><use href="#icon-studio"/></svg> <span>Studio</span></a></li>
|
|
634
|
+
<li class="sidebar-section"><span><svg class="doc-icon" aria-hidden="true"><use href="#icon-gear"/></svg> Infrastructure</span></li>
|
|
635
|
+
<li><a href="cli.html"><svg class="doc-icon" aria-hidden="true"><use href="#icon-terminal"/></svg> <span>CLI</span></a></li>
|
|
636
|
+
<li><a href="configuration.html"><svg class="doc-icon" aria-hidden="true"><use href="#icon-gear"/></svg> <span>Configuration</span></a></li>
|
|
637
|
+
<li><a href="mesh.html"><svg class="doc-icon" aria-hidden="true"><use href="#icon-mandala"/></svg> <span>Mesh Network</span></a></li>
|
|
638
|
+
<li><a href="time-sources.html"><svg class="doc-icon" aria-hidden="true"><use href="#icon-mani"/></svg> <span>Time Sources</span></a></li>
|
|
639
|
+
<li><a href="webserver.html"><svg class="doc-icon" aria-hidden="true"><use href="#icon-server"/></svg> <span>Web Server</span></a></li>
|
|
640
|
+
<li><a href="advanced-systems.html"><svg class="doc-icon" aria-hidden="true"><use href="#icon-tivra"/></svg> <span>Advanced Systems</span></a></li>
|
|
641
|
+
<li class="sidebar-section"><span><svg class="doc-icon" aria-hidden="true"><use href="#icon-book"/></svg> Tutorials</span></li>
|
|
642
|
+
<li><a href="gumba-tutorial.html"><svg class="doc-icon" aria-hidden="true"><use href="#icon-gumba"/></svg> <span>GUMBA Tutorial</span></a></li>
|
|
643
|
+
<li class="sidebar-section"><span><svg class="doc-icon" aria-hidden="true"><use href="#icon-quickref"/></svg> Reference</span></li>
|
|
644
|
+
<li><a href="quick-reference.html"><svg class="doc-icon" aria-hidden="true"><use href="#icon-quickref"/></svg> <span>Quick Ref</span></a></li>
|
|
645
|
+
</ul>
|
|
646
|
+
</nav>
|
|
647
|
+
|
|
648
|
+
<button class="sidebar-toggle" id="sidebarToggle" title="Toggle sidebar">
|
|
649
|
+
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor">
|
|
650
|
+
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M11 19l-7-7 7-7m8 14l-7-7 7-7" />
|
|
651
|
+
</svg>
|
|
652
|
+
</button>
|
|
653
|
+
<div class="sidebar-overlay" id="sidebarOverlay"></div>
|
|
654
|
+
|
|
655
|
+
<main class="docs-main" id="mainContent">
|
|
656
|
+
<div class="docs-content">
|
|
657
|
+
<h1 class="text-4xl font-bold mb-4"><svg class="doc-icon inline-icon" width="24" height="24" aria-hidden="true"><use href="#icon-rocket"/></svg> C2C — Core to Cosmos</h1>
|
|
658
|
+
<p class="text-xl text-mountain-300 mb-8">Space strategy game shipping with yakmesh — the first application built on the full protocol stack.</p>
|
|
659
|
+
|
|
660
|
+
<!-- What is C2C -->
|
|
661
|
+
<section class="mb-12">
|
|
662
|
+
<h2 class="text-2xl font-bold mb-4">What is C2C?</h2>
|
|
663
|
+
<p class="text-mountain-300 mb-4">
|
|
664
|
+
<strong>Core to Cosmos</strong> (C2C) is a space strategy game with procedural planet generation,
|
|
665
|
+
AI-driven factions, and NPU-accelerated gameplay. It ships alongside yakmesh as a showcase
|
|
666
|
+
application demonstrating real-world use of the protocol stack.
|
|
667
|
+
</p>
|
|
668
|
+
<div class="grid md:grid-cols-2 gap-4 mb-6">
|
|
669
|
+
<div class="bg-mountain-800 rounded-xl p-6 border border-mountain-700">
|
|
670
|
+
<h3 class="text-lg font-semibold mb-2">Tech Stack</h3>
|
|
671
|
+
<ul class="text-mountain-400 text-sm space-y-1">
|
|
672
|
+
<li>React + Vite frontend</li>
|
|
673
|
+
<li>Node.js / Express backend</li>
|
|
674
|
+
<li>SQLite database</li>
|
|
675
|
+
<li>391 art assets</li>
|
|
676
|
+
<li>85/85 tests passing</li>
|
|
677
|
+
</ul>
|
|
678
|
+
</div>
|
|
679
|
+
<div class="bg-mountain-800 rounded-xl p-6 border border-mountain-700">
|
|
680
|
+
<h3 class="text-lg font-semibold mb-2">NPU Models</h3>
|
|
681
|
+
<ul class="text-mountain-400 text-sm space-y-1">
|
|
682
|
+
<li>8 AI models via DirectML</li>
|
|
683
|
+
<li>Planet generation & super-resolution</li>
|
|
684
|
+
<li>Faction AI decision-making</li>
|
|
685
|
+
<li>Combat prediction</li>
|
|
686
|
+
<li>Adaptive threat scaling</li>
|
|
687
|
+
</ul>
|
|
688
|
+
</div>
|
|
689
|
+
</div>
|
|
690
|
+
</section>
|
|
691
|
+
|
|
692
|
+
<!-- Yakmesh Integration Points -->
|
|
693
|
+
<section class="mb-12">
|
|
694
|
+
<h2 class="text-2xl font-bold mb-4">Yakmesh Integration</h2>
|
|
695
|
+
<p class="text-mountain-300 mb-4">
|
|
696
|
+
C2C uses several yakmesh subsystems for networking, encryption, time synchronization,
|
|
697
|
+
and distributed compute:
|
|
698
|
+
</p>
|
|
699
|
+
<div class="overflow-x-auto mb-6">
|
|
700
|
+
<table class="w-full bg-mountain-800 rounded-lg">
|
|
701
|
+
<thead>
|
|
702
|
+
<tr class="border-b border-mountain-700">
|
|
703
|
+
<th class="text-left p-3 text-mountain-300">Yakmesh System</th>
|
|
704
|
+
<th class="text-left p-3 text-mountain-300">C2C Usage</th>
|
|
705
|
+
</tr>
|
|
706
|
+
</thead>
|
|
707
|
+
<tbody>
|
|
708
|
+
<tr class="border-b border-mountain-700">
|
|
709
|
+
<td class="p-3"><a href="annex.html" class="theme-accent theme-accent-hover">ANNEX</a></td>
|
|
710
|
+
<td class="p-3 text-mountain-400">ML-KEM-768 encrypted WebSocket connections between game server and clients</td>
|
|
711
|
+
</tr>
|
|
712
|
+
<tr class="border-b border-mountain-700">
|
|
713
|
+
<td class="p-3"><a href="seva.html" class="theme-accent theme-accent-hover">SEVA</a></td>
|
|
714
|
+
<td class="p-3 text-mountain-400">5 NPU model slots (planet-variation, planet-heightmap, planet-superres, faction-brain, combat-predict) shared across the mesh</td>
|
|
715
|
+
</tr>
|
|
716
|
+
<tr class="border-b border-mountain-700">
|
|
717
|
+
<td class="p-3"><a href="tivra.html" class="theme-accent theme-accent-hover">TIVRA</a></td>
|
|
718
|
+
<td class="p-3 text-mountain-400">Hardware detection and ONNX model loading for local NPU inference</td>
|
|
719
|
+
</tr>
|
|
720
|
+
<tr class="border-b border-mountain-700">
|
|
721
|
+
<td class="p-3"><a href="mani.html" class="theme-accent theme-accent-hover">MANI</a></td>
|
|
722
|
+
<td class="p-3 text-mountain-400">Authoritative game clock — every tick, mutation, and NPU inference uses MANI time</td>
|
|
723
|
+
</tr>
|
|
724
|
+
<tr class="border-b border-mountain-700">
|
|
725
|
+
<td class="p-3"><a href="katha.html" class="theme-accent theme-accent-hover">KATHA</a></td>
|
|
726
|
+
<td class="p-3 text-mountain-400">In-game chat integrated via KOMM WebSocket</td>
|
|
727
|
+
</tr>
|
|
728
|
+
<tr>
|
|
729
|
+
<td class="p-3"><a href="studio.html" class="theme-accent theme-accent-hover">Studio</a></td>
|
|
730
|
+
<td class="p-3 text-mountain-400">Story mode for game chronicles and faction narratives</td>
|
|
731
|
+
</tr>
|
|
732
|
+
</tbody>
|
|
733
|
+
</table>
|
|
734
|
+
</div>
|
|
735
|
+
</section>
|
|
736
|
+
|
|
737
|
+
<!-- SEVA Model Slots -->
|
|
738
|
+
<section class="mb-12">
|
|
739
|
+
<h2 class="text-2xl font-bold mb-4">SEVA Model Slots</h2>
|
|
740
|
+
<p class="text-mountain-300 mb-4">
|
|
741
|
+
C2C registers 5 model slots with the <a href="seva.html" class="theme-accent theme-accent-hover">SEVA</a>
|
|
742
|
+
compute sharing protocol. When a player's machine lacks an NPU, SEVA transparently routes
|
|
743
|
+
inference to a peer node that has one:
|
|
744
|
+
</p>
|
|
745
|
+
<div class="space-y-3 mb-6">
|
|
746
|
+
<div class="bg-mountain-800 rounded-lg p-4">
|
|
747
|
+
<code class="theme-accent font-semibold">planet-variation</code>
|
|
748
|
+
<p class="text-mountain-400 text-sm mt-1">Generates planet variations from metadata. Input: 8-float parameter vector. Runs on NPU for real-time planet customization.</p>
|
|
749
|
+
</div>
|
|
750
|
+
<div class="bg-mountain-800 rounded-lg p-4">
|
|
751
|
+
<code class="theme-accent font-semibold">planet-heightmap</code>
|
|
752
|
+
<p class="text-mountain-400 text-sm mt-1">Procedural terrain heightmaps for planet surfaces. Creates unique geography per planet seed.</p>
|
|
753
|
+
</div>
|
|
754
|
+
<div class="bg-mountain-800 rounded-lg p-4">
|
|
755
|
+
<code class="theme-accent font-semibold">planet-superres</code>
|
|
756
|
+
<p class="text-mountain-400 text-sm mt-1">Super-resolution upscaling of planet textures. Low-res textures upscaled on NPU for visual quality.</p>
|
|
757
|
+
</div>
|
|
758
|
+
<div class="bg-mountain-800 rounded-lg p-4">
|
|
759
|
+
<code class="theme-accent font-semibold">faction-brain</code>
|
|
760
|
+
<p class="text-mountain-400 text-sm mt-1">AI faction decision-making. Scores actions, picks strategies, generates faction narratives, handles diplomacy.</p>
|
|
761
|
+
</div>
|
|
762
|
+
<div class="bg-mountain-800 rounded-lg p-4">
|
|
763
|
+
<code class="theme-accent font-semibold">combat-predict</code>
|
|
764
|
+
<p class="text-mountain-400 text-sm mt-1">Combat outcome prediction for battle resolution. Predicts winner probability given force composition.</p>
|
|
765
|
+
</div>
|
|
766
|
+
</div>
|
|
767
|
+
</section>
|
|
768
|
+
|
|
769
|
+
<!-- Architecture -->
|
|
770
|
+
<section class="mb-12">
|
|
771
|
+
<h2 class="text-2xl font-bold mb-4">Fallback Chain</h2>
|
|
772
|
+
<p class="text-mountain-300 mb-4">
|
|
773
|
+
C2C's client-side NPU integration uses a transparent fallback chain. The player never
|
|
774
|
+
knows which path was used — the experience is identical:
|
|
775
|
+
</p>
|
|
776
|
+
<div class="bg-mountain-800 rounded-xl p-6 border border-mountain-700 mb-6">
|
|
777
|
+
<ol class="list-decimal list-inside space-y-3 text-mountain-300">
|
|
778
|
+
<li><strong>HTTP API</strong> — Direct ONNX inference on game server's NPU/GPU</li>
|
|
779
|
+
<li><strong>WebSocket seva:work</strong> — If HTTP fails, route via WebSocket to server's NPU pool</li>
|
|
780
|
+
<li><strong>Mesh offload</strong> — If local server has no NPU, SEVA finds a mesh peer with one</li>
|
|
781
|
+
<li><strong>CPU fallback</strong> — Software computation, always available, always correct</li>
|
|
782
|
+
</ol>
|
|
783
|
+
</div>
|
|
784
|
+
</section>
|
|
785
|
+
|
|
786
|
+
<!-- Building Your Own Realm -->
|
|
787
|
+
<section class="mb-12">
|
|
788
|
+
<h2 class="text-2xl font-bold mb-4">Building Your Own Realm</h2>
|
|
789
|
+
<p class="text-mountain-300 mb-4">
|
|
790
|
+
C2C uses the <a href="adapters.html" class="theme-accent theme-accent-hover">Adapter</a> pattern for realms.
|
|
791
|
+
Each realm is a self-contained folder in <code class="theme-accent">c2c/server/realms/</code> with a manifest and
|
|
792
|
+
an optional narrative module. The server discovers and loads all realms at boot.
|
|
793
|
+
</p>
|
|
794
|
+
|
|
795
|
+
<h3 class="text-xl font-semibold mb-3">Realm Folder Structure</h3>
|
|
796
|
+
<pre class="language-javascript rounded-lg mb-6"><code>c2c/server/realms/
|
|
797
|
+
your-realm/
|
|
798
|
+
manifest.json # Required — realm definition
|
|
799
|
+
narrative.js # Optional — NPU narrative voice</code></pre>
|
|
800
|
+
|
|
801
|
+
<h3 class="text-xl font-semibold mb-3">Manifest Skeleton</h3>
|
|
802
|
+
<p class="text-mountain-300 mb-4">
|
|
803
|
+
The <code class="theme-accent">manifest.json</code> defines everything the server needs to register your realm,
|
|
804
|
+
create NPC factions, and drive the story arc system. Here is the minimum required structure:
|
|
805
|
+
</p>
|
|
806
|
+
<pre class="language-javascript rounded-lg mb-6"><code>{
|
|
807
|
+
"id": "my-realm",
|
|
808
|
+
"name": "My Realm",
|
|
809
|
+
"slug": "my-realm",
|
|
810
|
+
"mode": "sandbox", // sandbox | coop-pve | pvp
|
|
811
|
+
"description": "A custom realm for...",
|
|
812
|
+
"max_players": 100,
|
|
813
|
+
|
|
814
|
+
"config": {
|
|
815
|
+
"aesthetic": {
|
|
816
|
+
"palette": ["#0A0A1A", "#2D1B69", "#FF6600"],
|
|
817
|
+
"theme": "nebula-dark",
|
|
818
|
+
"accent": "#FF6600"
|
|
819
|
+
},
|
|
820
|
+
"gameplay": {
|
|
821
|
+
// Your realm-specific game rules
|
|
822
|
+
}
|
|
823
|
+
},
|
|
824
|
+
|
|
825
|
+
"factions": [ /* ... */ ],
|
|
826
|
+
"npcs": [ /* ... */ ],
|
|
827
|
+
"arcs": [ /* ... */ ]
|
|
828
|
+
}</code></pre>
|
|
829
|
+
|
|
830
|
+
<h3 class="text-xl font-semibold mb-3">Game Modes</h3>
|
|
831
|
+
<div class="overflow-x-auto mb-6">
|
|
832
|
+
<table class="w-full bg-mountain-800 rounded-lg">
|
|
833
|
+
<thead>
|
|
834
|
+
<tr class="border-b border-mountain-700">
|
|
835
|
+
<th class="text-left p-3 text-mountain-300">Mode</th>
|
|
836
|
+
<th class="text-left p-3 text-mountain-300">Description</th>
|
|
837
|
+
</tr>
|
|
838
|
+
</thead>
|
|
839
|
+
<tbody>
|
|
840
|
+
<tr class="border-b border-mountain-700">
|
|
841
|
+
<td class="p-3"><code class="theme-accent">sandbox</code></td>
|
|
842
|
+
<td class="p-3 text-mountain-400">Open-ended play, no NPC antagonist, player-driven economy</td>
|
|
843
|
+
</tr>
|
|
844
|
+
<tr class="border-b border-mountain-700">
|
|
845
|
+
<td class="p-3"><code class="theme-accent">coop-pve</code></td>
|
|
846
|
+
<td class="p-3 text-mountain-400">Players unite against NPU-driven NPC factions (e.g. Obsidian Scion)</td>
|
|
847
|
+
</tr>
|
|
848
|
+
<tr>
|
|
849
|
+
<td class="p-3"><code class="theme-accent">pvp</code></td>
|
|
850
|
+
<td class="p-3 text-mountain-400">Player-vs-player competitive with faction allegiances</td>
|
|
851
|
+
</tr>
|
|
852
|
+
</tbody>
|
|
853
|
+
</table>
|
|
854
|
+
</div>
|
|
855
|
+
|
|
856
|
+
<h3 class="text-xl font-semibold mb-3">Defining Factions</h3>
|
|
857
|
+
<p class="text-mountain-300 mb-4">
|
|
858
|
+
Each faction has a personality that drives the NPU decision-making, custom units, buildings,
|
|
859
|
+
and mutable state that evolves as arcs progress:
|
|
860
|
+
</p>
|
|
861
|
+
<pre class="language-javascript rounded-lg mb-6"><code>{
|
|
862
|
+
"name": "The Swarm",
|
|
863
|
+
"tag": "SWRM",
|
|
864
|
+
"faction_type": "npc", // npc | player
|
|
865
|
+
"alignment": "hostile", // hostile | friendly | neutral
|
|
866
|
+
"capabilities": {
|
|
867
|
+
"units": [
|
|
868
|
+
{ "id": "drone", "name": "Hive Drone",
|
|
869
|
+
"attack": 60, "hull": 150, "shield": 20, "speed": 12000,
|
|
870
|
+
"desc": "Fast expendable swarm unit." }
|
|
871
|
+
],
|
|
872
|
+
"buildings": [
|
|
873
|
+
{ "id": "hive_spire", "name": "Hive Spire",
|
|
874
|
+
"desc": "Spawns drones. More spires = faster spawn rate." }
|
|
875
|
+
]
|
|
876
|
+
},
|
|
877
|
+
"personality": {
|
|
878
|
+
"aggression": 0.9,
|
|
879
|
+
"expansion_priority": 0.8,
|
|
880
|
+
"diplomacy_willingness": 0.0,
|
|
881
|
+
"target_preference": "nearest_first",
|
|
882
|
+
"retreat_threshold": 0.05,
|
|
883
|
+
"npu_voice": "hive_queen" // Links to narrative.js voice
|
|
884
|
+
},
|
|
885
|
+
"state": {
|
|
886
|
+
"phase": "dormant",
|
|
887
|
+
"planets_controlled": 0,
|
|
888
|
+
"threat_level": 0
|
|
889
|
+
}
|
|
890
|
+
}</code></pre>
|
|
891
|
+
|
|
892
|
+
<h3 class="text-xl font-semibold mb-3">Story Arcs</h3>
|
|
893
|
+
<p class="text-mountain-300 mb-4">
|
|
894
|
+
Arcs are narrative phases that unlock progressively. Each arc has a trigger condition
|
|
895
|
+
and rewards. The server evaluates triggers every realm tick (30 seconds):
|
|
896
|
+
</p>
|
|
897
|
+
<pre class="language-javascript rounded-lg mb-6"><code>{
|
|
898
|
+
"name": "First Contact",
|
|
899
|
+
"slug": "first_contact",
|
|
900
|
+
"phase_number": 2,
|
|
901
|
+
"trigger_type": "event", // player_count | event |
|
|
902
|
+
// faction_state | community_goal
|
|
903
|
+
"trigger_config": {
|
|
904
|
+
"event": "alien_base_discovered",
|
|
905
|
+
"count": 1
|
|
906
|
+
},
|
|
907
|
+
"rewards_config": {
|
|
908
|
+
"resources": { "metal": 15000, "crystal": 10000, "deuterium": 5000 },
|
|
909
|
+
"npc_unlock": "aktai"
|
|
910
|
+
},
|
|
911
|
+
"description": "An alien scout probe is detected..."
|
|
912
|
+
}</code></pre>
|
|
913
|
+
<div class="overflow-x-auto mb-6">
|
|
914
|
+
<table class="w-full bg-mountain-800 rounded-lg">
|
|
915
|
+
<thead>
|
|
916
|
+
<tr class="border-b border-mountain-700">
|
|
917
|
+
<th class="text-left p-3 text-mountain-300">Trigger Type</th>
|
|
918
|
+
<th class="text-left p-3 text-mountain-300">Fires When</th>
|
|
919
|
+
</tr>
|
|
920
|
+
</thead>
|
|
921
|
+
<tbody>
|
|
922
|
+
<tr class="border-b border-mountain-700">
|
|
923
|
+
<td class="p-3"><code class="theme-accent">player_count</code></td>
|
|
924
|
+
<td class="p-3 text-mountain-400">Realm reaches <code>min_players</code> members</td>
|
|
925
|
+
</tr>
|
|
926
|
+
<tr class="border-b border-mountain-700">
|
|
927
|
+
<td class="p-3"><code class="theme-accent">event</code></td>
|
|
928
|
+
<td class="p-3 text-mountain-400">A game event fires N times (discovery, combat, etc.)</td>
|
|
929
|
+
</tr>
|
|
930
|
+
<tr class="border-b border-mountain-700">
|
|
931
|
+
<td class="p-3"><code class="theme-accent">faction_state</code></td>
|
|
932
|
+
<td class="p-3 text-mountain-400">NPC faction state matches a condition (e.g. <code>planets_controlled >= 5</code>)</td>
|
|
933
|
+
</tr>
|
|
934
|
+
<tr>
|
|
935
|
+
<td class="p-3"><code class="theme-accent">community_goal</code></td>
|
|
936
|
+
<td class="p-3 text-mountain-400">Players collectively reach a threshold (alliance size, research, etc.)</td>
|
|
937
|
+
</tr>
|
|
938
|
+
</tbody>
|
|
939
|
+
</table>
|
|
940
|
+
</div>
|
|
941
|
+
|
|
942
|
+
<h3 class="text-xl font-semibold mb-3">NPCs</h3>
|
|
943
|
+
<p class="text-mountain-300 mb-4">
|
|
944
|
+
NPCs are quest givers, antagonists, or wild cards. They appear when their arc unlocks
|
|
945
|
+
and speak through the narrative module:
|
|
946
|
+
</p>
|
|
947
|
+
<pre class="language-javascript rounded-lg mb-6"><code>{
|
|
948
|
+
"id": "hive_queen",
|
|
949
|
+
"name": "The Hive Queen",
|
|
950
|
+
"role": "antagonist", // quest_giver | antagonist |
|
|
951
|
+
// mini_boss | wild_card
|
|
952
|
+
"title": "Mother of Drones",
|
|
953
|
+
"bio": "A vast intelligence distributed across a million bodies...",
|
|
954
|
+
"appears_in_arc": "first_contact",
|
|
955
|
+
"dialogue_tags": ["alien", "collective", "hungry"]
|
|
956
|
+
}</code></pre>
|
|
957
|
+
|
|
958
|
+
<h3 class="text-xl font-semibold mb-3">Narrative Voice Module</h3>
|
|
959
|
+
<p class="text-mountain-300 mb-4">
|
|
960
|
+
The optional <code class="theme-accent">narrative.js</code> gives your realm a unique writing voice.
|
|
961
|
+
It exports vocabulary, dialogue templates, and event narration that the server
|
|
962
|
+
uses for chat messages, notifications, and arc descriptions:
|
|
963
|
+
</p>
|
|
964
|
+
<pre class="language-javascript rounded-lg mb-6"><code>// c2c/server/realms/my-realm/narrative.js
|
|
965
|
+
import { createLogger } from '../../lib/logger.js';
|
|
966
|
+
const log = createLogger('narrative');
|
|
967
|
+
|
|
968
|
+
const _registry = {};
|
|
969
|
+
|
|
970
|
+
export function register(realmSlug) {
|
|
971
|
+
_registry.slug = realmSlug;
|
|
972
|
+
log.info({ realmSlug }, 'My realm voice registered');
|
|
973
|
+
}
|
|
974
|
+
|
|
975
|
+
// Vocabulary pools — used by the server for procedural narration
|
|
976
|
+
export const ADJECTIVES = [
|
|
977
|
+
'chitinous', 'swarming', 'relentless', 'buzzing', 'vast',
|
|
978
|
+
];
|
|
979
|
+
|
|
980
|
+
export const VERBS = [
|
|
981
|
+
'swarm over', 'consume', 'burrow into', 'engulf', 'devour',
|
|
982
|
+
];
|
|
983
|
+
|
|
984
|
+
// NPC dialogue templates ($LOCATION replaced at runtime)
|
|
985
|
+
export const NPC_DIALOGUE = {
|
|
986
|
+
hive_queen: {
|
|
987
|
+
greeting: [
|
|
988
|
+
'We are many. You are few. The arithmetic is clear.',
|
|
989
|
+
'Every world you lose feeds a thousand of our young.',
|
|
990
|
+
],
|
|
991
|
+
mission_brief: [
|
|
992
|
+
'The hive detects weakness at $LOCATION. We hunger.',
|
|
993
|
+
],
|
|
994
|
+
},
|
|
995
|
+
};</code></pre>
|
|
996
|
+
|
|
997
|
+
<h3 class="text-xl font-semibold mb-3">Tech Tree Extensions</h3>
|
|
998
|
+
<p class="text-mountain-300 mb-4">
|
|
999
|
+
Realms can define custom technologies that unlock through arc progression.
|
|
1000
|
+
Each tech has resource costs, research time, and a description:
|
|
1001
|
+
</p>
|
|
1002
|
+
<pre class="language-javascript rounded-lg mb-6"><code>"tech_tree_extensions": {
|
|
1003
|
+
"hive_biotech": {
|
|
1004
|
+
"unlock_condition": "arc:first_contact",
|
|
1005
|
+
"techs": [
|
|
1006
|
+
{
|
|
1007
|
+
"id": "chitin_armour",
|
|
1008
|
+
"name": "Chitin Plating",
|
|
1009
|
+
"cost": { "metal": 30000, "crystal": 15000 },
|
|
1010
|
+
"time": 5400,
|
|
1011
|
+
"desc": "Armour harvested from drone carapaces. +10% hull."
|
|
1012
|
+
}
|
|
1013
|
+
]
|
|
1014
|
+
}
|
|
1015
|
+
}</code></pre>
|
|
1016
|
+
|
|
1017
|
+
<div class="theme-callout border rounded-xl p-6 mb-6">
|
|
1018
|
+
<h3 class="text-lg font-semibold mb-2">How It Works</h3>
|
|
1019
|
+
<p class="text-mountain-300 mb-3">
|
|
1020
|
+
Drop your realm folder into <code class="theme-accent">c2c/server/realms/</code> and restart the server.
|
|
1021
|
+
The <strong>realm loader</strong> auto-discovers it, registers the realm in the database,
|
|
1022
|
+
inserts factions and arcs, and loads the narrative module. No code changes needed.
|
|
1023
|
+
</p>
|
|
1024
|
+
<p class="text-mountain-400 text-sm">
|
|
1025
|
+
See the built-in <code class="theme-accent">obsidian-scion/</code> realm for a complete reference implementation
|
|
1026
|
+
with 6 story arcs, 6 NPCs, 2 factions, custom tech trees, and a full narrative voice.
|
|
1027
|
+
</p>
|
|
1028
|
+
</div>
|
|
1029
|
+
</section>
|
|
1030
|
+
|
|
1031
|
+
<!-- AI Profiles -->
|
|
1032
|
+
<section class="mb-12">
|
|
1033
|
+
<h2 class="text-2xl font-bold mb-4 flex items-center gap-2"><svg class="doc-icon inline-icon" width="24" height="24" aria-hidden="true"><use href="#icon-gear"/></svg> AI Profiles</h2>
|
|
1034
|
+
<p class="text-mountain-300 mb-6">
|
|
1035
|
+
AI Profiles give players control over NPC faction behaviour. Instead of being locked to the personality
|
|
1036
|
+
baked into a realm manifest, players can select preset profiles, build custom personalities via sliders,
|
|
1037
|
+
or describe one in plain text and let the NPU generate a personality vector.
|
|
1038
|
+
</p>
|
|
1039
|
+
|
|
1040
|
+
<h3 class="text-lg font-semibold mb-3">Three Tiers</h3>
|
|
1041
|
+
<div class="bg-mountain-800 rounded-xl p-6 border border-mountain-700 mb-6">
|
|
1042
|
+
<table class="w-full">
|
|
1043
|
+
<thead><tr class="border-b border-mountain-700">
|
|
1044
|
+
<th class="text-left p-3 text-mountain-300">Tier</th>
|
|
1045
|
+
<th class="text-left p-3 text-mountain-300">Source</th>
|
|
1046
|
+
<th class="text-left p-3 text-mountain-300">How</th>
|
|
1047
|
+
</tr></thead>
|
|
1048
|
+
<tbody>
|
|
1049
|
+
<tr class="border-b border-mountain-700/50">
|
|
1050
|
+
<td class="p-3"><span class="theme-badge px-2 py-1 rounded">Preset</span></td>
|
|
1051
|
+
<td class="p-3 text-mountain-400">Realm manifest</td>
|
|
1052
|
+
<td class="p-3 text-mountain-400">Select from built-in profiles — Berserker, Turtle, Diplomat, Expansionist, Balanced</td>
|
|
1053
|
+
</tr>
|
|
1054
|
+
<tr class="border-b border-mountain-700/50">
|
|
1055
|
+
<td class="p-3"><span class="theme-badge px-2 py-1 rounded">Custom</span></td>
|
|
1056
|
+
<td class="p-3 text-mountain-400">Slider UI</td>
|
|
1057
|
+
<td class="p-3 text-mountain-400">Set each personality axis (aggression, expansion, diplomacy, target pref, retreat threshold) manually</td>
|
|
1058
|
+
</tr>
|
|
1059
|
+
<tr>
|
|
1060
|
+
<td class="p-3"><span class="theme-badge px-2 py-1 rounded">NPU-Generated</span></td>
|
|
1061
|
+
<td class="p-3 text-mountain-400">Text description</td>
|
|
1062
|
+
<td class="p-3 text-mountain-400">Describe the AI you want in plain language — the NPU faction-brain model maps it to a personality vector</td>
|
|
1063
|
+
</tr>
|
|
1064
|
+
</tbody>
|
|
1065
|
+
</table>
|
|
1066
|
+
</div>
|
|
1067
|
+
|
|
1068
|
+
<h3 class="text-lg font-semibold mb-3">Personality Shape</h3>
|
|
1069
|
+
<p class="text-mountain-300 mb-3">
|
|
1070
|
+
Every profile stores the same personality object used by NPC factions. The <a href="seva.html" class="text-theme-accent hover:underline">SEVA</a>
|
|
1071
|
+
faction-brain model reads these numbers to drive NPC decision-making via NPU inference.
|
|
1072
|
+
</p>
|
|
1073
|
+
<pre class="theme-pre"><code class="language-json">{
|
|
1074
|
+
"aggression": 0.85, // 0 = pacifist, 1 = berserk
|
|
1075
|
+
"expansion_priority": 0.9, // 0 = hunker down, 1 = claim everything
|
|
1076
|
+
"diplomacy_willingness": 0.0, // 0 = no talks, 1 = always negotiate
|
|
1077
|
+
"target_preference": "weakest_first", // weakest_first | strongest_first | nearest | defensive
|
|
1078
|
+
"retreat_threshold": 0.15 // 0 = never retreat, 1 = flee at first scratch
|
|
1079
|
+
}</code></pre>
|
|
1080
|
+
|
|
1081
|
+
<h3 class="text-lg font-semibold mb-3 mt-6">Adding Presets to a Manifest</h3>
|
|
1082
|
+
<p class="text-mountain-300 mb-3">
|
|
1083
|
+
Realm creators add an <code class="theme-accent">ai_profiles</code> array to their <code class="theme-accent">manifest.json</code>.
|
|
1084
|
+
The realm loader seeds them into the database automatically at boot.
|
|
1085
|
+
</p>
|
|
1086
|
+
<pre class="theme-pre"><code class="language-json">"ai_profiles": [
|
|
1087
|
+
{
|
|
1088
|
+
"name": "Berserker",
|
|
1089
|
+
"description": "All-out aggression. Attacks relentlessly, never retreats.",
|
|
1090
|
+
"personality": {
|
|
1091
|
+
"aggression": 1.0,
|
|
1092
|
+
"expansion_priority": 0.7,
|
|
1093
|
+
"diplomacy_willingness": 0.0,
|
|
1094
|
+
"target_preference": "strongest_first",
|
|
1095
|
+
"retreat_threshold": 0.0
|
|
1096
|
+
},
|
|
1097
|
+
"dialogue_tags": ["fierce", "reckless", "relentless"]
|
|
1098
|
+
}
|
|
1099
|
+
]</code></pre>
|
|
1100
|
+
|
|
1101
|
+
<h3 class="text-lg font-semibold mb-3 mt-6">API Endpoints</h3>
|
|
1102
|
+
<div class="bg-mountain-800 rounded-xl p-6 border border-mountain-700 mb-6">
|
|
1103
|
+
<table class="w-full">
|
|
1104
|
+
<thead><tr class="border-b border-mountain-700">
|
|
1105
|
+
<th class="text-left p-3 text-mountain-300">Method</th>
|
|
1106
|
+
<th class="text-left p-3 text-mountain-300">Endpoint</th>
|
|
1107
|
+
<th class="text-left p-3 text-mountain-300">Description</th>
|
|
1108
|
+
</tr></thead>
|
|
1109
|
+
<tbody class="text-sm">
|
|
1110
|
+
<tr class="border-b border-mountain-700/50">
|
|
1111
|
+
<td class="p-3"><code class="text-green-400">GET</code></td>
|
|
1112
|
+
<td class="p-3 text-mountain-400"><code>/realms/:id/ai-profiles</code></td>
|
|
1113
|
+
<td class="p-3 text-mountain-400">List presets + your custom profiles</td>
|
|
1114
|
+
</tr>
|
|
1115
|
+
<tr class="border-b border-mountain-700/50">
|
|
1116
|
+
<td class="p-3"><code class="text-green-400">POST</code></td>
|
|
1117
|
+
<td class="p-3 text-mountain-400"><code>/realms/:id/ai-profiles</code></td>
|
|
1118
|
+
<td class="p-3 text-mountain-400">Create a custom profile</td>
|
|
1119
|
+
</tr>
|
|
1120
|
+
<tr class="border-b border-mountain-700/50">
|
|
1121
|
+
<td class="p-3"><code class="text-yellow-400">PUT</code></td>
|
|
1122
|
+
<td class="p-3 text-mountain-400"><code>/realms/:id/ai-profiles/:profileId</code></td>
|
|
1123
|
+
<td class="p-3 text-mountain-400">Update your custom profile</td>
|
|
1124
|
+
</tr>
|
|
1125
|
+
<tr class="border-b border-mountain-700/50">
|
|
1126
|
+
<td class="p-3"><code class="text-red-400">DELETE</code></td>
|
|
1127
|
+
<td class="p-3 text-mountain-400"><code>/realms/:id/ai-profiles/:profileId</code></td>
|
|
1128
|
+
<td class="p-3 text-mountain-400">Delete your custom profile</td>
|
|
1129
|
+
</tr>
|
|
1130
|
+
<tr class="border-b border-mountain-700/50">
|
|
1131
|
+
<td class="p-3"><code class="text-green-400">POST</code></td>
|
|
1132
|
+
<td class="p-3 text-mountain-400"><code>/realms/:id/ai-profiles/:profileId/apply</code></td>
|
|
1133
|
+
<td class="p-3 text-mountain-400">Apply a profile to a faction</td>
|
|
1134
|
+
</tr>
|
|
1135
|
+
<tr>
|
|
1136
|
+
<td class="p-3"><code class="text-green-400">POST</code></td>
|
|
1137
|
+
<td class="p-3 text-mountain-400"><code>/realms/:id/ai-profiles/generate</code></td>
|
|
1138
|
+
<td class="p-3 text-mountain-400">NPU-generate a profile from text</td>
|
|
1139
|
+
</tr>
|
|
1140
|
+
</tbody>
|
|
1141
|
+
</table>
|
|
1142
|
+
</div>
|
|
1143
|
+
|
|
1144
|
+
<h3 class="text-lg font-semibold mb-3">NPU Generation Example</h3>
|
|
1145
|
+
<p class="text-mountain-300 mb-3">
|
|
1146
|
+
Describe what you want in natural language. The faction-brain SEVA slot converts it into a personality vector
|
|
1147
|
+
using keyword extraction (CPU fallback) or NPU inference (when SEVA is online).
|
|
1148
|
+
</p>
|
|
1149
|
+
<pre class="theme-pre"><code class="language-javascript">// POST /realms/:realmId/ai-profiles/generate
|
|
1150
|
+
const res = await fetch(`/api/game/realms/${realmId}/ai-profiles/generate`, {
|
|
1151
|
+
method: 'POST',
|
|
1152
|
+
headers: { 'Content-Type': 'application/json' },
|
|
1153
|
+
body: JSON.stringify({
|
|
1154
|
+
description: 'A ruthless conqueror who crushes the weak and expands relentlessly across every star system'
|
|
1155
|
+
})
|
|
1156
|
+
});
|
|
1157
|
+
|
|
1158
|
+
const { profile } = await res.json();
|
|
1159
|
+
// profile.personality → { aggression: 0.95, expansion_priority: 0.9, ... }
|
|
1160
|
+
// profile.dialogue_tags → ["fierce"]
|
|
1161
|
+
// profile.source → "npu_generated"</code></pre>
|
|
1162
|
+
|
|
1163
|
+
<div class="theme-callout border rounded-xl p-6 mb-6 mt-6">
|
|
1164
|
+
<h3 class="text-lg font-semibold mb-2">Applying a Profile</h3>
|
|
1165
|
+
<p class="text-mountain-300 mb-3">
|
|
1166
|
+
Once created or selected, apply a profile to any NPC faction in your realm. The personality vector merges
|
|
1167
|
+
into the faction's existing config — faction-specific fields like <code class="theme-accent">npu_voice</code>
|
|
1168
|
+
and <code class="theme-accent">taunts</code> are preserved, while the core personality axes get overwritten
|
|
1169
|
+
with your chosen profile.
|
|
1170
|
+
</p>
|
|
1171
|
+
<p class="text-mountain-400 text-sm">
|
|
1172
|
+
Up to 20 custom profiles per realm per player. Presets are unlimited and shared across all players.
|
|
1173
|
+
</p>
|
|
1174
|
+
</div>
|
|
1175
|
+
</section>
|
|
1176
|
+
|
|
1177
|
+
<!-- Version History -->
|
|
1178
|
+
<section class="mb-12">
|
|
1179
|
+
<h2 class="text-2xl font-bold mb-4 flex items-center gap-2"><svg class="doc-icon inline-icon" width="24" height="24" aria-hidden="true"><use href="#icon-hourglass"/></svg> Version History</h2>
|
|
1180
|
+
<div class="bg-mountain-800 rounded-xl p-6 border border-mountain-700">
|
|
1181
|
+
<table class="w-full">
|
|
1182
|
+
<thead><tr class="border-b border-mountain-700">
|
|
1183
|
+
<th class="text-left p-3 text-mountain-300">Version</th>
|
|
1184
|
+
<th class="text-left p-3 text-mountain-300">Changes</th>
|
|
1185
|
+
</tr></thead>
|
|
1186
|
+
<tbody>
|
|
1187
|
+
<tr>
|
|
1188
|
+
<td class="p-3"><span class="theme-badge px-2 py-1 rounded">v3.0.0</span></td>
|
|
1189
|
+
<td class="p-3 text-mountain-400">C2C ships with yakmesh. Full SEVA integration, 8 AI models, MANI time protocol, ANNEX encryption, 391 art assets, 85/85 tests.</td>
|
|
1190
|
+
</tr>
|
|
1191
|
+
</tbody>
|
|
1192
|
+
</table>
|
|
1193
|
+
</div>
|
|
1194
|
+
</section>
|
|
1195
|
+
|
|
1196
|
+
<!-- Journey Navigation -->
|
|
1197
|
+
<div class="border-t border-mountain-700 mt-12 pt-8">
|
|
1198
|
+
<h2 class="text-xl font-bold mb-6">Continue the Journey</h2>
|
|
1199
|
+
<div class="flex flex-col sm:flex-row gap-4">
|
|
1200
|
+
<a href="yakapp.html" class="flex-1 block bg-mountain-800 border border-mountain-700 rounded-xl p-4 hover:border-theme-accent transition group">
|
|
1201
|
+
<div class="text-xs text-mountain-400 mb-1">← Previous</div>
|
|
1202
|
+
<div class="flex items-center gap-2">
|
|
1203
|
+
<svg class="doc-icon journey-icon" aria-hidden="true"><use href="#icon-yakapp"/></svg>
|
|
1204
|
+
<span class="font-semibold group-hover:text-theme-accent">YakApp</span>
|
|
1205
|
+
</div>
|
|
1206
|
+
<p class="text-mountain-400 text-sm mt-1">P2P messenger</p>
|
|
1207
|
+
</a>
|
|
1208
|
+
<a href="studio.html" class="flex-1 block bg-mountain-800 border border-theme-primary rounded-xl p-4 hover:border-theme-accent transition group">
|
|
1209
|
+
<div class="text-xs text-mountain-400 mb-1">Next →</div>
|
|
1210
|
+
<div class="flex items-center gap-2">
|
|
1211
|
+
<svg class="doc-icon journey-icon" aria-hidden="true"><use href="#icon-studio"/></svg>
|
|
1212
|
+
<span class="font-semibold group-hover:text-theme-accent">Studio</span>
|
|
1213
|
+
</div>
|
|
1214
|
+
<p class="text-mountain-400 text-sm mt-1">YakApp Studio creative suite</p>
|
|
1215
|
+
</a>
|
|
1216
|
+
</div>
|
|
1217
|
+
</div>
|
|
1218
|
+
</main>
|
|
1219
|
+
|
|
1220
|
+
<footer class="docs-footer"><p>© 2026 YAKMESH™</p></footer>
|
|
1221
|
+
<script src="prism.min.js" defer></script>
|
|
1222
|
+
<script src="prism-javascript.min.js" defer></script>
|
|
1223
|
+
<script src="docs.js" defer></script>
|
|
1224
|
+
</body>
|
|
1225
|
+
</html>
|