mcprigor 1.0.0-rc.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.
Files changed (164) hide show
  1. package/LICENSE +17 -0
  2. package/README.md +233 -0
  3. package/dist/assertions.d.ts +4 -0
  4. package/dist/assertions.d.ts.map +1 -0
  5. package/dist/assertions.js +101 -0
  6. package/dist/assertions.js.map +1 -0
  7. package/dist/author.d.ts +57 -0
  8. package/dist/author.d.ts.map +1 -0
  9. package/dist/author.js +134 -0
  10. package/dist/author.js.map +1 -0
  11. package/dist/canonical.d.ts +4 -0
  12. package/dist/canonical.d.ts.map +1 -0
  13. package/dist/canonical.js +17 -0
  14. package/dist/canonical.js.map +1 -0
  15. package/dist/cli.d.ts +3 -0
  16. package/dist/cli.d.ts.map +1 -0
  17. package/dist/cli.js +265 -0
  18. package/dist/cli.js.map +1 -0
  19. package/dist/contract.d.ts +28 -0
  20. package/dist/contract.d.ts.map +1 -0
  21. package/dist/contract.js +138 -0
  22. package/dist/contract.js.map +1 -0
  23. package/dist/data.d.ts +24 -0
  24. package/dist/data.d.ts.map +1 -0
  25. package/dist/data.js +367 -0
  26. package/dist/data.js.map +1 -0
  27. package/dist/discovery.d.ts +6 -0
  28. package/dist/discovery.d.ts.map +1 -0
  29. package/dist/discovery.js +82 -0
  30. package/dist/discovery.js.map +1 -0
  31. package/dist/errors.d.ts +19 -0
  32. package/dist/errors.d.ts.map +1 -0
  33. package/dist/errors.js +40 -0
  34. package/dist/errors.js.map +1 -0
  35. package/dist/extension-host.d.ts +20 -0
  36. package/dist/extension-host.d.ts.map +1 -0
  37. package/dist/extension-host.js +52 -0
  38. package/dist/extension-host.js.map +1 -0
  39. package/dist/extension-sdk.d.ts +22 -0
  40. package/dist/extension-sdk.d.ts.map +1 -0
  41. package/dist/extension-sdk.js +3 -0
  42. package/dist/extension-sdk.js.map +1 -0
  43. package/dist/extension-worker.d.ts +2 -0
  44. package/dist/extension-worker.d.ts.map +1 -0
  45. package/dist/extension-worker.js +27 -0
  46. package/dist/extension-worker.js.map +1 -0
  47. package/dist/extensions.d.ts +15 -0
  48. package/dist/extensions.d.ts.map +1 -0
  49. package/dist/extensions.js +60 -0
  50. package/dist/extensions.js.map +1 -0
  51. package/dist/imports.d.ts +7 -0
  52. package/dist/imports.d.ts.map +1 -0
  53. package/dist/imports.js +41 -0
  54. package/dist/imports.js.map +1 -0
  55. package/dist/index.d.ts +29 -0
  56. package/dist/index.d.ts.map +1 -0
  57. package/dist/index.js +28 -0
  58. package/dist/index.js.map +1 -0
  59. package/dist/language.d.ts +34 -0
  60. package/dist/language.d.ts.map +1 -0
  61. package/dist/language.js +102 -0
  62. package/dist/language.js.map +1 -0
  63. package/dist/loader.d.ts +4 -0
  64. package/dist/loader.d.ts.map +1 -0
  65. package/dist/loader.js +51 -0
  66. package/dist/loader.js.map +1 -0
  67. package/dist/parity.d.ts +23 -0
  68. package/dist/parity.d.ts.map +1 -0
  69. package/dist/parity.js +77 -0
  70. package/dist/parity.js.map +1 -0
  71. package/dist/path.d.ts +3 -0
  72. package/dist/path.d.ts.map +1 -0
  73. package/dist/path.js +71 -0
  74. package/dist/path.js.map +1 -0
  75. package/dist/qa-advanced.d.ts +8 -0
  76. package/dist/qa-advanced.d.ts.map +1 -0
  77. package/dist/qa-advanced.js +239 -0
  78. package/dist/qa-advanced.js.map +1 -0
  79. package/dist/qa-language.d.ts +4 -0
  80. package/dist/qa-language.d.ts.map +1 -0
  81. package/dist/qa-language.js +385 -0
  82. package/dist/qa-language.js.map +1 -0
  83. package/dist/qa-loader.d.ts +4 -0
  84. package/dist/qa-loader.d.ts.map +1 -0
  85. package/dist/qa-loader.js +22 -0
  86. package/dist/qa-loader.js.map +1 -0
  87. package/dist/redact.d.ts +7 -0
  88. package/dist/redact.d.ts.map +1 -0
  89. package/dist/redact.js +63 -0
  90. package/dist/redact.js.map +1 -0
  91. package/dist/replay.d.ts +17 -0
  92. package/dist/replay.d.ts.map +1 -0
  93. package/dist/replay.js +48 -0
  94. package/dist/replay.js.map +1 -0
  95. package/dist/reporters.d.ts +6 -0
  96. package/dist/reporters.d.ts.map +1 -0
  97. package/dist/reporters.js +52 -0
  98. package/dist/reporters.js.map +1 -0
  99. package/dist/runner.d.ts +16 -0
  100. package/dist/runner.d.ts.map +1 -0
  101. package/dist/runner.js +304 -0
  102. package/dist/runner.js.map +1 -0
  103. package/dist/schema.d.ts +446 -0
  104. package/dist/schema.d.ts.map +1 -0
  105. package/dist/schema.js +117 -0
  106. package/dist/schema.js.map +1 -0
  107. package/dist/session.d.ts +5 -0
  108. package/dist/session.d.ts.map +1 -0
  109. package/dist/session.js +111 -0
  110. package/dist/session.js.map +1 -0
  111. package/dist/snapshots.d.ts +28 -0
  112. package/dist/snapshots.d.ts.map +1 -0
  113. package/dist/snapshots.js +87 -0
  114. package/dist/snapshots.js.map +1 -0
  115. package/dist/starter.d.ts +3 -0
  116. package/dist/starter.d.ts.map +1 -0
  117. package/dist/starter.js +34 -0
  118. package/dist/starter.js.map +1 -0
  119. package/dist/state.d.ts +13 -0
  120. package/dist/state.d.ts.map +1 -0
  121. package/dist/state.js +29 -0
  122. package/dist/state.js.map +1 -0
  123. package/dist/trace.d.ts +57 -0
  124. package/dist/trace.d.ts.map +1 -0
  125. package/dist/trace.js +94 -0
  126. package/dist/trace.js.map +1 -0
  127. package/dist/types.d.ts +245 -0
  128. package/dist/types.d.ts.map +1 -0
  129. package/dist/types.js +2 -0
  130. package/dist/types.js.map +1 -0
  131. package/dist/workspace.d.ts +10 -0
  132. package/dist/workspace.d.ts.map +1 -0
  133. package/dist/workspace.js +144 -0
  134. package/dist/workspace.js.map +1 -0
  135. package/docs/CLI-REFERENCE.md +167 -0
  136. package/docs/COMPATIBILITY.md +42 -0
  137. package/docs/CONTRACT-DRIFT.md +42 -0
  138. package/docs/DATA-AND-REUSE.md +213 -0
  139. package/docs/DATA-ENGINEERING.md +96 -0
  140. package/docs/ENGINEER-SETUP.md +176 -0
  141. package/docs/ERROR-MODEL.md +24 -0
  142. package/docs/EVIDENCE.md +58 -0
  143. package/docs/EXTENSION-SDK.md +76 -0
  144. package/docs/FILE-EXTENSION.md +52 -0
  145. package/docs/GETTING-STARTED.md +126 -0
  146. package/docs/GUIDED-AUTHORING.md +80 -0
  147. package/docs/LANDSCAPE.md +81 -0
  148. package/docs/LANGUAGE-SPEC.md +317 -0
  149. package/docs/MCP-NATIVE.md +111 -0
  150. package/docs/PLAIN-LANGUAGE-COOKBOOK.md +219 -0
  151. package/docs/QA-GUIDE.md +128 -0
  152. package/docs/QA-WORKSPACE.md +78 -0
  153. package/docs/README.md +55 -0
  154. package/docs/SECURITY-AND-RETENTION.md +37 -0
  155. package/docs/SNAPSHOTS-AND-REPLAY.md +85 -0
  156. package/docs/SPECIFICATION.md +178 -0
  157. package/docs/STATE-AND-DEPENDENCIES.md +106 -0
  158. package/docs/TRANSPORT-PARITY.md +98 -0
  159. package/docs/TROUBLESHOOTING.md +199 -0
  160. package/editors/mcpr-language.json +16 -0
  161. package/package.json +70 -0
  162. package/workspace-assets/app.js +1 -0
  163. package/workspace-assets/index.html +1 -0
  164. package/workspace-assets/style.css +1 -0
