@vibe-agent-toolkit/agent-skills 0.1.40 → 0.1.41-rc.2

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 (88) hide show
  1. package/dist/skill-test/eval-executor.d.ts +50 -0
  2. package/dist/skill-test/eval-executor.d.ts.map +1 -0
  3. package/dist/skill-test/eval-executor.js +85 -0
  4. package/dist/skill-test/eval-executor.js.map +1 -0
  5. package/dist/skill-test/eval-fragment.d.ts +278 -0
  6. package/dist/skill-test/eval-fragment.d.ts.map +1 -0
  7. package/dist/skill-test/eval-fragment.js +128 -0
  8. package/dist/skill-test/eval-fragment.js.map +1 -0
  9. package/dist/skill-test/eval-grader.d.ts +54 -0
  10. package/dist/skill-test/eval-grader.d.ts.map +1 -0
  11. package/dist/skill-test/eval-grader.js +184 -0
  12. package/dist/skill-test/eval-grader.js.map +1 -0
  13. package/dist/skill-test/eval-inputs.d.ts +355 -0
  14. package/dist/skill-test/eval-inputs.d.ts.map +1 -1
  15. package/dist/skill-test/eval-inputs.js +36 -8
  16. package/dist/skill-test/eval-inputs.js.map +1 -1
  17. package/dist/skill-test/eval-lint.d.ts +51 -0
  18. package/dist/skill-test/eval-lint.d.ts.map +1 -0
  19. package/dist/skill-test/eval-lint.js +157 -0
  20. package/dist/skill-test/eval-lint.js.map +1 -0
  21. package/dist/skill-test/evals-template.d.ts.map +1 -1
  22. package/dist/skill-test/evals-template.js +7 -0
  23. package/dist/skill-test/evals-template.js.map +1 -1
  24. package/dist/skill-test/executor-prompt.d.ts +41 -0
  25. package/dist/skill-test/executor-prompt.d.ts.map +1 -0
  26. package/dist/skill-test/executor-prompt.js +63 -0
  27. package/dist/skill-test/executor-prompt.js.map +1 -0
  28. package/dist/skill-test/exit-codes.d.ts +8 -5
  29. package/dist/skill-test/exit-codes.d.ts.map +1 -1
  30. package/dist/skill-test/exit-codes.js +12 -7
  31. package/dist/skill-test/exit-codes.js.map +1 -1
  32. package/dist/skill-test/fragment-merge.d.ts +46 -0
  33. package/dist/skill-test/fragment-merge.d.ts.map +1 -0
  34. package/dist/skill-test/fragment-merge.js +77 -0
  35. package/dist/skill-test/fragment-merge.js.map +1 -0
  36. package/dist/skill-test/friction-schema.d.ts +10 -10
  37. package/dist/skill-test/friction-schema.d.ts.map +1 -1
  38. package/dist/skill-test/friction-schema.js +6 -1
  39. package/dist/skill-test/friction-schema.js.map +1 -1
  40. package/dist/skill-test/grader-model.d.ts +6 -0
  41. package/dist/skill-test/grader-model.d.ts.map +1 -0
  42. package/dist/skill-test/grader-model.js +6 -0
  43. package/dist/skill-test/grader-model.js.map +1 -0
  44. package/dist/skill-test/grader-prompt.d.ts +74 -0
  45. package/dist/skill-test/grader-prompt.d.ts.map +1 -0
  46. package/dist/skill-test/grader-prompt.js +173 -0
  47. package/dist/skill-test/grader-prompt.js.map +1 -0
  48. package/dist/skill-test/grading-adapter.d.ts +5 -11
  49. package/dist/skill-test/grading-adapter.d.ts.map +1 -1
  50. package/dist/skill-test/grading-adapter.js +9 -22
  51. package/dist/skill-test/grading-adapter.js.map +1 -1
  52. package/dist/skill-test/grading-schema.d.ts +18 -15
  53. package/dist/skill-test/grading-schema.d.ts.map +1 -1
  54. package/dist/skill-test/grading-schema.js +6 -5
  55. package/dist/skill-test/grading-schema.js.map +1 -1
  56. package/dist/skill-test/index.d.ts +13 -3
  57. package/dist/skill-test/index.d.ts.map +1 -1
  58. package/dist/skill-test/index.js +13 -3
  59. package/dist/skill-test/index.js.map +1 -1
  60. package/dist/skill-test/pipeline.d.ts +29 -0
  61. package/dist/skill-test/pipeline.d.ts.map +1 -0
  62. package/dist/skill-test/pipeline.js +77 -0
  63. package/dist/skill-test/pipeline.js.map +1 -0
  64. package/dist/skill-test/prompt-invariants.d.ts +27 -0
  65. package/dist/skill-test/prompt-invariants.d.ts.map +1 -0
  66. package/dist/skill-test/prompt-invariants.js +38 -0
  67. package/dist/skill-test/prompt-invariants.js.map +1 -0
  68. package/dist/skill-test/run-harness.d.ts +187 -55
  69. package/dist/skill-test/run-harness.d.ts.map +1 -1
  70. package/dist/skill-test/run-harness.js +539 -189
  71. package/dist/skill-test/run-harness.js.map +1 -1
  72. package/dist/skill-test/tier-plan.d.ts +89 -0
  73. package/dist/skill-test/tier-plan.d.ts.map +1 -0
  74. package/dist/skill-test/tier-plan.js +96 -0
  75. package/dist/skill-test/tier-plan.js.map +1 -0
  76. package/dist/skill-test/tool-eval-schema.d.ts +412 -0
  77. package/dist/skill-test/tool-eval-schema.d.ts.map +1 -0
  78. package/dist/skill-test/tool-eval-schema.js +83 -0
  79. package/dist/skill-test/tool-eval-schema.js.map +1 -0
  80. package/dist/validators/packaging-validator.d.ts +8 -1
  81. package/dist/validators/packaging-validator.d.ts.map +1 -1
  82. package/dist/validators/packaging-validator.js.map +1 -1
  83. package/package.json +5 -5
  84. package/schemas/friction-report.json +2 -1
  85. package/dist/skill-test/experimenter-prompt.d.ts +0 -42
  86. package/dist/skill-test/experimenter-prompt.d.ts.map +0 -1
  87. package/dist/skill-test/experimenter-prompt.js +0 -104
  88. package/dist/skill-test/experimenter-prompt.js.map +0 -1
