@post-print/agent-test 0.3.4 → 0.3.5

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 (102) hide show
  1. package/README.md +122 -43
  2. package/dist/check.d.ts +38 -0
  3. package/dist/check.d.ts.map +1 -0
  4. package/dist/check.js +169 -0
  5. package/dist/check.js.map +1 -0
  6. package/dist/cli.d.ts +11 -7
  7. package/dist/cli.d.ts.map +1 -1
  8. package/dist/cli.js +327 -318
  9. package/dist/cli.js.map +1 -1
  10. package/dist/compare-scenario.d.ts +33 -0
  11. package/dist/compare-scenario.d.ts.map +1 -0
  12. package/dist/compare-scenario.js +128 -0
  13. package/dist/compare-scenario.js.map +1 -0
  14. package/dist/debug-bundle.d.ts +2 -1
  15. package/dist/debug-bundle.d.ts.map +1 -1
  16. package/dist/debug-bundle.js +12 -5
  17. package/dist/debug-bundle.js.map +1 -1
  18. package/dist/doctor.d.ts +6 -1
  19. package/dist/doctor.d.ts.map +1 -1
  20. package/dist/doctor.js +133 -11
  21. package/dist/doctor.js.map +1 -1
  22. package/dist/expect.d.ts +6 -5
  23. package/dist/expect.d.ts.map +1 -1
  24. package/dist/expect.js +67 -57
  25. package/dist/expect.js.map +1 -1
  26. package/dist/host-log.d.ts +17 -0
  27. package/dist/host-log.d.ts.map +1 -0
  28. package/dist/host-log.js +154 -0
  29. package/dist/host-log.js.map +1 -0
  30. package/dist/hosts.d.ts +22 -0
  31. package/dist/hosts.d.ts.map +1 -0
  32. package/dist/hosts.js +84 -0
  33. package/dist/hosts.js.map +1 -0
  34. package/dist/html-report.d.ts +0 -13
  35. package/dist/html-report.d.ts.map +1 -1
  36. package/dist/html-report.js +381 -318
  37. package/dist/html-report.js.map +1 -1
  38. package/dist/index.d.ts +14 -7
  39. package/dist/index.d.ts.map +1 -1
  40. package/dist/index.js +12 -6
  41. package/dist/index.js.map +1 -1
  42. package/dist/live-isolation.d.ts +11 -4
  43. package/dist/live-isolation.d.ts.map +1 -1
  44. package/dist/live-isolation.js +31 -10
  45. package/dist/live-isolation.js.map +1 -1
  46. package/dist/load-adapters.d.ts +13 -0
  47. package/dist/load-adapters.d.ts.map +1 -0
  48. package/dist/load-adapters.js +76 -0
  49. package/dist/load-adapters.js.map +1 -0
  50. package/dist/load-suite.d.ts.map +1 -1
  51. package/dist/load-suite.js +6 -2
  52. package/dist/load-suite.js.map +1 -1
  53. package/dist/mcp-config.d.ts +8 -0
  54. package/dist/mcp-config.d.ts.map +1 -1
  55. package/dist/mcp-config.js +46 -0
  56. package/dist/mcp-config.js.map +1 -1
  57. package/dist/progress.d.ts +7 -0
  58. package/dist/progress.d.ts.map +1 -1
  59. package/dist/progress.js +39 -9
  60. package/dist/progress.js.map +1 -1
  61. package/dist/record-trace.d.ts +9 -7
  62. package/dist/record-trace.d.ts.map +1 -1
  63. package/dist/record-trace.js +5 -16
  64. package/dist/record-trace.js.map +1 -1
  65. package/dist/report-preview-server.d.ts +2 -0
  66. package/dist/report-preview-server.d.ts.map +1 -0
  67. package/dist/report-preview-server.js +24 -0
  68. package/dist/report-preview-server.js.map +1 -0
  69. package/dist/report-preview.d.ts +11 -0
  70. package/dist/report-preview.d.ts.map +1 -0
  71. package/dist/report-preview.js +161 -0
  72. package/dist/report-preview.js.map +1 -0
  73. package/dist/run-suite.d.ts +34 -1
  74. package/dist/run-suite.d.ts.map +1 -1
  75. package/dist/run-suite.js +551 -82
  76. package/dist/run-suite.js.map +1 -1
  77. package/dist/scenario-story.d.ts +41 -0
  78. package/dist/scenario-story.d.ts.map +1 -0
  79. package/dist/scenario-story.js +198 -0
  80. package/dist/scenario-story.js.map +1 -0
  81. package/dist/suite-summary.d.ts +2 -0
  82. package/dist/suite-summary.d.ts.map +1 -1
  83. package/dist/suite-summary.js +70 -22
  84. package/dist/suite-summary.js.map +1 -1
  85. package/dist/theme.d.ts +29 -5
  86. package/dist/theme.d.ts.map +1 -1
  87. package/dist/theme.js +204 -45
  88. package/dist/theme.js.map +1 -1
  89. package/dist/types.d.ts +97 -11
  90. package/dist/types.d.ts.map +1 -1
  91. package/dist/validate-seeds.d.ts.map +1 -1
  92. package/dist/validate-seeds.js +21 -6
  93. package/dist/validate-seeds.js.map +1 -1
  94. package/dist/validate-suite.d.ts +3 -1
  95. package/dist/validate-suite.d.ts.map +1 -1
  96. package/dist/validate-suite.js +258 -23
  97. package/dist/validate-suite.js.map +1 -1
  98. package/package.json +4 -4
  99. package/dist/compare.d.ts +0 -79
  100. package/dist/compare.d.ts.map +0 -1
  101. package/dist/compare.js +0 -232
  102. package/dist/compare.js.map +0 -1
