anpord 0.1.13 → 0.1.17

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (70) hide show
  1. package/README.md +1 -1
  2. package/dist/api-context.cjs +18 -0
  3. package/dist/api-context.d.cts +8 -0
  4. package/dist/api-context.d.mts +8 -0
  5. package/dist/api-context.mjs +17 -0
  6. package/dist/api-mocks-BXZmPUwV.d.cts +101 -0
  7. package/dist/api-mocks-BXZmPUwV.d.mts +101 -0
  8. package/dist/api-mocks-CuVw86Qw.cjs +68 -0
  9. package/dist/api-mocks-wNUnpzJf.mjs +33 -0
  10. package/dist/api-runtime.cjs +4 -0
  11. package/dist/api-runtime.d.cts +13 -0
  12. package/dist/api-runtime.d.mts +13 -0
  13. package/dist/api-runtime.mjs +2 -0
  14. package/dist/api.cjs +5 -0
  15. package/dist/api.d.cts +4 -0
  16. package/dist/api.d.mts +4 -0
  17. package/dist/api.mjs +2 -0
  18. package/dist/bin.cjs +8 -8
  19. package/dist/bin.mjs +6 -6
  20. package/dist/cli-runtime.cjs +9 -26
  21. package/dist/cli-runtime.mjs +5 -22
  22. package/dist/{client-BirFO3jz.d.cts → client-BVoIRPot.d.cts} +1082 -1082
  23. package/dist/{client-BfdjFtlV.mjs → client-DE3YNtWc.mjs} +3 -90
  24. package/dist/{client-C-P2I00z.cjs → client-DziJjMFh.cjs} +4 -91
  25. package/dist/{client-BgRs8JvW.d.mts → client-_OgJhHpJ.d.mts} +1083 -1083
  26. package/dist/{compiler-D96wI7UP.mjs → compiler-C62ss3a4.mjs} +161 -61
  27. package/dist/{compiler-uwb1pkdK.cjs → compiler-CYwJNlT4.cjs} +202 -72
  28. package/dist/config.cjs +1 -1
  29. package/dist/config.d.cts +1 -1
  30. package/dist/config.d.mts +1 -1
  31. package/dist/config.mjs +1 -1
  32. package/dist/define-NZvmQuIv.d.cts +34 -0
  33. package/dist/define-NZvmQuIv.d.mts +34 -0
  34. package/dist/{eval-judges-DPPUftbh.d.cts → eval-judges-0FkhUOIB.d.cts} +2 -2
  35. package/dist/{eval-judges-DPPUftbh.d.mts → eval-judges-0FkhUOIB.d.mts} +2 -2
  36. package/dist/{eval-judges-BkmiVLLq.cjs → eval-judges-1zF4PVqV.cjs} +1 -1
  37. package/dist/{eval-judges-CwTvTq7N.mjs → eval-judges-Bee_ABJt.mjs} +1 -1
  38. package/dist/{eval-validations-_MlnQ_uv.cjs → eval-validations-BdlPhudg.cjs} +8 -2
  39. package/dist/{eval-validations-BRdoZrTQ.mjs → eval-validations-BvX9dkYh.mjs} +3 -3
  40. package/dist/eval.cjs +4 -1
  41. package/dist/eval.d.cts +275 -25
  42. package/dist/eval.d.mts +275 -25
  43. package/dist/eval.mjs +2 -2
  44. package/dist/{evals-B6aT3xgH.d.cts → evals-CFxc4IrF.d.cts} +124 -124
  45. package/dist/{evals-B6aT3xgH.d.mts → evals-CFxc4IrF.d.mts} +124 -124
  46. package/dist/{evals-DouMsrsM.cjs → evals-api-CqhPZCr5.cjs} +104 -73
  47. package/dist/{evals-Dcc_x6jW.mjs → evals-api-CsdU741J.mjs} +96 -5
  48. package/dist/index.cjs +8 -8
  49. package/dist/index.d.cts +12 -8
  50. package/dist/index.d.mts +13 -9
  51. package/dist/index.mjs +7 -7
  52. package/dist/mcp-runtime.cjs +9 -18
  53. package/dist/mcp-runtime.mjs +5 -14
  54. package/dist/mock-journal-Bnaozlx4.cjs +39 -0
  55. package/dist/mock-journal-rbsXfDRs.mjs +22 -0
  56. package/dist/runtime-CXcsGvwP.cjs +292 -0
  57. package/dist/runtime-DDUrsAI-.mjs +269 -0
  58. package/dist/source.d.cts +1 -1
  59. package/dist/source.d.mts +1 -1
  60. package/dist/{types-Codjaq-o.d.mts → types-BjQf9IIi.d.mts} +21 -11
  61. package/dist/{types-ISsteq95.d.cts → types-C2nRDJ95.d.cts} +20 -10
  62. package/dist/validator-runtime.cjs +6 -1
  63. package/dist/validator-runtime.d.cts +1 -1
  64. package/dist/validator-runtime.d.mts +1 -1
  65. package/dist/validator-runtime.mjs +6 -1
  66. package/dist/validators.cjs +1 -1
  67. package/dist/validators.d.cts +1 -1
  68. package/dist/validators.d.mts +1 -1
  69. package/dist/validators.mjs +1 -1
  70. package/package.json +21 -1