@@ -3,36 +3,129 @@ import { z } from 'zod';
3
3
  export declare class EvalInputError extends Error {
4
4
  constructor(message: string);
5
5
  }
6
+ /**
7
+ * True when `key` is exactly one edit (insert/delete/substitute one char) from
8
+ * `target`. Used to catch typos of recognized fields (here) and of declared
9
+ * executable names ({@link ./eval-lint.ts}) — deliberately a tiny single-edit
10
+ * check, not a general edit-distance routine, so it stays cheap and never fires
11
+ * on legitimately distinct adopter strings (`name`, `category`, `notes`).
12
+ */
13
+ export declare function isSingleEditAway(key: string, target: string): boolean;
6
14
  export declare const EvalEntrySchema: z.ZodEffects<z.ZodObject<{
7
15
  id: z.ZodUnion<[z.ZodNumber, z.ZodString]>;
8
16
  prompt: z.ZodString;
9
17
  expected_output: z.ZodOptional<z.ZodString>;
10
18
  files: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
11
19
  expectations: z.ZodArray<z.ZodString, "many">;
20
+ tier: z.ZodOptional<z.ZodNumber>;
21
+ toolExpectations: z.ZodOptional<z.ZodObject<{
22
+ mustRun: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
23
+ mustNotRun: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
24
+ mustSucceed: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
25
+ sequence: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
26
+ }, "strict", z.ZodTypeAny, {
27
+ mustRun?: string[] | undefined;
28
+ mustNotRun?: string[] | undefined;
29
+ mustSucceed?: string[] | undefined;
30
+ sequence?: string[] | undefined;
31
+ }, {
32
+ mustRun?: string[] | undefined;
33
+ mustNotRun?: string[] | undefined;
34
+ mustSucceed?: string[] | undefined;
35
+ sequence?: string[] | undefined;
36
+ }>>;
12
37
  }, "passthrough", z.ZodTypeAny, z.objectOutputType<{
13
38
  id: z.ZodUnion<[z.ZodNumber, z.ZodString]>;
14
39
  prompt: z.ZodString;
15
40
  expected_output: z.ZodOptional<z.ZodString>;
16
41
  files: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
17
42
  expectations: z.ZodArray<z.ZodString, "many">;
43
+ tier: z.ZodOptional<z.ZodNumber>;
44
+ toolExpectations: z.ZodOptional<z.ZodObject<{
45
+ mustRun: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
46
+ mustNotRun: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
47
+ mustSucceed: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
48
+ sequence: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
49
+ }, "strict", z.ZodTypeAny, {
50
+ mustRun?: string[] | undefined;
51
+ mustNotRun?: string[] | undefined;
52
+ mustSucceed?: string[] | undefined;
53
+ sequence?: string[] | undefined;
54
+ }, {
55
+ mustRun?: string[] | undefined;
56
+ mustNotRun?: string[] | undefined;
57
+ mustSucceed?: string[] | undefined;
58
+ sequence?: string[] | undefined;
59
+ }>>;
18
60
  }, z.ZodTypeAny, "passthrough">, z.objectInputType<{
19
61
  id: z.ZodUnion<[z.ZodNumber, z.ZodString]>;
20
62
  prompt: z.ZodString;
21
63
  expected_output: z.ZodOptional<z.ZodString>;
22
64
  files: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
23
65
  expectations: z.ZodArray<z.ZodString, "many">;
66
+ tier: z.ZodOptional<z.ZodNumber>;
67
+ toolExpectations: z.ZodOptional<z.ZodObject<{
68
+ mustRun: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
69
+ mustNotRun: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
70
+ mustSucceed: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
71
+ sequence: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
72
+ }, "strict", z.ZodTypeAny, {
73
+ mustRun?: string[] | undefined;
74
+ mustNotRun?: string[] | undefined;
75
+ mustSucceed?: string[] | undefined;
76
+ sequence?: string[] | undefined;
77
+ }, {
78
+ mustRun?: string[] | undefined;
79
+ mustNotRun?: string[] | undefined;
80
+ mustSucceed?: string[] | undefined;
81
+ sequence?: string[] | undefined;
82
+ }>>;
24
83
  }, z.ZodTypeAny, "passthrough">>, z.objectOutputType<{
25
84
  id: z.ZodUnion<[z.ZodNumber, z.ZodString]>;
26
85
  prompt: z.ZodString;
27
86
  expected_output: z.ZodOptional<z.ZodString>;
28
87
  files: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
29
88
  expectations: z.ZodArray<z.ZodString, "many">;
89
+ tier: z.ZodOptional<z.ZodNumber>;
90
+ toolExpectations: z.ZodOptional<z.ZodObject<{
91
+ mustRun: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
92
+ mustNotRun: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
93
+ mustSucceed: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
94
+ sequence: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
95
+ }, "strict", z.ZodTypeAny, {
96
+ mustRun?: string[] | undefined;
97
+ mustNotRun?: string[] | undefined;
98
+ mustSucceed?: string[] | undefined;
99
+ sequence?: string[] | undefined;
100
+ }, {
101
+ mustRun?: string[] | undefined;
102
+ mustNotRun?: string[] | undefined;
103
+ mustSucceed?: string[] | undefined;
104
+ sequence?: string[] | undefined;
105
+ }>>;
30
106
  }, z.ZodTypeAny, "passthrough">, z.objectInputType<{
31
107
  id: z.ZodUnion<[z.ZodNumber, z.ZodString]>;
32
108
  prompt: z.ZodString;
33
109
  expected_output: z.ZodOptional<z.ZodString>;
34
110
  files: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
35
111
  expectations: z.ZodArray<z.ZodString, "many">;
112
+ tier: z.ZodOptional<z.ZodNumber>;
113
+ toolExpectations: z.ZodOptional<z.ZodObject<{
114
+ mustRun: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
115
+ mustNotRun: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
116
+ mustSucceed: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
117
+ sequence: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
118
+ }, "strict", z.ZodTypeAny, {
119
+ mustRun?: string[] | undefined;
120
+ mustNotRun?: string[] | undefined;
121
+ mustSucceed?: string[] | undefined;
122
+ sequence?: string[] | undefined;
123
+ }, {
124
+ mustRun?: string[] | undefined;
125
+ mustNotRun?: string[] | undefined;
126
+ mustSucceed?: string[] | undefined;
127
+ sequence?: string[] | undefined;
128
+ }>>;
36
129
  }, z.ZodTypeAny, "passthrough">>;
