reeval 0.0.1
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 +202 -0
- package/THIRD_PARTY_NOTICES.md +2160 -0
- package/assets/package.json +9 -0
- package/assets/pnpm-lock.yaml +1336 -0
- package/dist/agent-DVHkx8aT.js +532 -0
- package/dist/agent-DVHkx8aT.js.map +1 -0
- package/dist/analysis-CxSCt1YY.js +16 -0
- package/dist/analysis-CxSCt1YY.js.map +1 -0
- package/dist/assemble-B-nmz8oH.js +695 -0
- package/dist/assemble-B-nmz8oH.js.map +1 -0
- package/dist/assemble-CmRVDZ2Q.js +2 -0
- package/dist/attempt-BdRQ9jKX.js +176 -0
- package/dist/attempt-BdRQ9jKX.js.map +1 -0
- package/dist/bridge/index.mjs +1911 -0
- package/dist/bridge/package.json +13 -0
- package/dist/bridge/pnpm-lock.yaml +1041 -0
- package/dist/bridge/pnpm-workspace.yaml +2 -0
- package/dist/budget-DBUrH4jX.js +8 -0
- package/dist/budget-DBUrH4jX.js.map +1 -0
- package/dist/cli--CQ3Iy9q.js +1865 -0
- package/dist/cli--CQ3Iy9q.js.map +1 -0
- package/dist/cli-spec-DKAu09Gi.js +478 -0
- package/dist/cli-spec-DKAu09Gi.js.map +1 -0
- package/dist/cli.d.ts +1 -0
- package/dist/cli.js +8 -0
- package/dist/cli.js.map +1 -0
- package/dist/colors-QV9dFVhN.js +34 -0
- package/dist/colors-QV9dFVhN.js.map +1 -0
- package/dist/command-BSJzHMtP.js +280 -0
- package/dist/command-BSJzHMtP.js.map +1 -0
- package/dist/command-CEm8PZ1N.js +1043 -0
- package/dist/command-CEm8PZ1N.js.map +1 -0
- package/dist/command-D-jnQWVG.js +673 -0
- package/dist/command-D-jnQWVG.js.map +1 -0
- package/dist/command-DQAvbG7d.js +432 -0
- package/dist/command-DQAvbG7d.js.map +1 -0
- package/dist/commands-A4udfyKZ.js +2 -0
- package/dist/commands-CF8mOfiu.js +207 -0
- package/dist/commands-CF8mOfiu.js.map +1 -0
- package/dist/config-Cuj0kVYj.js +415 -0
- package/dist/config-Cuj0kVYj.js.map +1 -0
- package/dist/context-loi9OCZv.js +106 -0
- package/dist/context-loi9OCZv.js.map +1 -0
- package/dist/core-tLN-z1Be.js +96 -0
- package/dist/core-tLN-z1Be.js.map +1 -0
- package/dist/db-Cjj2ZsfQ.js +2 -0
- package/dist/db-DxDzMhtB.js +827 -0
- package/dist/db-DxDzMhtB.js.map +1 -0
- package/dist/debug-D24NOQH1.js +89 -0
- package/dist/debug-D24NOQH1.js.map +1 -0
- package/dist/debug-SEmW4w8f.js +2 -0
- package/dist/dist-BZXYHN2X.js +1673 -0
- package/dist/dist-BZXYHN2X.js.map +1 -0
- package/dist/docker-DQDZWXF9.js +20 -0
- package/dist/docker-DQDZWXF9.js.map +1 -0
- package/dist/docker-DnWAVdEm.js +2 -0
- package/dist/docker-oSbCExHL.js +153 -0
- package/dist/docker-oSbCExHL.js.map +1 -0
- package/dist/doctor-CxlH1pDM.js +525 -0
- package/dist/doctor-CxlH1pDM.js.map +1 -0
- package/dist/egress-73SQfKdx.js +619 -0
- package/dist/egress-73SQfKdx.js.map +1 -0
- package/dist/env-BQqj93gu.js +21 -0
- package/dist/env-BQqj93gu.js.map +1 -0
- package/dist/environment-Mz7wvrtD.js +552 -0
- package/dist/environment-Mz7wvrtD.js.map +1 -0
- package/dist/errors-C9w_ud7g.js +160 -0
- package/dist/errors-C9w_ud7g.js.map +1 -0
- package/dist/errors-CSxfJ4qu.js +11 -0
- package/dist/errors-CSxfJ4qu.js.map +1 -0
- package/dist/files--6CEUXm7.js +2 -0
- package/dist/files-BLlrhU4-.js +62 -0
- package/dist/files-BLlrhU4-.js.map +1 -0
- package/dist/files-Bd25OAQH.js +2 -0
- package/dist/files-BvHCFWgD.js +2 -0
- package/dist/files-D2-qn_Dl.js +275 -0
- package/dist/files-D2-qn_Dl.js.map +1 -0
- package/dist/files-bF2fPuT9.js +99 -0
- package/dist/files-bF2fPuT9.js.map +1 -0
- package/dist/git-D6hMeieS.js +44 -0
- package/dist/git-D6hMeieS.js.map +1 -0
- package/dist/harness-ls5aX1UO.js +131 -0
- package/dist/harness-ls5aX1UO.js.map +1 -0
- package/dist/harness.d.ts +74 -0
- package/dist/harness.js +2 -0
- package/dist/header-DzFDoMCI.js +78 -0
- package/dist/header-DzFDoMCI.js.map +1 -0
- package/dist/ids-Bp6ut7ZD.js +49 -0
- package/dist/ids-Bp6ut7ZD.js.map +1 -0
- package/dist/images-Cc1-coFc.js +286 -0
- package/dist/images-Cc1-coFc.js.map +1 -0
- package/dist/index.d.ts +97 -0
- package/dist/index.js +1959 -0
- package/dist/index.js.map +1 -0
- package/dist/init-CFljS8BJ.js +344 -0
- package/dist/init-CFljS8BJ.js.map +1 -0
- package/dist/init-z2ZPn9Tj.js +2 -0
- package/dist/invocations-rXktgSAn.js +157 -0
- package/dist/invocations-rXktgSAn.js.map +1 -0
- package/dist/jiti-BOLXpKyG.js +46 -0
- package/dist/jiti-BOLXpKyG.js.map +1 -0
- package/dist/judge-D8Uf4dA9.js +146 -0
- package/dist/judge-D8Uf4dA9.js.map +1 -0
- package/dist/judge.d.ts +21 -0
- package/dist/judge.js +19 -0
- package/dist/judge.js.map +1 -0
- package/dist/live-Bs3LReMV.js +98 -0
- package/dist/live-Bs3LReMV.js.map +1 -0
- package/dist/matchers-DyLvm7EG.js +374 -0
- package/dist/matchers-DyLvm7EG.js.map +1 -0
- package/dist/model-BdO79gWz.js +44 -0
- package/dist/model-BdO79gWz.js.map +1 -0
- package/dist/model-CDL98xue.js +725 -0
- package/dist/model-CDL98xue.js.map +1 -0
- package/dist/model-v-0_Ik7S.js +2 -0
- package/dist/node-kG64XxdE.js +506 -0
- package/dist/node-kG64XxdE.js.map +1 -0
- package/dist/opencode-providers-DZuD_oYt.js +3149 -0
- package/dist/opencode-providers-DZuD_oYt.js.map +1 -0
- package/dist/options-CAQhu--C.js +452 -0
- package/dist/options-CAQhu--C.js.map +1 -0
- package/dist/patch-BkKje4cp.js +69 -0
- package/dist/patch-BkKje4cp.js.map +1 -0
- package/dist/paths-CBvm6pap.js +72 -0
- package/dist/paths-CBvm6pap.js.map +1 -0
- package/dist/plan-gwk6dJ8c.js +237 -0
- package/dist/plan-gwk6dJ8c.js.map +1 -0
- package/dist/preflight-BtubXKQ8.js +2 -0
- package/dist/preflight-BypZMNBG.js +185 -0
- package/dist/preflight-BypZMNBG.js.map +1 -0
- package/dist/prepare-Cwv0bHs_.js +3 -0
- package/dist/prepare-D6Uzcubb.js +213 -0
- package/dist/prepare-D6Uzcubb.js.map +1 -0
- package/dist/provenance-Dfb8YY5Y.js +129 -0
- package/dist/provenance-Dfb8YY5Y.js.map +1 -0
- package/dist/provider-BDbNOQhQ.js +2 -0
- package/dist/provider-CmAYTQQs.js +14 -0
- package/dist/provider-CmAYTQQs.js.map +1 -0
- package/dist/providers-2p3ylMHI.js +107 -0
- package/dist/providers-2p3ylMHI.js.map +1 -0
- package/dist/providers-BUOxitcT.js +2 -0
- package/dist/query-CFATHZmV.js +91 -0
- package/dist/query-CFATHZmV.js.map +1 -0
- package/dist/query-DR4m6CXf.js +2 -0
- package/dist/record-DQ8wzyco.js +99 -0
- package/dist/record-DQ8wzyco.js.map +1 -0
- package/dist/redact-C4fL_bZP.js +167 -0
- package/dist/redact-C4fL_bZP.js.map +1 -0
- package/dist/results-CeXb8Wde.js +37 -0
- package/dist/results-CeXb8Wde.js.map +1 -0
- package/dist/root-CFDjpWuc.js +110 -0
- package/dist/root-CFDjpWuc.js.map +1 -0
- package/dist/sandbox-By2gkdkC.js +133 -0
- package/dist/sandbox-By2gkdkC.js.map +1 -0
- package/dist/sandbox.d.ts +41 -0
- package/dist/sandbox.js +2 -0
- package/dist/server-Bi61uiY0.js +350 -0
- package/dist/server-Bi61uiY0.js.map +1 -0
- package/dist/server-CsSBL8NC.js +2 -0
- package/dist/source-BXzrmof5.js +2 -0
- package/dist/source-Bsfa3LZH.js +40 -0
- package/dist/source-Bsfa3LZH.js.map +1 -0
- package/dist/src-55j1zNHH.js +3 -0
- package/dist/src-AEwxd1UP.js +602 -0
- package/dist/src-AEwxd1UP.js.map +1 -0
- package/dist/src-BDwSuyIo.js +3 -0
- package/dist/src-BQyMiWri.js +490 -0
- package/dist/src-BQyMiWri.js.map +1 -0
- package/dist/src-C-LHyTSV.js +3 -0
- package/dist/src-Cmp-7YrD.js +1136 -0
- package/dist/src-Cmp-7YrD.js.map +1 -0
- package/dist/src-D0RdqpNb.js +252 -0
- package/dist/src-D0RdqpNb.js.map +1 -0
- package/dist/src-D8KYzxBX.js +793 -0
- package/dist/src-D8KYzxBX.js.map +1 -0
- package/dist/src-DEgff9Z7.js +4 -0
- package/dist/src-DXx_29pq.js +567 -0
- package/dist/src-DXx_29pq.js.map +1 -0
- package/dist/src-DwwiVLqv.js +2937 -0
- package/dist/src-DwwiVLqv.js.map +1 -0
- package/dist/src-N7E_mfcZ.js +2 -0
- package/dist/src-W9g-y5X5.js +3 -0
- package/dist/src-daS0wKH2.js +3 -0
- package/dist/state-Cyw3QTsN.js +2 -0
- package/dist/state-DZ7eqb1F.js +167 -0
- package/dist/state-DZ7eqb1F.js.map +1 -0
- package/dist/stats-BNAHlNMD.js +114 -0
- package/dist/stats-BNAHlNMD.js.map +1 -0
- package/dist/studio-app/assets/index-D6XyfFSH.js +58 -0
- package/dist/studio-app/assets/index-xwzWdcE_.css +2 -0
- package/dist/studio-app/favicon.svg +1 -0
- package/dist/studio-app/index.html +15 -0
- package/dist/summary-D7Ttky0z.js +166 -0
- package/dist/summary-D7Ttky0z.js.map +1 -0
- package/dist/text-gEcKjAyp.js +29 -0
- package/dist/text-gEcKjAyp.js.map +1 -0
- package/dist/types-C5vI3g1C.js +9 -0
- package/dist/types-C5vI3g1C.js.map +1 -0
- package/dist/types-DLec-6Cx.d.ts +1535 -0
- package/dist/usage-DsYUqIUM.js +24 -0
- package/dist/usage-DsYUqIUM.js.map +1 -0
- package/dist/view/index.d.ts +645 -0
- package/dist/view/index.js +8 -0
- package/dist/views-BrHOv6wg.js +220 -0
- package/dist/views-BrHOv6wg.js.map +1 -0
- package/dist/views-CwCWLWqo.js +3 -0
- package/dist/worker-entry-DnYkANPG.js +506 -0
- package/dist/worker-entry-DnYkANPG.js.map +1 -0
- package/dist/workspace-C2S0Z6gl.js +327 -0
- package/dist/workspace-C2S0Z6gl.js.map +1 -0
- package/dist/workspace-CyoXG6CY.js +2 -0
- package/docker/Dockerfile +19 -0
- package/package.json +79 -0
|
@@ -0,0 +1,374 @@
|
|
|
1
|
+
import { t as UsageError } from "./errors-CSxfJ4qu.js";
|
|
2
|
+
import { t as Scheduler } from "./core-tLN-z1Be.js";
|
|
3
|
+
import { AsyncLocalStorage } from "node:async_hooks";
|
|
4
|
+
import { ASYMMETRIC_MATCHERS_OBJECT, GLOBAL_EXPECT, JestAsymmetricMatchers, JestChaiExpect, JestExtend, addCustomEqualityTesters, chai, customMatchers, getState, setState } from "@vitest/expect";
|
|
5
|
+
//#region src/engine/expect.ts
|
|
6
|
+
chai.use(JestExtend);
|
|
7
|
+
chai.use(JestChaiExpect);
|
|
8
|
+
chai.use(JestAsymmetricMatchers);
|
|
9
|
+
/** An `expect` of its own for one attempt (or, without a task, the worker's). */
|
|
10
|
+
function createExpect(task) {
|
|
11
|
+
const expect = ((value, message) => {
|
|
12
|
+
const { assertionCalls } = getState(expect);
|
|
13
|
+
setState({ assertionCalls: assertionCalls + 1 }, expect);
|
|
14
|
+
const assertion = chai.expect(value, message);
|
|
15
|
+
return task ? assertion.withTest(task) : assertion;
|
|
16
|
+
});
|
|
17
|
+
Object.assign(expect, chai.expect);
|
|
18
|
+
Object.assign(expect, globalThis[ASYMMETRIC_MATCHERS_OBJECT]);
|
|
19
|
+
expect.getState = () => getState(expect);
|
|
20
|
+
expect.setState = (state) => setState(state, expect);
|
|
21
|
+
setState({
|
|
22
|
+
assertionCalls: 0,
|
|
23
|
+
isExpectingAssertions: false,
|
|
24
|
+
isExpectingAssertionsError: null,
|
|
25
|
+
expectedAssertionsNumber: null,
|
|
26
|
+
expectedAssertionsNumberErrorGen: null,
|
|
27
|
+
currentTestName: task?.fullTestName ?? ""
|
|
28
|
+
}, expect);
|
|
29
|
+
expect.assert = chai.assert;
|
|
30
|
+
expect.extend = (matchers) => chai.expect.extend(expect, matchers);
|
|
31
|
+
expect.addEqualityTesters = (testers) => addCustomEqualityTesters(testers);
|
|
32
|
+
expect.soft = (value, message) => expect(value, message).withContext({ soft: true });
|
|
33
|
+
expect.poll = createPoll(expect);
|
|
34
|
+
expect.unreachable = (message) => {
|
|
35
|
+
chai.assert.fail(`expected${message ? ` "${message}" ` : " "}not to be reached`);
|
|
36
|
+
};
|
|
37
|
+
function assertions(expected) {
|
|
38
|
+
const errorGen = () => /* @__PURE__ */ new Error(`expected number of assertions to be ${expected}, but got ${expect.getState().assertionCalls}`);
|
|
39
|
+
setState({
|
|
40
|
+
expectedAssertionsNumber: expected,
|
|
41
|
+
expectedAssertionsNumberErrorGen: errorGen
|
|
42
|
+
}, expect);
|
|
43
|
+
}
|
|
44
|
+
function hasAssertions() {
|
|
45
|
+
setState({
|
|
46
|
+
isExpectingAssertions: true,
|
|
47
|
+
isExpectingAssertionsError: /* @__PURE__ */ new Error("expected any number of assertion, but got none")
|
|
48
|
+
}, expect);
|
|
49
|
+
}
|
|
50
|
+
chai.util.addMethod(expect, "assertions", assertions);
|
|
51
|
+
chai.util.addMethod(expect, "hasAssertions", hasAssertions);
|
|
52
|
+
expect.extend(customMatchers);
|
|
53
|
+
return expect;
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* `expect.poll(fn).matcher()`: calls `fn` and the matcher until the matcher passes, every
|
|
57
|
+
* `interval` ms, for at most `timeout` ms, then fails with the last error.
|
|
58
|
+
*/
|
|
59
|
+
function createPoll(expect) {
|
|
60
|
+
return (fn, options = {}) => {
|
|
61
|
+
const { interval = 50, timeout = 1e3, message } = options;
|
|
62
|
+
const assertion = expect(null, message);
|
|
63
|
+
chai.util.flag(assertion, "poll", true);
|
|
64
|
+
const proxy = new Proxy(assertion, { get(target, key, receiver) {
|
|
65
|
+
const matcher = Reflect.get(target, key, receiver);
|
|
66
|
+
if (typeof matcher !== "function") return matcher instanceof chai.Assertion ? proxy : matcher;
|
|
67
|
+
return (...args) => {
|
|
68
|
+
const location = /* @__PURE__ */ new Error("expect.poll");
|
|
69
|
+
return (async () => {
|
|
70
|
+
const deadline = Date.now() + timeout;
|
|
71
|
+
const signal = AbortSignal.timeout(timeout);
|
|
72
|
+
for (;;) try {
|
|
73
|
+
chai.util.flag(assertion, "object", await fn({ signal }));
|
|
74
|
+
return await Reflect.apply(matcher, assertion, args);
|
|
75
|
+
} catch (error) {
|
|
76
|
+
if (Date.now() + interval >= deadline) {
|
|
77
|
+
if (error instanceof Error && location.stack) error.stack = location.stack.replace(location.message, error.message);
|
|
78
|
+
throw error;
|
|
79
|
+
}
|
|
80
|
+
await new Promise((resolve) => setTimeout(resolve, interval));
|
|
81
|
+
}
|
|
82
|
+
})();
|
|
83
|
+
};
|
|
84
|
+
} });
|
|
85
|
+
return proxy;
|
|
86
|
+
};
|
|
87
|
+
}
|
|
88
|
+
/** The failure `expect.assertions`, `expect.hasAssertions` or `expect.soft` left on an attempt. */
|
|
89
|
+
function attemptExpectError(expect, task) {
|
|
90
|
+
const [soft] = task.result?.errors ?? [];
|
|
91
|
+
if (soft) return Object.assign(/* @__PURE__ */ new Error(), soft);
|
|
92
|
+
const state = expect.getState();
|
|
93
|
+
if (state.expectedAssertionsNumber !== null && state.expectedAssertionsNumber !== state.assertionCalls) return state.expectedAssertionsNumberErrorGen();
|
|
94
|
+
if (state.isExpectingAssertions && state.assertionCalls === 0) return state.isExpectingAssertionsError;
|
|
95
|
+
}
|
|
96
|
+
const globalExpect = createExpect();
|
|
97
|
+
Object.defineProperty(globalThis, GLOBAL_EXPECT, {
|
|
98
|
+
value: globalExpect,
|
|
99
|
+
writable: true,
|
|
100
|
+
configurable: true
|
|
101
|
+
});
|
|
102
|
+
const currentExpect = new AsyncLocalStorage();
|
|
103
|
+
const currentPending = new AsyncLocalStorage();
|
|
104
|
+
const isThenable = (value) => typeof value === "object" && value !== null && typeof value.then === "function";
|
|
105
|
+
/**
|
|
106
|
+
* Wraps an assertion chain so each promise one of its matchers returns is tracked: an eval that
|
|
107
|
+
* doesn't await it would otherwise pass and tear its sandbox down while the check still runs.
|
|
108
|
+
*/
|
|
109
|
+
function tracked(assertion, pending, path) {
|
|
110
|
+
return new Proxy(assertion, { get(target, property) {
|
|
111
|
+
const value = Reflect.get(target, property);
|
|
112
|
+
const name = `${path}.${String(property)}`;
|
|
113
|
+
if (typeof value === "function") return (...args) => {
|
|
114
|
+
const result = Reflect.apply(value, target, args);
|
|
115
|
+
if (!isThenable(result)) return result;
|
|
116
|
+
const entry = {
|
|
117
|
+
assertion: `${name}()`,
|
|
118
|
+
settled: Promise.resolve(result).then(() => void 0, (error) => error ?? /* @__PURE__ */ new Error(`${name}() failed`)),
|
|
119
|
+
observed: false
|
|
120
|
+
};
|
|
121
|
+
pending.push(entry);
|
|
122
|
+
const observe = (fn) => {
|
|
123
|
+
entry.observed = true;
|
|
124
|
+
return fn(Promise.resolve(result));
|
|
125
|
+
};
|
|
126
|
+
return {
|
|
127
|
+
then: (onFulfilled, onRejected) => observe((p) => p.then(onFulfilled, onRejected)),
|
|
128
|
+
catch: (onRejected) => observe((p) => p.catch(onRejected)),
|
|
129
|
+
finally: (onFinally) => observe((p) => p.finally(onFinally)),
|
|
130
|
+
[Symbol.toStringTag]: "Promise"
|
|
131
|
+
};
|
|
132
|
+
};
|
|
133
|
+
return typeof value === "object" && value !== null && !isThenable(value) ? tracked(value, pending, name) : value;
|
|
134
|
+
} });
|
|
135
|
+
}
|
|
136
|
+
const track = (assertion, path) => {
|
|
137
|
+
const pending = currentPending.getStore();
|
|
138
|
+
return pending && typeof assertion === "object" && assertion !== null ? tracked(assertion, pending, path) : assertion;
|
|
139
|
+
};
|
|
140
|
+
/** Assertions that return a chain, so the chain's async matchers are tracked too. */
|
|
141
|
+
const CHAINS = {
|
|
142
|
+
soft: "expect.soft(…)",
|
|
143
|
+
poll: "expect.poll(…)"
|
|
144
|
+
};
|
|
145
|
+
const expect = new Proxy(globalExpect, {
|
|
146
|
+
apply: (target, thisArg, args) => track(Reflect.apply(currentExpect.getStore() ?? target, thisArg, args), "expect(…)"),
|
|
147
|
+
get: (target, property) => {
|
|
148
|
+
const bound = currentExpect.getStore() ?? target;
|
|
149
|
+
const value = Reflect.get(bound, property);
|
|
150
|
+
if (typeof value !== "function" || property === "assert") return value;
|
|
151
|
+
const chain = CHAINS[property];
|
|
152
|
+
return (...args) => {
|
|
153
|
+
const result = Reflect.apply(value, bound, args);
|
|
154
|
+
return chain ? track(result, chain) : result;
|
|
155
|
+
};
|
|
156
|
+
}
|
|
157
|
+
});
|
|
158
|
+
/** Runs an attempt's body with its own `expect` and unawaited-assertion list. */
|
|
159
|
+
function withAttemptExpect(own, pending, body) {
|
|
160
|
+
return currentExpect.run(own, () => currentPending.run(pending, body));
|
|
161
|
+
}
|
|
162
|
+
/**
|
|
163
|
+
* Waits for the async assertions the eval started but didn't await, and returns the error that
|
|
164
|
+
* fails the attempt: the first one's failure, or that it wasn't awaited.
|
|
165
|
+
*/
|
|
166
|
+
async function unawaitedError(pending) {
|
|
167
|
+
const missed = pending.filter((p) => !p.observed);
|
|
168
|
+
if (missed.length === 0) return void 0;
|
|
169
|
+
for (const p of missed) p.observed = true;
|
|
170
|
+
const outcomes = await Promise.all(missed.map((p) => p.settled));
|
|
171
|
+
const i = Math.max(0, outcomes.findIndex((o) => o !== void 0));
|
|
172
|
+
const hint = `${missed[i]?.assertion} wasn't awaited. Its check is async: write \`await ${missed[i]?.assertion}\`.`;
|
|
173
|
+
const failure = outcomes[i];
|
|
174
|
+
if (failure instanceof Error) {
|
|
175
|
+
failure.message = `${failure.message}\n\n${hint}`;
|
|
176
|
+
return failure;
|
|
177
|
+
}
|
|
178
|
+
const error = new Error(hint);
|
|
179
|
+
error.name = "AssertionError";
|
|
180
|
+
return error;
|
|
181
|
+
}
|
|
182
|
+
function extendExpect(matchers) {
|
|
183
|
+
globalExpect.extend(matchers);
|
|
184
|
+
}
|
|
185
|
+
//#endregion
|
|
186
|
+
//#region src/engine/runtime.ts
|
|
187
|
+
let engine;
|
|
188
|
+
/** Installs the engine this worker runs eval files with. */
|
|
189
|
+
function useEngine(next) {
|
|
190
|
+
engine = next;
|
|
191
|
+
}
|
|
192
|
+
function active() {
|
|
193
|
+
if (!engine) throw new UsageError("evaluate() and group() only work in an eval file that reeval run loads. Run it with reeval run.");
|
|
194
|
+
return engine;
|
|
195
|
+
}
|
|
196
|
+
const registerTest = (name, options, body) => active().registerTest(name, options, body);
|
|
197
|
+
const registerGroup = (name, mode, body) => active().registerGroup(name, mode, body);
|
|
198
|
+
const getRunContext = () => active().getRunContext();
|
|
199
|
+
const collectingFile = () => active().collectingFile();
|
|
200
|
+
//#endregion
|
|
201
|
+
//#region src/scheduler/client.ts
|
|
202
|
+
var LocalTransport = class {
|
|
203
|
+
#pending = /* @__PURE__ */ new Map();
|
|
204
|
+
#scheduler = new Scheduler((r) => {
|
|
205
|
+
this.#pending.get(r.id)?.resolve();
|
|
206
|
+
this.#pending.delete(r.id);
|
|
207
|
+
});
|
|
208
|
+
request(id, limits, rank, pending) {
|
|
209
|
+
this.#pending.set(id, pending);
|
|
210
|
+
this.#scheduler.request({
|
|
211
|
+
id,
|
|
212
|
+
owner: "local",
|
|
213
|
+
limits,
|
|
214
|
+
...rank ? { rank } : {}
|
|
215
|
+
});
|
|
216
|
+
}
|
|
217
|
+
release(id) {
|
|
218
|
+
this.#pending.delete(id);
|
|
219
|
+
this.#scheduler.release(id);
|
|
220
|
+
}
|
|
221
|
+
};
|
|
222
|
+
/** Over the worker's IPC channel to reeval's own engine: requests out, grants back. */
|
|
223
|
+
var ChannelTransport = class {
|
|
224
|
+
#pending = /* @__PURE__ */ new Map();
|
|
225
|
+
#send;
|
|
226
|
+
constructor(send) {
|
|
227
|
+
this.#send = send;
|
|
228
|
+
}
|
|
229
|
+
grant(id) {
|
|
230
|
+
const pending = this.#pending.get(id);
|
|
231
|
+
this.#pending.delete(id);
|
|
232
|
+
pending?.resolve();
|
|
233
|
+
}
|
|
234
|
+
request(id, limits, rank, pending) {
|
|
235
|
+
this.#pending.set(id, pending);
|
|
236
|
+
this.#send({
|
|
237
|
+
t: "request",
|
|
238
|
+
id,
|
|
239
|
+
limits,
|
|
240
|
+
...rank ? { rank } : {}
|
|
241
|
+
});
|
|
242
|
+
}
|
|
243
|
+
release(id) {
|
|
244
|
+
this.#pending.delete(id);
|
|
245
|
+
this.#send({
|
|
246
|
+
t: "release",
|
|
247
|
+
id
|
|
248
|
+
});
|
|
249
|
+
}
|
|
250
|
+
};
|
|
251
|
+
let transport;
|
|
252
|
+
let ids = 0;
|
|
253
|
+
/** Points this process at the run's scheduler over `send`; returns what delivers its grants. */
|
|
254
|
+
function useSchedulerChannel(send) {
|
|
255
|
+
const channel = new ChannelTransport(send);
|
|
256
|
+
transport = channel;
|
|
257
|
+
return (id) => channel.grant(id);
|
|
258
|
+
}
|
|
259
|
+
/**
|
|
260
|
+
* Waits until every resource in `limits` has room, then holds a lease on each until released.
|
|
261
|
+
* Rejects with the signal's reason if it aborts first.
|
|
262
|
+
*/
|
|
263
|
+
function acquire(limits, options = {}) {
|
|
264
|
+
const { rank, signal } = options;
|
|
265
|
+
if (signal?.aborted) return Promise.reject(signal.reason);
|
|
266
|
+
transport ??= new LocalTransport();
|
|
267
|
+
const via = transport;
|
|
268
|
+
const id = String(++ids);
|
|
269
|
+
let released = false;
|
|
270
|
+
const lease = { release() {
|
|
271
|
+
if (released) return;
|
|
272
|
+
released = true;
|
|
273
|
+
via.release(id);
|
|
274
|
+
} };
|
|
275
|
+
return new Promise((resolve, reject) => {
|
|
276
|
+
const onAbort = () => {
|
|
277
|
+
lease.release();
|
|
278
|
+
reject(signal?.reason);
|
|
279
|
+
};
|
|
280
|
+
signal?.addEventListener("abort", onAbort, { once: true });
|
|
281
|
+
via.request(id, limits, rank, {
|
|
282
|
+
resolve: () => {
|
|
283
|
+
signal?.removeEventListener("abort", onAbort);
|
|
284
|
+
resolve(lease);
|
|
285
|
+
},
|
|
286
|
+
reject: (error) => {
|
|
287
|
+
signal?.removeEventListener("abort", onAbort);
|
|
288
|
+
reject(error);
|
|
289
|
+
}
|
|
290
|
+
});
|
|
291
|
+
});
|
|
292
|
+
}
|
|
293
|
+
/** Runs `fn` while holding leases on `limits`. */
|
|
294
|
+
async function withLease(limits, fn, signal) {
|
|
295
|
+
const lease = await acquire(limits, signal ? { signal } : {});
|
|
296
|
+
try {
|
|
297
|
+
return await fn();
|
|
298
|
+
} finally {
|
|
299
|
+
lease.release();
|
|
300
|
+
}
|
|
301
|
+
}
|
|
302
|
+
//#endregion
|
|
303
|
+
//#region src/matchers.ts
|
|
304
|
+
/** A check the turn's harness can't answer either way, e.g. a web fetch it never reports. */
|
|
305
|
+
var HarnessCapabilityError = class extends Error {
|
|
306
|
+
name = "HarnessCapabilityError";
|
|
307
|
+
};
|
|
308
|
+
const isTurn = (value) => typeof value === "object" && value !== null && Array.isArray(value.transcript) && Array.isArray(value.unreported);
|
|
309
|
+
const matches = (value, pattern) => pattern === void 0 || (typeof pattern === "string" ? value.includes(pattern) : pattern.test(value));
|
|
310
|
+
/** Passes when the turn has a `type` event whose `field` matches; refuses when it can't know. */
|
|
311
|
+
function webEvent(matcher, actual, type, field, pattern) {
|
|
312
|
+
if (!isTurn(actual)) throw new TypeError(`${matcher}() expects a turn from t.send()`);
|
|
313
|
+
const what = type === "web-search" ? "web searches" : "web fetches";
|
|
314
|
+
if (actual.unreported.includes(type)) throw new HarnessCapabilityError(`${matcher}() can't check this turn: its harness doesn't report ${what} ('${type}' is in turn.unreported), so the agent may have made them with no event. Check the reply or files instead, or use a harness that reports them.`);
|
|
315
|
+
const seen = actual.transcript.filter((e) => e.type === type).map(field);
|
|
316
|
+
const pass = seen.some((v) => matches(v, pattern));
|
|
317
|
+
const target = pattern === void 0 ? "" : ` matching ${pattern}`;
|
|
318
|
+
return {
|
|
319
|
+
pass,
|
|
320
|
+
message: () => pass ? `expected no ${what}${target}, got ${JSON.stringify(seen)}` : `expected ${what}${target}, got ${seen.length ? JSON.stringify(seen) : "none"}`
|
|
321
|
+
};
|
|
322
|
+
}
|
|
323
|
+
/** The last `lines` lines, and at most `chars` characters of them: one line can be megabytes. */
|
|
324
|
+
const tail = (s, lines = 20, chars = 2e3) => {
|
|
325
|
+
const last = s.trimEnd().split("\n").slice(-lines).join("\n");
|
|
326
|
+
return last.length <= chars ? last : `[… ${last.length - chars} earlier characters]${last.slice(-chars)}`;
|
|
327
|
+
};
|
|
328
|
+
const hasFiles = (value) => typeof value === "object" && value !== null && typeof value.readFile === "function";
|
|
329
|
+
const matchers = {
|
|
330
|
+
async toHaveFile(actual, path, pattern) {
|
|
331
|
+
if (!hasFiles(actual)) throw new TypeError("toHaveFile() expects a turn from t.send(), or t");
|
|
332
|
+
const content = await actual.readFile(path);
|
|
333
|
+
if (content === null) return {
|
|
334
|
+
pass: false,
|
|
335
|
+
message: () => `expected file ${path} to exist`
|
|
336
|
+
};
|
|
337
|
+
if (pattern === void 0) return {
|
|
338
|
+
pass: true,
|
|
339
|
+
message: () => `expected no file at ${path}`
|
|
340
|
+
};
|
|
341
|
+
const pass = typeof pattern === "string" ? content.includes(pattern) : pattern.test(content);
|
|
342
|
+
return {
|
|
343
|
+
pass,
|
|
344
|
+
message: () => `expected ${path} ${pass ? "not " : ""}to match ${pattern}\n--- ${path} ---\n${tail(content)}`
|
|
345
|
+
};
|
|
346
|
+
},
|
|
347
|
+
async toSucceed(actual) {
|
|
348
|
+
const r = await actual;
|
|
349
|
+
if (typeof r?.exitCode !== "number") throw new TypeError("toSucceed() expects run.exec(...)");
|
|
350
|
+
return {
|
|
351
|
+
pass: r.exitCode === 0,
|
|
352
|
+
message: () => r.exitCode === 0 ? "expected command to fail" : `expected command to succeed, exit code ${r.exitCode}\n--- stderr ---\n${tail(r.stderr)}\n--- stdout ---\n${tail(r.stdout)}`
|
|
353
|
+
};
|
|
354
|
+
},
|
|
355
|
+
toHaveSearched(actual, query) {
|
|
356
|
+
return webEvent("toHaveSearched", actual, "web-search", (e) => "query" in e ? e.query : "", query);
|
|
357
|
+
},
|
|
358
|
+
toHaveFetched(actual, url) {
|
|
359
|
+
return webEvent("toHaveFetched", actual, "web-fetch", (e) => "url" in e ? e.url : "", url);
|
|
360
|
+
},
|
|
361
|
+
toPass(actual) {
|
|
362
|
+
const v = actual;
|
|
363
|
+
if (typeof v?.score !== "number") throw new TypeError("toPass() expects a t.judge() verdict");
|
|
364
|
+
const score = v.score.toFixed(2);
|
|
365
|
+
return {
|
|
366
|
+
pass: v.verdict === "pass",
|
|
367
|
+
message: () => v.verdict === "pass" ? `expected judge to fail: score ${score} ≥ ${v.threshold} for "${v.question}"` : `judge score ${score} is below ${v.threshold} for "${v.question}" (${v.model})`
|
|
368
|
+
};
|
|
369
|
+
}
|
|
370
|
+
};
|
|
371
|
+
//#endregion
|
|
372
|
+
export { withLease as a, registerGroup as c, attemptExpectError as d, createExpect as f, withAttemptExpect as g, unawaitedError as h, useSchedulerChannel as i, registerTest as l, extendExpect as m, matchers as n, collectingFile as o, expect as p, acquire as r, getRunContext as s, HarnessCapabilityError as t, useEngine as u };
|
|
373
|
+
|
|
374
|
+
//# sourceMappingURL=matchers-DyLvm7EG.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"matchers-DyLvm7EG.js","names":[],"sources":["../src/engine/expect.ts","../src/engine/runtime.ts","../src/scheduler/client.ts","../src/matchers.ts"],"mappings":"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"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { c as judgeRoute } from "./judge-D8Uf4dA9.js";
|
|
2
|
+
import { i as debugTrace } from "./attempt-BdRQ9jKX.js";
|
|
3
|
+
import { experimental_evaluate } from "ai";
|
|
4
|
+
import { google } from "@ai-sdk/google";
|
|
5
|
+
//#region src/judge/model.ts
|
|
6
|
+
/** See `judgeRoute`: a known provider's own package when its key is set, else the AI Gateway. */
|
|
7
|
+
async function resolveModel(model) {
|
|
8
|
+
if (typeof model !== "string") return model;
|
|
9
|
+
const route = judgeRoute(model);
|
|
10
|
+
if (route.kind === "gateway") return model;
|
|
11
|
+
const id = model.slice(route.provider.length + 1);
|
|
12
|
+
if (route.provider === "google") return google.evaluationModel(id);
|
|
13
|
+
const { typeSafeAi } = await import("@ai-sdk/typesafe-ai");
|
|
14
|
+
return typeSafeAi.evaluationModel(id);
|
|
15
|
+
}
|
|
16
|
+
async function scoreWithModel(model, question, state, providerOptions, signal) {
|
|
17
|
+
const result = await experimental_evaluate({
|
|
18
|
+
model: await resolveModel(model),
|
|
19
|
+
state,
|
|
20
|
+
questions: { answer: {
|
|
21
|
+
type: "boolean",
|
|
22
|
+
instructions: question
|
|
23
|
+
} },
|
|
24
|
+
providerOptions,
|
|
25
|
+
abortSignal: signal,
|
|
26
|
+
maxRetries: 0
|
|
27
|
+
});
|
|
28
|
+
const { answers, usage, warnings, response, providerMetadata } = result;
|
|
29
|
+
debugTrace("judge", "provider-response", {
|
|
30
|
+
answers,
|
|
31
|
+
usage,
|
|
32
|
+
warnings,
|
|
33
|
+
response,
|
|
34
|
+
providerMetadata
|
|
35
|
+
}, "judge provider response");
|
|
36
|
+
return {
|
|
37
|
+
score: result.answers.answer.probability,
|
|
38
|
+
resolvedModel: result.response?.modelId
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
//#endregion
|
|
42
|
+
export { scoreWithModel };
|
|
43
|
+
|
|
44
|
+
//# sourceMappingURL=model-BdO79gWz.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"model-BdO79gWz.js","names":["evaluate"],"sources":["../src/judge/model.ts"],"mappings":";;;;;;AASA,eAAe,aACb,OAC0B;CAC1B,IAAI,OAAO,UAAU,UAAU,OAAO;CACtC,MAAM,QAAQ,WAAW,KAAK;CAC9B,IAAI,MAAM,SAAS,WAAW,OAAO;CACrC,MAAM,KAAK,MAAM,MAAM,MAAM,SAAS,SAAS,CAAC;CAChD,IAAI,MAAM,aAAa,UAAU,OAAO,OAAO,gBAAgB,EAAE;CACjE,MAAM,EAAE,eAAe,MAAM,OAAO;CACpC,OAAO,WAAW,gBAAgB,EAAE;AACtC;AAEA,eAAsB,eACpB,OACA,UACA,OACA,iBACA,QAC+D;CAC/D,MAAM,SAAS,MAAMA,sBAAS;EAC5B,OAAO,MAAM,aAAa,KAAK;EAC/B;EACA,WAAW,EAAE,QAAQ;GAAE,MAAM;GAAW,cAAc;EAAS,EAAE;EACjE;EACA,aAAa;EAEb,YAAY;CACd,CAAC;CACD,MAAM,EAAE,SAAS,OAAO,UAAU,UAAU,qBAAqB;CACjE,WACE,SACA,qBACA;EAAE;EAAS;EAAO;EAAU;EAAU;CAAiB,GACvD,yBACF;CACA,OAAO;EAAE,OAAO,OAAO,QAAQ,OAAO;EAAa,eAAe,OAAO,UAAU;CAAQ;AAC7F"}
|