@rotifer/playground 0.10.2 → 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 +15 -0
- 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,21 @@ 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
|
+
|
|
8
23
|
## [0.10.2](https://github.com/rotifer-protocol/rotifer-playground/compare/v0.10.1...v0.10.2) (2026-08-14)
|
|
9
24
|
|
|
10
25
|
|
|
@@ -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":";AAAA;;;;;;;;;;;;;;;;;;GAkBG;;AA2CH,oCAuBC;AAGD,sCA4BC;AAcD,kCAwBC;AAQD,sCAYC;AAzJD,qCASiB;AACjB,yCAAiC;AAEjC,MAAM,YAAY,GAAG,YAAY,CAAC;AASlC,MAAM,YAAY,GAAG,CAAC,QAAgB,EAAU,EAAE,CAAC,IAAA,gBAAI,EAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;AAChF,MAAM,YAAY,GAAG,CAAC,QAAgB,EAAE,IAAY,EAAU,EAAE,CAAC,IAAA,gBAAI,EAAC,YAAY,CAAC,QAAQ,CAAC,EAAE,IAAI,CAAC,CAAC;AACpG,MAAM,QAAQ,GAAG,CAAC,QAAgB,EAAE,IAAY,EAAU,EAAE,CAAC,IAAA,gBAAI,EAAC,YAAY,CAAC,QAAQ,CAAC,EAAE,GAAG,IAAI,OAAO,CAAC,CAAC;AAE1G,SAAS,WAAW,CAAC,OAAe;IAClC,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,IAAA,sBAAY,EAAC,IAAA,gBAAI,EAAC,OAAO,EAAE,sBAAsB,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC;QAC1F,OAAO,OAAO,QAAQ,EAAE,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC;IACzE,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED;;;;;;GAMG;AACH,SAAgB,YAAY,CAC1B,QAAgB,EAChB,IAAY,EACZ,aAA4B,IAAI,EAChC,MAAkB,GAAG,EAAE,CAAC,IAAI,IAAI,EAAE;IAElC,MAAM,OAAO,GAAG,IAAA,gBAAI,EAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;IACrC,IAAI,CAAC,IAAA,oBAAU,EAAC,OAAO,CAAC;QAAE,OAAO,IAAI,CAAC;IAEtC,MAAM,MAAM,GAAG,YAAY,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;IAC5C,IAAA,mBAAS,EAAC,YAAY,CAAC,QAAQ,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACvD,IAAI,IAAA,oBAAU,EAAC,MAAM,CAAC;QAAE,IAAA,gBAAM,EAAC,MAAM,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IAEzE,MAAM,IAAI,GAAiB;QACzB,IAAI;QACJ,UAAU,EAAE,GAAG,EAAE,CAAC,WAAW,EAAE;QAC/B,UAAU;QACV,eAAe,EAAE,WAAW,CAAC,OAAO,CAAC;KACtC,CAAC;IAEF,IAAA,oBAAU,EAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IAC5B,IAAA,uBAAa,EAAC,QAAQ,CAAC,QAAQ,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;IAC9E,OAAO,IAAI,CAAC;AACd,CAAC;AAED,8EAA8E;AAC9E,SAAgB,aAAa,CAAC,QAAgB;IAC5C,MAAM,IAAI,GAAG,YAAY,CAAC,QAAQ,CAAC,CAAC;IACpC,IAAI,CAAC,IAAA,oBAAU,EAAC,IAAI,CAAC;QAAE,OAAO,EAAE,CAAC;IAEjC,IAAI,OAAiB,CAAC;IACtB,IAAI,CAAC;QACH,OAAO,GAAG,IAAA,qBAAW,EAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE;YACvC,IAAI,CAAC;gBACH,OAAO,IAAA,kBAAQ,EAAC,IAAA,gBAAI,EAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;YAC/C,CAAC;YAAC,MAAM,CAAC;gBACP,OAAO,KAAK,CAAC;YACf,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,OAAO,OAAO;SACX,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;QACZ,IAAI,CAAC;YACH,OAAO,IAAI,CAAC,KAAK,CAAC,IAAA,sBAAY,EAAC,QAAQ,CAAC,QAAQ,EAAE,IAAI,CAAC,EAAE,OAAO,CAAC,CAAiB,CAAC;QACrF,CAAC;QAAC,MAAM,CAAC;YACP,sEAAsE;YACtE,gCAAgC;YAChC,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,eAAe,EAAE,IAAI,EAAE,CAAC;QAC3E,CAAC;IACH,CAAC,CAAC;SACD,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC;AAC9D,CAAC;AASD;;;;GAIG;AACH,SAAgB,WAAW,CAAC,QAAgB,EAAE,IAAY;IACxD,MAAM,MAAM,GAAG,YAAY,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;IAC5C,IAAI,CAAC,IAAA,oBAAU,EAAC,MAAM,CAAC,EAAE,CAAC;QACxB,MAAM,SAAS,GAAG,aAAa,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QAC7D,MAAM,IAAI,KAAK,CACb,SAAS,CAAC,MAAM;YACd,CAAC,CAAC,oBAAoB,IAAI,iBAAiB,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG;YAClE,CAAC,CAAC,oBAAoB,IAAI,kDAAkD,CAC/E,CAAC;IACJ,CAAC;IAED,MAAM,IAAI,GAAG,aAAa,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;IAClE,MAAM,OAAO,GAAG,IAAA,gBAAI,EAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;IACrC,IAAI,IAAA,oBAAU,EAAC,OAAO,CAAC;QAAE,IAAA,gBAAM,EAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IAE3E,IAAA,oBAAU,EAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC5B,IAAA,gBAAM,EAAC,QAAQ,CAAC,QAAQ,EAAE,IAAI,CAAC,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IAElD,OAAO;QACL,IAAI;QACJ,UAAU,EAAE,OAAO;QACnB,UAAU,EAAE,IAAI,EAAE,UAAU,IAAI,EAAE;QAClC,eAAe,EAAE,IAAI,EAAE,eAAe,IAAI,IAAI;KAC/C,CAAC;AACJ,CAAC;AAED;;;;;GAKG;AACH,SAAgB,aAAa,CAAC,QAAgB,EAAE,IAAY;IAC1D,MAAM,OAAO,GAAG,IAAA,gBAAI,EAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;IACrC,IAAI,CAAC,IAAA,oBAAU,EAAC,OAAO,CAAC,EAAE,CAAC;QACzB,MAAM,IAAI,KAAK,CAAC,SAAS,IAAI,yBAAyB,OAAO,GAAG,CAAC,CAAC;IACpE,CAAC;IACD,MAAM,IAAI,GAAG,YAAY,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;IAC1C,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,yEAAyE;QACzE,kEAAkE;QAClE,MAAM,IAAI,KAAK,CAAC,uBAAuB,IAAI,4CAA4C,CAAC,CAAC;IAC3F,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC"}
|
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"
|