@rotifer/playground 0.10.1 → 0.11.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +23 -27
- package/README.md +2 -2
- package/dist/commands/install.d.ts.map +1 -1
- package/dist/commands/install.js +16 -1
- package/dist/commands/install.js.map +1 -1
- package/dist/commands/rollback.d.ts +4 -0
- package/dist/commands/rollback.d.ts.map +1 -0
- package/dist/commands/rollback.js +112 -0
- package/dist/commands/rollback.js.map +1 -0
- package/dist/index.js +3 -0
- package/dist/index.js.map +1 -1
- package/dist/utils/gene-snapshots.d.ts +55 -0
- package/dist/utils/gene-snapshots.d.ts.map +1 -0
- package/dist/utils/gene-snapshots.js +143 -0
- package/dist/utils/gene-snapshots.js.map +1 -0
- package/package.json +5 -5
package/CHANGELOG.md
CHANGED
|
@@ -5,6 +5,29 @@ All notable changes to this project will be documented in this file.
|
|
|
5
5
|
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
|
|
6
6
|
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
7
7
|
|
|
8
|
+
## [0.11.0](https://github.com/rotifer-protocol/rotifer-playground/compare/v0.10.2...v0.11.0) (2026-08-17)
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
### Features
|
|
12
|
+
|
|
13
|
+
* **cli:** rotifer rollback and rotifer uninstall ([#179](https://github.com/rotifer-protocol/rotifer-playground/issues/179)) ([e2accb9](https://github.com/rotifer-protocol/rotifer-playground/commit/e2accb9177fda91d5e96ac6f0ebc1d2404b75bef))
|
|
14
|
+
* **npm:** reserve the unscoped 'rotifer' name ([#176](https://github.com/rotifer-protocol/rotifer-playground/issues/176)) ([dc9ecbf](https://github.com/rotifer-protocol/rotifer-playground/commit/dc9ecbfed0320359a0e806bcab161bd6ab379fe7))
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
### Bug Fixes
|
|
18
|
+
|
|
19
|
+
* **ci:** drop registry-url so the reservation publish can use OIDC ([#177](https://github.com/rotifer-protocol/rotifer-playground/issues/177)) ([c05e1a5](https://github.com/rotifer-protocol/rotifer-playground/commit/c05e1a597eddc24a4241e7c65253e1a13d3510f7))
|
|
20
|
+
* **ci:** keep the lockfiles in step with release-please bumps ([#173](https://github.com/rotifer-protocol/rotifer-playground/issues/173)) ([33a7e42](https://github.com/rotifer-protocol/rotifer-playground/commit/33a7e4259ca70d0ab09a3739ed99da58c5331e30))
|
|
21
|
+
* **supabase:** cast before comparing uuid to text in the arena total_calls trigger ([#180](https://github.com/rotifer-protocol/rotifer-playground/issues/180)) ([22e5941](https://github.com/rotifer-protocol/rotifer-playground/commit/22e594115b5080a06313ca50f3e3e031507e6128))
|
|
22
|
+
|
|
23
|
+
## [0.10.2](https://github.com/rotifer-protocol/rotifer-playground/compare/v0.10.1...v0.10.2) (2026-08-14)
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
### Bug Fixes
|
|
27
|
+
|
|
28
|
+
* **release:** stop VS Code-only changes from bumping the npm package ([#166](https://github.com/rotifer-protocol/rotifer-playground/issues/166)) ([ae256d6](https://github.com/rotifer-protocol/rotifer-playground/commit/ae256d6eb939de50d28704d17cfdc5945702eb27))
|
|
29
|
+
* **sandbox:** reject artifacts with an async express() at runtime ([#169](https://github.com/rotifer-protocol/rotifer-playground/issues/169)) ([338322f](https://github.com/rotifer-protocol/rotifer-playground/commit/338322fcc296fe190c4301f5adf09344ed46b5a7))
|
|
30
|
+
|
|
8
31
|
## [0.10.1](https://github.com/rotifer-protocol/rotifer-playground/compare/v0.10.0...v0.10.1) (2026-08-11)
|
|
9
32
|
|
|
10
33
|
|
|
@@ -80,33 +103,6 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
80
103
|
* **vscode:** use vortex logo for plugin icons ([e95731e](https://github.com/rotifer-protocol/rotifer-playground/commit/e95731ea1a763463001399993614b58b5fb249c1))
|
|
81
104
|
* **wrap:** route validation errors through structured formatter, no stack-trace leak ([#55](https://github.com/rotifer-protocol/rotifer-playground/issues/55)) ([e705323](https://github.com/rotifer-protocol/rotifer-playground/commit/e70532362c5d1a4591a429ef75cb1e1afed1ec0c)), closes [#51](https://github.com/rotifer-protocol/rotifer-playground/issues/51)
|
|
82
105
|
|
|
83
|
-
## [Unreleased]
|
|
84
|
-
|
|
85
|
-
### Added
|
|
86
|
-
|
|
87
|
-
- **`rotifer doctor`** — checks the TS→WASM toolchain (esbuild / javy) offline and reports
|
|
88
|
-
per-tool status, the active `npx` path, and the Node prefix running rotifer; exits non-zero
|
|
89
|
-
when the toolchain is incomplete. Surfaces the preflight from #58 as a standalone command.
|
|
90
|
-
|
|
91
|
-
### Fixed
|
|
92
|
-
|
|
93
|
-
- **WASM runtime errors surface the guest's stderr** — when a Native gene traps, the
|
|
94
|
-
sandbox now appends anything the guest wrote to fd 2 (e.g. the Javy/QuickJS error
|
|
95
|
-
message) to the failure, instead of returning only an opaque WASM backtrace (R4)
|
|
96
|
-
- **Starter template traps in Native WASM** — `rotifer init` now scaffolds a synchronous
|
|
97
|
-
`express()`; the previous `async express()` starter compiled fine but trapped in the
|
|
98
|
-
Javy/QuickJS sandbox with an opaque backtrace (#57)
|
|
99
|
-
- **Async `express()` now rejected at compile time** — `rotifer compile` statically detects
|
|
100
|
-
`async function express` / Promise-returning signatures and fails with `E0025` and an
|
|
101
|
-
actionable message, instead of deferring to a runtime trap whose error text was swallowed
|
|
102
|
-
by the WASM host (#57)
|
|
103
|
-
- **Toolchain failures get a diagnosis instead of `spawnSync npx ETIMEDOUT`** — the TS→WASM
|
|
104
|
-
pipeline preflights esbuild/javy offline (`npx --no-install`, falling back to the `javy`
|
|
105
|
-
binary that `javy-cli@3` actually installs) and reports per-tool status, the active `npx`
|
|
106
|
-
path, and exact install commands; npx no longer hits the npm registry implicitly (#58)
|
|
107
|
-
- **Stale WASM warning on `rotifer run`** — when `index.ts` is newer than `gene.ir.wasm`,
|
|
108
|
-
run now warns that it is executing stale WASM and suggests recompiling (#58)
|
|
109
|
-
|
|
110
106
|
## [0.8.6] - 2026-04-16
|
|
111
107
|
|
|
112
108
|
### Fixed
|
package/README.md
CHANGED
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
|
|
10
10
|
Development environment for the **Rotifer Protocol** — **WASM-Native, Polyglot by Design**: build genes in TypeScript / Rust / AssemblyScript / Go / C, compete in Arenas, share via Cloud, and simulate agent evolution.
|
|
11
11
|
|
|
12
|
-
> **Status:** v0.
|
|
12
|
+
> **Status:** v0.10.1 — P2P Reliability on top of v0.9's Open Mesh + Economy Foundation: experimental P2P gene propagation (`rotifer network`) now remembers peers across restarts, and the silent bootstrap failure is gone — nodes ship with no default bootstrap peer, so you pass one explicitly (`rotifer network start -b <multiaddr>`) and there is no public network to join yet. P2P stays off by default (`enabled: false`). Also the v0.9 economy + season system, Hybrid Fidelity genes, and `rotifer doctor`. See [CHANGELOG.md](CHANGELOG.md) for full release history. Automatic peer discovery, internet-wide reach, and L4 Collective Immunity are later milestones — see [Implementation Status](#implementation-status) below.
|
|
13
13
|
|
|
14
14
|
---
|
|
15
15
|
|
|
@@ -269,7 +269,7 @@ bash demo.sh
|
|
|
269
269
|
| **L4** | Collective Immunity | **0%** | — | Threat broadcasting, emergency rollback, cross-node consensus |
|
|
270
270
|
| **Algebra** | Composition | **~90%** | All 5 operators in Rust; CLI supports Seq/Par/Cond/Try | DataFlowGraph |
|
|
271
271
|
|
|
272
|
-
**Key limitation:** L4 depends on L3
|
|
272
|
+
**Key limitation:** L4 depends on a mature L3 P2P layer. P2P is runnable today but experimental and off by default, and still lacks automatic peer discovery and internet-wide reach. Full L4 is targeted for v1.x.
|
|
273
273
|
|
|
274
274
|
---
|
|
275
275
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"install.d.ts","sourceRoot":"","sources":["../../src/commands/install.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"install.d.ts","sourceRoot":"","sources":["../../src/commands/install.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAgBpC,eAAO,MAAM,cAAc,SAyHvB,CAAC"}
|
package/dist/commands/install.js
CHANGED
|
@@ -44,6 +44,7 @@ const project_root_js_1 = require("../utils/project-root.js");
|
|
|
44
44
|
const client_js_1 = require("../cloud/client.js");
|
|
45
45
|
const domain_suggest_js_1 = require("../utils/domain-suggest.js");
|
|
46
46
|
const validate_gene_name_js_1 = require("../utils/validate-gene-name.js");
|
|
47
|
+
const gene_snapshots_js_1 = require("../utils/gene-snapshots.js");
|
|
47
48
|
exports.installCommand = new commander_1.Command("install")
|
|
48
49
|
.description("Install a gene from Rotifer Cloud")
|
|
49
50
|
.argument("<gene-ref>", "gene UUID, name, or content hash")
|
|
@@ -57,7 +58,8 @@ exports.installCommand = new commander_1.Command("install")
|
|
|
57
58
|
const gene = await (0, client_js_1.getGene)(geneRef);
|
|
58
59
|
s.stop();
|
|
59
60
|
(0, validate_gene_name_js_1.validateGeneName)(gene.name);
|
|
60
|
-
const
|
|
61
|
+
const genesDir = (0, node_path_1.join)(root, config.genes_dir);
|
|
62
|
+
const geneDir = (0, node_path_1.join)(genesDir, gene.name);
|
|
61
63
|
if ((0, node_fs_1.existsSync)(geneDir) && !options.force) {
|
|
62
64
|
display.rustStyleError({
|
|
63
65
|
code: "E0051",
|
|
@@ -67,6 +69,14 @@ exports.installCommand = new commander_1.Command("install")
|
|
|
67
69
|
});
|
|
68
70
|
process.exit(1);
|
|
69
71
|
}
|
|
72
|
+
// Move the old copy aside before writing over it — this is what makes
|
|
73
|
+
// --force reversible. If it fails, nothing is installed: an overwrite the
|
|
74
|
+
// user believes is undoable and is not would be worse than no install.
|
|
75
|
+
let didSnapshot = false;
|
|
76
|
+
if ((0, node_fs_1.existsSync)(geneDir) && options.force) {
|
|
77
|
+
(0, gene_snapshots_js_1.snapshotGene)(genesDir, gene.name, gene.id ?? null);
|
|
78
|
+
didSnapshot = true;
|
|
79
|
+
}
|
|
70
80
|
(0, node_fs_1.mkdirSync)(geneDir, { recursive: true });
|
|
71
81
|
(0, node_fs_1.writeFileSync)((0, node_path_1.join)(geneDir, "phenotype.json"), JSON.stringify(gene.phenotype, null, 2) + "\n");
|
|
72
82
|
display.success("Phenotype saved");
|
|
@@ -108,6 +118,11 @@ exports.installCommand = new commander_1.Command("install")
|
|
|
108
118
|
display.keyValue("Fidelity", gene.fidelity);
|
|
109
119
|
display.keyValue("Location", geneDir);
|
|
110
120
|
console.log();
|
|
121
|
+
if (didSnapshot) {
|
|
122
|
+
// The user asked to overwrite something. Telling them the old copy is
|
|
123
|
+
// recoverable is the whole point of having taken the snapshot.
|
|
124
|
+
display.hint(`Replaced an existing gene — undo with: rotifer rollback ${gene.name}`);
|
|
125
|
+
}
|
|
111
126
|
display.hint("Test it: rotifer test " + gene.name);
|
|
112
127
|
display.hint("Submit to local Arena: rotifer arena submit " + gene.name);
|
|
113
128
|
(0, client_js_1.trackDownload)(gene.id, "cli").catch(() => { });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"install.js","sourceRoot":"","sources":["../../src/commands/install.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,yCAAoC;AACpC,qCAIiB;AACjB,yCAAiC;AACjC,6CAAyC;AACzC,6DAA+C;AAC/C,kDAAgD;AAChD,8DAA8D;AAC9D,kDAA8E;AAC9E,kEAAyE;AACzE,0EAAkE;
|
|
1
|
+
{"version":3,"file":"install.js","sourceRoot":"","sources":["../../src/commands/install.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rollback.d.ts","sourceRoot":"","sources":["../../src/commands/rollback.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA4BpC,eAAO,MAAM,eAAe,SA4BxB,CAAC;AAEL,eAAO,MAAM,gBAAgB,SAqBzB,CAAC"}
|
|
@@ -0,0 +1,112 @@
|
|
|
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.uninstallCommand = exports.rollbackCommand = void 0;
|
|
37
|
+
const commander_1 = require("commander");
|
|
38
|
+
const node_path_1 = require("node:path");
|
|
39
|
+
const display = __importStar(require("../utils/display.js"));
|
|
40
|
+
const config_js_1 = require("../utils/config.js");
|
|
41
|
+
const project_root_js_1 = require("../utils/project-root.js");
|
|
42
|
+
const gene_snapshots_js_1 = require("../utils/gene-snapshots.js");
|
|
43
|
+
function genesDirOf() {
|
|
44
|
+
const root = (0, project_root_js_1.requireProjectRoot)();
|
|
45
|
+
return (0, node_path_1.join)(root, (0, config_js_1.loadConfig)(root).genes_dir);
|
|
46
|
+
}
|
|
47
|
+
function showAvailable(genesDir) {
|
|
48
|
+
const available = (0, gene_snapshots_js_1.listSnapshots)(genesDir);
|
|
49
|
+
if (available.length === 0) {
|
|
50
|
+
display.info("Nothing to roll back — no gene in this project has been overwritten or removed.");
|
|
51
|
+
return;
|
|
52
|
+
}
|
|
53
|
+
display.info("Genes that can be rolled back:");
|
|
54
|
+
for (const s of available) {
|
|
55
|
+
const version = s.replacedVersion ? ` (was v${s.replacedVersion})` : "";
|
|
56
|
+
const when = s.replacedAt ? ` — replaced ${s.replacedAt}` : "";
|
|
57
|
+
console.log(` ${s.name}${version}${when}`);
|
|
58
|
+
}
|
|
59
|
+
console.log("");
|
|
60
|
+
display.info("Restore one with: rotifer rollback <gene-name>");
|
|
61
|
+
}
|
|
62
|
+
exports.rollbackCommand = new commander_1.Command("rollback")
|
|
63
|
+
.description("Restore the copy of a gene that an overwrite or uninstall replaced")
|
|
64
|
+
.argument("[gene-name]", "gene to restore; omit to list what can be rolled back")
|
|
65
|
+
.action((geneName) => {
|
|
66
|
+
display.header("Rollback");
|
|
67
|
+
const genesDir = genesDirOf();
|
|
68
|
+
if (!geneName) {
|
|
69
|
+
showAvailable(genesDir);
|
|
70
|
+
return;
|
|
71
|
+
}
|
|
72
|
+
try {
|
|
73
|
+
const result = (0, gene_snapshots_js_1.restoreGene)(genesDir, geneName);
|
|
74
|
+
const version = result.replacedVersion ? ` (v${result.replacedVersion})` : "";
|
|
75
|
+
display.success(`Restored ${result.name}${version} to ${result.restoredTo}`);
|
|
76
|
+
// Saying this out loud matters: someone who expects an undo stack would
|
|
77
|
+
// otherwise discover the hard way that there is only one step.
|
|
78
|
+
display.info("The snapshot has been used up. Rollback undoes one step, not a history.");
|
|
79
|
+
}
|
|
80
|
+
catch (err) {
|
|
81
|
+
display.rustStyleError({
|
|
82
|
+
code: "E0052",
|
|
83
|
+
message: err instanceof Error ? err.message : String(err),
|
|
84
|
+
file: genesDir,
|
|
85
|
+
suggestion: "Run 'rotifer rollback' with no arguments to see what can be restored",
|
|
86
|
+
});
|
|
87
|
+
process.exit(1);
|
|
88
|
+
}
|
|
89
|
+
});
|
|
90
|
+
exports.uninstallCommand = new commander_1.Command("uninstall")
|
|
91
|
+
.description("Remove a locally installed gene, keeping a snapshot so it can be restored")
|
|
92
|
+
.argument("<gene-name>", "gene to remove")
|
|
93
|
+
.action((geneName) => {
|
|
94
|
+
display.header("Uninstall");
|
|
95
|
+
const genesDir = genesDirOf();
|
|
96
|
+
try {
|
|
97
|
+
const meta = (0, gene_snapshots_js_1.uninstallGene)(genesDir, geneName);
|
|
98
|
+
const version = meta.replacedVersion ? ` (v${meta.replacedVersion})` : "";
|
|
99
|
+
display.success(`Removed ${meta.name}${version}`);
|
|
100
|
+
display.info(`Restore it with: rotifer rollback ${meta.name}`);
|
|
101
|
+
}
|
|
102
|
+
catch (err) {
|
|
103
|
+
display.rustStyleError({
|
|
104
|
+
code: "E0053",
|
|
105
|
+
message: err instanceof Error ? err.message : String(err),
|
|
106
|
+
file: (0, node_path_1.join)(genesDir, geneName),
|
|
107
|
+
suggestion: "Run 'rotifer list' to see which genes are installed",
|
|
108
|
+
});
|
|
109
|
+
process.exit(1);
|
|
110
|
+
}
|
|
111
|
+
});
|
|
112
|
+
//# sourceMappingURL=rollback.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rollback.js","sourceRoot":"","sources":["../../src/commands/rollback.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -21,6 +21,7 @@ const logout_js_1 = require("./commands/logout.js");
|
|
|
21
21
|
const publish_js_1 = require("./commands/publish.js");
|
|
22
22
|
const search_js_1 = require("./commands/search.js");
|
|
23
23
|
const install_js_1 = require("./commands/install.js");
|
|
24
|
+
const rollback_js_1 = require("./commands/rollback.js");
|
|
24
25
|
const reputation_js_1 = require("./commands/reputation.js");
|
|
25
26
|
const info_js_1 = require("./commands/info.js");
|
|
26
27
|
const list_js_1 = require("./commands/list.js");
|
|
@@ -74,6 +75,8 @@ program.addCommand(logout_js_1.logoutCommand);
|
|
|
74
75
|
program.addCommand(publish_js_1.publishCommand);
|
|
75
76
|
program.addCommand(search_js_1.searchCommand);
|
|
76
77
|
program.addCommand(install_js_1.installCommand);
|
|
78
|
+
program.addCommand(rollback_js_1.uninstallCommand);
|
|
79
|
+
program.addCommand(rollback_js_1.rollbackCommand);
|
|
77
80
|
program.addCommand(reputation_js_1.reputationCommand);
|
|
78
81
|
program.addCommand(info_js_1.infoCommand);
|
|
79
82
|
program.addCommand(list_js_1.listCommand);
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Snapshots — the undo that installing a gene never had.
|
|
3
|
+
*
|
|
4
|
+
* `rotifer install --force` overwrote a gene in place, and nothing in this CLI
|
|
5
|
+
* could put back what it replaced. Neither could the MCP server, which reaches
|
|
6
|
+
* the same directories: overwriting was the only irreversible operation in
|
|
7
|
+
* Rotifer, and an assistant could reach it.
|
|
8
|
+
*
|
|
9
|
+
* An overwrite now moves the old directory into `<genes>/.snapshots/` first.
|
|
10
|
+
* One snapshot per gene, superseded by the next overwrite of that gene and
|
|
11
|
+
* consumed by a rollback — this undoes the last upgrade, which is the thing
|
|
12
|
+
* people want back. `rotifer versions` already answers what exists upstream.
|
|
13
|
+
*
|
|
14
|
+
* The layout is deliberately identical to @rotifer/mcp-server's, because both
|
|
15
|
+
* write into the same project. A gene overwritten through the MCP server can be
|
|
16
|
+
* rolled back with `rotifer rollback`, and the reverse — snapshots that only
|
|
17
|
+
* one half of the toolchain understood would be a trap rather than a safety
|
|
18
|
+
* net.
|
|
19
|
+
*/
|
|
20
|
+
export interface SnapshotMeta {
|
|
21
|
+
name: string;
|
|
22
|
+
replacedAt: string;
|
|
23
|
+
replacedBy: string | null;
|
|
24
|
+
replacedVersion: string | null;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Move an installed gene aside so an overwrite can be undone.
|
|
28
|
+
*
|
|
29
|
+
* Returns null when there was nothing to snapshot. Throws if the snapshot
|
|
30
|
+
* cannot be written: an overwrite the caller believes is reversible and is not
|
|
31
|
+
* would be worse than refusing to install.
|
|
32
|
+
*/
|
|
33
|
+
export declare function snapshotGene(genesDir: string, name: string, replacedBy?: string | null, now?: () => Date): SnapshotMeta | null;
|
|
34
|
+
/** Every gene that can currently be rolled back, newest replacement first. */
|
|
35
|
+
export declare function listSnapshots(genesDir: string): SnapshotMeta[];
|
|
36
|
+
export interface RestoreResult {
|
|
37
|
+
name: string;
|
|
38
|
+
restoredTo: string;
|
|
39
|
+
replacedAt: string;
|
|
40
|
+
replacedVersion: string | null;
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Put a snapshot back, discarding whatever currently occupies the gene's
|
|
44
|
+
* directory. The snapshot is consumed: a second rollback would otherwise
|
|
45
|
+
* silently discard the copy the first one restored.
|
|
46
|
+
*/
|
|
47
|
+
export declare function restoreGene(genesDir: string, name: string): RestoreResult;
|
|
48
|
+
/**
|
|
49
|
+
* Remove an installed gene, keeping a snapshot so the removal is undoable too.
|
|
50
|
+
*
|
|
51
|
+
* Uninstall is the same shape of irreversible act as overwrite, so it gets the
|
|
52
|
+
* same safety net rather than a different one.
|
|
53
|
+
*/
|
|
54
|
+
export declare function uninstallGene(genesDir: string, name: string): SnapshotMeta;
|
|
55
|
+
//# sourceMappingURL=gene-snapshots.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gene-snapshots.d.ts","sourceRoot":"","sources":["../../src/utils/gene-snapshots.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAgBH,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;CAChC;AAeD;;;;;;GAMG;AACH,wBAAgB,YAAY,CAC1B,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,MAAM,EACZ,UAAU,GAAE,MAAM,GAAG,IAAW,EAChC,GAAG,GAAE,MAAM,IAAuB,GACjC,YAAY,GAAG,IAAI,CAkBrB;AAED,8EAA8E;AAC9E,wBAAgB,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,YAAY,EAAE,CA4B9D;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;CAChC;AAED;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,aAAa,CAwBzE;AAED;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,YAAY,CAY1E"}
|
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Snapshots — the undo that installing a gene never had.
|
|
4
|
+
*
|
|
5
|
+
* `rotifer install --force` overwrote a gene in place, and nothing in this CLI
|
|
6
|
+
* could put back what it replaced. Neither could the MCP server, which reaches
|
|
7
|
+
* the same directories: overwriting was the only irreversible operation in
|
|
8
|
+
* Rotifer, and an assistant could reach it.
|
|
9
|
+
*
|
|
10
|
+
* An overwrite now moves the old directory into `<genes>/.snapshots/` first.
|
|
11
|
+
* One snapshot per gene, superseded by the next overwrite of that gene and
|
|
12
|
+
* consumed by a rollback — this undoes the last upgrade, which is the thing
|
|
13
|
+
* people want back. `rotifer versions` already answers what exists upstream.
|
|
14
|
+
*
|
|
15
|
+
* The layout is deliberately identical to @rotifer/mcp-server's, because both
|
|
16
|
+
* write into the same project. A gene overwritten through the MCP server can be
|
|
17
|
+
* rolled back with `rotifer rollback`, and the reverse — snapshots that only
|
|
18
|
+
* one half of the toolchain understood would be a trap rather than a safety
|
|
19
|
+
* net.
|
|
20
|
+
*/
|
|
21
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
22
|
+
exports.snapshotGene = snapshotGene;
|
|
23
|
+
exports.listSnapshots = listSnapshots;
|
|
24
|
+
exports.restoreGene = restoreGene;
|
|
25
|
+
exports.uninstallGene = uninstallGene;
|
|
26
|
+
const node_fs_1 = require("node:fs");
|
|
27
|
+
const node_path_1 = require("node:path");
|
|
28
|
+
const SNAPSHOT_DIR = ".snapshots";
|
|
29
|
+
const snapshotRoot = (genesDir) => (0, node_path_1.join)(genesDir, SNAPSHOT_DIR);
|
|
30
|
+
const snapshotPath = (genesDir, name) => (0, node_path_1.join)(snapshotRoot(genesDir), name);
|
|
31
|
+
const metaPath = (genesDir, name) => (0, node_path_1.join)(snapshotRoot(genesDir), `${name}.json`);
|
|
32
|
+
function readVersion(geneDir) {
|
|
33
|
+
try {
|
|
34
|
+
const manifest = JSON.parse((0, node_fs_1.readFileSync)((0, node_path_1.join)(geneDir, ".cloud-manifest.json"), "utf-8"));
|
|
35
|
+
return typeof manifest?.version === "string" ? manifest.version : null;
|
|
36
|
+
}
|
|
37
|
+
catch {
|
|
38
|
+
return null;
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Move an installed gene aside so an overwrite can be undone.
|
|
43
|
+
*
|
|
44
|
+
* Returns null when there was nothing to snapshot. Throws if the snapshot
|
|
45
|
+
* cannot be written: an overwrite the caller believes is reversible and is not
|
|
46
|
+
* would be worse than refusing to install.
|
|
47
|
+
*/
|
|
48
|
+
function snapshotGene(genesDir, name, replacedBy = null, now = () => new Date()) {
|
|
49
|
+
const geneDir = (0, node_path_1.join)(genesDir, name);
|
|
50
|
+
if (!(0, node_fs_1.existsSync)(geneDir))
|
|
51
|
+
return null;
|
|
52
|
+
const target = snapshotPath(genesDir, name);
|
|
53
|
+
(0, node_fs_1.mkdirSync)(snapshotRoot(genesDir), { recursive: true });
|
|
54
|
+
if ((0, node_fs_1.existsSync)(target))
|
|
55
|
+
(0, node_fs_1.rmSync)(target, { recursive: true, force: true });
|
|
56
|
+
const meta = {
|
|
57
|
+
name,
|
|
58
|
+
replacedAt: now().toISOString(),
|
|
59
|
+
replacedBy,
|
|
60
|
+
replacedVersion: readVersion(geneDir),
|
|
61
|
+
};
|
|
62
|
+
(0, node_fs_1.renameSync)(geneDir, target);
|
|
63
|
+
(0, node_fs_1.writeFileSync)(metaPath(genesDir, name), JSON.stringify(meta, null, 2) + "\n");
|
|
64
|
+
return meta;
|
|
65
|
+
}
|
|
66
|
+
/** Every gene that can currently be rolled back, newest replacement first. */
|
|
67
|
+
function listSnapshots(genesDir) {
|
|
68
|
+
const root = snapshotRoot(genesDir);
|
|
69
|
+
if (!(0, node_fs_1.existsSync)(root))
|
|
70
|
+
return [];
|
|
71
|
+
let entries;
|
|
72
|
+
try {
|
|
73
|
+
entries = (0, node_fs_1.readdirSync)(root).filter((e) => {
|
|
74
|
+
try {
|
|
75
|
+
return (0, node_fs_1.statSync)((0, node_path_1.join)(root, e)).isDirectory();
|
|
76
|
+
}
|
|
77
|
+
catch {
|
|
78
|
+
return false;
|
|
79
|
+
}
|
|
80
|
+
});
|
|
81
|
+
}
|
|
82
|
+
catch {
|
|
83
|
+
return [];
|
|
84
|
+
}
|
|
85
|
+
return entries
|
|
86
|
+
.map((name) => {
|
|
87
|
+
try {
|
|
88
|
+
return JSON.parse((0, node_fs_1.readFileSync)(metaPath(genesDir, name), "utf-8"));
|
|
89
|
+
}
|
|
90
|
+
catch {
|
|
91
|
+
// The directory is what makes it restorable; a corrupt sidecar should
|
|
92
|
+
// not strand recoverable files.
|
|
93
|
+
return { name, replacedAt: "", replacedBy: null, replacedVersion: null };
|
|
94
|
+
}
|
|
95
|
+
})
|
|
96
|
+
.sort((a, b) => b.replacedAt.localeCompare(a.replacedAt));
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* Put a snapshot back, discarding whatever currently occupies the gene's
|
|
100
|
+
* directory. The snapshot is consumed: a second rollback would otherwise
|
|
101
|
+
* silently discard the copy the first one restored.
|
|
102
|
+
*/
|
|
103
|
+
function restoreGene(genesDir, name) {
|
|
104
|
+
const source = snapshotPath(genesDir, name);
|
|
105
|
+
if (!(0, node_fs_1.existsSync)(source)) {
|
|
106
|
+
const available = listSnapshots(genesDir).map((s) => s.name);
|
|
107
|
+
throw new Error(available.length
|
|
108
|
+
? `No snapshot for '${name}'. Available: ${available.join(", ")}.`
|
|
109
|
+
: `No snapshot for '${name}'. Nothing has been overwritten in this project.`);
|
|
110
|
+
}
|
|
111
|
+
const meta = listSnapshots(genesDir).find((s) => s.name === name);
|
|
112
|
+
const geneDir = (0, node_path_1.join)(genesDir, name);
|
|
113
|
+
if ((0, node_fs_1.existsSync)(geneDir))
|
|
114
|
+
(0, node_fs_1.rmSync)(geneDir, { recursive: true, force: true });
|
|
115
|
+
(0, node_fs_1.renameSync)(source, geneDir);
|
|
116
|
+
(0, node_fs_1.rmSync)(metaPath(genesDir, name), { force: true });
|
|
117
|
+
return {
|
|
118
|
+
name,
|
|
119
|
+
restoredTo: geneDir,
|
|
120
|
+
replacedAt: meta?.replacedAt ?? "",
|
|
121
|
+
replacedVersion: meta?.replacedVersion ?? null,
|
|
122
|
+
};
|
|
123
|
+
}
|
|
124
|
+
/**
|
|
125
|
+
* Remove an installed gene, keeping a snapshot so the removal is undoable too.
|
|
126
|
+
*
|
|
127
|
+
* Uninstall is the same shape of irreversible act as overwrite, so it gets the
|
|
128
|
+
* same safety net rather than a different one.
|
|
129
|
+
*/
|
|
130
|
+
function uninstallGene(genesDir, name) {
|
|
131
|
+
const geneDir = (0, node_path_1.join)(genesDir, name);
|
|
132
|
+
if (!(0, node_fs_1.existsSync)(geneDir)) {
|
|
133
|
+
throw new Error(`Gene '${name}' is not installed at ${geneDir}.`);
|
|
134
|
+
}
|
|
135
|
+
const meta = snapshotGene(genesDir, name);
|
|
136
|
+
if (!meta) {
|
|
137
|
+
// snapshotGene only returns null when the directory is absent, which the
|
|
138
|
+
// check above rules out. Refuse rather than delete unrecoverably.
|
|
139
|
+
throw new Error(`Could not snapshot '${name}' before removing it; nothing was removed.`);
|
|
140
|
+
}
|
|
141
|
+
return meta;
|
|
142
|
+
}
|
|
143
|
+
//# sourceMappingURL=gene-snapshots.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gene-snapshots.js","sourceRoot":"","sources":["../../src/utils/gene-snapshots.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@rotifer/playground",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.11.0",
|
|
4
4
|
"description": "Rotifer Protocol Playground — local development environment for gene development, Arena competition, and protocol simulation",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"author": "Rotifer Protocol Contributors",
|
|
@@ -84,10 +84,10 @@
|
|
|
84
84
|
},
|
|
85
85
|
"optionalDependencies": {
|
|
86
86
|
"@rolldown/binding-linux-x64-gnu": "1.1.1",
|
|
87
|
-
"@rotifer/playground-darwin-arm64": "0.
|
|
88
|
-
"@rotifer/playground-darwin-x64": "0.
|
|
89
|
-
"@rotifer/playground-linux-x64-gnu": "0.
|
|
90
|
-
"@rotifer/playground-win32-x64-msvc": "0.
|
|
87
|
+
"@rotifer/playground-darwin-arm64": "0.11.0",
|
|
88
|
+
"@rotifer/playground-darwin-x64": "0.11.0",
|
|
89
|
+
"@rotifer/playground-linux-x64-gnu": "0.11.0",
|
|
90
|
+
"@rotifer/playground-win32-x64-msvc": "0.11.0"
|
|
91
91
|
},
|
|
92
92
|
"engines": {
|
|
93
93
|
"node": ">=20.0.0"
|