@rotifer/playground 0.1.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.
Files changed (75) hide show
  1. package/CHANGELOG.md +62 -0
  2. package/LICENSE +31 -0
  3. package/README.md +230 -0
  4. package/dist/commands/agent-create.d.ts +3 -0
  5. package/dist/commands/agent-create.d.ts.map +1 -0
  6. package/dist/commands/agent-create.js +86 -0
  7. package/dist/commands/agent-create.js.map +1 -0
  8. package/dist/commands/agent-list.d.ts +3 -0
  9. package/dist/commands/agent-list.d.ts.map +1 -0
  10. package/dist/commands/agent-list.js +83 -0
  11. package/dist/commands/agent-list.js.map +1 -0
  12. package/dist/commands/arena-list.d.ts +3 -0
  13. package/dist/commands/arena-list.d.ts.map +1 -0
  14. package/dist/commands/arena-list.js +116 -0
  15. package/dist/commands/arena-list.js.map +1 -0
  16. package/dist/commands/arena-submit.d.ts +3 -0
  17. package/dist/commands/arena-submit.d.ts.map +1 -0
  18. package/dist/commands/arena-submit.js +106 -0
  19. package/dist/commands/arena-submit.js.map +1 -0
  20. package/dist/commands/arena-watch.d.ts +3 -0
  21. package/dist/commands/arena-watch.d.ts.map +1 -0
  22. package/dist/commands/arena-watch.js +56 -0
  23. package/dist/commands/arena-watch.js.map +1 -0
  24. package/dist/commands/compile.d.ts +3 -0
  25. package/dist/commands/compile.d.ts.map +1 -0
  26. package/dist/commands/compile.js +107 -0
  27. package/dist/commands/compile.js.map +1 -0
  28. package/dist/commands/init.d.ts +3 -0
  29. package/dist/commands/init.d.ts.map +1 -0
  30. package/dist/commands/init.js +215 -0
  31. package/dist/commands/init.js.map +1 -0
  32. package/dist/commands/scan.d.ts +3 -0
  33. package/dist/commands/scan.d.ts.map +1 -0
  34. package/dist/commands/scan.js +106 -0
  35. package/dist/commands/scan.js.map +1 -0
  36. package/dist/commands/test.d.ts +3 -0
  37. package/dist/commands/test.d.ts.map +1 -0
  38. package/dist/commands/test.js +155 -0
  39. package/dist/commands/test.js.map +1 -0
  40. package/dist/commands/wrap.d.ts +3 -0
  41. package/dist/commands/wrap.d.ts.map +1 -0
  42. package/dist/commands/wrap.js +94 -0
  43. package/dist/commands/wrap.js.map +1 -0
  44. package/dist/errors/formatter.d.ts +25 -0
  45. package/dist/errors/formatter.d.ts.map +1 -0
  46. package/dist/errors/formatter.js +43 -0
  47. package/dist/errors/formatter.js.map +1 -0
  48. package/dist/index.d.ts +3 -0
  49. package/dist/index.d.ts.map +1 -0
  50. package/dist/index.js +36 -0
  51. package/dist/index.js.map +1 -0
  52. package/dist/utils/config.d.ts +12 -0
  53. package/dist/utils/config.d.ts.map +1 -0
  54. package/dist/utils/config.js +40 -0
  55. package/dist/utils/config.js.map +1 -0
  56. package/dist/utils/display.d.ts +16 -0
  57. package/dist/utils/display.d.ts.map +1 -0
  58. package/dist/utils/display.js +56 -0
  59. package/dist/utils/display.js.map +1 -0
  60. package/genes/genesis-code-format/index.ts +42 -0
  61. package/genes/genesis-code-format/phenotype.json +29 -0
  62. package/genes/genesis-file-read/index.ts +33 -0
  63. package/genes/genesis-file-read/phenotype.json +29 -0
  64. package/genes/genesis-l0-constraint/index.ts +62 -0
  65. package/genes/genesis-l0-constraint/phenotype.json +37 -0
  66. package/genes/genesis-web-search/index.ts +39 -0
  67. package/genes/genesis-web-search/phenotype.json +40 -0
  68. package/genes/genesis-web-search-lite/index.ts +22 -0
  69. package/genes/genesis-web-search-lite/phenotype.json +27 -0
  70. package/package.json +72 -0
  71. package/templates/composition/par-example.json +11 -0
  72. package/templates/composition/seq-example.json +9 -0
  73. package/templates/gene/index.ts +13 -0
  74. package/templates/gene/phenotype.json +21 -0
  75. package/templates/gene/test.ts +15 -0