37
130
  export declare const EvalSuiteSchema: z.ZodObject<{
38
131
  _comment: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
@@ -43,30 +136,115 @@ export declare const EvalSuiteSchema: z.ZodObject<{
43
136
  expected_output: z.ZodOptional<z.ZodString>;
44
137
  files: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
45
138
  expectations: z.ZodArray<z.ZodString, "many">;
139
+ tier: z.ZodOptional<z.ZodNumber>;
140
+ toolExpectations: z.ZodOptional<z.ZodObject<{
141
+ mustRun: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
142
+ mustNotRun: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
143
+ mustSucceed: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
144
+ sequence: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
145
+ }, "strict", z.ZodTypeAny, {
146
+ mustRun?: string[] | undefined;
147
+ mustNotRun?: string[] | undefined;
148
+ mustSucceed?: string[] | undefined;
149
+ sequence?: string[] | undefined;
150
+ }, {
151
+ mustRun?: string[] | undefined;
152
+ mustNotRun?: string[] | undefined;
153
+ mustSucceed?: string[] | undefined;
154
+ sequence?: string[] | undefined;
155
+ }>>;
46
156
  }, "passthrough", z.ZodTypeAny, z.objectOutputType<{
47
157
  id: z.ZodUnion<[z.ZodNumber, z.ZodString]>;
48
158
  prompt: z.ZodString;
49
159
  expected_output: z.ZodOptional<z.ZodString>;
50
160
  files: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
51
161
  expectations: z.ZodArray<z.ZodString, "many">;
162
+ tier: z.ZodOptional<z.ZodNumber>;
163
+ toolExpectations: z.ZodOptional<z.ZodObject<{
164
+ mustRun: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
165
+ mustNotRun: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
166
+ mustSucceed: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
167
+ sequence: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
168
+ }, "strict", z.ZodTypeAny, {
169
+ mustRun?: string[] | undefined;
170
+ mustNotRun?: string[] | undefined;
171
+ mustSucceed?: string[] | undefined;
172
+ sequence?: string[] | undefined;
173
+ }, {
174
+ mustRun?: string[] | undefined;
175
+ mustNotRun?: string[] | undefined;
176
+ mustSucceed?: string[] | undefined;
177
+ sequence?: string[] | undefined;
178
+ }>>;
52
179
  }, z.ZodTypeAny, "passthrough">, z.objectInputType<{
53
180
  id: z.ZodUnion<[z.ZodNumber, z.ZodString]>;
54
181
  prompt: z.ZodString;
55
182
  expected_output: z.ZodOptional<z.ZodString>;
56
183
  files: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
57
184
  expectations: z.ZodArray<z.ZodString, "many">;
185
+ tier: z.ZodOptional<z.ZodNumber>;
186
+ toolExpectations: z.ZodOptional<z.ZodObject<{
187
+ mustRun: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
188
+ mustNotRun: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
189
+ mustSucceed: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
190
+ sequence: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
191
+ }, "strict", z.ZodTypeAny, {
192
+ mustRun?: string[] | undefined;
193
+ mustNotRun?: string[] | undefined;
194
+ mustSucceed?: string[] | undefined;
195
+ sequence?: string[] | undefined;
196
+ }, {
197
+ mustRun?: string[] | undefined;
198
+ mustNotRun?: string[] | undefined;
199
+ mustSucceed?: string[] | undefined;
200
+ sequence?: string[] | undefined;
201
+ }>>;
58
202
  }, z.ZodTypeAny, "passthrough">>, z.objectOutputType<{
59
203
  id: z.ZodUnion<[z.ZodNumber, z.ZodString]>;
60
204
  prompt: z.ZodString;
61
205
  expected_output: z.ZodOptional<z.ZodString>;
62
206
  files: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
63
207
  expectations: z.ZodArray<z.ZodString, "many">;
208
+ tier: z.ZodOptional<z.ZodNumber>;
209
+ toolExpectations: z.ZodOptional<z.ZodObject<{
210
+ mustRun: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
211
+ mustNotRun: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
212
+ mustSucceed: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
213
+ sequence: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
214
+ }, "strict", z.ZodTypeAny, {
215
+ mustRun?: string[] | undefined;
216
+ mustNotRun?: string[] | undefined;
217
+ mustSucceed?: string[] | undefined;
218
+ sequence?: string[] | undefined;
219
+ }, {
220
+ mustRun?: string[] | undefined;
221
+ mustNotRun?: string[] | undefined;
222
+ mustSucceed?: string[] | undefined;
223
+ sequence?: string[] | undefined;
224
+ }>>;
64
225
  }, z.ZodTypeAny, "passthrough">, z.objectInputType<{
65
226
  id: z.ZodUnion<[z.ZodNumber, z.ZodString]>;
66
227
  prompt: z.ZodString;
67
228
  expected_output: z.ZodOptional<z.ZodString>;
68
229
  files: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
69
230
  expectations: z.ZodArray<z.ZodString, "many">;
231
+ tier: z.ZodOptional<z.ZodNumber>;
232
+ toolExpectations: z.ZodOptional<z.ZodObject<{
233
+ mustRun: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
234
+ mustNotRun: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
235
+ mustSucceed: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
236
+ sequence: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
237
+ }, "strict", z.ZodTypeAny, {
238
+ mustRun?: string[] | undefined;
239
+ mustNotRun?: string[] | undefined;
240
+ mustSucceed?: string[] | undefined;
241
+ sequence?: string[] | undefined;
242
+ }, {
243
+ mustRun?: string[] | undefined;
244
+ mustNotRun?: string[] | undefined;
245
+ mustSucceed?: string[] | undefined;
246
+ sequence?: string[] | undefined;
247
+ }>>;
70
248
  }, z.ZodTypeAny, "passthrough">>, "many">;
71
249
  }, "passthrough", z.ZodTypeAny, z.objectOutputType<{
72
250
  _comment: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
@@ -77,30 +255,115 @@ export declare const EvalSuiteSchema: z.ZodObject<{
77
255
  expected_output: z.ZodOptional<z.ZodString>;
78
256
  files: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
79
257
  expectations: z.ZodArray<z.ZodString, "many">;
258
+ tier: z.ZodOptional<z.ZodNumber>;
259
+ toolExpectations: z.ZodOptional<z.ZodObject<{
260
+ mustRun: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
261
+ mustNotRun: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
262
+ mustSucceed: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
263
+ sequence: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
264
+ }, "strict", z.ZodTypeAny, {
265
+ mustRun?: string[] | undefined;
266
+ mustNotRun?: string[] | undefined;
267
+ mustSucceed?: string[] | undefined;
268
+ sequence?: string[] | undefined;
269
+ }, {
270
+ mustRun?: string[] | undefined;
271
+ mustNotRun?: string[] | undefined;
272
+ mustSucceed?: string[] | undefined;
273
+ sequence?: string[] | undefined;
274
+ }>>;
80
275
  }, "passthrough", z.ZodTypeAny, z.objectOutputType<{
81
276
  id: z.ZodUnion<[z.ZodNumber, z.ZodString]>;
82
277
  prompt: z.ZodString;
83
278
  expected_output: z.ZodOptional<z.ZodString>;
84
279
  files: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
85
280
  expectations: z.ZodArray<z.ZodString, "many">;
281
+ tier: z.ZodOptional<z.ZodNumber>;
282
+ toolExpectations: z.ZodOptional<z.ZodObject<{
283
+ mustRun: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
284
+ mustNotRun: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
285
+ mustSucceed: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
286
+ sequence: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
287
+ }, "strict", z.ZodTypeAny, {
288
+ mustRun?: string[] | undefined;
289
+ mustNotRun?: string[] | undefined;
290
+ mustSucceed?: string[] | undefined;
291
+ sequence?: string[] | undefined;
292
+ }, {
293
+ mustRun?: string[] | undefined;
294
+ mustNotRun?: string[] | undefined;
295
+ mustSucceed?: string[] | undefined;
296
+ sequence?: string[] | undefined;
297
+ }>>;
86
298
  }, z.ZodTypeAny, "passthrough">, z.objectInputType<{
87
299
  id: z.ZodUnion<[z.ZodNumber, z.ZodString]>;
88
300
  prompt: z.ZodString;
89
301
  expected_output: z.ZodOptional<z.ZodString>;
90
302
  files: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
91
303
  expectations: z.ZodArray<z.ZodString, "many">;
304
+ tier: z.ZodOptional<z.ZodNumber>;
305
+ toolExpectations: z.ZodOptional<z.ZodObject<{
306
+ mustRun: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
307
+ mustNotRun: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
308
+ mustSucceed: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
309
+ sequence: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
310
+ }, "strict", z.ZodTypeAny, {
311
+ mustRun?: string[] | undefined;
312
+ mustNotRun?: string[] | undefined;
313
+ mustSucceed?: string[] | undefined;
314
+ sequence?: string[] | undefined;
315
+ }, {
316
+ mustRun?: string[] | undefined;
317
+ mustNotRun?: string[] | undefined;
318
+ mustSucceed?: string[] | undefined;
319
+ sequence?: string[] | undefined;
320
+ }>>;
92
321
  }, z.ZodTypeAny, "passthrough">>, z.objectOutputType<{
93
322
  id: z.ZodUnion<[z.ZodNumber, z.ZodString]>;
94
323
  prompt: z.ZodString;
95
324
  expected_output: z.ZodOptional<z.ZodString>;
96
325
  files: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
97
326
  expectations: z.ZodArray<z.ZodString, "many">;
327
+ tier: z.ZodOptional<z.ZodNumber>;
328
+ toolExpectations: z.ZodOptional<z.ZodObject<{
329
+ mustRun: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
330
+ mustNotRun: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
331
+ mustSucceed: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
332
+ sequence: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
333
+ }, "strict", z.ZodTypeAny, {
334
+ mustRun?: string[] | undefined;
335
+ mustNotRun?: string[] | undefined;
336
+ mustSucceed?: string[] | undefined;
337
+ sequence?: string[] | undefined;
338
+ }, {
339
+ mustRun?: string[] | undefined;
340
+ mustNotRun?: string[] | undefined;
341
+ mustSucceed?: string[] | undefined;
342
+ sequence?: string[] | undefined;
343
+ }>>;
98
344
  }, z.ZodTypeAny, "passthrough">, z.objectInputType<{
99
345
  id: z.ZodUnion<[z.ZodNumber, z.ZodString]>;
100
346
  prompt: z.ZodString;
101
347
  expected_output: z.ZodOptional<z.ZodString>;
102
348
  files: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
103
349
  expectations: z.ZodArray<z.ZodString, "many">;
350
+ tier: z.ZodOptional<z.ZodNumber>;
351
+ toolExpectations: z.ZodOptional<z.ZodObject<{
352
+ mustRun: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
353
+ mustNotRun: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
354
+ mustSucceed: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
355
+ sequence: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
356
+ }, "strict", z.ZodTypeAny, {
357
+ mustRun?: string[] | undefined;
358
+ mustNotRun?: string[] | undefined;
359
+ mustSucceed?: string[] | undefined;
360
+ sequence?: string[] | undefined;
361
+ }, {
362
+ mustRun?: string[] | undefined;
363
+ mustNotRun?: string[] | undefined;
364
+ mustSucceed?: string[] | undefined;
365
+ sequence?: string[] | undefined;
366
+ }>>;
104
367
  }, z.ZodTypeAny, "passthrough">>, "many">;
105
368
  }, z.ZodTypeAny, "passthrough">, z.objectInputType<{
106
369
  _comment: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
@@ -111,34 +374,126 @@ export declare const EvalSuiteSchema: z.ZodObject<{
111
374
  expected_output: z.ZodOptional<z.ZodString>;
112
375
  files: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
113
376
  expectations: z.ZodArray<z.ZodString, "many">;
377
+ tier: z.ZodOptional<z.ZodNumber>;
378
+ toolExpectations: z.ZodOptional<z.ZodObject<{
379
+ mustRun: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
380
+ mustNotRun: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
381
+ mustSucceed: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
382
+ sequence: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
383
+ }, "strict", z.ZodTypeAny, {
384
+ mustRun?: string[] | undefined;
385
+ mustNotRun?: string[] | undefined;
386
+ mustSucceed?: string[] | undefined;
387
+ sequence?: string[] | undefined;
388
+ }, {
389
+ mustRun?: string[] | undefined;
390
+ mustNotRun?: string[] | undefined;
391
+ mustSucceed?: string[] | undefined;
392
+ sequence?: string[] | undefined;
393
+ }>>;
114
394
  }, "passthrough", z.ZodTypeAny, z.objectOutputType<{
115
395
  id: z.ZodUnion<[z.ZodNumber, z.ZodString]>;
116
396
  prompt: z.ZodString;
117
397
  expected_output: z.ZodOptional<z.ZodString>;
118
398
  files: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
119
399
  expectations: z.ZodArray<z.ZodString, "many">;
400
+ tier: z.ZodOptional<z.ZodNumber>;
401
+ toolExpectations: z.ZodOptional<z.ZodObject<{
402
+ mustRun: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
403
+ mustNotRun: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
404
+ mustSucceed: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
405
+ sequence: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
406
+ }, "strict", z.ZodTypeAny, {
407
+ mustRun?: string[] | undefined;
408
+ mustNotRun?: string[] | undefined;
409
+ mustSucceed?: string[] | undefined;
410
+ sequence?: string[] | undefined;
411
+ }, {
412
+ mustRun?: string[] | undefined;
413
+ mustNotRun?: string[] | undefined;
414
+ mustSucceed?: string[] | undefined;
415
+ sequence?: string[] | undefined;
416
+ }>>;
120
417
  }, z.ZodTypeAny, "passthrough">, z.objectInputType<{
121
418
  id: z.ZodUnion<[z.ZodNumber, z.ZodString]>;
122
419
  prompt: z.ZodString;
123
420
  expected_output: z.ZodOptional<z.ZodString>;
124
421
  files: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
125
422
  expectations: z.ZodArray<z.ZodString, "many">;
423
+ tier: z.ZodOptional<z.ZodNumber>;
424
+ toolExpectations: z.ZodOptional<z.ZodObject<{
425
+ mustRun: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
426
+ mustNotRun: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
427
+ mustSucceed: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
428
+ sequence: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
429
+ }, "strict", z.ZodTypeAny, {
430
+ mustRun?: string[] | undefined;
431
+ mustNotRun?: string[] | undefined;
432
+ mustSucceed?: string[] | undefined;
433
+ sequence?: string[] | undefined;
434
+ }, {
435
+ mustRun?: string[] | undefined;
436
+ mustNotRun?: string[] | undefined;
437
+ mustSucceed?: string[] | undefined;
438
+ sequence?: string[] | undefined;
439
+ }>>;
126
440
  }, z.ZodTypeAny, "passthrough">>, z.objectOutputType<{
127
441
  id: z.ZodUnion<[z.ZodNumber, z.ZodString]>;
128
442
  prompt: z.ZodString;
129
443
  expected_output: z.ZodOptional<z.ZodString>;
130
444
  files: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
131
445
  expectations: z.ZodArray<z.ZodString, "many">;
446
+ tier: z.ZodOptional<z.ZodNumber>;
447
+ toolExpectations: z.ZodOptional<z.ZodObject<{
448
+ mustRun: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
449
+ mustNotRun: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
450
+ mustSucceed: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
451
+ sequence: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
452
+ }, "strict", z.ZodTypeAny, {
453
+ mustRun?: string[] | undefined;
454
+ mustNotRun?: string[] | undefined;
455
+ mustSucceed?: string[] | undefined;
456
+ sequence?: string[] | undefined;
457
+ }, {
458
+ mustRun?: string[] | undefined;
459
+ mustNotRun?: string[] | undefined;
460
+ mustSucceed?: string[] | undefined;
461
+ sequence?: string[] | undefined;
462
+ }>>;
132
463
  }, z.ZodTypeAny, "passthrough">, z.objectInputType<{
133
464
  id: z.ZodUnion<[z.ZodNumber, z.ZodString]>;
134
465
  prompt: z.ZodString;
135
466
  expected_output: z.ZodOptional<z.ZodString>;
136
467
  files: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
137
468
  expectations: z.ZodArray<z.ZodString, "many">;
469
+ tier: z.ZodOptional<z.ZodNumber>;
470
+ toolExpectations: z.ZodOptional<z.ZodObject<{
471
+ mustRun: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
472
+ mustNotRun: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
473
+ mustSucceed: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
474
+ sequence: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
475
+ }, "strict", z.ZodTypeAny, {
476
+ mustRun?: string[] | undefined;
477
+ mustNotRun?: string[] | undefined;
478
+ mustSucceed?: string[] | undefined;
479
+ sequence?: string[] | undefined;
480
+ }, {
481
+ mustRun?: string[] | undefined;
482
+ mustNotRun?: string[] | undefined;
483
+ mustSucceed?: string[] | undefined;
484
+ sequence?: string[] | undefined;
485
+ }>>;
138
486
  }, z.ZodTypeAny, "passthrough">>, "many">;
139
487
  }, z.ZodTypeAny, "passthrough">>;
