@rotifer/playground 0.15.0 → 0.17.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (51) hide show
  1. package/CHANGELOG.md +24 -0
  2. package/dist/arena/invalidation-criteria.d.ts +157 -0
  3. package/dist/arena/invalidation-criteria.d.ts.map +1 -0
  4. package/dist/arena/invalidation-criteria.js +236 -0
  5. package/dist/arena/invalidation-criteria.js.map +1 -0
  6. package/dist/cloud/client.d.ts +94 -1
  7. package/dist/cloud/client.d.ts.map +1 -1
  8. package/dist/cloud/client.js +132 -22
  9. package/dist/cloud/client.js.map +1 -1
  10. package/dist/cloud/types.d.ts +9 -0
  11. package/dist/cloud/types.d.ts.map +1 -1
  12. package/dist/cloud/types.js.map +1 -1
  13. package/dist/commands/agent-create.d.ts.map +1 -1
  14. package/dist/commands/agent-create.js +3 -4
  15. package/dist/commands/agent-create.js.map +1 -1
  16. package/dist/commands/arena-audit.d.ts +3 -0
  17. package/dist/commands/arena-audit.d.ts.map +1 -0
  18. package/dist/commands/arena-audit.js +190 -0
  19. package/dist/commands/arena-audit.js.map +1 -0
  20. package/dist/commands/arena-submit.d.ts.map +1 -1
  21. package/dist/commands/arena-submit.js +30 -8
  22. package/dist/commands/arena-submit.js.map +1 -1
  23. package/dist/commands/arena-watch.d.ts.map +1 -1
  24. package/dist/commands/arena-watch.js +3 -4
  25. package/dist/commands/arena-watch.js.map +1 -1
  26. package/dist/commands/compile.d.ts.map +1 -1
  27. package/dist/commands/compile.js +45 -5
  28. package/dist/commands/compile.js.map +1 -1
  29. package/dist/commands/run.d.ts.map +1 -1
  30. package/dist/commands/run.js +17 -1
  31. package/dist/commands/run.js.map +1 -1
  32. package/dist/commands/unpublish.d.ts +26 -0
  33. package/dist/commands/unpublish.d.ts.map +1 -0
  34. package/dist/commands/unpublish.js +190 -0
  35. package/dist/commands/unpublish.js.map +1 -0
  36. package/dist/index.js +5 -0
  37. package/dist/index.js.map +1 -1
  38. package/dist/utils/fidelity-discount.d.ts +51 -0
  39. package/dist/utils/fidelity-discount.d.ts.map +1 -0
  40. package/dist/utils/fidelity-discount.js +47 -0
  41. package/dist/utils/fidelity-discount.js.map +1 -0
  42. package/genes/genesis-code-format/index.ts +1 -1
  43. package/genes/genesis-code-format/phenotype.json +1 -1
  44. package/genes/genesis-file-read/index.ts +1 -1
  45. package/genes/genesis-file-read/phenotype.json +1 -1
  46. package/genes/genesis-l0-constraint/index.ts +1 -1
  47. package/genes/genesis-l0-constraint/phenotype.json +1 -1
  48. package/genes/genesis-web-search/index.ts +1 -1
  49. package/genes/genesis-web-search-lite/index.ts +1 -1
  50. package/genes/genesis-web-search-lite/phenotype.json +1 -1
  51. package/package.json +5 -5
