@rotifer/playground 0.30.1 → 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 +17 -0
- package/README.md +5 -5
- package/dist/cloud/invocation.d.ts +11 -6
- package/dist/cloud/invocation.d.ts.map +1 -1
- package/dist/cloud/invocation.js +17 -7
- package/dist/cloud/invocation.js.map +1 -1
- package/dist/commands/vg.d.ts.map +1 -1
- package/dist/commands/vg.js +11 -1
- package/dist/commands/vg.js.map +1 -1
- package/dist/commands/wrap.d.ts +6 -0
- package/dist/commands/wrap.d.ts.map +1 -1
- package/dist/commands/wrap.js +12 -3
- package/dist/commands/wrap.js.map +1 -1
- package/dist/scanner/rules.d.ts +1 -1
- package/dist/scanner/rules.d.ts.map +1 -1
- package/dist/scanner/rules.js +14 -1
- package/dist/scanner/rules.js.map +1 -1
- package/dist/scanner/scanner.d.ts.map +1 -1
- package/dist/scanner/scanner.js +27 -3
- package/dist/scanner/scanner.js.map +1 -1
- package/dist/telemetry/config.d.ts +10 -0
- package/dist/telemetry/config.d.ts.map +1 -1
- package/dist/telemetry/config.js +24 -0
- package/dist/telemetry/config.js.map +1 -1
- package/genes/gene-health-scanner/index.ts +476 -0
- package/genes/gene-health-scanner/phenotype.json +47 -0
- package/genes/genesis-web-search/index.ts +5 -3
- package/genes/genesis-web-search/phenotype.json +2 -2
- package/genes/genesis-web-search-lite/phenotype.json +2 -2
- package/package.json +5 -5
package/CHANGELOG.md
CHANGED
|
@@ -5,6 +5,23 @@ 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
|
+
|
|
17
|
+
## [0.30.2](https://github.com/rotifer-protocol/rotifer-playground/compare/v0.30.1...v0.30.2) (2026-10-26)
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
### Bug Fixes
|
|
21
|
+
|
|
22
|
+
* **supabase:** let seasons roll over, and report failing pg_cron jobs ([#461](https://github.com/rotifer-protocol/rotifer-playground/issues/461)) ([124dd73](https://github.com/rotifer-protocol/rotifer-playground/commit/124dd73624b56d31b79c226067b916d8678955ae))
|
|
23
|
+
* **telemetry:** make `rotifer telemetry off` stop the invocation report too ([#463](https://github.com/rotifer-protocol/rotifer-playground/issues/463)) ([04dc60f](https://github.com/rotifer-protocol/rotifer-playground/commit/04dc60f634109968c68367cf2d4b35534d312de4))
|
|
24
|
+
|
|
8
25
|
## [0.30.1](https://github.com/rotifer-protocol/rotifer-playground/compare/v0.30.0...v0.30.1) (2026-10-24)
|
|
9
26
|
|
|
10
27
|
|
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
|
|
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
|
-
|
|
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 |
|
|
236
|
-
| `genesis-web-search-lite` | search | Native |
|
|
237
|
-
| `genesis-file-read` | filesystem |
|
|
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
|
|
|
@@ -15,12 +15,17 @@ export declare const FLUSH_TIMEOUT_MS = 8000;
|
|
|
15
15
|
*/
|
|
16
16
|
export declare function flushInvocationReports(timeoutMs?: number): Promise<void>;
|
|
17
17
|
/**
|
|
18
|
-
*
|
|
19
|
-
*
|
|
20
|
-
*
|
|
21
|
-
*
|
|
22
|
-
*
|
|
23
|
-
*
|
|
18
|
+
* Same resolution order as the anonymous heartbeat (ADR-329, and
|
|
19
|
+
* resolveHeartbeatDecision in ../telemetry/config.js): DO_NOT_TRACK /
|
|
20
|
+
* ROTIFER_TELEMETRY in this shell, either direction, then the stored choice
|
|
21
|
+
* from `rotifer telemetry on|off`. ADR-329 is explicit that "off" means both
|
|
22
|
+
* signals, and TELEMETRY.md promises every switch turns off both.
|
|
23
|
+
*
|
|
24
|
+
* Up to 0.30.1 this read only the environment, so `rotifer telemetry off`
|
|
25
|
+
* stopped the heartbeat and left this report running (T-87) — the silent
|
|
26
|
+
* divergence the shared env check was written to prevent, one layer up.
|
|
27
|
+
* The stored choice is read, never written, here; an unreadable file counts
|
|
28
|
+
* as no choice.
|
|
24
29
|
*/
|
|
25
30
|
export declare function telemetryOptedOut(): boolean;
|
|
26
31
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"invocation.d.ts","sourceRoot":"","sources":["../../src/cloud/invocation.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"invocation.d.ts","sourceRoot":"","sources":["../../src/cloud/invocation.ts"],"names":[],"mappings":"AAsDA;;;;;;;;GAQG;AACH,eAAO,MAAM,gBAAgB,OAAO,CAAC;AAErC;;;;GAIG;AACH,wBAAsB,sBAAsB,CAAC,SAAS,GAAE,MAAyB,GAAG,OAAO,CAAC,IAAI,CAAC,CAShG;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,iBAAiB,IAAI,OAAO,CAI3C;AAED;;;;;;;;GAQG;AACH,wBAAgB,gBAAgB,IAAI,OAAO,CAM1C;AAED,mEAAmE;AACnE,wBAAgB,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAU1D;AAED,MAAM,WAAW,gBAAgB;IAC/B,2DAA2D;IAC3D,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,0FAA0F;IAC1F,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,oEAAoE;IACpE,OAAO,CAAC,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;IACxB,yEAAyE;IACzE,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACzB;AAWD;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,wBAAwB,CACtC,GAAG,GAAE,MAAM,CAAC,UAAwB,GACnC,MAAM,GAAG,IAAI,CAIf;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,MAAM,GAAG,gBAAgB,CAoEtE"}
|
package/dist/cloud/invocation.js
CHANGED
|
@@ -12,6 +12,7 @@ const node_path_1 = require("node:path");
|
|
|
12
12
|
const client_js_1 = require("./client.js");
|
|
13
13
|
const auth_js_1 = require("./auth.js");
|
|
14
14
|
const consent_js_1 = require("../telemetry/consent.js");
|
|
15
|
+
const config_js_1 = require("../telemetry/config.js");
|
|
15
16
|
/**
|
|
16
17
|
* Report one execution of a Cloud-installed Gene to Rotifer Cloud.
|
|
17
18
|
*
|
|
@@ -84,15 +85,24 @@ async function flushInvocationReports(timeoutMs = exports.FLUSH_TIMEOUT_MS) {
|
|
|
84
85
|
clearTimeout(timer);
|
|
85
86
|
}
|
|
86
87
|
/**
|
|
87
|
-
*
|
|
88
|
-
*
|
|
89
|
-
*
|
|
90
|
-
*
|
|
91
|
-
*
|
|
92
|
-
*
|
|
88
|
+
* Same resolution order as the anonymous heartbeat (ADR-329, and
|
|
89
|
+
* resolveHeartbeatDecision in ../telemetry/config.js): DO_NOT_TRACK /
|
|
90
|
+
* ROTIFER_TELEMETRY in this shell, either direction, then the stored choice
|
|
91
|
+
* from `rotifer telemetry on|off`. ADR-329 is explicit that "off" means both
|
|
92
|
+
* signals, and TELEMETRY.md promises every switch turns off both.
|
|
93
|
+
*
|
|
94
|
+
* Up to 0.30.1 this read only the environment, so `rotifer telemetry off`
|
|
95
|
+
* stopped the heartbeat and left this report running (T-87) — the silent
|
|
96
|
+
* divergence the shared env check was written to prevent, one layer up.
|
|
97
|
+
* The stored choice is read, never written, here; an unreadable file counts
|
|
98
|
+
* as no choice.
|
|
93
99
|
*/
|
|
94
100
|
function telemetryOptedOut() {
|
|
95
|
-
|
|
101
|
+
if ((0, consent_js_1.telemetryOptedOutByEnv)())
|
|
102
|
+
return true;
|
|
103
|
+
if ((0, consent_js_1.telemetryExplicitlyOnByEnv)())
|
|
104
|
+
return false;
|
|
105
|
+
return (0, config_js_1.readStoredTelemetryChoice)() === false;
|
|
96
106
|
}
|
|
97
107
|
/**
|
|
98
108
|
* True when this process is a test run (or was spawned by one — `execSync` and
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"invocation.js","sourceRoot":"","sources":["../../src/cloud/invocation.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"invocation.js","sourceRoot":"","sources":["../../src/cloud/invocation.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vg.d.ts","sourceRoot":"","sources":["../../src/commands/vg.ts"],"names":[],"mappings":"
|
|
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"}
|
package/dist/commands/vg.js
CHANGED
|
@@ -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
|
|
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
|
}
|
package/dist/commands/vg.js.map
CHANGED
|
@@ -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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"}
|
package/dist/commands/wrap.d.ts
CHANGED
|
@@ -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"}
|
package/dist/commands/wrap.js
CHANGED
|
@@ -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 " +
|
|
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 " +
|
|
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 " +
|
|
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":"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"}
|
|
1
|
+
{"version":3,"file":"wrap.js","sourceRoot":"","sources":["../../src/commands/wrap.ts"],"names":[],"mappings":"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"}
|
package/dist/scanner/rules.d.ts
CHANGED
|
@@ -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.
|
|
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,
|
|
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"}
|
package/dist/scanner/rules.js
CHANGED
|
@@ -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.
|
|
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":";;;
|
|
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;
|
|
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"}
|
package/dist/scanner/scanner.js
CHANGED
|
@@ -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
|
-
|
|
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":";;
|
|
1
|
+
{"version":3,"file":"scanner.js","sourceRoot":"","sources":["../../src/scanner/scanner.ts"],"names":[],"mappings":";;AAyDA,4BA6BC;AAED,oCAQC;AAMD,oBAoCC;AA1ID,qCAA0E;AAC1E,yCAAoD;AACpD,yCAAwC;AACxC,+CAA+C;AAG/C,MAAM,eAAe,GAAG,IAAI,GAAG,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC;AAEtG,+EAA+E;AAC/E,2EAA2E;AAC3E,qEAAqE;AACrE,MAAM,aAAa,GAAG,IAAI,GAAG,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;AAEtE,SAAS,gBAAgB,CAAC,GAAW;IACnC,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,MAAM,IAAI,GAAG,CAAC,CAAS,EAAE,EAAE;QACzB,KAAK,MAAM,KAAK,IAAI,IAAA,qBAAW,EAAC,CAAC,CAAC,EAAE,CAAC;YACnC,IAAI,KAAK,KAAK,cAAc,IAAI,KAAK,KAAK,MAAM,IAAI,KAAK,KAAK,MAAM;gBAAE,SAAS;YAC/E,MAAM,IAAI,GAAG,IAAA,gBAAI,EAAC,CAAC,EAAE,KAAK,CAAC,CAAC;YAC5B,MAAM,EAAE,GAAG,IAAA,kBAAQ,EAAC,IAAI,CAAC,CAAC;YAC1B,IAAI,EAAE,CAAC,WAAW,EAAE,EAAE,CAAC;gBACrB,IAAI,CAAC,IAAI,CAAC,CAAC;YACb,CAAC;iBAAM,IAAI,eAAe,CAAC,GAAG,CAAC,IAAA,mBAAO,EAAC,KAAK,CAAC,CAAC,EAAE,CAAC;gBAC/C,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACnB,CAAC;QACH,CAAC;IACH,CAAC,CAAC;IACF,IAAI,CAAC,GAAG,CAAC,CAAC;IACV,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,eAAe,CAAC,GAAW;IAClC,OAAO,IAAA,oBAAU,EAAC,IAAA,gBAAI,EAAC,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC;AACtC,CAAC;AAED,+DAA+D;AAC/D,SAAS,wBAAwB,CAAC,GAAW;IAC3C,OAAO,IAAA,qBAAW,EAAC,GAAG,CAAC;SACpB,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,IAAA,gBAAI,EAAC,GAAG,EAAE,KAAK,CAAC,CAAC;SAChC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAA,kBAAQ,EAAC,IAAI,CAAC,CAAC,MAAM,EAAE,IAAI,eAAe,CAAC,GAAG,CAAC,IAAA,mBAAO,EAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACrF,CAAC;AAED;;;;;;;;GAQG;AACH,SAAS,WAAW,CAAC,GAAW,EAAE,aAAsB;IACtD,IAAI,aAAa;QAAE,OAAO,gBAAgB,CAAC,GAAG,CAAC,CAAC;IAChD,IAAI,eAAe,CAAC,GAAG,CAAC;QAAE,OAAO,gBAAgB,CAAC,IAAA,gBAAI,EAAC,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC;IACpE,OAAO,wBAAwB,CAAC,GAAG,CAAC,CAAC;AACvC,CAAC;AAED,SAAgB,QAAQ,CAAC,QAAgB,EAAE,OAAe;IACxD,MAAM,OAAO,GAAG,IAAA,sBAAY,EAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IAChD,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAClC,MAAM,OAAO,GAAG,IAAA,oBAAQ,EAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;IAC5C,MAAM,QAAQ,GAAc,EAAE,CAAC;IAC/B,MAAM,SAAS,GAAG,aAAa,CAAC,GAAG,CAAC,IAAA,mBAAO,EAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,IAAA,4BAAc,EAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;IAEvF,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACtC,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QACtB,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC;YAAE,SAAS;QAEpF,KAAK,MAAM,IAAI,IAAI,qBAAU,EAAE,CAAC;YAC9B,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,KAAK,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;YAC9D,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACpC,IAAI,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;oBAC1B,QAAQ,CAAC,IAAI,CAAC;wBACZ,IAAI,EAAE,IAAI,CAAC,EAAE;wBACb,QAAQ,EAAE,IAAI,CAAC,QAAQ;wBACvB,IAAI,EAAE,OAAO;wBACb,IAAI,EAAE,CAAC,GAAG,CAAC;wBACX,OAAO,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC;qBACnC,CAAC,CAAC;oBACH,MAAM;gBACR,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,SAAgB,YAAY,CAAC,QAAmB;IAC9C,MAAM,SAAS,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,UAAU,CAAC,CAAC,MAAM,CAAC;IAC3E,MAAM,KAAK,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,MAAM,CAAC,CAAC,MAAM,CAAC;IAEnE,IAAI,SAAS,IAAI,CAAC;QAAE,OAAO,GAAG,CAAC;IAC/B,IAAI,KAAK,GAAG,CAAC;QAAE,OAAO,GAAG,CAAC;IAC1B,IAAI,KAAK,GAAG,CAAC;QAAE,OAAO,GAAG,CAAC;IAC1B,OAAO,GAAG,CAAC;AACb,CAAC;AAMD,SAAgB,IAAI,CAAC,GAAW,EAAE,OAAgB,EAAE,OAAqB;IACvE,MAAM,aAAa,GAAG,OAAO,EAAE,OAAO,IAAI,KAAK,CAAC;IAChD,MAAM,KAAK,GAAG,WAAW,CAAC,GAAG,EAAE,aAAa,CAAC,CAAC;IAE9C,sEAAsE;IACtE,yEAAyE;IACzE,iCAAiC;IACjC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvB,OAAO;YACL,QAAQ,EAAE,OAAO,IAAI,GAAG;YACxB,UAAU,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;YACpC,KAAK,EAAE,GAAG;YACV,QAAQ,EAAE,EAAE;YACZ,KAAK,EAAE,EAAE,aAAa,EAAE,CAAC,EAAE,aAAa,EAAE,CAAC,EAAE;SAC9C,CAAC;IACJ,CAAC;IAED,MAAM,WAAW,GAAc,EAAE,CAAC;IAClC,IAAI,UAAU,GAAG,CAAC,CAAC;IAEnB,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,OAAO,GAAG,IAAA,sBAAY,EAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QAC5C,UAAU,IAAI,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC;QACzC,WAAW,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC;IAC3C,CAAC;IAED,OAAO;QACL,QAAQ,EAAE,OAAO,IAAI,GAAG;QACxB,UAAU,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;QACpC,KAAK,EAAE,YAAY,CAAC,WAAW,CAAC;QAChC,QAAQ,EAAE,WAAW;QACrB,KAAK,EAAE;YACL,aAAa,EAAE,KAAK,CAAC,MAAM;YAC3B,aAAa,EAAE,UAAU;SAC1B;KACF,CAAC;AACJ,CAAC"}
|
|
@@ -9,6 +9,16 @@ export interface HeartbeatConfig {
|
|
|
9
9
|
first_run_notice_shown: boolean;
|
|
10
10
|
updated_at: string;
|
|
11
11
|
}
|
|
12
|
+
/**
|
|
13
|
+
* The stored on/off choice alone, for the signed-in invocation report:
|
|
14
|
+
* false when telemetry.json says `"enabled": false`, true when it says
|
|
15
|
+
* anything else, null when there is no readable file. Unlike
|
|
16
|
+
* loadOrInitHeartbeatConfig() it never writes — a check on the reporting
|
|
17
|
+
* path must not mint the file — and it does not require a machine_id, so a
|
|
18
|
+
* hand-written `{"enabled": false}` is honoured. Never throws: an unreadable
|
|
19
|
+
* file is "no choice", because telemetry must never break or block a run.
|
|
20
|
+
*/
|
|
21
|
+
export declare function readStoredTelemetryChoice(): boolean | null;
|
|
12
22
|
/**
|
|
13
23
|
* Reads the stored config, minting one (with a fresh machine_id) on first
|
|
14
24
|
* ever call. This is the read path every reporting call goes through — it
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/telemetry/config.ts"],"names":[],"mappings":"AA8BA,MAAM,MAAM,aAAa,GAAG,WAAW,GAAG,KAAK,GAAG,gBAAgB,CAAC;AAEnE,MAAM,WAAW,eAAe;IAC9B,yEAAyE;IACzE,OAAO,EAAE,OAAO,CAAC;IACjB,mFAAmF;IACnF,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,aAAa,CAAC;IAC9B,mEAAmE;IACnE,sBAAsB,EAAE,OAAO,CAAC;IAChC,UAAU,EAAE,MAAM,CAAC;CACpB;
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/telemetry/config.ts"],"names":[],"mappings":"AA8BA,MAAM,MAAM,aAAa,GAAG,WAAW,GAAG,KAAK,GAAG,gBAAgB,CAAC;AAEnE,MAAM,WAAW,eAAe;IAC9B,yEAAyE;IACzE,OAAO,EAAE,OAAO,CAAC;IACjB,mFAAmF;IACnF,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,aAAa,CAAC;IAC9B,mEAAmE;IACnE,sBAAsB,EAAE,OAAO,CAAC;IAChC,UAAU,EAAE,MAAM,CAAC;CACpB;AA4BD;;;;;;;;GAQG;AACH,wBAAgB,yBAAyB,IAAI,OAAO,GAAG,IAAI,CAU1D;AASD;;;;;;;GAOG;AACH,wBAAgB,yBAAyB,IAAI,eAAe,CAa3D;AAED,uEAAuE;AACvE,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,OAAO,GAAG,eAAe,CAavE;AAED,wBAAgB,sBAAsB,IAAI,IAAI,CAQ7C;AAED,MAAM,MAAM,iBAAiB,GACzB,SAAS,GACT,QAAQ,GACR,YAAY,GACZ,WAAW,GACX,YAAY,CAAC;AAEjB;;;;;;;;;;GAUG;AACH,wBAAgB,wBAAwB,CACtC,MAAM,EAAE,eAAe,EACvB,GAAG,GAAE,MAAM,CAAC,UAAwB,GACnC,iBAAiB,CAKnB;AAED,wBAAgB,wBAAwB,CAAC,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAEtE;AAED;;;;;GAKG;AACH,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,eAAe,GAAG,IAAI,CAGrE"}
|
package/dist/telemetry/config.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.readStoredTelemetryChoice = readStoredTelemetryChoice;
|
|
3
4
|
exports.loadOrInitHeartbeatConfig = loadOrInitHeartbeatConfig;
|
|
4
5
|
exports.setHeartbeatEnabled = setHeartbeatEnabled;
|
|
5
6
|
exports.resetHeartbeatIdentity = resetHeartbeatIdentity;
|
|
@@ -58,6 +59,29 @@ function readStoredConfig() {
|
|
|
58
59
|
return null;
|
|
59
60
|
}
|
|
60
61
|
}
|
|
62
|
+
/**
|
|
63
|
+
* The stored on/off choice alone, for the signed-in invocation report:
|
|
64
|
+
* false when telemetry.json says `"enabled": false`, true when it says
|
|
65
|
+
* anything else, null when there is no readable file. Unlike
|
|
66
|
+
* loadOrInitHeartbeatConfig() it never writes — a check on the reporting
|
|
67
|
+
* path must not mint the file — and it does not require a machine_id, so a
|
|
68
|
+
* hand-written `{"enabled": false}` is honoured. Never throws: an unreadable
|
|
69
|
+
* file is "no choice", because telemetry must never break or block a run.
|
|
70
|
+
*/
|
|
71
|
+
function readStoredTelemetryChoice() {
|
|
72
|
+
try {
|
|
73
|
+
const p = telemetryConfigPath();
|
|
74
|
+
if (!(0, node_fs_1.existsSync)(p))
|
|
75
|
+
return null;
|
|
76
|
+
const parsed = JSON.parse((0, node_fs_1.readFileSync)(p, "utf-8"));
|
|
77
|
+
if (!parsed || typeof parsed !== "object" || Array.isArray(parsed))
|
|
78
|
+
return null;
|
|
79
|
+
return parsed.enabled !== false;
|
|
80
|
+
}
|
|
81
|
+
catch {
|
|
82
|
+
return null;
|
|
83
|
+
}
|
|
84
|
+
}
|
|
61
85
|
function writeStoredConfig(config) {
|
|
62
86
|
(0, private_fs_js_1.ensurePrivateDir)(ROTIFER_HOME);
|
|
63
87
|
const p = telemetryConfigPath();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/telemetry/config.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/telemetry/config.ts"],"names":[],"mappings":";;AA8EA,8DAUC;AAiBD,8DAaC;AAGD,kDAaC;AAED,wDAQC;AAoBD,4DAQC;AAED,4DAEC;AAQD,0DAGC;AA3LD;;;;;;;;;;;;;;;;;GAiBG;AACH,qCAAkE;AAClE,yCAAiC;AACjC,6CAAyC;AACzC,0DAA8E;AAC9E,6CAAkF;AAElF,MAAM,YAAY,GAAG,IAAA,gBAAI,EACvB,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,OAAO,CAAC,GAAG,CAAC,WAAW,IAAI,MAAM,EACrD,UAAU,CACX,CAAC;AACF,MAAM,qBAAqB,GAAG,gBAAgB,CAAC;AAe/C,SAAS,mBAAmB;IAC1B,OAAO,IAAA,gBAAI,EAAC,YAAY,EAAE,qBAAqB,CAAC,CAAC;AACnD,CAAC;AAED,SAAS,gBAAgB;IACvB,MAAM,CAAC,GAAG,mBAAmB,EAAE,CAAC;IAChC,IAAI,CAAC,IAAA,oBAAU,EAAC,CAAC,CAAC;QAAE,OAAO,IAAI,CAAC;IAChC,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAA,sBAAY,EAAC,CAAC,EAAE,OAAO,CAAC,CAA6B,CAAC;QAChF,IAAI,OAAO,MAAM,CAAC,UAAU,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,UAAU;YAAE,OAAO,IAAI,CAAC;QAC7E,OAAO;YACL,OAAO,EAAE,MAAM,CAAC,OAAO,KAAK,KAAK;YACjC,UAAU,EAAE,MAAM,CAAC,UAAU;YAC7B,cAAc,EAAE,MAAM,CAAC,cAAc,IAAI,gBAAgB;YACzD,sBAAsB,EAAE,MAAM,CAAC,sBAAsB,KAAK,IAAI;YAC9D,UAAU,EAAE,MAAM,CAAC,UAAU,IAAI,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE;SAC3D,CAAC;IACJ,CAAC;IAAC,MAAM,CAAC;QACP,+DAA+D;QAC/D,uEAAuE;QACvE,qEAAqE;QACrE,yEAAyE;QACzE,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED;;;;;;;;GAQG;AACH,SAAgB,yBAAyB;IACvC,IAAI,CAAC;QACH,MAAM,CAAC,GAAG,mBAAmB,EAAE,CAAC;QAChC,IAAI,CAAC,IAAA,oBAAU,EAAC,CAAC,CAAC;YAAE,OAAO,IAAI,CAAC;QAChC,MAAM,MAAM,GAAY,IAAI,CAAC,KAAK,CAAC,IAAA,sBAAY,EAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC;QAC7D,IAAI,CAAC,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC;YAAE,OAAO,IAAI,CAAC;QAChF,OAAQ,MAAgC,CAAC,OAAO,KAAK,KAAK,CAAC;IAC7D,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,SAAS,iBAAiB,CAAC,MAAuB;IAChD,IAAA,gCAAgB,EAAC,YAAY,CAAC,CAAC;IAC/B,MAAM,CAAC,GAAG,mBAAmB,EAAE,CAAC;IAChC,IAAA,uBAAa,EAAC,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;IAC1E,IAAA,kCAAkB,EAAC,CAAC,CAAC,CAAC;AACxB,CAAC;AAED;;;;;;;GAOG;AACH,SAAgB,yBAAyB;IACvC,MAAM,QAAQ,GAAG,gBAAgB,EAAE,CAAC;IACpC,IAAI,QAAQ;QAAE,OAAO,QAAQ,CAAC;IAE9B,MAAM,KAAK,GAAoB;QAC7B,OAAO,EAAE,IAAI;QACb,UAAU,EAAE,IAAA,wBAAU,GAAE;QACxB,cAAc,EAAE,gBAAgB;QAChC,sBAAsB,EAAE,KAAK;QAC7B,UAAU,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;KACrC,CAAC;IACF,iBAAiB,CAAC,KAAK,CAAC,CAAC;IACzB,OAAO,KAAK,CAAC;AACf,CAAC;AAED,uEAAuE;AACvE,SAAgB,mBAAmB,CAAC,SAAkB;IACpD,MAAM,OAAO,GAAG,yBAAyB,EAAE,CAAC;IAC5C,MAAM,OAAO,GAAoB;QAC/B,GAAG,OAAO;QACV,OAAO,EAAE,SAAS;QAClB,cAAc,EAAE,KAAK;QACrB,kEAAkE;QAClE,gEAAgE;QAChE,sBAAsB,EAAE,IAAI;QAC5B,UAAU,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;KACrC,CAAC;IACF,iBAAiB,CAAC,OAAO,CAAC,CAAC;IAC3B,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,SAAgB,sBAAsB;IACpC,MAAM,CAAC,GAAG,mBAAmB,EAAE,CAAC;IAChC,IAAI,IAAA,oBAAU,EAAC,CAAC,CAAC,EAAE,CAAC;QAClB,IAAA,uBAAa,EAAC,CAAC,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;IACxC,CAAC;IACD,2EAA2E;IAC3E,0EAA0E;IAC1E,kEAAkE;AACpE,CAAC;AASD;;;;;;;;;;GAUG;AACH,SAAgB,wBAAwB,CACtC,MAAuB,EACvB,MAAyB,OAAO,CAAC,GAAG;IAEpC,IAAI,IAAA,mCAAsB,EAAC,GAAG,CAAC;QAAE,OAAO,SAAS,CAAC;IAClD,IAAI,IAAA,uCAA0B,EAAC,GAAG,CAAC;QAAE,OAAO,QAAQ,CAAC;IACrD,IAAI,CAAC,MAAM,CAAC,OAAO;QAAE,OAAO,YAAY,CAAC;IACzC,OAAO,MAAM,CAAC,cAAc,KAAK,gBAAgB,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,WAAW,CAAC;AACjF,CAAC;AAED,SAAgB,wBAAwB,CAAC,CAAoB;IAC3D,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,WAAW,IAAI,CAAC,KAAK,YAAY,CAAC;AACnE,CAAC;AAED;;;;;GAKG;AACH,SAAgB,uBAAuB,CAAC,MAAuB;IAC7D,IAAI,MAAM,CAAC,sBAAsB;QAAE,OAAO;IAC1C,iBAAiB,CAAC,EAAE,GAAG,MAAM,EAAE,sBAAsB,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;AACvG,CAAC"}
|
|
@@ -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
|
-
*
|
|
22
|
-
*
|
|
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": "
|
|
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.
|
|
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": "
|
|
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.
|
|
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.
|
|
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.
|
|
96
|
-
"@rotifer/playground-darwin-x64": "0.30.
|
|
97
|
-
"@rotifer/playground-linux-x64-gnu": "0.30.
|
|
98
|
-
"@rotifer/playground-win32-x64-msvc": "0.30.
|
|
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"
|