@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.
- package/CHANGELOG.md +62 -0
- package/LICENSE +31 -0
- package/README.md +230 -0
- package/dist/commands/agent-create.d.ts +3 -0
- package/dist/commands/agent-create.d.ts.map +1 -0
- package/dist/commands/agent-create.js +86 -0
- package/dist/commands/agent-create.js.map +1 -0
- package/dist/commands/agent-list.d.ts +3 -0
- package/dist/commands/agent-list.d.ts.map +1 -0
- package/dist/commands/agent-list.js +83 -0
- package/dist/commands/agent-list.js.map +1 -0
- package/dist/commands/arena-list.d.ts +3 -0
- package/dist/commands/arena-list.d.ts.map +1 -0
- package/dist/commands/arena-list.js +116 -0
- package/dist/commands/arena-list.js.map +1 -0
- package/dist/commands/arena-submit.d.ts +3 -0
- package/dist/commands/arena-submit.d.ts.map +1 -0
- package/dist/commands/arena-submit.js +106 -0
- package/dist/commands/arena-submit.js.map +1 -0
- package/dist/commands/arena-watch.d.ts +3 -0
- package/dist/commands/arena-watch.d.ts.map +1 -0
- package/dist/commands/arena-watch.js +56 -0
- package/dist/commands/arena-watch.js.map +1 -0
- package/dist/commands/compile.d.ts +3 -0
- package/dist/commands/compile.d.ts.map +1 -0
- package/dist/commands/compile.js +107 -0
- package/dist/commands/compile.js.map +1 -0
- package/dist/commands/init.d.ts +3 -0
- package/dist/commands/init.d.ts.map +1 -0
- package/dist/commands/init.js +215 -0
- package/dist/commands/init.js.map +1 -0
- package/dist/commands/scan.d.ts +3 -0
- package/dist/commands/scan.d.ts.map +1 -0
- package/dist/commands/scan.js +106 -0
- package/dist/commands/scan.js.map +1 -0
- package/dist/commands/test.d.ts +3 -0
- package/dist/commands/test.d.ts.map +1 -0
- package/dist/commands/test.js +155 -0
- package/dist/commands/test.js.map +1 -0
- package/dist/commands/wrap.d.ts +3 -0
- package/dist/commands/wrap.d.ts.map +1 -0
- package/dist/commands/wrap.js +94 -0
- package/dist/commands/wrap.js.map +1 -0
- package/dist/errors/formatter.d.ts +25 -0
- package/dist/errors/formatter.d.ts.map +1 -0
- package/dist/errors/formatter.js +43 -0
- package/dist/errors/formatter.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +36 -0
- package/dist/index.js.map +1 -0
- package/dist/utils/config.d.ts +12 -0
- package/dist/utils/config.d.ts.map +1 -0
- package/dist/utils/config.js +40 -0
- package/dist/utils/config.js.map +1 -0
- package/dist/utils/display.d.ts +16 -0
- package/dist/utils/display.d.ts.map +1 -0
- package/dist/utils/display.js +56 -0
- package/dist/utils/display.js.map +1 -0
- package/genes/genesis-code-format/index.ts +42 -0
- package/genes/genesis-code-format/phenotype.json +29 -0
- package/genes/genesis-file-read/index.ts +33 -0
- package/genes/genesis-file-read/phenotype.json +29 -0
- package/genes/genesis-l0-constraint/index.ts +62 -0
- package/genes/genesis-l0-constraint/phenotype.json +37 -0
- package/genes/genesis-web-search/index.ts +39 -0
- package/genes/genesis-web-search/phenotype.json +40 -0
- package/genes/genesis-web-search-lite/index.ts +22 -0
- package/genes/genesis-web-search-lite/phenotype.json +27 -0
- package/package.json +72 -0
- package/templates/composition/par-example.json +11 -0
- package/templates/composition/seq-example.json +9 -0
- package/templates/gene/index.ts +13 -0
- package/templates/gene/phenotype.json +21 -0
- 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.arenaSubmitCommand = 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.arenaSubmitCommand = new commander_1.Command("submit")
|
|
44
|
+
.description("Submit a gene to the local Arena for competition")
|
|
45
|
+
.argument("<name>", "gene name to submit")
|
|
46
|
+
.option("--skip-test", "skip pre-submission test", false)
|
|
47
|
+
.action(async (name, options) => {
|
|
48
|
+
const root = (0, config_js_1.getProjectRoot)();
|
|
49
|
+
const config = (0, config_js_1.loadConfig)(root);
|
|
50
|
+
display.header("Arena Submission");
|
|
51
|
+
const geneDir = (0, node_path_1.join)(root, config.genes_dir, name);
|
|
52
|
+
const phenotypePath = (0, node_path_1.join)(geneDir, "phenotype.json");
|
|
53
|
+
if (!(0, node_fs_1.existsSync)(phenotypePath)) {
|
|
54
|
+
display.rustStyleError({
|
|
55
|
+
code: "E0030",
|
|
56
|
+
message: `Gene '${name}' not found or not wrapped`,
|
|
57
|
+
file: phenotypePath,
|
|
58
|
+
suggestion: "Run 'rotifer wrap " + name + " --domain <domain>' first",
|
|
59
|
+
});
|
|
60
|
+
process.exit(1);
|
|
61
|
+
}
|
|
62
|
+
const phenotype = JSON.parse((0, node_fs_1.readFileSync)(phenotypePath, "utf-8"));
|
|
63
|
+
const geneId = (0, node_crypto_1.createHash)("sha256")
|
|
64
|
+
.update(JSON.stringify(phenotype))
|
|
65
|
+
.digest("hex");
|
|
66
|
+
if (!options.skipTest) {
|
|
67
|
+
display.info("Running pre-submission L2 sandbox tests...");
|
|
68
|
+
// MVP: simplified validation
|
|
69
|
+
const requiredFields = ["domain", "inputSchema", "outputSchema", "version"];
|
|
70
|
+
const valid = requiredFields.every((f) => f in phenotype);
|
|
71
|
+
if (!valid) {
|
|
72
|
+
display.error("Phenotype validation failed — cannot submit to Arena");
|
|
73
|
+
process.exit(1);
|
|
74
|
+
}
|
|
75
|
+
display.success("Pre-submission tests passed");
|
|
76
|
+
}
|
|
77
|
+
// Deterministic fitness from content hash — consistent with arena-list and init
|
|
78
|
+
const seed = parseInt(geneId.slice(0, 8), 16);
|
|
79
|
+
const isNative = phenotype.fidelity === "Native";
|
|
80
|
+
const baseFitness = isNative ? 0.70 : 0.45;
|
|
81
|
+
const variance = (seed % 250) / 1000;
|
|
82
|
+
const fitness = {
|
|
83
|
+
value: Math.min(baseFitness + variance, 0.99),
|
|
84
|
+
safetyScore: 0.7 + (seed % 300) / 1000,
|
|
85
|
+
successRate: 0.9 + (seed % 100) / 1000,
|
|
86
|
+
latencyScore: 0.7 + ((seed >> 8) % 300) / 1000,
|
|
87
|
+
resourceEfficiency: 0.6 + ((seed >> 16) % 300) / 1000,
|
|
88
|
+
};
|
|
89
|
+
const tau = 0.3;
|
|
90
|
+
const vMin = 0.7;
|
|
91
|
+
const passesAdmission = fitness.value >= tau && fitness.safetyScore >= vMin;
|
|
92
|
+
if (!passesAdmission) {
|
|
93
|
+
display.error(`Gene does not meet admission threshold (F(g)=${fitness.value.toFixed(3)} < τ=${tau} or V(g)=${fitness.safetyScore.toFixed(3)} < V_min=${vMin})`);
|
|
94
|
+
process.exit(1);
|
|
95
|
+
}
|
|
96
|
+
console.log();
|
|
97
|
+
display.success(`Gene '${name}' submitted to Arena`);
|
|
98
|
+
display.keyValue("Gene ID", display.geneId(geneId));
|
|
99
|
+
display.keyValue("Domain", phenotype.domain);
|
|
100
|
+
display.keyValue("F(g)", fitness.value.toFixed(4));
|
|
101
|
+
display.keyValue("V(g)", fitness.safetyScore.toFixed(4));
|
|
102
|
+
display.keyValue("Admission", "PASSED");
|
|
103
|
+
console.log();
|
|
104
|
+
display.info("View rankings: rotifer arena list --domain " + phenotype.domain);
|
|
105
|
+
});
|
|
106
|
+
//# sourceMappingURL=arena-submit.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"arena-submit.js","sourceRoot":"","sources":["../../src/commands/arena-submit.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"arena-watch.d.ts","sourceRoot":"","sources":["../../src/commands/arena-watch.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAIpC,eAAO,MAAM,iBAAiB,SAmB1B,CAAC"}
|
|
@@ -0,0 +1,56 @@
|
|
|
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.arenaWatchCommand = void 0;
|
|
37
|
+
const commander_1 = require("commander");
|
|
38
|
+
const display = __importStar(require("../utils/display.js"));
|
|
39
|
+
const config_js_1 = require("../utils/config.js");
|
|
40
|
+
exports.arenaWatchCommand = new commander_1.Command("watch")
|
|
41
|
+
.description("Watch Arena rankings in real-time (live updates)")
|
|
42
|
+
.argument("<domain>", "domain to watch")
|
|
43
|
+
.option("--interval <ms>", "refresh interval in milliseconds", "3000")
|
|
44
|
+
.action(async (domain, options) => {
|
|
45
|
+
(0, config_js_1.getProjectRoot)(); // validate we're in a project
|
|
46
|
+
display.header("Arena Watch — " + domain);
|
|
47
|
+
display.info("Press Ctrl+C to stop");
|
|
48
|
+
display.info(`Refreshing every ${options.interval}ms`);
|
|
49
|
+
console.log();
|
|
50
|
+
display.warn("Live Arena watching is a placeholder in MVP — " +
|
|
51
|
+
"rankings update on 'arena submit'. " +
|
|
52
|
+
"Use 'rotifer arena list --domain " +
|
|
53
|
+
domain +
|
|
54
|
+
"' to view current rankings.");
|
|
55
|
+
});
|
|
56
|
+
//# sourceMappingURL=arena-watch.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"arena-watch.js","sourceRoot":"","sources":["../../src/commands/arena-watch.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,yCAAoC;AACpC,6DAA+C;AAC/C,kDAAoD;AAEvC,QAAA,iBAAiB,GAAG,IAAI,mBAAO,CAAC,OAAO,CAAC;KAClD,WAAW,CAAC,kDAAkD,CAAC;KAC/D,QAAQ,CAAC,UAAU,EAAE,iBAAiB,CAAC;KACvC,MAAM,CAAC,iBAAiB,EAAE,kCAAkC,EAAE,MAAM,CAAC;KACrE,MAAM,CAAC,KAAK,EAAE,MAAc,EAAE,OAA6B,EAAE,EAAE;IAC9D,IAAA,0BAAc,GAAE,CAAC,CAAC,8BAA8B;IAEhD,OAAO,CAAC,MAAM,CAAC,gBAAgB,GAAG,MAAM,CAAC,CAAC;IAC1C,OAAO,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;IACrC,OAAO,CAAC,IAAI,CAAC,oBAAoB,OAAO,CAAC,QAAQ,IAAI,CAAC,CAAC;IACvD,OAAO,CAAC,GAAG,EAAE,CAAC;IAEd,OAAO,CAAC,IAAI,CACV,gDAAgD;QAC9C,qCAAqC;QACrC,mCAAmC;QACnC,MAAM;QACN,6BAA6B,CAChC,CAAC;AACJ,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"compile.d.ts","sourceRoot":"","sources":["../../src/commands/compile.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAOpC,eAAO,MAAM,cAAc,SA+EvB,CAAC"}
|
|
@@ -0,0 +1,107 @@
|
|
|
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.compileCommand = 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.compileCommand = new commander_1.Command("compile")
|
|
44
|
+
.description("Compile a gene to WASM (or validate if already compiled)")
|
|
45
|
+
.argument("[name]", "gene name to compile")
|
|
46
|
+
.option("--check", "check only, don't produce artifacts", false)
|
|
47
|
+
.action(async (name, options) => {
|
|
48
|
+
const root = (0, config_js_1.getProjectRoot)();
|
|
49
|
+
const config = (0, config_js_1.loadConfig)(root);
|
|
50
|
+
display.header("Gene Compiler");
|
|
51
|
+
if (!name) {
|
|
52
|
+
display.error("Specify a gene name: rotifer compile <gene-name>");
|
|
53
|
+
process.exit(1);
|
|
54
|
+
}
|
|
55
|
+
const geneDir = (0, node_path_1.join)(root, config.genes_dir, name);
|
|
56
|
+
const phenotypePath = (0, node_path_1.join)(geneDir, "phenotype.json");
|
|
57
|
+
const manifestPath = (0, node_path_1.join)(geneDir, ".gene-manifest.json");
|
|
58
|
+
if (!(0, node_fs_1.existsSync)(phenotypePath)) {
|
|
59
|
+
display.rustStyleError({
|
|
60
|
+
code: "E0020",
|
|
61
|
+
message: `Gene '${name}' not found or not wrapped`,
|
|
62
|
+
file: phenotypePath,
|
|
63
|
+
suggestion: "Run 'rotifer wrap " + name + "' first",
|
|
64
|
+
});
|
|
65
|
+
process.exit(1);
|
|
66
|
+
}
|
|
67
|
+
const phenotype = JSON.parse((0, node_fs_1.readFileSync)(phenotypePath, "utf-8"));
|
|
68
|
+
display.info("Validating Phenotype...");
|
|
69
|
+
const requiredFields = ["domain", "inputSchema", "outputSchema", "version"];
|
|
70
|
+
for (const field of requiredFields) {
|
|
71
|
+
if (!(field in phenotype)) {
|
|
72
|
+
display.error(`Missing required field: ${field}`);
|
|
73
|
+
process.exit(1);
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
display.success("Phenotype validation passed");
|
|
77
|
+
display.info("Computing gene fingerprint...");
|
|
78
|
+
const phenoStr = JSON.stringify(phenotype);
|
|
79
|
+
const geneId = (0, node_crypto_1.createHash)("sha256").update(phenoStr).digest("hex");
|
|
80
|
+
const srcTs = (0, node_path_1.join)(geneDir, "index.ts");
|
|
81
|
+
const srcRs = (0, node_path_1.join)(geneDir, "src", "lib.rs");
|
|
82
|
+
const hasSrc = (0, node_fs_1.existsSync)(srcTs) || (0, node_fs_1.existsSync)(srcRs);
|
|
83
|
+
if (!hasSrc) {
|
|
84
|
+
display.warn("No source file found — Phenotype-only gene (Wrapped fidelity)");
|
|
85
|
+
}
|
|
86
|
+
if (options.check) {
|
|
87
|
+
display.success(`Compilation check passed for '${name}'`);
|
|
88
|
+
display.keyValue("Gene ID", display.geneId(geneId));
|
|
89
|
+
return;
|
|
90
|
+
}
|
|
91
|
+
// MVP: no actual WASM compilation — produce a compile manifest
|
|
92
|
+
const compileResult = {
|
|
93
|
+
geneId,
|
|
94
|
+
name,
|
|
95
|
+
domain: phenotype.domain,
|
|
96
|
+
compiledAt: new Date().toISOString(),
|
|
97
|
+
fidelity: phenotype.fidelity || "Wrapped",
|
|
98
|
+
wasmAvailable: false,
|
|
99
|
+
note: "WASM compilation requires Rotifer IR toolchain (coming in v0.2)",
|
|
100
|
+
};
|
|
101
|
+
(0, node_fs_1.writeFileSync)((0, node_path_1.join)(geneDir, ".compile-result.json"), JSON.stringify(compileResult, null, 2) + "\n");
|
|
102
|
+
display.success(`Gene '${name}' compiled (Phenotype validated)`);
|
|
103
|
+
display.keyValue("Gene ID", display.geneId(geneId));
|
|
104
|
+
display.keyValue("Domain", phenotype.domain);
|
|
105
|
+
display.keyValue("WASM", "deferred (Wrapped fidelity)");
|
|
106
|
+
});
|
|
107
|
+
//# sourceMappingURL=compile.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"compile.js","sourceRoot":"","sources":["../../src/commands/compile.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAuBpC,eAAO,MAAM,WAAW,SAwGpB,CAAC"}
|
|
@@ -0,0 +1,215 @@
|
|
|
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.initCommand = 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
|
+
const GENESIS_GENES = [
|
|
44
|
+
"genesis-web-search",
|
|
45
|
+
"genesis-web-search-lite",
|
|
46
|
+
"genesis-file-read",
|
|
47
|
+
"genesis-code-format",
|
|
48
|
+
"genesis-l0-constraint",
|
|
49
|
+
];
|
|
50
|
+
exports.initCommand = new commander_1.Command("init")
|
|
51
|
+
.description("Initialize a new Rotifer gene project")
|
|
52
|
+
.argument("[name]", "project name", "my-rotifer-project")
|
|
53
|
+
.option("--domain <domain>", "default gene domain", "general")
|
|
54
|
+
.option("--no-genesis", "skip genesis genes installation")
|
|
55
|
+
.action(async (name, options) => {
|
|
56
|
+
const projectDir = (0, node_path_1.resolve)(process.cwd(), name);
|
|
57
|
+
if ((0, node_fs_1.existsSync)(projectDir)) {
|
|
58
|
+
display.error("Directory already exists: " + name);
|
|
59
|
+
process.exit(1);
|
|
60
|
+
}
|
|
61
|
+
display.header("Rotifer Protocol - Project Initialization");
|
|
62
|
+
(0, node_fs_1.mkdirSync)((0, node_path_1.join)(projectDir, "genes"), { recursive: true });
|
|
63
|
+
(0, node_fs_1.mkdirSync)((0, node_path_1.join)(projectDir, "tests"), { recursive: true });
|
|
64
|
+
(0, node_fs_1.mkdirSync)((0, node_path_1.join)(projectDir, ".rotifer", "agents"), { recursive: true });
|
|
65
|
+
const config = {
|
|
66
|
+
name,
|
|
67
|
+
version: "0.1.0",
|
|
68
|
+
author: "local-dev",
|
|
69
|
+
genes_dir: "genes",
|
|
70
|
+
default_domain: options.domain,
|
|
71
|
+
};
|
|
72
|
+
(0, config_js_1.saveConfig)(config, projectDir);
|
|
73
|
+
// Example gene: hello-world
|
|
74
|
+
const exampleGeneDir = (0, node_path_1.join)(projectDir, "genes", "hello-world");
|
|
75
|
+
(0, node_fs_1.mkdirSync)(exampleGeneDir, { recursive: true });
|
|
76
|
+
(0, node_fs_1.writeFileSync)((0, node_path_1.join)(exampleGeneDir, "phenotype.json"), JSON.stringify({
|
|
77
|
+
domain: options.domain,
|
|
78
|
+
inputSchema: {
|
|
79
|
+
type: "object",
|
|
80
|
+
properties: { name: { type: "string" } },
|
|
81
|
+
required: ["name"],
|
|
82
|
+
},
|
|
83
|
+
outputSchema: {
|
|
84
|
+
type: "object",
|
|
85
|
+
properties: { greeting: { type: "string" } },
|
|
86
|
+
},
|
|
87
|
+
version: "0.1.0",
|
|
88
|
+
fidelity: "Wrapped",
|
|
89
|
+
transparency: "Open",
|
|
90
|
+
}, null, 2) + "\n");
|
|
91
|
+
(0, node_fs_1.writeFileSync)((0, node_path_1.join)(exampleGeneDir, "index.ts"), [
|
|
92
|
+
'export async function express(input: { name: string }): Promise<{ greeting: string }> {',
|
|
93
|
+
' return { greeting: "Hello, " + input.name + "! Welcome to Rotifer Protocol." };',
|
|
94
|
+
"}",
|
|
95
|
+
"",
|
|
96
|
+
].join("\n"));
|
|
97
|
+
(0, node_fs_1.writeFileSync)((0, node_path_1.join)(projectDir, ".gitignore"), ".rotifer/\nnode_modules/\ndist/\n*.wasm\n");
|
|
98
|
+
display.success("Project scaffolding created");
|
|
99
|
+
// Install genesis genes
|
|
100
|
+
if (options.genesis) {
|
|
101
|
+
display.info("Installing Genesis genes...");
|
|
102
|
+
const genesisSourceDir = resolveGenesisDir();
|
|
103
|
+
let installedCount = 0;
|
|
104
|
+
for (const geneName of GENESIS_GENES) {
|
|
105
|
+
const srcDir = (0, node_path_1.join)(genesisSourceDir, geneName);
|
|
106
|
+
const destDir = (0, node_path_1.join)(projectDir, "genes", geneName);
|
|
107
|
+
if ((0, node_fs_1.existsSync)(srcDir)) {
|
|
108
|
+
copyDirRecursive(srcDir, destDir);
|
|
109
|
+
installedCount++;
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
display.success(`${installedCount} Genesis genes installed`);
|
|
113
|
+
}
|
|
114
|
+
console.log();
|
|
115
|
+
// Show Arena rankings — the "Wow" moment
|
|
116
|
+
showArenaRankings(projectDir);
|
|
117
|
+
console.log();
|
|
118
|
+
display.success("Project ready: " + name);
|
|
119
|
+
console.log();
|
|
120
|
+
display.info("Next steps:");
|
|
121
|
+
console.log(" cd " + name);
|
|
122
|
+
console.log(" rotifer scan genes/");
|
|
123
|
+
console.log(" rotifer wrap hello-world --domain " + options.domain);
|
|
124
|
+
console.log(" rotifer arena submit hello-world");
|
|
125
|
+
console.log();
|
|
126
|
+
});
|
|
127
|
+
function resolveGenesisDir() {
|
|
128
|
+
const candidates = [
|
|
129
|
+
(0, node_path_1.join)(__dirname, "..", "..", "genes"),
|
|
130
|
+
(0, node_path_1.join)(process.cwd(), "genes"),
|
|
131
|
+
(0, node_path_1.join)(__dirname, "..", "genes"),
|
|
132
|
+
];
|
|
133
|
+
for (const dir of candidates) {
|
|
134
|
+
if ((0, node_fs_1.existsSync)(dir) && (0, node_fs_1.existsSync)((0, node_path_1.join)(dir, "genesis-web-search"))) {
|
|
135
|
+
return dir;
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
return candidates[0];
|
|
139
|
+
}
|
|
140
|
+
function copyDirRecursive(src, dest) {
|
|
141
|
+
(0, node_fs_1.mkdirSync)(dest, { recursive: true });
|
|
142
|
+
for (const entry of (0, node_fs_1.readdirSync)(src)) {
|
|
143
|
+
const srcPath = (0, node_path_1.join)(src, entry);
|
|
144
|
+
const destPath = (0, node_path_1.join)(dest, entry);
|
|
145
|
+
if ((0, node_fs_1.statSync)(srcPath).isDirectory()) {
|
|
146
|
+
copyDirRecursive(srcPath, destPath);
|
|
147
|
+
}
|
|
148
|
+
else {
|
|
149
|
+
(0, node_fs_1.copyFileSync)(srcPath, destPath);
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
function showArenaRankings(projectDir) {
|
|
154
|
+
const genesDir = (0, node_path_1.join)(projectDir, "genes");
|
|
155
|
+
if (!(0, node_fs_1.existsSync)(genesDir))
|
|
156
|
+
return;
|
|
157
|
+
const rows = [];
|
|
158
|
+
for (const name of (0, node_fs_1.readdirSync)(genesDir)) {
|
|
159
|
+
const phenotypePath = (0, node_path_1.join)(genesDir, name, "phenotype.json");
|
|
160
|
+
if (!(0, node_fs_1.existsSync)(phenotypePath))
|
|
161
|
+
continue;
|
|
162
|
+
try {
|
|
163
|
+
const phenotype = JSON.parse((0, node_fs_1.readFileSync)(phenotypePath, "utf-8"));
|
|
164
|
+
const phenoStr = JSON.stringify(phenotype);
|
|
165
|
+
const hash = (0, node_crypto_1.createHash)("sha256").update(phenoStr).digest("hex");
|
|
166
|
+
// Deterministic fitness score from content hash — stable across runs
|
|
167
|
+
const seed = parseInt(hash.slice(0, 8), 16);
|
|
168
|
+
const isNative = phenotype.fidelity === "Native";
|
|
169
|
+
const baseFitness = isNative ? 0.70 : 0.45;
|
|
170
|
+
const variance = (seed % 250) / 1000;
|
|
171
|
+
const fitness = Math.min(baseFitness + variance, 0.99);
|
|
172
|
+
rows.push({
|
|
173
|
+
rank: 0,
|
|
174
|
+
name,
|
|
175
|
+
domain: phenotype.domain || "general",
|
|
176
|
+
fitness: fitness.toFixed(2),
|
|
177
|
+
fidelity: phenotype.fidelity || "Wrapped",
|
|
178
|
+
});
|
|
179
|
+
}
|
|
180
|
+
catch {
|
|
181
|
+
// skip malformed phenotypes
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
// Sort by fitness descending, assign ranks
|
|
185
|
+
rows.sort((a, b) => parseFloat(b.fitness) - parseFloat(a.fitness));
|
|
186
|
+
rows.forEach((r, i) => (r.rank = i + 1));
|
|
187
|
+
if (rows.length === 0)
|
|
188
|
+
return;
|
|
189
|
+
display.header("Arena Rankings");
|
|
190
|
+
const col = { rank: 4, name: 28, domain: 14, fitness: 8, fidelity: 10 };
|
|
191
|
+
const headerLine = " " +
|
|
192
|
+
pad("#", col.rank) +
|
|
193
|
+
pad("Name", col.name) +
|
|
194
|
+
pad("Domain", col.domain) +
|
|
195
|
+
pad("F(g)", col.fitness) +
|
|
196
|
+
"Fidelity";
|
|
197
|
+
console.log(headerLine);
|
|
198
|
+
console.log(" " + "─".repeat(headerLine.length));
|
|
199
|
+
for (const r of rows) {
|
|
200
|
+
const marker = r.fidelity === "Native" ? " " : " ";
|
|
201
|
+
console.log(" " +
|
|
202
|
+
pad(String(r.rank), col.rank) +
|
|
203
|
+
pad(r.name, col.name) +
|
|
204
|
+
pad(r.domain, col.domain) +
|
|
205
|
+
pad(r.fitness, col.fitness) +
|
|
206
|
+
r.fidelity + marker);
|
|
207
|
+
}
|
|
208
|
+
console.log();
|
|
209
|
+
const domains = new Set(rows.map((r) => r.domain));
|
|
210
|
+
display.info(`${rows.length} genes across ${domains.size} domain(s) — Arena is alive!`);
|
|
211
|
+
}
|
|
212
|
+
function pad(s, len) {
|
|
213
|
+
return s.length >= len ? s : s + " ".repeat(len - s.length);
|
|
214
|
+
}
|
|
215
|
+
//# sourceMappingURL=init.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scan.d.ts","sourceRoot":"","sources":["../../src/commands/scan.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAapC,eAAO,MAAM,WAAW,SA0BpB,CAAC"}
|