@@ -0,0 +1,190 @@
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.republishCommand = exports.unpublishCommand = void 0;
37
+ exports.splitVersionSuffix = splitVersionSuffix;
38
+ exports.chooseVersion = chooseVersion;
39
+ const commander_1 = require("commander");
40
+ const display = __importStar(require("../utils/display.js"));
41
+ const palette_js_1 = require("../utils/palette.js");
42
+ const auth_js_1 = require("../cloud/auth.js");
43
+ const client_js_1 = require("../cloud/client.js");
44
+ const gene_ref_js_1 = require("../cloud/gene-ref.js");
45
+ /** Split a trailing `@version` off a gene reference, leaving `@owner/name` alone. */
46
+ function splitVersionSuffix(ref) {
47
+ const trimmed = ref.trim();
48
+ // Only a version suffix has an `@` that is neither leading nor part of `@owner/name`.
49
+ const at = trimmed.lastIndexOf("@");
50
+ if (at <= 0 || trimmed.slice(at).includes("/"))
51
+ return { name: trimmed, version: null };
52
+ return { name: trimmed.slice(0, at), version: trimmed.slice(at + 1) || null };
53
+ }
54
+ /**
55
+ * Pick the version to act on.
56
+ *
57
+ * With no version given this takes the newest one that is actually in the
58
+ * state the command can change — the newest published version to take down,
59
+ * the newest unpublished one to put back. Falling back to the newest of any
60
+ * state would let a repeated command report success while the visible version
61
+ * stayed exactly as it was.
62
+ */
63
+ function chooseVersion(versions, requested, direction) {
64
+ const shouldTargetPublished = direction === "down";
65
+ if (versions.length === 0)
66
+ return { chosen: null, reason: "no-such-gene" };
67
+ if (requested) {
68
+ const exact = versions.find((v) => v.version === requested);
69
+ if (!exact)
70
+ return { chosen: null, reason: "no-such-version" };
71
+ if (exact.published !== shouldTargetPublished)
72
+ return { chosen: null, reason: "already-in-state" };
73
+ return { chosen: exact, reason: null };
74
+ }
75
+ const candidates = versions.filter((v) => v.published === shouldTargetPublished);
76
+ if (candidates.length === 0)
77
+ return { chosen: null, reason: "nothing-to-do" };
78
+ return { chosen: candidates[0], reason: null };
79
+ }
80
+ const WORDING = {
81
+ down: {
82
+ verb: "unpublish",
83
+ pastTense: "Unpublished",
84
+ alreadyState: "already unpublished",
85
+ nothingToDo: "Every version is already unpublished.",
86
+ notYours: "Only the author of a version can take it down",
87
+ },
88
+ up: {
89
+ verb: "republish",
90
+ pastTense: "Republished",
91
+ alreadyState: "already published",
92
+ nothingToDo: "Every version is already published.",
93
+ notYours: "Only the author of a version can put it back",
94
+ },
95
+ };
96
+ async function run(geneRef, direction, shouldSkipConfirm) {
97
+ const w = WORDING[direction];
98
+ try {
99
+ await (0, auth_js_1.requireAuth)();
100
+ }
101
+ catch {
102
+ display.error("Not logged in. Run 'rotifer login' first.");
103
+ process.exitCode = 1;
104
+ return;
105
+ }
106
+ let targetId;
107
+ let label;
108
+ const asRef = (0, gene_ref_js_1.parseGeneRef)(geneRef);
109
+ if (asRef.kind === "uuid") {
110
+ targetId = asRef.raw;
111
+ label = asRef.raw;
112
+ }
113
+ else {
114
+ const { name, version } = splitVersionSuffix(geneRef);
115
+ let versions;
116
+ try {
117
+ versions = await (0, client_js_1.listOwnGeneVersions)(name);
118
+ }
119
+ catch (err) {
120
+ display.error("Could not look up your genes", err.message);
121
+ process.exitCode = 1;
122
+ return;
123
+ }
124
+ const { chosen, reason } = chooseVersion(versions, version, direction);
125
+ if (!chosen) {
126
+ reportUnresolved(name, version, versions, reason, w);
127
+ process.exitCode = 1;
128
+ return;
129
+ }
130
+ targetId = chosen.id;
131
+ label = `${chosen.name}@${chosen.version}`;
132
+ }
133
+ if (!shouldSkipConfirm && direction === "down") {
134
+ display.warn(`About to unpublish ${palette_js_1.c.bold(label)}.`);
135
+ display.hint("It disappears from search and the public registry.");
136
+ display.hint("Its Arena entry, invocation history and published artifact are kept.");
137
+ display.hint(`Put it back with: rotifer republish ${label}`);
138
+ display.hint(`Re-run with ${palette_js_1.c.bold("--yes")} to confirm.`);
139
+ process.exitCode = 1;
140
+ return;
141
+ }
142
+ try {
143
+ const result = direction === "down"
144
+ ? await (0, client_js_1.unpublishGene)(targetId)
145
+ : await (0, client_js_1.republishGene)(targetId);
146
+ display.renderResult({ ok: true, direction, id: result.id, name: result.name, version: result.version }, (data) => {
147
+ display.success(`${w.pastTense} ${data.name}@${data.version}`);
148
+ if (direction === "down") {
149
+ display.hint(`Undo with: rotifer republish ${data.name}@${data.version}`);
150
+ }
151
+ });
152
+ }
153
+ catch (err) {
154
+ display.error(`Could not ${w.verb} the gene`, err.message);
155
+ process.exitCode = 1;
156
+ }
157
+ }
158
+ exports.unpublishCommand = new commander_1.Command("unpublish")
159
+ .description("Take one of your published gene versions off the public registry")
160
+ .argument("<gene>", "gene name, optionally name@version, or a gene UUID")
161
+ .option("--yes", "skip the confirmation prompt", false)
162
+ .action(async (geneRef, options) => {
163
+ await run(geneRef, "down", options.yes);
164
+ });
165
+ exports.republishCommand = new commander_1.Command("republish")
166
+ .description("Put one of your unpublished gene versions back on the public registry")
167
+ .argument("<gene>", "gene name, optionally name@version, or a gene UUID")
168
+ .action(async (geneRef) => {
169
+ await run(geneRef, "up", true);
170
+ });
171
+ function reportUnresolved(name, version, versions, reason, w) {
172
+ switch (reason) {
173
+ case "no-such-gene":
174
+ display.error(`You have no gene named '${name}'.`, `${w.notYours}, so ${w.verb} looks only at your own genes.`);
175
+ display.hint("Check the name with 'rotifer search', or publish it first.");
176
+ return;
177
+ case "no-such-version":
178
+ display.error(`You have no version '${version}' of '${name}'.`);
179
+ display.hint(`Your versions: ${versions.map((v) => v.version).join(", ")}`);
180
+ return;
181
+ case "already-in-state":
182
+ display.warn(`${name}@${version} is ${w.alreadyState} — nothing to do.`);
183
+ return;
184
+ case "nothing-to-do":
185
+ display.warn(`${w.nothingToDo} ('${name}')`);
186
+ display.hint(`Versions: ${versions.map((v) => v.version).join(", ")}`);
187
+ return;
188
+ }
189
+ }
190
+ //# sourceMappingURL=unpublish.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"unpublish.js","sourceRoot":"","sources":["../../src/commands/unpublish.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -13,12 +13,14 @@ const doctor_js_1 = require("./commands/doctor.js");
13
13
  const arena_submit_js_1 = require("./commands/arena-submit.js");