@@ -1,4 +1,4 @@
1
- const require_eval_judges = require("./eval-judges-BkmiVLLq.cjs");
1
+ const require_eval_judges = require("./eval-judges-1zF4PVqV.cjs");
2
2
  let effect = require("effect");
3
3
  //#region ../schema/src/domain/eval-validations.ts
4
4
  const VALIDATION_TEXT_LIMIT = 16e3;
@@ -12,7 +12,7 @@ const ValidationValue = effect.Schema.Struct({
12
12
  }).annotations({ identifier: "ValidationValue" });
13
13
  const ValidationCall = effect.Schema.Struct({
14
14
  index: effect.Schema.NonNegativeInt,
15
- method: effect.Schema.Literal("answer", "transcript", "readText", "exists", "exec", "cli.calls", "mcp.calls"),
15
+ method: effect.Schema.Literal("answer", "transcript", "readText", "exists", "exec", "cli.calls", "api.calls", "api.url", "mcp.calls"),
16
16
  startedAt: effect.Schema.Number,
17
17
  durationMs: effect.Schema.NullOr(effect.Schema.NonNegativeInt),
18
18
  input: ValidationValue,
@@ -122,6 +122,12 @@ Object.defineProperty(exports, "VALIDATION_FRAME", {
122
122
  return VALIDATION_FRAME;
123
123
  }
124
124
  });
125
+ Object.defineProperty(exports, "ValidationValue", {
126
+ enumerable: true,
127
+ get: function() {
128
+ return ValidationValue;
129
+ }
130
+ });
125
131
  Object.defineProperty(exports, "unavailableValue", {
126
132
  enumerable: true,
127
133
  get: function() {
@@ -1,4 +1,4 @@
1
- import { n as EvalJudgment } from "./eval-judges-CwTvTq7N.mjs";
1
+ import { n as EvalJudgment } from "./eval-judges-Bee_ABJt.mjs";
2
2
  import { Schema } from "effect";
3
3
  //#region ../schema/src/domain/eval-validations.ts
4
4
  const VALIDATION_TEXT_LIMIT = 16e3;
@@ -12,7 +12,7 @@ const ValidationValue = Schema.Struct({
12
12
  }).annotations({ identifier: "ValidationValue" });
13
13
  const ValidationCall = Schema.Struct({
14
14
  index: Schema.NonNegativeInt,
15
- method: Schema.Literal("answer", "transcript", "readText", "exists", "exec", "cli.calls", "mcp.calls"),
15
+ method: Schema.Literal("answer", "transcript", "readText", "exists", "exec", "cli.calls", "api.calls", "api.url", "mcp.calls"),
16
16
  startedAt: Schema.Number,
17
17
  durationMs: Schema.NullOr(Schema.NonNegativeInt),
18
18
  input: ValidationValue,
@@ -110,4 +110,4 @@ const validationExecution = (identity, startedAt) => ({
110
110
  logs: []
111
111
  });
112
112
  //#endregion
113
- export { validationExecution as a, validationCapture as i, VALIDATION_FRAME as n, validationSnapshot as o, unavailableValue as r, EvalValidations as t };
113
+ export { validationCapture as a, unavailableValue as i, VALIDATION_FRAME as n, validationExecution as o, ValidationValue as r, validationSnapshot as s, EvalValidations as t };
package/dist/eval.cjs CHANGED
@@ -1,4 +1,7 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
- const require_compiler = require("./compiler-uwb1pkdK.cjs");
2
+ const require_compiler = require("./compiler-CYwJNlT4.cjs");
3
+ exports.compileDefinition = require_compiler.compileDefinition;
4
+ exports.compileDefinitionEffect = require_compiler.compileDefinitionEffect;
3
5
  exports.compileEval = require_compiler.compileEval;
4
6
  exports.compileEvalEffect = require_compiler.compileEvalEffect;
7
+ exports.compileRefEffect = require_compiler.compileRefEffect;
package/dist/eval.d.cts CHANGED
@@ -1,4 +1,4 @@
1
- import { h as PublicStartEvalRequest, t as CaseCache } from "./types-ISsteq95.cjs";
1
+ import { h as PublicStartEvalRequest, i as EvalDefinition } from "./types-C2nRDJ95.cjs";
2
2
  import { Effect } from "effect";
3
3
  //#region src/evals/profile-errors.d.ts
4
4
  declare const ProfileDirectoryUnreadable_base: new <A extends Record<string, any> = {}>(args: import("effect/Types").VoidIfEmpty<{ readonly [P in keyof A as P extends "_tag" ? never : P]: A[P]; }>) => import("effect/Cause").YieldableError & {
@@ -79,12 +79,45 @@ declare class ProfileStepNotSupported extends ProfileStepNotSupported_base<{
79
79
  get message(): string;
80
80
  }
81
81
  //#endregion
82
+ //#region src/evals/runner-source.d.ts
83
+ interface DefinitionRef {
84
+ readonly entry: string;
85
+ readonly exportName: string | null;
86
+ }
87
+ //#endregion
82
88
  //#region src/evals/compiler.d.ts
83
- declare const compileEvalEffect: (path: string) => Effect.Effect<{
84
- cases: {
85
- validator: ({
89
+ declare const compileRefEffect: (ref: DefinitionRef) => Effect.Effect<{
90
+ readonly trigger?: {
91
+ readonly source: "api" | "dashboard" | "cli" | "ci" | "mcp";
92
+ readonly url?: string | undefined;
93
+ } | undefined;
94
+ readonly name?: string | undefined;
95
+ readonly prompt: string;
96
+ readonly cases: readonly {
97
+ readonly source?: {
98
+ readonly kind: "empty";
99
+ } | {
100
+ readonly url: string;
101
+ readonly kind: "repo";
102
+ readonly ref: string | null;
103
+ } | {
104
+ readonly kind: "files";
105
+ readonly files: {
106
+ readonly [x: string]: string;
107
+ };
108
+ } | undefined;
109
+ readonly cache?: {
110
+ readonly key: string;
111
+ readonly path: string;
112
+ } | undefined;
113
+ readonly name: string;
114
+ readonly prepare?: {
115
+ readonly source: string;
86
116
  readonly name: string;
117
+ } | null | undefined;
118
+ readonly validator?: ({
87
119
  readonly source: string;
120
+ readonly name: string;
88
121
  readonly capture?: boolean | undefined;
89
122
  readonly manifest?: readonly {
90
123
  readonly name: string;
@@ -104,8 +137,8 @@ declare const compileEvalEffect: (path: string) => Effect.Effect<{
104
137
  readonly content: string;
105
138
  }[] | undefined;
106
139
  readonly checks: readonly {
107
- readonly name: string;
108
140
  readonly source: string;
141
+ readonly name: string;
109
142
  readonly capture?: boolean | undefined;
110
143
  readonly manifest?: readonly {
111
144
  readonly name: string;
@@ -115,10 +148,10 @@ declare const compileEvalEffect: (path: string) => Effect.Effect<{
115
148
  readonly judges: readonly ({
116
149
  readonly name: string;
117
150
  readonly kind: "judge";
151
+ readonly provider: "openai";
118
152
  readonly harness?: undefined;
119
153
  readonly model: string;
120
- readonly provider: "openai";
121
- readonly rubric: string;
154
+ readonly prompt: string;
122
155
  readonly expected?: string | undefined;
123
156
  readonly choices: {
124
157
  readonly [x: string]: number;
@@ -128,10 +161,121 @@ declare const compileEvalEffect: (path: string) => Effect.Effect<{
128
161
  } | {
129
162
  readonly name: string;
130
163
  readonly kind: "judge";
131
- readonly harness: "cursor" | "codex" | "opencode" | "pi" | "fx" | "claude" | "gemini" | "qwen";
164
+ readonly provider?: undefined;
165
+ readonly harness: "codex" | "opencode" | "pi" | "fx" | "claude" | "gemini" | "qwen" | "cursor";
132
166
  readonly model: string;
167
+ readonly prompt: string;
168
+ readonly expected?: string | undefined;
169
+ readonly choices: {
170
+ readonly [x: string]: number;
171
+ };
172
+ readonly threshold: number;
173
+ readonly timeoutMs: number;
174
+ })[];
175
+ } | null | undefined;
176
+ readonly variables?: {
177
+ readonly [x: string]: string;
178
+ } | undefined;
179
+ readonly verify: string | null;
180
+ }[];
181
+ readonly tasks: readonly {
182
+ readonly harness: "codex" | "opencode" | "pi" | "fx" | "claude" | "gemini" | "qwen" | "cursor" | "command";
183
+ readonly model: string;
184
+ readonly profile?: {
185
+ readonly run?: string | undefined;
186
+ readonly name: string;
187
+ readonly files: {
188
+ readonly [x: string]: string;
189
+ };
190
+ readonly env?: {
191
+ readonly [x: string]: string;
192
+ } | undefined;
193
+ readonly install?: string | undefined;
194
+ readonly systemPrompt?: string | undefined;
195
+ } | undefined;
196
+ readonly sandbox?: "daytona" | "e2b" | "upstash" | "modal" | "cloudflare" | "vercel" | undefined;
197
+ }[];
198
+ readonly trials: number;
199
+ }, Error | import("effect/ParseResult").ParseError | import("effect/ConfigError").ConfigError | ProfileTooManyFiles | ProfileDirectoryUnreadable | ProfileTooLarge | ProfileFileTooLarge | ProfilePathInvalid | ProfileManifestInvalid | ProfileManifestOutside | CommandProfileNeedsRun | ProfileStepNotSupported, never>;
200
+ declare const compileDefinitionEffect: (definition: EvalDefinition) => Effect.Effect<{
201
+ readonly trigger?: {
202
+ readonly source: "api" | "dashboard" | "cli" | "ci" | "mcp";
203
+ readonly url?: string | undefined;
204
+ } | undefined;
205
+ readonly name?: string | undefined;
206
+ readonly prompt: string;
207
+ readonly cases: readonly {
208
+ readonly source?: {
209
+ readonly kind: "empty";
210
+ } | {
211
+ readonly url: string;
212
+ readonly kind: "repo";
213
+ readonly ref: string | null;
214
+ } | {
215
+ readonly kind: "files";
216
+ readonly files: {
217
+ readonly [x: string]: string;
218
+ };
219
+ } | undefined;
220
+ readonly cache?: {
221
+ readonly key: string;
222
+ readonly path: string;
223
+ } | undefined;
224
+ readonly name: string;
225
+ readonly prepare?: {
226
+ readonly source: string;
227
+ readonly name: string;
228
+ } | null | undefined;
229
+ readonly validator?: ({
230
+ readonly source: string;
231
+ readonly name: string;
232
+ readonly capture?: boolean | undefined;
233
+ readonly manifest?: readonly {
234
+ readonly name: string;
235
+ readonly index: number;
236
+ }[] | undefined;
237
+ } & {
238
+ readonly sourceFiles?: readonly {
239
+ readonly path: string;
240
+ readonly content: string;
241
+ }[] | undefined;
242
+ }) | {
243
+ readonly name: string;
244
+ readonly kind: "judged";
245
+ readonly capture?: boolean | undefined;
246
+ readonly sourceFiles?: readonly {
247
+ readonly path: string;
248
+ readonly content: string;
249
+ }[] | undefined;
250
+ readonly checks: readonly {
251
+ readonly source: string;
252
+ readonly name: string;
253
+ readonly capture?: boolean | undefined;
254
+ readonly manifest?: readonly {
255
+ readonly name: string;
256
+ readonly index: number;
257
+ }[] | undefined;
258
+ }[];
259
+ readonly judges: readonly ({
260
+ readonly name: string;
261
+ readonly kind: "judge";
262
+ readonly provider: "openai";
263
+ readonly harness?: undefined;
264
+ readonly model: string;
265
+ readonly prompt: string;
266
+ readonly expected?: string | undefined;
267
+ readonly choices: {
268
+ readonly [x: string]: number;
269
+ };
270
+ readonly threshold: number;
271
+ readonly timeoutMs: number;
272
+ } | {
273
+ readonly name: string;
274
+ readonly kind: "judge";
133
275
  readonly provider?: undefined;
134
- readonly rubric: string;
276
+ readonly harness: "codex" | "opencode" | "pi" | "fx" | "claude" | "gemini" | "qwen" | "cursor";
277
+ readonly model: string;
278
+ readonly prompt: string;
135
279
  readonly expected?: string | undefined;
136
280
  readonly choices: {
137
281
  readonly [x: string]: number;
@@ -139,22 +283,17 @@ declare const compileEvalEffect: (path: string) => Effect.Effect<{
139
283
  readonly threshold: number;
140
284
  readonly timeoutMs: number;
141
285
  })[];
142
- } | null;
143
- variables: Readonly<Record<string, string>>;
144
- verify: string | null;
145
- name: string;
146
- prepare: {
147
- name: string;
148
- source: string;
149
- } | null;
150
- cache?: CaseCache | undefined;
286
+ } | null | undefined;
287
+ readonly variables?: {
288
+ readonly [x: string]: string;
289
+ } | undefined;
290
+ readonly verify: string | null;
151
291
  }[];
152
- name: string;
153
- prompt: string;
154
- tasks: {
155
- readonly harness: "cursor" | "codex" | "opencode" | "pi" | "fx" | "claude" | "gemini" | "qwen" | "command";
292
+ readonly tasks: readonly {
293
+ readonly harness: "codex" | "opencode" | "pi" | "fx" | "claude" | "gemini" | "qwen" | "cursor" | "command";
156
294
  readonly model: string;
157
295
  readonly profile?: {
296
+ readonly run?: string | undefined;
158
297
  readonly name: string;
159
298
  readonly files: {
160
299
  readonly [x: string]: string;
@@ -163,13 +302,124 @@ declare const compileEvalEffect: (path: string) => Effect.Effect<{
163
302
  readonly [x: string]: string;
164
303
  } | undefined;
165
304
  readonly install?: string | undefined;
305
+ readonly systemPrompt?: string | undefined;
306
+ } | undefined;
307
+ readonly sandbox?: "daytona" | "e2b" | "upstash" | "modal" | "cloudflare" | "vercel" | undefined;
308
+ }[];
309
+ readonly trials: number;
310
+ }, Error | import("effect/ParseResult").ParseError | import("effect/ConfigError").ConfigError | ProfileTooManyFiles | ProfileDirectoryUnreadable | ProfileTooLarge | ProfileFileTooLarge | ProfilePathInvalid | ProfileManifestInvalid | ProfileManifestOutside | CommandProfileNeedsRun | ProfileStepNotSupported, never>;
311
+ declare const compileDefinition: (definition: EvalDefinition) => Promise<PublicStartEvalRequest>;
312
+ declare const compileEvalEffect: (path: string) => Effect.Effect<{
313
+ readonly trigger?: {
314
+ readonly source: "api" | "dashboard" | "cli" | "ci" | "mcp";
315
+ readonly url?: string | undefined;
316
+ } | undefined;
317
+ readonly name?: string | undefined;
318
+ readonly prompt: string;
319
+ readonly cases: readonly {
320
+ readonly source?: {
321
+ readonly kind: "empty";
322
+ } | {
323
+ readonly url: string;
324
+ readonly kind: "repo";
325
+ readonly ref: string | null;
326
+ } | {
327
+ readonly kind: "files";
328
+ readonly files: {
329
+ readonly [x: string]: string;
330
+ };
331
+ } | undefined;
332
+ readonly cache?: {
333
+ readonly key: string;
334
+ readonly path: string;
335
+ } | undefined;
336
+ readonly name: string;
337
+ readonly prepare?: {
338
+ readonly source: string;
339
+ readonly name: string;
340
+ } | null | undefined;
341
+ readonly validator?: ({
342
+ readonly source: string;
343
+ readonly name: string;
344
+ readonly capture?: boolean | undefined;
345
+ readonly manifest?: readonly {
346
+ readonly name: string;
347
+ readonly index: number;
348
+ }[] | undefined;
349
+ } & {
350
+ readonly sourceFiles?: readonly {
351
+ readonly path: string;
352
+ readonly content: string;
353
+ }[] | undefined;
354
+ }) | {
355
+ readonly name: string;
356
+ readonly kind: "judged";
357
+ readonly capture?: boolean | undefined;
358
+ readonly sourceFiles?: readonly {
359
+ readonly path: string;
360
+ readonly content: string;
361
+ }[] | undefined;
362
+ readonly checks: readonly {
363
+ readonly source: string;
364
+ readonly name: string;
365
+ readonly capture?: boolean | undefined;
366
+ readonly manifest?: readonly {
367
+ readonly name: string;
368
+ readonly index: number;
369
+ }[] | undefined;
370
+ }[];
371
+ readonly judges: readonly ({
372
+ readonly name: string;
373
+ readonly kind: "judge";
374
+ readonly provider: "openai";
375
+ readonly harness?: undefined;
376
+ readonly model: string;
377
+ readonly prompt: string;
378
+ readonly expected?: string | undefined;
379
+ readonly choices: {
380
+ readonly [x: string]: number;
381
+ };
382
+ readonly threshold: number;
383
+ readonly timeoutMs: number;
384
+ } | {
385
+ readonly name: string;
386
+ readonly kind: "judge";
387
+ readonly provider?: undefined;
388
+ readonly harness: "codex" | "opencode" | "pi" | "fx" | "claude" | "gemini" | "qwen" | "cursor";
389
+ readonly model: string;
390
+ readonly prompt: string;
391
+ readonly expected?: string | undefined;
392
+ readonly choices: {
393
+ readonly [x: string]: number;
394
+ };
395
+ readonly threshold: number;
396
+ readonly timeoutMs: number;
397
+ })[];
398
+ } | null | undefined;
399
+ readonly variables?: {
400
+ readonly [x: string]: string;
401
+ } | undefined;
402
+ readonly verify: string | null;
403
+ }[];
404
+ readonly tasks: readonly {
405
+ readonly harness: "codex" | "opencode" | "pi" | "fx" | "claude" | "gemini" | "qwen" | "cursor" | "command";
406
+ readonly model: string;
407
+ readonly profile?: {
166
408
  readonly run?: string | undefined;
409
+ readonly name: string;
410
+ readonly files: {
411
+ readonly [x: string]: string;
412
+ };
413
+ readonly env?: {
414
+ readonly [x: string]: string;
415
+ } | undefined;
416
+ readonly install?: string | undefined;
167
417
  readonly systemPrompt?: string | undefined;
168
418
  } | undefined;
169
419
  readonly sandbox?: "daytona" | "e2b" | "upstash" | "modal" | "cloudflare" | "vercel" | undefined;
170
420
  }[];
171
- trials: number;
172
- }, Error | import("effect/ConfigError").ConfigError | import("effect/ParseResult").ParseError | ProfileTooManyFiles | ProfileDirectoryUnreadable | ProfileTooLarge | ProfileFileTooLarge | ProfilePathInvalid | ProfileManifestInvalid | ProfileManifestOutside | CommandProfileNeedsRun | ProfileStepNotSupported, never>;
421
+ readonly trials: number;
422
+ }, Error | import("effect/ParseResult").ParseError | import("effect/ConfigError").ConfigError | ProfileTooManyFiles | ProfileDirectoryUnreadable | ProfileTooLarge | ProfileFileTooLarge | ProfilePathInvalid | ProfileManifestInvalid | ProfileManifestOutside | CommandProfileNeedsRun | ProfileStepNotSupported, never>;
173
423
  declare const compileEval: (path: string) => Promise<PublicStartEvalRequest>;
174
424
  //#endregion
175
- export { compileEval, compileEvalEffect };
425
+ export { compileDefinition, compileDefinitionEffect, compileEval, compileEvalEffect, compileRefEffect };