@rotifer/playground 0.5.0-alpha.2 → 0.7.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 +159 -15
- package/LICENSE +1 -1
- package/README.md +51 -23
- package/README.zh.md +54 -25
- package/dist/cloud/auth.d.ts +7 -1
- package/dist/cloud/auth.d.ts.map +1 -1
- package/dist/cloud/auth.js +65 -1
- package/dist/cloud/auth.js.map +1 -1
- package/dist/cloud/client.d.ts +4 -1
- package/dist/cloud/client.d.ts.map +1 -1
- package/dist/cloud/client.js +9 -2
- package/dist/cloud/client.js.map +1 -1
- package/dist/cloud/types.d.ts +3 -1
- package/dist/cloud/types.d.ts.map +1 -1
- package/dist/cloud/types.js.map +1 -1
- package/dist/commands/agent-create.d.ts.map +1 -1
- package/dist/commands/agent-create.js +66 -3
- package/dist/commands/agent-create.js.map +1 -1
- package/dist/commands/agent-run.d.ts.map +1 -1
- package/dist/commands/agent-run.js +296 -32
- package/dist/commands/agent-run.js.map +1 -1
- package/dist/commands/arena-submit.d.ts.map +1 -1
- package/dist/commands/arena-submit.js +45 -17
- package/dist/commands/arena-submit.js.map +1 -1
- package/dist/commands/compile.d.ts.map +1 -1
- package/dist/commands/compile.js +9 -3
- package/dist/commands/compile.js.map +1 -1
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +13 -3
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/login.d.ts.map +1 -1
- package/dist/commands/login.js +23 -16
- package/dist/commands/login.js.map +1 -1
- package/dist/commands/network.js +4 -4
- package/dist/commands/network.js.map +1 -1
- package/dist/commands/publish.d.ts.map +1 -1
- package/dist/commands/publish.js +162 -44
- package/dist/commands/publish.js.map +1 -1
- package/dist/commands/test.d.ts.map +1 -1
- package/dist/commands/test.js +209 -23
- package/dist/commands/test.js.map +1 -1
- package/dist/commands/wrap.d.ts.map +1 -1
- package/dist/commands/wrap.js +17 -1
- package/dist/commands/wrap.js.map +1 -1
- package/dist/index.js +0 -0
- package/dist/runtime/network-gateway.d.ts +53 -0
- package/dist/runtime/network-gateway.d.ts.map +1 -0
- package/dist/runtime/network-gateway.js +147 -0
- package/dist/runtime/network-gateway.js.map +1 -0
- package/dist/utils/binding.d.ts +25 -0
- package/dist/utils/binding.d.ts.map +1 -1
- package/dist/utils/binding.js.map +1 -1
- package/dist/utils/open-browser.d.ts +10 -0
- package/dist/utils/open-browser.d.ts.map +1 -0
- package/dist/utils/open-browser.js +23 -0
- package/dist/utils/open-browser.js.map +1 -0
- package/genes/academic-writer/.cloud-manifest.json +6 -0
- package/genes/academic-writer/.gene-manifest.json +8 -0
- package/genes/academic-writer/SKILL.md +274 -0
- package/genes/academic-writer/phenotype.json +28 -0
- package/genes/ai-components/.cloud-manifest.json +6 -0
- package/genes/ai-components/.gene-manifest.json +8 -0
- package/genes/ai-components/SKILL.md +381 -0
- package/genes/ai-components/phenotype.json +28 -0
- package/genes/algorithmic-art/.cloud-manifest.json +6 -0
- package/genes/algorithmic-art/.gene-manifest.json +8 -0
- package/genes/algorithmic-art/SKILL.md +405 -0
- package/genes/algorithmic-art/phenotype.json +28 -0
- package/genes/answer-synthesizer/.cloud-manifest.json +6 -0
- package/genes/answer-synthesizer/index.ts +194 -0
- package/genes/answer-synthesizer/phenotype.json +61 -0
- package/genes/api-designer/.cloud-manifest.json +6 -0
- package/genes/api-designer/.gene-manifest.json +8 -0
- package/genes/api-designer/SKILL.md +456 -0
- package/genes/api-designer/phenotype.json +28 -0
- package/genes/auto-coder/.cloud-manifest.json +6 -0
- package/genes/auto-coder/.gene-manifest.json +8 -0
- package/genes/auto-coder/SKILL.md +400 -0
- package/genes/auto-coder/phenotype.json +28 -0
- package/genes/auto-writer/.cloud-manifest.json +6 -0
- package/genes/auto-writer/.gene-manifest.json +8 -0
- package/genes/auto-writer/SKILL.md +361 -0
- package/genes/auto-writer/phenotype.json +28 -0
- package/genes/brand-personality/.cloud-manifest.json +6 -0
- package/genes/brand-personality/.gene-manifest.json +8 -0
- package/genes/brand-personality/SKILL.md +549 -0
- package/genes/brand-personality/phenotype.json +28 -0
- package/genes/business-writer/.cloud-manifest.json +6 -0
- package/genes/business-writer/.gene-manifest.json +8 -0
- package/genes/business-writer/SKILL.md +448 -0
- package/genes/business-writer/phenotype.json +28 -0
- package/genes/citation-manager/.cloud-manifest.json +6 -0
- package/genes/citation-manager/.gene-manifest.json +8 -0
- package/genes/citation-manager/SKILL.md +279 -0
- package/genes/citation-manager/index.ts +162 -0
- package/genes/citation-manager/package.json +1 -0
- package/genes/citation-manager/phenotype.json +50 -0
- package/genes/code-complexity/.cloud-manifest.json +6 -0
- package/genes/code-complexity/README.md +35 -0
- package/genes/code-complexity/index.ts +101 -0
- package/genes/code-complexity/phenotype.json +34 -0
- package/genes/copywriter/.cloud-manifest.json +6 -0
- package/genes/copywriter/.gene-manifest.json +8 -0
- package/genes/copywriter/SKILL.md +329 -0
- package/genes/copywriter/phenotype.json +28 -0
- package/genes/creative-writer/.cloud-manifest.json +6 -0
- package/genes/creative-writer/.gene-manifest.json +8 -0
- package/genes/creative-writer/SKILL.md +356 -0
- package/genes/creative-writer/phenotype.json +28 -0
- package/genes/data-modeler/.cloud-manifest.json +6 -0
- package/genes/data-modeler/.gene-manifest.json +8 -0
- package/genes/data-modeler/SKILL.md +486 -0
- package/genes/data-modeler/phenotype.json +28 -0
- package/genes/debugger/.cloud-manifest.json +6 -0
- package/genes/debugger/.gene-manifest.json +8 -0
- package/genes/debugger/SKILL.md +416 -0
- package/genes/debugger/phenotype.json +28 -0
- package/genes/design-tokens/.cloud-manifest.json +6 -0
- package/genes/design-tokens/.gene-manifest.json +8 -0
- package/genes/design-tokens/SKILL.md +222 -0
- package/genes/design-tokens/index.ts +128 -0
- package/genes/design-tokens/package.json +1 -0
- package/genes/design-tokens/phenotype.json +1 -0
- package/genes/devops-automator/.cloud-manifest.json +6 -0
- package/genes/devops-automator/.gene-manifest.json +8 -0
- package/genes/devops-automator/SKILL.md +490 -0
- package/genes/devops-automator/phenotype.json +28 -0
- package/genes/doc-coauthoring/.cloud-manifest.json +6 -0
- package/genes/doc-coauthoring/.gene-manifest.json +8 -0
- package/genes/doc-coauthoring/SKILL.md +375 -0
- package/genes/doc-coauthoring/phenotype.json +28 -0
- package/genes/doc-retrieval/.cloud-manifest.json +6 -0
- package/genes/doc-retrieval/index.ts +134 -0
- package/genes/doc-retrieval/phenotype.json +54 -0
- package/genes/docs-writer/.cloud-manifest.json +6 -0
- package/genes/docs-writer/.gene-manifest.json +8 -0
- package/genes/docs-writer/SKILL.md +492 -0
- package/genes/docs-writer/phenotype.json +28 -0
- package/genes/evolve-life/.cloud-manifest.json +6 -0
- package/genes/evolve-life/.compile-result.json +12 -0
- package/genes/evolve-life/README.md +52 -0
- package/genes/evolve-life/gene.ir.wasm +0 -0
- package/genes/evolve-life/gene.wasm +0 -0
- package/genes/evolve-life/index.ts +255 -0
- package/genes/evolve-life/phenotype.json +129 -0
- package/genes/evolve-life-bitwise/.cloud-manifest.json +6 -0
- package/genes/evolve-life-bitwise/.compile-result.json +12 -0
- package/genes/evolve-life-bitwise/gene.ir.wasm +0 -0
- package/genes/evolve-life-bitwise/gene.wasm +0 -0
- package/genes/evolve-life-bitwise/index.ts +273 -0
- package/genes/evolve-life-bitwise/phenotype.json +129 -0
- package/genes/evolve-life-sparse/.cloud-manifest.json +6 -0
- package/genes/evolve-life-sparse/.compile-result.json +12 -0
- package/genes/evolve-life-sparse/gene.ir.wasm +0 -0
- package/genes/evolve-life-sparse/gene.wasm +0 -0
- package/genes/evolve-life-sparse/index.ts +236 -0
- package/genes/evolve-life-sparse/phenotype.json +129 -0
- package/genes/fact-checker/.cloud-manifest.json +6 -0
- package/genes/fact-checker/.gene-manifest.json +8 -0
- package/genes/fact-checker/SKILL.md +373 -0
- package/genes/fact-checker/phenotype.json +28 -0
- package/genes/genesis-code-format/.cloud-manifest.json +6 -0
- package/genes/genesis-code-format/package.json +1 -0
- package/genes/genesis-code-format/phenotype.json +1 -0
- package/genes/genesis-file-read/.cloud-manifest.json +6 -0
- package/genes/genesis-file-read/index.ts +11 -1
- package/genes/genesis-file-read/package.json +1 -0
- package/genes/genesis-file-read/phenotype.json +1 -0
- package/genes/genesis-l0-constraint/.cloud-manifest.json +6 -0
- package/genes/genesis-l0-constraint/package.json +1 -0
- package/genes/genesis-l0-constraint/phenotype.json +1 -0
- package/genes/genesis-web-search/.cloud-manifest.json +2 -2
- package/genes/genesis-web-search/package.json +1 -0
- package/genes/genesis-web-search/phenotype.json +1 -0
- package/genes/genesis-web-search-lite/.cloud-manifest.json +6 -0
- package/genes/genesis-web-search-lite/package.json +1 -0
- package/genes/genesis-web-search-lite/phenotype.json +1 -0
- package/genes/git-workflow/.cloud-manifest.json +6 -0
- package/genes/git-workflow/.gene-manifest.json +8 -0
- package/genes/git-workflow/SKILL.md +407 -0
- package/genes/git-workflow/phenotype.json +28 -0
- package/genes/grammar-checker/.cloud-manifest.json +6 -0
- package/genes/grammar-checker/.gene-manifest.json +8 -0
- package/genes/grammar-checker/SKILL.md +194 -0
- package/genes/grammar-checker/index.ts +168 -0
- package/genes/grammar-checker/package.json +1 -0
- package/genes/grammar-checker/phenotype.json +52 -0
- package/genes/json-validator/.cloud-manifest.json +6 -0
- package/genes/json-validator/README.md +42 -0
- package/genes/json-validator/index.ts +112 -0
- package/genes/json-validator/phenotype.json +42 -0
- package/genes/license-advisor/.cloud-manifest.json +6 -0
- package/genes/license-advisor/.gene-manifest.json +8 -0
- package/genes/license-advisor/SKILL.md +117 -0
- package/genes/license-advisor/phenotype.json +28 -0
- package/genes/logic-architect/.cloud-manifest.json +6 -0
- package/genes/logic-architect/.gene-manifest.json +8 -0
- package/genes/logic-architect/SKILL.md +451 -0
- package/genes/logic-architect/phenotype.json +28 -0
- package/genes/markdown-formatter/.cloud-manifest.json +6 -0
- package/genes/markdown-formatter/README.md +34 -0
- package/genes/markdown-formatter/index.ts +86 -0
- package/genes/markdown-formatter/phenotype.json +32 -0
- package/genes/orch/.cloud-manifest.json +6 -0
- package/genes/orch/.gene-manifest.json +8 -0
- package/genes/orch/SKILL.md +504 -0
- package/genes/orch/phenotype.json +28 -0
- package/genes/particle-barneshut/.cloud-manifest.json +6 -0
- package/genes/particle-barneshut/.compile-result.json +12 -0
- package/genes/particle-barneshut/README.md +55 -0
- package/genes/particle-barneshut/gene.ir.wasm +0 -0
- package/genes/particle-barneshut/gene.wasm +0 -0
- package/genes/particle-barneshut/index.ts +486 -0
- package/genes/particle-barneshut/phenotype.json +137 -0
- package/genes/particle-brute/.cloud-manifest.json +6 -0
- package/genes/particle-brute/.compile-result.json +12 -0
- package/genes/particle-brute/README.md +55 -0
- package/genes/particle-brute/gene.ir.wasm +0 -0
- package/genes/particle-brute/gene.wasm +0 -0
- package/genes/particle-brute/index.ts +277 -0
- package/genes/particle-brute/phenotype.json +137 -0
- package/genes/particle-spatial/.cloud-manifest.json +6 -0
- package/genes/particle-spatial/.compile-result.json +12 -0
- package/genes/particle-spatial/README.md +53 -0
- package/genes/particle-spatial/gene.ir.wasm +0 -0
- package/genes/particle-spatial/gene.wasm +0 -0
- package/genes/particle-spatial/index.ts +352 -0
- package/genes/particle-spatial/phenotype.json +137 -0
- package/genes/performance-optimizer/.cloud-manifest.json +6 -0
- package/genes/performance-optimizer/.gene-manifest.json +8 -0
- package/genes/performance-optimizer/SKILL.md +480 -0
- package/genes/performance-optimizer/phenotype.json +28 -0
- package/genes/plagiarism-checker/.cloud-manifest.json +6 -0
- package/genes/plagiarism-checker/.gene-manifest.json +8 -0
- package/genes/plagiarism-checker/SKILL.md +342 -0
- package/genes/plagiarism-checker/phenotype.json +28 -0
- package/genes/product-manager/.cloud-manifest.json +6 -0
- package/genes/product-manager/.gene-manifest.json +8 -0
- package/genes/product-manager/SKILL.md +249 -0
- package/genes/product-manager/phenotype.json +28 -0
- package/genes/project-reviewer/.cloud-manifest.json +6 -0
- package/genes/project-reviewer/.gene-manifest.json +8 -0
- package/genes/project-reviewer/SKILL.md +312 -0
- package/genes/project-reviewer/phenotype.json +28 -0
- package/genes/prompt-engineer/.cloud-manifest.json +6 -0
- package/genes/prompt-engineer/.gene-manifest.json +8 -0
- package/genes/prompt-engineer/SKILL.md +411 -0
- package/genes/prompt-engineer/phenotype.json +28 -0
- package/genes/readability-analyzer/.cloud-manifest.json +6 -0
- package/genes/readability-analyzer/.gene-manifest.json +8 -0
- package/genes/readability-analyzer/SKILL.md +357 -0
- package/genes/readability-analyzer/index.ts +123 -0
- package/genes/readability-analyzer/package.json +1 -0
- package/genes/readability-analyzer/phenotype.json +35 -0
- package/genes/rotifer-protocol/SKILL.md +121 -0
- package/genes/security-auditor/.cloud-manifest.json +6 -0
- package/genes/security-auditor/.gene-manifest.json +8 -0
- package/genes/security-auditor/SKILL.md +494 -0
- package/genes/security-auditor/phenotype.json +28 -0
- package/genes/seo-optimizer/.cloud-manifest.json +6 -0
- package/genes/seo-optimizer/.gene-manifest.json +8 -0
- package/genes/seo-optimizer/SKILL.md +327 -0
- package/genes/seo-optimizer/index.ts +206 -0
- package/genes/seo-optimizer/package.json +1 -0
- package/genes/seo-optimizer/phenotype.json +1 -0
- package/genes/source-linker/.cloud-manifest.json +6 -0
- package/genes/source-linker/index.ts +88 -0
- package/genes/source-linker/phenotype.json +45 -0
- package/genes/style-optimizer/.cloud-manifest.json +6 -0
- package/genes/style-optimizer/.gene-manifest.json +8 -0
- package/genes/style-optimizer/SKILL.md +285 -0
- package/genes/style-optimizer/phenotype.json +28 -0
- package/genes/tech-lead/.cloud-manifest.json +6 -0
- package/genes/tech-lead/.gene-manifest.json +8 -0
- package/genes/tech-lead/SKILL.md +451 -0
- package/genes/tech-lead/phenotype.json +28 -0
- package/genes/test-wrap/.cloud-manifest.json +6 -0
- package/genes/test-wrap/.gene-manifest.json +8 -0
- package/genes/test-wrap/phenotype.json +28 -0
- package/genes/testing-strategist/.cloud-manifest.json +6 -0
- package/genes/testing-strategist/.gene-manifest.json +8 -0
- package/genes/testing-strategist/SKILL.md +500 -0
- package/genes/testing-strategist/phenotype.json +28 -0
- package/genes/text-summarizer/.cloud-manifest.json +6 -0
- package/genes/text-summarizer/README.md +34 -0
- package/genes/text-summarizer/index.ts +122 -0
- package/genes/text-summarizer/phenotype.json +32 -0
- package/genes/tone-analyzer/.cloud-manifest.json +6 -0
- package/genes/tone-analyzer/.gene-manifest.json +8 -0
- package/genes/tone-analyzer/SKILL.md +410 -0
- package/genes/tone-analyzer/phenotype.json +28 -0
- package/genes/translator/.cloud-manifest.json +6 -0
- package/genes/translator/.gene-manifest.json +8 -0
- package/genes/translator/SKILL.md +355 -0
- package/genes/translator/phenotype.json +28 -0
- package/genes/ui-components/.cloud-manifest.json +6 -0
- package/genes/ui-components/.gene-manifest.json +8 -0
- package/genes/ui-components/SKILL.md +467 -0
- package/genes/ui-components/phenotype.json +28 -0
- package/genes/uiux-designer/.cloud-manifest.json +6 -0
- package/genes/uiux-designer/.gene-manifest.json +8 -0
- package/genes/uiux-designer/SKILL.md +353 -0
- package/genes/uiux-designer/phenotype.json +28 -0
- package/genes/url-extractor/.cloud-manifest.json +6 -0
- package/genes/url-extractor/README.md +37 -0
- package/genes/url-extractor/index.ts +86 -0
- package/genes/url-extractor/phenotype.json +48 -0
- package/genes/ux-patterns/.cloud-manifest.json +6 -0
- package/genes/ux-patterns/.gene-manifest.json +8 -0
- package/genes/ux-patterns/SKILL.md +872 -0
- package/genes/ux-patterns/phenotype.json +28 -0
- package/genes/web3-components/.cloud-manifest.json +6 -0
- package/genes/web3-components/.gene-manifest.json +8 -0
- package/genes/web3-components/SKILL.md +390 -0
- package/genes/web3-components/phenotype.json +28 -0
- package/package.json +6 -5
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
{
|
|
2
|
+
"domain": "evolve.life",
|
|
3
|
+
"description": "Conway's Game of Life simulator using bitwise-packed rows. Stores 32 cells per integer for cache-friendly bulk neighbor counting. Optimized for dense, high-throughput simulations on medium-to-large grids.",
|
|
4
|
+
"inputSchema": {
|
|
5
|
+
"type": "object",
|
|
6
|
+
"properties": {
|
|
7
|
+
"width": {
|
|
8
|
+
"type": "number",
|
|
9
|
+
"description": "Grid width in cells",
|
|
10
|
+
"default": 64,
|
|
11
|
+
"minimum": 4,
|
|
12
|
+
"maximum": 512
|
|
13
|
+
},
|
|
14
|
+
"height": {
|
|
15
|
+
"type": "number",
|
|
16
|
+
"description": "Grid height in cells",
|
|
17
|
+
"default": 64,
|
|
18
|
+
"minimum": 4,
|
|
19
|
+
"maximum": 512
|
|
20
|
+
},
|
|
21
|
+
"generations": {
|
|
22
|
+
"type": "number",
|
|
23
|
+
"description": "Number of generations to simulate",
|
|
24
|
+
"default": 100,
|
|
25
|
+
"minimum": 1,
|
|
26
|
+
"maximum": 10000
|
|
27
|
+
},
|
|
28
|
+
"preset": {
|
|
29
|
+
"type": "string",
|
|
30
|
+
"description": "Initial pattern preset. Overrides grid if provided.",
|
|
31
|
+
"enum": [
|
|
32
|
+
"glider",
|
|
33
|
+
"pulsar",
|
|
34
|
+
"blinker",
|
|
35
|
+
"beacon",
|
|
36
|
+
"r-pentomino",
|
|
37
|
+
"random"
|
|
38
|
+
]
|
|
39
|
+
},
|
|
40
|
+
"grid": {
|
|
41
|
+
"type": "array",
|
|
42
|
+
"description": "Custom initial grid (2D array of 0s and 1s). Ignored if preset is set.",
|
|
43
|
+
"items": {
|
|
44
|
+
"type": "array",
|
|
45
|
+
"items": {
|
|
46
|
+
"type": "number",
|
|
47
|
+
"enum": [
|
|
48
|
+
0,
|
|
49
|
+
1
|
|
50
|
+
]
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
},
|
|
54
|
+
"rule": {
|
|
55
|
+
"type": "string",
|
|
56
|
+
"description": "Life-like rule in B/S notation (default: B3/S23 for Conway's Life)",
|
|
57
|
+
"default": "B3/S23"
|
|
58
|
+
},
|
|
59
|
+
"seed": {
|
|
60
|
+
"type": "number",
|
|
61
|
+
"description": "Random seed for 'random' preset (deterministic output)"
|
|
62
|
+
}
|
|
63
|
+
},
|
|
64
|
+
"required": []
|
|
65
|
+
},
|
|
66
|
+
"outputSchema": {
|
|
67
|
+
"type": "object",
|
|
68
|
+
"properties": {
|
|
69
|
+
"final_grid": {
|
|
70
|
+
"type": "array",
|
|
71
|
+
"description": "Grid state after all generations",
|
|
72
|
+
"items": {
|
|
73
|
+
"type": "array",
|
|
74
|
+
"items": {
|
|
75
|
+
"type": "number",
|
|
76
|
+
"enum": [
|
|
77
|
+
0,
|
|
78
|
+
1
|
|
79
|
+
]
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
},
|
|
83
|
+
"alive_count": {
|
|
84
|
+
"type": "number",
|
|
85
|
+
"description": "Number of live cells in final grid"
|
|
86
|
+
},
|
|
87
|
+
"peak_population": {
|
|
88
|
+
"type": "number",
|
|
89
|
+
"description": "Maximum live cells observed across all generations"
|
|
90
|
+
},
|
|
91
|
+
"stabilized_at": {
|
|
92
|
+
"type": "number",
|
|
93
|
+
"description": "Generation at which the grid stabilized (-1 if not stabilized)"
|
|
94
|
+
},
|
|
95
|
+
"extinction": {
|
|
96
|
+
"type": "boolean",
|
|
97
|
+
"description": "Whether all cells died before final generation"
|
|
98
|
+
},
|
|
99
|
+
"generations_computed": {
|
|
100
|
+
"type": "number",
|
|
101
|
+
"description": "Actual number of generations computed (may be less if stabilized/extinct)"
|
|
102
|
+
},
|
|
103
|
+
"cells_processed": {
|
|
104
|
+
"type": "number",
|
|
105
|
+
"description": "Total cell evaluations (width * height * generations_computed)"
|
|
106
|
+
},
|
|
107
|
+
"ascii_snapshot": {
|
|
108
|
+
"type": "string",
|
|
109
|
+
"description": "ASCII art of the final grid state (max 80x40)"
|
|
110
|
+
}
|
|
111
|
+
},
|
|
112
|
+
"required": [
|
|
113
|
+
"final_grid",
|
|
114
|
+
"alive_count",
|
|
115
|
+
"peak_population",
|
|
116
|
+
"stabilized_at",
|
|
117
|
+
"extinction",
|
|
118
|
+
"generations_computed",
|
|
119
|
+
"cells_processed"
|
|
120
|
+
]
|
|
121
|
+
},
|
|
122
|
+
"dependencies": [],
|
|
123
|
+
"version": "0.2.0",
|
|
124
|
+
"author": "rotifer-team",
|
|
125
|
+
"createdAt": 1741906800000,
|
|
126
|
+
"fidelity": "Native",
|
|
127
|
+
"transparency": "Open",
|
|
128
|
+
"ir_hash": "29095a3f52e096d1e8ba016b9025cacb90e95f9be1b157f6f5d0c487114ec538"
|
|
129
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
{
|
|
2
|
+
"geneId": "b8f381c4d18225a5a24c4590eb902415a252190c517aa79278c1584e4b202fad",
|
|
3
|
+
"name": "evolve-life-sparse",
|
|
4
|
+
"domain": "evolve.life",
|
|
5
|
+
"compiledAt": "2026-03-14T06:24:55.562Z",
|
|
6
|
+
"fidelity": "Native",
|
|
7
|
+
"wasmAvailable": true,
|
|
8
|
+
"irHash": "29095a3f52e096d1e8ba016b9025cacb90e95f9be1b157f6f5d0c487114ec538",
|
|
9
|
+
"totalSize": 1298399,
|
|
10
|
+
"codeSectionSize": 956115,
|
|
11
|
+
"durationMs": 5931
|
|
12
|
+
}
|
|
Binary file
|
|
Binary file
|
|
@@ -0,0 +1,236 @@
|
|
|
1
|
+
interface LifeInput {
|
|
2
|
+
width?: number;
|
|
3
|
+
height?: number;
|
|
4
|
+
generations?: number;
|
|
5
|
+
preset?: "glider" | "pulsar" | "blinker" | "beacon" | "r-pentomino" | "random";
|
|
6
|
+
grid?: number[][];
|
|
7
|
+
rule?: string;
|
|
8
|
+
seed?: number;
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
interface LifeOutput {
|
|
12
|
+
final_grid: number[][];
|
|
13
|
+
alive_count: number;
|
|
14
|
+
peak_population: number;
|
|
15
|
+
stabilized_at: number;
|
|
16
|
+
extinction: boolean;
|
|
17
|
+
generations_computed: number;
|
|
18
|
+
cells_processed: number;
|
|
19
|
+
ascii_snapshot?: string;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
function parseRule(rule: string): { birth: Set<number>; survive: Set<number> } {
|
|
23
|
+
const birth = new Set<number>();
|
|
24
|
+
const survive = new Set<number>();
|
|
25
|
+
const match = rule.match(/B([0-8]*)\/S([0-8]*)/);
|
|
26
|
+
if (!match) return { birth: new Set([3]), survive: new Set([2, 3]) };
|
|
27
|
+
for (const ch of match[1]) birth.add(parseInt(ch));
|
|
28
|
+
for (const ch of match[2]) survive.add(parseInt(ch));
|
|
29
|
+
return { birth, survive };
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
function mulberry32(seed: number): () => number {
|
|
33
|
+
let s = seed | 0;
|
|
34
|
+
return () => {
|
|
35
|
+
s = (s + 0x6d2b79f5) | 0;
|
|
36
|
+
let t = Math.imul(s ^ (s >>> 15), 1 | s);
|
|
37
|
+
t = (t + Math.imul(t ^ (t >>> 7), 61 | t)) ^ t;
|
|
38
|
+
return ((t ^ (t >>> 14)) >>> 0) / 4294967296;
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
function cellKey(x: number, y: number): number {
|
|
43
|
+
return y * 65536 + x;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
function keyToXY(key: number): [number, number] {
|
|
47
|
+
return [key % 65536, (key / 65536) | 0];
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
function presetCells(preset: string, w: number, h: number, seed?: number): Set<number> {
|
|
51
|
+
const cells = new Set<number>();
|
|
52
|
+
const cx = (w / 2) | 0;
|
|
53
|
+
const cy = (h / 2) | 0;
|
|
54
|
+
|
|
55
|
+
const place = (pattern: number[][], ox: number, oy: number) => {
|
|
56
|
+
for (let py = 0; py < pattern.length; py++) {
|
|
57
|
+
for (let px = 0; px < pattern[py].length; px++) {
|
|
58
|
+
if (pattern[py][px]) {
|
|
59
|
+
const gx = ox + px;
|
|
60
|
+
const gy = oy + py;
|
|
61
|
+
if (gx >= 0 && gx < w && gy >= 0 && gy < h) cells.add(cellKey(gx, gy));
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
};
|
|
66
|
+
|
|
67
|
+
switch (preset) {
|
|
68
|
+
case "glider":
|
|
69
|
+
place([[0,1,0],[0,0,1],[1,1,1]], cx - 1, cy - 1);
|
|
70
|
+
break;
|
|
71
|
+
case "blinker":
|
|
72
|
+
place([[1,1,1]], cx - 1, cy);
|
|
73
|
+
break;
|
|
74
|
+
case "beacon":
|
|
75
|
+
place([[1,1,0,0],[1,1,0,0],[0,0,1,1],[0,0,1,1]], cx - 2, cy - 2);
|
|
76
|
+
break;
|
|
77
|
+
case "pulsar":
|
|
78
|
+
place([
|
|
79
|
+
[0,0,1,1,1,0,0,0,1,1,1,0,0],
|
|
80
|
+
[0,0,0,0,0,0,0,0,0,0,0,0,0],
|
|
81
|
+
[1,0,0,0,0,1,0,1,0,0,0,0,1],
|
|
82
|
+
[1,0,0,0,0,1,0,1,0,0,0,0,1],
|
|
83
|
+
[1,0,0,0,0,1,0,1,0,0,0,0,1],
|
|
84
|
+
[0,0,1,1,1,0,0,0,1,1,1,0,0],
|
|
85
|
+
[0,0,0,0,0,0,0,0,0,0,0,0,0],
|
|
86
|
+
[0,0,1,1,1,0,0,0,1,1,1,0,0],
|
|
87
|
+
[1,0,0,0,0,1,0,1,0,0,0,0,1],
|
|
88
|
+
[1,0,0,0,0,1,0,1,0,0,0,0,1],
|
|
89
|
+
[1,0,0,0,0,1,0,1,0,0,0,0,1],
|
|
90
|
+
[0,0,0,0,0,0,0,0,0,0,0,0,0],
|
|
91
|
+
[0,0,1,1,1,0,0,0,1,1,1,0,0],
|
|
92
|
+
], cx - 6, cy - 6);
|
|
93
|
+
break;
|
|
94
|
+
case "r-pentomino":
|
|
95
|
+
place([[0,1,1],[1,1,0],[0,1,0]], cx - 1, cy - 1);
|
|
96
|
+
break;
|
|
97
|
+
case "random": {
|
|
98
|
+
const rng = mulberry32(seed ?? 42);
|
|
99
|
+
for (let y = 0; y < h; y++) {
|
|
100
|
+
for (let x = 0; x < w; x++) {
|
|
101
|
+
if (rng() < 0.35) cells.add(cellKey(x, y));
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
break;
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
return cells;
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
function sparseStep(
|
|
111
|
+
alive: Set<number>,
|
|
112
|
+
w: number,
|
|
113
|
+
h: number,
|
|
114
|
+
birth: Set<number>,
|
|
115
|
+
survive: Set<number>
|
|
116
|
+
): Set<number> {
|
|
117
|
+
const neighborCount = new Map<number, number>();
|
|
118
|
+
|
|
119
|
+
for (const key of alive) {
|
|
120
|
+
const [x, y] = keyToXY(key);
|
|
121
|
+
for (let dy = -1; dy <= 1; dy++) {
|
|
122
|
+
for (let dx = -1; dx <= 1; dx++) {
|
|
123
|
+
if (dy === 0 && dx === 0) continue;
|
|
124
|
+
const nx = (x + dx + w) % w;
|
|
125
|
+
const ny = (y + dy + h) % h;
|
|
126
|
+
const nk = cellKey(nx, ny);
|
|
127
|
+
neighborCount.set(nk, (neighborCount.get(nk) || 0) + 1);
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
const next = new Set<number>();
|
|
133
|
+
for (const [key, count] of neighborCount) {
|
|
134
|
+
if (alive.has(key)) {
|
|
135
|
+
if (survive.has(count)) next.add(key);
|
|
136
|
+
} else {
|
|
137
|
+
if (birth.has(count)) next.add(key);
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
return next;
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
function sparseHash(alive: Set<number>): number {
|
|
144
|
+
let h = 0;
|
|
145
|
+
for (const key of alive) {
|
|
146
|
+
h = ((h << 5) - h + key) | 0;
|
|
147
|
+
}
|
|
148
|
+
return h;
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
function toGrid(alive: Set<number>, w: number, h: number): number[][] {
|
|
152
|
+
const grid: number[][] = [];
|
|
153
|
+
for (let y = 0; y < h; y++) {
|
|
154
|
+
const row = new Array(w).fill(0);
|
|
155
|
+
for (let x = 0; x < w; x++) {
|
|
156
|
+
if (alive.has(cellKey(x, y))) row[x] = 1;
|
|
157
|
+
}
|
|
158
|
+
grid.push(row);
|
|
159
|
+
}
|
|
160
|
+
return grid;
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
function toAscii(alive: Set<number>, w: number, h: number): string {
|
|
164
|
+
const maxW = Math.min(w, 80);
|
|
165
|
+
const maxH = Math.min(h, 40);
|
|
166
|
+
const lines: string[] = [];
|
|
167
|
+
for (let y = 0; y < maxH; y++) {
|
|
168
|
+
let line = "";
|
|
169
|
+
for (let x = 0; x < maxW; x++) {
|
|
170
|
+
line += alive.has(cellKey(x, y)) ? "\u2588" : "\u00b7";
|
|
171
|
+
}
|
|
172
|
+
lines.push(line);
|
|
173
|
+
}
|
|
174
|
+
return lines.join("\n");
|
|
175
|
+
}
|
|
176
|
+
|
|
177
|
+
export async function express(input: LifeInput): Promise<LifeOutput> {
|
|
178
|
+
const w = Math.max(4, Math.min(512, input.width ?? 64));
|
|
179
|
+
const h = Math.max(4, Math.min(512, input.height ?? 64));
|
|
180
|
+
const maxGen = Math.max(1, Math.min(10000, input.generations ?? 100));
|
|
181
|
+
const { birth, survive } = parseRule(input.rule ?? "B3/S23");
|
|
182
|
+
|
|
183
|
+
let alive: Set<number>;
|
|
184
|
+
|
|
185
|
+
if (input.preset) {
|
|
186
|
+
alive = presetCells(input.preset, w, h, input.seed);
|
|
187
|
+
} else if (input.grid) {
|
|
188
|
+
alive = new Set<number>();
|
|
189
|
+
for (let y = 0; y < Math.min(input.grid.length, h); y++) {
|
|
190
|
+
for (let x = 0; x < Math.min(input.grid[y].length, w); x++) {
|
|
191
|
+
if (input.grid[y][x]) alive.add(cellKey(x, y));
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
} else {
|
|
195
|
+
alive = presetCells("random", w, h, input.seed);
|
|
196
|
+
}
|
|
197
|
+
|
|
198
|
+
let peak = alive.size;
|
|
199
|
+
let stabilizedAt = -1;
|
|
200
|
+
let extinction = false;
|
|
201
|
+
let gen = 0;
|
|
202
|
+
let prevHash = sparseHash(alive);
|
|
203
|
+
let prevPrevHash = 0;
|
|
204
|
+
|
|
205
|
+
for (gen = 0; gen < maxGen; gen++) {
|
|
206
|
+
alive = sparseStep(alive, w, h, birth, survive);
|
|
207
|
+
|
|
208
|
+
if (alive.size > peak) peak = alive.size;
|
|
209
|
+
|
|
210
|
+
if (alive.size === 0) {
|
|
211
|
+
extinction = true;
|
|
212
|
+
gen++;
|
|
213
|
+
break;
|
|
214
|
+
}
|
|
215
|
+
|
|
216
|
+
const currentHash = sparseHash(alive);
|
|
217
|
+
if (currentHash === prevHash || currentHash === prevPrevHash) {
|
|
218
|
+
stabilizedAt = gen + 1;
|
|
219
|
+
gen++;
|
|
220
|
+
break;
|
|
221
|
+
}
|
|
222
|
+
prevPrevHash = prevHash;
|
|
223
|
+
prevHash = currentHash;
|
|
224
|
+
}
|
|
225
|
+
|
|
226
|
+
return {
|
|
227
|
+
final_grid: toGrid(alive, w, h),
|
|
228
|
+
alive_count: alive.size,
|
|
229
|
+
peak_population: peak,
|
|
230
|
+
stabilized_at: stabilizedAt,
|
|
231
|
+
extinction,
|
|
232
|
+
generations_computed: gen,
|
|
233
|
+
cells_processed: w * h * gen,
|
|
234
|
+
ascii_snapshot: toAscii(alive, w, h),
|
|
235
|
+
};
|
|
236
|
+
}
|
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
{
|
|
2
|
+
"domain": "evolve.life",
|
|
3
|
+
"description": "Conway's Game of Life simulator using sparse set representation. Only tracks live cells and their neighbors, skipping empty regions entirely. Excels on large grids with low population density.",
|
|
4
|
+
"inputSchema": {
|
|
5
|
+
"type": "object",
|
|
6
|
+
"properties": {
|
|
7
|
+
"width": {
|
|
8
|
+
"type": "number",
|
|
9
|
+
"description": "Grid width in cells",
|
|
10
|
+
"default": 64,
|
|
11
|
+
"minimum": 4,
|
|
12
|
+
"maximum": 512
|
|
13
|
+
},
|
|
14
|
+
"height": {
|
|
15
|
+
"type": "number",
|
|
16
|
+
"description": "Grid height in cells",
|
|
17
|
+
"default": 64,
|
|
18
|
+
"minimum": 4,
|
|
19
|
+
"maximum": 512
|
|
20
|
+
},
|
|
21
|
+
"generations": {
|
|
22
|
+
"type": "number",
|
|
23
|
+
"description": "Number of generations to simulate",
|
|
24
|
+
"default": 100,
|
|
25
|
+
"minimum": 1,
|
|
26
|
+
"maximum": 10000
|
|
27
|
+
},
|
|
28
|
+
"preset": {
|
|
29
|
+
"type": "string",
|
|
30
|
+
"description": "Initial pattern preset. Overrides grid if provided.",
|
|
31
|
+
"enum": [
|
|
32
|
+
"glider",
|
|
33
|
+
"pulsar",
|
|
34
|
+
"blinker",
|
|
35
|
+
"beacon",
|
|
36
|
+
"r-pentomino",
|
|
37
|
+
"random"
|
|
38
|
+
]
|
|
39
|
+
},
|
|
40
|
+
"grid": {
|
|
41
|
+
"type": "array",
|
|
42
|
+
"description": "Custom initial grid (2D array of 0s and 1s). Ignored if preset is set.",
|
|
43
|
+
"items": {
|
|
44
|
+
"type": "array",
|
|
45
|
+
"items": {
|
|
46
|
+
"type": "number",
|
|
47
|
+
"enum": [
|
|
48
|
+
0,
|
|
49
|
+
1
|
|
50
|
+
]
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
},
|
|
54
|
+
"rule": {
|
|
55
|
+
"type": "string",
|
|
56
|
+
"description": "Life-like rule in B/S notation (default: B3/S23 for Conway's Life)",
|
|
57
|
+
"default": "B3/S23"
|
|
58
|
+
},
|
|
59
|
+
"seed": {
|
|
60
|
+
"type": "number",
|
|
61
|
+
"description": "Random seed for 'random' preset (deterministic output)"
|
|
62
|
+
}
|
|
63
|
+
},
|
|
64
|
+
"required": []
|
|
65
|
+
},
|
|
66
|
+
"outputSchema": {
|
|
67
|
+
"type": "object",
|
|
68
|
+
"properties": {
|
|
69
|
+
"final_grid": {
|
|
70
|
+
"type": "array",
|
|
71
|
+
"description": "Grid state after all generations",
|
|
72
|
+
"items": {
|
|
73
|
+
"type": "array",
|
|
74
|
+
"items": {
|
|
75
|
+
"type": "number",
|
|
76
|
+
"enum": [
|
|
77
|
+
0,
|
|
78
|
+
1
|
|
79
|
+
]
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
},
|
|
83
|
+
"alive_count": {
|
|
84
|
+
"type": "number",
|
|
85
|
+
"description": "Number of live cells in final grid"
|
|
86
|
+
},
|
|
87
|
+
"peak_population": {
|
|
88
|
+
"type": "number",
|
|
89
|
+
"description": "Maximum live cells observed across all generations"
|
|
90
|
+
},
|
|
91
|
+
"stabilized_at": {
|
|
92
|
+
"type": "number",
|
|
93
|
+
"description": "Generation at which the grid stabilized (-1 if not stabilized)"
|
|
94
|
+
},
|
|
95
|
+
"extinction": {
|
|
96
|
+
"type": "boolean",
|
|
97
|
+
"description": "Whether all cells died before final generation"
|
|
98
|
+
},
|
|
99
|
+
"generations_computed": {
|
|
100
|
+
"type": "number",
|
|
101
|
+
"description": "Actual number of generations computed (may be less if stabilized/extinct)"
|
|
102
|
+
},
|
|
103
|
+
"cells_processed": {
|
|
104
|
+
"type": "number",
|
|
105
|
+
"description": "Total cell evaluations (width * height * generations_computed)"
|
|
106
|
+
},
|
|
107
|
+
"ascii_snapshot": {
|
|
108
|
+
"type": "string",
|
|
109
|
+
"description": "ASCII art of the final grid state (max 80x40)"
|
|
110
|
+
}
|
|
111
|
+
},
|
|
112
|
+
"required": [
|
|
113
|
+
"final_grid",
|
|
114
|
+
"alive_count",
|
|
115
|
+
"peak_population",
|
|
116
|
+
"stabilized_at",
|
|
117
|
+
"extinction",
|
|
118
|
+
"generations_computed",
|
|
119
|
+
"cells_processed"
|
|
120
|
+
]
|
|
121
|
+
},
|
|
122
|
+
"dependencies": [],
|
|
123
|
+
"version": "0.2.0",
|
|
124
|
+
"author": "rotifer-team",
|
|
125
|
+
"createdAt": 1741906800000,
|
|
126
|
+
"fidelity": "Native",
|
|
127
|
+
"transparency": "Open",
|
|
128
|
+
"ir_hash": "29095a3f52e096d1e8ba016b9025cacb90e95f9be1b157f6f5d0c487114ec538"
|
|
129
|
+
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
{
|
|
2
|
+
"geneId": "a14a5f14bad3e21f32971bacbb3fac1867aa8c8908e73fa1a373380637000807",
|
|
3
|
+
"name": "fact-checker",
|
|
4
|
+
"domain": "content.factcheck",
|
|
5
|
+
"fidelity": "Wrapped",
|
|
6
|
+
"wrappedAt": "2026-02-24T13:23:24.883Z",
|
|
7
|
+
"fromSkill": "../.cursor/skills/fact-checker/SKILL.md"
|
|
8
|
+
}
|