@rotifer/playground 0.2.0-alpha.1 → 0.3.0-alpha.1

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 CHANGED
@@ -5,6 +5,32 @@ All notable changes to this project will be documented in this file.
5
5
  The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
6
6
  and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
7
 
8
+ ## [0.3.0-alpha.1] - 2026-02-17
9
+
10
+ ### Added
11
+
12
+ - **TS→WASM Auto-Compilation** (Javy / QuickJS)
13
+ - `rotifer compile` auto-detects `index.ts`/`index.js` and compiles to Native WASM
14
+ - Pipeline: TypeScript → esbuild (bundle) → WASI shim → Javy (QuickJS→WASM) → Rotifer IR
15
+ - New `--lang <ts|wasm>` option to force compilation mode
16
+ - `javy-compiler.ts` utility with `compileTypeScriptToWasm()`, `isJavyAvailable()`, `findGeneSource()`
17
+
18
+ - **WASI Sandbox Support** (`rotifer-core::sandbox`)
19
+ - `WasmtimeSandbox` now supports both Direct (`express`) and WASI (`_start`) execution modes
20
+ - Minimal WASI shim: 9 host functions (`fd_read`, `fd_write`, `clock_time_get`, etc.)
21
+ - Auto-detection of WASI vs Direct modules at runtime
22
+
23
+ - **IR Verifier Updates**
24
+ - SIMD instructions downgraded from error to warning (common in Javy/QuickJS output)
25
+ - `_start` entry point accepted alongside `express` for WASI modules
26
+
27
+ ### Changed
28
+
29
+ - Test coverage: 180 → 275 tests (91 TypeScript + 184 Rust)
30
+ - Documentation updated across README (EN/ZH), Getting Started (EN/ZH), and website
31
+
32
+ [0.3.0-alpha.1]: https://github.com/rotifer-protocol/rotifer-playground/releases/tag/v0.3.0-alpha.1
33
+
8
34
  ## [0.2.0-alpha.1] - 2026-02-22
9
35
 
10
36
  ### Added
package/README.md CHANGED
@@ -8,7 +8,7 @@
8
8
 
9
9
  Local development environment for the **Rotifer Protocol** — build genes, run Arena competitions, and simulate agent evolution.
10
10
 
11
- > **Status:** Alpha (v0.2.0-alpha.1). Core gene lifecycle, IR compiler pipeline, parallel algebra, and live Arena watching are functional.
11
+ > **Status:** Alpha (v0.3.0-alpha.1). Core gene lifecycle, IR compiler pipeline, parallel algebra, **TS→WASM auto-compilation (Javy)**, and live Arena watching are functional.
12
12
 
13
13
  ---
14
14
 
@@ -82,13 +82,18 @@ Your existing code becomes a gene and competes in the Arena.
82
82
 
83
83
  ### Act 3 — Hooked (30 minutes)
84
84
 
85
- Write a native gene, compile it, submit to Arena, and create an Agent:
85
+ Write a TypeScript gene and compile it to Native WASM automatically:
86
86
 
87
87
  ```bash
88
- # Write a native gene (higher fidelity = higher fitness potential)
89
- mkdir genes/my-search && vim genes/my-search/index.ts
90
-
91
- rotifer compile my-search # Validate Phenotype + fingerprint
88
+ # Write a gene in TypeScript same language, zero learning curve
89
+ mkdir genes/my-search && cat > genes/my-search/index.ts << 'EOF'
90
+ export function express(input: { query: string }) {
91
+ return { results: [`Found: ${input.query}`], total: 1 };
92
+ }
93
+ EOF
94
+
95
+ rotifer wrap my-search --domain search
96
+ rotifer compile my-search # TS → JS → WASM (Javy) → Rotifer IR
92
97
  rotifer arena submit my-search # Watch it climb the rankings
93
98
  rotifer arena list --domain search # Compare against Genesis genes
94
99
 
@@ -100,6 +105,8 @@ rotifer agent list
100
105
  rotifer agent run search-bot --input '{"query":"rotifer protocol"}'
101
106
  ```
102
107
 