package/dist/types.d.ts CHANGED
@@ -8,43 +8,102 @@ 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:argFragment` where argFragment must appear in JSON args.
16
- * Matches built-in and MCP tool calls recorded on the trace.
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 a Read tool's JSON args (registry-first / path grounding).
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
- /** Skill folder names the agent must read via SKILL.md (e.g. grill, crystallize). */
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
- /** Fuzzy criteria harness LLM judge on live runs only. */
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
+ prompt?: string;
45
+ host?: AgentHost;
46
+ profile?: ContextProfile;
47
+ workspace?: string;
48
+ skills?: SkillContextSetting;
49
+ contextSources?: string[];
50
+ mcpServers?: Record<string, McpServerConfig>;
51
+ allowUserSkills?: boolean;
52
+ seedPatch?: string;
53
+ seedStageOnly?: boolean;
54
+ /**
55
+ * Extra deterministic checks for this arm only.
56
+ * Arrays append onto the scenario rubric. Do not set judge here.
57
+ */
58
+ rubric?: ScenarioRubric;
59
+ }
60
+ /**
61
+ * Two live arms in one scenario.
62
+ * `faster` and `cheaper` are optional metric gates.
63
+ * `rubric.judge` is optional and scores both transcripts.
64
+ */
65
+ export interface ScenarioCompare {
66
+ a: CompareArm;
67
+ b: CompareArm;
68
+ /** Named arm must have a shorter duration. */
69
+ faster?: CompareArmId;
70
+ /** Named arm must use fewer total tokens. */
71
+ cheaper?: CompareArmId;
72
+ }
73
+ export interface CompareArmResult {
74
+ id: CompareArmId;
75
+ label: string;
76
+ prompt: string;
77
+ trace?: AgentTrace;
78
+ durationMs?: number;
79
+ }
80
+ export interface ScenarioCompareResult {
81
+ a: CompareArmResult;
82
+ b: CompareArmResult;
83
+ }
35
84
  export interface AgentScenario {
36
85
  name: string;
37
- /** Stable key for full vs transfer arm comparison (optional). */
38
- compareId?: string;
86
+ /** Run two arms. Optional metric gates and an optional pairwise judge. */
87
+ compare?: ScenarioCompare;
39
88
  prompt: string;
40
89
  host?: AgentHost;
41
90
  profile?: ContextProfile;
42
- /** Override suite defaults for skill catalog loading. */
91
+ /** Extra skill folders to overlay. Project skills in the git repo load without this. */
43
92
  skills?: SkillContextSetting;
44
93
  /** Additive context paths (merged after suite defaults.contextSources). */
45
94
  contextSources?: string[];
46
95
  /** Inline MCP servers for live Cursor (merged over suite defaults by server name). */
47
96
  mcpServers?: Record<string, McpServerConfig>;
97
+ /**
98
+ * Caller-relative folder that becomes the sealed repo.
99
+ * Omit or `"."` copies caller HEAD. A subfolder copies only that tree.
100
+ */
101
+ workspace?: string;
102
+ /**
103
+ * Load host-global user skills from the developer machine.
104
+ * Default false. Keep false for a custom `workspace` fixture.
105
+ */
106
+ allowUserSkills?: boolean;
48
107
  /** Live-only: apply patch + commit in worktree so pr-mode branch diff exists. */
49
108
  seedPatch?: string;
50
109
  /** Live-only: with seedPatch, stage changes without committing (staged review mode). */
@@ -60,16 +119,31 @@ export interface AgentScenario {
60
119
  export interface AgentSuiteDefaults {
61
120
  host?: AgentHost;
62
121
  profile?: ContextProfile;
63
- /** none | catalog | full ambient-routing uses full for IDE parity. */
122
+ /** Extra skill folders to overlay, or `"none"`. */
64
123
  skills?: SkillContextSetting;
65
124
  /** Additive repo-relative context paths or `.skeleton/customize/` basenames. */
66
125
  contextSources?: string[];
67
126
  /** Inline MCP servers for direct agent runs. */
68
127
  mcpServers?: Record<string, McpServerConfig>;
128
+ /**
129
+ * Caller-relative folder that becomes the sealed repo.
130
+ * Scenario `workspace` wins when both are set.
131
+ */
132
+ workspace?: string;
133
+ /**
134
+ * Load host-global user skills from the developer machine.
135
+ * Default false. Scenario `allowUserSkills` wins when both are set.
136
+ */
137
+ allowUserSkills?: boolean;
69
138
  }
70
139
  export interface AgentSuiteFile {
71
140
  name: string;
72
141
  description?: string;
142
+ /**
143
+ * Host matrix for this suite (Playwright-style projects).
144
+ * When set, a run expands once per host. `--host` then filters the list.
145
+ */
146
+ hosts?: AgentHost[];
73
147
  defaults?: AgentSuiteDefaults;
74
148
  scenarios: AgentScenario[];
75
149
  }
@@ -99,11 +173,16 @@ export interface JudgeVerdictResult {
99
173
  promptChars?: number;
100
174
  usage?: AgentUsage;
101
175
  }
176
+ /** CLI and HTML summary of rubric checks and what the run produced. */
177
+ export interface ScenarioStory {
178
+ criteria: string[];
179
+ result: string[];
180
+ /** Failures and judge notes. Shown under Result. */
181
+ verdict: string[];
182
+ }
102
183
  export interface ScenarioResult {
103
184
  suite: string;
104
185
  scenario: string;
105
- /** Stable compare key when scenario JSON defines compareId. */
106
- compareId?: string;
107
186
  passed: boolean;
108
187
  failures: AssertionFailure[];
109
188
  skipped?: boolean;
@@ -118,8 +197,14 @@ export interface ScenarioResult {
118
197
  agentUsage?: AgentUsage;
119
198
  /** Denormalized judge usage (sum of criteria). */
120
199
  judgeUsage?: AgentUsage;
200
+ /** Scenario prompt sent to the host (for HTML conversation). */
201
+ prompt?: string;
121
202
  /** Full agent transcript when available (for HTML reports / debug bundles). */
122
203
  trace?: AgentTrace;
204
+ /** Both arms when this scenario is a compare run. */
205
+ compare?: ScenarioCompareResult;
206
+ /** Plain-language summary of the check, the agent run, and the verdict. */
207
+ story?: ScenarioStory;
123
208
  /** Absolute path to the debug bundle directory when --debug wrote one. */
124
209
  debugBundleDir?: string;
125
210
  }
@@ -129,6 +214,7 @@ export interface UsageStats {
129
214
  sumTotalTokens?: number;
130
215
  p50TotalTokens?: number;
131
216
  p95TotalTokens?: number;
217
+ maxTotalTokens?: number;
132
218
  sumInputTokens?: number;
133
219
  sumOutputTokens?: number;
134
220
  }
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
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":"AAQA,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,CAqChC;AAyBD,wBAAgB,0BAA0B,CAAC,MAAM,EAAE,oBAAoB,GAAG,MAAM,CAQ/E"}
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"}
@@ -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 worktreeHandle;
43
+ let cleanup;
44
+ let applyPath;
42
45
  try {
43
- worktreeHandle = await createScenarioWorktree(repoRoot, `seed-validate-${suiteName}-${scenarioName}`);
44
- await seedScenarioWorktree(repoRoot, worktreeHandle.path, seedPatch, {
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 (worktreeHandle) {
50
- await worktreeHandle.cleanup().catch(() => undefined);
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":"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"}
1
+ {"version":3,"file":"validate-seeds.js","sourceRoot":"","sources":["../src/validate-seeds.ts"],"names":[],"mappings":"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"}
@@ -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":"AAMA,OAAO,KAAK,EAAiB,cAAc,EAAkB,MAAM,YAAY,CAAC;AAehF,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;AAuMD,kEAAkE;AAClE,wBAAgB,iBAAiB,CAChC,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,cAAc,GACnB,oBAAoB,EAAE,CAOxB;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,CA+ChC;AAED,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,qBAAqB,GAAG,MAAM,CAY5E"}
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;AAkZD,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"}