@@ -0,0 +1,446 @@
1
+ export declare const suiteSchema: {
2
+ readonly $id: "https://mcprigor.dev/schema/suite-v1.json";
3
+ readonly type: "object";
4
+ readonly additionalProperties: false;
5
+ readonly required: readonly ["version", "target", "tests"];
6
+ readonly properties: {
7
+ readonly version: {
8
+ readonly const: 1;
9
+ };
10
+ readonly name: {
11
+ readonly type: "string";
12
+ readonly minLength: 1;
13
+ };
14
+ readonly target: {
15
+ readonly $ref: "#/$defs/target";
16
+ };
17
+ readonly targets: {
18
+ readonly type: "object";
19
+ readonly minProperties: 2;
20
+ readonly additionalProperties: {
21
+ readonly $ref: "#/$defs/target";
22
+ };
23
+ };
24
+ readonly defaults: {
25
+ readonly type: "object";
26
+ readonly additionalProperties: false;
27
+ readonly properties: {
28
+ readonly timeoutMs: {
29
+ readonly type: "integer";
30
+ readonly minimum: 1;
31
+ readonly maximum: 600000;
32
+ };
33
+ };
34
+ };
35
+ readonly redact: {
36
+ readonly type: "array";
37
+ readonly uniqueItems: true;
38
+ readonly items: {
39
+ readonly type: "string";
40
+ readonly minLength: 1;
41
+ };
42
+ };
43
+ readonly extensions: {
44
+ readonly type: "object";
45
+ readonly additionalProperties: false;
46
+ readonly properties: {
47
+ readonly functions: {
48
+ readonly type: "array";
49
+ readonly uniqueItems: true;
50
+ readonly items: {
51
+ readonly type: "string";
52
+ readonly minLength: 1;
53
+ };
54
+ };
55
+ readonly permissions: {
56
+ readonly type: "array";
57
+ readonly uniqueItems: true;
58
+ readonly items: {
59
+ readonly enum: readonly ["environment", "filesystem-read", "network"];
60
+ };
61
+ };
62
+ readonly allowlist: {
63
+ readonly type: "array";
64
+ readonly uniqueItems: true;
65
+ readonly items: {
66
+ readonly type: "string";
67
+ readonly minLength: 1;
68
+ };
69
+ };
70
+ readonly unsafeLegacy: {
71
+ readonly type: "boolean";
72
+ };
73
+ };
74
+ };
75
+ readonly client: {
76
+ readonly type: "object";
77
+ };
78
+ readonly snapshots: {
79
+ readonly type: "object";
80
+ readonly additionalProperties: false;
81
+ readonly properties: {
82
+ readonly file: {
83
+ readonly type: "string";
84
+ };
85
+ readonly ignore: {
86
+ readonly type: "array";
87
+ readonly items: {
88
+ readonly type: "string";
89
+ readonly pattern: "^\\$";
90
+ };
91
+ };
92
+ };
93
+ };
94
+ readonly tests: {
95
+ readonly type: "array";
96
+ readonly minItems: 1;
97
+ readonly items: {
98
+ readonly type: "object";
99
+ readonly additionalProperties: false;
100
+ readonly required: readonly ["name", "steps"];
101
+ readonly properties: {
102
+ readonly name: {
103
+ readonly type: "string";
104
+ readonly minLength: 1;
105
+ };
106
+ readonly skip: {
107
+ readonly oneOf: readonly [{
108
+ readonly type: "boolean";
109
+ }, {
110
+ readonly type: "string";
111
+ }];
112
+ };
113
+ readonly id: {
114
+ readonly type: "string";
115
+ readonly minLength: 1;
116
+ };
117
+ readonly logicalName: {
118
+ readonly type: "string";
119
+ };
120
+ readonly dependsOn: {
121
+ readonly type: "array";
122
+ readonly uniqueItems: true;
123
+ readonly items: {
124
+ readonly type: "string";
125
+ readonly minLength: 1;
126
+ };
127
+ };
128
+ readonly variables: {
129
+ readonly type: "object";
130
+ };
131
+ readonly data: {
132
+ readonly type: "object";
133
+ };
134
+ readonly requires: {
135
+ readonly type: "object";
136
+ readonly additionalProperties: false;
137
+ readonly properties: {
138
+ readonly capabilities: {
139
+ readonly type: "array";
140
+ readonly uniqueItems: true;
141
+ readonly items: {
142
+ readonly type: "string";
143
+ };
144
+ };
145
+ readonly protocolVersions: {
146
+ readonly type: "array";
147
+ readonly uniqueItems: true;
148
+ readonly items: {
149
+ readonly type: "string";
150
+ };
151
+ };
152
+ };
153
+ };
154
+ readonly steps: {
155
+ readonly type: "array";
156
+ readonly minItems: 1;
157
+ readonly items: {
158
+ readonly $ref: "#/$defs/step";
159
+ };
160
+ };
161
+ };
162
+ };
163
+ };
164
+ };
165
+ readonly $defs: {
166
+ readonly target: {
167
+ readonly oneOf: readonly [{
168
+ readonly type: "object";
169
+ readonly additionalProperties: false;
170
+ readonly required: readonly ["transport", "command"];
171
+ readonly properties: {
172
+ readonly transport: {
173
+ readonly const: "stdio";
174
+ };
175
+ readonly command: {
176
+ readonly type: "string";
177
+ readonly minLength: 1;
178
+ };
179
+ readonly args: {
180
+ readonly type: "array";
181
+ readonly items: {
182
+ readonly type: "string";
183
+ };
184
+ };
185
+ readonly cwd: {
186
+ readonly type: "string";
187
+ };
188
+ readonly env: {
189
+ readonly type: "object";
190
+ readonly additionalProperties: {
191
+ readonly type: "string";
192
+ };
193
+ };
194
+ };
195
+ }, {
196
+ readonly type: "object";
197
+ readonly additionalProperties: false;
198
+ readonly required: readonly ["transport", "url"];
199
+ readonly properties: {
200
+ readonly transport: {
201
+ readonly const: "streamable-http";
202
+ };
203
+ readonly url: {
204
+ readonly type: "string";
205
+ readonly minLength: 1;
206
+ };
207
+ readonly headers: {
208
+ readonly type: "object";
209
+ readonly additionalProperties: {
210
+ readonly type: "string";
211
+ };
212
+ };
213
+ };
214
+ }];
215
+ };
216
+ readonly assertion: {
217
+ readonly type: "object";
218
+ readonly additionalProperties: false;
219
+ readonly properties: {
220
+ readonly path: {
221
+ readonly type: "string";
222
+ readonly pattern: "^\\$($|\\.|\\[)";
223
+ };
224
+ readonly equals: {};
225
+ readonly notEquals: {};
226
+ readonly exists: {
227
+ readonly type: "boolean";
228
+ };
229
+ readonly type: {
230
+ readonly enum: readonly ["string", "number", "boolean", "object", "array", "null"];
231
+ };
232
+ readonly contains: {};
233
+ readonly length: {
234
+ readonly type: "integer";
235
+ readonly minimum: 0;
236
+ };
237
+ readonly matches: {
238
+ readonly type: "string";
239
+ readonly maxLength: 1000;
240
+ };
241
+ readonly schema: {
242
+ readonly type: "object";
243
+ };
244
+ readonly snapshot: {
245
+ readonly type: "object";
246
+ readonly additionalProperties: false;
247
+ readonly required: readonly ["name"];
248
+ readonly properties: {
249
+ readonly name: {
250
+ readonly type: "string";
251
+ readonly minLength: 1;
252
+ };
253
+ readonly ignore: {
254
+ readonly type: "array";
255
+ readonly uniqueItems: true;
256
+ readonly items: {
257
+ readonly type: "string";
258
+ readonly pattern: "^\\$";
259
+ };
260
+ };
261
+ };
262
+ };
263
+ };
264
+ };
265
+ readonly assertBlock: {
266
+ readonly type: "object";
267
+ readonly additionalProperties: false;
268
+ readonly properties: {
269
+ readonly status: {
270
+ readonly enum: readonly ["success", "error"];
271
+ };
272
+ readonly error: {
273
+ readonly type: "object";
274
+ readonly additionalProperties: false;
275
+ readonly properties: {
276
+ readonly code: {
277
+ readonly type: "number";
278
+ };
279
+ readonly message: {
280
+ readonly type: "string";
281
+ };
282
+ readonly matches: {
283
+ readonly type: "string";
284
+ };
285
+ };
286
+ };
287
+ readonly json: {
288
+ readonly oneOf: readonly [{
289
+ readonly $ref: "#/$defs/assertion";
290
+ }, {
291
+ readonly type: "array";
292
+ readonly items: {
293
+ readonly $ref: "#/$defs/assertion";
294
+ };
295
+ }];
296
+ };
297
+ };
298
+ };
299
+ readonly step: {
300
+ readonly type: "object";
301
+ readonly additionalProperties: false;
302
+ readonly properties: {
303
+ readonly name: {
304
+ readonly type: "string";
305
+ };
306
+ readonly request: {
307
+ readonly type: "object";
308
+ readonly additionalProperties: false;
309
+ readonly required: readonly ["method"];
310
+ readonly properties: {
311
+ readonly method: {
312
+ readonly type: "string";
313
+ readonly minLength: 1;
314
+ };
315
+ readonly params: {};
316
+ };
317
+ };
318
+ readonly tool: {
319
+ readonly type: "object";
320
+ readonly additionalProperties: false;
321
+ readonly required: readonly ["name"];
322
+ readonly properties: {
323
+ readonly name: {
324
+ readonly type: "string";
325
+ readonly minLength: 1;
326
+ };
327
+ readonly arguments: {
328
+ readonly type: "object";
329
+ };
330
+ };
331
+ };
332
+ readonly set: {
333
+ readonly type: "object";
334
+ readonly additionalProperties: false;
335
+ readonly required: readonly ["variable", "function"];
336
+ readonly properties: {
337
+ readonly variable: {
338
+ readonly type: "string";
339
+ };
340
+ readonly function: {
341
+ readonly type: "string";
342
+ };
343
+ readonly arguments: {
344
+ readonly type: "object";
345
+ };
346
+ };
347
+ };
348
+ readonly native: {
349
+ readonly type: "object";
350
+ readonly required: readonly ["action"];
351
+ readonly properties: {
352
+ readonly action: {
353
+ readonly type: "string";
354
+ };
355
+ };
356
+ };
357
+ readonly phase: {
358
+ readonly enum: readonly ["setup", "test", "cleanup"];
359
+ };
360
+ readonly always: {
361
+ readonly type: "boolean";
362
+ };
363
+ readonly assert: {
364
+ readonly $ref: "#/$defs/assertBlock";
365
+ };
366
+ readonly capture: {
367
+ readonly type: "object";
368
+ readonly additionalProperties: {
369
+ readonly type: "string";
370
+ readonly pattern: "^\\$";
371
+ };
372
+ };
373
+ readonly export: {
374
+ readonly type: "object";
375
+ readonly additionalProperties: {
376
+ readonly type: "object";
377
+ readonly required: readonly ["path"];
378
+ readonly properties: {
379
+ readonly path: {
380
+ readonly type: "string";
381
+ readonly pattern: "^\\$";
382
+ };
383
+ readonly aggregate: {
384
+ readonly enum: readonly ["single", "list", "map"];
385
+ };
386
+ readonly sensitive: {
387
+ readonly type: "boolean";
388
+ };
389
+ };
390
+ };
391
+ };
392
+ readonly timeoutMs: {
393
+ readonly type: "integer";
394
+ readonly minimum: 1;
395
+ readonly maximum: 600000;
396
+ };
397
+ };
398
+ readonly oneOf: readonly [{
399
+ readonly required: readonly ["request"];
400
+ readonly not: {
401
+ readonly anyOf: readonly [{
402
+ readonly required: readonly ["tool"];
403
+ }, {
404
+ readonly required: readonly ["set"];
405
+ }, {
406
+ readonly required: readonly ["native"];
407
+ }];
408
+ };
409
+ }, {
410
+ readonly required: readonly ["tool"];
411
+ readonly not: {
412
+ readonly anyOf: readonly [{
413
+ readonly required: readonly ["request"];
414
+ }, {
415
+ readonly required: readonly ["set"];
416
+ }, {
417
+ readonly required: readonly ["native"];
418
+ }];
419
+ };
420
+ }, {
421
+ readonly required: readonly ["set"];
422
+ readonly not: {
423
+ readonly anyOf: readonly [{
424
+ readonly required: readonly ["request"];
425
+ }, {
426
+ readonly required: readonly ["tool"];
427
+ }, {
428
+ readonly required: readonly ["native"];
429
+ }];
430
+ };
431
+ }, {
432
+ readonly required: readonly ["native"];
433
+ readonly not: {
434
+ readonly anyOf: readonly [{
435
+ readonly required: readonly ["request"];
436
+ }, {
437
+ readonly required: readonly ["tool"];
438
+ }, {
439
+ readonly required: readonly ["set"];
440
+ }];
441
+ };
442
+ }];
443
+ };
444
+ };
445
+ };
446
+ //# sourceMappingURL=schema.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../src/schema.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAmHd,CAAC"}
package/dist/schema.js ADDED
@@ -0,0 +1,117 @@
1
+ export const suiteSchema = {
2
+ $id: "https://mcprigor.dev/schema/suite-v1.json",
3
+ type: "object",
4
+ additionalProperties: false,
5
+ required: ["version", "target", "tests"],
6
+ properties: {
7
+ version: { const: 1 },
8
+ name: { type: "string", minLength: 1 },
9
+ target: { $ref: "#/$defs/target" },
10
+ targets: { type: "object", minProperties: 2, additionalProperties: { $ref: "#/$defs/target" } },
11
+ defaults: {
12
+ type: "object", additionalProperties: false,
13
+ properties: { timeoutMs: { type: "integer", minimum: 1, maximum: 600000 } },
14
+ },
15
+ redact: { type: "array", uniqueItems: true, items: { type: "string", minLength: 1 } },
16
+ extensions: {
17
+ type: "object", additionalProperties: false,
18
+ properties: { functions: { type: "array", uniqueItems: true, items: { type: "string", minLength: 1 } }, permissions: { type: "array", uniqueItems: true, items: { enum: ["environment", "filesystem-read", "network"] } }, allowlist: { type: "array", uniqueItems: true, items: { type: "string", minLength: 1 } }, unsafeLegacy: { type: "boolean" } },
19
+ },
20
+ client: { type: "object" },
21
+ snapshots: { type: "object", additionalProperties: false, properties: { file: { type: "string" }, ignore: { type: "array", items: { type: "string", pattern: "^\\$" } } } },
22
+ tests: {
23
+ type: "array", minItems: 1,
24
+ items: {
25
+ type: "object", additionalProperties: false, required: ["name", "steps"],
26
+ properties: {
27
+ name: { type: "string", minLength: 1 }, skip: { oneOf: [{ type: "boolean" }, { type: "string" }] },
28
+ id: { type: "string", minLength: 1 }, logicalName: { type: "string" },
29
+ dependsOn: { type: "array", uniqueItems: true, items: { type: "string", minLength: 1 } },
30
+ variables: { type: "object" },
31
+ data: { type: "object" },
32
+ requires: {
33
+ type: "object", additionalProperties: false,
34
+ properties: {
35
+ capabilities: { type: "array", uniqueItems: true, items: { type: "string" } },
36
+ protocolVersions: { type: "array", uniqueItems: true, items: { type: "string" } },
37
+ },
38
+ },
39
+ steps: { type: "array", minItems: 1, items: { $ref: "#/$defs/step" } },
40
+ },
41
+ },
42
+ },
43
+ },
44
+ $defs: {
45
+ target: {
46
+ oneOf: [
47
+ {
48
+ type: "object", additionalProperties: false, required: ["transport", "command"],
49
+ properties: {
50
+ transport: { const: "stdio" }, command: { type: "string", minLength: 1 },
51
+ args: { type: "array", items: { type: "string" } }, cwd: { type: "string" },
52
+ env: { type: "object", additionalProperties: { type: "string" } },
53
+ },
54
+ },
55
+ {
56
+ type: "object", additionalProperties: false, required: ["transport", "url"],
57
+ properties: {
58
+ transport: { const: "streamable-http" }, url: { type: "string", minLength: 1 },
59
+ headers: { type: "object", additionalProperties: { type: "string" } },
60
+ },
61
+ },
62
+ ],
63
+ },
64
+ assertion: {
65
+ type: "object", additionalProperties: false,
66
+ properties: {
67
+ path: { type: "string", pattern: "^\\$($|\\.|\\[)" }, equals: {}, notEquals: {}, exists: { type: "boolean" },
68
+ type: { enum: ["string", "number", "boolean", "object", "array", "null"] }, contains: {},
69
+ length: { type: "integer", minimum: 0 }, matches: { type: "string", maxLength: 1000 },
70
+ schema: { type: "object" },
71
+ snapshot: { type: "object", additionalProperties: false, required: ["name"], properties: { name: { type: "string", minLength: 1 }, ignore: { type: "array", uniqueItems: true, items: { type: "string", pattern: "^\\$" } } } },
72
+ },
73
+ },
74
+ assertBlock: {
75
+ type: "object", additionalProperties: false,
76
+ properties: {
77
+ status: { enum: ["success", "error"] },
78
+ error: {
79
+ type: "object", additionalProperties: false,
80
+ properties: { code: { type: "number" }, message: { type: "string" }, matches: { type: "string" } },
81
+ },
82
+ json: { oneOf: [{ $ref: "#/$defs/assertion" }, { type: "array", items: { $ref: "#/$defs/assertion" } }] },
83
+ },
84
+ },
85
+ step: {
86
+ type: "object", additionalProperties: false,
87
+ properties: {
88
+ name: { type: "string" },
89
+ request: {
90
+ type: "object", additionalProperties: false, required: ["method"],
91
+ properties: { method: { type: "string", minLength: 1 }, params: {} },
92
+ },
93
+ tool: {
94
+ type: "object", additionalProperties: false, required: ["name"],
95
+ properties: { name: { type: "string", minLength: 1 }, arguments: { type: "object" } },
96
+ },
97
+ set: {
98
+ type: "object", additionalProperties: false, required: ["variable", "function"],
99
+ properties: { variable: { type: "string" }, function: { type: "string" }, arguments: { type: "object" } },
100
+ },
101
+ native: { type: "object", required: ["action"], properties: { action: { type: "string" } } },
102
+ phase: { enum: ["setup", "test", "cleanup"] }, always: { type: "boolean" },
103
+ assert: { $ref: "#/$defs/assertBlock" },
104
+ capture: { type: "object", additionalProperties: { type: "string", pattern: "^\\$" } },
105
+ export: { type: "object", additionalProperties: { type: "object", required: ["path"], properties: { path: { type: "string", pattern: "^\\$" }, aggregate: { enum: ["single", "list", "map"] }, sensitive: { type: "boolean" } } } },
106
+ timeoutMs: { type: "integer", minimum: 1, maximum: 600000 },
107
+ },
108
+ oneOf: [
109
+ { required: ["request"], not: { anyOf: [{ required: ["tool"] }, { required: ["set"] }, { required: ["native"] }] } },
110
+ { required: ["tool"], not: { anyOf: [{ required: ["request"] }, { required: ["set"] }, { required: ["native"] }] } },
111
+ { required: ["set"], not: { anyOf: [{ required: ["request"] }, { required: ["tool"] }, { required: ["native"] }] } },
112
+ { required: ["native"], not: { anyOf: [{ required: ["request"] }, { required: ["tool"] }, { required: ["set"] }] } },
113
+ ],
114
+ },
115
+ },
116
+ };
117
+ //# sourceMappingURL=schema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema.js","sourceRoot":"","sources":["../src/schema.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ import type { Target, TestSession } from "./types.js";
2
+ export declare function createSession(target: Target): TestSession;
3
+ export declare function shutdownSessions(): Promise<void>;
4
+ export declare function installSignalCleanup(): () => void;
5
+ //# sourceMappingURL=session.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../src/session.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAA0E,MAAM,EAAE,WAAW,EAAe,MAAM,YAAY,CAAC;AAI3I,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,WAAW,CAA+H;AACzL,wBAAsB,gBAAgB,IAAI,OAAO,CAAC,IAAI,CAAC,CAA6G;AACpK,wBAAgB,oBAAoB,IAAI,MAAM,IAAI,CAAyP"}