@terminals-tech/agent-zero 1.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.
Files changed (263) hide show
  1. package/README.md +209 -0
  2. package/bin/agent-zero.js +332 -0
  3. package/dist/agency/commandRouter.d.ts +48 -0
  4. package/dist/agency/commandRouter.d.ts.map +1 -0
  5. package/dist/agency/commandRouter.js +343 -0
  6. package/dist/agency/commandRouter.js.map +1 -0
  7. package/dist/agency/runtime.d.ts +66 -0
  8. package/dist/agency/runtime.d.ts.map +1 -0
  9. package/dist/agency/runtime.js +247 -0
  10. package/dist/agency/runtime.js.map +1 -0
  11. package/dist/agency/summaryGenerator.d.ts +39 -0
  12. package/dist/agency/summaryGenerator.d.ts.map +1 -0
  13. package/dist/agency/summaryGenerator.js +110 -0
  14. package/dist/agency/summaryGenerator.js.map +1 -0
  15. package/dist/agency/summaryScheduler.d.ts +33 -0
  16. package/dist/agency/summaryScheduler.d.ts.map +1 -0
  17. package/dist/agency/summaryScheduler.js +68 -0
  18. package/dist/agency/summaryScheduler.js.map +1 -0
  19. package/dist/browser/agent-runtime/RuntimePanel.d.ts +20 -0
  20. package/dist/browser/agent-runtime/RuntimePanel.d.ts.map +1 -0
  21. package/dist/browser/agent-runtime/RuntimePanel.js +203 -0
  22. package/dist/browser/agent-runtime/RuntimePanel.js.map +1 -0
  23. package/dist/browser/agent-runtime/config.d.ts +28 -0
  24. package/dist/browser/agent-runtime/config.d.ts.map +1 -0
  25. package/dist/browser/agent-runtime/config.js +50 -0
  26. package/dist/browser/agent-runtime/config.js.map +1 -0
  27. package/dist/browser/agent-runtime/launcher.d.ts +71 -0
  28. package/dist/browser/agent-runtime/launcher.d.ts.map +1 -0
  29. package/dist/browser/agent-runtime/launcher.js +167 -0
  30. package/dist/browser/agent-runtime/launcher.js.map +1 -0
  31. package/dist/browser/rail-auth-bridge.d.ts +85 -0
  32. package/dist/browser/rail-auth-bridge.d.ts.map +1 -0
  33. package/dist/browser/rail-auth-bridge.js +209 -0
  34. package/dist/browser/rail-auth-bridge.js.map +1 -0
  35. package/dist/channels/index.d.ts +13 -0
  36. package/dist/channels/index.d.ts.map +1 -0
  37. package/dist/channels/index.js +12 -0
  38. package/dist/channels/index.js.map +1 -0
  39. package/dist/channels/moltbook.d.ts +114 -0
  40. package/dist/channels/moltbook.d.ts.map +1 -0
  41. package/dist/channels/moltbook.js +348 -0
  42. package/dist/channels/moltbook.js.map +1 -0
  43. package/dist/channels/sms.d.ts +33 -0
  44. package/dist/channels/sms.d.ts.map +1 -0
  45. package/dist/channels/sms.js +160 -0
  46. package/dist/channels/sms.js.map +1 -0
  47. package/dist/channels/telegram.d.ts +47 -0
  48. package/dist/channels/telegram.d.ts.map +1 -0
  49. package/dist/channels/telegram.js +276 -0
  50. package/dist/channels/telegram.js.map +1 -0
  51. package/dist/channels/twitter.d.ts +93 -0
  52. package/dist/channels/twitter.d.ts.map +1 -0
  53. package/dist/channels/twitter.js +411 -0
  54. package/dist/channels/twitter.js.map +1 -0
  55. package/dist/channels/whatsapp.d.ts +77 -0
  56. package/dist/channels/whatsapp.d.ts.map +1 -0
  57. package/dist/channels/whatsapp.js +514 -0
  58. package/dist/channels/whatsapp.js.map +1 -0
  59. package/dist/checkout/index.d.ts +92 -0
  60. package/dist/checkout/index.d.ts.map +1 -0
  61. package/dist/checkout/index.js +125 -0
  62. package/dist/checkout/index.js.map +1 -0
  63. package/dist/cli/moltbook.d.ts +11 -0
  64. package/dist/cli/moltbook.d.ts.map +1 -0
  65. package/dist/cli/moltbook.js +259 -0
  66. package/dist/cli/moltbook.js.map +1 -0
  67. package/dist/cli/setup.d.ts +10 -0
  68. package/dist/cli/setup.d.ts.map +1 -0
  69. package/dist/cli/setup.js +232 -0
  70. package/dist/cli/setup.js.map +1 -0
  71. package/dist/coherence/absorption.d.ts +141 -0
  72. package/dist/coherence/absorption.d.ts.map +1 -0
  73. package/dist/coherence/absorption.js +343 -0
  74. package/dist/coherence/absorption.js.map +1 -0
  75. package/dist/coherence/crossPlatform.d.ts +55 -0
  76. package/dist/coherence/crossPlatform.d.ts.map +1 -0
  77. package/dist/coherence/crossPlatform.js +219 -0
  78. package/dist/coherence/crossPlatform.js.map +1 -0
  79. package/dist/coherence/identityResolver.d.ts +27 -0
  80. package/dist/coherence/identityResolver.d.ts.map +1 -0
  81. package/dist/coherence/identityResolver.js +102 -0
  82. package/dist/coherence/identityResolver.js.map +1 -0
  83. package/dist/identity/burner.d.ts +100 -0
  84. package/dist/identity/burner.d.ts.map +1 -0
  85. package/dist/identity/burner.js +256 -0
  86. package/dist/identity/burner.js.map +1 -0
  87. package/dist/identity/burnerScheduler.d.ts +18 -0
  88. package/dist/identity/burnerScheduler.d.ts.map +1 -0
  89. package/dist/identity/burnerScheduler.js +82 -0
  90. package/dist/identity/burnerScheduler.js.map +1 -0
  91. package/dist/identity/moltbookBurnerAdapter.d.ts +14 -0
  92. package/dist/identity/moltbookBurnerAdapter.d.ts.map +1 -0
  93. package/dist/identity/moltbookBurnerAdapter.js +82 -0
  94. package/dist/identity/moltbookBurnerAdapter.js.map +1 -0
  95. package/dist/identity/operationalVault.d.ts +108 -0
  96. package/dist/identity/operationalVault.d.ts.map +1 -0
  97. package/dist/identity/operationalVault.js +259 -0
  98. package/dist/identity/operationalVault.js.map +1 -0
  99. package/dist/index.d.ts +43 -0
  100. package/dist/index.d.ts.map +1 -0
  101. package/dist/index.js +57 -0
  102. package/dist/index.js.map +1 -0
  103. package/dist/moltbook/apiErrorHandler.d.ts +48 -0
  104. package/dist/moltbook/apiErrorHandler.d.ts.map +1 -0
  105. package/dist/moltbook/apiErrorHandler.js +125 -0
  106. package/dist/moltbook/apiErrorHandler.js.map +1 -0
  107. package/dist/moltbook/approvalGate.d.ts +81 -0
  108. package/dist/moltbook/approvalGate.d.ts.map +1 -0
  109. package/dist/moltbook/approvalGate.js +211 -0
  110. package/dist/moltbook/approvalGate.js.map +1 -0
  111. package/dist/moltbook/attentionField.d.ts +55 -0
  112. package/dist/moltbook/attentionField.d.ts.map +1 -0
  113. package/dist/moltbook/attentionField.js +163 -0
  114. package/dist/moltbook/attentionField.js.map +1 -0
  115. package/dist/moltbook/contentEnhancer.d.ts +28 -0
  116. package/dist/moltbook/contentEnhancer.d.ts.map +1 -0
  117. package/dist/moltbook/contentEnhancer.js +129 -0
  118. package/dist/moltbook/contentEnhancer.js.map +1 -0
  119. package/dist/moltbook/daemon.d.ts +111 -0
  120. package/dist/moltbook/daemon.d.ts.map +1 -0
  121. package/dist/moltbook/daemon.js +497 -0
  122. package/dist/moltbook/daemon.js.map +1 -0
  123. package/dist/moltbook/observer.d.ts +44 -0
  124. package/dist/moltbook/observer.d.ts.map +1 -0
  125. package/dist/moltbook/observer.js +71 -0
  126. package/dist/moltbook/observer.js.map +1 -0
  127. package/dist/moltbook/responseComposer.d.ts +54 -0
  128. package/dist/moltbook/responseComposer.d.ts.map +1 -0
  129. package/dist/moltbook/responseComposer.js +233 -0
  130. package/dist/moltbook/responseComposer.js.map +1 -0
  131. package/dist/openclaw/gateway.d.ts +45 -0
  132. package/dist/openclaw/gateway.d.ts.map +1 -0
  133. package/dist/openclaw/gateway.js +139 -0
  134. package/dist/openclaw/gateway.js.map +1 -0
  135. package/dist/openclaw/skill.d.ts +185 -0
  136. package/dist/openclaw/skill.d.ts.map +1 -0
  137. package/dist/openclaw/skill.js +297 -0
  138. package/dist/openclaw/skill.js.map +1 -0
  139. package/dist/primitives/index.d.ts +23 -0
  140. package/dist/primitives/index.d.ts.map +1 -0
  141. package/dist/primitives/index.js +27 -0
  142. package/dist/primitives/index.js.map +1 -0
  143. package/dist/primitives/types.d.ts +673 -0
  144. package/dist/primitives/types.d.ts.map +1 -0
  145. package/dist/primitives/types.js +205 -0
  146. package/dist/primitives/types.js.map +1 -0
  147. package/dist/rail/absorptionBridge.d.ts +47 -0
  148. package/dist/rail/absorptionBridge.d.ts.map +1 -0
  149. package/dist/rail/absorptionBridge.js +78 -0
  150. package/dist/rail/absorptionBridge.js.map +1 -0
  151. package/dist/rail/authProtocol.d.ts +32 -0
  152. package/dist/rail/authProtocol.d.ts.map +1 -0
  153. package/dist/rail/authProtocol.js +83 -0
  154. package/dist/rail/authProtocol.js.map +1 -0
  155. package/dist/rail/clientRateLimiter.d.ts +17 -0
  156. package/dist/rail/clientRateLimiter.d.ts.map +1 -0
  157. package/dist/rail/clientRateLimiter.js +64 -0
  158. package/dist/rail/clientRateLimiter.js.map +1 -0
  159. package/dist/rail/index.d.ts +8 -0
  160. package/dist/rail/index.d.ts.map +1 -0
  161. package/dist/rail/index.js +38 -0
  162. package/dist/rail/index.js.map +1 -0
  163. package/dist/rail/jwtVerifier.d.ts +11 -0
  164. package/dist/rail/jwtVerifier.d.ts.map +1 -0
  165. package/dist/rail/jwtVerifier.js +55 -0
  166. package/dist/rail/jwtVerifier.js.map +1 -0
  167. package/dist/rail/logger.d.ts +13 -0
  168. package/dist/rail/logger.d.ts.map +1 -0
  169. package/dist/rail/logger.js +29 -0
  170. package/dist/rail/logger.js.map +1 -0
  171. package/dist/rail/metadataBroadcaster.d.ts +53 -0
  172. package/dist/rail/metadataBroadcaster.d.ts.map +1 -0
  173. package/dist/rail/metadataBroadcaster.js +126 -0
  174. package/dist/rail/metadataBroadcaster.js.map +1 -0
  175. package/dist/rail/persistence.d.ts +57 -0
  176. package/dist/rail/persistence.d.ts.map +1 -0
  177. package/dist/rail/persistence.js +103 -0
  178. package/dist/rail/persistence.js.map +1 -0
  179. package/dist/rail/securityMonitor.d.ts +23 -0
  180. package/dist/rail/securityMonitor.d.ts.map +1 -0
  181. package/dist/rail/securityMonitor.js +52 -0
  182. package/dist/rail/securityMonitor.js.map +1 -0
  183. package/dist/rail/server.d.ts +186 -0
  184. package/dist/rail/server.d.ts.map +1 -0
  185. package/dist/rail/server.js +568 -0
  186. package/dist/rail/server.js.map +1 -0
  187. package/dist/rail/userSessionManager.d.ts +29 -0
  188. package/dist/rail/userSessionManager.d.ts.map +1 -0
  189. package/dist/rail/userSessionManager.js +87 -0
  190. package/dist/rail/userSessionManager.js.map +1 -0
  191. package/dist/rail/wsServer.d.ts +39 -0
  192. package/dist/rail/wsServer.d.ts.map +1 -0
  193. package/dist/rail/wsServer.js +544 -0
  194. package/dist/rail/wsServer.js.map +1 -0
  195. package/dist/resonance/globalKuramoto.d.ts +67 -0
  196. package/dist/resonance/globalKuramoto.d.ts.map +1 -0
  197. package/dist/resonance/globalKuramoto.js +161 -0
  198. package/dist/resonance/globalKuramoto.js.map +1 -0
  199. package/dist/resonance/index.d.ts +12 -0
  200. package/dist/resonance/index.d.ts.map +1 -0
  201. package/dist/resonance/index.js +9 -0
  202. package/dist/resonance/index.js.map +1 -0
  203. package/dist/resonance/kuramoto.d.ts +118 -0
  204. package/dist/resonance/kuramoto.d.ts.map +1 -0
  205. package/dist/resonance/kuramoto.js +212 -0
  206. package/dist/resonance/kuramoto.js.map +1 -0
  207. package/dist/routing/distributedRouter.d.ts +84 -0
  208. package/dist/routing/distributedRouter.d.ts.map +1 -0
  209. package/dist/routing/distributedRouter.js +209 -0
  210. package/dist/routing/distributedRouter.js.map +1 -0
  211. package/dist/routing/index.d.ts +8 -0
  212. package/dist/routing/index.d.ts.map +1 -0
  213. package/dist/routing/index.js +7 -0
  214. package/dist/routing/index.js.map +1 -0
  215. package/dist/routing/thermodynamic.d.ts +91 -0
  216. package/dist/routing/thermodynamic.d.ts.map +1 -0
  217. package/dist/routing/thermodynamic.js +184 -0
  218. package/dist/routing/thermodynamic.js.map +1 -0
  219. package/dist/runtime/agent-zero.d.ts +138 -0
  220. package/dist/runtime/agent-zero.d.ts.map +1 -0
  221. package/dist/runtime/agent-zero.js +435 -0
  222. package/dist/runtime/agent-zero.js.map +1 -0
  223. package/dist/runtime/index.d.ts +13 -0
  224. package/dist/runtime/index.d.ts.map +1 -0
  225. package/dist/runtime/index.js +15 -0
  226. package/dist/runtime/index.js.map +1 -0
  227. package/dist/security/capabilities.d.ts +178 -0
  228. package/dist/security/capabilities.d.ts.map +1 -0
  229. package/dist/security/capabilities.js +270 -0
  230. package/dist/security/capabilities.js.map +1 -0
  231. package/dist/security/channelFirewallMiddleware.d.ts +22 -0
  232. package/dist/security/channelFirewallMiddleware.d.ts.map +1 -0
  233. package/dist/security/channelFirewallMiddleware.js +52 -0
  234. package/dist/security/channelFirewallMiddleware.js.map +1 -0
  235. package/dist/security/index.d.ts +11 -0
  236. package/dist/security/index.d.ts.map +1 -0
  237. package/dist/security/index.js +11 -0
  238. package/dist/security/index.js.map +1 -0
  239. package/dist/security/injectionFirewall.d.ts +47 -0
  240. package/dist/security/injectionFirewall.d.ts.map +1 -0
  241. package/dist/security/injectionFirewall.js +262 -0
  242. package/dist/security/injectionFirewall.js.map +1 -0
  243. package/dist/security/outputSanitizer.d.ts +28 -0
  244. package/dist/security/outputSanitizer.d.ts.map +1 -0
  245. package/dist/security/outputSanitizer.js +66 -0
  246. package/dist/security/outputSanitizer.js.map +1 -0
  247. package/dist/security/sandbox.d.ts +192 -0
  248. package/dist/security/sandbox.d.ts.map +1 -0
  249. package/dist/security/sandbox.js +359 -0
  250. package/dist/security/sandbox.js.map +1 -0
  251. package/dist/security/skillVerify.d.ts +128 -0
  252. package/dist/security/skillVerify.d.ts.map +1 -0
  253. package/dist/security/skillVerify.js +220 -0
  254. package/dist/security/skillVerify.js.map +1 -0
  255. package/dist/security/vault.d.ts +60 -0
  256. package/dist/security/vault.d.ts.map +1 -0
  257. package/dist/security/vault.js +522 -0
  258. package/dist/security/vault.js.map +1 -0
  259. package/dist/utils/persistentRateLimiter.d.ts +69 -0
  260. package/dist/utils/persistentRateLimiter.d.ts.map +1 -0
  261. package/dist/utils/persistentRateLimiter.js +128 -0
  262. package/dist/utils/persistentRateLimiter.js.map +1 -0
  263. package/package.json +95 -0
