@post-print/agent-test 0.3.4 → 0.3.6
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/README.md +17 -61
- package/dist/check.d.ts +38 -0
- package/dist/check.d.ts.map +1 -0
- package/dist/check.js +169 -0
- package/dist/check.js.map +1 -0
- package/dist/cli.d.ts +11 -7
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +327 -318
- package/dist/cli.js.map +1 -1
- package/dist/compare-scenario.d.ts +41 -0
- package/dist/compare-scenario.d.ts.map +1 -0
- package/dist/compare-scenario.js +194 -0
- package/dist/compare-scenario.js.map +1 -0
- package/dist/debug-bundle.d.ts +2 -1
- package/dist/debug-bundle.d.ts.map +1 -1
- package/dist/debug-bundle.js +12 -5
- package/dist/debug-bundle.js.map +1 -1
- package/dist/doctor.d.ts +6 -1
- package/dist/doctor.d.ts.map +1 -1
- package/dist/doctor.js +133 -11
- package/dist/doctor.js.map +1 -1
- package/dist/expect.d.ts +6 -5
- package/dist/expect.d.ts.map +1 -1
- package/dist/expect.js +67 -57
- package/dist/expect.js.map +1 -1
- package/dist/host-log.d.ts +17 -0
- package/dist/host-log.d.ts.map +1 -0
- package/dist/host-log.js +154 -0
- package/dist/host-log.js.map +1 -0
- package/dist/hosts.d.ts +22 -0
- package/dist/hosts.d.ts.map +1 -0
- package/dist/hosts.js +84 -0
- package/dist/hosts.js.map +1 -0
- package/dist/html-report.d.ts +0 -13
- package/dist/html-report.d.ts.map +1 -1
- package/dist/html-report.js +504 -323
- package/dist/html-report.js.map +1 -1
- package/dist/index.d.ts +14 -7
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +12 -6
- package/dist/index.js.map +1 -1
- package/dist/live-isolation.d.ts +11 -4
- package/dist/live-isolation.d.ts.map +1 -1
- package/dist/live-isolation.js +31 -10
- package/dist/live-isolation.js.map +1 -1
- package/dist/load-adapters.d.ts +13 -0
- package/dist/load-adapters.d.ts.map +1 -0
- package/dist/load-adapters.js +76 -0
- package/dist/load-adapters.js.map +1 -0
- package/dist/load-suite.d.ts.map +1 -1
- package/dist/load-suite.js +6 -2
- package/dist/load-suite.js.map +1 -1
- package/dist/mcp-config.d.ts +8 -0
- package/dist/mcp-config.d.ts.map +1 -1
- package/dist/mcp-config.js +46 -0
- package/dist/mcp-config.js.map +1 -1
- package/dist/progress.d.ts +7 -0
- package/dist/progress.d.ts.map +1 -1
- package/dist/progress.js +39 -9
- package/dist/progress.js.map +1 -1
- package/dist/record-trace.d.ts +9 -7
- package/dist/record-trace.d.ts.map +1 -1
- package/dist/record-trace.js +5 -16
- package/dist/record-trace.js.map +1 -1
- package/dist/report-preview-server.d.ts +2 -0
- package/dist/report-preview-server.d.ts.map +1 -0
- package/dist/report-preview-server.js +24 -0
- package/dist/report-preview-server.js.map +1 -0
- package/dist/report-preview.d.ts +11 -0
- package/dist/report-preview.d.ts.map +1 -0
- package/dist/report-preview.js +161 -0
- package/dist/report-preview.js.map +1 -0
- package/dist/run-suite.d.ts +34 -1
- package/dist/run-suite.d.ts.map +1 -1
- package/dist/run-suite.js +588 -82
- package/dist/run-suite.js.map +1 -1
- package/dist/scenario-story.d.ts +43 -0
- package/dist/scenario-story.d.ts.map +1 -0
- package/dist/scenario-story.js +215 -0
- package/dist/scenario-story.js.map +1 -0
- package/dist/suite-summary.d.ts +2 -0
- package/dist/suite-summary.d.ts.map +1 -1
- package/dist/suite-summary.js +70 -22
- package/dist/suite-summary.js.map +1 -1
- package/dist/theme.d.ts +30 -5
- package/dist/theme.d.ts.map +1 -1
- package/dist/theme.js +207 -45
- package/dist/theme.js.map +1 -1
- package/dist/types.d.ts +105 -11
- package/dist/types.d.ts.map +1 -1
- package/dist/validate-seeds.d.ts.map +1 -1
- package/dist/validate-seeds.js +21 -6
- package/dist/validate-seeds.js.map +1 -1
- package/dist/validate-suite.d.ts +3 -1
- package/dist/validate-suite.d.ts.map +1 -1
- package/dist/validate-suite.js +268 -23
- package/dist/validate-suite.js.map +1 -1
- package/package.json +4 -4
- package/dist/compare.d.ts +0 -79
- package/dist/compare.d.ts.map +0 -1
- package/dist/compare.js +0 -232
- package/dist/compare.js.map +0 -1
package/dist/types.d.ts
CHANGED
|
@@ -8,43 +8,108 @@ export interface ScenarioRubric {
|
|
|
8
8
|
tier?: "low" | "medium" | "high";
|
|
9
9
|
/** Chat-style tier announce — infer one-line routing from transcript when routing.tier absent. */
|
|
10
10
|
handsOnRouting?: boolean;
|
|
11
|
+
/** Substring in assistant text, commands, artifacts, or tool args and results. */
|
|
11
12
|
must?: string[];
|
|
13
|
+
/** Substring that must not appear in assistant text, commands, artifacts, or tool args. Tool results are ignored. */
|
|
12
14
|
mustNot?: string[];
|
|
13
15
|
mustRun?: string[];
|
|
14
16
|
/**
|
|
15
|
-
* Tool name substring, or `name:
|
|
16
|
-
* Matches built-in and MCP tool calls
|
|
17
|
+
* Tool name substring, or `name:fragment` where fragment must appear in
|
|
18
|
+
* JSON args or the tool result. Matches built-in and MCP tool calls.
|
|
17
19
|
*/
|
|
18
20
|
mustCallTool?: string[];
|
|
19
21
|
mustNotCallTool?: string[];
|
|
20
22
|
/**
|
|
21
|
-
* Substring that must appear in
|
|
23
|
+
* Substring that must appear in Read-family args or a Shell/Bash path access.
|
|
22
24
|
* Hallucination scoring stays in live `judge` questions — these are lightweight proxies.
|
|
23
25
|
*/
|
|
24
26
|
mustReadPath?: string[];
|
|
25
27
|
/** Substring that must not appear in any Read tool's JSON args. */
|
|
26
28
|
mustNotReadPath?: string[];
|
|
27
|
-
/**
|
|
29
|
+
/**
|
|
30
|
+
* Skill folder names. Deterministic match is a SKILL.md / references read
|
|
31
|
+
* on a host skill path. Live judge then scores whether the agent followed it.
|
|
32
|
+
*/
|
|
28
33
|
mustInvokeSkill?: string[];
|
|
29
34
|
mustNotInvokeSkill?: string[];
|
|
30
35
|
routingBlock?: boolean;
|
|
31
36
|
reviewDepth?: "quick" | "standard" | "thorough" | "full";
|
|
32
|
-
/**
|
|
37
|
+
/** Any transcript outcome. The judge sees assistant text, tool args, and tool results. */
|
|
33
38
|
judge?: JudgeRubricItem[];
|
|
34
39
|
}
|
|
40
|
+
export type CompareArmId = "a" | "b";
|
|
41
|
+
/** Overrides for one side of a compare scenario. Omitted fields inherit the scenario. */
|
|
42
|
+
export interface CompareArm {
|
|
43
|
+
label?: string;
|
|
44
|
+
/** Plain-language note for this arm. */
|
|
45
|
+
description?: string;
|
|
46
|
+
prompt?: string;
|
|
47
|
+
host?: AgentHost;
|
|
48
|
+
profile?: ContextProfile;
|
|
49
|
+
workspace?: string;
|
|
50
|
+
skills?: SkillContextSetting;
|
|
51
|
+
contextSources?: string[];
|
|
52
|
+
mcpServers?: Record<string, McpServerConfig>;
|
|
53
|
+
allowUserSkills?: boolean;
|
|
54
|
+
seedPatch?: string;
|
|
55
|
+
seedStageOnly?: boolean;
|
|
56
|
+
/**
|
|
57
|
+
* Extra deterministic checks for this arm only.
|
|
58
|
+
* Arrays append onto the scenario rubric. Do not set judge here.
|
|
59
|
+
*/
|
|
60
|
+
rubric?: ScenarioRubric;
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Two live arms in one scenario.
|
|
64
|
+
* `faster` and `cheaper` are optional metric gates.
|
|
65
|
+
* `rubric.judge` is optional and scores both transcripts.
|
|
66
|
+
*/
|
|
67
|
+
export interface ScenarioCompare {
|
|
68
|
+
a: CompareArm;
|
|
69
|
+
b: CompareArm;
|
|
70
|
+
/** Named arm must have a shorter duration. */
|
|
71
|
+
faster?: CompareArmId;
|
|
72
|
+
/** Named arm must use fewer total tokens. */
|
|
73
|
+
cheaper?: CompareArmId;
|
|
74
|
+
}
|
|
75
|
+
export interface CompareArmResult {
|
|
76
|
+
id: CompareArmId;
|
|
77
|
+
label: string;
|
|
78
|
+
prompt: string;
|
|
79
|
+
/** Plain-language note for this arm. */
|
|
80
|
+
description?: string;
|
|
81
|
+
trace?: AgentTrace;
|
|
82
|
+
durationMs?: number;
|
|
83
|
+
}
|
|
84
|
+
export interface ScenarioCompareResult {
|
|
85
|
+
a: CompareArmResult;
|
|
86
|
+
b: CompareArmResult;
|
|
87
|
+
}
|
|
35
88
|
export interface AgentScenario {
|
|
36
89
|
name: string;
|
|
37
|
-
/**
|
|
38
|
-
|
|
90
|
+
/** Plain-language note. Says what this scenario tests. */
|
|
91
|
+
description?: string;
|
|
92
|
+
/** Run two arms. Optional metric gates and an optional pairwise judge. */
|
|
93
|
+
compare?: ScenarioCompare;
|
|
39
94
|
prompt: string;
|
|
40
95
|
host?: AgentHost;
|
|
41
96
|
profile?: ContextProfile;
|
|
42
|
-
/**
|
|
97
|
+
/** Extra skill folders to overlay. Project skills in the git repo load without this. */
|
|
43
98
|
skills?: SkillContextSetting;
|
|
44
99
|
/** Additive context paths (merged after suite defaults.contextSources). */
|
|
45
100
|
contextSources?: string[];
|
|
46
101
|
/** Inline MCP servers for live Cursor (merged over suite defaults by server name). */
|
|
47
102
|
mcpServers?: Record<string, McpServerConfig>;
|
|
103
|
+
/**
|
|
104
|
+
* Caller-relative folder that becomes the sealed repo.
|
|
105
|
+
* Omit or `"."` copies caller HEAD. A subfolder copies only that tree.
|
|
106
|
+
*/
|
|
107
|
+
workspace?: string;
|
|
108
|
+
/**
|
|
109
|
+
* Load host-global user skills from the developer machine.
|
|
110
|
+
* Default false. Keep false for a custom `workspace` fixture.
|
|
111
|
+
*/
|
|
112
|
+
allowUserSkills?: boolean;
|
|
48
113
|
/** Live-only: apply patch + commit in worktree so pr-mode branch diff exists. */
|
|
49
114
|
seedPatch?: string;
|
|
50
115
|
/** Live-only: with seedPatch, stage changes without committing (staged review mode). */
|
|
@@ -60,16 +125,31 @@ export interface AgentScenario {
|
|
|
60
125
|
export interface AgentSuiteDefaults {
|
|
61
126
|
host?: AgentHost;
|
|
62
127
|
profile?: ContextProfile;
|
|
63
|
-
/**
|
|
128
|
+
/** Extra skill folders to overlay, or `"none"`. */
|
|
64
129
|
skills?: SkillContextSetting;
|
|
65
130
|
/** Additive repo-relative context paths or `.skeleton/customize/` basenames. */
|
|
66
131
|
contextSources?: string[];
|
|
67
132
|
/** Inline MCP servers for direct agent runs. */
|
|
68
133
|
mcpServers?: Record<string, McpServerConfig>;
|
|
134
|
+
/**
|
|
135
|
+
* Caller-relative folder that becomes the sealed repo.
|
|
136
|
+
* Scenario `workspace` wins when both are set.
|
|
137
|
+
*/
|
|
138
|
+
workspace?: string;
|
|
139
|
+
/**
|
|
140
|
+
* Load host-global user skills from the developer machine.
|
|
141
|
+
* Default false. Scenario `allowUserSkills` wins when both are set.
|
|
142
|
+
*/
|
|
143
|
+
allowUserSkills?: boolean;
|
|
69
144
|
}
|
|
70
145
|
export interface AgentSuiteFile {
|
|
71
146
|
name: string;
|
|
72
147
|
description?: string;
|
|
148
|
+
/**
|
|
149
|
+
* Host matrix for this suite (Playwright-style projects).
|
|
150
|
+
* When set, a run expands once per host. `--host` then filters the list.
|
|
151
|
+
*/
|
|
152
|
+
hosts?: AgentHost[];
|
|
73
153
|
defaults?: AgentSuiteDefaults;
|
|
74
154
|
scenarios: AgentScenario[];
|
|
75
155
|
}
|
|
@@ -99,11 +179,16 @@ export interface JudgeVerdictResult {
|
|
|
99
179
|
promptChars?: number;
|
|
100
180
|
usage?: AgentUsage;
|
|
101
181
|
}
|
|
182
|
+
/** CLI and HTML summary of rubric checks and what the run produced. */
|
|
183
|
+
export interface ScenarioStory {
|
|
184
|
+
criteria: string[];
|
|
185
|
+
result: string[];
|
|
186
|
+
/** Failures and judge notes. Shown under Result. */
|
|
187
|
+
verdict: string[];
|
|
188
|
+
}
|
|
102
189
|
export interface ScenarioResult {
|
|
103
190
|
suite: string;
|
|
104
191
|
scenario: string;
|
|
105
|
-
/** Stable compare key when scenario JSON defines compareId. */
|
|
106
|
-
compareId?: string;
|
|
107
192
|
passed: boolean;
|
|
108
193
|
failures: AssertionFailure[];
|
|
109
194
|
skipped?: boolean;
|
|
@@ -118,8 +203,16 @@ export interface ScenarioResult {
|
|
|
118
203
|
agentUsage?: AgentUsage;
|
|
119
204
|
/** Denormalized judge usage (sum of criteria). */
|
|
120
205
|
judgeUsage?: AgentUsage;
|
|
206
|
+
/** Scenario prompt sent to the host (for HTML conversation). */
|
|
207
|
+
prompt?: string;
|
|
208
|
+
/** Plain-language note. Says what this scenario tests. */
|
|
209
|
+
description?: string;
|
|
121
210
|
/** Full agent transcript when available (for HTML reports / debug bundles). */
|
|
122
211
|
trace?: AgentTrace;
|
|
212
|
+
/** Both arms when this scenario is a compare run. */
|
|
213
|
+
compare?: ScenarioCompareResult;
|
|
214
|
+
/** Plain-language summary of the check, the agent run, and the verdict. */
|
|
215
|
+
story?: ScenarioStory;
|
|
123
216
|
/** Absolute path to the debug bundle directory when --debug wrote one. */
|
|
124
217
|
debugBundleDir?: string;
|
|
125
218
|
}
|
|
@@ -129,6 +222,7 @@ export interface UsageStats {
|
|
|
129
222
|
sumTotalTokens?: number;
|
|
130
223
|
p50TotalTokens?: number;
|
|
131
224
|
p95TotalTokens?: number;
|
|
225
|
+
maxTotalTokens?: number;
|
|
132
226
|
sumInputTokens?: number;
|
|
133
227
|
sumOutputTokens?: number;
|
|
134
228
|
}
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACX,SAAS,EACT,UAAU,EACV,UAAU,EACV,cAAc,EACd,eAAe,EACf,sBAAsB,EACtB,mBAAmB,EACnB,MAAM,2BAA2B,CAAC;AAEnC,YAAY,EACX,UAAU,EACV,eAAe,EACf,sBAAsB,GACtB,MAAM,2BAA2B,CAAC;AAEnC,MAAM,MAAM,eAAe,GAAG,MAAM,GAAG;IAAE,EAAE,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,CAAC;AAEzE,MAAM,WAAW,cAAc;IAC9B,IAAI,CAAC,EAAE,KAAK,GAAG,QAAQ,GAAG,MAAM,CAAC;IACjC,kGAAkG;IAClG,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB;;;OAGG;IACH,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;IAC3B;;;OAGG;IACH,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,mEAAmE;IACnE,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;IAC3B
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validate-seeds.d.ts","sourceRoot":"","sources":["../src/validate-seeds.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"validate-seeds.d.ts","sourceRoot":"","sources":["../src/validate-seeds.ts"],"names":[],"mappings":"AASA,MAAM,WAAW,mBAAmB;IACnC,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,oBAAoB;IACpC,EAAE,EAAE,OAAO,CAAC;IACZ,MAAM,EAAE,mBAAmB,EAAE,CAAC;IAC9B,OAAO,EAAE,MAAM,CAAC;CAChB;AAED,0FAA0F;AAC1F,wBAAsB,mBAAmB,CAAC,OAAO,EAAE;IAClD,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;CAChB,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAsChC;AAqCD,wBAAgB,0BAA0B,CAAC,MAAM,EAAE,oBAAoB,GAAG,MAAM,CAQ/E"}
|
package/dist/validate-seeds.js
CHANGED
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import { resolve } from "node:path";
|
|
2
|
-
import { createScenarioWorktree } from "@post-print/agent-harness";
|
|
2
|
+
import { createScenarioWorktree, createSealedWorkspace } from "@post-print/agent-harness";
|
|
3
3
|
import { discoverSuites } from "./discover-suites.js";
|
|
4
4
|
import { loadSuiteFile } from "./load-suite.js";
|
|
5
5
|
import { seedScenarioWorktree } from "./scenario-seed.js";
|
|
6
|
+
import { resolveScenarioWorkspaceRel } from "./validate-suite.js";
|
|
6
7
|
/** Apply each seedPatch in a temp worktree to verify hunks match the current baseline. */
|
|
7
8
|
export async function validateSeedPatches(options) {
|
|
8
9
|
const suitesDir = resolve(options.cwd, options.suitesDir);
|
|
@@ -23,6 +24,7 @@ export async function validateSeedPatches(options) {
|
|
|
23
24
|
try {
|
|
24
25
|
await validateOneSeed(options.cwd, suite.name, scenario.name, scenario.seedPatch, {
|
|
25
26
|
stageOnly: scenario.seedStageOnly,
|
|
27
|
+
workspace: resolveScenarioWorkspaceRel(suite, scenario),
|
|
26
28
|
});
|
|
27
29
|
}
|
|
28
30
|
catch (error) {
|
|
@@ -38,16 +40,29 @@ export async function validateSeedPatches(options) {
|
|
|
38
40
|
return { ok: issues.length === 0, issues, checked };
|
|
39
41
|
}
|
|
40
42
|
async function validateOneSeed(repoRoot, suiteName, scenarioName, seedPatch, options) {
|
|
41
|
-
let
|
|
43
|
+
let cleanup;
|
|
44
|
+
let applyPath;
|
|
42
45
|
try {
|
|
43
|
-
|
|
44
|
-
|
|
46
|
+
if (options.workspace) {
|
|
47
|
+
const sealed = await createSealedWorkspace({
|
|
48
|
+
callerCwd: repoRoot,
|
|
49
|
+
workspace: options.workspace,
|
|
50
|
+
});
|
|
51
|
+
cleanup = sealed.cleanup;
|
|
52
|
+
applyPath = sealed.path;
|
|
53
|
+
}
|
|
54
|
+
else {
|
|
55
|
+
const worktree = await createScenarioWorktree(repoRoot, `seed-validate-${suiteName}-${scenarioName}`);
|
|
56
|
+
cleanup = worktree.cleanup;
|
|
57
|
+
applyPath = worktree.path;
|
|
58
|
+
}
|
|
59
|
+
await seedScenarioWorktree(repoRoot, applyPath, seedPatch, {
|
|
45
60
|
stageOnly: options.stageOnly,
|
|
46
61
|
});
|
|
47
62
|
}
|
|
48
63
|
finally {
|
|
49
|
-
if (
|
|
50
|
-
await
|
|
64
|
+
if (cleanup) {
|
|
65
|
+
await cleanup().catch(() => undefined);
|
|
51
66
|
}
|
|
52
67
|
}
|
|
53
68
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validate-seeds.js","sourceRoot":"","sources":["../src/validate-seeds.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,OAAO,EAAE,sBAAsB,EAAE,MAAM,2BAA2B,CAAC;
|
|
1
|
+
{"version":3,"file":"validate-seeds.js","sourceRoot":"","sources":["../src/validate-seeds.ts"],"names":[],"mappings":"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"}
|
package/dist/validate-suite.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { AgentSuiteFile } from "./types.js";
|
|
1
|
+
import type { AgentScenario, AgentSuiteFile } from "./types.js";
|
|
2
2
|
export interface SuiteValidationIssue {
|
|
3
3
|
suitePath: string;
|
|
4
4
|
scenario?: string;
|
|
@@ -19,4 +19,6 @@ export declare function validateSuitePaths(suitePaths: string[], options?: {
|
|
|
19
19
|
rubricsDir?: string;
|
|
20
20
|
}): Promise<SuiteValidationReport>;
|
|
21
21
|
export declare function formatValidationReport(report: SuiteValidationReport): string;
|
|
22
|
+
/** Scenario workspace wins over suite defaults. Caller HEAD when omit or `"."`. */
|
|
23
|
+
export declare function resolveScenarioWorkspaceRel(suite: Pick<AgentSuiteFile, "defaults">, scenario: Pick<AgentScenario, "workspace">): string | undefined;
|
|
22
24
|
//# sourceMappingURL=validate-suite.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validate-suite.d.ts","sourceRoot":"","sources":["../src/validate-suite.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"validate-suite.d.ts","sourceRoot":"","sources":["../src/validate-suite.ts"],"names":[],"mappings":"AAeA,OAAO,KAAK,EAAE,aAAa,EAAE,cAAc,EAA8B,MAAM,YAAY,CAAC;AA2D5F,MAAM,WAAW,oBAAoB;IACpC,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,qBAAqB;IACrC,EAAE,EAAE,OAAO,CAAC;IACZ,MAAM,EAAE,oBAAoB,EAAE,CAAC;IAC/B,aAAa,EAAE,MAAM,CAAC;IACtB,gBAAgB,EAAE,MAAM,CAAC;CACzB;AA+aD,kEAAkE;AAClE,wBAAgB,iBAAiB,CAChC,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,cAAc,GACnB,oBAAoB,EAAE,CAQxB;AAED,wBAAsB,kBAAkB,CACvC,UAAU,EAAE,MAAM,EAAE,EACpB,OAAO,CAAC,EAAE;IAAE,aAAa,CAAC,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,UAAU,CAAC,EAAE,MAAM,CAAA;CAAE,GAC3E,OAAO,CAAC,qBAAqB,CAAC,CAqIhC;AAED,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,qBAAqB,GAAG,MAAM,CAY5E;AAED,mFAAmF;AACnF,wBAAgB,2BAA2B,CAC1C,KAAK,EAAE,IAAI,CAAC,cAAc,EAAE,UAAU,CAAC,EACvC,QAAQ,EAAE,IAAI,CAAC,aAAa,EAAE,WAAW,CAAC,GACxC,MAAM,GAAG,SAAS,CAIpB"}
|