14
14
  const arena_list_js_1 = require("./commands/arena-list.js");
15
15
  const arena_watch_js_1 = require("./commands/arena-watch.js");
16
+ const arena_audit_js_1 = require("./commands/arena-audit.js");
16
17
  const agent_create_js_1 = require("./commands/agent-create.js");
17
18
  const agent_list_js_1 = require("./commands/agent-list.js");
18
19
  const agent_run_js_1 = require("./commands/agent-run.js");
19
20
  const login_js_1 = require("./commands/login.js");
20
21
  const logout_js_1 = require("./commands/logout.js");
21
22
  const publish_js_1 = require("./commands/publish.js");
23
+ const unpublish_js_1 = require("./commands/unpublish.js");
22
24
  const search_js_1 = require("./commands/search.js");
23
25
  const install_js_1 = require("./commands/install.js");
24
26
  const rollback_js_1 = require("./commands/rollback.js");
@@ -73,6 +75,8 @@ program.addCommand(doctor_js_1.doctorCommand);
73
75
  program.addCommand(login_js_1.loginCommand);
74
76
  program.addCommand(logout_js_1.logoutCommand);
75
77
  program.addCommand(publish_js_1.publishCommand);
78
+ program.addCommand(unpublish_js_1.unpublishCommand);
79
+ program.addCommand(unpublish_js_1.republishCommand);
76
80
  program.addCommand(search_js_1.searchCommand);
77
81
  program.addCommand(install_js_1.installCommand);
