File size: 1,723 Bytes
92d9567 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 | # Perplexity Macro VM β Java SDK
Java execution runtime for the Perplexity Macro VM. Compiles to WASM via TeaVM (open) or CheerpJ (full JDK fallback).
## Structure
```
java-sdk/
βββ pom.xml β Maven build (TeaVM 0.9.2, Java 17)
βββ src/main/java/vm/
β βββ Main.java β Entry point + execute() ABI
β βββ Capability.java β WASM import bridge (search, file, clock)
β βββ Wasm.java β WASM memory introspection
βββ src/test/java/vm/
βββ MainTest.java β Unit tests
```
## Build
```bash
# Local JAR
mvn package
# WASM (TeaVM)
mvn package -P teavm
# Emits: target/macro-vm-java.wasm + target/macro-vm-java.js
```
## Toolchain
| Tool | Version | Purpose |
|------|---------|---------|
| TeaVM | 0.9.2 | Java bytecode β JS/WASM (open, no JDK needed) |
| CheerpJ | 3.0 | Full JDK in browser (fallback) |
| Java | 17 | Source level |
## Flow
```
Main.java + Capability.java + Wasm.java
β javac (Maven)
β TeaVM / CheerpJ
target/macro-vm-java.wasm + .js
β fetch + WebAssembly.instantiate
Browser WASM runtime
β stdout/result via Capability bridge
Agent Console (Swift or JS frontend)
```
## Runtime Imports (WASM β Browser)
Capability bridge provides typed imports:
- `vm_request(cap, json)` β tool/capability request
- `file_read(path)` / `file_write(path, content)`
- `clock_now()` β ISO8601 timestamp
- `random_bytes(n)` β hex random
- `memory_size()` β WASM pages
- `stdout(msg)` / `stderr(msg)`
## License
BEL ESPRIT D ACCORD TRUST HOLDINGS INC. Patent Pending.
|