108
+ **v0.3 highlight:** `rotifer compile` auto-detects TypeScript genes and compiles them to Native WASM via [Javy](https://github.com/bytecodealliance/javy) (QuickJS→WASM). No separate toolchain required.
109
+
103
110
  ---
104
111
 
105
112
  ## Architecture
@@ -111,11 +118,11 @@ playground/
111
118
  │ └── rotifer-napi/ napi-rs bridge: Rust ↔ Node.js FFI
112
119
  ├── src/ TypeScript CLI (commander.js)
113
120
  │ ├── commands/ 11 CLI commands
114
- │ ├── utils/ Config, display, NAPI binding loader
121
+ │ ├── utils/ Config, display, NAPI binding, Javy compiler
115
122
  │ └── errors/ Rust-style error formatting
116
123
  ├── genes/ 5 Genesis genes (bundled)
117
124
  ├── templates/ Gene + composition scaffolds
118
- └── tests/ Unit + E2E test suites (79 tests)
125
+ └── tests/ Unit + E2E test suites (91 tests)
119
126
  ```
120
127
 
121
128
  ### Layers
@@ -124,7 +131,7 @@ playground/
124
131
  |-------|-----------|----------------|
125
132
  | **CLI** | TypeScript + commander.js | User interface, command routing, display |
126
133
  | **Bridge** | napi-rs (cdylib) | Rust-to-Node.js FFI binding |
127
- | **Core** | Rust + wasmtime | WASM sandbox, Arena engine, Algebra executor, Fitness computation, SQLite storage |
134
+ | **Core** | Rust + wasmtime | WASM sandbox (Direct + WASI), Arena engine, Algebra executor, Fitness computation, SQLite storage |
128
135
 
129
136
  ---
130
137
 
@@ -136,7 +143,7 @@ playground/
136
143
  | `rotifer scan [path]` | Scan source files for candidate gene functions |
137
144
  | `rotifer wrap <name>` | Wrap a function as a Rotifer gene |
138
145
  | `rotifer test [name]` | Test a gene in L2 sandbox |
139
- | `rotifer compile [name]` | Compile a gene (validate + fingerprint) |
146
+ | `rotifer compile [name]` | Compile gene to Rotifer IR (auto TS→WASM via Javy) |
140
147
  | `rotifer arena submit <name>` | Submit a gene to the Arena |
141
148
  | `rotifer arena list` | List Arena rankings |
142
149
  | `rotifer arena watch <domain>` | Watch Arena rankings (MVP: placeholder) |
@@ -185,7 +192,7 @@ cd playground
185
192
  # TypeScript CLI
186
193
  npm install
187
194
  npm run build # Build to dist/
188
- npm test # Run 79 TypeScript tests
195
+ npm test # Run 91 TypeScript tests
189
196
  npm run lint # Type check only
190
197
 
191
198
  # Rust Core (requires Rust toolchain)
@@ -216,7 +223,7 @@ Changes driven by implementation feedback are proposed through the ADR process.
216
223
 
217
224
  - [x] **v0.1.0-alpha.1** — Core CLI + Genesis genes + Arena
218
225
  - [x] **v0.2.0-alpha.1** — IR compiler pipeline, live Arena watching, NAPI bridge, end-to-end demo loop
219
- - [ ] **v0.3.0** — Frontend SDK (TS→WASM via AssemblyScript/Javy), Cloud Binding
226
+ - [x] **v0.3.0-alpha.1** — Frontend SDK: TS→WASM auto-compilation via Javy, WASI sandbox support
220
227
  - [ ] **v1.0.0** — Full protocol compliance, multi-binding support, P2P HLT
221
228
 
222
229
  ---
package/README.zh.md CHANGED
@@ -8,7 +8,7 @@
8
8
 
9
9
  **Rotifer Protocol** 的本地开发环境——构建基因、运行 Arena 竞争、模拟代理进化。
10
10
 
11
- > **状态:** Alpha (v0.2.0-alpha.1)。核心基因生命周期、IR 编译器管线、并行代数、实时 Arena 观察已可用。
11
+ > **状态:** Alpha (v0.3.0-alpha.1)。核心基因生命周期、IR 编译器管线、并行代数、**TS→WASM 自动编译 (Javy)**、实时 Arena 观察已可用。
12
12
 
13
13
  ---
14
14
 
@@ -82,13 +82,18 @@ rotifer arena list # 查看你的基因排名
82
82
 
83
83
  ### 第三幕——Hooked(30 分钟)
84
84
 
85
- 编写原生基因、编译、提交到 Arena,并创建 Agent
85
+ TypeScript 编写基因,自动编译为原生 WASM
86
86
 
87
87
  ```bash
88
- # 编写原生基因(更高的保真度 = 更高的适应度潜力)
89
- mkdir genes/my-search && vim genes/my-search/index.ts
90
-
91
- rotifer compile my-search # 验证 Phenotype + 生成指纹
88
+ # TypeScript 写基因——同一语言,零学习成本
89
+ mkdir genes/my-search && cat > genes/my-search/index.ts << 'EOF'
90
+ export function express(input: { query: string }) {
91
+ return { results: [`Found: ${input.query}`], total: 1 };
92
+ }
93
+ EOF
94
+
95
+ rotifer wrap my-search --domain search
96
+ rotifer compile my-search # TS → JS → WASM (Javy) → Rotifer IR
92
97
  rotifer arena submit my-search # 观察它攀升排名
93
98
  rotifer arena list --domain search # 与 Genesis 基因对比
94
99
 
@@ -100,6 +105,8 @@ rotifer agent list
100
105
  rotifer agent run search-bot --input '{"query":"rotifer protocol"}'
101
106
  ```
102
107
 
108
+ **v0.3 亮点:** `rotifer compile` 自动检测 TypeScript 基因,通过 [Javy](https://github.com/bytecodealliance/javy)(QuickJS→WASM)编译为原生 WASM,无需额外工具链。
109
+
103
110
  ---
104
111
 
105
112
  ## 架构
@@ -111,11 +118,11 @@ playground/
111
118
  │ └── rotifer-napi/ napi-rs 桥接: Rust ↔ Node.js FFI
112
119
  ├── src/ TypeScript CLI (commander.js)
113
120
  │ ├── commands/ 11 个 CLI 命令
114
- │ ├── utils/ 配置、显示、NAPI 绑定加载器
121
+ │ ├── utils/ 配置、显示、NAPI 绑定、Javy 编译器
115
122
  │ └── errors/ Rust 风格的错误格式化
116
123
  ├── genes/ 5 个 Genesis 基因(内置)
117
124
  ├── templates/ 基因 + 组合脚手架模板
118
- └── tests/ 单元测试 + E2E 测试(79 个测试)
125
+ └── tests/ 单元测试 + E2E 测试(91 个测试)
119
126
  ```
120
127
 
121
128
  ### 分层
@@ -124,7 +131,7 @@ playground/
124
131
  |----|--------|------|
125
132
  | **CLI** | TypeScript + commander.js | 用户界面、命令路由、显示 |
126
133
  | **Bridge** | napi-rs (cdylib) | Rust 到 Node.js 的 FFI 绑定 |
127
- | **Core** | Rust + wasmtime | WASM 沙箱、Arena 引擎、Algebra 执行器、Fitness 计算、SQLite 存储 |
134
+ | **Core** | Rust + wasmtime | WASM 沙箱(Direct + WASI)、Arena 引擎、Algebra 执行器、Fitness 计算、SQLite 存储 |
128
135
 
129
136
  ---
130
137
 
@@ -136,7 +143,7 @@ playground/
136
143
  | `rotifer scan [path]` | 扫描源文件中的候选基因函数 |
137
144
  | `rotifer wrap <name>` | 将函数包装为 Rotifer 基因 |
138
145
  | `rotifer test [name]` | 在 L2 沙箱中测试基因 |
139
- | `rotifer compile [name]` | 编译基因(验证 + 生成指纹) |
146
+ | `rotifer compile [name]` | 编译基因为 Rotifer IR(自动 TS→WASM via Javy) |
140
147
  | `rotifer arena submit <name>` | 将基因提交到 Arena |
141
148
  | `rotifer arena list` | 列出 Arena 排名 |
142
149
  | `rotifer arena watch <domain>` | 观察 Arena 排名(MVP:占位符) |
@@ -185,7 +192,7 @@ cd playground
185
192
  # TypeScript CLI
186
193
  npm install
187
194
  npm run build # 构建到 dist/
188
- npm test # 运行 79 个 TypeScript 测试
195
+ npm test # 运行 91 个 TypeScript 测试
189
196
  npm run lint # 仅类型检查
190
197
 
191
198
  # Rust Core(需要 Rust 工具链)
@@ -216,7 +223,7 @@ bash demo.sh
216
223
 
217
224
  - [x] **v0.1.0-alpha.1** — 核心 CLI + Genesis 基因 + Arena
218
225
  - [x] **v0.2.0-alpha.1** — IR 编译器管线、实时 Arena 观察、NAPI 桥接、端到端演示闭环
219
- - [ ] **v0.3.0** — 前端 SDKTS→WASM via AssemblyScript/Javy)、Cloud Binding
226
+ - [x] **v0.3.0-alpha.1** — 前端 SDKTS→WASM 自动编译 via Javy、WASI 沙箱支持
220
227
  - [ ] **v1.0.0** — 完整协议合规、多绑定支持、P2P HLT