@@ -0,0 +1,106 @@
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.scanCommand = void 0;
37
+ const commander_1 = require("commander");
38
+ const node_fs_1 = require("node:fs");
39
+ const node_path_1 = require("node:path");
40
+ const display = __importStar(require("../utils/display.js"));
41
+ const config_js_1 = require("../utils/config.js");
42
+ exports.scanCommand = new commander_1.Command("scan")
43
+ .description("Scan source files for candidate gene functions")
44
+ .argument("[path]", "path to scan", ".")
45
+ .action(async (scanPath) => {
46
+ const root = (0, config_js_1.getProjectRoot)();
47
+ const fullPath = (0, node_path_1.join)(root, scanPath);
48
+ display.header("Gene Candidate Scanner");
49
+ display.info("Scanning: " + fullPath);
50
+ const candidates = scanDirectory(fullPath);
51
+ if (candidates.length === 0) {
52
+ display.warn("No candidate functions found");
53
+ display.info("Candidates: exported functions (export function / pub fn)");
54
+ return;
55
+ }
56
+ display.success("Found " + candidates.length + " candidate function(s):");
57
+ console.log();
58
+ for (const c of candidates) {
59
+ const lang = c.language === "typescript" ? "TS" : "RS";
60
+ console.log(" " + lang + " " + c.name + " " + c.filePath + ":" + c.lineNumber);
61
+ }
62
+ console.log();
63
+ display.info("Use 'rotifer wrap <name> --domain <domain>' to create a gene");
64
+ });
65
+ function scanDirectory(dir) {
66
+ const results = [];
67
+ let entries;
68
+ try {
69
+ entries = (0, node_fs_1.readdirSync)(dir);
70
+ }
71
+ catch {
72
+ return results;
73
+ }
74
+ for (const entry of entries) {
75
+ const full = (0, node_path_1.join)(dir, entry);
76
+ const stat = (0, node_fs_1.statSync)(full);
77
+ if (stat.isDirectory() && !entry.startsWith(".") && entry !== "node_modules") {
78
+ results.push(...scanDirectory(full));
79
+ }
80
+ else if (stat.isFile() && [".ts", ".js", ".rs"].includes((0, node_path_1.extname)(entry))) {
81
+ results.push(...scanFile(full));
82
+ }
83
+ }
84
+ return results;
85
+ }
86
+ function scanFile(filePath) {
87
+ const results = [];
88
+ const content = (0, node_fs_1.readFileSync)(filePath, "utf-8");
89
+ const lines = content.split("\n");
90
+ const isTs = filePath.endsWith(".ts") || filePath.endsWith(".js");
91
+ for (let i = 0; i < lines.length; i++) {
92
+ const line = lines[i].trim();
93
+ if (isTs) {
94
+ const m = line.match(/^export\s+(?:async\s+)?function\s+(\w+)/);
95
+ if (m)
96
+ results.push({ name: m[1], filePath, lineNumber: i + 1, language: "typescript" });
97
+ }
98
+ else if (filePath.endsWith(".rs")) {
99
+ const m = line.match(/^pub\s+(?:async\s+)?fn\s+(\w+)/);
100
+ if (m)
101
+ results.push({ name: m[1], filePath, lineNumber: i + 1, language: "rust" });
102
+ }
103
+ }
104
+ return results;
105
+ }
106
+ //# sourceMappingURL=scan.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scan.js","sourceRoot":"","sources":["../../src/commands/scan.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { Command } from "commander";
2
+ export declare const testCommand: Command;
3
+ //# sourceMappingURL=test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"test.d.ts","sourceRoot":"","sources":["../../src/commands/test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAOpC,eAAO,MAAM,WAAW,SA8DpB,CAAC"}
@@ -0,0 +1,155 @@
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
+ var __importDefault = (this && this.__importDefault) || function (mod) {
36
+ return (mod && mod.__esModule) ? mod : { "default": mod };
37
+ };
38
+ Object.defineProperty(exports, "__esModule", { value: true });
39
+ exports.testCommand = void 0;
40
+ const commander_1 = require("commander");
41
+ const node_fs_1 = require("node:fs");
42
+ const node_path_1 = require("node:path");
43
+ const ajv_1 = __importDefault(require("ajv"));
44
+ const display = __importStar(require("../utils/display.js"));
45
+ const config_js_1 = require("../utils/config.js");
46
+ exports.testCommand = new commander_1.Command("test")
47
+ .description("Test a gene in L2 sandbox")
48
+ .argument("[name]", "gene name to test")
49
+ .option("--verbose", "show detailed output", false)
50
+ .action(async (name, options) => {
51
+ const root = (0, config_js_1.getProjectRoot)();
52
+ const config = (0, config_js_1.loadConfig)(root);
53
+ display.header("Gene Test Runner (L2 Sandbox)");
54
+ if (!name) {
55
+ display.error("Specify a gene name: rotifer test <gene-name>");
56
+ process.exit(1);
57
+ }
58
+ const geneDir = (0, node_path_1.join)(root, config.genes_dir, name);
59
+ const phenotypePath = (0, node_path_1.join)(geneDir, "phenotype.json");
60
+ if (!(0, node_fs_1.existsSync)(phenotypePath)) {
61
+ display.rustStyleError({
62
+ code: "E0010",
63
+ message: "Phenotype not found for gene: " + name,
64
+ file: phenotypePath,
65
+ suggestion: "Run 'rotifer wrap " + name + "' first",
66
+ });
67
+ process.exit(1);
68
+ }
69
+ const phenotype = JSON.parse((0, node_fs_1.readFileSync)(phenotypePath, "utf-8"));
70
+ const ajv = new ajv_1.default({ allErrors: true });
71
+ let passed = 0;
72
+ let failed = 0;
73
+ display.info("Test 1: Phenotype Schema Validation");
74
+ const requiredFields = ["domain", "inputSchema", "outputSchema", "version", "fidelity"];
75
+ const phenotypeValid = requiredFields.every((k) => k in phenotype);
76
+ if (phenotypeValid) {
77
+ passed++;
78
+ display.success(" Phenotype schema is valid");
79
+ }
80
+ else {
81
+ failed++;
82
+ display.error(" Phenotype schema validation failed");
83
+ }
84
+ display.info("Test 2: Input Schema Validation");
85
+ try {
86
+ ajv.compile(phenotype.inputSchema || {});
87
+ passed++;
88
+ display.success(" inputSchema is valid JSON Schema");
89
+ }
90
+ catch (e) {
91
+ failed++;
92
+ display.error(" inputSchema is invalid", String(e));
93
+ }
94
+ display.info("Test 3: Output Schema Validation");
95
+ try {
96
+ ajv.compile(phenotype.outputSchema || {});
97
+ passed++;
98
+ display.success(" outputSchema is valid JSON Schema");
99
+ }
100
+ catch (e) {
101
+ failed++;
102
+ display.error(" outputSchema is invalid", String(e));
103
+ }
104
+ display.info("Test 4: Auto-generated Input Conformance");
105
+ const testInput = generateTestInput(phenotype.inputSchema);
106
+ const inputValidate = ajv.compile(phenotype.inputSchema || {});
107
+ if (inputValidate(testInput)) {
108
+ passed++;
109
+ display.success(" Generated input conforms to schema");
110
+ }
111
+ else {
112
+ failed++;
113
+ display.error(" Generated input does not conform");
114
+ }
115
+ display.info("Test 5: Source File Existence");
116
+ const srcExists = (0, node_fs_1.existsSync)((0, node_path_1.join)(geneDir, "index.ts")) || (0, node_fs_1.existsSync)((0, node_path_1.join)(geneDir, "src", "lib.rs")) || (0, node_fs_1.existsSync)((0, node_path_1.join)(geneDir, "index.js"));
117
+ if (srcExists) {
118
+ passed++;
119
+ display.success(" Gene source file found");
120
+ }
121
+ else {
122
+ failed++;
123
+ display.error(" No gene source file found");
124
+ }
125
+ console.log();
126
+ const total = passed + failed;
127
+ if (failed === 0)
128
+ display.success("All " + total + " tests passed");
129
+ else
130
+ display.warn(passed + "/" + total + " tests passed, " + failed + " failed");
131
+ });
132
+ function generateTestInput(schema) {
133
+ const result = {};
134
+ const properties = (schema.properties || {});
135
+ for (const [key, prop] of Object.entries(properties)) {
136
+ switch (prop.type) {
137
+ case "string":
138
+ result[key] = "test_value";
139
+ break;
140
+ case "number":
141
+ case "integer":
142
+ result[key] = 42;
143
+ break;
144
+ case "boolean":
145
+ result[key] = true;
146
+ break;
147
+ case "array":
148
+ result[key] = [];
149
+ break;
150
+ default: result[key] = null;
151
+ }
152
+ }
153
+ return result;
154
+ }
155
+ //# sourceMappingURL=test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"test.js","sourceRoot":"","sources":["../../src/commands/test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { Command } from "commander";
2
+ export declare const wrapCommand: Command;
3
+ //# sourceMappingURL=wrap.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wrap.d.ts","sourceRoot":"","sources":["../../src/commands/wrap.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAOpC,eAAO,MAAM,WAAW,SA4DpB,CAAC"}
@@ -0,0 +1,94 @@
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.wrapCommand = void 0;
37
+ const commander_1 = require("commander");
38
+ const node_fs_1 = require("node:fs");
39
+ const node_path_1 = require("node:path");
40
+ const node_crypto_1 = require("node:crypto");
41
+ const display = __importStar(require("../utils/display.js"));
42
+ const config_js_1 = require("../utils/config.js");
43
+ exports.wrapCommand = new commander_1.Command("wrap")
44
+ .description("Wrap a function as a Rotifer gene (generates Phenotype)")
45
+ .argument("<name>", "function or gene directory name")
46
+ .option("-d, --domain <domain>", "gene functional domain")
47
+ .option("--fidelity <level>", "fidelity level", "Wrapped")
48
+ .action(async (name, options) => {
49
+ const root = (0, config_js_1.getProjectRoot)();
50
+ const config = (0, config_js_1.loadConfig)(root);
51
+ const domain = options.domain || config.default_domain || "general";
52
+ display.header("Gene Wrapper");
53
+ const geneDir = (0, node_path_1.join)(root, config.genes_dir, name);
54
+ if (!(0, node_fs_1.existsSync)(geneDir)) {
55
+ display.rustStyleError({
56
+ code: "E0001",
57
+ message: `Gene directory '${name}' not found`,
58
+ file: geneDir,
59
+ suggestion: `Create the directory first: mkdir -p ${geneDir}`,
60
+ docsUrl: "https://rotifer.dev/docs/genes",
61
+ });
62
+ process.exit(1);
63
+ }
64
+ const phenotypePath = (0, node_path_1.join)(geneDir, "phenotype.json");
65
+ let phenotype;
66
+ if ((0, node_fs_1.existsSync)(phenotypePath)) {
67
+ phenotype = JSON.parse((0, node_fs_1.readFileSync)(phenotypePath, "utf-8"));
68
+ phenotype.domain = domain;
69
+ }
70
+ else {
71
+ phenotype = {
72
+ domain,
73
+ inputSchema: { type: "object", properties: {}, required: [] },
74
+ outputSchema: { type: "object" },
75
+ dependencies: [],
76
+ version: "0.1.0",
77
+ author: config.author,
78
+ createdAt: Date.now(),
79
+ fidelity: options.fidelity,
80
+ transparency: "Open",
81
+ };
82
+ }
83
+ const phenotypeStr = JSON.stringify(phenotype, null, 2);
84
+ const geneId = (0, node_crypto_1.createHash)("sha256").update(phenotypeStr).digest("hex");
85
+ (0, node_fs_1.writeFileSync)(phenotypePath, phenotypeStr + "\n");
86
+ (0, node_fs_1.writeFileSync)((0, node_path_1.join)(geneDir, ".gene-manifest.json"), JSON.stringify({ geneId, name, domain, fidelity: options.fidelity, wrappedAt: new Date().toISOString() }, null, 2) + "\n");
87
+ display.success(`Gene '${name}' wrapped successfully`);
88
+ display.keyValue("Gene ID", display.geneId(geneId));
89
+ display.keyValue("Domain", domain);
90
+ display.keyValue("Fidelity", options.fidelity);
91
+ console.log();
92
+ display.info("Next: rotifer test " + name);
93
+ });
94
+ //# sourceMappingURL=wrap.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wrap.js","sourceRoot":"","sources":["../../src/commands/wrap.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,25 @@
1
+ export interface RotiferError {
2
+ code: string;
3
+ message: string;
4
+ file?: string;
5
+ line?: number;
6
+ column?: number;
7
+ suggestion?: string;
8
+ docsUrl?: string;
9
+ }
10
+ export declare function formatError(err: RotiferError): string;
11
+ export declare const ERROR_CODES: {
12
+ readonly E0001: "Gene directory not found";
13
+ readonly E0002: "Phenotype validation failed";
14
+ readonly E0003: "Schema compilation error";
15
+ readonly E0010: "Phenotype file not found";
16
+ readonly E0011: "Test execution failed";
17
+ readonly E0020: "Compilation target not found";
18
+ readonly E0021: "WASM compilation failed";
19
+ readonly E0030: "Gene not wrapped";
20
+ readonly E0031: "Arena submission failed";
21
+ readonly E0040: "Agent creation failed";
22
+ readonly E0100: "Config file not found";
23
+ readonly E0101: "Config file invalid";
24
+ };
25
+ //# sourceMappingURL=formatter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"formatter.d.ts","sourceRoot":"","sources":["../../src/errors/formatter.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,wBAAgB,WAAW,CAAC,GAAG,EAAE,YAAY,GAAG,MAAM,CAwBrD;AAED,eAAO,MAAM,WAAW;;;;;;;;;;;;;CAad,CAAC"}
@@ -0,0 +1,43 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.ERROR_CODES = void 0;
7
+ exports.formatError = formatError;
8
+ const chalk_1 = __importDefault(require("chalk"));
9
+ function formatError(err) {
10
+ const lines = [];
11
+ lines.push(chalk_1.default.red.bold(`error[${err.code}]`) + chalk_1.default.bold(`: ${err.message}`));
12
+ if (err.file) {
13
+ let location = err.file;
14
+ if (err.line)
15
+ location += `:${err.line}`;
16
+ if (err.column)
17
+ location += `:${err.column}`;
18
+ lines.push(chalk_1.default.blue(" --> ") + location);
19
+ }
20
+ if (err.suggestion) {
21
+ lines.push("");
22
+ lines.push(chalk_1.default.green("help") + `: ${err.suggestion}`);
23
+ }
24
+ if (err.docsUrl) {
25
+ lines.push(chalk_1.default.dim("docs") + `: ${err.docsUrl}`);
26
+ }
27
+ return lines.join("\n");
28
+ }
29
+ exports.ERROR_CODES = {
30
+ E0001: "Gene directory not found",
31
+ E0002: "Phenotype validation failed",
32
+ E0003: "Schema compilation error",
33
+ E0010: "Phenotype file not found",
34
+ E0011: "Test execution failed",
35
+ E0020: "Compilation target not found",
36
+ E0021: "WASM compilation failed",
37
+ E0030: "Gene not wrapped",
38
+ E0031: "Arena submission failed",
39
+ E0040: "Agent creation failed",
40
+ E0100: "Config file not found",
41
+ E0101: "Config file invalid",
42
+ };
43
+ //# sourceMappingURL=formatter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"formatter.js","sourceRoot":"","sources":["../../src/errors/formatter.ts"],"names":[],"mappings":";;;;;;AAYA,kCAwBC;AApCD,kDAA0B;AAY1B,SAAgB,WAAW,CAAC,GAAiB;IAC3C,MAAM,KAAK,GAAa,EAAE,CAAC;IAE3B,KAAK,CAAC,IAAI,CACR,eAAK,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,GAAG,CAAC,IAAI,GAAG,CAAC,GAAG,eAAK,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,OAAO,EAAE,CAAC,CACtE,CAAC;IAEF,IAAI,GAAG,CAAC,IAAI,EAAE,CAAC;QACb,IAAI,QAAQ,GAAG,GAAG,CAAC,IAAI,CAAC;QACxB,IAAI,GAAG,CAAC,IAAI;YAAE,QAAQ,IAAI,IAAI,GAAG,CAAC,IAAI,EAAE,CAAC;QACzC,IAAI,GAAG,CAAC,MAAM;YAAE,QAAQ,IAAI,IAAI,GAAG,CAAC,MAAM,EAAE,CAAC;QAC7C,KAAK,CAAC,IAAI,CAAC,eAAK,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,QAAQ,CAAC,CAAC;IAC7C,CAAC;IAED,IAAI,GAAG,CAAC,UAAU,EAAE,CAAC;QACnB,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACf,KAAK,CAAC,IAAI,CAAC,eAAK,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,KAAK,GAAG,CAAC,UAAU,EAAE,CAAC,CAAC;IAC1D,CAAC;IAED,IAAI,GAAG,CAAC,OAAO,EAAE,CAAC;QAChB,KAAK,CAAC,IAAI,CAAC,eAAK,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,KAAK,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;IACrD,CAAC;IAED,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAEY,QAAA,WAAW,GAAG;IACzB,KAAK,EAAE,0BAA0B;IACjC,KAAK,EAAE,6BAA6B;IACpC,KAAK,EAAE,0BAA0B;IACjC,KAAK,EAAE,0BAA0B;IACjC,KAAK,EAAE,uBAAuB;IAC9B,KAAK,EAAE,8BAA8B;IACrC,KAAK,EAAE,yBAAyB;IAChC,KAAK,EAAE,kBAAkB;IACzB,KAAK,EAAE,yBAAyB;IAChC,KAAK,EAAE,uBAAuB;IAC9B,KAAK,EAAE,uBAAuB;IAC9B,KAAK,EAAE,qBAAqB;CACpB,CAAC"}
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+ export {};
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":""}
package/dist/index.js ADDED
@@ -0,0 +1,36 @@
1
+ #!/usr/bin/env node
2
+ "use strict";
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ const commander_1 = require("commander");
5
+ const node_fs_1 = require("node:fs");
6
+ const node_path_1 = require("node:path");
7
+ const init_js_1 = require("./commands/init.js");
8
+ const scan_js_1 = require("./commands/scan.js");
9
+ const wrap_js_1 = require("./commands/wrap.js");
10
+ const test_js_1 = require("./commands/test.js");
11
+ const compile_js_1 = require("./commands/compile.js");
12
+ const arena_submit_js_1 = require("./commands/arena-submit.js");
13
+ const arena_list_js_1 = require("./commands/arena-list.js");
14
+ const arena_watch_js_1 = require("./commands/arena-watch.js");
15
+ const agent_create_js_1 = require("./commands/agent-create.js");
16
+ const agent_list_js_1 = require("./commands/agent-list.js");
17
+ const pkg = JSON.parse((0, node_fs_1.readFileSync)((0, node_path_1.join)(__dirname, "..", "package.json"), "utf-8"));
18
+ const program = new commander_1.Command();
19
+ program
20
+ .name("rotifer")
21
+ .description("Rotifer Playground — local development environment for the Rotifer Protocol")
22
+ .version(pkg.version);
23
+ program.addCommand(init_js_1.initCommand);
24
+ program.addCommand(scan_js_1.scanCommand);
25
+ program.addCommand(wrap_js_1.wrapCommand);
26
+ program.addCommand(test_js_1.testCommand);
27
+ program.addCommand(compile_js_1.compileCommand);
28
+ const arena = program.command("arena").description("Arena competition commands");
29
+ arena.addCommand(arena_submit_js_1.arenaSubmitCommand);
30
+ arena.addCommand(arena_list_js_1.arenaListCommand);
31
+ arena.addCommand(arena_watch_js_1.arenaWatchCommand);
32
+ const agent = program.command("agent").description("Agent lifecycle commands");
33
+ agent.addCommand(agent_create_js_1.agentCreateCommand);
34
+ agent.addCommand(agent_list_js_1.agentListCommand);
35
+ program.parse();
36
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAEA,yCAAoC;AACpC,qCAAuC;AACvC,yCAAiC;AACjC,gDAAiD;AACjD,gDAAiD;AACjD,gDAAiD;AACjD,gDAAiD;AACjD,sDAAuD;AACvD,gEAAgE;AAChE,4DAA4D;AAC5D,8DAA8D;AAC9D,gEAAgE;AAChE,4DAA4D;AAE5D,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,IAAA,sBAAY,EAAC,IAAA,gBAAI,EAAC,SAAS,EAAE,IAAI,EAAE,cAAc,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC;AAErF,MAAM,OAAO,GAAG,IAAI,mBAAO,EAAE,CAAC;AAE9B,OAAO;KACJ,IAAI,CAAC,SAAS,CAAC;KACf,WAAW,CACV,6EAA6E,CAC9E;KACA,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;AAExB,OAAO,CAAC,UAAU,CAAC,qBAAW,CAAC,CAAC;AAChC,OAAO,CAAC,UAAU,CAAC,qBAAW,CAAC,CAAC;AAChC,OAAO,CAAC,UAAU,CAAC,qBAAW,CAAC,CAAC;AAChC,OAAO,CAAC,UAAU,CAAC,qBAAW,CAAC,CAAC;AAChC,OAAO,CAAC,UAAU,CAAC,2BAAc,CAAC,CAAC;AAEnC,MAAM,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,WAAW,CAAC,4BAA4B,CAAC,CAAC;AACjF,KAAK,CAAC,UAAU,CAAC,oCAAkB,CAAC,CAAC;AACrC,KAAK,CAAC,UAAU,CAAC,gCAAgB,CAAC,CAAC;AACnC,KAAK,CAAC,UAAU,CAAC,kCAAiB,CAAC,CAAC;AAEpC,MAAM,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,WAAW,CAAC,0BAA0B,CAAC,CAAC;AAC/E,KAAK,CAAC,UAAU,CAAC,oCAAkB,CAAC,CAAC;AACrC,KAAK,CAAC,UAAU,CAAC,gCAAgB,CAAC,CAAC;AAEnC,OAAO,CAAC,KAAK,EAAE,CAAC"}
@@ -0,0 +1,12 @@
1
+ export interface RotiferConfig {
2
+ name: string;
3
+ version: string;
4
+ author: string;
5
+ genes_dir: string;
6
+ default_domain?: string;
7
+ }
8
+ export declare function findProjectRoot(startDir?: string): string | null;
9
+ export declare function loadConfig(projectDir?: string): RotiferConfig;
10
+ export declare function saveConfig(config: RotiferConfig, projectDir: string): void;
11
+ export declare function getProjectRoot(): string;
12
+ //# sourceMappingURL=config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/utils/config.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAID,wBAAgB,eAAe,CAAC,QAAQ,GAAE,MAAsB,GAAG,MAAM,GAAG,IAAI,CAS/E;AAED,wBAAgB,UAAU,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,aAAa,CAW7D;AAED,wBAAgB,UAAU,CAAC,MAAM,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,GAAG,IAAI,CAG1E;AAED,wBAAgB,cAAc,IAAI,MAAM,CAQvC"}
@@ -0,0 +1,40 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.findProjectRoot = findProjectRoot;
4
+ exports.loadConfig = loadConfig;
5
+ exports.saveConfig = saveConfig;
6
+ exports.getProjectRoot = getProjectRoot;
7
+ const node_fs_1 = require("node:fs");
8
+ const node_path_1 = require("node:path");
9
+ const CONFIG_FILE = "rotifer.json";
10
+ function findProjectRoot(startDir = process.cwd()) {
11
+ let dir = startDir;
12
+ while (dir !== "/") {
13
+ if ((0, node_fs_1.existsSync)((0, node_path_1.join)(dir, CONFIG_FILE))) {
14
+ return dir;
15
+ }
16
+ dir = (0, node_path_1.join)(dir, "..");
17
+ }
18
+ return null;
19
+ }
20
+ function loadConfig(projectDir) {
21
+ const root = projectDir || findProjectRoot();
22
+ if (!root) {
23
+ throw new Error(`No ${CONFIG_FILE} found. Run 'rotifer init' first.`);
24
+ }
25
+ const configPath = (0, node_path_1.join)(root, CONFIG_FILE);
26
+ const content = (0, node_fs_1.readFileSync)(configPath, "utf-8");
27
+ return JSON.parse(content);
28
+ }
29
+ function saveConfig(config, projectDir) {
30
+ const configPath = (0, node_path_1.join)(projectDir, CONFIG_FILE);
31
+ (0, node_fs_1.writeFileSync)(configPath, JSON.stringify(config, null, 2) + "\n");
32
+ }
33
+ function getProjectRoot() {
34
+ const root = findProjectRoot();
35
+ if (!root) {
36
+ throw new Error(`No ${CONFIG_FILE} found. Run 'rotifer init' to create a new project.`);
37
+ }
38
+ return root;
39
+ }
40
+ //# sourceMappingURL=config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/utils/config.ts"],"names":[],"mappings":";;AAaA,0CASC;AAED,gCAWC;AAED,gCAGC;AAED,wCAQC;AAlDD,qCAAkE;AAClE,yCAAiC;AAUjC,MAAM,WAAW,GAAG,cAAc,CAAC;AAEnC,SAAgB,eAAe,CAAC,WAAmB,OAAO,CAAC,GAAG,EAAE;IAC9D,IAAI,GAAG,GAAG,QAAQ,CAAC;IACnB,OAAO,GAAG,KAAK,GAAG,EAAE,CAAC;QACnB,IAAI,IAAA,oBAAU,EAAC,IAAA,gBAAI,EAAC,GAAG,EAAE,WAAW,CAAC,CAAC,EAAE,CAAC;YACvC,OAAO,GAAG,CAAC;QACb,CAAC;QACD,GAAG,GAAG,IAAA,gBAAI,EAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IACxB,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAgB,UAAU,CAAC,UAAmB;IAC5C,MAAM,IAAI,GAAG,UAAU,IAAI,eAAe,EAAE,CAAC;IAC7C,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,MAAM,IAAI,KAAK,CACb,MAAM,WAAW,mCAAmC,CACrD,CAAC;IACJ,CAAC;IAED,MAAM,UAAU,GAAG,IAAA,gBAAI,EAAC,IAAI,EAAE,WAAW,CAAC,CAAC;IAC3C,MAAM,OAAO,GAAG,IAAA,sBAAY,EAAC,UAAU,EAAE,OAAO,CAAC,CAAC;IAClD,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAkB,CAAC;AAC9C,CAAC;AAED,SAAgB,UAAU,CAAC,MAAqB,EAAE,UAAkB;IAClE,MAAM,UAAU,GAAG,IAAA,gBAAI,EAAC,UAAU,EAAE,WAAW,CAAC,CAAC;IACjD,IAAA,uBAAa,EAAC,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;AACpE,CAAC;AAED,SAAgB,cAAc;IAC5B,MAAM,IAAI,GAAG,eAAe,EAAE,CAAC;IAC/B,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,MAAM,IAAI,KAAK,CACb,MAAM,WAAW,qDAAqD,CACvE,CAAC;IACJ,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC"}
@@ -0,0 +1,16 @@
1
+ export declare function success(message: string): void;
2
+ export declare function error(message: string, detail?: string): void;
3
+ export declare function info(message: string): void;
4
+ export declare function warn(message: string): void;
5
+ export declare function header(title: string): void;
6
+ export declare function keyValue(key: string, value: string): void;
7
+ export declare function geneId(id: string): string;
8
+ export declare function rustStyleError(opts: {
9
+ code: string;
10
+ message: string;
11
+ file?: string;
12
+ line?: number;
13
+ suggestion?: string;
14
+ docsUrl?: string;
15
+ }): void;
16
+ //# sourceMappingURL=display.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"display.d.ts","sourceRoot":"","sources":["../../src/utils/display.ts"],"names":[],"mappings":"AAEA,wBAAgB,OAAO,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAE7C;AAED,wBAAgB,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAK5D;AAED,wBAAgB,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAE1C;AAED,wBAAgB,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAE1C;AAED,wBAAgB,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAI1C;AAED,wBAAgB,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAEzD;AAED,wBAAgB,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,CAEzC;AAED,wBAAgB,cAAc,CAAC,IAAI,EAAE;IACnC,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,GAAG,IAAI,CAoBP"}