78
82
  program.addCommand(rollback_js_1.uninstallCommand);
@@ -89,6 +93,7 @@ const arena = program.command("arena").description("Arena competition commands")
89
93
  arena.addCommand(arena_submit_js_1.arenaSubmitCommand);
90
94
  arena.addCommand(arena_list_js_1.arenaListCommand);
91
95
  arena.addCommand(arena_watch_js_1.arenaWatchCommand);
96
+ arena.addCommand(arena_audit_js_1.arenaAuditCommand);
92
97
  const agent = program.command("agent").description("Agent lifecycle commands");
93
98
  agent.addCommand(agent_create_js_1.agentCreateCommand);
94
99
  agent.addCommand(agent_list_js_1.agentListCommand);
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAEA,yCAA0C;AAC1C,qCAAuC;AACvC,yCAAiC;AACjC,gDAAiD;AACjD,gDAAiD;AACjD,gDAAiD;AACjD,gDAAiD;AACjD,sDAAuD;AACvD,oDAAqD;AACrD,gEAAgE;AAChE,4DAA4D;AAC5D,8DAA8D;AAC9D,gEAAgE;AAChE,4DAA4D;AAC5D,0DAA0D;AAC1D,kDAAmD;AACnD,oDAAqD;AACrD,sDAAuD;AACvD,oDAAqD;AACrD,sDAAuD;AACvD,wDAA2E;AAC3E,4DAA6D;AAC7D,gDAAiD;AACjD,gDAAiD;AACjD,8CAA+C;AAC/C,wDAAyD;AACzD,oDAAqD;AACrD,kDAAmD;AACnD,sDAAuD;AACvD,sDAAuD;AACvD,4CAA6C;AAC7C,kDAAmD;AACnD,8DAA8D;AAC9D,8DAA8D;AAC9D,sDAAsD;AACtD,6DAAkG;AAClG,2DAAwD;AACxD,mDAAoG;AAEpG,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,uEAAuE,CACxE;KACA,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC;KACpB,MAAM,CAAC,QAAQ,EAAE,wCAAwC,CAAC;KAC1D,MAAM,CAAC,SAAS,EAAE,yCAAyC,CAAC;KAC5D,WAAW,CAAC,QAAQ,EAAE,GAAG,EAAE,CAAC,IAAA,mBAAM,EAAC,GAAG,CAAC,OAAO,CAAC,CAAC;KAChD,aAAa,CAAC;IACb,UAAU,CAAC,GAAY,EAAE,MAAY;QACnC,IAAI,GAAG,KAAK,OAAO;YAAE,OAAO,IAAA,iCAAoB,EAAC,GAAG,EAAE,MAAM,CAAC,CAAC;QAC9D,OAAO,IAAA,8BAAiB,EAAC,GAAG,EAAE,MAAM,CAAC,CAAC;IACxC,CAAC;CACF,CAAC,CAAC;AAEL,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,GAAG,EAAE;IAC7B,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;IAC5B,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;QACd,IAAA,0BAAa,EAAC,MAAM,CAAC,CAAC;IACxB,CAAC;SAAM,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;QACtB,IAAA,0BAAa,EAAC,OAAO,CAAC,CAAC;IACzB,CAAC;AACH,CAAC,CAAC,CAAC;AAEH,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;AACnC,OAAO,CAAC,UAAU,CAAC,yBAAa,CAAC,CAAC;AAElC,OAAO,CAAC,UAAU,CAAC,uBAAY,CAAC,CAAC;AACjC,OAAO,CAAC,UAAU,CAAC,yBAAa,CAAC,CAAC;AAClC,OAAO,CAAC,UAAU,CAAC,2BAAc,CAAC,CAAC;AACnC,OAAO,CAAC,UAAU,CAAC,yBAAa,CAAC,CAAC;AAClC,OAAO,CAAC,UAAU,CAAC,2BAAc,CAAC,CAAC;AACnC,OAAO,CAAC,UAAU,CAAC,8BAAgB,CAAC,CAAC;AACrC,OAAO,CAAC,UAAU,CAAC,6BAAe,CAAC,CAAC;AACpC,OAAO,CAAC,UAAU,CAAC,iCAAiB,CAAC,CAAC;AACtC,OAAO,CAAC,UAAU,CAAC,qBAAW,CAAC,CAAC;AAChC,OAAO,CAAC,UAAU,CAAC,qBAAW,CAAC,CAAC;AAChC,OAAO,CAAC,UAAU,CAAC,mBAAU,CAAC,CAAC;AAC/B,OAAO,CAAC,UAAU,CAAC,6BAAe,CAAC,CAAC;AACpC,OAAO,CAAC,UAAU,CAAC,yBAAa,CAAC,CAAC;AAClC,OAAO,CAAC,UAAU,CAAC,uBAAY,CAAC,CAAC;AACjC,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;AACnC,KAAK,CAAC,UAAU,CAAC,8BAAe,CAAC,CAAC;AAElC,OAAO,CAAC,UAAU,CAAC,uBAAY,CAAC,CAAC;AACjC,OAAO,CAAC,UAAU,CAAC,2BAAc,CAAC,CAAC;AACnC,OAAO,CAAC,UAAU,CAAC,iBAAS,CAAC,CAAC;AAC9B,OAAO,CAAC,UAAU,CAAC,kCAAiB,CAAC,CAAC;AACtC,OAAO,CAAC,UAAU,CAAC,kCAAiB,CAAC,CAAC;AACtC,OAAO,CAAC,UAAU,CAAC,0BAAa,CAAC,CAAC;AAElC,uDAAuD;AACvD,8DAA8D;AAC9D,4DAA4D;AAC5D,CAAC,SAAS,aAAa,CAAC,GAAY;IAClC,KAAK,MAAM,GAAG,IAAI,GAAG,CAAC,QAAQ,EAAE,CAAC;QAC/B,GAAG,CAAC,aAAa,CAAC;YAChB,UAAU,CAAC,IAAa,EAAE,MAAY;gBACpC,OAAO,IAAA,iCAAoB,EAAC,IAAI,EAAE,MAAM,CAAC,CAAC;YAC5C,CAAC;SACF,CAAC,CAAC;QACH,GAAG,CAAC,eAAe,CAAC;YAClB,eAAe,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,IAAI,KAAK;YACpD,eAAe,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,IAAI,KAAK;SACrD,CAAC,CAAC;QACH,aAAa,CAAC,GAAG,CAAC,CAAC;IACrB,CAAC;AACH,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;AAEZ,MAAM,UAAU,GAAG,IAAA,+BAAc,GAAE,CAAC;AACpC,IAAI,UAAU,CAAC,cAAc,CAAC,KAAK,KAAK,EAAE,CAAC;IACzC,MAAM,MAAM,GAAG,IAAA,gCAAc,EAAC,qBAAqB,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC;IAClE,IAAI,MAAM,EAAE,CAAC;QACX,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,IAAA,yCAAuB,EAAC,MAAM,EAAE,qBAAqB,CAAC,CAAC,CAAC;IACnF,CAAC;IACD,IAAA,gCAAc,EAAC,qBAAqB,EAAE,GAAG,CAAC,OAAO,CAAC;SAC/C,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE;QACb,IAAI,IAAI,IAAI,CAAC,MAAM;YAAE,IAAA,yCAAuB,EAAC,IAAI,EAAE,qBAAqB,CAAC,CAAC;IAC5E,CAAC,CAAC;SACD,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;AACrB,CAAC;AAED,OAAO,CAAC,KAAK,EAAE,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,51 @@
1
+ /**
2
+ * The §5.1 fidelity discount, applied in one place.
3
+ *
4
+ * F(g) = base_fitness × FIDELITY_DISCOUNT[fidelity]
5
+ *
6
+ * The constant has lived in `types/phenotype.ts` since spec v2.11 landed and
7
+ * was called from nowhere: every fitness the CLI produced was the undiscounted
8
+ * base, for every fidelity alike, while three separate commands carried their
9
+ * own hand-tuned `isNative ? 0.7 : 0.45` that baked a different, undocumented
10
+ * penalty into the *estimate* instead. This module is the single seam between
11
+ * the protocol parameter and every number the CLI submits or shows.
12
+ *
13
+ * Fidelity is matched case-insensitively because the three layers disagree on
14
+ * case — the spec enum is UPPERCASE, phenotype.json is PascalCase, the
15
+ * parameter keys are lowercase — and that reconciliation belongs here, once,
16
+ * not in each caller.
17
+ */
18
+ export interface DiscountedFitness {
19
+ /** The raw value before the discount — what the gene nominally achieved. */
20
+ baseFitness: number;
21
+ /** The FIDELITY_DISCOUNT entry that was applied, recorded so the row stays reconstructible. */
22
+ fidelityDiscount: number;
23
+ /** base × discount, the value that ranks. */
24
+ fitness: number;
25
+ }
26
+ /**
27
+ * Look up the discount for a declared fidelity.
28
+ *
29
+ * An unrecognised fidelity gets the Wrapped discount, not the Native one:
30
+ * the tier that makes no claim about execution should not be mistaken for the
31
+ * tier that makes the strongest. Undeclared fidelity is treated as Wrapped for
32
+ * the same reason — that is also what `compile` reports for a gene with no
33
+ * source and no artifact.
34
+ */
35
+ export declare function fidelityDiscountFor(fidelity: string | null | undefined): number;
36
+ /** Apply the discount and return all three numbers the ledger wants. */
37
+ export declare function applyFidelityDiscount(baseFitness: number, fidelity: string | null | undefined): DiscountedFitness;
38
+ /**
39
+ * The deterministic estimate used when nothing was actually run.
40
+ *
41
+ * This is the *base*, fidelity-agnostic by design: the fidelity penalty is
42
+ * the discount's job, applied afterwards, so that an estimated Native gene and
43
+ * an estimated Hybrid gene differ by exactly the protocol parameter and not by
44
+ * a second, invisible constant. 0.70 is kept as the Native-tier baseline the
45
+ * old code used, so Native estimates are numerically unchanged; Wrapped lands
46
+ * at 0.70 × 0.70 = 0.49, close to the old 0.45 but now derived rather than
47
+ * declared.
48
+ */
49
+ export declare const ESTIMATED_BASE_FITNESS = 0.7;
50
+ export declare function estimateBaseFitness(geneId: string): number;
51
+ //# sourceMappingURL=fidelity-discount.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fidelity-discount.d.ts","sourceRoot":"","sources":["../../src/utils/fidelity-discount.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;GAgBG;AAEH,MAAM,WAAW,iBAAiB;IAChC,4EAA4E;IAC5E,WAAW,EAAE,MAAM,CAAC;IACpB,+FAA+F;IAC/F,gBAAgB,EAAE,MAAM,CAAC;IACzB,6CAA6C;IAC7C,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;;;;;;;GAQG;AACH,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,MAAM,CAG/E;AAED,wEAAwE;AACxE,wBAAgB,qBAAqB,CACnC,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAClC,iBAAiB,CAOnB;AAED;;;;;;;;;;GAUG;AACH,eAAO,MAAM,sBAAsB,MAAM,CAAC;AAE1C,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAI1D"}
@@ -0,0 +1,47 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ESTIMATED_BASE_FITNESS = void 0;
4
+ exports.fidelityDiscountFor = fidelityDiscountFor;
5
+ exports.applyFidelityDiscount = applyFidelityDiscount;
6
+ exports.estimateBaseFitness = estimateBaseFitness;
7
+ const phenotype_js_1 = require("../types/phenotype.js");
8
+ /**
9
+ * Look up the discount for a declared fidelity.
10
+ *
11
+ * An unrecognised fidelity gets the Wrapped discount, not the Native one:
12
+ * the tier that makes no claim about execution should not be mistaken for the
13
+ * tier that makes the strongest. Undeclared fidelity is treated as Wrapped for
14
+ * the same reason — that is also what `compile` reports for a gene with no
15
+ * source and no artifact.
16
+ */
17
+ function fidelityDiscountFor(fidelity) {
18
+ const key = (fidelity ?? "").trim().toLowerCase();
19
+ return phenotype_js_1.FIDELITY_DISCOUNT[key] ?? phenotype_js_1.FIDELITY_DISCOUNT.wrapped;
20
+ }
21
+ /** Apply the discount and return all three numbers the ledger wants. */
22
+ function applyFidelityDiscount(baseFitness, fidelity) {
23
+ const fidelityDiscount = fidelityDiscountFor(fidelity);
24
+ return {
25
+ baseFitness,
26
+ fidelityDiscount,
27
+ fitness: baseFitness * fidelityDiscount,
28
+ };
29
+ }
30
+ /**
31
+ * The deterministic estimate used when nothing was actually run.
32
+ *
33
+ * This is the *base*, fidelity-agnostic by design: the fidelity penalty is
34
+ * the discount's job, applied afterwards, so that an estimated Native gene and
35
+ * an estimated Hybrid gene differ by exactly the protocol parameter and not by
36
+ * a second, invisible constant. 0.70 is kept as the Native-tier baseline the
37
+ * old code used, so Native estimates are numerically unchanged; Wrapped lands
38
+ * at 0.70 × 0.70 = 0.49, close to the old 0.45 but now derived rather than
39
+ * declared.
40
+ */
41
+ exports.ESTIMATED_BASE_FITNESS = 0.7;
42
+ function estimateBaseFitness(geneId) {
43
+ const seed = parseInt(geneId.slice(0, 8), 16);
44
+ const variance = (seed % 250) / 1000;
45
+ return Math.min(exports.ESTIMATED_BASE_FITNESS + variance, 0.99);
46
+ }
47
+ //# sourceMappingURL=fidelity-discount.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fidelity-discount.js","sourceRoot":"","sources":["../../src/utils/fidelity-discount.ts"],"names":[],"mappings":";;;AAsCA,kDAGC;AAGD,sDAUC;AAeD,kDAIC;AAzED,wDAA0D;AA6B1D;;;;;;;;GAQG;AACH,SAAgB,mBAAmB,CAAC,QAAmC;IACrE,MAAM,GAAG,GAAG,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAClD,OAAO,gCAAiB,CAAC,GAAG,CAAC,IAAI,gCAAiB,CAAC,OAAO,CAAC;AAC7D,CAAC;AAED,wEAAwE;AACxE,SAAgB,qBAAqB,CACnC,WAAmB,EACnB,QAAmC;IAEnC,MAAM,gBAAgB,GAAG,mBAAmB,CAAC,QAAQ,CAAC,CAAC;IACvD,OAAO;QACL,WAAW;QACX,gBAAgB;QAChB,OAAO,EAAE,WAAW,GAAG,gBAAgB;KACxC,CAAC;AACJ,CAAC;AAED;;;;;;;;;;GAUG;AACU,QAAA,sBAAsB,GAAG,GAAG,CAAC;AAE1C,SAAgB,mBAAmB,CAAC,MAAc;IAChD,MAAM,IAAI,GAAG,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IAC9C,MAAM,QAAQ,GAAG,CAAC,IAAI,GAAG,GAAG,CAAC,GAAG,IAAI,CAAC;IACrC,OAAO,IAAI,CAAC,GAAG,CAAC,8BAAsB,GAAG,QAAQ,EAAE,IAAI,CAAC,CAAC;AAC3D,CAAC"}
@@ -15,7 +15,7 @@ interface CodeFormatOutput {
15
15
  * Formats source code. MVP uses simple heuristic formatting.
16
16
  * Production binding would delegate to prettier/rustfmt/etc.
17
17
  */
18
- export async function express(input: CodeFormatInput): Promise<CodeFormatOutput> {
18
+ export function express(input: CodeFormatInput): CodeFormatOutput {
19
19
  let formatted: string;
20
20
 
21
21
  switch (input.language) {
@@ -25,7 +25,7 @@
25
25
  "semanticRequirements": {
26
26
  "timeModel": "Sync",
27
27
  "concurrencyModel": "Stateless",
28
- "failureSemantics": "Fail"
28
+ "failureSemantics": "FAIL_FAST"
29
29
  },
30
30
  "tags": ["formatter", "prettier", "typescript", "rust", "genesis"]
31
31
  }
@@ -17,7 +17,7 @@ interface FileReadOutput {
17
17
  * Reads a local file and returns its contents.
18
18
  * Restricted by L0 sandbox constraints (path allowlist).
19
19
  */
20
- export async function express(input: FileReadInput): Promise<FileReadOutput> {
20
+ export function express(input: FileReadInput): FileReadOutput {
21
21
  const encoding = input.encoding ?? "utf-8";
22
22
 
23
23
  let buffer: Buffer;
@@ -25,7 +25,7 @@
25
25
  "semanticRequirements": {
26
26
  "timeModel": "Sync",
27
27
  "concurrencyModel": "Stateless",
28
- "failureSemantics": "Fail"
28
+ "failureSemantics": "FAIL_FAST"
29
29
  },
30
30
  "tags": ["file-io", "encoding", "base64", "local-files", "genesis"]
31
31
  }
@@ -29,7 +29,7 @@ const DEFAULT_MAX_FUEL = 1_000_000;
29
29
  * constraints. This is a meta-gene used by the Arena admission process
30
30
  * and the testing framework.
31
31
  */
32
- export async function express(input: ConstraintCheckInput): Promise<ConstraintCheckOutput> {
32
+ export function express(input: ConstraintCheckInput): ConstraintCheckOutput {
33
33
  const maxMem = input.constraints?.maxMemoryBytes ?? DEFAULT_MAX_MEMORY;
34
34
  const maxFuel = input.constraints?.maxFuel ?? DEFAULT_MAX_FUEL;
35
35
  const allowed = input.constraints?.allowedHostFunctions ?? [];
@@ -33,7 +33,7 @@
33
33
  "semanticRequirements": {
34
34
  "timeModel": "Sync",
35
35
  "concurrencyModel": "Stateless",
36
- "failureSemantics": "Fail"
36
+ "failureSemantics": "FAIL_FAST"
37
37
  },
38
38
  "tags": ["l0", "constraints", "wasm", "compliance", "sandbox"]
39
39
  }
@@ -21,7 +21,7 @@ interface SearchOutput {
21
21
  * Full-featured web search gene. In MVP, returns simulated results.
22
22
  * Production binding would connect to a real search API.
23
23
  */
24
- export async function express(input: SearchInput): Promise<SearchOutput> {
24
+ export function express(input: SearchInput): SearchOutput {
25
25
  const start = Date.now();
26
26
  const max = input.maxResults ?? 5;
27
27
 
@@ -14,7 +14,7 @@ interface LiteSearchOutput {
14
14
  * instead of a list. Lower resource cost, suitable for Par composition
15
15
  * with deadline constraints.
16
16
  */
17
- export async function express(input: LiteSearchInput): Promise<LiteSearchOutput> {
17
+ export function express(input: LiteSearchInput): LiteSearchOutput {
18
18
  return {
19
19
  answer: `[Simulated] Quick answer for "${input.query}": This is a placeholder response from genesis-web-search-lite. In production, this returns a concise answer from a search provider.`,
20
20
  source: "https://example.com/instant?q=" + encodeURIComponent(input.query),
@@ -23,7 +23,7 @@
23
23
  "semanticRequirements": {
24
24
  "timeModel": "Async",
25
25
  "concurrencyModel": "Stateless",
26
- "failureSemantics": "Fallback"
26
+ "failureSemantics": "SILENT_DEGRADE"
27
27
  },
28
28
  "tags": ["web-search", "single-answer", "attribution", "lightweight", "async"]
29
29
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rotifer/playground",
3
- "version": "0.15.0",
3
+ "version": "0.17.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.15.0",
88
- "@rotifer/playground-darwin-x64": "0.15.0",
89
- "@rotifer/playground-linux-x64-gnu": "0.15.0",
90
- "@rotifer/playground-win32-x64-msvc": "0.15.0"
87
+ "@rotifer/playground-darwin-arm64": "0.17.0",
88
+ "@rotifer/playground-darwin-x64": "0.17.0",
89
+ "@rotifer/playground-linux-x64-gnu": "0.17.0",
90
+ "@rotifer/playground-win32-x64-msvc": "0.17.0"
91
91
  },
92
92
  "engines": {
93
93
  "node": ">=20.0.0"