140
488
  export type EvalEntry = z.infer<typeof EvalEntrySchema>;
141
489
  export type EvalSuite = z.infer<typeof EvalSuiteSchema>;
490
+ /**
491
+ * The declared tool expectations of ONE eval (issue #145 Phase T). Derived from
492
+ * {@link EvalEntry} so the grader input + prompt builder share the EXACT shape the
493
+ * parser produces — no drift, and no duplicated inline `{ mustRun?; mustNotRun?;
494
+ * sequence? }` literal across those consumers.
495
+ */
496
+ export type ToolExpectations = NonNullable<EvalEntry['toolExpectations']>;
142
497
  /** Parse + validate a skill-test eval suite. Throws {@link EvalInputError} on any problem. */
143
498
  export declare function parseEvalSuite(jsonText: string): EvalSuite;
144
499
  export interface StageEvalWorkspacesInput {
@@ -1 +1 @@
1
- {"version":3,"file":"eval-inputs.d.ts","sourceRoot":"","sources":["../../src/skill-test/eval-inputs.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,wGAAwG;AACxG,qBAAa,cAAe,SAAQ,KAAK;gBAC3B,OAAO,EAAE,MAAM;CAI5B;AA4CD,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;gCAmCxB,CAAC;AAEL,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;gCAMZ,CAAC;AAEjB,MAAM,MAAM,SAAS,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,CAAC;AACxD,MAAM,MAAM,SAAS,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,CAAC;AAExD,8FAA8F;AAC9F,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,CAmB1D;AAED,MAAM,WAAW,wBAAwB;IACvC,6BAA6B;IAC7B,KAAK,EAAE,SAAS,CAAC;IACjB,mFAAmF;IACnF,QAAQ,EAAE,MAAM,CAAC;IACjB,yEAAyE;IACzE,cAAc,EAAE,MAAM,CAAC;CACxB;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,wBAAwB,GAAG,MAAM,CAkC3E"}
1
+ {"version":3,"file":"eval-inputs.d.ts","sourceRoot":"","sources":["../../src/skill-test/eval-inputs.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,wGAAwG;AACxG,qBAAa,cAAe,SAAQ,KAAK;gBAC3B,OAAO,EAAE,MAAM;CAI5B;AAyBD;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAUrE;AAWD,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;gCAsDxB,CAAC;AAEL,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;gCAMZ,CAAC;AAEjB,MAAM,MAAM,SAAS,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,CAAC;AACxD,MAAM,MAAM,SAAS,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,CAAC;AAExD;;;;;GAKG;AACH,MAAM,MAAM,gBAAgB,GAAG,WAAW,CAAC,SAAS,CAAC,kBAAkB,CAAC,CAAC,CAAC;AAE1E,8FAA8F;AAC9F,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,CAmB1D;AAED,MAAM,WAAW,wBAAwB;IACvC,6BAA6B;IAC7B,KAAK,EAAE,SAAS,CAAC;IACjB,mFAAmF;IACnF,QAAQ,EAAE,MAAM,CAAC;IACjB,yEAAyE;IACzE,cAAc,EAAE,MAAM,CAAC;CACxB;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,wBAAwB,GAAG,MAAM,CAkC3E"}
@@ -20,14 +20,23 @@ export class EvalInputError extends Error {
20
20
  const EVAL_ID_PATTERN = /^[A-Za-z0-9_-]+$/;
21
21
  /** Fields VAT recognizes per eval. Unknown fields are allowed (passthrough); a
22
22
  * near-miss of one of these is flagged as a likely typo (see superRefine). */
23
- const RECOGNIZED_EVAL_FIELDS = ['id', 'prompt', 'expected_output', 'files', 'expectations'];
23
+ const RECOGNIZED_EVAL_FIELDS = [
24
+ 'id',
25
+ 'prompt',
26
+ 'expected_output',
27
+ 'files',
28
+ 'expectations',
29
+ 'tier',
30
+ 'toolExpectations',
31
+ ];
24
32
  /**
25
33
  * True when `key` is exactly one edit (insert/delete/substitute one char) from
26
- * `target`. Used only to catch typos of recognized fields deliberately a tiny
27
- * single-edit check, not a general edit-distance routine, so it stays cheap and
28
- * never fires on legitimately distinct adopter keys (`name`, `category`, `notes`).
34
+ * `target`. Used to catch typos of recognized fields (here) and of declared
35
+ * executable names ({@link ./eval-lint.ts}) deliberately a tiny single-edit
36
+ * check, not a general edit-distance routine, so it stays cheap and never fires
37
+ * on legitimately distinct adopter strings (`name`, `category`, `notes`).
29
38
  */
30
- function isSingleEditAway(key, target) {
39
+ export function isSingleEditAway(key, target) {
31
40
  if (key === target)
32
41
  return false;
33
42
  const lk = key.length;
@@ -65,18 +74,37 @@ export const EvalEntrySchema = z
65
74
  // Optional: a human-readable success description. The pass/fail verdict is
66
75
  // always decided per `expectations` entry, so this is not load-bearing and
67
76
  // (per Postel's Law) is not required — real adopter suites (e.g. dxa-consumption)
68
- // grade with `expectations` alone. When present, the experimenter prompt feeds it
69
- // to the grader as prose CONTEXT informing judgment (see experimenter-prompt.ts).
77
+ // grade with `expectations` alone. When present, the grader prompt feeds it
78
+ // to the grader as prose CONTEXT informing judgment (see grader-prompt.ts).
70
79
  expected_output: z.string().min(1).optional(),
71
80
  files: z.array(z.string().min(1)).optional(),
72
81
  expectations: z.array(z.string().min(1)).min(1),
82
+ // Cost/foundational tier for fail-fast gating (Phase G): ascending, 0 = cheapest/first.
83
+ // Optional — adopters who don't opt into tiered execution omit it.
84
+ tier: z.number().int().nonnegative().optional(),
85
+ // Which tools SHOULD/SHOULD-NOT run, judged later by the grader against the
86
+ // transcript (Phase T). This sub-object's keys are VAT-defined (not adopter-owned
87
+ // like the entry itself), so it is `.strict()` — a typo here is a hard schema error,
88
+ // not silently passed through.
89
+ toolExpectations: z
90
+ .object({
91
+ mustRun: z.array(z.string().min(1)).optional(),
92
+ mustNotRun: z.array(z.string().min(1)).optional(),
93
+ // Each named executable must have RUN and its invoking tool_result must
94
+ // NOT be an error (feature #148). Judged from the transcript by the
95
+ // grader — see tool-eval-schema.ts's ToolSucceedCheckSchema.
96
+ mustSucceed: z.array(z.string().min(1)).optional(),
97
+ sequence: z.array(z.string().min(1)).optional(),
98
+ })
99
+ .strict()
100
+ .optional(),
73
101
  })
74
102
  .passthrough()
75
103
  .superRefine((entry, ctx) => {
76
104
  for (const key of Object.keys(entry)) {
77
105
  if (RECOGNIZED_EVAL_FIELDS.includes(key))
78
106
  continue;
79
- const near = RECOGNIZED_EVAL_FIELDS.find((field) => isSingleEditAway(key.toLowerCase(), field));
107
+ const near = RECOGNIZED_EVAL_FIELDS.find((field) => isSingleEditAway(key.toLowerCase(), field.toLowerCase()));
80
108
  if (near !== undefined) {
81
109
  ctx.addIssue({
82
110
  code: z.ZodIssueCode.custom,
@@ -1 +1 @@
1
- {"version":3,"file":"eval-inputs.js","sourceRoot":"","sources":["../../src/skill-test/eval-inputs.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"eval-inputs.js","sourceRoot":"","sources":["../../src/skill-test/eval-inputs.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,51 @@
1
+ /**
2
+ * Advisory (never-fatal) lint over an eval suite's `expectations` prose (issue #145
3
+ * follow-up). An adopter reported that WEAK expectations — pure "mentions X" /
4
+ * "includes Y" presence checks with no discriminating or negative counterpart —
5
+ * pass even for a hallucinated or right-for-the-wrong-reason answer, giving false
6
+ * confidence in a green run. This module flags that pattern so authors can
7
+ * strengthen the eval; it never blocks a run or changes an exit code.
8
+ *
9
+ * Deliberately conservative: this is a heuristic over free-text prose, not a
10
+ * grammar. When in doubt, do NOT warn — a false "your eval is weak" nag is worse
11
+ * than a missed one, since the grader (an LLM judging the transcript) is the real
12
+ * backstop for eval quality.
13
+ */
14
+ import { type EvalEntry } from './eval-inputs.js';
15
+ /** One advisory finding: `evalId` names the offending eval, `message` is the full advisory text. */
16
+ export interface EvalLintWarning {
17
+ evalId: string;
18
+ message: string;
19
+ }
20
+ /**
21
+ * Lint a parsed eval suite's `expectations` for the weak-presence-only pattern.
22
+ * Flags an eval only when ALL of these hold (conservative — minimize false
23
+ * positives):
24
+ * (a) it has at least one expectation;
25
+ * (b) EVERY expectation string is presence-only (see {@link isPresenceOnlyExpectation});
26
+ * (c) the eval declares no `toolExpectations` — a `mustRun`/`mustNotRun`/`sequence`
27
+ * assertion is itself discriminating (it can fail a transcript that never
28
+ * invoked the right tool), so its presence already covers the concern this
29
+ * lint exists to catch.
30
+ *
31
+ * Pure and side-effect free — callers decide how/where to surface the warnings
32
+ * (this never throws and never affects exit code).
33
+ */
34
+ export declare function lintEvalExpectations(evals: EvalEntry[]): EvalLintWarning[];
35
+ /**
36
+ * Advisory (never-fatal) lint: flag a `toolExpectations` entry that names an
37
+ * executable which looks like a TYPO of one of the skill's `declaredExecutables`
38
+ * (issue #145 adopter follow-up). A name that never matches a real tool is a quiet
39
+ * footgun — `mustRun`/`mustSucceed`/`sequence` then fail for the wrong reason, and
40
+ * `mustNotRun` passes vacuously (the tool "never ran" only because the name is
41
+ * wrong). This is zero-token static plumbing, run before any spend.
42
+ *
43
+ * Conservative, like {@link lintEvalExpectations}: it only fires when there is a
44
+ * SPECIFIC declared name the reference is probably a typo of (so it can suggest
45
+ * "did you mean X?"). A reference that matches a declared name exactly, or that is
46
+ * not close to any declared name (a deliberate built-in/system tool reference), is
47
+ * never flagged. When the skill declares no executables there is nothing to compare
48
+ * against, so it returns no warnings. Pure + side-effect free.
49
+ */
50
+ export declare function lintToolExpectationExecutables(evals: EvalEntry[], declaredExecutableNames: string[]): EvalLintWarning[];
51
+ //# sourceMappingURL=eval-lint.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"eval-lint.d.ts","sourceRoot":"","sources":["../../src/skill-test/eval-lint.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAoB,KAAK,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAEpE,oGAAoG;AACpG,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;CACjB;AAsBD;;;;;;;;;;;;;GAaG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,SAAS,EAAE,GAAG,eAAe,EAAE,CAgB1E;AA0DD;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,8BAA8B,CAC5C,KAAK,EAAE,SAAS,EAAE,EAClB,uBAAuB,EAAE,MAAM,EAAE,GAChC,eAAe,EAAE,CAuBnB"}