@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.
Files changed (316) hide show
  1. package/CHANGELOG.md +159 -15
  2. package/LICENSE +1 -1
  3. package/README.md +51 -23
  4. package/README.zh.md +54 -25
  5. package/dist/cloud/auth.d.ts +7 -1
  6. package/dist/cloud/auth.d.ts.map +1 -1
  7. package/dist/cloud/auth.js +65 -1
  8. package/dist/cloud/auth.js.map +1 -1
  9. package/dist/cloud/client.d.ts +4 -1
  10. package/dist/cloud/client.d.ts.map +1 -1
  11. package/dist/cloud/client.js +9 -2
  12. package/dist/cloud/client.js.map +1 -1
  13. package/dist/cloud/types.d.ts +3 -1
  14. package/dist/cloud/types.d.ts.map +1 -1
  15. package/dist/cloud/types.js.map +1 -1
  16. package/dist/commands/agent-create.d.ts.map +1 -1
  17. package/dist/commands/agent-create.js +66 -3
  18. package/dist/commands/agent-create.js.map +1 -1
  19. package/dist/commands/agent-run.d.ts.map +1 -1
  20. package/dist/commands/agent-run.js +296 -32
  21. package/dist/commands/agent-run.js.map +1 -1
  22. package/dist/commands/arena-submit.d.ts.map +1 -1
  23. package/dist/commands/arena-submit.js +45 -17
  24. package/dist/commands/arena-submit.js.map +1 -1
  25. package/dist/commands/compile.d.ts.map +1 -1
  26. package/dist/commands/compile.js +9 -3
  27. package/dist/commands/compile.js.map +1 -1
  28. package/dist/commands/init.d.ts.map +1 -1
  29. package/dist/commands/init.js +13 -3
  30. package/dist/commands/init.js.map +1 -1
  31. package/dist/commands/login.d.ts.map +1 -1
  32. package/dist/commands/login.js +23 -16
  33. package/dist/commands/login.js.map +1 -1
  34. package/dist/commands/network.js +4 -4
  35. package/dist/commands/network.js.map +1 -1
  36. package/dist/commands/publish.d.ts.map +1 -1
  37. package/dist/commands/publish.js +162 -44
  38. package/dist/commands/publish.js.map +1 -1
  39. package/dist/commands/test.d.ts.map +1 -1
  40. package/dist/commands/test.js +209 -23
  41. package/dist/commands/test.js.map +1 -1
  42. package/dist/commands/wrap.d.ts.map +1 -1
  43. package/dist/commands/wrap.js +17 -1
  44. package/dist/commands/wrap.js.map +1 -1
  45. package/dist/index.js +0 -0
  46. package/dist/runtime/network-gateway.d.ts +53 -0
  47. package/dist/runtime/network-gateway.d.ts.map +1 -0
  48. package/dist/runtime/network-gateway.js +147 -0
  49. package/dist/runtime/network-gateway.js.map +1 -0
  50. package/dist/utils/binding.d.ts +25 -0
  51. package/dist/utils/binding.d.ts.map +1 -1
  52. package/dist/utils/binding.js.map +1 -1
  53. package/dist/utils/open-browser.d.ts +10 -0
  54. package/dist/utils/open-browser.d.ts.map +1 -0
  55. package/dist/utils/open-browser.js +23 -0
  56. package/dist/utils/open-browser.js.map +1 -0
  57. package/genes/academic-writer/.cloud-manifest.json +6 -0
  58. package/genes/academic-writer/.gene-manifest.json +8 -0
  59. package/genes/academic-writer/SKILL.md +274 -0
  60. package/genes/academic-writer/phenotype.json +28 -0
  61. package/genes/ai-components/.cloud-manifest.json +6 -0
  62. package/genes/ai-components/.gene-manifest.json +8 -0
  63. package/genes/ai-components/SKILL.md +381 -0
  64. package/genes/ai-components/phenotype.json +28 -0
  65. package/genes/algorithmic-art/.cloud-manifest.json +6 -0
  66. package/genes/algorithmic-art/.gene-manifest.json +8 -0
  67. package/genes/algorithmic-art/SKILL.md +405 -0
  68. package/genes/algorithmic-art/phenotype.json +28 -0
  69. package/genes/answer-synthesizer/.cloud-manifest.json +6 -0
  70. package/genes/answer-synthesizer/index.ts +194 -0
  71. package/genes/answer-synthesizer/phenotype.json +61 -0
  72. package/genes/api-designer/.cloud-manifest.json +6 -0
  73. package/genes/api-designer/.gene-manifest.json +8 -0
  74. package/genes/api-designer/SKILL.md +456 -0
  75. package/genes/api-designer/phenotype.json +28 -0
  76. package/genes/auto-coder/.cloud-manifest.json +6 -0
  77. package/genes/auto-coder/.gene-manifest.json +8 -0
  78. package/genes/auto-coder/SKILL.md +400 -0
  79. package/genes/auto-coder/phenotype.json +28 -0
  80. package/genes/auto-writer/.cloud-manifest.json +6 -0
  81. package/genes/auto-writer/.gene-manifest.json +8 -0
  82. package/genes/auto-writer/SKILL.md +361 -0
  83. package/genes/auto-writer/phenotype.json +28 -0
  84. package/genes/brand-personality/.cloud-manifest.json +6 -0
  85. package/genes/brand-personality/.gene-manifest.json +8 -0
  86. package/genes/brand-personality/SKILL.md +549 -0
  87. package/genes/brand-personality/phenotype.json +28 -0
  88. package/genes/business-writer/.cloud-manifest.json +6 -0
  89. package/genes/business-writer/.gene-manifest.json +8 -0
  90. package/genes/business-writer/SKILL.md +448 -0
  91. package/genes/business-writer/phenotype.json +28 -0
  92. package/genes/citation-manager/.cloud-manifest.json +6 -0
  93. package/genes/citation-manager/.gene-manifest.json +8 -0
  94. package/genes/citation-manager/SKILL.md +279 -0
  95. package/genes/citation-manager/index.ts +162 -0
  96. package/genes/citation-manager/package.json +1 -0
  97. package/genes/citation-manager/phenotype.json +50 -0
  98. package/genes/code-complexity/.cloud-manifest.json +6 -0
  99. package/genes/code-complexity/README.md +35 -0
  100. package/genes/code-complexity/index.ts +101 -0
  101. package/genes/code-complexity/phenotype.json +34 -0
  102. package/genes/copywriter/.cloud-manifest.json +6 -0
  103. package/genes/copywriter/.gene-manifest.json +8 -0
  104. package/genes/copywriter/SKILL.md +329 -0
  105. package/genes/copywriter/phenotype.json +28 -0
  106. package/genes/creative-writer/.cloud-manifest.json +6 -0
  107. package/genes/creative-writer/.gene-manifest.json +8 -0
  108. package/genes/creative-writer/SKILL.md +356 -0
  109. package/genes/creative-writer/phenotype.json +28 -0
  110. package/genes/data-modeler/.cloud-manifest.json +6 -0
  111. package/genes/data-modeler/.gene-manifest.json +8 -0
  112. package/genes/data-modeler/SKILL.md +486 -0
  113. package/genes/data-modeler/phenotype.json +28 -0
  114. package/genes/debugger/.cloud-manifest.json +6 -0
  115. package/genes/debugger/.gene-manifest.json +8 -0
  116. package/genes/debugger/SKILL.md +416 -0
  117. package/genes/debugger/phenotype.json +28 -0
  118. package/genes/design-tokens/.cloud-manifest.json +6 -0
  119. package/genes/design-tokens/.gene-manifest.json +8 -0
  120. package/genes/design-tokens/SKILL.md +222 -0
  121. package/genes/design-tokens/index.ts +128 -0
  122. package/genes/design-tokens/package.json +1 -0
  123. package/genes/design-tokens/phenotype.json +1 -0
  124. package/genes/devops-automator/.cloud-manifest.json +6 -0
  125. package/genes/devops-automator/.gene-manifest.json +8 -0
  126. package/genes/devops-automator/SKILL.md +490 -0
  127. package/genes/devops-automator/phenotype.json +28 -0
  128. package/genes/doc-coauthoring/.cloud-manifest.json +6 -0
  129. package/genes/doc-coauthoring/.gene-manifest.json +8 -0
  130. package/genes/doc-coauthoring/SKILL.md +375 -0
  131. package/genes/doc-coauthoring/phenotype.json +28 -0
  132. package/genes/doc-retrieval/.cloud-manifest.json +6 -0
  133. package/genes/doc-retrieval/index.ts +134 -0
  134. package/genes/doc-retrieval/phenotype.json +54 -0
  135. package/genes/docs-writer/.cloud-manifest.json +6 -0
  136. package/genes/docs-writer/.gene-manifest.json +8 -0
  137. package/genes/docs-writer/SKILL.md +492 -0
  138. package/genes/docs-writer/phenotype.json +28 -0
  139. package/genes/evolve-life/.cloud-manifest.json +6 -0
  140. package/genes/evolve-life/.compile-result.json +12 -0
  141. package/genes/evolve-life/README.md +52 -0
  142. package/genes/evolve-life/gene.ir.wasm +0 -0
  143. package/genes/evolve-life/gene.wasm +0 -0
  144. package/genes/evolve-life/index.ts +255 -0
  145. package/genes/evolve-life/phenotype.json +129 -0
  146. package/genes/evolve-life-bitwise/.cloud-manifest.json +6 -0
  147. package/genes/evolve-life-bitwise/.compile-result.json +12 -0
  148. package/genes/evolve-life-bitwise/gene.ir.wasm +0 -0
  149. package/genes/evolve-life-bitwise/gene.wasm +0 -0
  150. package/genes/evolve-life-bitwise/index.ts +273 -0
  151. package/genes/evolve-life-bitwise/phenotype.json +129 -0
  152. package/genes/evolve-life-sparse/.cloud-manifest.json +6 -0
  153. package/genes/evolve-life-sparse/.compile-result.json +12 -0
  154. package/genes/evolve-life-sparse/gene.ir.wasm +0 -0
  155. package/genes/evolve-life-sparse/gene.wasm +0 -0
  156. package/genes/evolve-life-sparse/index.ts +236 -0
  157. package/genes/evolve-life-sparse/phenotype.json +129 -0
  158. package/genes/fact-checker/.cloud-manifest.json +6 -0
  159. package/genes/fact-checker/.gene-manifest.json +8 -0
  160. package/genes/fact-checker/SKILL.md +373 -0
  161. package/genes/fact-checker/phenotype.json +28 -0
  162. package/genes/genesis-code-format/.cloud-manifest.json +6 -0
  163. package/genes/genesis-code-format/package.json +1 -0
  164. package/genes/genesis-code-format/phenotype.json +1 -0
  165. package/genes/genesis-file-read/.cloud-manifest.json +6 -0
  166. package/genes/genesis-file-read/index.ts +11 -1
  167. package/genes/genesis-file-read/package.json +1 -0
  168. package/genes/genesis-file-read/phenotype.json +1 -0
  169. package/genes/genesis-l0-constraint/.cloud-manifest.json +6 -0
  170. package/genes/genesis-l0-constraint/package.json +1 -0
  171. package/genes/genesis-l0-constraint/phenotype.json +1 -0
  172. package/genes/genesis-web-search/.cloud-manifest.json +2 -2
  173. package/genes/genesis-web-search/package.json +1 -0
  174. package/genes/genesis-web-search/phenotype.json +1 -0
  175. package/genes/genesis-web-search-lite/.cloud-manifest.json +6 -0
  176. package/genes/genesis-web-search-lite/package.json +1 -0
  177. package/genes/genesis-web-search-lite/phenotype.json +1 -0
  178. package/genes/git-workflow/.cloud-manifest.json +6 -0
  179. package/genes/git-workflow/.gene-manifest.json +8 -0
  180. package/genes/git-workflow/SKILL.md +407 -0
  181. package/genes/git-workflow/phenotype.json +28 -0
  182. package/genes/grammar-checker/.cloud-manifest.json +6 -0
  183. package/genes/grammar-checker/.gene-manifest.json +8 -0
  184. package/genes/grammar-checker/SKILL.md +194 -0
  185. package/genes/grammar-checker/index.ts +168 -0
  186. package/genes/grammar-checker/package.json +1 -0
  187. package/genes/grammar-checker/phenotype.json +52 -0
  188. package/genes/json-validator/.cloud-manifest.json +6 -0
  189. package/genes/json-validator/README.md +42 -0
  190. package/genes/json-validator/index.ts +112 -0
  191. package/genes/json-validator/phenotype.json +42 -0
  192. package/genes/license-advisor/.cloud-manifest.json +6 -0
  193. package/genes/license-advisor/.gene-manifest.json +8 -0
  194. package/genes/license-advisor/SKILL.md +117 -0
  195. package/genes/license-advisor/phenotype.json +28 -0
  196. package/genes/logic-architect/.cloud-manifest.json +6 -0
  197. package/genes/logic-architect/.gene-manifest.json +8 -0
  198. package/genes/logic-architect/SKILL.md +451 -0
  199. package/genes/logic-architect/phenotype.json +28 -0
  200. package/genes/markdown-formatter/.cloud-manifest.json +6 -0
  201. package/genes/markdown-formatter/README.md +34 -0
  202. package/genes/markdown-formatter/index.ts +86 -0
  203. package/genes/markdown-formatter/phenotype.json +32 -0
  204. package/genes/orch/.cloud-manifest.json +6 -0
  205. package/genes/orch/.gene-manifest.json +8 -0
  206. package/genes/orch/SKILL.md +504 -0
  207. package/genes/orch/phenotype.json +28 -0
  208. package/genes/particle-barneshut/.cloud-manifest.json +6 -0
  209. package/genes/particle-barneshut/.compile-result.json +12 -0
  210. package/genes/particle-barneshut/README.md +55 -0
  211. package/genes/particle-barneshut/gene.ir.wasm +0 -0
  212. package/genes/particle-barneshut/gene.wasm +0 -0
  213. package/genes/particle-barneshut/index.ts +486 -0
  214. package/genes/particle-barneshut/phenotype.json +137 -0
  215. package/genes/particle-brute/.cloud-manifest.json +6 -0
  216. package/genes/particle-brute/.compile-result.json +12 -0
  217. package/genes/particle-brute/README.md +55 -0
  218. package/genes/particle-brute/gene.ir.wasm +0 -0
  219. package/genes/particle-brute/gene.wasm +0 -0
  220. package/genes/particle-brute/index.ts +277 -0
  221. package/genes/particle-brute/phenotype.json +137 -0
  222. package/genes/particle-spatial/.cloud-manifest.json +6 -0
  223. package/genes/particle-spatial/.compile-result.json +12 -0
  224. package/genes/particle-spatial/README.md +53 -0
  225. package/genes/particle-spatial/gene.ir.wasm +0 -0
  226. package/genes/particle-spatial/gene.wasm +0 -0
  227. package/genes/particle-spatial/index.ts +352 -0
  228. package/genes/particle-spatial/phenotype.json +137 -0
  229. package/genes/performance-optimizer/.cloud-manifest.json +6 -0
  230. package/genes/performance-optimizer/.gene-manifest.json +8 -0
  231. package/genes/performance-optimizer/SKILL.md +480 -0
  232. package/genes/performance-optimizer/phenotype.json +28 -0
  233. package/genes/plagiarism-checker/.cloud-manifest.json +6 -0
  234. package/genes/plagiarism-checker/.gene-manifest.json +8 -0
  235. package/genes/plagiarism-checker/SKILL.md +342 -0
  236. package/genes/plagiarism-checker/phenotype.json +28 -0
  237. package/genes/product-manager/.cloud-manifest.json +6 -0
  238. package/genes/product-manager/.gene-manifest.json +8 -0
  239. package/genes/product-manager/SKILL.md +249 -0
  240. package/genes/product-manager/phenotype.json +28 -0
  241. package/genes/project-reviewer/.cloud-manifest.json +6 -0
  242. package/genes/project-reviewer/.gene-manifest.json +8 -0
  243. package/genes/project-reviewer/SKILL.md +312 -0
  244. package/genes/project-reviewer/phenotype.json +28 -0
  245. package/genes/prompt-engineer/.cloud-manifest.json +6 -0
  246. package/genes/prompt-engineer/.gene-manifest.json +8 -0
  247. package/genes/prompt-engineer/SKILL.md +411 -0
  248. package/genes/prompt-engineer/phenotype.json +28 -0
  249. package/genes/readability-analyzer/.cloud-manifest.json +6 -0
  250. package/genes/readability-analyzer/.gene-manifest.json +8 -0
  251. package/genes/readability-analyzer/SKILL.md +357 -0
  252. package/genes/readability-analyzer/index.ts +123 -0
  253. package/genes/readability-analyzer/package.json +1 -0
  254. package/genes/readability-analyzer/phenotype.json +35 -0
  255. package/genes/rotifer-protocol/SKILL.md +121 -0
  256. package/genes/security-auditor/.cloud-manifest.json +6 -0
  257. package/genes/security-auditor/.gene-manifest.json +8 -0
  258. package/genes/security-auditor/SKILL.md +494 -0
  259. package/genes/security-auditor/phenotype.json +28 -0
  260. package/genes/seo-optimizer/.cloud-manifest.json +6 -0
  261. package/genes/seo-optimizer/.gene-manifest.json +8 -0
  262. package/genes/seo-optimizer/SKILL.md +327 -0
  263. package/genes/seo-optimizer/index.ts +206 -0
  264. package/genes/seo-optimizer/package.json +1 -0
  265. package/genes/seo-optimizer/phenotype.json +1 -0
  266. package/genes/source-linker/.cloud-manifest.json +6 -0
  267. package/genes/source-linker/index.ts +88 -0
  268. package/genes/source-linker/phenotype.json +45 -0
  269. package/genes/style-optimizer/.cloud-manifest.json +6 -0
  270. package/genes/style-optimizer/.gene-manifest.json +8 -0
  271. package/genes/style-optimizer/SKILL.md +285 -0
  272. package/genes/style-optimizer/phenotype.json +28 -0
  273. package/genes/tech-lead/.cloud-manifest.json +6 -0
  274. package/genes/tech-lead/.gene-manifest.json +8 -0
  275. package/genes/tech-lead/SKILL.md +451 -0
  276. package/genes/tech-lead/phenotype.json +28 -0
  277. package/genes/test-wrap/.cloud-manifest.json +6 -0
  278. package/genes/test-wrap/.gene-manifest.json +8 -0
  279. package/genes/test-wrap/phenotype.json +28 -0
  280. package/genes/testing-strategist/.cloud-manifest.json +6 -0
  281. package/genes/testing-strategist/.gene-manifest.json +8 -0
  282. package/genes/testing-strategist/SKILL.md +500 -0
  283. package/genes/testing-strategist/phenotype.json +28 -0
  284. package/genes/text-summarizer/.cloud-manifest.json +6 -0
  285. package/genes/text-summarizer/README.md +34 -0
  286. package/genes/text-summarizer/index.ts +122 -0
  287. package/genes/text-summarizer/phenotype.json +32 -0
  288. package/genes/tone-analyzer/.cloud-manifest.json +6 -0
  289. package/genes/tone-analyzer/.gene-manifest.json +8 -0
  290. package/genes/tone-analyzer/SKILL.md +410 -0
  291. package/genes/tone-analyzer/phenotype.json +28 -0
  292. package/genes/translator/.cloud-manifest.json +6 -0
  293. package/genes/translator/.gene-manifest.json +8 -0
  294. package/genes/translator/SKILL.md +355 -0
  295. package/genes/translator/phenotype.json +28 -0
  296. package/genes/ui-components/.cloud-manifest.json +6 -0
  297. package/genes/ui-components/.gene-manifest.json +8 -0
  298. package/genes/ui-components/SKILL.md +467 -0
  299. package/genes/ui-components/phenotype.json +28 -0
  300. package/genes/uiux-designer/.cloud-manifest.json +6 -0
  301. package/genes/uiux-designer/.gene-manifest.json +8 -0
  302. package/genes/uiux-designer/SKILL.md +353 -0
  303. package/genes/uiux-designer/phenotype.json +28 -0
  304. package/genes/url-extractor/.cloud-manifest.json +6 -0
  305. package/genes/url-extractor/README.md +37 -0
  306. package/genes/url-extractor/index.ts +86 -0
  307. package/genes/url-extractor/phenotype.json +48 -0
  308. package/genes/ux-patterns/.cloud-manifest.json +6 -0
  309. package/genes/ux-patterns/.gene-manifest.json +8 -0
  310. package/genes/ux-patterns/SKILL.md +872 -0
  311. package/genes/ux-patterns/phenotype.json +28 -0
  312. package/genes/web3-components/.cloud-manifest.json +6 -0
  313. package/genes/web3-components/.gene-manifest.json +8 -0
  314. package/genes/web3-components/SKILL.md +390 -0
  315. package/genes/web3-components/phenotype.json +28 -0
  316. 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,6 @@
1
+ {
2
+ "cloud_id": "402b071e-7c31-4248-9390-7d8bcf24725f",
3
+ "owner": "Rotifer Protocol",
4
+ "version": "0.2.0",
5
+ "published_at": "2026-03-17T14:12:42.590Z"
6
+ }
@@ -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
+ }
@@ -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,6 @@
1
+ {
2
+ "cloud_id": "acee330b-c9d5-4f31-8d70-5a5aece1efe2",
3
+ "owner": "Rotifer Protocol",
4
+ "version": "0.1.0",
5
+ "published_at": "2026-03-17T14:12:47.159Z"
6
+ }
@@ -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
+ }