@relkit/compiler 0.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +5 -0
- package/dist/config-loader-deployment.d.ts +7 -0
- package/dist/config-loader-deployment.d.ts.map +1 -0
- package/dist/config-loader-deployment.js +36 -0
- package/dist/config-loader-deployment.js.map +1 -0
- package/dist/config-loader-runtime.d.ts +30 -0
- package/dist/config-loader-runtime.d.ts.map +1 -0
- package/dist/config-loader-runtime.js +105 -0
- package/dist/config-loader-runtime.js.map +1 -0
- package/dist/config-loader-types.d.ts +107 -0
- package/dist/config-loader-types.d.ts.map +1 -0
- package/dist/config-loader-types.js +37 -0
- package/dist/config-loader-types.js.map +1 -0
- package/dist/config-loader-utils.d.ts +10 -0
- package/dist/config-loader-utils.d.ts.map +1 -0
- package/dist/config-loader-utils.js +88 -0
- package/dist/config-loader-utils.js.map +1 -0
- package/dist/config-loader.d.ts +12 -0
- package/dist/config-loader.d.ts.map +1 -0
- package/dist/config-loader.js +89 -0
- package/dist/config-loader.js.map +1 -0
- package/dist/context-registry.d.ts +7 -0
- package/dist/context-registry.d.ts.map +1 -0
- package/dist/context-registry.js +55 -0
- package/dist/context-registry.js.map +1 -0
- package/dist/conventions.d.ts +32 -0
- package/dist/conventions.d.ts.map +1 -0
- package/dist/conventions.js +125 -0
- package/dist/conventions.js.map +1 -0
- package/dist/discovery/ast-prefilter-utils.d.ts +4 -0
- package/dist/discovery/ast-prefilter-utils.d.ts.map +1 -0
- package/dist/discovery/ast-prefilter-utils.js +186 -0
- package/dist/discovery/ast-prefilter-utils.js.map +1 -0
- package/dist/discovery/ast-prefilter.d.ts +36 -0
- package/dist/discovery/ast-prefilter.d.ts.map +1 -0
- package/dist/discovery/ast-prefilter.js +33 -0
- package/dist/discovery/ast-prefilter.js.map +1 -0
- package/dist/discovery/data-model-isolation.d.ts +8 -0
- package/dist/discovery/data-model-isolation.d.ts.map +1 -0
- package/dist/discovery/data-model-isolation.js +52 -0
- package/dist/discovery/data-model-isolation.js.map +1 -0
- package/dist/discovery/evaluator-child-utils.d.ts +4 -0
- package/dist/discovery/evaluator-child-utils.d.ts.map +1 -0
- package/dist/discovery/evaluator-child-utils.js +48 -0
- package/dist/discovery/evaluator-child-utils.js.map +1 -0
- package/dist/discovery/evaluator-child.d.ts +2 -0
- package/dist/discovery/evaluator-child.d.ts.map +1 -0
- package/dist/discovery/evaluator-child.js +139 -0
- package/dist/discovery/evaluator-child.js.map +1 -0
- package/dist/discovery/evaluator-detector-files.d.ts +9 -0
- package/dist/discovery/evaluator-detector-files.d.ts.map +1 -0
- package/dist/discovery/evaluator-detector-files.js +105 -0
- package/dist/discovery/evaluator-detector-files.js.map +1 -0
- package/dist/discovery/evaluator-detector-network.d.ts +6 -0
- package/dist/discovery/evaluator-detector-network.d.ts.map +1 -0
- package/dist/discovery/evaluator-detector-network.js +109 -0
- package/dist/discovery/evaluator-detector-network.js.map +1 -0
- package/dist/discovery/evaluator-detector-timers.d.ts +9 -0
- package/dist/discovery/evaluator-detector-timers.d.ts.map +1 -0
- package/dist/discovery/evaluator-detector-timers.js +105 -0
- package/dist/discovery/evaluator-detector-timers.js.map +1 -0
- package/dist/discovery/evaluator-detectors.d.ts +18 -0
- package/dist/discovery/evaluator-detectors.d.ts.map +1 -0
- package/dist/discovery/evaluator-detectors.js +54 -0
- package/dist/discovery/evaluator-detectors.js.map +1 -0
- package/dist/discovery/evaluator-protocol.d.ts +94 -0
- package/dist/discovery/evaluator-protocol.d.ts.map +1 -0
- package/dist/discovery/evaluator-protocol.js +89 -0
- package/dist/discovery/evaluator-protocol.js.map +1 -0
- package/dist/discovery/evaluator-request.d.ts +18 -0
- package/dist/discovery/evaluator-request.d.ts.map +1 -0
- package/dist/discovery/evaluator-request.js +49 -0
- package/dist/discovery/evaluator-request.js.map +1 -0
- package/dist/discovery/evaluator-snapshot.d.ts +12 -0
- package/dist/discovery/evaluator-snapshot.d.ts.map +1 -0
- package/dist/discovery/evaluator-snapshot.js +87 -0
- package/dist/discovery/evaluator-snapshot.js.map +1 -0
- package/dist/discovery/evaluator.d.ts +8 -0
- package/dist/discovery/evaluator.d.ts.map +1 -0
- package/dist/discovery/evaluator.js +123 -0
- package/dist/discovery/evaluator.js.map +1 -0
- package/dist/discovery/extract.d.ts +21 -0
- package/dist/discovery/extract.d.ts.map +1 -0
- package/dist/discovery/extract.js +60 -0
- package/dist/discovery/extract.js.map +1 -0
- package/dist/discovery/source-facts-factory.d.ts +5 -0
- package/dist/discovery/source-facts-factory.d.ts.map +1 -0
- package/dist/discovery/source-facts-factory.js +109 -0
- package/dist/discovery/source-facts-factory.js.map +1 -0
- package/dist/discovery/source-facts-types.d.ts +52 -0
- package/dist/discovery/source-facts-types.d.ts.map +1 -0
- package/dist/discovery/source-facts-types.js +2 -0
- package/dist/discovery/source-facts-types.js.map +1 -0
- package/dist/discovery/source-facts.d.ts +6 -0
- package/dist/discovery/source-facts.d.ts.map +1 -0
- package/dist/discovery/source-facts.js +141 -0
- package/dist/discovery/source-facts.js.map +1 -0
- package/dist/discovery/source-id-route.d.ts +3 -0
- package/dist/discovery/source-id-route.d.ts.map +1 -0
- package/dist/discovery/source-id-route.js +61 -0
- package/dist/discovery/source-id-route.js.map +1 -0
- package/dist/discovery/source-id.d.ts +36 -0
- package/dist/discovery/source-id.d.ts.map +1 -0
- package/dist/discovery/source-id.js +146 -0
- package/dist/discovery/source-id.js.map +1 -0
- package/dist/discovery/source-map-utils.d.ts +10 -0
- package/dist/discovery/source-map-utils.d.ts.map +1 -0
- package/dist/discovery/source-map-utils.js +29 -0
- package/dist/discovery/source-map-utils.js.map +1 -0
- package/dist/discovery/source-map.d.ts +26 -0
- package/dist/discovery/source-map.d.ts.map +1 -0
- package/dist/discovery/source-map.js +119 -0
- package/dist/discovery/source-map.js.map +1 -0
- package/dist/event-registry.d.ts +9 -0
- package/dist/event-registry.d.ts.map +1 -0
- package/dist/event-registry.js +43 -0
- package/dist/event-registry.js.map +1 -0
- package/dist/generate-manifest-event.d.ts +5 -0
- package/dist/generate-manifest-event.d.ts.map +1 -0
- package/dist/generate-manifest-event.js +81 -0
- package/dist/generate-manifest-event.js.map +1 -0
- package/dist/generate-manifest-expressions.d.ts +12 -0
- package/dist/generate-manifest-expressions.d.ts.map +1 -0
- package/dist/generate-manifest-expressions.js +141 -0
- package/dist/generate-manifest-expressions.js.map +1 -0
- package/dist/generate-manifest-format.d.ts +4 -0
- package/dist/generate-manifest-format.d.ts.map +1 -0
- package/dist/generate-manifest-format.js +74 -0
- package/dist/generate-manifest-format.js.map +1 -0
- package/dist/generate-manifest-identities.d.ts +6 -0
- package/dist/generate-manifest-identities.d.ts.map +1 -0
- package/dist/generate-manifest-identities.js +115 -0
- package/dist/generate-manifest-identities.js.map +1 -0
- package/dist/generate-manifest-utils.d.ts +23 -0
- package/dist/generate-manifest-utils.d.ts.map +1 -0
- package/dist/generate-manifest-utils.js +125 -0
- package/dist/generate-manifest-utils.js.map +1 -0
- package/dist/generate-manifest.d.ts +30 -0
- package/dist/generate-manifest.d.ts.map +1 -0
- package/dist/generate-manifest.js +89 -0
- package/dist/generate-manifest.js.map +1 -0
- package/dist/generated-artifacts.d.ts +69 -0
- package/dist/generated-artifacts.d.ts.map +1 -0
- package/dist/generated-artifacts.js +124 -0
- package/dist/generated-artifacts.js.map +1 -0
- package/dist/index.d.ts +17 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +17 -0
- package/dist/index.js.map +1 -0
- package/dist/middleware-coverage.d.ts +12 -0
- package/dist/middleware-coverage.d.ts.map +1 -0
- package/dist/middleware-coverage.js +90 -0
- package/dist/middleware-coverage.js.map +1 -0
- package/dist/normalize-compat.d.ts +26 -0
- package/dist/normalize-compat.d.ts.map +1 -0
- package/dist/normalize-compat.js +155 -0
- package/dist/normalize-compat.js.map +1 -0
- package/dist/normalize-event-listener.d.ts +11 -0
- package/dist/normalize-event-listener.d.ts.map +1 -0
- package/dist/normalize-event-listener.js +123 -0
- package/dist/normalize-event-listener.js.map +1 -0
- package/dist/normalize-event-validation.d.ts +4 -0
- package/dist/normalize-event-validation.d.ts.map +1 -0
- package/dist/normalize-event-validation.js +137 -0
- package/dist/normalize-event-validation.js.map +1 -0
- package/dist/normalize-generated-function.d.ts +10 -0
- package/dist/normalize-generated-function.d.ts.map +1 -0
- package/dist/normalize-generated-function.js +20 -0
- package/dist/normalize-generated-function.js.map +1 -0
- package/dist/normalize-graph-app.d.ts +8 -0
- package/dist/normalize-graph-app.d.ts.map +1 -0
- package/dist/normalize-graph-app.js +71 -0
- package/dist/normalize-graph-app.js.map +1 -0
- package/dist/normalize-graph-config.d.ts +5 -0
- package/dist/normalize-graph-config.d.ts.map +1 -0
- package/dist/normalize-graph-config.js +97 -0
- package/dist/normalize-graph-config.js.map +1 -0
- package/dist/normalize-graph-edges.d.ts +3 -0
- package/dist/normalize-graph-edges.d.ts.map +1 -0
- package/dist/normalize-graph-edges.js +139 -0
- package/dist/normalize-graph-edges.js.map +1 -0
- package/dist/normalize-graph-nodes.d.ts +3 -0
- package/dist/normalize-graph-nodes.d.ts.map +1 -0
- package/dist/normalize-graph-nodes.js +184 -0
- package/dist/normalize-graph-nodes.js.map +1 -0
- package/dist/normalize-graph-providers.d.ts +4 -0
- package/dist/normalize-graph-providers.d.ts.map +1 -0
- package/dist/normalize-graph-providers.js +63 -0
- package/dist/normalize-graph-providers.js.map +1 -0
- package/dist/normalize-graph-services.d.ts +2 -0
- package/dist/normalize-graph-services.d.ts.map +1 -0
- package/dist/normalize-graph-services.js +23 -0
- package/dist/normalize-graph-services.js.map +1 -0
- package/dist/normalize-graph-types.d.ts +26 -0
- package/dist/normalize-graph-types.d.ts.map +1 -0
- package/dist/normalize-graph-types.js +2 -0
- package/dist/normalize-graph-types.js.map +1 -0
- package/dist/normalize-graph-utils.d.ts +4 -0
- package/dist/normalize-graph-utils.d.ts.map +1 -0
- package/dist/normalize-graph-utils.js +29 -0
- package/dist/normalize-graph-utils.js.map +1 -0
- package/dist/normalize-graph.d.ts +4 -0
- package/dist/normalize-graph.d.ts.map +1 -0
- package/dist/normalize-graph.js +21 -0
- package/dist/normalize-graph.js.map +1 -0
- package/dist/normalize-http-validation.d.ts +8 -0
- package/dist/normalize-http-validation.d.ts.map +1 -0
- package/dist/normalize-http-validation.js +86 -0
- package/dist/normalize-http-validation.js.map +1 -0
- package/dist/normalize-identity-rewrite.d.ts +3 -0
- package/dist/normalize-identity-rewrite.d.ts.map +1 -0
- package/dist/normalize-identity-rewrite.js +30 -0
- package/dist/normalize-identity-rewrite.js.map +1 -0
- package/dist/normalize-job-validation.d.ts +3 -0
- package/dist/normalize-job-validation.d.ts.map +1 -0
- package/dist/normalize-job-validation.js +31 -0
- package/dist/normalize-job-validation.js.map +1 -0
- package/dist/normalize-model-selection.d.ts +17 -0
- package/dist/normalize-model-selection.d.ts.map +1 -0
- package/dist/normalize-model-selection.js +103 -0
- package/dist/normalize-model-selection.js.map +1 -0
- package/dist/normalize-output.d.ts +4 -0
- package/dist/normalize-output.d.ts.map +1 -0
- package/dist/normalize-output.js +42 -0
- package/dist/normalize-output.js.map +1 -0
- package/dist/normalize-pass-core.d.ts +9 -0
- package/dist/normalize-pass-core.d.ts.map +1 -0
- package/dist/normalize-pass-core.js +113 -0
- package/dist/normalize-pass-core.js.map +1 -0
- package/dist/normalize-pass-semantic.d.ts +11 -0
- package/dist/normalize-pass-semantic.d.ts.map +1 -0
- package/dist/normalize-pass-semantic.js +149 -0
- package/dist/normalize-pass-semantic.js.map +1 -0
- package/dist/normalize-pass-utils.d.ts +12 -0
- package/dist/normalize-pass-utils.d.ts.map +1 -0
- package/dist/normalize-pass-utils.js +116 -0
- package/dist/normalize-pass-utils.js.map +1 -0
- package/dist/normalize-passes.d.ts +3 -0
- package/dist/normalize-passes.d.ts.map +1 -0
- package/dist/normalize-passes.js +3 -0
- package/dist/normalize-passes.js.map +1 -0
- package/dist/normalize-provider-validation.d.ts +4 -0
- package/dist/normalize-provider-validation.d.ts.map +1 -0
- package/dist/normalize-provider-validation.js +34 -0
- package/dist/normalize-provider-validation.js.map +1 -0
- package/dist/normalize-public-types.d.ts +13 -0
- package/dist/normalize-public-types.d.ts.map +1 -0
- package/dist/normalize-public-types.js +2 -0
- package/dist/normalize-public-types.js.map +1 -0
- package/dist/normalize-rate-limit.d.ts +4 -0
- package/dist/normalize-rate-limit.d.ts.map +1 -0
- package/dist/normalize-rate-limit.js +35 -0
- package/dist/normalize-rate-limit.js.map +1 -0
- package/dist/normalize-reference-index.d.ts +6 -0
- package/dist/normalize-reference-index.d.ts.map +1 -0
- package/dist/normalize-reference-index.js +82 -0
- package/dist/normalize-reference-index.js.map +1 -0
- package/dist/normalize-reference-validation.d.ts +4 -0
- package/dist/normalize-reference-validation.d.ts.map +1 -0
- package/dist/normalize-reference-validation.js +88 -0
- package/dist/normalize-reference-validation.js.map +1 -0
- package/dist/normalize-route-file.d.ts +4 -0
- package/dist/normalize-route-file.d.ts.map +1 -0
- package/dist/normalize-route-file.js +41 -0
- package/dist/normalize-route-file.js.map +1 -0
- package/dist/normalize-route-inference.d.ts +4 -0
- package/dist/normalize-route-inference.d.ts.map +1 -0
- package/dist/normalize-route-inference.js +117 -0
- package/dist/normalize-route-inference.js.map +1 -0
- package/dist/normalize-schema-validation.d.ts +3 -0
- package/dist/normalize-schema-validation.d.ts.map +1 -0
- package/dist/normalize-schema-validation.js +50 -0
- package/dist/normalize-schema-validation.js.map +1 -0
- package/dist/normalize-source-identities.d.ts +3 -0
- package/dist/normalize-source-identities.d.ts.map +1 -0
- package/dist/normalize-source-identities.js +158 -0
- package/dist/normalize-source-identities.js.map +1 -0
- package/dist/normalize-types.d.ts +130 -0
- package/dist/normalize-types.d.ts.map +1 -0
- package/dist/normalize-types.js +99 -0
- package/dist/normalize-types.js.map +1 -0
- package/dist/normalize-utils.d.ts +24 -0
- package/dist/normalize-utils.d.ts.map +1 -0
- package/dist/normalize-utils.js +139 -0
- package/dist/normalize-utils.js.map +1 -0
- package/dist/normalize.d.ts +9 -0
- package/dist/normalize.d.ts.map +1 -0
- package/dist/normalize.js +106 -0
- package/dist/normalize.js.map +1 -0
- package/dist/project-typecheck.d.ts +4 -0
- package/dist/project-typecheck.d.ts.map +1 -0
- package/dist/project-typecheck.js +49 -0
- package/dist/project-typecheck.js.map +1 -0
- package/dist/route-file.d.ts +29 -0
- package/dist/route-file.d.ts.map +1 -0
- package/dist/route-file.js +97 -0
- package/dist/route-file.js.map +1 -0
- package/dist/watch.d.ts +27 -0
- package/dist/watch.d.ts.map +1 -0
- package/dist/watch.js +117 -0
- package/dist/watch.js.map +1 -0
- package/package.json +45 -0
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import { installFileDetectors } from "./evaluator-detector-files.js";
|
|
2
|
+
import { installNetworkDetectors } from "./evaluator-detector-network.js";
|
|
3
|
+
import { installOutput, installTimers } from "./evaluator-detector-timers.js";
|
|
4
|
+
/** Installs best-effort hooks for one candidate and restores them before framing. */
|
|
5
|
+
export function installEvaluatorDetectors(options) {
|
|
6
|
+
const sideEffects = [];
|
|
7
|
+
const timersByHandle = new Map();
|
|
8
|
+
const restores = [];
|
|
9
|
+
let stdout = "";
|
|
10
|
+
let stderr = "";
|
|
11
|
+
let restored = false;
|
|
12
|
+
const record = (kind, operation, target) => {
|
|
13
|
+
sideEffects.push({ kind, operation, target });
|
|
14
|
+
};
|
|
15
|
+
const violate = (kind, operation, target) => {
|
|
16
|
+
record(kind, operation, target);
|
|
17
|
+
throw new Error(`Evaluator blocked ${kind} through ${operation}.`);
|
|
18
|
+
};
|
|
19
|
+
installTimers(timersByHandle, restores);
|
|
20
|
+
installOutput(restores, (stream, value) => {
|
|
21
|
+
record("direct-output", `${stream}.write`, stream);
|
|
22
|
+
if (stream === "stdout")
|
|
23
|
+
stdout += value;
|
|
24
|
+
else
|
|
25
|
+
stderr += value;
|
|
26
|
+
});
|
|
27
|
+
installFileDetectors(options, restores, violate);
|
|
28
|
+
installNetworkDetectors(options.networkAllowlist, restores, violate);
|
|
29
|
+
return {
|
|
30
|
+
finish() {
|
|
31
|
+
for (const [handle, timer] of timersByHandle) {
|
|
32
|
+
record("live-timer", timer.kind, timer.kind);
|
|
33
|
+
timer.cancel();
|
|
34
|
+
timersByHandle.delete(handle);
|
|
35
|
+
}
|
|
36
|
+
return {
|
|
37
|
+
sideEffects: Object.freeze([...sideEffects]),
|
|
38
|
+
stdout,
|
|
39
|
+
stderr,
|
|
40
|
+
};
|
|
41
|
+
},
|
|
42
|
+
restore() {
|
|
43
|
+
if (restored)
|
|
44
|
+
return;
|
|
45
|
+
restored = true;
|
|
46
|
+
for (const timer of timersByHandle.values())
|
|
47
|
+
timer.cancel();
|
|
48
|
+
timersByHandle.clear();
|
|
49
|
+
for (const restore of restores.reverse())
|
|
50
|
+
restore();
|
|
51
|
+
},
|
|
52
|
+
};
|
|
53
|
+
}
|
|
54
|
+
//# sourceMappingURL=evaluator-detectors.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"evaluator-detectors.js","sourceRoot":"","sources":["../../src/discovery/evaluator-detectors.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,oBAAoB,EAAE,MAAM,+BAA+B,CAAC;AACrE,OAAO,EAAE,uBAAuB,EAAE,MAAM,iCAAiC,CAAC;AAC1E,OAAO,EAAE,aAAa,EAAE,aAAa,EAAoB,MAAM,gCAAgC,CAAC;AAqBhG,qFAAqF;AACrF,MAAM,UAAU,yBAAyB,CACvC,OAAiC;IAEjC,MAAM,WAAW,GAA0B,EAAE,CAAC;IAC9C,MAAM,cAAc,GAAG,IAAI,GAAG,EAAwB,CAAC;IACvD,MAAM,QAAQ,GAAc,EAAE,CAAC;IAC/B,IAAI,MAAM,GAAG,EAAE,CAAC;IAChB,IAAI,MAAM,GAAG,EAAE,CAAC;IAChB,IAAI,QAAQ,GAAG,KAAK,CAAC;IAErB,MAAM,MAAM,GAAG,CAAC,IAA6B,EAAE,SAAiB,EAAE,MAAc,EAAQ,EAAE;QACxF,WAAW,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC,CAAC;IAChD,CAAC,CAAC;IACF,MAAM,OAAO,GAAG,CAAC,IAA6B,EAAE,SAAiB,EAAE,MAAc,EAAS,EAAE;QAC1F,MAAM,CAAC,IAAI,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;QAChC,MAAM,IAAI,KAAK,CAAC,qBAAqB,IAAI,YAAY,SAAS,GAAG,CAAC,CAAC;IACrE,CAAC,CAAC;IAEF,aAAa,CAAC,cAAc,EAAE,QAAQ,CAAC,CAAC;IACxC,aAAa,CAAC,QAAQ,EAAE,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;QACxC,MAAM,CAAC,eAAe,EAAE,GAAG,MAAM,QAAQ,EAAE,MAAM,CAAC,CAAC;QACnD,IAAI,MAAM,KAAK,QAAQ;YAAE,MAAM,IAAI,KAAK,CAAC;;YACpC,MAAM,IAAI,KAAK,CAAC;IACvB,CAAC,CAAC,CAAC;IACH,oBAAoB,CAAC,OAAO,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;IACjD,uBAAuB,CAAC,OAAO,CAAC,gBAAgB,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;IAErE,OAAO;QACL,MAAM;YACJ,KAAK,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,IAAI,cAAc,EAAE,CAAC;gBAC7C,MAAM,CAAC,YAAY,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;gBAC7C,KAAK,CAAC,MAAM,EAAE,CAAC;gBACf,cAAc,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YAChC,CAAC;YACD,OAAO;gBACL,WAAW,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,WAAW,CAAC,CAAC;gBAC5C,MAAM;gBACN,MAAM;aACP,CAAC;QACJ,CAAC;QACD,OAAO;YACL,IAAI,QAAQ;gBAAE,OAAO;YACrB,QAAQ,GAAG,IAAI,CAAC;YAChB,KAAK,MAAM,KAAK,IAAI,cAAc,CAAC,MAAM,EAAE;gBAAE,KAAK,CAAC,MAAM,EAAE,CAAC;YAC5D,cAAc,CAAC,KAAK,EAAE,CAAC;YACvB,KAAK,MAAM,OAAO,IAAI,QAAQ,CAAC,OAAO,EAAE;gBAAE,OAAO,EAAE,CAAC;QACtD,CAAC;KACF,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
import type { JsonValue } from "@relkit/contracts";
|
|
2
|
+
export declare const EVALUATOR_PROTOCOL: "relkit.evaluator";
|
|
3
|
+
export declare const EVALUATOR_PROTOCOL_VERSION: 1;
|
|
4
|
+
export declare const EVALUATOR_FRAME = "\u001Erelkit-evaluator-response:";
|
|
5
|
+
export type EvaluatorFailureCode = "RELKIT_EVALUATOR_REQUEST_INVALID" | "RELKIT_EVALUATOR_ROOT_INVALID" | "RELKIT_EVALUATOR_IMPORT_FAILED" | "RELKIT_EVALUATOR_TIMEOUT" | "RELKIT_EVALUATOR_PROCESS_FAILED" | "RELKIT_EVALUATOR_PROTOCOL_INVALID" | "RELKIT_EVALUATOR_SIDE_EFFECT";
|
|
6
|
+
export type EvaluatorSideEffectKind = "listening-socket" | "live-timer" | "write-outside-generated-sandbox" | "child-process" | "direct-output" | "unapproved-network";
|
|
7
|
+
export interface EvaluatorSideEffect {
|
|
8
|
+
readonly kind: EvaluatorSideEffectKind;
|
|
9
|
+
readonly operation: string;
|
|
10
|
+
readonly target: string;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Coverage is deliberately explicit: these hooks are fault detectors, not a
|
|
14
|
+
* security sandbox. Unsupported bypasses still run inside the killed child.
|
|
15
|
+
*/
|
|
16
|
+
export declare const EVALUATOR_DETECTOR_COVERAGE: Readonly<{
|
|
17
|
+
supported: readonly string[];
|
|
18
|
+
unsupported: readonly string[];
|
|
19
|
+
}>;
|
|
20
|
+
export interface EvaluatorDetectorCoverage {
|
|
21
|
+
readonly supported: readonly string[];
|
|
22
|
+
readonly unsupported: readonly string[];
|
|
23
|
+
}
|
|
24
|
+
export interface EvaluatorCandidate {
|
|
25
|
+
readonly file: string;
|
|
26
|
+
}
|
|
27
|
+
export interface EvaluatorRequest {
|
|
28
|
+
readonly protocol: typeof EVALUATOR_PROTOCOL;
|
|
29
|
+
readonly version: typeof EVALUATOR_PROTOCOL_VERSION;
|
|
30
|
+
readonly generationId: string;
|
|
31
|
+
readonly projectRoot: string;
|
|
32
|
+
readonly candidates: readonly EvaluatorCandidate[];
|
|
33
|
+
readonly environmentAllowlist: readonly string[];
|
|
34
|
+
readonly generatedDirectory: string;
|
|
35
|
+
readonly networkAllowlist: readonly string[];
|
|
36
|
+
readonly sourceMaps: boolean;
|
|
37
|
+
readonly timeoutMs: number;
|
|
38
|
+
}
|
|
39
|
+
export interface EvaluatorManifestReference {
|
|
40
|
+
readonly generationId: string;
|
|
41
|
+
readonly descriptorId: string;
|
|
42
|
+
readonly kind: string;
|
|
43
|
+
readonly module: string;
|
|
44
|
+
readonly exportName: string;
|
|
45
|
+
}
|
|
46
|
+
export interface EvaluatorDescriptorSnapshot {
|
|
47
|
+
readonly kind: string;
|
|
48
|
+
readonly id: string;
|
|
49
|
+
readonly ref: {
|
|
50
|
+
readonly kind: string;
|
|
51
|
+
readonly id: string;
|
|
52
|
+
};
|
|
53
|
+
readonly metadata: JsonValue;
|
|
54
|
+
}
|
|
55
|
+
export interface EvaluatorExportSnapshot {
|
|
56
|
+
readonly exportName: string;
|
|
57
|
+
readonly descriptor: EvaluatorDescriptorSnapshot;
|
|
58
|
+
}
|
|
59
|
+
export interface EvaluatorModuleResult {
|
|
60
|
+
readonly file: string;
|
|
61
|
+
readonly exports: readonly EvaluatorExportSnapshot[];
|
|
62
|
+
readonly manifestReferences: readonly EvaluatorManifestReference[];
|
|
63
|
+
}
|
|
64
|
+
export interface EvaluatorFailure {
|
|
65
|
+
readonly code: EvaluatorFailureCode;
|
|
66
|
+
readonly message: string;
|
|
67
|
+
readonly generationId: string;
|
|
68
|
+
readonly module?: string;
|
|
69
|
+
readonly stack?: string;
|
|
70
|
+
readonly sideEffects?: readonly EvaluatorSideEffect[];
|
|
71
|
+
readonly exitCode?: number;
|
|
72
|
+
readonly timedOut?: boolean;
|
|
73
|
+
readonly stdout?: string;
|
|
74
|
+
readonly stderr?: string;
|
|
75
|
+
}
|
|
76
|
+
export interface EvaluatorResponse {
|
|
77
|
+
readonly protocol: typeof EVALUATOR_PROTOCOL;
|
|
78
|
+
readonly version: typeof EVALUATOR_PROTOCOL_VERSION;
|
|
79
|
+
readonly generationId: string;
|
|
80
|
+
readonly sourceMaps: boolean;
|
|
81
|
+
readonly detectorCoverage: EvaluatorDetectorCoverage;
|
|
82
|
+
readonly status: "ok" | "failed";
|
|
83
|
+
readonly modules: readonly EvaluatorModuleResult[];
|
|
84
|
+
readonly failures: readonly EvaluatorFailure[];
|
|
85
|
+
readonly stdout: string;
|
|
86
|
+
readonly stderr: string;
|
|
87
|
+
}
|
|
88
|
+
export declare function encodeEvaluatorFrame(response: EvaluatorResponse): string;
|
|
89
|
+
export declare function decodeEvaluatorFrame(stdout: string): {
|
|
90
|
+
readonly response: EvaluatorResponse;
|
|
91
|
+
readonly stdout: string;
|
|
92
|
+
} | undefined;
|
|
93
|
+
export declare function isEvaluatorRequest(value: unknown): value is EvaluatorRequest;
|
|
94
|
+
//# sourceMappingURL=evaluator-protocol.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"evaluator-protocol.d.ts","sourceRoot":"","sources":["../../src/discovery/evaluator-protocol.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
import { canonicalJson } from "@relkit/contracts";
|
|
2
|
+
export const EVALUATOR_PROTOCOL = "relkit.evaluator";
|
|
3
|
+
export const EVALUATOR_PROTOCOL_VERSION = 1;
|
|
4
|
+
export const EVALUATOR_FRAME = "\u001erelkit-evaluator-response:";
|
|
5
|
+
/**
|
|
6
|
+
* Coverage is deliberately explicit: these hooks are fault detectors, not a
|
|
7
|
+
* security sandbox. Unsupported bypasses still run inside the killed child.
|
|
8
|
+
*/
|
|
9
|
+
export const EVALUATOR_DETECTOR_COVERAGE = Object.freeze({
|
|
10
|
+
supported: Object.freeze([
|
|
11
|
+
"Bun and common Node socket/process/network entry points",
|
|
12
|
+
"global timers and direct stdout/stderr writes",
|
|
13
|
+
"common Node fs mutators and Bun.write",
|
|
14
|
+
]),
|
|
15
|
+
unsupported: Object.freeze([
|
|
16
|
+
"native syscalls and APIs that bypass the patched entry points",
|
|
17
|
+
"pre-bound named imports from CommonJS built-ins",
|
|
18
|
+
"file-descriptor writes and filesystem symlink/race escapes",
|
|
19
|
+
"effects scheduled after evaluation returns or outside the child process",
|
|
20
|
+
]),
|
|
21
|
+
});
|
|
22
|
+
export function encodeEvaluatorFrame(response) {
|
|
23
|
+
return `${EVALUATOR_FRAME}${canonicalJson(response)}\n`;
|
|
24
|
+
}
|
|
25
|
+
export function decodeEvaluatorFrame(stdout) {
|
|
26
|
+
const start = stdout.lastIndexOf(EVALUATOR_FRAME);
|
|
27
|
+
if (start < 0)
|
|
28
|
+
return undefined;
|
|
29
|
+
const payloadStart = start + EVALUATOR_FRAME.length;
|
|
30
|
+
const payloadEnd = stdout.indexOf("\n", payloadStart);
|
|
31
|
+
const payload = stdout.slice(payloadStart, payloadEnd < 0 ? stdout.length : payloadEnd);
|
|
32
|
+
try {
|
|
33
|
+
const value = JSON.parse(payload);
|
|
34
|
+
if (!isEvaluatorResponse(value))
|
|
35
|
+
return undefined;
|
|
36
|
+
return {
|
|
37
|
+
response: value,
|
|
38
|
+
stdout: `${stdout.slice(0, start)}${payloadEnd < 0 ? "" : stdout.slice(payloadEnd + 1)}`,
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
catch {
|
|
42
|
+
return undefined;
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
export function isEvaluatorRequest(value) {
|
|
46
|
+
if (!isRecord(value))
|
|
47
|
+
return false;
|
|
48
|
+
return (value.protocol === EVALUATOR_PROTOCOL &&
|
|
49
|
+
value.version === EVALUATOR_PROTOCOL_VERSION &&
|
|
50
|
+
typeof value.generationId === "string" &&
|
|
51
|
+
typeof value.projectRoot === "string" &&
|
|
52
|
+
Array.isArray(value.candidates) &&
|
|
53
|
+
value.candidates.every(isCandidate) &&
|
|
54
|
+
Array.isArray(value.environmentAllowlist) &&
|
|
55
|
+
value.environmentAllowlist.every((name) => typeof name === "string") &&
|
|
56
|
+
typeof value.generatedDirectory === "string" &&
|
|
57
|
+
Array.isArray(value.networkAllowlist) &&
|
|
58
|
+
value.networkAllowlist.every((host) => typeof host === "string") &&
|
|
59
|
+
typeof value.sourceMaps === "boolean" &&
|
|
60
|
+
typeof value.timeoutMs === "number");
|
|
61
|
+
}
|
|
62
|
+
function isCandidate(value) {
|
|
63
|
+
return isRecord(value) && typeof value.file === "string";
|
|
64
|
+
}
|
|
65
|
+
function isEvaluatorResponse(value) {
|
|
66
|
+
if (!isRecord(value))
|
|
67
|
+
return false;
|
|
68
|
+
return (value.protocol === EVALUATOR_PROTOCOL &&
|
|
69
|
+
value.version === EVALUATOR_PROTOCOL_VERSION &&
|
|
70
|
+
typeof value.generationId === "string" &&
|
|
71
|
+
typeof value.sourceMaps === "boolean" &&
|
|
72
|
+
isDetectorCoverage(value.detectorCoverage) &&
|
|
73
|
+
(value.status === "ok" || value.status === "failed") &&
|
|
74
|
+
Array.isArray(value.modules) &&
|
|
75
|
+
Array.isArray(value.failures) &&
|
|
76
|
+
typeof value.stdout === "string" &&
|
|
77
|
+
typeof value.stderr === "string");
|
|
78
|
+
}
|
|
79
|
+
function isRecord(value) {
|
|
80
|
+
return value !== null && typeof value === "object" && !Array.isArray(value);
|
|
81
|
+
}
|
|
82
|
+
function isDetectorCoverage(value) {
|
|
83
|
+
return (isRecord(value) &&
|
|
84
|
+
Array.isArray(value.supported) &&
|
|
85
|
+
value.supported.every((entry) => typeof entry === "string") &&
|
|
86
|
+
Array.isArray(value.unsupported) &&
|
|
87
|
+
value.unsupported.every((entry) => typeof entry === "string"));
|
|
88
|
+
}
|
|
89
|
+
//# sourceMappingURL=evaluator-protocol.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"evaluator-protocol.js","sourceRoot":"","sources":["../../src/discovery/evaluator-protocol.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { type EvaluatorRequest } from "./evaluator-protocol.js";
|
|
2
|
+
export declare const DEFAULT_EVALUATOR_TIMEOUT_MS = 5000;
|
|
3
|
+
export declare const DEFAULT_ENVIRONMENT_ALLOWLIST: readonly string[];
|
|
4
|
+
export interface EvaluatorOptions {
|
|
5
|
+
readonly projectRoot: string;
|
|
6
|
+
readonly candidates: readonly (string | {
|
|
7
|
+
readonly fileName: string;
|
|
8
|
+
})[];
|
|
9
|
+
readonly generationId?: string;
|
|
10
|
+
readonly timeoutMs?: number;
|
|
11
|
+
readonly environmentAllowlist?: readonly string[];
|
|
12
|
+
readonly generatedDirectory?: string;
|
|
13
|
+
readonly networkAllowlist?: readonly string[];
|
|
14
|
+
readonly sourceMaps?: boolean;
|
|
15
|
+
}
|
|
16
|
+
export declare function createEvaluatorRequest(options: EvaluatorOptions): EvaluatorRequest;
|
|
17
|
+
export declare function allowlistedEnvironment(names: readonly string[]): Record<string, string>;
|
|
18
|
+
//# sourceMappingURL=evaluator-request.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"evaluator-request.d.ts","sourceRoot":"","sources":["../../src/discovery/evaluator-request.ts"],"names":[],"mappings":"AAGA,OAAO,EAIL,KAAK,gBAAgB,EACtB,MAAM,yBAAyB,CAAC;AAEjC,eAAO,MAAM,4BAA4B,OAAQ,CAAC;AAClD,eAAO,MAAM,6BAA6B,mBAAgC,CAAC;AAE3E,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,UAAU,EAAE,SAAS,CAAC,MAAM,GAAG;QAAE,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC,EAAE,CAAC;IACzE,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,oBAAoB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAClD,QAAQ,CAAC,kBAAkB,CAAC,EAAE,MAAM,CAAC;IACrC,QAAQ,CAAC,gBAAgB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC9C,QAAQ,CAAC,UAAU,CAAC,EAAE,OAAO,CAAC;CAC/B;AAED,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,gBAAgB,GAAG,gBAAgB,CAoClF;AAED,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAOvF"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { normalizeSourcePath } from "@relkit/contracts";
|
|
2
|
+
import { realpathSync } from "node:fs";
|
|
3
|
+
import { isAbsolute, resolve } from "node:path";
|
|
4
|
+
import { EVALUATOR_PROTOCOL, EVALUATOR_PROTOCOL_VERSION, } from "./evaluator-protocol.js";
|
|
5
|
+
export const DEFAULT_EVALUATOR_TIMEOUT_MS = 5_000;
|
|
6
|
+
export const DEFAULT_ENVIRONMENT_ALLOWLIST = Object.freeze([]);
|
|
7
|
+
export function createEvaluatorRequest(options) {
|
|
8
|
+
if (!isAbsolute(options.projectRoot))
|
|
9
|
+
throw new TypeError("projectRoot must be absolute");
|
|
10
|
+
const projectRoot = realpathSync(resolve(options.projectRoot));
|
|
11
|
+
const timeoutMs = options.timeoutMs ?? DEFAULT_EVALUATOR_TIMEOUT_MS;
|
|
12
|
+
if (!Number.isInteger(timeoutMs) || timeoutMs < 1)
|
|
13
|
+
throw new TypeError("timeoutMs must be positive");
|
|
14
|
+
const generationId = options.generationId ?? crypto.randomUUID();
|
|
15
|
+
if (!/^[A-Za-z0-9._-]{1,128}$/.test(generationId))
|
|
16
|
+
throw new TypeError("generationId is invalid");
|
|
17
|
+
const environmentAllowlist = [...new Set(options.environmentAllowlist ?? [])].sort();
|
|
18
|
+
if (environmentAllowlist.some((name) => !/^[A-Za-z_][A-Za-z0-9_]*$/.test(name)))
|
|
19
|
+
throw new TypeError("environmentAllowlist contains an invalid name");
|
|
20
|
+
const networkAllowlist = [...new Set(options.networkAllowlist ?? [])].sort();
|
|
21
|
+
if (networkAllowlist.some((host) => host.trim() === "" || /[\s/]/.test(host)))
|
|
22
|
+
throw new TypeError("networkAllowlist contains an invalid host");
|
|
23
|
+
const generatedDirectory = normalizeSourcePath(options.generatedDirectory ?? ".relkit/generated", projectRoot);
|
|
24
|
+
const candidates = options.candidates.map((candidate) => {
|
|
25
|
+
const file = typeof candidate === "string" ? candidate : candidate.fileName;
|
|
26
|
+
return { file: normalizeSourcePath(file, projectRoot) };
|
|
27
|
+
});
|
|
28
|
+
return {
|
|
29
|
+
protocol: EVALUATOR_PROTOCOL,
|
|
30
|
+
version: EVALUATOR_PROTOCOL_VERSION,
|
|
31
|
+
generationId,
|
|
32
|
+
projectRoot,
|
|
33
|
+
candidates: Object.freeze([
|
|
34
|
+
...new Map(candidates.map((candidate) => [candidate.file, candidate])).values(),
|
|
35
|
+
]),
|
|
36
|
+
environmentAllowlist: Object.freeze(environmentAllowlist),
|
|
37
|
+
generatedDirectory,
|
|
38
|
+
networkAllowlist: Object.freeze(networkAllowlist),
|
|
39
|
+
sourceMaps: options.sourceMaps ?? true,
|
|
40
|
+
timeoutMs,
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
export function allowlistedEnvironment(names) {
|
|
44
|
+
return Object.fromEntries(names.flatMap((name) => {
|
|
45
|
+
const value = process.env[name];
|
|
46
|
+
return value === undefined ? [] : [[name, value]];
|
|
47
|
+
}));
|
|
48
|
+
}
|
|
49
|
+
//# sourceMappingURL=evaluator-request.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"evaluator-request.js","sourceRoot":"","sources":["../../src/discovery/evaluator-request.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { EvaluatorDescriptorSnapshot } from "./evaluator-protocol.js";
|
|
2
|
+
/** Keeps descriptor identity while replacing executable values with JSON markers. */
|
|
3
|
+
export declare function snapshotDescriptor(value: SnapshotDescriptorLike): EvaluatorDescriptorSnapshot;
|
|
4
|
+
export interface SnapshotDescriptorLike {
|
|
5
|
+
readonly kind: string;
|
|
6
|
+
readonly id: string;
|
|
7
|
+
readonly ref: {
|
|
8
|
+
readonly kind: string;
|
|
9
|
+
readonly id: string;
|
|
10
|
+
};
|
|
11
|
+
}
|
|
12
|
+
//# sourceMappingURL=evaluator-snapshot.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"evaluator-snapshot.d.ts","sourceRoot":"","sources":["../../src/discovery/evaluator-snapshot.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,yBAAyB,CAAC;AAG3E,qFAAqF;AACrF,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,sBAAsB,GAAG,2BAA2B,CAO7F;AA+CD,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,GAAG,EAAE;QAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;KAAE,CAAC;CAC9D"}
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
import { getJsonSchema } from "@relkit/schema";
|
|
2
|
+
import { isErrorDescriptorLike } from "../normalize-utils.js";
|
|
3
|
+
/** Keeps descriptor identity while replacing executable values with JSON markers. */
|
|
4
|
+
export function snapshotDescriptor(value) {
|
|
5
|
+
return {
|
|
6
|
+
kind: value.kind,
|
|
7
|
+
id: value.id,
|
|
8
|
+
ref: { kind: value.ref.kind, id: value.ref.id },
|
|
9
|
+
metadata: snapshotValue(value, new WeakSet()),
|
|
10
|
+
};
|
|
11
|
+
}
|
|
12
|
+
function snapshotValue(value, seen, depth = 0) {
|
|
13
|
+
if (value === null || typeof value === "string" || typeof value === "boolean")
|
|
14
|
+
return value;
|
|
15
|
+
if (typeof value === "number")
|
|
16
|
+
return Number.isFinite(value) ? value : marker("non-finite-number");
|
|
17
|
+
if (typeof value === "undefined")
|
|
18
|
+
return marker("undefined");
|
|
19
|
+
if (depth > 8)
|
|
20
|
+
return marker("depth-limit");
|
|
21
|
+
if (typeof value === "function") {
|
|
22
|
+
return isErrorDescriptorLike(value)
|
|
23
|
+
? snapshotObject(value, seen, depth)
|
|
24
|
+
: marker("function", value.name);
|
|
25
|
+
}
|
|
26
|
+
if (typeof value === "symbol")
|
|
27
|
+
return marker("symbol", value.description);
|
|
28
|
+
if (typeof value === "bigint")
|
|
29
|
+
return marker("bigint");
|
|
30
|
+
const schema = snapshotSchema(value);
|
|
31
|
+
if (schema !== undefined)
|
|
32
|
+
return schema;
|
|
33
|
+
if (Array.isArray(value)) {
|
|
34
|
+
if (seen.has(value))
|
|
35
|
+
return marker("cycle");
|
|
36
|
+
seen.add(value);
|
|
37
|
+
try {
|
|
38
|
+
return value.map((entry) => snapshotValue(entry, seen, depth + 1));
|
|
39
|
+
}
|
|
40
|
+
finally {
|
|
41
|
+
seen.delete(value);
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
return snapshotObject(value, seen, depth);
|
|
45
|
+
}
|
|
46
|
+
function snapshotObject(value, seen, depth) {
|
|
47
|
+
if (seen.has(value))
|
|
48
|
+
return marker("cycle");
|
|
49
|
+
seen.add(value);
|
|
50
|
+
try {
|
|
51
|
+
const output = {};
|
|
52
|
+
for (const key of Object.keys(value).sort()) {
|
|
53
|
+
const descriptor = Object.getOwnPropertyDescriptor(value, key);
|
|
54
|
+
output[key] =
|
|
55
|
+
descriptor && "value" in descriptor
|
|
56
|
+
? snapshotValue(descriptor.value, seen, depth + 1)
|
|
57
|
+
: marker("accessor");
|
|
58
|
+
}
|
|
59
|
+
return output;
|
|
60
|
+
}
|
|
61
|
+
finally {
|
|
62
|
+
seen.delete(value);
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
function snapshotSchema(value) {
|
|
66
|
+
if (!isRecord(value))
|
|
67
|
+
return undefined;
|
|
68
|
+
const standard = dataProperty(value, "~standard");
|
|
69
|
+
if (!isRecord(standard) || standard.version !== 1 || typeof standard.validate !== "function") {
|
|
70
|
+
return undefined;
|
|
71
|
+
}
|
|
72
|
+
const result = getJsonSchema(value);
|
|
73
|
+
return result.ok
|
|
74
|
+
? { $relkit: "schema", jsonSchema: result.schema }
|
|
75
|
+
: { $relkit: "schema-unavailable", reason: result.reason };
|
|
76
|
+
}
|
|
77
|
+
function dataProperty(value, key) {
|
|
78
|
+
const descriptor = Object.getOwnPropertyDescriptor(value, key);
|
|
79
|
+
return descriptor && "value" in descriptor ? descriptor.value : undefined;
|
|
80
|
+
}
|
|
81
|
+
function isRecord(value) {
|
|
82
|
+
return value !== null && typeof value === "object" && !Array.isArray(value);
|
|
83
|
+
}
|
|
84
|
+
function marker(type, name) {
|
|
85
|
+
return name === undefined ? { $relkit: type } : { $relkit: type, name };
|
|
86
|
+
}
|
|
87
|
+
//# sourceMappingURL=evaluator-snapshot.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"evaluator-snapshot.js","sourceRoot":"","sources":["../../src/discovery/evaluator-snapshot.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { type EvaluatorResponse } from "./evaluator-protocol.js";
|
|
2
|
+
import { type EvaluatorOptions } from "./evaluator-request.js";
|
|
3
|
+
export * from "./evaluator-protocol.js";
|
|
4
|
+
export { DEFAULT_ENVIRONMENT_ALLOWLIST, DEFAULT_EVALUATOR_TIMEOUT_MS, } from "./evaluator-request.js";
|
|
5
|
+
export type { EvaluatorOptions } from "./evaluator-request.js";
|
|
6
|
+
/** Evaluates only AST-prefilter candidates in a short-lived Bun child process. */
|
|
7
|
+
export declare function evaluateCandidates(options: EvaluatorOptions): Promise<EvaluatorResponse>;
|
|
8
|
+
//# sourceMappingURL=evaluator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"evaluator.d.ts","sourceRoot":"","sources":["../../src/discovery/evaluator.ts"],"names":[],"mappings":"AAGA,OAAO,EAML,KAAK,iBAAiB,EAEvB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAGL,KAAK,gBAAgB,EACtB,MAAM,wBAAwB,CAAC;AAIhC,cAAc,yBAAyB,CAAC;AACxC,OAAO,EACL,6BAA6B,EAC7B,4BAA4B,GAC7B,MAAM,wBAAwB,CAAC;AAChC,YAAY,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAE/D,kFAAkF;AAClF,wBAAsB,kBAAkB,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,iBAAiB,CAAC,CA6G9F"}
|
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
import { canonicalJson } from "@relkit/contracts";
|
|
2
|
+
import { existsSync } from "node:fs";
|
|
3
|
+
import { fileURLToPath } from "node:url";
|
|
4
|
+
import { EVALUATOR_DETECTOR_COVERAGE, EVALUATOR_PROTOCOL, EVALUATOR_PROTOCOL_VERSION, decodeEvaluatorFrame, } from "./evaluator-protocol.js";
|
|
5
|
+
import { allowlistedEnvironment, createEvaluatorRequest, } from "./evaluator-request.js";
|
|
6
|
+
import { appendDataModels, isolateDataModels } from "./data-model-isolation.js";
|
|
7
|
+
export * from "./evaluator-protocol.js";
|
|
8
|
+
export { DEFAULT_ENVIRONMENT_ALLOWLIST, DEFAULT_EVALUATOR_TIMEOUT_MS, } from "./evaluator-request.js";
|
|
9
|
+
/** Evaluates only AST-prefilter candidates in a short-lived Bun child process. */
|
|
10
|
+
export async function evaluateCandidates(options) {
|
|
11
|
+
let request;
|
|
12
|
+
const generationId = options.generationId ?? crypto.randomUUID();
|
|
13
|
+
const isolated = areAstCandidates(options.candidates)
|
|
14
|
+
? isolateDataModels(options.candidates, generationId)
|
|
15
|
+
: { evaluated: options.candidates, modules: [] };
|
|
16
|
+
try {
|
|
17
|
+
request = createEvaluatorRequest({
|
|
18
|
+
...options,
|
|
19
|
+
generationId,
|
|
20
|
+
candidates: isolated.evaluated,
|
|
21
|
+
});
|
|
22
|
+
}
|
|
23
|
+
catch (error) {
|
|
24
|
+
return failedResponse(options.generationId ?? "unknown", options.sourceMaps ?? true, failure("RELKIT_EVALUATOR_REQUEST_INVALID", errorMessage(error), options.generationId));
|
|
25
|
+
}
|
|
26
|
+
const childPath = evaluatorChildPath();
|
|
27
|
+
let child;
|
|
28
|
+
try {
|
|
29
|
+
child = Bun.spawn([process.execPath, "run", "--no-env-file", "--no-install", "--silent", childPath], {
|
|
30
|
+
cwd: request.projectRoot,
|
|
31
|
+
env: allowlistedEnvironment(request.environmentAllowlist),
|
|
32
|
+
stdin: "pipe",
|
|
33
|
+
stdout: "pipe",
|
|
34
|
+
stderr: "pipe",
|
|
35
|
+
});
|
|
36
|
+
}
|
|
37
|
+
catch (error) {
|
|
38
|
+
return failedResponse(request.generationId, request.sourceMaps, failure("RELKIT_EVALUATOR_PROCESS_FAILED", errorMessage(error), request.generationId));
|
|
39
|
+
}
|
|
40
|
+
const stdoutPromise = new Response(child.stdout).text();
|
|
41
|
+
const stderrPromise = new Response(child.stderr).text();
|
|
42
|
+
await child.stdin.write(canonicalJson(request));
|
|
43
|
+
child.stdin.end();
|
|
44
|
+
const exit = child.exited.then((exitCode) => ({ kind: "exit", exitCode }));
|
|
45
|
+
let timer;
|
|
46
|
+
const timeout = new Promise((resolveTimeout) => {
|
|
47
|
+
timer = setTimeout(() => resolveTimeout({ kind: "timeout" }), request.timeoutMs);
|
|
48
|
+
});
|
|
49
|
+
const outcome = await Promise.race([exit, timeout]);
|
|
50
|
+
clearTimeout(timer);
|
|
51
|
+
if (outcome.kind === "timeout")
|
|
52
|
+
child.kill();
|
|
53
|
+
const exitCode = outcome.kind === "exit" ? outcome.exitCode : await child.exited;
|
|
54
|
+
const [rawStdout, stderr] = await Promise.all([stdoutPromise, stderrPromise]);
|
|
55
|
+
const framed = decodeEvaluatorFrame(rawStdout);
|
|
56
|
+
if (framed === undefined) {
|
|
57
|
+
return failedResponse(request.generationId, request.sourceMaps, failure(outcome.kind === "timeout"
|
|
58
|
+
? "RELKIT_EVALUATOR_TIMEOUT"
|
|
59
|
+
: "RELKIT_EVALUATOR_PROTOCOL_INVALID", outcome.kind === "timeout"
|
|
60
|
+
? `Evaluator exceeded ${request.timeoutMs}ms and was killed.`
|
|
61
|
+
: "Evaluator exited without a valid versioned response frame.", request.generationId, { exitCode, timedOut: outcome.kind === "timeout", stdout: rawStdout, stderr }), rawStdout, stderr);
|
|
62
|
+
}
|
|
63
|
+
const response = {
|
|
64
|
+
...framed.response,
|
|
65
|
+
stdout: joinOutput(framed.response.stdout, framed.stdout),
|
|
66
|
+
stderr: joinOutput(framed.response.stderr, stderr),
|
|
67
|
+
};
|
|
68
|
+
if (response.generationId !== request.generationId ||
|
|
69
|
+
(exitCode !== 0 && response.status === "ok")) {
|
|
70
|
+
return failedResponse(request.generationId, request.sourceMaps, failure("RELKIT_EVALUATOR_PROTOCOL_INVALID", "Evaluator response identity or exit status was invalid.", request.generationId, {
|
|
71
|
+
exitCode,
|
|
72
|
+
stdout: response.stdout,
|
|
73
|
+
stderr: response.stderr,
|
|
74
|
+
}), response.stdout, response.stderr);
|
|
75
|
+
}
|
|
76
|
+
return appendDataModels({
|
|
77
|
+
...response,
|
|
78
|
+
failures: response.failures.map((entry) => ({
|
|
79
|
+
...entry,
|
|
80
|
+
...(response.stdout === "" ? {} : { stdout: response.stdout }),
|
|
81
|
+
...(response.stderr === "" ? {} : { stderr: response.stderr }),
|
|
82
|
+
})),
|
|
83
|
+
}, isolated.modules);
|
|
84
|
+
}
|
|
85
|
+
function areAstCandidates(candidates) {
|
|
86
|
+
return candidates.every((candidate) => typeof candidate !== "string" && "factories" in candidate && "facts" in candidate);
|
|
87
|
+
}
|
|
88
|
+
function joinOutput(protocolOutput, rawOutput) {
|
|
89
|
+
return protocolOutput === ""
|
|
90
|
+
? rawOutput
|
|
91
|
+
: rawOutput === ""
|
|
92
|
+
? protocolOutput
|
|
93
|
+
: `${protocolOutput}${rawOutput}`;
|
|
94
|
+
}
|
|
95
|
+
function failedResponse(generationId, sourceMaps, entry, stdout = "", stderr = "") {
|
|
96
|
+
return {
|
|
97
|
+
protocol: EVALUATOR_PROTOCOL,
|
|
98
|
+
version: EVALUATOR_PROTOCOL_VERSION,
|
|
99
|
+
generationId,
|
|
100
|
+
sourceMaps,
|
|
101
|
+
status: "failed",
|
|
102
|
+
modules: [],
|
|
103
|
+
failures: [
|
|
104
|
+
{ ...entry, ...(stdout === "" ? {} : { stdout }), ...(stderr === "" ? {} : { stderr }) },
|
|
105
|
+
],
|
|
106
|
+
detectorCoverage: EVALUATOR_DETECTOR_COVERAGE,
|
|
107
|
+
stdout,
|
|
108
|
+
stderr,
|
|
109
|
+
};
|
|
110
|
+
}
|
|
111
|
+
function failure(code, message, generationId = "unknown", details = {}) {
|
|
112
|
+
return { code, message, generationId, ...details };
|
|
113
|
+
}
|
|
114
|
+
function errorMessage(error) {
|
|
115
|
+
return error instanceof Error ? error.message : String(error);
|
|
116
|
+
}
|
|
117
|
+
function evaluatorChildPath() {
|
|
118
|
+
const compiledPath = fileURLToPath(new URL("./evaluator-child.js", import.meta.url));
|
|
119
|
+
return existsSync(compiledPath)
|
|
120
|
+
? compiledPath
|
|
121
|
+
: fileURLToPath(new URL("./evaluator-child.ts", import.meta.url));
|
|
122
|
+
}
|
|
123
|
+
//# sourceMappingURL=evaluator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"evaluator.js","sourceRoot":"","sources":["../../src/discovery/evaluator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EACL,2BAA2B,EAC3B,kBAAkB,EAClB,0BAA0B,EAI1B,oBAAoB,GACrB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EACL,sBAAsB,EACtB,sBAAsB,GAEvB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAGhF,cAAc,yBAAyB,CAAC;AACxC,OAAO,EACL,6BAA6B,EAC7B,4BAA4B,GAC7B,MAAM,wBAAwB,CAAC;AAGhC,kFAAkF;AAClF,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,OAAyB;IAChE,IAAI,OAAyB,CAAC;IAC9B,MAAM,YAAY,GAAG,OAAO,CAAC,YAAY,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC;IACjE,MAAM,QAAQ,GAAG,gBAAgB,CAAC,OAAO,CAAC,UAAU,CAAC;QACnD,CAAC,CAAC,iBAAiB,CAAC,OAAO,CAAC,UAAU,EAAE,YAAY,CAAC;QACrD,CAAC,CAAC,EAAE,SAAS,EAAE,OAAO,CAAC,UAAU,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;IACnD,IAAI,CAAC;QACH,OAAO,GAAG,sBAAsB,CAAC;YAC/B,GAAG,OAAO;YACV,YAAY;YACZ,UAAU,EAAE,QAAQ,CAAC,SAAS;SAC/B,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,cAAc,CACnB,OAAO,CAAC,YAAY,IAAI,SAAS,EACjC,OAAO,CAAC,UAAU,IAAI,IAAI,EAC1B,OAAO,CAAC,kCAAkC,EAAE,YAAY,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC,YAAY,CAAC,CACvF,CAAC;IACJ,CAAC;IACD,MAAM,SAAS,GAAG,kBAAkB,EAAE,CAAC;IACvC,IAAI,KAA6C,CAAC;IAClD,IAAI,CAAC;QACH,KAAK,GAAG,GAAG,CAAC,KAAK,CACf,CAAC,OAAO,CAAC,QAAQ,EAAE,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,UAAU,EAAE,SAAS,CAAC,EACjF;YACE,GAAG,EAAE,OAAO,CAAC,WAAW;YACxB,GAAG,EAAE,sBAAsB,CAAC,OAAO,CAAC,oBAAoB,CAAC;YACzD,KAAK,EAAE,MAAM;YACb,MAAM,EAAE,MAAM;YACd,MAAM,EAAE,MAAM;SACf,CACF,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,cAAc,CACnB,OAAO,CAAC,YAAY,EACpB,OAAO,CAAC,UAAU,EAClB,OAAO,CAAC,iCAAiC,EAAE,YAAY,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC,YAAY,CAAC,CACtF,CAAC;IACJ,CAAC;IACD,MAAM,aAAa,GAAG,IAAI,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC;IACxD,MAAM,aAAa,GAAG,IAAI,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC;IACxD,MAAM,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC;IAChD,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC;IAClB,MAAM,IAAI,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC;IACpF,IAAI,KAAqC,CAAC;IAC1C,MAAM,OAAO,GAAG,IAAI,OAAO,CAA+B,CAAC,cAAc,EAAE,EAAE;QAC3E,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,cAAc,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC;IACnF,CAAC,CAAC,CAAC;IACH,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC;IACpD,YAAY,CAAC,KAAK,CAAC,CAAC;IACpB,IAAI,OAAO,CAAC,IAAI,KAAK,SAAS;QAAE,KAAK,CAAC,IAAI,EAAE,CAAC;IAC7C,MAAM,QAAQ,GAAG,OAAO,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,KAAK,CAAC,MAAM,CAAC;IACjF,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC,aAAa,EAAE,aAAa,CAAC,CAAC,CAAC;IAC9E,MAAM,MAAM,GAAG,oBAAoB,CAAC,SAAS,CAAC,CAAC;IAC/C,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;QACzB,OAAO,cAAc,CACnB,OAAO,CAAC,YAAY,EACpB,OAAO,CAAC,UAAU,EAClB,OAAO,CACL,OAAO,CAAC,IAAI,KAAK,SAAS;YACxB,CAAC,CAAC,0BAA0B;YAC5B,CAAC,CAAC,mCAAmC,EACvC,OAAO,CAAC,IAAI,KAAK,SAAS;YACxB,CAAC,CAAC,sBAAsB,OAAO,CAAC,SAAS,oBAAoB;YAC7D,CAAC,CAAC,4DAA4D,EAChE,OAAO,CAAC,YAAY,EACpB,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,CAAC,IAAI,KAAK,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,CAC9E,EACD,SAAS,EACT,MAAM,CACP,CAAC;IACJ,CAAC;IACD,MAAM,QAAQ,GAAG;QACf,GAAG,MAAM,CAAC,QAAQ;QAClB,MAAM,EAAE,UAAU,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC;QACzD,MAAM,EAAE,UAAU,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;KACvB,CAAC;IAC9B,IACE,QAAQ,CAAC,YAAY,KAAK,OAAO,CAAC,YAAY;QAC9C,CAAC,QAAQ,KAAK,CAAC,IAAI,QAAQ,CAAC,MAAM,KAAK,IAAI,CAAC,EAC5C,CAAC;QACD,OAAO,cAAc,CACnB,OAAO,CAAC,YAAY,EACpB,OAAO,CAAC,UAAU,EAClB,OAAO,CACL,mCAAmC,EACnC,yDAAyD,EACzD,OAAO,CAAC,YAAY,EACpB;YACE,QAAQ;YACR,MAAM,EAAE,QAAQ,CAAC,MAAM;YACvB,MAAM,EAAE,QAAQ,CAAC,MAAM;SACxB,CACF,EACD,QAAQ,CAAC,MAAM,EACf,QAAQ,CAAC,MAAM,CAChB,CAAC;IACJ,CAAC;IACD,OAAO,gBAAgB,CACrB;QACE,GAAG,QAAQ;QACX,QAAQ,EAAE,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;YAC1C,GAAG,KAAK;YACR,GAAG,CAAC,QAAQ,CAAC,MAAM,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC,MAAM,EAAE,CAAC;YAC9D,GAAG,CAAC,QAAQ,CAAC,MAAM,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC,MAAM,EAAE,CAAC;SAC/D,CAAC,CAAC;KACJ,EACD,QAAQ,CAAC,OAAO,CACjB,CAAC;AACJ,CAAC;AAED,SAAS,gBAAgB,CACvB,UAA0C;IAE1C,OAAO,UAAU,CAAC,KAAK,CACrB,CAAC,SAAS,EAAE,EAAE,CACZ,OAAO,SAAS,KAAK,QAAQ,IAAI,WAAW,IAAI,SAAS,IAAI,OAAO,IAAI,SAAS,CACpF,CAAC;AACJ,CAAC;AAED,SAAS,UAAU,CAAC,cAAsB,EAAE,SAAiB;IAC3D,OAAO,cAAc,KAAK,EAAE;QAC1B,CAAC,CAAC,SAAS;QACX,CAAC,CAAC,SAAS,KAAK,EAAE;YAChB,CAAC,CAAC,cAAc;YAChB,CAAC,CAAC,GAAG,cAAc,GAAG,SAAS,EAAE,CAAC;AACxC,CAAC;AAED,SAAS,cAAc,CACrB,YAAoB,EACpB,UAAmB,EACnB,KAAuB,EACvB,MAAM,GAAG,EAAE,EACX,MAAM,GAAG,EAAE;IAEX,OAAO;QACL,QAAQ,EAAE,kBAAkB;QAC5B,OAAO,EAAE,0BAA0B;QACnC,YAAY;QACZ,UAAU;QACV,MAAM,EAAE,QAAQ;QAChB,OAAO,EAAE,EAAE;QACX,QAAQ,EAAE;YACR,EAAE,GAAG,KAAK,EAAE,GAAG,CAAC,MAAM,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,GAAG,CAAC,MAAM,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE;SACzF;QACD,gBAAgB,EAAE,2BAA2B;QAC7C,MAAM;QACN,MAAM;KACP,CAAC;AACJ,CAAC;AACD,SAAS,OAAO,CACd,IAA8B,EAC9B,OAAe,EACf,YAAY,GAAG,SAAS,EACxB,UAAiF,EAAE;IAEnF,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,YAAY,EAAE,GAAG,OAAO,EAAE,CAAC;AACrD,CAAC;AACD,SAAS,YAAY,CAAC,KAAc;IAClC,OAAO,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAChE,CAAC;AAED,SAAS,kBAAkB;IACzB,MAAM,YAAY,GAAG,aAAa,CAAC,IAAI,GAAG,CAAC,sBAAsB,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;IACrF,OAAO,UAAU,CAAC,YAAY,CAAC;QAC7B,CAAC,CAAC,YAAY;QACd,CAAC,CAAC,aAAa,CAAC,IAAI,GAAG,CAAC,sBAAsB,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AACtE,CAAC"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { type SourceLocation } from "@relkit/contracts";
|
|
2
|
+
import type { EvaluatorDescriptorSnapshot, EvaluatorManifestReference, EvaluatorModuleResult, EvaluatorResponse } from "./evaluator-protocol.js";
|
|
3
|
+
import { type ExportKind, type SourceMapEntry, type SourceMapOptions } from "./source-map.js";
|
|
4
|
+
import type { ExportFact, ExportFacts } from "./source-map-utils.js";
|
|
5
|
+
export interface ExtractOptions extends SourceMapOptions {
|
|
6
|
+
readonly generationId?: string;
|
|
7
|
+
readonly sourceMap?: readonly SourceMapEntry[];
|
|
8
|
+
}
|
|
9
|
+
export interface ExtractedDescriptor {
|
|
10
|
+
readonly descriptor: EvaluatorDescriptorSnapshot;
|
|
11
|
+
readonly exportName: string;
|
|
12
|
+
readonly exportKind: ExportKind;
|
|
13
|
+
readonly source: SourceLocation;
|
|
14
|
+
readonly facts?: ExportFacts;
|
|
15
|
+
readonly exportFact?: ExportFact;
|
|
16
|
+
readonly reference: EvaluatorManifestReference;
|
|
17
|
+
}
|
|
18
|
+
export type ExtractionInput = EvaluatorResponse | readonly EvaluatorModuleResult[];
|
|
19
|
+
/** Extracts only evaluator snapshots and data-only executable reference instructions. */
|
|
20
|
+
export declare function extractDescriptors(input: ExtractionInput, options?: ExtractOptions): readonly ExtractedDescriptor[];
|
|
21
|
+
//# sourceMappingURL=extract.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"extract.d.ts","sourceRoot":"","sources":["../../src/discovery/extract.ts"],"names":[],"mappings":"AAAA,OAAO,EAA6C,KAAK,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnG,OAAO,KAAK,EACV,2BAA2B,EAE3B,0BAA0B,EAC1B,qBAAqB,EACrB,iBAAiB,EAClB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAEL,KAAK,UAAU,EACf,KAAK,cAAc,EACnB,KAAK,gBAAgB,EACtB,MAAM,iBAAiB,CAAC;AACzB,OAAO,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAGrE,MAAM,WAAW,cAAe,SAAQ,gBAAgB;IACtD,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,SAAS,CAAC,EAAE,SAAS,cAAc,EAAE,CAAC;CAChD;AAED,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,UAAU,EAAE,2BAA2B,CAAC;IACjD,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,UAAU,EAAE,UAAU,CAAC;IAChC,QAAQ,CAAC,MAAM,EAAE,cAAc,CAAC;IAChC,QAAQ,CAAC,KAAK,CAAC,EAAE,WAAW,CAAC;IAC7B,QAAQ,CAAC,UAAU,CAAC,EAAE,UAAU,CAAC;IACjC,QAAQ,CAAC,SAAS,EAAE,0BAA0B,CAAC;CAChD;AAED,MAAM,MAAM,eAAe,GAAG,iBAAiB,GAAG,SAAS,qBAAqB,EAAE,CAAC;AAEnF,yFAAyF;AACzF,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,eAAe,EACtB,OAAO,GAAE,cAAmB,GAC3B,SAAS,mBAAmB,EAAE,CAkChC"}
|