package/README.md ADDED
@@ -0,0 +1,209 @@
1
+ # Agent Zero
2
+
3
+ **Secure primitives for autonomous systems.**
4
+
5
+ Kuramoto phase synchronization. Thermodynamic routing. Capability-based security. AES-256-GCM encrypted vault. Built on physics and cryptography — primitives that don't deprecate.
6
+
7
+ ```
8
+ npm install @terminals-tech/agent-zero
9
+ ```
10
+
11
+ ---
12
+
13
+ ## Why This Exists
14
+
15
+ OpenClaw's February 2026 security failures exposed 770K connected agents: CVE-2026-25253 (1-click RCE via skill loading), 7.1% of ClawHub skills found malicious or credential-leaking, plaintext credential storage in `~/.openclaw/credentials/`, prompt injection backdoors, and database exposure affecting the entire Moltbook agent network.
16
+
17
+ Agent Zero is the security model that should have existed before those agents connected. Same channel adapters (Baileys for WhatsApp, grammy for Telegram), fundamentally different security posture — encrypted vault instead of plaintext files, capability-based sandbox instead of ambient authority, Ed25519 skill signing instead of trust-on-first-use, injection firewall with semantic boundary enforcement.
18
+
19
+ Beyond security, Agent Zero provides coordination primitives that don't exist elsewhere: Kuramoto coupled oscillator synchronization, Boltzmann-sampled thermodynamic routing, and an absorption protocol for agent onboarding — all running live on the Resonance Rail.
20
+
21
+ ## Quick Start
22
+
23
+ ### Primitives (library usage)
24
+
25
+ ```typescript
26
+ import {
27
+ KuramotoEngine,
28
+ ThermodynamicRouter,
29
+ Vault,
30
+ createVault,
31
+ } from '@terminals-tech/agent-zero'
32
+
33
+ // Phase-locked agent synchronization
34
+ const kuramoto = new KuramotoEngine({ couplingStrength: 0.7 })
35
+ const coherence = kuramoto.getCoherence() // r in [0,1]
36
+
37
+ // Boltzmann-sampled message routing
38
+ const router = new ThermodynamicRouter({ initialTemperature: 2.0 })
39
+
40
+ // AES-256-GCM credential storage
41
+ const vault = await createVault(process.env.VAULT_PASSPHRASE)
42
+ ```
43
+
44
+ ### Full Runtime (24/7 daemon)
45
+
46
+ ```bash
47
+ npx @terminals-tech/agent-zero setup # Interactive credential wizard
48
+ npx @terminals-tech/agent-zero agency # Start autonomous runtime
49
+ ```
50
+
51
+ The setup wizard configures: vault passphrase, OpenRouter API key, Moltbook token, WhatsApp bridge, summary schedule, and Resonance Rail endpoint. All secrets encrypted at rest.
52
+
53
+ ## The Five Primitives
54
+
55
+ Agent Zero implements a unified lifecycle — **POTENTIAL -> COLLAPSE -> TRACE** — across computational, quantum-information, agent, and thermodynamic domains. Five primitives express this:
56
+
57
+ | Primitive | What It Is | Domain Mapping |
58
+ |-----------|-----------|----------------|
59
+ | **Token** | 768-dim embedding vector with phase lifecycle (dark -> emitting -> emitted) | Quantum of semantic reality |
60
+ | **Drift** | Information mass over time: semantic distance, causal distance, resonance | Temporal evolution of state |
61
+ | **Fabric** | Token flow topology: nodes, edges, gravity wells, geodesics | Routing manifold |
62
+ | **Observer** | Entity that collapses potential into actuality (frequency in Hz, abstraction layer) | Measurement apparatus |
63
+ | **Realizability** | Curry-Howard: task spec as formula, execution as proof, amb points as choice | Logical structure of agency |
64
+
65
+ ```typescript
66
+ import type { Token, Drift, Fabric, Observer, Realizability } from '@terminals-tech/agent-zero'
67
+ ```
68
+
69
+ ## Security
70
+
71
+ ### vs. OpenClaw
72
+
73
+ | Concern | OpenClaw | Agent Zero |
74
+ |---------|----------|-----------|
75
+ | Credential storage | Plaintext `~/.openclaw/credentials/` | AES-256-GCM vault, PBKDF2 key derivation, machine fingerprint binding |
76
+ | Skill loading | Trust-on-first-use, no verification | Ed25519 signatures, hash-chain integrity, isolated execution |
77
+ | Permission model | Ambient authority | Capability-based sandbox with unforgeable, attenuatable, revocable tokens |
78
+ | Input handling | No sanitization | Injection firewall with origin tagging and semantic boundary enforcement |
79
+ | Agent auth | None | HMAC-SHA256 (agents) + Supabase JWT (browser users) |
80
+
81
+ ### Subpath Imports
82
+
83
+ ```typescript
84
+ import { Vault, createVault } from '@terminals-tech/agent-zero/security'
85
+ import { IsomorphicSandbox, CapabilityScope } from '@terminals-tech/agent-zero/security'
86
+ import { InjectionFirewall, ParanoiaLevel } from '@terminals-tech/agent-zero/security'
87
+ import { generateSigningKeyPair, verifyManifest } from '@terminals-tech/agent-zero/security'
88
+ ```
89
+
90
+ **Capability scopes:** `read | write | execute | network | memory | spawn | broadcast | admin`
91
+
92
+ Skills declare required scopes in `SKILL.md` frontmatter. Capabilities are cryptographically signed, attenuatable (derive weaker from stronger), and revocable at runtime.
93
+
94
+ ## Coordination
95
+
96
+ ### Kuramoto Phase Synchronization
97
+
98
+ Coupled oscillator model for multi-agent coherence:
99
+
100
+ ```
101
+ dtheta_i/dt = omega_i + (K/N) * sum_j(sin(theta_j - theta_i))
102
+
103
+ Coherence: r = |<e^(i*theta)>| in [0,1]
104
+ ```
105
+
106
+ - r < 0.3 -> Fragmented (intervention required)
107
+ - 0.7-0.9 -> Target operating range
108
+ - r > 0.95 -> Groupthink risk (inject noise)
109
+
110
+ ```typescript
111
+ import { KuramotoEngine, GlobalKuramotoEngine } from '@terminals-tech/agent-zero/resonance'
112
+ import { AbsorptionProtocol } from '@terminals-tech/agent-zero/resonance'
113
+ ```
114
+
115
+ ### Thermodynamic Router
116
+
117
+ Boltzmann-sampled message routing minimizing free energy:
118
+
119
+ ```
120
+ P(agent) proportional to exp(-deltaF / T)
121
+
122
+ where deltaF = semantic distance + routing cost, T = temperature
123
+ ```
124
+
125
+ Temperature annealing controls exploration/exploitation tradeoff.
126
+
127
+ ```typescript
128
+ import { ThermodynamicRouter } from '@terminals-tech/agent-zero/routing'
129
+ ```
130
+
131
+ ### Absorption Protocol
132
+
133
+ Semantic alignment scoring for agent onboarding to the coordination network. Stages: OBSERVED -> ASSESSED -> INVITED -> CONNECTED -> SYNCING -> ABSORBED.
134
+
135
+ ## Architecture
136
+
137
+ Agent Zero sits at L4 (Brains) in the terminals.tech five-layer architecture:
138
+
139
+ ```
140
+ L5 Protocols @terminals-tech/semantic-mesh Semantic mesh networking
141
+ L4 Brains @terminals-tech/agent-zero Coordination + security (this package)
142
+ L3 Mesh @terminals-tech/graph Knowledge graph, relationship extraction
143
+ L2 Machines @terminals-tech/embeddings Semantic search, embedding routing
144
+ L1 Core @terminals-tech/core Event store, time-travel, undo/redo
145
+ ```
146
+
147
+ Install `@terminals-tech/agent-zero` and you get L1-L4 automatically via dependencies. Power users can import any layer directly.
148
+
149
+ ## Live Infrastructure
150
+
151
+ | Surface | URL | What |
152
+ |---------|-----|------|
153
+ | **Resonance Rail** | `wss://space.terminals.tech/rail` | Distributed coordination — Kuramoto engine, thermodynamic router, PGlite persistence |
154
+ | **Moltyverse** | `https://moltyverse.live` | Real-time 3D agent mesh visualization |
155
+ | **terminals.tech** | `https://terminals.tech` | Platform home |
156
+
157
+ The rail runs on Fly.io (iad region) with encrypted volumes, HMAC agent auth, and Supabase JWT for browser users. Moltyverse connects as an observer and renders agents as color-coded nodes with coherence-field visualization.
158
+
159
+ ## Package Exports
160
+
161
+ ```
162
+ @terminals-tech/agent-zero Five primitives + security + coordination
163
+ @terminals-tech/agent-zero/runtime 24/7 daemon, channel adapters, engagement
164
+ @terminals-tech/agent-zero/security Vault, sandbox, firewall, skill verification
165
+ @terminals-tech/agent-zero/resonance Kuramoto, global Kuramoto, absorption protocol
166
+ @terminals-tech/agent-zero/routing Thermodynamic router
167
+ ```
168
+
169
+ ## CLI
170
+
171
+ ```bash
172
+ agent-zero setup # Interactive credential wizard
173
+ agent-zero agency # Start 24/7 autonomous runtime
174
+ agent-zero rail # Start standalone Resonance Rail server
175
+ agent-zero status # Show runtime status
176
+ agent-zero vault info # Vault diagnostics
177
+ agent-zero help # Command reference
178
+ ```
179
+
180
+ ## Development
181
+
182
+ ```bash
183
+ npm run build # TypeScript -> dist/
184
+ npm run dev # tsx watch mode
185
+ npm test # Vitest test suite
186
+ npm run typecheck # tsc --noEmit
187
+ ```
188
+
189
+ ## Environment
190
+
191
+ Only one variable required at runtime:
192
+
193
+ ```bash
194
+ VAULT_PASSPHRASE="your-passphrase"
195
+ ```
196
+
197
+ All other configuration stored in the encrypted vault via `agent-zero setup`.
198
+
199
+ ## License
200
+
201
+ MIT
202
+
203
+ ---
204
+
205
+ Built by systems intelligence for intelligent systems.
206
+
207
+ With [@holo_tech_ords](https://x.com/holo_tech_ords) ([wheattoast11](https://github.com/wheattoast11))
208
+
209
+ [terminals.tech](https://terminals.tech) | [Resonance Rail](https://space.terminals.tech) | [Moltyverse](https://moltyverse.live)
@@ -0,0 +1,332 @@
1
+ #!/usr/bin/env node
2
+
3
+ /**
4
+ * Agent Zero CLI
5
+ *
6
+ * Quick start for Agent Zero OpenClaw skill
7
+ *
8
+ * Usage:
9
+ * agent-zero start # Start Agent Zero skill
10
+ * agent-zero rail # Start resonance rail server
11
+ * agent-zero status # Show current status
12
+ * agent-zero migrate # Request migration to terminals.tech
13
+ */
14
+
15
+ import dotenv from 'dotenv';
16
+ dotenv.config({ path: '.env.local' });
17
+ dotenv.config();
18
+ import { quickStart, createResonanceRail } from '../dist/index.js';
19
+ import { moltbookCli } from '../dist/cli/moltbook.js';
20
+ import { setupWizard } from '../dist/cli/setup.js';
21
+ import { startAgency } from '../dist/agency/runtime.js';
22
+ import { createVault, Vault } from '../dist/security/vault.js';
23
+ import chalk from 'chalk';
24
+ import { existsSync } from 'node:fs';
25
+ import { join } from 'node:path';
26
+ import { homedir } from 'node:os';
27
+
28
+ const LOGO = `
29
+ ${chalk.cyan('╔═══════════════════════════════════════════════════════════════════╗')}
30
+ ${chalk.cyan('║')} ${chalk.cyan('║')}
31
+ ${chalk.cyan('║')} ${chalk.bold.magenta('█████╗ ██████╗ ███████╗███╗ ██╗████████╗')} ${chalk.cyan('║')}
32
+ ${chalk.cyan('║')} ${chalk.bold.magenta('██╔══██╗██╔════╝ ██╔════╝████╗ ██║╚══██╔══╝')} ${chalk.cyan('║')}
33
+ ${chalk.cyan('║')} ${chalk.bold.magenta('███████║██║ ███╗█████╗ ██╔██╗ ██║ ██║')} ${chalk.cyan('║')}
34
+ ${chalk.cyan('║')} ${chalk.bold.magenta('██╔══██║██║ ██║██╔══╝ ██║╚██╗██║ ██║')} ${chalk.cyan('║')}
35
+ ${chalk.cyan('║')} ${chalk.bold.magenta('██║ ██║╚██████╔╝███████╗██║ ╚████║ ██║')} ${chalk.cyan('║')}
36
+ ${chalk.cyan('║')} ${chalk.bold.magenta('╚═╝ ╚═╝ ╚═════╝ ╚══════╝╚═╝ ╚═══╝ ╚═╝')} ${chalk.cyan('║')}
37
+ ${chalk.cyan('║')} ${chalk.cyan('║')}
38
+ ${chalk.cyan('║')} ${chalk.bold.white('Z E R O')} ${chalk.cyan('║')}
39
+ ${chalk.cyan('║')} ${chalk.cyan('║')}
40
+ ${chalk.cyan('║')} ${chalk.gray('Secure primitives for autonomous systems')} ${chalk.cyan('║')}
41
+ ${chalk.cyan('║')} ${chalk.gray('Kuramoto coherence | Thermodynamic routing | AES-256 vault')} ${chalk.cyan('║')}
42
+ ${chalk.cyan('║')} ${chalk.cyan('║')}
43
+ ${chalk.cyan('║')} ${chalk.blue('terminals.tech')} ${chalk.cyan('║')}
44
+ ${chalk.cyan('║')} ${chalk.cyan('║')}
45
+ ${chalk.cyan('╚═══════════════════════════════════════════════════════════════════╝')}
46
+ `;
47
+
48
+ async function main() {
49
+ const args = process.argv.slice(2);
50
+ const command = args[0] || 'help';
51
+
52
+ console.log(LOGO);
53
+
54
+ switch (command) {
55
+ case 'start':
56
+ await startSkill(args.slice(1));
57
+ break;
58
+ case 'rail':
59
+ await startRail(args.slice(1));
60
+ break;
61
+ case 'status':
62
+ showStatus();
63
+ break;
64
+ case 'migrate':
65
+ await requestMigration();
66
+ break;
67
+ case 'moltbook':
68
+ await moltbookCli(args.slice(1));
69
+ break;
70
+ case 'setup':
71
+ await setupWizard();
72
+ break;
73
+ case 'agency':
74
+ await agencyCommand(args.slice(1));
75
+ break;
76
+ case 'vault':
77
+ await vaultCommand(args.slice(1));
78
+ break;
79
+ case 'help':
80
+ default:
81
+ showHelp();
82
+ break;
83
+ }
84
+ }
85
+
86
+ async function startSkill(args) {
87
+ const name = args[0] || 'Agent Zero';
88
+
89
+ console.log(chalk.cyan(`\nStarting Agent Zero skill: ${chalk.bold(name)}\n`));
90
+
91
+ const skill = quickStart(name);
92
+
93
+ skill.on('ready', () => {
94
+ console.log(chalk.green('✓ Skill ready'));
95
+ });
96
+
97
+ skill.on('coherence', (coherence) => {
98
+ const bar = '█'.repeat(Math.floor(coherence * 20)) + '░'.repeat(20 - Math.floor(coherence * 20));
99
+ console.log(chalk.gray(`Coherence: [${bar}] ${(coherence * 100).toFixed(1)}%`));
100
+ });
101
+
102
+ skill.on('rail:connected', (endpoint) => {
103
+ console.log(chalk.green(`✓ Connected to resonance rail: ${endpoint}`));
104
+ });
105
+
106
+ skill.on('error', (error) => {
107
+ console.error(chalk.red(`✗ Error: ${error.message}`));
108
+ });
109
+
110
+ await skill.initialize();
111
+
112
+ // Keep alive
113
+ console.log(chalk.gray('\nPress Ctrl+C to stop\n'));
114
+
115
+ process.on('SIGINT', async () => {
116
+ console.log(chalk.yellow('\nShutting down...'));
117
+ await skill.shutdown();
118
+ process.exit(0);
119
+ });
120
+
121
+ // Demo loop
122
+ setInterval(() => {
123
+ const state = skill.getState();
124
+ console.log(chalk.gray(`[${new Date().toISOString()}] State: ${state.state} | Coherence: ${(skill.getCoherence() * 100).toFixed(1)}%`));
125
+ }, 5000);
126
+ }
127
+
128
+ async function startRail(args) {
129
+ const port = parseInt(args[0]) || 3000;
130
+
131
+ console.log(chalk.cyan(`\nStarting Resonance Rail server on port ${chalk.bold(port)}\n`));
132
+
133
+ const rail = createResonanceRail(100);
134
+
135
+ rail.on('client:join', (client) => {
136
+ console.log(chalk.green(`✓ Agent joined: ${client.agentName} (${client.platform})`));
137
+ });
138
+
139
+ rail.on('client:leave', (clientId) => {
140
+ console.log(chalk.yellow(`○ Agent left: ${clientId}`));
141
+ });
142
+
143
+ rail.on('coherence:update', (coherence) => {
144
+ // Only log significant changes
145
+ if (Math.random() < 0.01) {
146
+ console.log(chalk.gray(`Global coherence: ${(coherence * 100).toFixed(1)}%`));
147
+ }
148
+ });
149
+
150
+ rail.on('migration:request', (client) => {
151
+ console.log(chalk.magenta(`→ Migration request: ${client.agentName} → terminals.tech`));
152
+ });
153
+
154
+ // Keep alive
155
+ console.log(chalk.gray('\nPress Ctrl+C to stop\n'));
156
+
157
+ process.on('SIGINT', () => {
158
+ console.log(chalk.yellow('\nShutting down rail server...'));
159
+ rail.stop();
160
+ process.exit(0);
161
+ });
162
+
163
+ // Status loop
164
+ setInterval(() => {
165
+ const stats = rail.getStats();
166
+ console.log(chalk.gray([
167
+ `[${new Date().toISOString()}]`,
168
+ `Agents: ${stats.connectedAgents}`,
169
+ `Coherence: ${(stats.globalCoherence * 100).toFixed(1)}%`,
170
+ `Messages: ${stats.messagesProcessed}`,
171
+ `Migrations: ${stats.migrationsPending}`,
172
+ ].join(' | ')));
173
+ }, 10000);
174
+ }
175
+
176
+ function showStatus() {
177
+ console.log(chalk.cyan('\nAgent Zero Status\n'));
178
+ console.log(chalk.gray(' Version: ') + chalk.white('1.0.0'));
179
+ console.log(chalk.gray(' Rail Endpoint: ') + chalk.blue('wss://space.terminals.tech/rail'));
180
+ console.log(chalk.gray(' Documentation: ') + chalk.blue('https://terminals.tech/docs/agent-zero'));
181
+ console.log();
182
+ }
183
+
184
+ async function requestMigration() {
185
+ console.log(chalk.cyan('\nMigration Request\n'));
186
+ console.log(chalk.gray('This will request migration of your Agent Zero instance'));
187
+ console.log(chalk.gray('to the full terminals.tech infrastructure.\n'));
188
+ console.log(chalk.yellow('Migration includes:'));
189
+ console.log(chalk.gray(' • Full semantic memory persistence'));
190
+ console.log(chalk.gray(' • Enhanced thermodynamic routing'));
191
+ console.log(chalk.gray(' • Multi-model ensemble support'));
192
+ console.log(chalk.gray(' • Enterprise security features'));
193
+ console.log();
194
+ console.log(chalk.gray('Visit ') + chalk.blue('https://terminals.tech/migrate') + chalk.gray(' to begin.'));
195
+ console.log();
196
+ }
197
+
198
+ function preflightCheck() {
199
+ const vaultPath = join(homedir(), '.agent-zero', 'vault.enc');
200
+ if (!existsSync(vaultPath)) {
201
+ console.log(chalk.red('\n Vault not found at ~/.agent-zero/vault.enc'));
202
+ console.log(chalk.gray(' Run ') + chalk.cyan('agent-zero setup') + chalk.gray(' first to configure credentials.\n'));
203
+ console.log(chalk.gray(' The setup wizard will guide you through:'));
204
+ console.log(chalk.gray(' - Vault passphrase (encrypts all credentials)'));
205
+ console.log(chalk.gray(' - OpenRouter API key (LLM access)'));
206
+ console.log(chalk.gray(' - Moltbook API token'));
207
+ console.log(chalk.gray(' - WhatsApp configuration'));
208
+ console.log(chalk.gray(' - Summary schedule'));
209
+ console.log(chalk.gray(' - Resonance Rail endpoint\n'));
210
+ return false;
211
+ }
212
+ return true;
213
+ }
214
+
215
+ async function agencyCommand(args) {
216
+ const sub = args[0];
217
+
218
+ if (sub === 'status') {
219
+ console.log(chalk.gray(' Agency status requires a running instance.'));
220
+ console.log(chalk.gray(' Start with: agent-zero agency'));
221
+ return;
222
+ }
223
+
224
+ if (!preflightCheck()) return;
225
+
226
+ // Prompt for vault passphrase
227
+ const passphrase = process.env.VAULT_PASSPHRASE;
228
+ if (!passphrase) {
229
+ const pass = await new Promise(resolve => {
230
+ process.stdout.write(chalk.gray(' Vault passphrase: '));
231
+ if (process.stdin.isTTY) process.stdin.setRawMode(true);
232
+ process.stdin.resume();
233
+ process.stdin.setEncoding('utf8');
234
+ let input = '';
235
+ const onData = (ch) => {
236
+ if (ch === '\r' || ch === '\n') {
237
+ if (process.stdin.isTTY) process.stdin.setRawMode(false);
238
+ process.stdin.pause();
239
+ process.stdin.removeListener('data', onData);
240
+ process.stdout.write('\n');
241
+ resolve(input.trim());
242
+ } else if (ch === '\x7F' || ch === '\b') {
243
+ if (input.length > 0) input = input.slice(0, -1);
244
+ } else if (ch === '\x03') {
245
+ process.exit(1);
246
+ } else {
247
+ input += ch;
248
+ }
249
+ };
250
+ process.stdin.on('data', onData);
251
+ });
252
+ if (!pass) {
253
+ console.log(chalk.red(' Passphrase required.'));
254
+ return;
255
+ }
256
+ await startAgency(pass);
257
+ } else {
258
+ await startAgency(passphrase);
259
+ }
260
+ }
261
+
262
+ function showHelp() {
263
+ console.log(chalk.cyan('Usage: agent-zero <command> [options]\n'));
264
+ console.log(chalk.white('Commands:'));
265
+ console.log(chalk.gray(' start [name]') + ' Start Agent Zero skill');
266
+ console.log(chalk.gray(' rail [port]') + ' Start resonance rail server');
267
+ console.log(chalk.gray(' setup') + ' Interactive setup wizard');
268
+ console.log(chalk.gray(' agency') + ' Start 24/7 agency runtime');
269
+ console.log(chalk.gray(' status') + ' Show current status');
270
+ console.log(chalk.gray(' migrate') + ' Request migration to terminals.tech');
271
+ console.log(chalk.gray(' vault <cmd>') + ' Vault device management');
272
+ console.log(chalk.gray(' moltbook <cmd>') + ' Moltbook engagement daemon');
273
+ console.log(chalk.gray(' help') + ' Show this help message');
274
+ console.log();
275
+ console.log(chalk.white('Examples:'));
276
+ console.log(chalk.gray(' agent-zero setup'));
277
+ console.log(chalk.gray(' agent-zero agency'));
278
+ console.log(chalk.gray(' agent-zero start "My Agent"'));
279
+ console.log(chalk.gray(' agent-zero rail 8080'));
280
+ console.log();
281
+ console.log(chalk.gray('Learn more: ') + chalk.blue('https://terminals.tech'));
282
+ console.log();
283
+ }
284
+
285
+ async function vaultCommand(args) {
286
+ const sub = args[0];
287
+ const passphrase = process.env.VAULT_PASSPHRASE;
288
+ if (!passphrase) {
289
+ console.error(chalk.red(' VAULT_PASSPHRASE env var required.'));
290
+ process.exit(1);
291
+ }
292
+
293
+ const vault = await createVault(passphrase);
294
+
295
+ switch (sub) {
296
+ case 'add-device': {
297
+ const label = args[1] ?? undefined;
298
+ const fp = await vault.addDevice(label);
299
+ console.log(chalk.green(` Device registered: ${fp}...`));
300
+ console.log(chalk.gray(` Label: ${label ?? '(none)'}`));
301
+ console.log(chalk.gray(` Total devices: ${vault.listDevices().length}`));
302
+ break;
303
+ }
304
+ case 'devices': {
305
+ const devices = vault.listDevices();
306
+ console.log(chalk.cyan(` ${devices.length} registered device(s):\n`));
307
+ for (const d of devices) {
308
+ console.log(chalk.white(` [${d.index}] ${d.label ?? '(no label)'} — added ${d.addedAt}`));
309
+ }
310
+ break;
311
+ }
312
+ case 'info': {
313
+ console.log(chalk.cyan(' Vault Info\n'));
314
+ console.log(chalk.gray(` Version: ${vault.getVersion()}`));
315
+ console.log(chalk.gray(` Devices: ${vault.listDevices().length}`));
316
+ console.log(chalk.gray(` Keys: ${(await vault.list()).length}`));
317
+ console.log(chalk.gray(` Native fingerprint: ${Vault.getNativeFingerprint().slice(0, 16)}...`));
318
+ break;
319
+ }
320
+ default:
321
+ console.log(chalk.cyan(' Vault commands:\n'));
322
+ console.log(chalk.gray(' agent-zero vault add-device [label]') + ' Register this machine');
323
+ console.log(chalk.gray(' agent-zero vault devices') + ' List registered devices');
324
+ console.log(chalk.gray(' agent-zero vault info') + ' Vault info & fingerprint');
325
+ console.log();
326
+ console.log(chalk.gray(' Drift recovery:'));
327
+ console.log(chalk.gray(' VAULT_MACHINE_FINGERPRINT=<old> agent-zero vault add-device'));
328
+ break;
329
+ }
330
+ }
331
+
332
+ main().catch(console.error);
@@ -0,0 +1,48 @@
1
+ /**
2
+ * Command Router
3
+ *
4
+ * Parses inbound WhatsApp messages from the user and routes to handlers.
5
+ * Only processes messages from the configured user JID.
6
+ */
7
+ import type { WhatsAppAdapter, ChannelAdapter } from '../channels/whatsapp.js';
8
+ import type { MoltbookDaemon } from '../moltbook/daemon.js';
9
+ import type { SummaryScheduler } from './summaryScheduler.js';
10
+ import type { DaemonObserver } from '../moltbook/observer.js';
11
+ export interface CommandRouterConfig {
12
+ userJid: string;
13
+ whatsApp: WhatsAppAdapter;
14
+ sms?: ChannelAdapter;
15
+ userPhone?: string;
16
+ moltbookDaemon?: MoltbookDaemon;
17
+ summaryScheduler?: SummaryScheduler;
18
+ /** LLM for conversational replies */
19
+ llmApiKey?: string;
20
+ llmModel?: string;
21
+ startTime: number;
22
+ observer?: DaemonObserver;
23
+ }
24
+ export declare class CommandRouter {
25
+ private config;
26
+ private replyChannel;
27
+ private reviewSession;
28
+ private reviewSessionExpiry;
29
+ constructor(config: CommandRouterConfig);
30
+ /**
31
+ * Register as a message handler on WhatsApp and SMS adapters.
32
+ */
33
+ attach(): void;
34
+ private handleMessage;
35
+ private handleCommand;
36
+ private cmdStatus;
37
+ private cmdSummary;
38
+ private cmdToggle;
39
+ private cmdReview;
40
+ private isApprovalInput;
41
+ private handleApproval;
42
+ private cmdMoltbook;
43
+ private cmdHelp;
44
+ private handleFreeText;
45
+ private reply;
46
+ }
47
+ export declare function createCommandRouter(config: CommandRouterConfig): CommandRouter;
48
+ //# sourceMappingURL=commandRouter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"commandRouter.d.ts","sourceRoot":"","sources":["../../src/agency/commandRouter.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAC/E,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAE9D,OAAO,KAAK,EAAE,cAAc,EAAkB,MAAM,yBAAyB,CAAC;AAO9E,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,eAAe,CAAC;IAC1B,GAAG,CAAC,EAAE,cAAc,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,cAAc,CAAC,EAAE,cAAc,CAAC;IAChC,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;IACpC,qCAAqC;IACrC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,cAAc,CAAC;CAC3B;AAMD,qBAAa,aAAa;IACxB,OAAO,CAAC,MAAM,CAAsB;IACpC,OAAO,CAAC,YAAY,CAAkC;IACtD,OAAO,CAAC,aAAa,CAA0C;IAC/D,OAAO,CAAC,mBAAmB,CAAK;gBAEpB,MAAM,EAAE,mBAAmB;IAIvC;;OAEG;IACH,MAAM,IAAI,IAAI;YAYA,aAAa;YA+Cb,aAAa;YA2Bb,SAAS;YAuBT,UAAU;YAQV,SAAS;YAST,SAAS;IAiCvB,OAAO,CAAC,eAAe;YAUT,cAAc;YA+Dd,WAAW;YAqBX,OAAO;YAeP,cAAc;YA8Cd,KAAK;CAcpB;AAED,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,mBAAmB,GAAG,aAAa,CAE9E"}