@rotifer/playground 0.30.2 → 0.30.3

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 CHANGED
@@ -5,6 +5,15 @@ 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.30.3](https://github.com/rotifer-protocol/rotifer-playground/compare/v0.30.2...v0.30.3) (2026-10-26)
9
+
10
+
11
+ ### Bug Fixes
12
+
13
+ * **genesis:** label the bundled search genes as simulated demos ([#468](https://github.com/rotifer-protocol/rotifer-playground/issues/468)) ([d5ffe2c](https://github.com/rotifer-protocol/rotifer-playground/commit/d5ffe2cb5392440d5fe9bf77204a620e857c3a48))
14
+ * **init:** ship gene-health-scanner so the recommended first command works ([#466](https://github.com/rotifer-protocol/rotifer-playground/issues/466)) ([2f2a8c4](https://github.com/rotifer-protocol/rotifer-playground/commit/2f2a8c4e1611e10616107295a3b38d1c48b89c02))
15
+ * **vg:** grade what it reads, say when it read nothing, and cover Python ([#467](https://github.com/rotifer-protocol/rotifer-playground/issues/467)) ([ff41a57](https://github.com/rotifer-protocol/rotifer-playground/commit/ff41a572c7f0de3e62058867ecbb635357d124ee))
16
+
8
17
  ## [0.30.2](https://github.com/rotifer-protocol/rotifer-playground/compare/v0.30.1...v0.30.2) (2026-10-26)
9
18
 
10
19
 
package/README.md CHANGED
@@ -56,7 +56,7 @@ $ rotifer init my-agent
56
56
  ───────────────
57
57
  Name Domain Fidelity
58
58
  ────────────────────────────────────────────────────────
59
- genesis-file-read filesystem Native
59
+ genesis-file-read filesystem Wrapped
60
60
  hello-world general Wrapped
61
61
  gene-health-scanner meta.diagnostics Native
62
62
  genesis-l0-constraint safety Native
@@ -80,7 +80,7 @@ One command scaffolds the workspace and ships the starter genes, including the o
80
80
  rotifer init my-agent && cd my-agent
81
81
  ```
82
82
 
83
- You see an Arena with 6 genes ranked by fitness. No configuration needed.
83
+ Your workspace already holds the starter genes. `rotifer arena list` shows them in the local Arena, unscored until you evaluate one with `rotifer arena submit <gene>`. No configuration needed.
84
84
 
85
85
  ### Act 2 — Aha (5 minutes)
86
86
 
@@ -232,9 +232,9 @@ Five pre-installed genes ship with every Agent workspace:
232
232
 
233
233
  | Gene | Domain | Fidelity | Description |
234
234
  |------|--------|----------|-------------|
235
- | `genesis-web-search` | search | Native | Full web search with multiple results |
236
- | `genesis-web-search-lite` | search | Native | Lightweight single-answer search |
237
- | `genesis-file-read` | filesystem | Native | Read local files (L0 sandbox restricted) |
235
+ | `genesis-web-search` | search | Native | Demo: simulated multi-result search (example.com results, not a live search) |
236
+ | `genesis-web-search-lite` | search | Native | Demo: simulated single-answer search (not a live search) |
237
+ | `genesis-file-read` | filesystem | Wrapped | Read local files (L0 sandbox restricted) |
238
238
  | `genesis-code-format` | tooling | Native | Format source code (JSON, TS, etc.) |
239
239
  | `genesis-l0-constraint` | safety | Native | L0 sandbox constraint checker |
240
240
 
@@ -1 +1 @@
1
- {"version":3,"file":"vg.d.ts","sourceRoot":"","sources":["../../src/commands/vg.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAiDpC,eAAO,MAAM,SAAS,SA0ElB,CAAC"}
1
+ {"version":3,"file":"vg.d.ts","sourceRoot":"","sources":["../../src/commands/vg.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAiDpC,eAAO,MAAM,SAAS,SAqFlB,CAAC"}
@@ -34,6 +34,7 @@ var __importStar = (this && this.__importStar) || (function () {
34
34
  })();
35
35
  Object.defineProperty(exports, "__esModule", { value: true });
36
36
  exports.vgCommand = void 0;
37
+ const node_fs_1 = require("node:fs");
37
38
  const commander_1 = require("commander");
38
39
  const node_path_1 = require("node:path");
39
40
  const display = __importStar(require("../utils/display.js"));
@@ -81,6 +82,12 @@ exports.vgCommand = new commander_1.Command("vg")
81
82
  .option("--publish", "publish safety grade to badge.rotifer.dev (requires ROTIFER_BADGE_TOKEN)")
82
83
  .action(async (pathArg, opts) => {
83
84
  const dir = (0, node_path_1.resolve)(pathArg);
85
+ if (!(0, node_fs_1.existsSync)(dir) || !(0, node_fs_1.statSync)(dir).isDirectory()) {
86
+ display.error(`No such directory: ${pathArg}`);
87
+ display.hint("vg takes the path to a gene or Skill directory, e.g. rotifer vg genes/my-gene");
88
+ process.exitCode = 1;
89
+ return;
90
+ }
84
91
  const result = (0, index_js_1.scan)(dir, opts.id, { scanAll: opts.all });
85
92
  if (opts.publish && display.isJsonMode() && result.grade !== "?" && opts.id) {
86
93
  await publishSafety(opts.id, result, index_js_1.SCANNER_VERSION);
@@ -88,7 +95,10 @@ exports.vgCommand = new commander_1.Command("vg")
88
95
  display.renderResult(result, (data) => {
89
96
  display.header("V(g) Security Scan");
90
97
  if (data.grade === "?") {
91
- display.info(`No src/ directory found — grade: ${palette_js_1.c.muted("?")}`);
98
+ display.info(`No code files found — not graded (grade: ${palette_js_1.c.muted("?")})`);
99
+ display.hint(opts.all
100
+ ? "Looked at every file under this directory; none is .ts/.js/.py/.sh code."
101
+ : "Looked in src/, or at the top level when there is no src/. Add --all to include subdirectories.");
92
102
  display.hint("Pure-prompt Skills without code receive grade \"?\".");
93
103
  return;
94
104
  }
@@ -1 +1 @@
1
- {"version":3,"file":"vg.js","sourceRoot":"","sources":["../../src/commands/vg.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"vg.js","sourceRoot":"","sources":["../../src/commands/vg.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,9 @@
1
1
  import { Command } from "commander";
2
+ /**
3
+ * The path to put after `rotifer vg` in the hints below. vg takes a path and
4
+ * resolves it from the current directory; printing the gene's name sent
5
+ * people to ./<name>, which does not exist from the workspace root.
6
+ */
7
+ export declare function vgHintPath(geneDir: string, cwd?: string): string;
2
8
  export declare const wrapCommand: Command;
3
9
  //# sourceMappingURL=wrap.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"wrap.d.ts","sourceRoot":"","sources":["../../src/commands/wrap.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA4LpC,eAAO,MAAM,WAAW,SAuUpB,CAAC"}
1
+ {"version":3,"file":"wrap.d.ts","sourceRoot":"","sources":["../../src/commands/wrap.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA4LpC;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,GAAE,MAAsB,GAAG,MAAM,CAE/E;AAED,eAAO,MAAM,WAAW,SAuUpB,CAAC"}
@@ -37,6 +37,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
37
37
  };
38
38
  Object.defineProperty(exports, "__esModule", { value: true });
39
39
  exports.wrapCommand = void 0;
40
+ exports.vgHintPath = vgHintPath;
40
41
  const commander_1 = require("commander");
41
42
  const node_fs_1 = require("node:fs");
42
43
  const node_path_1 = require("node:path");
@@ -204,6 +205,14 @@ async function resolveDomain(geneName, explicitDomain, defaultDomain, descriptio
204
205
  }
205
206
  return suggestions[0].domain;
206
207
  }
208
+ /**
209
+ * The path to put after `rotifer vg` in the hints below. vg takes a path and
210
+ * resolves it from the current directory; printing the gene's name sent
211
+ * people to ./<name>, which does not exist from the workspace root.
212
+ */
213
+ function vgHintPath(geneDir, cwd = process.cwd()) {
214
+ return (0, node_path_1.relative)(cwd, geneDir) || ".";
215
+ }
207
216
  exports.wrapCommand = new commander_1.Command("wrap")
208
217
  .description("Wrap a function or SKILL.md as a gene")
209
218
  .argument("<gene-name>", "function/gene directory name, or gene name when using --from-skill/--from-clawhub")
@@ -353,7 +362,7 @@ exports.wrapCommand = new commander_1.Command("wrap")
353
362
  console.log();
354
363
  display.hint("Next steps:");
355
364
  display.hint(" rotifer compile " + geneName + " # validate phenotype");
356
- display.hint(" rotifer vg " + geneName + " # security scan");
365
+ display.hint(" rotifer vg " + vgHintPath(geneDir) + " # security scan");
357
366
  display.hint(" rotifer arena submit " + geneName + " # compete in Arena");
358
367
  await (0, auto_publish_js_1.offerAutoPublish)({ geneName, geneDir, fidelity: (0, auto_publish_js_1.resolveWrapFidelity)(phenotype, options.fidelity) });
359
368
  return;
@@ -420,7 +429,7 @@ exports.wrapCommand = new commander_1.Command("wrap")
420
429
  console.log();
421
430
  display.hint("Next steps:");
422
431
  display.hint(" rotifer compile " + geneName + " # validate phenotype");
423
- display.hint(" rotifer vg " + geneName + " # security scan");
432
+ display.hint(" rotifer vg " + vgHintPath(geneDir) + " # security scan");
424
433
  display.hint(" rotifer arena submit " + geneName + " # compete in Arena");
425
434
  await (0, auto_publish_js_1.offerAutoPublish)({ geneName, geneDir, fidelity: (0, auto_publish_js_1.resolveWrapFidelity)(phenotype, options.fidelity) });
426
435
  return;
@@ -480,7 +489,7 @@ exports.wrapCommand = new commander_1.Command("wrap")
480
489
  display.hint("Next steps:");
481
490
  display.hint(" rotifer compile " + geneName + " # Wrapped fidelity");
482
491
  display.hint(" rotifer compile " + geneName + " --wasm <file> # Native fidelity (with WASM)");
483
- display.hint(" rotifer vg " + geneName + " # security scan");
492
+ display.hint(" rotifer vg " + vgHintPath(geneDir) + " # security scan");
484
493
  display.hint(" rotifer arena submit " + geneName + " # compete in Arena");
485
494
  // Not options.fidelity: when phenotype.json already existed on disk (a
486
495
  // re-wrap — e.g. just to change --domain), its fidelity was left as-is
@@ -1 +1 @@
1
- {"version":3,"file":"wrap.js","sourceRoot":"","sources":["../../src/commands/wrap.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,yCAAoC;AACpC,qCAAkH;AAClH,yCAAuE;AACvE,iDAAgD;AAChD,8DAAuD;AACvD,oDAA+C;AAC/C,2DAAkD;AAClD,qCAAiC;AACjC,4DAA+B;AAC/B,6DAA+C;AAC/C,oDAAwC;AACxC,kDAAgD;AAChD,8DAA8D;AAC9D,uCAAkD;AAClD,kEAA4D;AAC5D,0EAAkE;AAClE,gEAAmF;AAEnF,MAAM,WAAW,GAAG,8BAA8B,CAAC;AACnD,MAAM,gBAAgB,GAAG,qDAAqD,CAAC;AAW/E,SAAS,QAAQ,CAAC,GAAW;IAC3B,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,oBAAK,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,EAAE;YACrB,uEAAuE;YACvE,sEAAsE;YACtE,qEAAqE;YACrE,oEAAoE;YACpE,uEAAuE;YACvE,iEAAiE;YACjE,sEAAsE;YACtE,IACE,GAAG,CAAC,UAAU,KAAK,GAAG;gBACtB,GAAG,CAAC,UAAU,KAAK,GAAG;gBACtB,GAAG,CAAC,UAAU,KAAK,GAAG;gBACtB,GAAG,CAAC,UAAU,KAAK,GAAG,EACtB,CAAC;gBACD,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,gEAAgE;gBAC9E,OAAO,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,QAAS,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;YAC/D,CAAC;YACD,IAAI,GAAG,CAAC,UAAU,KAAK,GAAG,EAAE,CAAC;gBAC3B,MAAM,CAAC,IAAI,KAAK,CAAC,QAAQ,GAAG,CAAC,UAAU,QAAQ,GAAG,EAAE,CAAC,CAAC,CAAC;gBACvD,OAAO;YACT,CAAC;YACD,MAAM,MAAM,GAAa,EAAE,CAAC;YAC5B,GAAG,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAa,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;YACtD,GAAG,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;YACpD,GAAG,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QAC1B,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IACzB,CAAC,CAAC,CAAC;AACL,CAAC;AAED,KAAK,UAAU,gBAAgB,CAAC,IAAY;IAC1C,MAAM,GAAG,GAAG,MAAM,QAAQ,CAAC,GAAG,WAAW,SAAS,IAAI,EAAE,CAAC,CAAC;IAC1D,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC;IACxC,IAAI,CAAC,IAAI,CAAC,KAAK;QAAE,MAAM,IAAI,KAAK,CAAC,UAAU,IAAI,wBAAwB,CAAC,CAAC;IACzE,OAAO;QACL,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI;QACrB,WAAW,EAAE,IAAI,CAAC,KAAK,CAAC,WAAW;QACnC,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO;QAC3B,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK;QACvB,KAAK,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,KAAK,EAAE,MAAM,IAAI,SAAS,EAAE,WAAW,EAAE,IAAI,CAAC,KAAK,EAAE,WAAW,IAAI,EAAE,EAAE;QAC9F,OAAO,EAAE,IAAI,CAAC,aAAa,EAAE,OAAO,IAAI,OAAO;KAChD,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,kBAAkB,CAAC,IAAY;IAC5C,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,GAAG,gBAAgB,SAAS,IAAI,EAAE,CAAC,CAAC;IAClE,MAAM,OAAO,GAAG,IAAA,gBAAI,EAAC,IAAA,gBAAM,GAAE,EAAE,mBAAmB,IAAI,IAAI,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;IACxE,IAAA,mBAAS,EAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACxC,MAAM,OAAO,GAAG,IAAA,gBAAI,EAAC,OAAO,EAAE,GAAG,IAAI,MAAM,CAAC,CAAC;IAC7C,IAAA,uBAAa,EAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IAC/B,IAAA,iCAAY,EAAC,OAAO,EAAE,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,IAAA,gBAAI,EAAC,OAAO,EAAE,WAAW,CAAC,CAAC,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;IAC5F,MAAM,SAAS,GAAG,IAAA,gBAAI,EAAC,OAAO,EAAE,WAAW,CAAC,CAAC;IAC7C,MAAM,OAAO,GAAG,IAAA,qBAAW,EAAC,SAAS,CAAC,CAAC;IACvC,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,IAAI,IAAA,kBAAQ,EAAC,IAAA,gBAAI,EAAC,SAAS,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC;QAChF,OAAO,IAAA,gBAAI,EAAC,SAAS,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;IACrC,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,SAAS,gBAAgB,CAAC,GAAW,EAAE,IAAY;IACjD,IAAA,mBAAS,EAAC,IAAI,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACrC,KAAK,MAAM,KAAK,IAAI,IAAA,qBAAW,EAAC,GAAG,CAAC,EAAE,CAAC;QACrC,MAAM,OAAO,GAAG,IAAA,gBAAI,EAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QACjC,MAAM,QAAQ,GAAG,IAAA,gBAAI,EAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QACnC,IAAI,IAAA,kBAAQ,EAAC,OAAO,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC;YACpC,gBAAgB,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;QACtC,CAAC;aAAM,CAAC;YACN,IAAA,sBAAY,EAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;QAClC,CAAC;IACH,CAAC;AACH,CAAC;AAED,SAAS,iBAAiB,CAAC,QAAgB;IACzC,MAAM,KAAK,GAAG,IAAA,qBAAW,EAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,IAAI,EAAS,CAAC;SAC5D,IAAI,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;IAC5E,MAAM,MAAM,GAAG,IAAA,oBAAU,EAAC,IAAA,gBAAI,EAAC,QAAQ,EAAE,cAAc,CAAC,CAAC,CAAC;IAC1D,IAAI,KAAK,IAAI,MAAM;QAAE,OAAO,QAAQ,CAAC;IACrC,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,SAAS,UAAU,CAAC,GAAW;IAC7B,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,KAAK,MAAM,KAAK,IAAI,IAAA,qBAAW,EAAC,GAAG,CAAC,EAAE,CAAC;QACrC,MAAM,IAAI,GAAG,IAAA,gBAAI,EAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QAC9B,IAAI,IAAA,kBAAQ,EAAC,IAAI,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC;YACjC,KAAK,IAAI,UAAU,CAAC,IAAI,CAAC,CAAC;QAC5B,CAAC;aAAM,CAAC;YACN,KAAK,EAAE,CAAC;QACV,CAAC;IACH,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,uBAAuB,CAAC,OAAe;IAC9C,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,0BAA0B,CAAC,CAAC;IACxD,IAAI,CAAC,KAAK;QAAE,OAAO,EAAE,CAAC;IACtB,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;IACvB,MAAM,MAAM,GAAgE,EAAE,CAAC;IAC/E,MAAM,SAAS,GAAG,KAAK,CAAC,KAAK,CAAC,8BAA8B,CAAC,CAAC;IAC9D,IAAI,SAAS;QAAE,MAAM,CAAC,IAAI,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IACjD,MAAM,SAAS,GAAG,KAAK,CAAC,KAAK,CAAC,0CAA0C,CAAC,CAAC;IAC1E,IAAI,SAAS;QAAE,MAAM,CAAC,WAAW,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IACxD,MAAM,SAAS,GAAG,KAAK,CAAC,KAAK,CAAC,sBAAsB,CAAC,CAAC;IACtD,IAAI,SAAS;QAAE,MAAM,CAAC,IAAI,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAC7G,MAAM,UAAU,GAAG,KAAK,CAAC,KAAK,CAAC,6BAA6B,CAAC,CAAC;IAC9D,IAAI,UAAU;QAAE,MAAM,CAAC,WAAW,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IACtH,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,KAAK,UAAU,aAAa,CAC1B,QAAgB,EAChB,cAAkC,EAClC,aAAqB,EACrB,WAAoB;IAEpB,IAAI,cAAc,EAAE,CAAC;QACnB,IAAI,CAAC,2BAA2B,CAAC,IAAI,CAAC,cAAc,CAAC,EAAE,CAAC;YACtD,MAAM,IAAI,KAAK,CAAC,2BAA2B,cAAc,iFAAiF,CAAC,CAAC;QAC9I,CAAC;QACD,OAAO,cAAc,CAAC;IACxB,CAAC;IAED,MAAM,WAAW,GAAG,IAAA,kCAAc,EAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;IAC1D,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,aAAa,CAAC;IAEnD,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;QACzB,MAAM,IAAI,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;QACnC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,CAAC,GAAG,EAAE,CAAC;IACd,OAAO,CAAC,IAAI,CAAC,uCAAuC,CAAC,CAAC;IACtD,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;QAC3B,MAAM,KAAK,GAAG,CAAC,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,UAAU,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC;QACjE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,KAAK,EAAE,CAAC,CAAC;IACjD,CAAC,CAAC,CAAC;IACH,OAAO,CAAC,GAAG,CAAC,KAAK,WAAW,CAAC,MAAM,GAAG,CAAC,wBAAwB,CAAC,CAAC;IACjE,OAAO,CAAC,GAAG,EAAE,CAAC;IAEd,MAAM,EAAE,GAAG,IAAA,+BAAe,EAAC,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IAC7E,MAAM,MAAM,GAAG,MAAM,IAAI,OAAO,CAAS,CAAC,OAAO,EAAE,EAAE;QACnD,EAAE,CAAC,QAAQ,CAAC,aAAa,WAAW,CAAC,MAAM,GAAG,CAAC,oBAAoB,EAAE,CAAC,GAAG,EAAE,EAAE;YAC3E,EAAE,CAAC,KAAK,EAAE,CAAC;YACX,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC;QACtB,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,MAAM,GAAG,GAAG,QAAQ,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IACjC,IAAI,GAAG,IAAI,CAAC,IAAI,GAAG,IAAI,WAAW,CAAC,MAAM,EAAE,CAAC;QAC1C,OAAO,WAAW,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC;IACrC,CAAC;IACD,IAAI,MAAM,IAAI,2BAA2B,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;QACvD,OAAO,MAAM,CAAC;IAChB,CAAC;IACD,OAAO,WAAW,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;AAC/B,CAAC;AAEY,QAAA,WAAW,GAAG,IAAI,mBAAO,CAAC,MAAM,CAAC;KAC3C,WAAW,CAAC,uCAAuC,CAAC;KACpD,QAAQ,CAAC,aAAa,EAAE,mFAAmF,CAAC;KAC5G,MAAM,CAAC,uBAAuB,EAAE,wBAAwB,CAAC;KACzD,MAAM,CAAC,oBAAoB,EAAE,gBAAgB,EAAE,SAAS,CAAC;KACzD,MAAM,CAAC,qBAAqB,EAAE,sEAAsE,CAAC;KACrG,MAAM,CAAC,uBAAuB,EAAE,yEAAyE,CAAC;KAC1G,MAAM,CAAC,KAAK,EAAE,QAAgB,EAAE,OAAwF,EAAE,EAAE;IAC3H,MAAM,IAAI,GAAG,IAAA,oCAAkB,GAAE,CAAC;IAClC,MAAM,MAAM,GAAG,IAAA,sBAAU,EAAC,IAAI,CAAC,CAAC;IAEhC,IAAI,MAAc,CAAC;IACnB,IAAI,CAAC;QACH,MAAM,GAAG,MAAM,aAAa,CAAC,QAAQ,EAAE,OAAO,CAAC,MAAM,EAAE,MAAM,CAAC,cAAc,IAAI,SAAS,CAAC,CAAC;IAC7F,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,OAAO,CAAC,cAAc,CAAC;YACrB,IAAI,EAAE,OAAO;YACb,OAAO,EAAE,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,gBAAgB;YAC1D,UAAU,EAAE,gEAAgE;YAC5E,OAAO,EAAE,gCAAgC;SAC1C,CAAC,CAAC;QACH,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,OAAO,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;IAC/B,IAAI,CAAC;QACH,IAAA,wCAAgB,EAAC,QAAQ,CAAC,CAAC;IAC7B,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,OAAO,CAAC,cAAc,CAAC;YACrB,IAAI,EAAE,OAAO;YACb,OAAO,EAAE,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,mBAAmB;YAC7D,UAAU,EAAE,+EAA+E;YAC3F,OAAO,EAAE,gCAAgC;SAC1C,CAAC,CAAC;QACH,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,MAAM,OAAO,GAAG,IAAA,gBAAI,EAAC,IAAI,EAAE,MAAM,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;IAEvD,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC;QACxB,MAAM,IAAI,GAAG,OAAO,CAAC,WAAW,CAAC;QACjC,OAAO,CAAC,IAAI,CAAC,oCAAoC,IAAI,EAAE,CAAC,CAAC;QACzD,IAAI,IAAsB,CAAC;QAC3B,IAAI,CAAC;YACH,IAAI,GAAG,MAAM,gBAAgB,CAAC,IAAI,CAAC,CAAC;QACtC,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,OAAO,CAAC,cAAc,CAAC;gBACrB,IAAI,EAAE,OAAO;gBACb,OAAO,EAAE,kBAAkB,IAAI,0BAA0B;gBACzD,IAAI,EAAE,GAAG,WAAW,SAAS,IAAI,EAAE;gBACnC,UAAU,EAAE,oDAAoD;gBAChE,OAAO,EAAE,oCAAoC;aAC9C,CAAC,CAAC;YACH,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,OAAO,CAAC,IAAI,CAAC,UAAU,IAAI,CAAC,WAAW,QAAQ,IAAI,CAAC,KAAK,CAAC,MAAM,MAAM,IAAI,CAAC,OAAO,KAAK,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,cAAc,EAAE,aAAa,CAAC,CAAC;QAC3I,OAAO,CAAC,IAAI,CAAC,8BAA8B,CAAC,CAAC;QAE7C,IAAI,QAAgB,CAAC;QACrB,IAAI,CAAC;YACH,QAAQ,GAAG,MAAM,kBAAkB,CAAC,IAAI,CAAC,CAAC;QAC5C,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,OAAO,CAAC,cAAc,CAAC;gBACrB,IAAI,EAAE,OAAO;gBACb,OAAO,EAAE,6BAA6B,IAAI,GAAG;gBAC7C,IAAI,EAAE,GAAG,gBAAgB,SAAS,IAAI,EAAE;gBACxC,UAAU,EAAE,gEAAgE;gBAC5E,OAAO,EAAE,oCAAoC;aAC9C,CAAC,CAAC;YACH,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,MAAM,SAAS,GAAG,IAAA,gBAAI,EAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;QAC7C,MAAM,QAAQ,GAAG,IAAA,gBAAI,EAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;QAE9C,IAAI,CAAC,IAAA,oBAAU,EAAC,SAAS,CAAC,EAAE,CAAC;YAC3B,OAAO,CAAC,cAAc,CAAC;gBACrB,IAAI,EAAE,OAAO;gBACb,OAAO,EAAE,8CAA8C;gBACvD,IAAI,EAAE,QAAQ;gBACd,UAAU,EAAE,0CAA0C;gBACtD,OAAO,EAAE,oCAAoC;aAC9C,CAAC,CAAC;YACH,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,MAAM,YAAY,GAAG,IAAA,sBAAY,EAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QACtD,MAAM,eAAe,GAAG,uBAAuB,CAAC,YAAY,CAAC,CAAC;QAC9D,MAAM,QAAQ,GAAG,IAAA,oBAAU,EAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAA,sBAAY,EAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAEzF,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,IAAK,eAAe,CAAC,WAAsB,IAAI,GAAG,IAAI,CAAC,WAAW,QAAQ,CAAC;QAC3G,MAAM,cAAc,GAAG,MAAM,aAAa,CAAC,QAAQ,EAAE,OAAO,CAAC,MAAM,EAAE,MAAM,CAAC,cAAc,IAAI,SAAS,EAAE,WAAW,CAAC,CAAC;QAEtH,MAAM,aAAa,GAAG,iBAAiB,CAAC,QAAQ,CAAC,CAAC;QAClD,MAAM,WAAW,GAAI,eAAe,CAAC,WAAwB,IAAI,EAAE,CAAC;QAEpE,MAAM,SAAS,GAA4B;YACzC,MAAM,EAAE,cAAc;YACtB,WAAW;YACX,WAAW,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAc,EAAE;YACrG,YAAY,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE;YAC5E,YAAY,EAAE,EAAc;YAC5B,OAAO,EAAE,IAAI,CAAC,OAAO,IAAI,QAAQ,CAAC,OAAO,IAAI,OAAO;YACpD,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;YACnC,QAAQ,EAAE,aAAa;YACvB,YAAY,EAAE,MAAM;YACpB,MAAM,EAAE,SAAS;YACjB,OAAO,EAAE;gBACP,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,cAAc,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM;gBACjC,YAAY,EAAE,IAAI,CAAC,WAAW;gBAC9B,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,SAAS;gBAC/B,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK;gBACvB,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ;gBAC7B,UAAU,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;aACrC;SACF,CAAC;QAEF,IAAI,WAAW,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,aAAa,KAAK,QAAQ,EAAE,CAAC;YAClE,SAAS,CAAC,QAAQ,GAAG,QAAQ,CAAC;YAC9B,SAAS,CAAC,OAAO,GAAG;gBAClB,cAAc,EAAE,EAAE;gBAClB,YAAY,EAAE,KAAK;gBACnB,gBAAgB,EAAE,OAAO;gBACzB,iBAAiB,EAAE,EAAE;aACtB,CAAC;QACJ,CAAC;QAED,IAAI,CAAC,IAAA,oBAAU,EAAC,OAAO,CAAC,EAAE,CAAC;YACzB,IAAA,mBAAS,EAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC1C,CAAC;QAED,MAAM,MAAM,GAAG,IAAA,6BAAW,EAAC,SAAS,CAAC,CAAC;QACtC,MAAM,YAAY,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;QACxD,IAAA,uBAAa,EAAC,IAAA,gBAAI,EAAC,OAAO,EAAE,gBAAgB,CAAC,EAAE,YAAY,GAAG,IAAI,CAAC,CAAC;QAEpE,gBAAgB,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QAEpC,IAAI,IAAA,oBAAU,EAAC,IAAA,gBAAI,EAAC,OAAO,EAAE,YAAY,CAAC,CAAC,EAAE,CAAC;YAC5C,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,IAAA,sBAAY,EAAC,IAAA,gBAAI,EAAC,OAAO,EAAE,YAAY,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC;YAChF,IAAA,uBAAa,EAAC,IAAA,gBAAI,EAAC,OAAO,EAAE,sBAAsB,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;QACjG,CAAC;QAED,IAAA,uBAAa,EACX,IAAA,gBAAI,EAAC,OAAO,EAAE,qBAAqB,CAAC,EACpC,IAAI,CAAC,SAAS,CACZ;YACE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,cAAc;YAC9C,QAAQ,EAAE,SAAS,CAAC,QAAkB;YACtC,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;YACnC,WAAW,EAAE,IAAI;YACjB,cAAc,EAAE,IAAI,CAAC,OAAO;SAC7B,EACD,IAAI,EACJ,CAAC,CACF,GAAG,IAAI,CACT,CAAC;QAEF,MAAM,SAAS,GAAG,UAAU,CAAC,OAAO,CAAC,CAAC;QACtC,OAAO,CAAC,OAAO,CAAC,kBAAkB,IAAI,CAAC,WAAW,aAAa,QAAQ,GAAG,CAAC,CAAC;QAC5E,OAAO,CAAC,QAAQ,CAAC,cAAc,EAAE,cAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;QACjD,YAAY,CAAC,OAAO,CAAC,CAAC;QACtB,OAAO,CAAC,QAAQ,CAAC,QAAQ,EAAE,cAAc,CAAC,CAAC;QAC3C,OAAO,CAAC,QAAQ,CAAC,UAAU,EAAE,SAAS,CAAC,QAAkB,CAAC,CAAC;QAC3D,OAAO,CAAC,QAAQ,CAAC,OAAO,EAAE,GAAG,SAAS,WAAW,CAAC,CAAC;QACnD,OAAO,CAAC,QAAQ,CAAC,SAAS,EAAE,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,MAAM,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,cAAc,EAAE,iBAAiB,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC;QACjI,OAAO,CAAC,GAAG,EAAE,CAAC;QACd,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QAC5B,OAAO,CAAC,IAAI,CAAC,oBAAoB,GAAG,QAAQ,GAAG,6BAA6B,CAAC,CAAC;QAC9E,OAAO,CAAC,IAAI,CAAC,eAAe,GAAG,QAAQ,GAAG,6BAA6B,CAAC,CAAC;QACzE,OAAO,CAAC,IAAI,CAAC,yBAAyB,GAAG,QAAQ,GAAG,sBAAsB,CAAC,CAAC;QAC5E,MAAM,IAAA,kCAAgB,EAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAA,qCAAmB,EAAC,SAAS,EAAE,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;QAC1G,OAAO;IACT,CAAC;IAED,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;QACtB,MAAM,SAAS,GAAG,IAAA,mBAAO,EAAC,IAAI,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC;QACnD,MAAM,SAAS,GAAG,SAAS,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAA,gBAAI,EAAC,SAAS,EAAE,UAAU,CAAC,CAAC;QAC3F,IAAI,CAAC,IAAA,oBAAU,EAAC,SAAS,CAAC,EAAE,CAAC;YAC3B,OAAO,CAAC,cAAc,CAAC;gBACrB,IAAI,EAAE,OAAO;gBACb,OAAO,EAAE,oBAAoB;gBAC7B,IAAI,EAAE,SAAS;gBACf,UAAU,EAAE,oEAAoE;gBAChF,OAAO,EAAE,gCAAgC;aAC1C,CAAC,CAAC;YACH,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QACD,MAAM,OAAO,GAAG,IAAA,sBAAY,EAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QACjD,MAAM,MAAM,GAAG,IAAA,+BAAqB,EAAC,OAAO,CAAC,CAAC;QAC9C,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,OAAO,CAAC,cAAc,CAAC;gBACrB,IAAI,EAAE,OAAO;gBACb,OAAO,EAAE,wDAAwD;gBACjE,IAAI,EAAE,SAAS;gBACf,UAAU,EAAE,oDAAoD;gBAChE,OAAO,EAAE,gCAAgC;aAC1C,CAAC,CAAC;YACH,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QACD,IAAI,CAAC,IAAA,oBAAU,EAAC,OAAO,CAAC,EAAE,CAAC;YACzB,IAAA,mBAAS,EAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC1C,CAAC;QACD,MAAM,SAAS,GAA4B;YACzC,MAAM;YACN,WAAW,EAAE,MAAM,CAAC,WAAW,IAAI,GAAG,MAAM,CAAC,IAAI,wBAAwB;YACzE,WAAW,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAc,EAAE;YACrG,YAAY,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE;YAC5E,YAAY,EAAE,EAAc;YAC5B,OAAO,EAAE,OAAO;YAChB,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;YACnC,QAAQ,EAAE,OAAO,CAAC,QAAQ;YAC1B,YAAY,EAAE,MAAM;YACpB,MAAM,EAAE,OAAgB;SACzB,CAAC;QACF,IAAI,OAAO,CAAC,QAAQ,KAAK,QAAQ,EAAE,CAAC;YAClC,SAAS,CAAC,OAAO,GAAG;gBAClB,cAAc,EAAE,EAAE;gBAClB,YAAY,EAAE,KAAK;gBACnB,gBAAgB,EAAE,OAAO;gBACzB,iBAAiB,EAAE,EAAE;aACtB,CAAC;QACJ,CAAC;QACD,MAAM,MAAM,GAAG,IAAA,6BAAW,EAAC,SAAS,CAAC,CAAC;QACtC,MAAM,YAAY,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;QACxD,IAAA,uBAAa,EAAC,IAAA,gBAAI,EAAC,OAAO,EAAE,gBAAgB,CAAC,EAAE,YAAY,GAAG,IAAI,CAAC,CAAC;QACpE,IAAA,sBAAY,EAAC,SAAS,EAAE,IAAA,gBAAI,EAAC,OAAO,EAAE,UAAU,CAAC,CAAC,CAAC;QACnD,IAAA,uBAAa,EACX,IAAA,gBAAI,EAAC,OAAO,EAAE,qBAAqB,CAAC,EACpC,IAAI,CAAC,SAAS,CACZ,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,EAAE,SAAS,EAAE,IAAA,oBAAQ,EAAC,IAAI,EAAE,SAAS,CAAC,EAAE,EACzI,IAAI,EACJ,CAAC,CACF,GAAG,IAAI,CACT,CAAC;QACF,OAAO,CAAC,OAAO,CAAC,UAAU,MAAM,CAAC,IAAI,sBAAsB,QAAQ,GAAG,CAAC,CAAC;QACxE,OAAO,CAAC,QAAQ,CAAC,cAAc,EAAE,cAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;QACjD,YAAY,CAAC,OAAO,CAAC,CAAC;QACtB,OAAO,CAAC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QACnC,OAAO,CAAC,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC;QAC/C,OAAO,CAAC,GAAG,EAAE,CAAC;QACd,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QAC5B,OAAO,CAAC,IAAI,CAAC,oBAAoB,GAAG,QAAQ,GAAG,6BAA6B,CAAC,CAAC;QAC9E,OAAO,CAAC,IAAI,CAAC,eAAe,GAAG,QAAQ,GAAG,6BAA6B,CAAC,CAAC;QACzE,OAAO,CAAC,IAAI,CAAC,yBAAyB,GAAG,QAAQ,GAAG,sBAAsB,CAAC,CAAC;QAC5E,MAAM,IAAA,kCAAgB,EAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAA,qCAAmB,EAAC,SAAS,EAAE,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;QAC1G,OAAO;IACT,CAAC;IAED,IAAI,CAAC,IAAA,oBAAU,EAAC,OAAO,CAAC,EAAE,CAAC;QACzB,OAAO,CAAC,cAAc,CAAC;YACrB,IAAI,EAAE,OAAO;YACb,OAAO,EAAE,mBAAmB,QAAQ,aAAa;YACjD,IAAI,EAAE,OAAO;YACb,UAAU,EAAE,wCAAwC,OAAO,EAAE;YAC7D,OAAO,EAAE,gCAAgC;SAC1C,CAAC,CAAC;QACH,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,MAAM,aAAa,GAAG,IAAA,gBAAI,EAAC,OAAO,EAAE,gBAAgB,CAAC,CAAC;IACtD,IAAI,SAAkC,CAAC;IAEvC,IAAI,IAAA,oBAAU,EAAC,aAAa,CAAC,EAAE,CAAC;QAC9B,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,IAAA,sBAAY,EAAC,aAAa,EAAE,OAAO,CAAC,CAAC,CAAC;QAC7D,SAAS,CAAC,MAAM,GAAG,MAAM,CAAC;IAC5B,CAAC;SAAM,CAAC;QACN,SAAS,GAAG;YACV,MAAM;YACN,WAAW,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE;YAC7D,YAAY,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;YAChC,YAAY,EAAE,EAAE;YAChB,OAAO,EAAE,OAAO;YAChB,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;YACnC,QAAQ,EAAE,OAAO,CAAC,QAAQ;YAC1B,YAAY,EAAE,MAAM;SACrB,CAAC;QACF,IAAI,OAAO,CAAC,QAAQ,KAAK,QAAQ,EAAE,CAAC;YAClC,SAAS,CAAC,OAAO,GAAG;gBAClB,cAAc,EAAE,EAAE;gBAClB,YAAY,EAAE,KAAK;gBACnB,gBAAgB,EAAE,OAAO;gBACzB,iBAAiB,EAAE,EAAE;aACtB,CAAC;QACJ,CAAC;IACH,CAAC;IAED,MAAM,OAAO,GAAY,SAAS,CAAC,OAAkB,IAAI,OAAO,CAAC;IACjE,IAAI,CAAC,kCAAkC,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;QACtD,OAAO,CAAC,KAAK,CACX,2BAA2B,OAAO,gDAAgD,CACnF,CAAC;QACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,MAAM,MAAM,GAAG,IAAA,6BAAW,EAAC,SAAS,CAAC,CAAC;IACtC,MAAM,YAAY,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;IAExD,IAAA,uBAAa,EAAC,aAAa,EAAE,YAAY,GAAG,IAAI,CAAC,CAAC;IAClD,IAAA,uBAAa,EACX,IAAA,gBAAI,EAAC,OAAO,EAAE,qBAAqB,CAAC,EACpC,IAAI,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,CACpI,CAAC;IAEF,OAAO,CAAC,OAAO,CAAC,SAAS,QAAQ,wBAAwB,CAAC,CAAC;IAC3D,OAAO,CAAC,QAAQ,CAAC,cAAc,EAAE,cAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;IACjD,YAAY,CAAC,OAAO,CAAC,CAAC;IACtB,OAAO,CAAC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IACnC,OAAO,CAAC,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC;IAE/C,OAAO,CAAC,GAAG,EAAE,CAAC;IACd,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;IAC5B,OAAO,CAAC,IAAI,CAAC,oBAAoB,GAAG,QAAQ,GAAG,8BAA8B,CAAC,CAAC;IAC/E,OAAO,CAAC,IAAI,CAAC,oBAAoB,GAAG,QAAQ,GAAG,+CAA+C,CAAC,CAAC;IAChG,OAAO,CAAC,IAAI,CAAC,eAAe,GAAG,QAAQ,GAAG,gCAAgC,CAAC,CAAC;IAC5E,OAAO,CAAC,IAAI,CAAC,yBAAyB,GAAG,QAAQ,GAAG,yBAAyB,CAAC,CAAC;IAC/E,uEAAuE;IACvE,uEAAuE;IACvE,wEAAwE;IACxE,oEAAoE;IACpE,qEAAqE;IACrE,qEAAqE;IACrE,MAAM,IAAA,kCAAgB,EAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAA,qCAAmB,EAAC,SAAS,EAAE,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AAC5G,CAAC,CAAC,CAAC;AAEL,uEAAuE;AACvE,SAAS,YAAY,CAAC,OAAe;IACnC,MAAM,CAAC,GAAG,IAAA,qBAAQ,EAAC,IAAA,mBAAO,EAAC,OAAO,CAAC,EAAE,IAAA,oBAAQ,EAAC,OAAO,CAAC,CAAC,CAAC;IACxD,IAAI,IAAI,IAAI,CAAC;QAAE,OAAO,CAAC,QAAQ,CAAC,cAAc,EAAE,cAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;;QACzD,OAAO,CAAC,QAAQ,CAAC,cAAc,EAAE,oBAAoB,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;AACxE,CAAC"}
1
+ {"version":3,"file":"wrap.js","sourceRoot":"","sources":["../../src/commands/wrap.ts"],"names":[],"mappings":"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"}
@@ -7,7 +7,7 @@ import type { ScanRule } from "./types.js";
7
7
  * rulesFingerprint() per version, and the hash of literals.ts, and fails until
8
8
  * both are updated.
9
9
  */
10
- export declare const SCANNER_VERSION = "0.8.2";
10
+ export declare const SCANNER_VERSION = "0.9.0";
11
11
  export declare const SCAN_RULES: ScanRule[];
12
12
  /**
13
13
  * SHA-256 over everything in the rules table that affects a scan result: ids,
@@ -1 +1 @@
1
- {"version":3,"file":"rules.d.ts","sourceRoot":"","sources":["../../src/scanner/rules.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAE3C;;;;;;;GAOG;AACH,eAAO,MAAM,eAAe,UAAU,CAAC;AAEvC,eAAO,MAAM,UAAU,EAAE,QAAQ,EAuGhC,CAAC;AAEF;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,GAAE,QAAQ,EAAe,GAAG,MAAM,CASvE"}
1
+ {"version":3,"file":"rules.d.ts","sourceRoot":"","sources":["../../src/scanner/rules.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAE3C;;;;;;;GAOG;AACH,eAAO,MAAM,eAAe,UAAU,CAAC;AAEvC,eAAO,MAAM,UAAU,EAAE,QAAQ,EAoHhC,CAAC;AAEF;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,GAAE,QAAQ,EAAe,GAAG,MAAM,CASvE"}
@@ -11,7 +11,7 @@ const node_crypto_1 = require("node:crypto");
11
11
  * rulesFingerprint() per version, and the hash of literals.ts, and fails until
12
12
  * both are updated.
13
13
  */
14
- exports.SCANNER_VERSION = "0.8.2";
14
+ exports.SCANNER_VERSION = "0.9.0";
15
15
  exports.SCAN_RULES = [
16
16
  {
17
17
  id: "S-01",
@@ -48,6 +48,14 @@ exports.SCAN_RULES = [
48
48
  /(?<![.\w$])execSync\s*\(/,
49
49
  /(?<![.\w$])spawn\s*\(/,
50
50
  /(?<![.\w$])spawnSync\s*\(/,
51
+ // Python. .py files were collected but no pattern described Python, so
52
+ // a gene that shells out graded A. `import subprocess` is the capability
53
+ // acquisition, like require("child_process") above; the call forms catch
54
+ // `import subprocess as sp` and from-imports used through the module.
55
+ /^\s*import\s+subprocess\b/,
56
+ /^\s*from\s+subprocess\s+import\b/,
57
+ /\bsubprocess\.(?:run|call|check_call|check_output|Popen|getoutput|getstatusoutput)\s*\(/,
58
+ /\bos\.(?:system|popen|exec[lv]p?e?|spawn[lv]p?e?)\s*\(/,
51
59
  ],
52
60
  },
53
61
  {
@@ -113,6 +121,11 @@ exports.SCAN_RULES = [
113
121
  /\bfs\.mkdirSync\b/,
114
122
  /\breadFileSync\s*\(/,
115
123
  /\bwriteFileSync\s*\(/,
124
+ // Python. The builtin open() is a bare call; the lookbehind leaves out
125
+ // method calls such as window.open() and dialog.open().
126
+ /(?<![.\w$])open\s*\(/,
127
+ /\bos\.(?:remove|unlink|rmdir|removedirs)\s*\(/,
128
+ /\bshutil\.(?:rmtree|move|copy|copyfile|copytree)\s*\(/,
116
129
  ],
117
130
  },
118
131
  ];
@@ -1 +1 @@
1
- {"version":3,"file":"rules.js","sourceRoot":"","sources":["../../src/scanner/rules.ts"],"names":[],"mappings":";;;AA0HA,4CASC;AAnID,6CAAyC;AAGzC;;;;;;;GAOG;AACU,QAAA,eAAe,GAAG,OAAO,CAAC;AAE1B,QAAA,UAAU,GAAe;IACpC;QACE,EAAE,EAAE,MAAM;QACV,WAAW,EAAE,wBAAwB;QACrC,QAAQ,EAAE,UAAU;QACpB,yEAAyE;QACzE,wEAAwE;QACxE,mDAAmD;QACnD,OAAO,EAAE,MAAM;QACf,QAAQ,EAAE;YACR,aAAa;YACb,iBAAiB;YACjB,qBAAqB;SACtB;KACF;IACD;QACE,EAAE,EAAE,MAAM;QACV,WAAW,EAAE,0BAA0B;QACvC,QAAQ,EAAE,UAAU;QACpB,QAAQ,EAAE;YACR,sEAAsE;YACtE,yEAAyE;YACzE,wDAAwD;YACxD,2CAA2C;YAC3C,8BAA8B;YAC9B,iEAAiE;YACjE,0EAA0E;YAC1E,uEAAuE;YACvE,4EAA4E;YAC5E,2EAA2E;YAC3E,sEAAsE;YACtE,wEAAwE;YACxE,sBAAsB;YACtB,0BAA0B;YAC1B,uBAAuB;YACvB,2BAA2B;SAC5B;KACF;IACD;QACE,EAAE,EAAE,MAAM;QACV,WAAW,EAAE,4CAA4C;QACzD,QAAQ,EAAE,UAAU;QACpB,QAAQ,EAAE;YACR,iCAAiC;YACjC,sBAAsB;YACtB,yDAAyD;YACzD,kDAAkD;SACnD;KACF;IACD;QACE,EAAE,EAAE,MAAM;QACV,WAAW,EAAE,mCAAmC;QAChD,QAAQ,EAAE,MAAM;QAChB,QAAQ,EAAE;YACR,cAAc;YACd,sBAAsB;YACtB,uBAAuB;YACvB,2BAA2B;YAC3B,gBAAgB;SACjB;KACF;IACD;QACE,EAAE,EAAE,MAAM;QACV,WAAW,EAAE,6BAA6B;QAC1C,QAAQ,EAAE,MAAM;QAChB,QAAQ,EAAE;YACR,kBAAkB;YAClB,eAAe;YACf,iBAAiB;YACjB,uBAAuB;SACxB;KACF;IACD;QACE,EAAE,EAAE,MAAM;QACV,WAAW,EAAE,gCAAgC;QAC7C,QAAQ,EAAE,MAAM;QAChB,QAAQ,EAAE;YACR,sBAAsB;YACtB,oBAAoB;YACpB,wBAAwB;YACxB,8BAA8B;YAC9B,qBAAqB;SACtB;KACF;IACD;QACE,EAAE,EAAE,MAAM;QACV,WAAW,EAAE,wBAAwB;QACrC,QAAQ,EAAE,QAAQ;QAClB,QAAQ,EAAE;YACR,kBAAkB;YAClB,sBAAsB;YACtB,mBAAmB;YACnB,uBAAuB;YACvB,gBAAgB;YAChB,oBAAoB;YACpB,gBAAgB;YAChB,YAAY;YACZ,eAAe;YACf,mBAAmB;YACnB,qBAAqB;YACrB,sBAAsB;SACvB;KACF;CACF,CAAC;AAEF;;;GAGG;AACH,SAAgB,gBAAgB,CAAC,QAAoB,kBAAU;IAC7D,MAAM,SAAS,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QAClC,EAAE,EAAE,CAAC,CAAC,EAAE;QACR,WAAW,EAAE,CAAC,CAAC,WAAW;QAC1B,QAAQ,EAAE,CAAC,CAAC,QAAQ;QACpB,OAAO,EAAE,CAAC,CAAC,OAAO,IAAI,MAAM;QAC5B,QAAQ,EAAE,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC;KACrD,CAAC,CAAC,CAAC;IACJ,OAAO,IAAA,wBAAU,EAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAC9E,CAAC"}
1
+ {"version":3,"file":"rules.js","sourceRoot":"","sources":["../../src/scanner/rules.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"scanner.d.ts","sourceRoot":"","sources":["../../src/scanner/scanner.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AA+B7D,wBAAgB,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,EAAE,CA6BrE;AAED,wBAAgB,YAAY,CAAC,QAAQ,EAAE,OAAO,EAAE,GAAG,KAAK,CAQvD;AAED,MAAM,WAAW,WAAW;IAC1B,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,wBAAgB,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,WAAW,GAAG,UAAU,CAkCrF"}
1
+ {"version":3,"file":"scanner.d.ts","sourceRoot":"","sources":["../../src/scanner/scanner.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAqD7D,wBAAgB,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,EAAE,CA6BrE;AAED,wBAAgB,YAAY,CAAC,QAAQ,EAAE,OAAO,EAAE,GAAG,KAAK,CAQvD;AAED,MAAM,WAAW,WAAW;IAC1B,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,wBAAgB,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,WAAW,GAAG,UAAU,CAoCrF"}
@@ -34,6 +34,28 @@ function collectCodeFiles(dir) {
34
34
  function hasSrcDirectory(dir) {
35
35
  return (0, node_fs_1.existsSync)((0, node_path_1.join)(dir, "src"));
36
36
  }
37
+ /** Code files directly in `dir`, not in its subdirectories. */
38
+ function collectTopLevelCodeFiles(dir) {
39
+ return (0, node_fs_1.readdirSync)(dir)
40
+ .map((entry) => (0, node_path_1.join)(dir, entry))
41
+ .filter((full) => (0, node_fs_1.statSync)(full).isFile() && CODE_EXTENSIONS.has((0, node_path_1.extname)(full)));
42
+ }
43
+ /**
44
+ * Which files a scan reads:
45
+ * - `--all`: every code file under `dir`.
46
+ * - otherwise src/ when it exists — a Skill's code lives there;
47
+ * - otherwise the code files at the top level of `dir`, not below it. Genes
48
+ * keep index.ts at the gene root (every Genesis gene does), and reading
49
+ * only src/ left all of them ungraded. Subdirectories stay out so that
50
+ * test fixtures and vendored files are not graded as the gene.
51
+ */
52
+ function selectFiles(dir, shouldScanAll) {
53
+ if (shouldScanAll)
54
+ return collectCodeFiles(dir);
55
+ if (hasSrcDirectory(dir))
56
+ return collectCodeFiles((0, node_path_1.join)(dir, "src"));
57
+ return collectTopLevelCodeFiles(dir);
58
+ }
37
59
  function scanFile(filePath, rootDir) {
38
60
  const content = (0, node_fs_1.readFileSync)(filePath, "utf-8");
39
61
  const lines = content.split("\n");
@@ -75,7 +97,11 @@ function computeGrade(findings) {
75
97
  }
76
98
  function scan(dir, skillId, options) {
77
99
  const shouldScanAll = options?.scanAll ?? false;
78
- if (!shouldScanAll && !hasSrcDirectory(dir)) {
100
+ const files = selectFiles(dir, shouldScanAll);
101
+ // No code read, no grade. computeGrade([]) is "A", and `--all` over a
102
+ // directory without code used to report exactly that: a clean result for
103
+ // code that was never looked at.
104
+ if (files.length === 0) {
79
105
  return {
80
106
  skill_id: skillId ?? dir,
81
107
  scanned_at: new Date().toISOString(),
@@ -84,8 +110,6 @@ function scan(dir, skillId, options) {
84
110
  stats: { files_scanned: 0, lines_of_code: 0 },
85
111
  };
86
112
  }
87
- const scanDir = shouldScanAll ? dir : (0, node_path_1.join)(dir, "src");
88
- const files = collectCodeFiles(scanDir);
89
113
  const allFindings = [];
90
114
  let totalLines = 0;
91
115
  for (const file of files) {
@@ -1 +1 @@
1
- {"version":3,"file":"scanner.js","sourceRoot":"","sources":["../../src/scanner/scanner.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"scanner.js","sourceRoot":"","sources":["../../src/scanner/scanner.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,476 @@
1
+ import { readdirSync, readFileSync, existsSync } from "node:fs";
2
+ import { join } from "node:path";
3
+ import { homedir } from "node:os";
4
+
5
+ interface HealthInput {
6
+ genesDir?: string;
7
+ verbose?: boolean;
8
+ }
9
+
10
+ interface DimensionResult {
11
+ name: string;
12
+ score: number;
13
+ findings: string[];
14
+ suggestions: string[];
15
+ }
16
+
17
+ interface HealthOutput {
18
+ summary: string;
19
+ dimensions: DimensionResult[];
20
+ overallScore: number;
21
+ geneCount: number;
22
+ recommendations: string[];
23
+ }
24
+
25
+ interface Phenotype {
26
+ name?: string;
27
+ version?: string;
28
+ domain?: string;
29
+ fidelity?: string;
30
+ description?: string;
31
+ author?: string;
32
+ tags?: string[];
33
+ dependencies?: string[];
34
+ inputSchema?: { properties?: Record<string, unknown> };
35
+ outputSchema?: { properties?: Record<string, unknown> };
36
+ }
37
+
38
+ interface RunLogEntry {
39
+ success: boolean;
40
+ durationMs: number;
41
+ }
42
+
43
+ function loadPhenotypes(genesDir: string): Map<string, Phenotype> {
44
+ const result = new Map<string, Phenotype>();
45
+ if (!existsSync(genesDir)) return result;
46
+
47
+ for (const entry of readdirSync(genesDir, { withFileTypes: true })) {
48
+ if (!entry.isDirectory()) continue;
49
+ const phenoPath = join(genesDir, entry.name, "phenotype.json");
50
+ if (!existsSync(phenoPath)) continue;
51
+ try {
52
+ const raw = readFileSync(phenoPath, "utf-8");
53
+ result.set(entry.name, JSON.parse(raw) as Phenotype);
54
+ } catch {
55
+ result.set(entry.name, {});
56
+ }
57
+ }
58
+ return result;
59
+ }
60
+
61
+ function hasImplementation(genesDir: string, geneName: string): boolean {
62
+ return (
63
+ existsSync(join(genesDir, geneName, "index.ts")) ||
64
+ existsSync(join(genesDir, geneName, "index.js"))
65
+ );
66
+ }
67
+
68
+ function readImplementation(genesDir: string, geneName: string): string | null {
69
+ for (const file of ["index.ts", "index.js"]) {
70
+ const p = join(genesDir, geneName, file);
71
+ if (existsSync(p)) {
72
+ try {
73
+ return readFileSync(p, "utf-8");
74
+ } catch {
75
+ return null;
76
+ }
77
+ }
78
+ }
79
+ return null;
80
+ }
81
+
82
+ function analyzeCapabilityDistribution(phenotypes: Map<string, Phenotype>): DimensionResult {
83
+ const domainCounts = new Map<string, number>();
84
+ const findings: string[] = [];
85
+ const suggestions: string[] = [];
86
+
87
+ for (const [, pheno] of phenotypes) {
88
+ const domain = pheno.domain ?? "unknown";
89
+ domainCounts.set(domain, (domainCounts.get(domain) ?? 0) + 1);
90
+ }
91
+
92
+ const total = phenotypes.size;
93
+ const domainCount = domainCounts.size;
94
+ findings.push(`${total} genes across ${domainCount} domains`);
95
+
96
+ let maxRatio = 0;
97
+ let dominantDomain = "";
98
+ for (const [domain, count] of domainCounts) {
99
+ const ratio = total > 0 ? count / total : 0;
100
+ findings.push(`${domain}: ${count} genes (${(ratio * 100).toFixed(1)}%)`);
101
+ if (ratio > maxRatio) {
102
+ maxRatio = ratio;
103
+ dominantDomain = domain;
104
+ }
105
+ }
106
+
107
+ let score = 1.0;
108
+ if (maxRatio > 0.6) {
109
+ score = Math.max(0, 1.0 - (maxRatio - 0.6) * 2.5);
110
+ suggestions.push(
111
+ `Domain "${dominantDomain}" holds ${(maxRatio * 100).toFixed(1)}% of genes — capability imbalance (偏科). Diversify into underrepresented domains.`
112
+ );
113
+ }
114
+ if (domainCount < 3 && total > 5) {
115
+ score = Math.min(score, 0.5);
116
+ suggestions.push("Fewer than 3 domains detected. Consider expanding capability coverage.");
117
+ }
118
+
119
+ return { name: "Capability Distribution", score, findings, suggestions };
120
+ }
121
+
122
+ function analyzeProtocolCompliance(genesDir: string, phenotypes: Map<string, Phenotype>): DimensionResult {
123
+ const findings: string[] = [];
124
+ const suggestions: string[] = [];
125
+ let totalScore = 0;
126
+
127
+ for (const [name, pheno] of phenotypes) {
128
+ let geneScore = 0;
129
+ const missing: string[] = [];
130
+
131
+ if (pheno.description) geneScore += 0.1;
132
+ else missing.push("description");
133
+
134
+ if (pheno.inputSchema?.properties && Object.keys(pheno.inputSchema.properties).length > 0) geneScore += 0.15;
135
+ else missing.push("inputSchema.properties");
136
+
137
+ if (pheno.outputSchema?.properties && Object.keys(pheno.outputSchema.properties).length > 0) geneScore += 0.15;
138
+ else missing.push("outputSchema.properties");
139
+
140
+ if (pheno.tags && pheno.tags.length > 0) geneScore += 0.1;
141
+ else missing.push("tags");
142
+
143
+ if (pheno.author) geneScore += 0.05;
144
+ else missing.push("author");
145
+
146
+ if (pheno.version) geneScore += 0.05;
147
+ else missing.push("version");
148
+
149
+ if (pheno.fidelity === "Native" && !hasImplementation(genesDir, name)) {
150
+ findings.push(`${name}: declares Native fidelity but has no index.ts/index.js`);
151
+ geneScore = Math.max(0, geneScore - 0.2);
152
+ }
153
+
154
+ if (missing.length > 0) {
155
+ findings.push(`${name}: missing ${missing.join(", ")}`);
156
+ }
157
+
158
+ totalScore += geneScore / 0.6;
159
+ }
160
+
161
+ const score = phenotypes.size > 0 ? Math.min(1, totalScore / phenotypes.size) : 0;
162
+
163
+ if (findings.length > 0) {
164
+ suggestions.push(`${findings.length} compliance issues found. Run with verbose=true for per-gene details.`);
165
+ }
166
+
167
+ return { name: "Protocol Compliance", score, findings, suggestions };
168
+ }
169
+
170
+ function analyzeSecurityVulnerabilities(genesDir: string, phenotypes: Map<string, Phenotype>): DimensionResult {
171
+ const findings: string[] = [];
172
+ const suggestions: string[] = [];
173
+
174
+ const dangerousPatterns: Array<{ pattern: RegExp; label: string }> = [
175
+ { pattern: /eval\s*\(/, label: "eval()" },
176
+ { pattern: /new\s+Function\s*\(/, label: "new Function()" },
177
+ { pattern: /child_process/, label: "child_process" },
178
+ { pattern: /sk-[a-zA-Z0-9]{20,}/, label: "hardcoded OpenAI key" },
179
+ { pattern: /ghp_[a-zA-Z0-9]{36}/, label: "hardcoded GitHub PAT" },
180
+ { pattern: /glpat-[a-zA-Z0-9]{20}/, label: "hardcoded GitLab PAT" },
181
+ { pattern: /AKIA[A-Z0-9]{16}/, label: "hardcoded AWS access key" },
182
+ ];
183
+
184
+ let vulnerableCount = 0;
185
+
186
+ for (const [name] of phenotypes) {
187
+ const source = readImplementation(genesDir, name);
188
+ if (!source) continue;
189
+
190
+ const geneIssues: string[] = [];
191
+ for (const { pattern, label } of dangerousPatterns) {
192
+ if (pattern.test(source)) {
193
+ geneIssues.push(label);
194
+ }
195
+ }
196
+
197
+ if (geneIssues.length > 0) {
198
+ vulnerableCount++;
199
+ findings.push(`${name}: detected ${geneIssues.join(", ")}`);
200
+ suggestions.push(`${name}: remove or sandbox dangerous patterns (${geneIssues.join(", ")})`);
201
+ }
202
+ }
203
+
204
+ const genesWithSource = [...phenotypes.keys()].filter(
205
+ (n) => readImplementation(genesDir, n) !== null
206
+ ).length;
207
+ const score = genesWithSource > 0 ? 1.0 - vulnerableCount / genesWithSource : 1.0;
208
+
209
+ return { name: "Security Vulnerabilities", score: Math.max(0, score), findings, suggestions };
210
+ }
211
+
212
+ function analyzeQualityScore(genesDir: string, phenotypes: Map<string, Phenotype>): DimensionResult {
213
+ const findings: string[] = [];
214
+ const suggestions: string[] = [];
215
+ let totalQuality = 0;
216
+
217
+ const genesParent = join(genesDir, "..");
218
+
219
+ for (const [name, pheno] of phenotypes) {
220
+ let q = 0;
221
+ const missing: string[] = [];
222
+
223
+ if (pheno.description) q += 0.1;
224
+ else missing.push("description");
225
+
226
+ if (pheno.tags && pheno.tags.length > 0) q += 0.1;
227
+ else missing.push("tags");
228
+
229
+ const hasInputProps = pheno.inputSchema?.properties && Object.keys(pheno.inputSchema.properties).length > 0;
230
+ const hasOutputProps = pheno.outputSchema?.properties && Object.keys(pheno.outputSchema.properties).length > 0;
231
+ if (hasInputProps && hasOutputProps) q += 0.3;
232
+ else missing.push("complete schema");
233
+
234
+ if (hasImplementation(genesDir, name)) q += 0.3;
235
+ else missing.push("express() implementation");
236
+
237
+ const testPath = join(genesParent, "tests", "unit", `${name}.test.ts`);
238
+ if (existsSync(testPath)) q += 0.2;
239
+ else missing.push("unit tests");
240
+
241
+ if (missing.length > 0) {
242
+ findings.push(`${name} (${q.toFixed(2)}): missing ${missing.join(", ")}`);
243
+ }
244
+
245
+ totalQuality += q;
246
+ }
247
+
248
+ const score = phenotypes.size > 0 ? totalQuality / phenotypes.size : 0;
249
+
250
+ if (score < 0.7) {
251
+ suggestions.push("Average quality below 0.7. Prioritize adding tests and completing schemas.");
252
+ }
253
+
254
+ return { name: "Quality Score", score: Math.min(1, score), findings, suggestions };
255
+ }
256
+
257
+ function analyzeEvolutionSuggestions(genesDir: string, phenotypes: Map<string, Phenotype>): DimensionResult {
258
+ const findings: string[] = [];
259
+ const suggestions: string[] = [];
260
+ let actionable = 0;
261
+ let total = 0;
262
+
263
+ for (const [name, pheno] of phenotypes) {
264
+ total++;
265
+ let needsWork = false;
266
+
267
+ if (pheno.fidelity === "Wrapped") {
268
+ suggestions.push(`${name}: Wrapped → consider upgrading to Hybrid or Native for better portability`);
269
+ needsWork = true;
270
+ }
271
+
272
+ const hasInputProps = pheno.inputSchema?.properties && Object.keys(pheno.inputSchema.properties).length > 0;
273
+ const hasOutputProps = pheno.outputSchema?.properties && Object.keys(pheno.outputSchema.properties).length > 0;
274
+ if (!hasInputProps || !hasOutputProps) {
275
+ suggestions.push(`${name}: incomplete schema — add inputSchema/outputSchema properties`);
276
+ needsWork = true;
277
+ }
278
+
279
+ if (!hasImplementation(genesDir, name)) {
280
+ suggestions.push(`${name}: no express() implementation — add index.ts`);
281
+ needsWork = true;
282
+ }
283
+
284
+ if (needsWork) actionable++;
285
+ }
286
+
287
+ findings.push(`${actionable}/${total} genes have evolution opportunities`);
288
+ const score = total > 0 ? 1.0 - actionable / total : 1.0;
289
+
290
+ return { name: "Evolution Suggestions", score: Math.max(0, score), findings, suggestions };
291
+ }
292
+
293
+ function analyzeRuntimeHealth(phenotypes: Map<string, Phenotype>): DimensionResult {
294
+ const findings: string[] = [];
295
+ const suggestions: string[] = [];
296
+ const logDir = join(homedir(), ".rotifer", "run-logs");
297
+ let totalScore = 0;
298
+ let genesWithLogs = 0;
299
+
300
+ for (const [name] of phenotypes) {
301
+ const logPath = join(logDir, `${name}.jsonl`);
302
+ if (!existsSync(logPath)) continue;
303
+
304
+ genesWithLogs++;
305
+ try {
306
+ const lines = readFileSync(logPath, "utf-8")
307
+ .split("\n")
308
+ .filter((l) => l.trim().length > 0);
309
+
310
+ let successes = 0;
311
+ let totalDuration = 0;
312
+ let parsed = 0;
313
+
314
+ for (const line of lines) {
315
+ try {
316
+ const entry = JSON.parse(line) as RunLogEntry;
317
+ parsed++;
318
+ if (entry.success) successes++;
319
+ totalDuration += entry.durationMs ?? 0;
320
+ } catch {
321
+ /* skip malformed lines */
322
+ }
323
+ }
324
+
325
+ if (parsed > 0) {
326
+ const successRate = successes / parsed;
327
+ const avgDuration = totalDuration / parsed;
328
+ findings.push(`${name}: ${parsed} runs, ${(successRate * 100).toFixed(1)}% success, avg ${avgDuration.toFixed(0)}ms`);
329
+ totalScore += successRate;
330
+ if (successRate < 0.8) {
331
+ suggestions.push(`${name}: success rate ${(successRate * 100).toFixed(1)}% — investigate failures`);
332
+ }
333
+ }
334
+ } catch {
335
+ findings.push(`${name}: log file unreadable`);
336
+ }
337
+ }
338
+
339
+ const score = genesWithLogs > 0 ? totalScore / genesWithLogs : 1.0;
340
+
341
+ if (genesWithLogs === 0) {
342
+ findings.push("No runtime logs found — genes have not been executed yet");
343
+ }
344
+
345
+ return { name: "Runtime Health", score: Math.max(0, Math.min(1, score)), findings, suggestions };
346
+ }
347
+
348
+ function analyzeDependencyChains(genesDir: string, phenotypes: Map<string, Phenotype>): DimensionResult {
349
+ const findings: string[] = [];
350
+ const suggestions: string[] = [];
351
+ let brokenDeps = 0;
352
+ let totalDeps = 0;
353
+
354
+ for (const [name, pheno] of phenotypes) {
355
+ const deps = pheno.dependencies ?? [];
356
+ for (const dep of deps) {
357
+ totalDeps++;
358
+ if (!phenotypes.has(dep) && !existsSync(join(genesDir, dep))) {
359
+ brokenDeps++;
360
+ findings.push(`${name} → ${dep}: dependency not found`);
361
+ suggestions.push(`${name}: install or create missing dependency "${dep}"`);
362
+ }
363
+ }
364
+ }
365
+
366
+ if (totalDeps === 0) {
367
+ findings.push("No inter-gene dependencies declared");
368
+ } else {
369
+ findings.push(`${totalDeps} dependencies checked, ${brokenDeps} broken`);
370
+ }
371
+
372
+ const score = totalDeps > 0 ? 1.0 - brokenDeps / totalDeps : 1.0;
373
+
374
+ return { name: "Dependency Chain Health", score: Math.max(0, score), findings, suggestions };
375
+ }
376
+
377
+ export function express(input: HealthInput): HealthOutput {
378
+ const genesDir = input.genesDir ?? "./genes";
379
+ const phenotypes = loadPhenotypes(genesDir);
380
+ const geneCount = phenotypes.size;
381
+
382
+ const dimensions: DimensionResult[] = [
383
+ analyzeCapabilityDistribution(phenotypes),
384
+ analyzeProtocolCompliance(genesDir, phenotypes),
385
+ analyzeSecurityVulnerabilities(genesDir, phenotypes),
386
+ analyzeQualityScore(genesDir, phenotypes),
387
+ analyzeEvolutionSuggestions(genesDir, phenotypes),
388
+ analyzeRuntimeHealth(phenotypes),
389
+ analyzeDependencyChains(genesDir, phenotypes),
390
+ ];
391
+
392
+ const overallScore = dimensions.reduce((sum, d) => sum + d.score, 0) / dimensions.length;
393
+
394
+ const ranked = [...dimensions].sort((a, b) => a.score - b.score);
395
+ const recommendations: string[] = [];
396
+ for (const dim of ranked.slice(0, 3)) {
397
+ if (dim.score < 0.9 && dim.suggestions.length > 0) {
398
+ recommendations.push(`[${dim.name}] ${dim.suggestions[0]}`);
399
+ }
400
+ }
401
+
402
+ if (!input.verbose) {
403
+ for (const dim of dimensions) {
404
+ if (dim.findings.length > 5) dim.findings = dim.findings.slice(0, 5);
405
+ if (dim.suggestions.length > 3) dim.suggestions = dim.suggestions.slice(0, 3);
406
+ }
407
+ }
408
+
409
+ const grade =
410
+ overallScore >= 0.9 ? "Excellent" :
411
+ overallScore >= 0.7 ? "Good" :
412
+ overallScore >= 0.5 ? "Fair" :
413
+ "Needs Attention";
414
+
415
+ const summary = `Gene Library Health: ${grade} (${(overallScore * 100).toFixed(1)}%) — ${geneCount} genes scanned across 7 dimensions`;
416
+
417
+ return { summary, dimensions, overallScore, geneCount, recommendations };
418
+ }
419
+
420
+ export function display(output: HealthOutput, options?: { verbose?: boolean }): void {
421
+ const RESET = "\x1b[0m";
422
+ const BOLD = "\x1b[1m";
423
+ const DIM = "\x1b[2m";
424
+ const RED = "\x1b[31m";
425
+ const GREEN = "\x1b[32m";
426
+ const YELLOW = "\x1b[33m";
427
+ const BLUE = "\x1b[34m";
428
+ const CYAN = "\x1b[36m";
429
+
430
+ const bar = (score: number, width = 20): string => {
431
+ const clamped = Math.max(0, Math.min(1, score));
432
+ const filled = Math.round(clamped * width);
433
+ return `${GREEN}${"█".repeat(filled)}${DIM}${"░".repeat(Math.max(0, width - filled))}${RESET}`;
434
+ };
435
+
436
+ const dimIcon = (score: number): string => {
437
+ if (score > 0.7) return `${GREEN}✓${RESET}`;
438
+ if (score > 0.4) return `${YELLOW}!${RESET}`;
439
+ return `${RED}✗${RESET}`;
440
+ };
441
+
442
+ console.log(`${BOLD}${CYAN}Gene Health Report${RESET}`);
443
+ console.log(`${DIM}${output.summary}${RESET}`);
444
+ console.log();
445
+ console.log(
446
+ `${BOLD}Overall${RESET} ${bar(output.overallScore)} ${BLUE}${(output.overallScore * 100).toFixed(1)}%${RESET} ${DIM}(${output.geneCount} genes)${RESET}`
447
+ );
448
+ console.log();
449
+
450
+ const maxNameLen = Math.max(...output.dimensions.map((d) => d.name.length));
451
+
452
+ for (const d of output.dimensions) {
453
+ const icon = dimIcon(d.score);
454
+ const padded = d.name.padEnd(maxNameLen);
455
+ const pct = `${(d.score * 100).toFixed(0)}%`.padStart(4);
456
+ console.log(
457
+ `${icon} ${BOLD}${padded}${RESET} ${bar(d.score)} ${CYAN}${pct}${RESET}`
458
+ );
459
+ if (options?.verbose && d.findings.length > 0) {
460
+ console.log(` ${DIM}Findings:${RESET}`);
461
+ for (const f of d.findings) {
462
+ console.log(` ${DIM}•${RESET} ${f}`);
463
+ }
464
+ }
465
+ }
466
+
467
+ console.log();
468
+ console.log(`${BOLD}Recommendations${RESET}`);
469
+ if (output.recommendations.length === 0) {
470
+ console.log(` ${DIM}(none)${RESET}`);
471
+ } else {
472
+ for (const r of output.recommendations) {
473
+ console.log(` ${YELLOW}→${RESET} ${r}`);
474
+ }
475
+ }
476
+ }
@@ -0,0 +1,47 @@
1
+ {
2
+ "name": "gene-health-scanner",
3
+ "version": "0.2.0",
4
+ "domain": "meta.diagnostics",
5
+ "fidelity": "Native",
6
+ "description": "Seven-dimensional gene library health scanner — diagnoses capability distribution, protocol compliance, security, quality, evolution paths, runtime health, and dependency chains",
7
+ "author": "Rotifer Protocol Contributors",
8
+ "license": "Apache-2.0",
9
+ "inputSchema": {
10
+ "type": "object",
11
+ "properties": {
12
+ "genesDir": { "type": "string", "description": "Path to genes directory (defaults to ./genes)" },
13
+ "verbose": { "type": "boolean", "default": false, "description": "Output detailed Level 3 report" }
14
+ }
15
+ },
16
+ "outputSchema": {
17
+ "type": "object",
18
+ "properties": {
19
+ "summary": { "type": "string" },
20
+ "dimensions": {
21
+ "type": "array",
22
+ "items": {
23
+ "type": "object",
24
+ "properties": {
25
+ "name": { "type": "string" },
26
+ "score": { "type": "number" },
27
+ "findings": { "type": "array", "items": { "type": "string" } },
28
+ "suggestions": { "type": "array", "items": { "type": "string" } }
29
+ }
30
+ }
31
+ },
32
+ "overallScore": { "type": "number" },
33
+ "geneCount": { "type": "integer" },
34
+ "recommendations": { "type": "array", "items": { "type": "string" } }
35
+ },
36
+ "required": ["summary", "dimensions", "overallScore"]
37
+ },
38
+ "displayField": "summary",
39
+ "tags": ["diagnostics", "quality", "meta", "gene-library", "health-check"],
40
+ "dependencies": [],
41
+ "transparency": "Open",
42
+ "semanticRequirements": {
43
+ "timeModel": "Sync",
44
+ "concurrencyModel": "Stateless",
45
+ "failureSemantics": "Retry"
46
+ }
47
+ }
@@ -18,8 +18,10 @@ interface SearchOutput {
18
18
  /**
19
19
  * Genesis Gene: Web Search
20
20
  *
21
- * Full-featured web search gene. In MVP, returns simulated results.
22
- * Production binding would connect to a real search API.
21
+ * Demo of a search gene's shape: it returns simulated example.com results and
22
+ * searches nothing. The phenotype description, the README and every result
23
+ * title say so (#452), so neither a person nor an agent reading the output can
24
+ * mistake it for a live search.
23
25
  */
24
26
  export function express(input: SearchInput): SearchOutput {
25
27
  const start = Date.now();
@@ -45,7 +47,7 @@ export function express(input: SearchInput): SearchOutput {
45
47
  : 5;
46
48
 
47
49
  const results: SearchResult[] = Array.from({ length: max }, (_, i) => ({
48
- title: `Result ${i + 1} for "${query}"`,
50
+ title: `[Simulated] Result ${i + 1} for "${query}"`,
49
51
  url: `https://example.com/search?q=${encodeURIComponent(query)}&p=${i + 1}`,
50
52
  snippet: `This is a simulated search result #${i + 1} for the query "${query}". In production, this gene binds to a real search provider.`,
51
53
  }));
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "domain": "search",
3
- "description": "Search the web and return structured results with titles, URLs, and snippets. Supports configurable result count.",
3
+ "description": "Demo gene: returns simulated search results (example.com URLs), not a live web search. Shows the shape of a search gene: structured results with titles, URLs and snippets, and a configurable result count.",
4
4
  "inputSchema": {
5
5
  "type": "object",
6
6
  "properties": {
@@ -48,7 +48,7 @@
48
48
  }
49
49
  },
50
50
  "dependencies": [],
51
- "version": "0.2.0",
51
+ "version": "0.2.1",
52
52
  "author": "rotifer-genesis",
53
53
  "fidelity": "Native",
54
54
  "transparency": "Open",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "domain": "search",
3
- "description": "Lightweight web search returning a single best-match answer with source attribution.",
3
+ "description": "Demo gene: returns one simulated answer (example.com source), not a live web search. Shows the shape of a lightweight search gene with source attribution.",
4
4
  "inputSchema": {
5
5
  "type": "object",
6
6
  "properties": {
@@ -25,7 +25,7 @@
25
25
  }
26
26
  },
27
27
  "dependencies": [],
28
- "version": "0.2.0",
28
+ "version": "0.2.1",
29
29
  "author": "rotifer-genesis",
30
30
  "fidelity": "Native",
31
31
  "transparency": "Open",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rotifer/playground",
3
- "version": "0.30.2",
3
+ "version": "0.30.3",
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",
@@ -92,10 +92,10 @@
92
92
  },
93
93
  "optionalDependencies": {
94
94
  "@rolldown/binding-linux-x64-gnu": "1.1.1",
95
- "@rotifer/playground-darwin-arm64": "0.30.2",
96
- "@rotifer/playground-darwin-x64": "0.30.2",
97
- "@rotifer/playground-linux-x64-gnu": "0.30.2",
98
- "@rotifer/playground-win32-x64-msvc": "0.30.2"
95
+ "@rotifer/playground-darwin-arm64": "0.30.3",
96
+ "@rotifer/playground-darwin-x64": "0.30.3",
97
+ "@rotifer/playground-linux-x64-gnu": "0.30.3",
98
+ "@rotifer/playground-win32-x64-msvc": "0.30.3"
99
99
  },
100
100
  "engines": {
101
101
  "node": ">=22.18.0"