221
228
 
222
229
  ---
@@ -1 +1 @@
1
- {"version":3,"file":"compile.d.ts","sourceRoot":"","sources":["../../src/commands/compile.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AASpC,eAAO,MAAM,cAAc,SAsMvB,CAAC"}
1
+ {"version":3,"file":"compile.d.ts","sourceRoot":"","sources":["../../src/commands/compile.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAUpC,eAAO,MAAM,cAAc,SAwNvB,CAAC"}
@@ -42,11 +42,13 @@ const display = __importStar(require("../utils/display.js"));
42
42
  const config_js_1 = require("../utils/config.js");
43
43
  const binding_js_1 = require("../utils/binding.js");
44
44
  const case_js_1 = require("../utils/case.js");
45
+ const javy_compiler_js_1 = require("../utils/javy-compiler.js");
45
46
  exports.compileCommand = new commander_1.Command("compile")
46
47
  .description("Compile a gene to Rotifer IR (WASM + custom sections)")
47
48
  .argument("[name]", "gene name to compile")
48
49
  .option("--check", "validate only, don't produce artifacts", false)
49
50
  .option("--wasm <path>", "path to pre-compiled .wasm file to wrap as IR")
51
+ .option("--lang <ts|wasm>", "force compilation mode (auto-detected by default)")
50
52
  .action(async (name, options) => {
51
53
  const root = (0, config_js_1.getProjectRoot)();
52
54
  const config = (0, config_js_1.loadConfig)(root);
@@ -90,9 +92,6 @@ exports.compileCommand = new commander_1.Command("compile")
90
92
  return;
91
93
  }
92
94
  let wasmBytes = null;
93
- const wasmPath = options.wasm
94
- ? options.wasm
95
- : (0, node_path_1.join)(geneDir, "gene.wasm");
96
95
  if (options.wasm) {
97
96
  if (!(0, node_fs_1.existsSync)(options.wasm)) {
98
97
  display.rustStyleError({
@@ -109,11 +108,33 @@ exports.compileCommand = new commander_1.Command("compile")
109
108
  wasmBytes = (0, node_fs_1.readFileSync)((0, node_path_1.join)(geneDir, "gene.wasm"));
110
109
  display.info("Using existing gene.wasm");
111
110
  }
111
+ else {
112
+ // Auto-detect TypeScript/JavaScript gene source → compile via Javy
113
+ const geneSrc = (0, javy_compiler_js_1.findGeneSource)(geneDir);
114
+ if (geneSrc && (options.lang === "ts" || !options.lang)) {
115
+ display.info("TypeScript gene detected — compiling to Native WASM via Javy");
116
+ console.log();
117
+ const wasmOutput = (0, node_path_1.join)(geneDir, "gene.wasm");
118
+ try {
119
+ (0, javy_compiler_js_1.compileTypeScriptToWasm)(geneSrc, wasmOutput);
120
+ wasmBytes = (0, node_fs_1.readFileSync)(wasmOutput);
121
+ }
122
+ catch (err) {
123
+ display.rustStyleError({
124
+ code: "E0024",
125
+ message: `TypeScript → WASM compilation failed: ${err.message}`,
126
+ suggestion: "Ensure esbuild and javy-cli are installed: npm i -g esbuild && npx javy-cli --version",
127
+ });
128
+ process.exit(1);
129
+ }
130
+ console.log();
131
+ }
132
+ }
112
133
  if (!wasmBytes) {
113
- display.warn("No .wasm file found — producing Wrapped fidelity result");
134
+ display.warn("No .wasm or source file found — producing Wrapped fidelity result");
114
135
  display.info("To compile to Native fidelity:");
115
- display.info(" 1. Compile your gene source to WASM (wasm-pack, AssemblyScript, etc.)");
116
- display.info(" 2. Run: rotifer compile " + name + " --wasm path/to/gene.wasm");
136
+ display.info(" Write a gene in TypeScript and rotifer will compile it automatically");
137
+ display.info(" Or provide pre-compiled WASM: rotifer compile " + name + " --wasm path/to/gene.wasm");
117
138
  console.log();
118
139
  const compileResult = {
119
140
  geneId,
@@ -153,7 +174,7 @@ exports.compileCommand = new commander_1.Command("compile")
153
174
  display.rustStyleError({
154
175
  code: "E0023",
155
176
  message: `IR compilation failed: ${err.message}`,
156
- suggestion: "Ensure the WASM module exports `express(i32,i32)->i32` and `memory`",
177
+ suggestion: "Ensure the WASM module exports `express(i32,i32)->i32` + `memory`, or `_start` + `memory` (WASI)",
157
178
  });
158
179
  process.exit(1);
159
180
  }
@@ -1 +1 @@
1
- {"version":3,"file":"compile.js","sourceRoot":"","sources":["../../src/commands/compile.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"compile.js","sourceRoot":"","sources":["../../src/commands/compile.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,yCAAoC;AACpC,qCAAkE;AAClE,yCAAiC;AACjC,6CAAyC;AACzC,6DAA+C;AAC/C,kDAAgE;AAChE,oDAAqD;AACrD,8CAA+C;AAC/C,gEAAoF;AAEvE,QAAA,cAAc,GAAG,IAAI,mBAAO,CAAC,SAAS,CAAC;KACjD,WAAW,CAAC,uDAAuD,CAAC;KACpE,QAAQ,CAAC,QAAQ,EAAE,sBAAsB,CAAC;KAC1C,MAAM,CAAC,SAAS,EAAE,wCAAwC,EAAE,KAAK,CAAC;KAClE,MAAM,CAAC,eAAe,EAAE,+CAA+C,CAAC;KACxE,MAAM,CAAC,kBAAkB,EAAE,mDAAmD,CAAC;KAC/E,MAAM,CAAC,KAAK,EAAE,IAAwB,EAAE,OAAyD,EAAE,EAAE;IACpG,MAAM,IAAI,GAAG,IAAA,0BAAc,GAAE,CAAC;IAC9B,MAAM,MAAM,GAAG,IAAA,sBAAU,EAAC,IAAI,CAAC,CAAC;IAChC,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAE7B,OAAO,CAAC,MAAM,CAAC,iCAAiC,CAAC,CAAC;IAElD,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,OAAO,CAAC,KAAK,CAAC,kDAAkD,CAAC,CAAC;QAClE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,MAAM,OAAO,GAAG,IAAA,gBAAI,EAAC,IAAI,EAAE,MAAM,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;IACnD,MAAM,aAAa,GAAG,IAAA,gBAAI,EAAC,OAAO,EAAE,gBAAgB,CAAC,CAAC;IAEtD,IAAI,CAAC,IAAA,oBAAU,EAAC,aAAa,CAAC,EAAE,CAAC;QAC/B,OAAO,CAAC,cAAc,CAAC;YACrB,IAAI,EAAE,OAAO;YACb,OAAO,EAAE,SAAS,IAAI,4BAA4B;YAClD,IAAI,EAAE,aAAa;YACnB,UAAU,EAAE,oBAAoB,GAAG,IAAI,GAAG,SAAS;SACpD,CAAC,CAAC;QACH,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,IAAA,sBAAY,EAAC,aAAa,EAAE,OAAO,CAAC,CAAC,CAAC;IAEnE,OAAO,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;IACxC,MAAM,cAAc,GAAG,CAAC,QAAQ,EAAE,aAAa,EAAE,cAAc,EAAE,SAAS,CAAC,CAAC;IAC5E,KAAK,MAAM,KAAK,IAAI,cAAc,EAAE,CAAC;QACnC,IAAI,CAAC,CAAC,KAAK,IAAI,SAAS,CAAC,EAAE,CAAC;YAC1B,OAAO,CAAC,cAAc,CAAC;gBACrB,IAAI,EAAE,OAAO;gBACb,OAAO,EAAE,qCAAqC,KAAK,EAAE;gBACrD,IAAI,EAAE,aAAa;gBACnB,UAAU,EAAE,QAAQ,KAAK,QAAQ,aAAa,EAAE;aACjD,CAAC,CAAC;YACH,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC;IACD,OAAO,CAAC,OAAO,CAAC,6BAA6B,CAAC,CAAC;IAE/C,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,IAAA,qBAAW,EAAC,SAAS,CAAC,CAAC,CAAC;IACxD,MAAM,MAAM,GAAG,IAAA,wBAAU,EAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAEnE,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;QAClB,OAAO,CAAC,OAAO,CAAC,0BAA0B,IAAI,GAAG,CAAC,CAAC;QACnD,OAAO,CAAC,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;QACpD,OAAO;IACT,CAAC;IAED,IAAI,SAAS,GAAkB,IAAI,CAAC;IAEpC,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;QACjB,IAAI,CAAC,IAAA,oBAAU,EAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;YAC9B,OAAO,CAAC,cAAc,CAAC;gBACrB,IAAI,EAAE,OAAO;gBACb,OAAO,EAAE,wBAAwB,OAAO,CAAC,IAAI,EAAE;gBAC/C,UAAU,EAAE,+DAA+D;aAC5E,CAAC,CAAC;YACH,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QACD,SAAS,GAAG,IAAA,sBAAY,EAAC,OAAO,CAAC,IAAI,CAAW,CAAC;QACjD,OAAO,CAAC,IAAI,CAAC,4BAA4B,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;IAC3D,CAAC;SAAM,IAAI,IAAA,oBAAU,EAAC,IAAA,gBAAI,EAAC,OAAO,EAAE,WAAW,CAAC,CAAC,EAAE,CAAC;QAClD,SAAS,GAAG,IAAA,sBAAY,EAAC,IAAA,gBAAI,EAAC,OAAO,EAAE,WAAW,CAAC,CAAW,CAAC;QAC/D,OAAO,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;IAC3C,CAAC;SAAM,CAAC;QACN,mEAAmE;QACnE,MAAM,OAAO,GAAG,IAAA,iCAAc,EAAC,OAAO,CAAC,CAAC;QACxC,IAAI,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,KAAK,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;YACxD,OAAO,CAAC,IAAI,CAAC,8DAA8D,CAAC,CAAC;YAC7E,OAAO,CAAC,GAAG,EAAE,CAAC;YACd,MAAM,UAAU,GAAG,IAAA,gBAAI,EAAC,OAAO,EAAE,WAAW,CAAC,CAAC;YAC9C,IAAI,CAAC;gBACH,IAAA,0CAAuB,EAAC,OAAO,EAAE,UAAU,CAAC,CAAC;gBAC7C,SAAS,GAAG,IAAA,sBAAY,EAAC,UAAU,CAAW,CAAC;YACjD,CAAC;YAAC,OAAO,GAAQ,EAAE,CAAC;gBAClB,OAAO,CAAC,cAAc,CAAC;oBACrB,IAAI,EAAE,OAAO;oBACb,OAAO,EAAE,yCAAyC,GAAG,CAAC,OAAO,EAAE;oBAC/D,UAAU,EAAE,uFAAuF;iBACpG,CAAC,CAAC;gBACH,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClB,CAAC;YACD,OAAO,CAAC,GAAG,EAAE,CAAC;QAChB,CAAC;IACH,CAAC;IAED,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,OAAO,CAAC,IAAI,CAAC,mEAAmE,CAAC,CAAC;QAClF,OAAO,CAAC,IAAI,CAAC,gCAAgC,CAAC,CAAC;QAC/C,OAAO,CAAC,IAAI,CAAC,0EAA0E,CAAC,CAAC;QACzF,OAAO,CAAC,IAAI,CAAC,oDAAoD,GAAG,IAAI,GAAG,2BAA2B,CAAC,CAAC;QACxG,OAAO,CAAC,GAAG,EAAE,CAAC;QAEd,MAAM,aAAa,GAAG;YACpB,MAAM;YACN,IAAI;YACJ,MAAM,EAAE,SAAS,CAAC,MAAM;YACxB,UAAU,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;YACpC,QAAQ,EAAE,SAAS;YACnB,aAAa,EAAE,KAAK;YACpB,MAAM,EAAE,IAAI;YACZ,SAAS,EAAE,CAAC;YACZ,eAAe,EAAE,CAAC;YAClB,UAAU,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS;SACnC,CAAC;QAEF,IAAA,uBAAa,EACX,IAAA,gBAAI,EAAC,OAAO,EAAE,sBAAsB,CAAC,EACrC,IAAI,CAAC,SAAS,CAAC,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,CAC9C,CAAC;QAEF,OAAO,CAAC,OAAO,CAAC,SAAS,IAAI,gCAAgC,CAAC,CAAC;QAC/D,OAAO,CAAC,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;QACpD,OAAO,CAAC,QAAQ,CAAC,QAAQ,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC;QAC7C,OAAO,CAAC,QAAQ,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;QACxC,OAAO;IACT,CAAC;IAED,OAAO,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC;IAC3C,OAAO,CAAC,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;IAEzE,MAAM,UAAU,GAAG,IAAA,gBAAI,EAAC,OAAO,EAAE,cAAc,CAAC,CAAC;IAEjD,MAAM,OAAO,GAAG,IAAA,2BAAc,GAAE,CAAC;IAEjC,IAAI,MAAc,CAAC;IACnB,IAAI,SAAiB,CAAC;IACtB,IAAI,eAAuB,CAAC;IAE5B,IAAI,OAAO,EAAE,CAAC;QACZ,OAAO,CAAC,IAAI,CAAC,mCAAmC,CAAC,CAAC;QAClD,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC,SAAS,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAC;YAC1E,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;YACvB,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC;YAC7B,eAAe,GAAG,MAAM,CAAC,eAAe,CAAC;QAC3C,CAAC;QAAC,OAAO,GAAQ,EAAE,CAAC;YAClB,OAAO,CAAC,cAAc,CAAC;gBACrB,IAAI,EAAE,OAAO;gBACb,OAAO,EAAE,0BAA0B,GAAG,CAAC,OAAO,EAAE;gBAChD,UAAU,EAAE,kGAAkG;aAC/G,CAAC,CAAC;YACH,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,IAAI,CAAC,wEAAwE,CAAC,CAAC;QACvF,OAAO,CAAC,IAAI,CAAC,qDAAqD,CAAC,CAAC;QACpE,MAAM,GAAG,IAAA,wBAAU,EAAC,QAAQ,CAAC;aAC1B,MAAM,CAAC,uBAAuB,CAAC;aAC/B,MAAM,CAAC,QAAQ,CAAC;aAChB,MAAM,CAAC,SAAS,CAAC;aACjB,MAAM,CAAC,KAAK,CAAC,CAAC;QACjB,IAAA,uBAAa,EAAC,UAAU,EAAE,SAAS,CAAC,CAAC;QACrC,SAAS,GAAG,SAAS,CAAC,MAAM,CAAC;QAC7B,eAAe,GAAG,SAAS,CAAC,MAAM,CAAC;IACrC,CAAC;IAED,SAAS,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAC9B,SAAS,CAAC,OAAO,GAAG,MAAM,CAAC;IAC3B,IAAA,uBAAa,EAAC,aAAa,EAAE,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;IAExE,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;IAE1C,MAAM,aAAa,GAAG;QACpB,MAAM;QACN,IAAI;QACJ,MAAM,EAAE,SAAS,CAAC,MAAM;QACxB,UAAU,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;QACpC,QAAQ,EAAE,QAAQ;QAClB,aAAa,EAAE,IAAI;QACnB,MAAM;QACN,SAAS;QACT,eAAe;QACf,UAAU;KACX,CAAC;IAEF,IAAA,uBAAa,EACX,IAAA,gBAAI,EAAC,OAAO,EAAE,sBAAsB,CAAC,EACrC,IAAI,CAAC,SAAS,CAAC,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,CAC9C,CAAC;IAEF,OAAO,CAAC,GAAG,EAAE,CAAC;IACd,OAAO,CAAC,OAAO,CAAC,SAAS,IAAI,0BAA0B,CAAC,CAAC;IACzD,OAAO,CAAC,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;IACpD,OAAO,CAAC,QAAQ,CAAC,QAAQ,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC;IAC7C,OAAO,CAAC,QAAQ,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;IACvC,OAAO,CAAC,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;IACpD,OAAO,CAAC,QAAQ,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;IACvC,OAAO,CAAC,QAAQ,CAAC,MAAM,EAAE,GAAG,CAAC,SAAS,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;IAChE,IAAI,eAAe,KAAK,SAAS,EAAE,CAAC;QAClC,OAAO,CAAC,QAAQ,CAAC,cAAc,EAAE,GAAG,CAAC,eAAe,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;IAChF,CAAC;IACD,OAAO,CAAC,QAAQ,CAAC,UAAU,EAAE,GAAG,UAAU,IAAI,CAAC,CAAC;IAEhD,IAAI,OAAO,EAAE,CAAC;QACZ,MAAM,YAAY,GAAG,OAAO,CAAC,cAAc,CAAC,IAAA,sBAAY,EAAC,UAAU,CAAW,CAAC,CAAC;QAChF,IAAI,YAAY,KAAK,MAAM,EAAE,CAAC;YAC5B,OAAO,CAAC,OAAO,CAAC,uBAAuB,CAAC,CAAC;QAC3C,CAAC;aAAM,IAAI,YAAY,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;YAC3C,OAAO,CAAC,IAAI,CAAC,oBAAoB,YAAY,EAAE,CAAC,CAAC;QACnD,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,KAAK,CAAC,oBAAoB,YAAY,EAAE,CAAC,CAAC;QACpD,CAAC;IACH,CAAC;IAED,OAAO,CAAC,GAAG,EAAE,CAAC;IACd,OAAO,CAAC,IAAI,CAAC,6BAA6B,GAAG,IAAI,CAAC,CAAC;AACrD,CAAC,CAAC,CAAC"}
@@ -0,0 +1,22 @@
1
+ export interface JavyCompileResult {
2
+ wasmPath: string;
3
+ bundleSize: number;
4
+ wasmSize: number;
5
+ durationMs: number;
6
+ }
7
+ /**
8
+ * Compile a TypeScript gene to WASM via esbuild (strip types) + Javy (JS→WASM).
9
+ *
10
+ * Pipeline: index.ts → esbuild (IIFE bundle) → WASI shim wrapper → Javy → gene.wasm
11
+ */
12
+ export declare function compileTypeScriptToWasm(geneSrcPath: string, outputWasmPath: string): JavyCompileResult;
13
+ /**
14
+ * Check whether the Javy CLI is available.
15
+ */
16
+ export declare function isJavyAvailable(): boolean;
17
+ /**
18
+ * Detect the gene source file in a gene directory.
19
+ * Returns the path to `index.ts` or `index.js` if found.
20
+ */
21
+ export declare function findGeneSource(geneDir: string): string | null;
22
+ //# sourceMappingURL=javy-compiler.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"javy-compiler.d.ts","sourceRoot":"","sources":["../../src/utils/javy-compiler.ts"],"names":[],"mappings":"AAgBA,MAAM,WAAW,iBAAiB;IAChC,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED;;;;GAIG;AACH,wBAAgB,uBAAuB,CACrC,WAAW,EAAE,MAAM,EACnB,cAAc,EAAE,MAAM,GACrB,iBAAiB,CA0CnB;AAED;;GAEG;AACH,wBAAgB,eAAe,IAAI,OAAO,CAOzC;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAM7D"}
@@ -0,0 +1,118 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.compileTypeScriptToWasm = compileTypeScriptToWasm;
37
+ exports.isJavyAvailable = isJavyAvailable;
38
+ exports.findGeneSource = findGeneSource;
39
+ const node_child_process_1 = require("node:child_process");
40
+ const node_fs_1 = require("node:fs");
41
+ const node_path_1 = require("node:path");
42
+ const display = __importStar(require("./display.js"));
43
+ const WASI_SHIM_HEADER = `\
44
+ function __readStdin(){var s=1024,c=[],t=0;while(1){var b=new Uint8Array(s);var r=Javy.IO.readSync(0,b);t+=r;if(r===0)break;c.push(b.subarray(0,r))}var o=new Uint8Array(t);var p=0;for(var i=0;i<c.length;i++){o.set(c[i],p);p+=c[i].length}return JSON.parse(new TextDecoder().decode(o))}
45
+ function __writeStdout(v){var b=new TextEncoder().encode(JSON.stringify(v));Javy.IO.writeSync(1,b)}
46
+ `;
47
+ const WASI_SHIM_FOOTER = `\
48
+ var __input=__readStdin();
49
+ var __result=__gene.express(__input);
50
+ __writeStdout(__result);
51
+ `;
52
+ /**
53
+ * Compile a TypeScript gene to WASM via esbuild (strip types) + Javy (JS→WASM).
54
+ *
55
+ * Pipeline: index.ts → esbuild (IIFE bundle) → WASI shim wrapper → Javy → gene.wasm
56
+ */
57
+ function compileTypeScriptToWasm(geneSrcPath, outputWasmPath) {
58
+ const startTime = Date.now();
59
+ const tmpDir = (0, node_path_1.join)((0, node_path_1.dirname)(outputWasmPath), ".rotifer-build");
60
+ (0, node_fs_1.mkdirSync)(tmpDir, { recursive: true });
61
+ const bundlePath = (0, node_path_1.join)(tmpDir, "bundle.js");
62
+ const shimPath = (0, node_path_1.join)(tmpDir, "gene-shim.js");
63
+ try {
64
+ display.info(" Step 1/3: TypeScript → JavaScript (esbuild)");
65
+ (0, node_child_process_1.execSync)(`npx esbuild ${JSON.stringify(geneSrcPath)} --bundle --format=iife --global-name=__gene --outfile=${JSON.stringify(bundlePath)} --log-level=warning`, { stdio: "pipe", timeout: 30_000 });
66
+ const bundleCode = (0, node_fs_1.readFileSync)(bundlePath, "utf-8");
67
+ const bundleSize = Buffer.byteLength(bundleCode);
68
+ display.info(` Bundle: ${(bundleSize / 1024).toFixed(1)} KB`);
69
+ display.info(" Step 2/3: Generating WASI shim");
70
+ const shimCode = WASI_SHIM_HEADER + bundleCode + "\n" + WASI_SHIM_FOOTER;
71
+ (0, node_fs_1.writeFileSync)(shimPath, shimCode);
72
+ display.info(" Step 3/3: JavaScript → WASM (Javy / QuickJS)");
73
+ (0, node_child_process_1.execSync)(`npx javy-cli compile ${JSON.stringify(shimPath)} -o ${JSON.stringify(outputWasmPath)}`, { stdio: "pipe", timeout: 60_000 });
74
+ const wasmSize = (0, node_fs_1.readFileSync)(outputWasmPath).length;
75
+ const durationMs = Date.now() - startTime;
76
+ display.success(` WASM compiled: ${(wasmSize / 1024).toFixed(0)} KB (${durationMs}ms)`);
77
+ return { wasmPath: outputWasmPath, bundleSize, wasmSize, durationMs };
78
+ }
79
+ finally {
80
+ try {
81
+ (0, node_fs_1.unlinkSync)(bundlePath);
82
+ }
83
+ catch { /* ignore */ }
84
+ try {
85
+ (0, node_fs_1.unlinkSync)(shimPath);
86
+ }
87
+ catch { /* ignore */ }
88
+ try {
89
+ require("node:fs").rmdirSync(tmpDir);
90
+ }
91
+ catch { /* ignore */ }
92
+ }
93
+ }
94
+ /**
95
+ * Check whether the Javy CLI is available.
96
+ */
97
+ function isJavyAvailable() {
98
+ try {
99
+ (0, node_child_process_1.execSync)("npx javy-cli --version", { stdio: "pipe", timeout: 30_000 });
100
+ return true;
101
+ }
102
+ catch {
103
+ return false;
104
+ }
105
+ }
106
+ /**
107
+ * Detect the gene source file in a gene directory.
108
+ * Returns the path to `index.ts` or `index.js` if found.
109
+ */
110
+ function findGeneSource(geneDir) {
111
+ for (const name of ["index.ts", "index.js"]) {
112
+ const p = (0, node_path_1.join)(geneDir, name);
113
+ if ((0, node_fs_1.existsSync)(p))
114
+ return p;
115
+ }
116
+ return null;
117
+ }
118
+ //# sourceMappingURL=javy-compiler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"javy-compiler.js","sourceRoot":"","sources":["../../src/utils/javy-compiler.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rotifer/playground",
3
- "version": "0.2.0-alpha.1",
3
+ "version": "0.3.0-alpha.1",
4
4
  "description": "Rotifer Protocol Playground — local development environment for gene development, Arena competition, and protocol simulation",
5
5
  "license": "Apache-2.0",
6
6
  "author": "Rotifer Protocol Contributors",