@superblocksteam/vite-plugin-file-sync 2.0.67-next.1 → 2.0.68-next.0
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/dist/ai-service/agent/tools/apis/analysis.d.ts.map +1 -1
- package/dist/ai-service/agent/tools/apis/analysis.js +4 -0
- package/dist/ai-service/agent/tools/apis/analysis.js.map +1 -1
- package/dist/ai-service/agent/tools/apis/api-executor.d.ts +9 -1
- package/dist/ai-service/agent/tools/apis/api-executor.d.ts.map +1 -1
- package/dist/ai-service/agent/tools/apis/api-executor.js +4 -1
- package/dist/ai-service/agent/tools/apis/api-executor.js.map +1 -1
- package/dist/ai-service/agent/tools/apis/api-validation-orchestrator.d.ts +1 -0
- package/dist/ai-service/agent/tools/apis/api-validation-orchestrator.d.ts.map +1 -1
- package/dist/ai-service/agent/tools/apis/api-validation-orchestrator.js +1 -1
- package/dist/ai-service/agent/tools/apis/api-validation-orchestrator.js.map +1 -1
- package/dist/ai-service/agent/tools/apis/test-api.d.ts +5 -0
- package/dist/ai-service/agent/tools/apis/test-api.d.ts.map +1 -1
- package/dist/ai-service/agent/tools/apis/test-api.js +9 -1
- package/dist/ai-service/agent/tools/apis/test-api.js.map +1 -1
- package/dist/ai-service/agent/tools2/tools/read.d.ts +1 -1
- package/dist/ai-service/index.d.ts +23 -2
- package/dist/ai-service/index.d.ts.map +1 -1
- package/dist/ai-service/index.js +99 -0
- package/dist/ai-service/index.js.map +1 -1
- package/dist/ai-service/judge/debug-browser.d.ts +8 -0
- package/dist/ai-service/judge/debug-browser.d.ts.map +1 -0
- package/dist/ai-service/judge/debug-browser.js +79 -0
- package/dist/ai-service/judge/debug-browser.js.map +1 -0
- package/dist/ai-service/judge/index.d.ts +12 -0
- package/dist/ai-service/judge/index.d.ts.map +1 -0
- package/dist/ai-service/judge/index.js +11 -0
- package/dist/ai-service/judge/index.js.map +1 -0
- package/dist/ai-service/judge/integration/mcp-client.d.ts +82 -0
- package/dist/ai-service/judge/integration/mcp-client.d.ts.map +1 -0
- package/dist/ai-service/judge/integration/mcp-client.js +276 -0
- package/dist/ai-service/judge/integration/mcp-client.js.map +1 -0
- package/dist/ai-service/judge/integration/playwright-bridge.d.ts +142 -0
- package/dist/ai-service/judge/integration/playwright-bridge.d.ts.map +1 -0
- package/dist/ai-service/judge/integration/playwright-bridge.js +217 -0
- package/dist/ai-service/judge/integration/playwright-bridge.js.map +1 -0
- package/dist/ai-service/judge/judge-eval-http.d.ts +3 -0
- package/dist/ai-service/judge/judge-eval-http.d.ts.map +1 -0
- package/dist/ai-service/judge/judge-eval-http.js +541 -0
- package/dist/ai-service/judge/judge-eval-http.js.map +1 -0
- package/dist/ai-service/judge/judge-eval-service-runner.d.ts +35 -0
- package/dist/ai-service/judge/judge-eval-service-runner.d.ts.map +1 -0
- package/dist/ai-service/judge/judge-eval-service-runner.js +124 -0
- package/dist/ai-service/judge/judge-eval-service-runner.js.map +1 -0
- package/dist/ai-service/judge/judge-executor.d.ts +65 -0
- package/dist/ai-service/judge/judge-executor.d.ts.map +1 -0
- package/dist/ai-service/judge/judge-executor.js +334 -0
- package/dist/ai-service/judge/judge-executor.js.map +1 -0
- package/dist/ai-service/judge/judge-service.d.ts +161 -0
- package/dist/ai-service/judge/judge-service.d.ts.map +1 -0
- package/dist/ai-service/judge/judge-service.js +241 -0
- package/dist/ai-service/judge/judge-service.js.map +1 -0
- package/dist/ai-service/judge/prompts/evaluation-criteria.d.ts +37 -0
- package/dist/ai-service/judge/prompts/evaluation-criteria.d.ts.map +1 -0
- package/dist/ai-service/judge/prompts/evaluation-criteria.js +283 -0
- package/dist/ai-service/judge/prompts/evaluation-criteria.js.map +1 -0
- package/dist/ai-service/judge/prompts/system-prompt.d.ts +30 -0
- package/dist/ai-service/judge/prompts/system-prompt.d.ts.map +1 -0
- package/dist/ai-service/judge/prompts/system-prompt.js +212 -0
- package/dist/ai-service/judge/prompts/system-prompt.js.map +1 -0
- package/dist/ai-service/judge/storage/csv-storage.d.ts +99 -0
- package/dist/ai-service/judge/storage/csv-storage.d.ts.map +1 -0
- package/dist/ai-service/judge/storage/csv-storage.js +274 -0
- package/dist/ai-service/judge/storage/csv-storage.js.map +1 -0
- package/dist/ai-service/judge/storage/index.d.ts +9 -0
- package/dist/ai-service/judge/storage/index.d.ts.map +1 -0
- package/dist/ai-service/judge/storage/index.js +7 -0
- package/dist/ai-service/judge/storage/index.js.map +1 -0
- package/dist/ai-service/judge/storage/interface.d.ts +51 -0
- package/dist/ai-service/judge/storage/interface.d.ts.map +1 -0
- package/dist/ai-service/judge/storage/interface.js +8 -0
- package/dist/ai-service/judge/storage/interface.js.map +1 -0
- package/dist/ai-service/judge/storage/types.d.ts +54 -0
- package/dist/ai-service/judge/storage/types.d.ts.map +1 -0
- package/dist/ai-service/judge/storage/types.js +7 -0
- package/dist/ai-service/judge/storage/types.js.map +1 -0
- package/dist/ai-service/judge/tools/index.d.ts +22 -0
- package/dist/ai-service/judge/tools/index.d.ts.map +1 -0
- package/dist/ai-service/judge/tools/index.js +29 -0
- package/dist/ai-service/judge/tools/index.js.map +1 -0
- package/dist/ai-service/judge/tools/playwright-action.d.ts +18 -0
- package/dist/ai-service/judge/tools/playwright-action.d.ts.map +1 -0
- package/dist/ai-service/judge/tools/playwright-action.js +171 -0
- package/dist/ai-service/judge/tools/playwright-action.js.map +1 -0
- package/dist/ai-service/judge/tools/submit-feedback.d.ts +41 -0
- package/dist/ai-service/judge/tools/submit-feedback.d.ts.map +1 -0
- package/dist/ai-service/judge/tools/submit-feedback.js +150 -0
- package/dist/ai-service/judge/tools/submit-feedback.js.map +1 -0
- package/dist/ai-service/judge/types.d.ts +169 -0
- package/dist/ai-service/judge/types.d.ts.map +1 -0
- package/dist/ai-service/judge/types.js +8 -0
- package/dist/ai-service/judge/types.js.map +1 -0
- package/dist/ai-service/llm/interaction/adapters/vercel.d.ts.map +1 -1
- package/dist/ai-service/llm/interaction/adapters/vercel.js.map +1 -1
- package/dist/ai-service/llm/interaction/provider.d.ts +10 -9
- package/dist/ai-service/llm/interaction/provider.d.ts.map +1 -1
- package/dist/ai-service/llmobs/middleware/stream-text.d.ts +8 -8
- package/dist/ai-service/llmobs/middleware/stream-text.d.ts.map +1 -1
- package/dist/ai-service/llmobs/middleware/stream-text.js.map +1 -1
- package/dist/ai-service/llmobs/tracer.d.ts.map +1 -1
- package/dist/ai-service/llmobs/tracer.js +2 -1
- package/dist/ai-service/llmobs/tracer.js.map +1 -1
- package/dist/ai-service/mcp/embedded-playwright-mcp-server.d.ts +53 -0
- package/dist/ai-service/mcp/embedded-playwright-mcp-server.d.ts.map +1 -0
- package/dist/ai-service/mcp/embedded-playwright-mcp-server.js +541 -0
- package/dist/ai-service/mcp/embedded-playwright-mcp-server.js.map +1 -0
- package/dist/ai-service/mcp/playwright-server.d.ts +114 -0
- package/dist/ai-service/mcp/playwright-server.d.ts.map +1 -0
- package/dist/ai-service/mcp/playwright-server.js +109 -0
- package/dist/ai-service/mcp/playwright-server.js.map +1 -0
- package/dist/server-rpc/client.js +1 -1
- package/dist/server-rpc/client.js.map +1 -1
- package/dist/socket-manager.d.ts.map +1 -1
- package/dist/socket-manager.js +8 -0
- package/dist/socket-manager.js.map +1 -1
- package/package.json +7 -6
|
@@ -0,0 +1,541 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* Judge evaluation CLI that reuses the window.__judgeEvaluation hook.
|
|
4
|
+
*
|
|
5
|
+
* Workflow:
|
|
6
|
+
* 1. Launch Playwright and navigate to the Code Mode editor
|
|
7
|
+
* 2. Ensure the user is authenticated (optionally logging in)
|
|
8
|
+
* 3. Wait for window.__judgeEvaluation to be available
|
|
9
|
+
* 4. Invoke judge evaluation through the socket handler
|
|
10
|
+
* 5. Print the evaluation result
|
|
11
|
+
*/
|
|
12
|
+
import fs from "node:fs";
|
|
13
|
+
import path from "node:path";
|
|
14
|
+
function parseArgs() {
|
|
15
|
+
const args = process.argv.slice(2);
|
|
16
|
+
const positional = [];
|
|
17
|
+
const opts = {};
|
|
18
|
+
for (const arg of args) {
|
|
19
|
+
if (arg.startsWith("--")) {
|
|
20
|
+
const [key, value] = arg.slice(2).split("=");
|
|
21
|
+
switch (key) {
|
|
22
|
+
case "app-url":
|
|
23
|
+
opts.appUrl = value;
|
|
24
|
+
break;
|
|
25
|
+
case "prompt-id":
|
|
26
|
+
opts.promptId = value;
|
|
27
|
+
break;
|
|
28
|
+
case "prompt":
|
|
29
|
+
opts.prompt = value;
|
|
30
|
+
break;
|
|
31
|
+
case "storage-state":
|
|
32
|
+
opts.storageStatePath = value;
|
|
33
|
+
break;
|
|
34
|
+
case "headed":
|
|
35
|
+
opts.headed = true;
|
|
36
|
+
break;
|
|
37
|
+
case "headless":
|
|
38
|
+
opts.headed = false;
|
|
39
|
+
break;
|
|
40
|
+
case "login-email":
|
|
41
|
+
opts.loginEmail = value;
|
|
42
|
+
break;
|
|
43
|
+
case "login-password":
|
|
44
|
+
opts.loginPassword = value;
|
|
45
|
+
break;
|
|
46
|
+
case "login-url":
|
|
47
|
+
opts.loginUrl = value;
|
|
48
|
+
break;
|
|
49
|
+
case "app-id":
|
|
50
|
+
opts.appId = value;
|
|
51
|
+
break;
|
|
52
|
+
case "complexity":
|
|
53
|
+
opts.complexity = normalizeComplexity(value);
|
|
54
|
+
break;
|
|
55
|
+
case "jwt":
|
|
56
|
+
opts.jwt = value;
|
|
57
|
+
break;
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
else {
|
|
61
|
+
positional.push(arg);
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
if (positional.length >= 3) {
|
|
65
|
+
opts.appUrl = positional[0];
|
|
66
|
+
opts.promptId = positional[1];
|
|
67
|
+
opts.prompt = positional[2];
|
|
68
|
+
if (positional[3]) {
|
|
69
|
+
opts.complexity = normalizeComplexity(positional[3]);
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
if (!opts.appUrl || !opts.promptId || !opts.prompt) {
|
|
73
|
+
console.error("Usage: pnpm exec tsx judge-eval-http.ts [--app-url=...] [--prompt-id=...] [--prompt=...] [--complexity=...] [--jwt=...] [--login-email=...] [--login-password=...] [--login-url=...]");
|
|
74
|
+
console.error("Example:");
|
|
75
|
+
console.error(' pnpm exec tsx judge-eval-http.ts --app-url=http://localhost:3000 --prompt-id=example --prompt="Create a todo app"');
|
|
76
|
+
process.exit(1);
|
|
77
|
+
}
|
|
78
|
+
// Env fallbacks for login options
|
|
79
|
+
opts.loginEmail = opts.loginEmail ?? process.env.JUDGE_LOGIN_EMAIL;
|
|
80
|
+
opts.loginPassword = opts.loginPassword ?? process.env.JUDGE_LOGIN_PASSWORD;
|
|
81
|
+
opts.loginUrl = opts.loginUrl ?? process.env.JUDGE_LOGIN_URL;
|
|
82
|
+
return opts;
|
|
83
|
+
}
|
|
84
|
+
function normalizeComplexity(value) {
|
|
85
|
+
if (!value)
|
|
86
|
+
return undefined;
|
|
87
|
+
return value.replace(/^\[/, "").replace(/\]$/, "");
|
|
88
|
+
}
|
|
89
|
+
function resolveHeadlessFlag(override) {
|
|
90
|
+
if (override === true) {
|
|
91
|
+
return false;
|
|
92
|
+
}
|
|
93
|
+
if (override === false) {
|
|
94
|
+
return true;
|
|
95
|
+
}
|
|
96
|
+
const envValue = process.env.JUDGE_HEADLESS;
|
|
97
|
+
if (!envValue) {
|
|
98
|
+
return true;
|
|
99
|
+
}
|
|
100
|
+
return !["false", "0", "off"].includes(envValue.toLowerCase());
|
|
101
|
+
}
|
|
102
|
+
function resolveStorageStatePath(explicit) {
|
|
103
|
+
if (explicit) {
|
|
104
|
+
return explicit;
|
|
105
|
+
}
|
|
106
|
+
if (process.env.JUDGE_STORAGE_STATE_PATH) {
|
|
107
|
+
return process.env.JUDGE_STORAGE_STATE_PATH;
|
|
108
|
+
}
|
|
109
|
+
const repoRoot = findWorkspaceRoot(process.cwd());
|
|
110
|
+
return path.join(repoRoot, "packages/ui-code-mode/playwright/temp/storageState.json");
|
|
111
|
+
}
|
|
112
|
+
function resolveJwt(cliJwt) {
|
|
113
|
+
if (cliJwt) {
|
|
114
|
+
return { jwt: cliJwt, source: "cli" };
|
|
115
|
+
}
|
|
116
|
+
return { jwt: undefined, source: "browser" };
|
|
117
|
+
}
|
|
118
|
+
async function ensureStorageDirectory(storageStatePath) {
|
|
119
|
+
await fs.promises.mkdir(path.dirname(storageStatePath), { recursive: true });
|
|
120
|
+
}
|
|
121
|
+
async function invokeJudgeHook(page, args) {
|
|
122
|
+
console.log("⏳ Waiting for app to initialize...");
|
|
123
|
+
await page.waitForTimeout(3000);
|
|
124
|
+
console.log("⏳ Waiting for socket to initialize...");
|
|
125
|
+
const hasFunctionBefore = await page.evaluate(() => typeof window.__judgeEvaluation);
|
|
126
|
+
console.log(`📋 __judgeEvaluation type before wait: ${hasFunctionBefore}`);
|
|
127
|
+
const maxAttempts = 180; // 90 seconds (500ms interval)
|
|
128
|
+
for (let attempts = 0; attempts < maxAttempts; attempts++) {
|
|
129
|
+
const hasFunction = await page.evaluate(() => typeof window.__judgeEvaluation === "function");
|
|
130
|
+
if (hasFunction) {
|
|
131
|
+
console.log("✅ Socket initialized and __judgeEvaluation is available");
|
|
132
|
+
break;
|
|
133
|
+
}
|
|
134
|
+
if (attempts === maxAttempts - 1) {
|
|
135
|
+
throw new Error("Timeout waiting for __judgeEvaluation to be available. " +
|
|
136
|
+
"Make sure the dev server is running and the socket connection succeeded.");
|
|
137
|
+
}
|
|
138
|
+
if (attempts % 10 === 0) {
|
|
139
|
+
console.log(` Still waiting... (${(attempts / 2).toFixed(1)}s)`);
|
|
140
|
+
}
|
|
141
|
+
await new Promise((resolve) => setTimeout(resolve, 500));
|
|
142
|
+
}
|
|
143
|
+
console.log("🎯 Invoking judge evaluation...");
|
|
144
|
+
const result = await page.evaluate(async (args) => {
|
|
145
|
+
const { promptId, prompt, appId, appUrl, complexity, jwt, storageStatePath, connectWsEndpoint, storageStateData, } = args;
|
|
146
|
+
console.log("HOOK -> handleJudgeEvaluation options", JSON.stringify({
|
|
147
|
+
storageStatePath,
|
|
148
|
+
connectWsEndpoint,
|
|
149
|
+
hasJwt: !!jwt,
|
|
150
|
+
complexity,
|
|
151
|
+
}));
|
|
152
|
+
const judgeEval = window.__judgeEvaluation;
|
|
153
|
+
if (!judgeEval) {
|
|
154
|
+
throw new Error("Judge evaluation handler not available. Is the dev server running?");
|
|
155
|
+
}
|
|
156
|
+
const evaluation = await judgeEval({
|
|
157
|
+
promptId,
|
|
158
|
+
prompt,
|
|
159
|
+
appId,
|
|
160
|
+
appUrl,
|
|
161
|
+
jwt,
|
|
162
|
+
options: {
|
|
163
|
+
complexity,
|
|
164
|
+
storageStatePath,
|
|
165
|
+
connectWsEndpoint,
|
|
166
|
+
storageStateData,
|
|
167
|
+
},
|
|
168
|
+
});
|
|
169
|
+
try {
|
|
170
|
+
return JSON.parse(JSON.stringify(evaluation));
|
|
171
|
+
}
|
|
172
|
+
catch {
|
|
173
|
+
return evaluation;
|
|
174
|
+
}
|
|
175
|
+
}, args);
|
|
176
|
+
return result;
|
|
177
|
+
}
|
|
178
|
+
async function main() {
|
|
179
|
+
const args = parseArgs();
|
|
180
|
+
const storageStatePath = resolveStorageStatePath(args.storageStatePath);
|
|
181
|
+
const headless = resolveHeadlessFlag(args.headed);
|
|
182
|
+
const { jwt, source: jwtSource } = resolveJwt(args.jwt);
|
|
183
|
+
// Launch browser server first so we can log the WS endpoint
|
|
184
|
+
const playwright = await import("playwright");
|
|
185
|
+
const browserServer = await playwright.chromium.launchServer({
|
|
186
|
+
headless,
|
|
187
|
+
});
|
|
188
|
+
const connectWsEndpoint = browserServer.wsEndpoint();
|
|
189
|
+
console.log("🔍 Judge Evaluation - Browser Hook Mode");
|
|
190
|
+
console.log("=======================================");
|
|
191
|
+
console.log(`Prompt ID: ${args.promptId}`);
|
|
192
|
+
console.log(`App URL: ${args.appUrl}`);
|
|
193
|
+
console.log(`Prompt: ${args.prompt}`);
|
|
194
|
+
console.log(`Complexity: ${args.complexity ?? "medium"}`);
|
|
195
|
+
console.log(`App ID: ${args.appId ?? args.promptId}`);
|
|
196
|
+
console.log(`Storage State: ${storageStatePath}`);
|
|
197
|
+
console.log(`Playwright: ${headless ? "headless" : "headed"}`);
|
|
198
|
+
console.log(`Playwright WS (reuse for judge): ${connectWsEndpoint}`);
|
|
199
|
+
if (args.loginEmail && args.loginPassword) {
|
|
200
|
+
console.log(`Login: using credentials for ${maskEmail(args.loginEmail)}`);
|
|
201
|
+
}
|
|
202
|
+
else {
|
|
203
|
+
console.log("Login: using existing session or storage state");
|
|
204
|
+
}
|
|
205
|
+
console.log(`JWT: ${jwtSource === "cli" ? "provided via --jwt" : "using browser session (TokenProvider)"}`);
|
|
206
|
+
console.log("");
|
|
207
|
+
const browser = await playwright.chromium.connect({
|
|
208
|
+
wsEndpoint: connectWsEndpoint,
|
|
209
|
+
});
|
|
210
|
+
const contextOptions = {};
|
|
211
|
+
if (storageStatePath && fs.existsSync(storageStatePath)) {
|
|
212
|
+
console.log("📦 Loading auth state from storageState.json...");
|
|
213
|
+
contextOptions.storageState = storageStatePath;
|
|
214
|
+
}
|
|
215
|
+
const context = await browser.newContext(contextOptions);
|
|
216
|
+
const page = await context.newPage();
|
|
217
|
+
page.on("console", (msg) => console.log("PAGE LOG:", msg.text()));
|
|
218
|
+
page.on("pageerror", (error) => console.error("PAGE ERROR:", error.message));
|
|
219
|
+
try {
|
|
220
|
+
console.log(`📍 Navigating to ${args.appUrl}...`);
|
|
221
|
+
await page.goto(args.appUrl, {
|
|
222
|
+
waitUntil: "domcontentloaded",
|
|
223
|
+
timeout: 60000,
|
|
224
|
+
});
|
|
225
|
+
const loginUrlUsed = await ensureAuthenticated(page, {
|
|
226
|
+
loginEmail: args.loginEmail,
|
|
227
|
+
loginPassword: args.loginPassword,
|
|
228
|
+
loginUrl: args.loginUrl,
|
|
229
|
+
});
|
|
230
|
+
await ensureOnTargetPage(page, args.appUrl);
|
|
231
|
+
const extraOrigins = [];
|
|
232
|
+
if (loginUrlUsed) {
|
|
233
|
+
const loginOrigin = new URL(loginUrlUsed).origin;
|
|
234
|
+
const loginStorage = await captureOriginStorage(context, loginOrigin);
|
|
235
|
+
if (loginStorage) {
|
|
236
|
+
extraOrigins.push(loginStorage);
|
|
237
|
+
}
|
|
238
|
+
const auth0Cache = await captureAuth0SpaStorage(context, loginOrigin);
|
|
239
|
+
if (auth0Cache &&
|
|
240
|
+
(auth0Cache.localStorage.length || auth0Cache.sessionStorage?.length)) {
|
|
241
|
+
extraOrigins.push(auth0Cache);
|
|
242
|
+
}
|
|
243
|
+
}
|
|
244
|
+
if (storageStatePath) {
|
|
245
|
+
await ensureStorageDirectory(storageStatePath);
|
|
246
|
+
await context.storageState({ path: storageStatePath });
|
|
247
|
+
}
|
|
248
|
+
const storageStateData = await context.storageState();
|
|
249
|
+
if (extraOrigins.length) {
|
|
250
|
+
storageStateData.origins = [
|
|
251
|
+
...(storageStateData.origins || []),
|
|
252
|
+
...extraOrigins,
|
|
253
|
+
];
|
|
254
|
+
}
|
|
255
|
+
const sessionStorageData = await page.evaluate(() => {
|
|
256
|
+
const items = [];
|
|
257
|
+
for (let i = 0; i < sessionStorage.length; i++) {
|
|
258
|
+
const key = sessionStorage.key(i);
|
|
259
|
+
if (key) {
|
|
260
|
+
items.push({ name: key, value: sessionStorage.getItem(key) || "" });
|
|
261
|
+
}
|
|
262
|
+
}
|
|
263
|
+
return { origin: location.origin, items };
|
|
264
|
+
});
|
|
265
|
+
const result = await invokeJudgeHook(page, {
|
|
266
|
+
promptId: args.promptId,
|
|
267
|
+
prompt: args.prompt,
|
|
268
|
+
appId: args.appId ?? args.promptId,
|
|
269
|
+
appUrl: args.appUrl,
|
|
270
|
+
complexity: (args.complexity ?? "medium"),
|
|
271
|
+
jwt,
|
|
272
|
+
storageStatePath,
|
|
273
|
+
connectWsEndpoint,
|
|
274
|
+
storageStateData,
|
|
275
|
+
sessionStorageData,
|
|
276
|
+
extraOrigins,
|
|
277
|
+
});
|
|
278
|
+
printResult(result);
|
|
279
|
+
process.exit(result.passed ? 0 : 1);
|
|
280
|
+
}
|
|
281
|
+
catch (error) {
|
|
282
|
+
console.error("");
|
|
283
|
+
console.error("❌ Evaluation Failed!");
|
|
284
|
+
console.error("======================");
|
|
285
|
+
console.error(error);
|
|
286
|
+
process.exit(1);
|
|
287
|
+
}
|
|
288
|
+
finally {
|
|
289
|
+
await browser.close().catch(() => { });
|
|
290
|
+
await browserServer.close().catch(() => { });
|
|
291
|
+
}
|
|
292
|
+
}
|
|
293
|
+
async function captureOriginStorage(context, origin) {
|
|
294
|
+
const page = await context.newPage();
|
|
295
|
+
try {
|
|
296
|
+
await page.goto(origin, { waitUntil: "domcontentloaded", timeout: 15000 });
|
|
297
|
+
const localStorageItems = await page.evaluate(() => {
|
|
298
|
+
const items = [];
|
|
299
|
+
for (let i = 0; i < localStorage.length; i++) {
|
|
300
|
+
const key = localStorage.key(i);
|
|
301
|
+
if (key) {
|
|
302
|
+
items.push({ name: key, value: localStorage.getItem(key) || "" });
|
|
303
|
+
}
|
|
304
|
+
}
|
|
305
|
+
return items;
|
|
306
|
+
});
|
|
307
|
+
const sessionStorageItems = await page.evaluate(() => {
|
|
308
|
+
const items = [];
|
|
309
|
+
for (let i = 0; i < sessionStorage.length; i++) {
|
|
310
|
+
const key = sessionStorage.key(i);
|
|
311
|
+
if (key) {
|
|
312
|
+
items.push({ name: key, value: sessionStorage.getItem(key) || "" });
|
|
313
|
+
}
|
|
314
|
+
}
|
|
315
|
+
return items;
|
|
316
|
+
});
|
|
317
|
+
return {
|
|
318
|
+
origin,
|
|
319
|
+
localStorage: localStorageItems,
|
|
320
|
+
sessionStorage: sessionStorageItems,
|
|
321
|
+
};
|
|
322
|
+
}
|
|
323
|
+
catch (error) {
|
|
324
|
+
console.warn(`⚠️ Failed to capture storage for origin ${origin}: ${String(error)}`);
|
|
325
|
+
return null;
|
|
326
|
+
}
|
|
327
|
+
finally {
|
|
328
|
+
await page.close().catch(() => { });
|
|
329
|
+
}
|
|
330
|
+
}
|
|
331
|
+
async function captureAuth0SpaStorage(context, origin) {
|
|
332
|
+
const page = await context.newPage();
|
|
333
|
+
try {
|
|
334
|
+
await page.goto(origin, { waitUntil: "domcontentloaded", timeout: 15000 });
|
|
335
|
+
const localStorageItems = await page.evaluate(() => {
|
|
336
|
+
const items = [];
|
|
337
|
+
for (let i = 0; i < localStorage.length; i++) {
|
|
338
|
+
const key = localStorage.key(i);
|
|
339
|
+
if (key && key.startsWith("@@auth0spajs@@")) {
|
|
340
|
+
items.push({ name: key, value: localStorage.getItem(key) || "" });
|
|
341
|
+
}
|
|
342
|
+
}
|
|
343
|
+
return items;
|
|
344
|
+
});
|
|
345
|
+
if (!localStorageItems.length) {
|
|
346
|
+
return null;
|
|
347
|
+
}
|
|
348
|
+
return { origin, localStorage: localStorageItems, sessionStorage: [] };
|
|
349
|
+
}
|
|
350
|
+
catch (error) {
|
|
351
|
+
console.warn(`⚠️ Failed to capture Auth0 SPA storage for origin ${origin}: ${String(error)}`);
|
|
352
|
+
return null;
|
|
353
|
+
}
|
|
354
|
+
finally {
|
|
355
|
+
await page.close().catch(() => { });
|
|
356
|
+
}
|
|
357
|
+
}
|
|
358
|
+
function maskEmail(email) {
|
|
359
|
+
const [name, domain] = email.split("@");
|
|
360
|
+
if (!domain || !name)
|
|
361
|
+
return email;
|
|
362
|
+
const masked = name.length <= 2
|
|
363
|
+
? `${name[0] || ""}*`
|
|
364
|
+
: `${name[0]}${"*".repeat(Math.max(1, name.length - 2))}${name.slice(-1)}`;
|
|
365
|
+
return `${masked}@${domain}`;
|
|
366
|
+
}
|
|
367
|
+
async function ensureAuthenticated(page, opts) {
|
|
368
|
+
let needsLogin = await pageNeedsLogin(page);
|
|
369
|
+
if (!needsLogin) {
|
|
370
|
+
// Wait briefly in case the app redirects us to a login page after initial navigation
|
|
371
|
+
needsLogin = await waitForLoginRedirect(page);
|
|
372
|
+
}
|
|
373
|
+
if (!needsLogin) {
|
|
374
|
+
return;
|
|
375
|
+
}
|
|
376
|
+
if (!opts.loginEmail || !opts.loginPassword) {
|
|
377
|
+
throw new Error("Login required but no credentials provided. Supply --login-email/--login-password or a storage state.");
|
|
378
|
+
}
|
|
379
|
+
const loginUrl = opts.loginUrl ||
|
|
380
|
+
process.env.JUDGE_LOGIN_URL ||
|
|
381
|
+
`${process.env.SUPERBLOCKS_BASE_URL || "http://localhost:3000"}/login`;
|
|
382
|
+
console.log(`🔐 Detected login page, attempting login for ${maskEmail(opts.loginEmail)}...`);
|
|
383
|
+
await fillLoginForm(page, opts.loginEmail, opts.loginPassword, loginUrl);
|
|
384
|
+
return loginUrl;
|
|
385
|
+
}
|
|
386
|
+
async function ensureOnTargetPage(page, targetUrl) {
|
|
387
|
+
const currentUrl = page.url();
|
|
388
|
+
const hasOauthCode = /[?&]code=/.test(currentUrl);
|
|
389
|
+
if (hasOauthCode || !isSamePath(currentUrl, targetUrl)) {
|
|
390
|
+
console.log("🔁 Navigating to target app URL after auth...");
|
|
391
|
+
await page.goto(targetUrl, {
|
|
392
|
+
waitUntil: "domcontentloaded",
|
|
393
|
+
timeout: 60000,
|
|
394
|
+
});
|
|
395
|
+
}
|
|
396
|
+
}
|
|
397
|
+
async function pageNeedsLogin(page) {
|
|
398
|
+
const currentUrl = page.url();
|
|
399
|
+
if (/login|auth|signin/i.test(currentUrl)) {
|
|
400
|
+
return true;
|
|
401
|
+
}
|
|
402
|
+
const emailCount = await page
|
|
403
|
+
.locator('input[type="email"], input[name="email"], input#email, input[name="username"], input#username')
|
|
404
|
+
.count()
|
|
405
|
+
.catch(() => 0);
|
|
406
|
+
const passwordCount = await page
|
|
407
|
+
.locator('input[type="password"], input[name="password"], input#password, input#pass')
|
|
408
|
+
.count()
|
|
409
|
+
.catch(() => 0);
|
|
410
|
+
return emailCount > 0 && passwordCount > 0;
|
|
411
|
+
}
|
|
412
|
+
async function waitForLoginRedirect(page, timeoutMs = 15000) {
|
|
413
|
+
const loginSelector = 'input[type="email"], input[name="email"], input#email, input[name="username"], input#username';
|
|
414
|
+
try {
|
|
415
|
+
await Promise.race([
|
|
416
|
+
page.waitForNavigation({
|
|
417
|
+
waitUntil: "domcontentloaded",
|
|
418
|
+
timeout: timeoutMs,
|
|
419
|
+
}),
|
|
420
|
+
page.waitForSelector(loginSelector, { timeout: timeoutMs }),
|
|
421
|
+
]);
|
|
422
|
+
}
|
|
423
|
+
catch {
|
|
424
|
+
// ignore timeout here
|
|
425
|
+
}
|
|
426
|
+
return await pageNeedsLogin(page);
|
|
427
|
+
}
|
|
428
|
+
async function fillLoginForm(page, email, password, loginUrl) {
|
|
429
|
+
for (let attempt = 0; attempt < 3; attempt++) {
|
|
430
|
+
if (!(await pageNeedsLogin(page))) {
|
|
431
|
+
return;
|
|
432
|
+
}
|
|
433
|
+
const emailSelector = 'input[type="email"], input[name="email"], input#email, input[name="username"], input#username';
|
|
434
|
+
const passwordSelector = 'input[type="password"], input[name="password"], input#password, input#pass';
|
|
435
|
+
const emailField = page.locator(emailSelector);
|
|
436
|
+
await emailField.first().waitFor({ timeout: 30000 });
|
|
437
|
+
await emailField.first().fill(email);
|
|
438
|
+
await emailField
|
|
439
|
+
.first()
|
|
440
|
+
.press("Enter")
|
|
441
|
+
.catch(() => { });
|
|
442
|
+
const continueButton = page.locator('button[type="submit"], button:has-text("Continue"), button:has-text("Next")');
|
|
443
|
+
if ((await continueButton.count().catch(() => 0)) > 0) {
|
|
444
|
+
await continueButton
|
|
445
|
+
.first()
|
|
446
|
+
.click()
|
|
447
|
+
.catch(() => { });
|
|
448
|
+
}
|
|
449
|
+
const passwordField = page.locator(passwordSelector);
|
|
450
|
+
await passwordField.first().waitFor({ timeout: 30000 });
|
|
451
|
+
await passwordField.first().fill(password);
|
|
452
|
+
const submitButton = page.locator('button[type="submit"], button:has-text("Continue"), button:has-text("Log in"), button:has-text("Sign in")');
|
|
453
|
+
if ((await submitButton.count().catch(() => 0)) > 0) {
|
|
454
|
+
await submitButton.first().click();
|
|
455
|
+
}
|
|
456
|
+
else {
|
|
457
|
+
await passwordField
|
|
458
|
+
.first()
|
|
459
|
+
.press("Enter")
|
|
460
|
+
.catch(() => { });
|
|
461
|
+
}
|
|
462
|
+
await page
|
|
463
|
+
.waitForNavigation({
|
|
464
|
+
waitUntil: "domcontentloaded",
|
|
465
|
+
timeout: 60000,
|
|
466
|
+
})
|
|
467
|
+
.catch(() => { });
|
|
468
|
+
if (!(await pageNeedsLogin(page))) {
|
|
469
|
+
return;
|
|
470
|
+
}
|
|
471
|
+
await page.goto(loginUrl, {
|
|
472
|
+
waitUntil: "domcontentloaded",
|
|
473
|
+
timeout: 60000,
|
|
474
|
+
});
|
|
475
|
+
}
|
|
476
|
+
if (await pageNeedsLogin(page)) {
|
|
477
|
+
throw new Error("Login attempt failed - still on login page.");
|
|
478
|
+
}
|
|
479
|
+
}
|
|
480
|
+
function isSamePath(urlA, urlB) {
|
|
481
|
+
try {
|
|
482
|
+
const a = new URL(urlA);
|
|
483
|
+
const b = new URL(urlB);
|
|
484
|
+
return a.origin === b.origin && a.pathname === b.pathname;
|
|
485
|
+
}
|
|
486
|
+
catch {
|
|
487
|
+
return false;
|
|
488
|
+
}
|
|
489
|
+
}
|
|
490
|
+
function printResult(result) {
|
|
491
|
+
console.log("");
|
|
492
|
+
console.log("✅ Evaluation Complete!");
|
|
493
|
+
console.log("========================");
|
|
494
|
+
console.log(`📊 Overall Score: ${result.overallScore}/100`);
|
|
495
|
+
console.log(`${result.passed ? "✅" : "❌"} Status: ${result.passed ? "PASSED" : "FAILED"}`);
|
|
496
|
+
console.log("");
|
|
497
|
+
console.log("Summary:");
|
|
498
|
+
console.log(result.summary);
|
|
499
|
+
console.log("");
|
|
500
|
+
if (result.criteriaEvaluations?.length) {
|
|
501
|
+
console.log("Criteria Evaluations:");
|
|
502
|
+
for (const criterion of result.criteriaEvaluations) {
|
|
503
|
+
const icon = criterion.passed ? "✅" : "❌";
|
|
504
|
+
console.log(` ${icon} ${criterion.criterion} - ${criterion.score}/100`);
|
|
505
|
+
if (criterion.reasoning) {
|
|
506
|
+
console.log(` ${criterion.reasoning}`);
|
|
507
|
+
}
|
|
508
|
+
}
|
|
509
|
+
console.log("");
|
|
510
|
+
}
|
|
511
|
+
if (result.suggestions?.length) {
|
|
512
|
+
console.log("Suggestions:");
|
|
513
|
+
for (const suggestion of result.suggestions) {
|
|
514
|
+
console.log(` 💡 ${suggestion}`);
|
|
515
|
+
}
|
|
516
|
+
console.log("");
|
|
517
|
+
}
|
|
518
|
+
}
|
|
519
|
+
function findWorkspaceRoot(startDir) {
|
|
520
|
+
let current = startDir;
|
|
521
|
+
let last = "";
|
|
522
|
+
while (current !== last) {
|
|
523
|
+
const packageJsonPath = path.join(current, "package.json");
|
|
524
|
+
if (fs.existsSync(packageJsonPath)) {
|
|
525
|
+
try {
|
|
526
|
+
const pkg = JSON.parse(fs.readFileSync(packageJsonPath, "utf-8"));
|
|
527
|
+
if (pkg.workspaces) {
|
|
528
|
+
return current;
|
|
529
|
+
}
|
|
530
|
+
}
|
|
531
|
+
catch {
|
|
532
|
+
// ignore parse errors and continue
|
|
533
|
+
}
|
|
534
|
+
}
|
|
535
|
+
last = current;
|
|
536
|
+
current = path.dirname(current);
|
|
537
|
+
}
|
|
538
|
+
return startDir;
|
|
539
|
+
}
|
|
540
|
+
await main();
|
|
541
|
+
//# sourceMappingURL=judge-eval-http.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"judge-eval-http.js","sourceRoot":"","sources":["../../../src/ai-service/judge/judge-eval-http.ts"],"names":[],"mappings":";AACA;;;;;;;;;GASG;AACH,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAsC7B,SAAS,SAAS;IAChB,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACnC,MAAM,UAAU,GAAa,EAAE,CAAC;IAChC,MAAM,IAAI,GAAqB,EAAE,CAAC;IAElC,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,IAAI,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;YACzB,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YAC7C,QAAQ,GAAG,EAAE,CAAC;gBACZ,KAAK,SAAS;oBACZ,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;oBACpB,MAAM;gBACR,KAAK,WAAW;oBACd,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;oBACtB,MAAM;gBACR,KAAK,QAAQ;oBACX,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;oBACpB,MAAM;gBACR,KAAK,eAAe;oBAClB,IAAI,CAAC,gBAAgB,GAAG,KAAK,CAAC;oBAC9B,MAAM;gBACR,KAAK,QAAQ;oBACX,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;oBACnB,MAAM;gBACR,KAAK,UAAU;oBACb,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;oBACpB,MAAM;gBACR,KAAK,aAAa;oBAChB,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;oBACxB,MAAM;gBACR,KAAK,gBAAgB;oBACnB,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;oBAC3B,MAAM;gBACR,KAAK,WAAW;oBACd,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;oBACtB,MAAM;gBACR,KAAK,QAAQ;oBACX,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;oBACnB,MAAM;gBACR,KAAK,YAAY;oBACf,IAAI,CAAC,UAAU,GAAG,mBAAmB,CAAC,KAAK,CAA0B,CAAC;oBACtE,MAAM;gBACR,KAAK,KAAK;oBACR,IAAI,CAAC,GAAG,GAAG,KAAK,CAAC;oBACjB,MAAM;YACV,CAAC;QACH,CAAC;aAAM,CAAC;YACN,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACvB,CAAC;IACH,CAAC;IAED,IAAI,UAAU,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;QAC3B,IAAI,CAAC,MAAM,GAAG,UAAU,CAAC,CAAC,CAAE,CAAC;QAC7B,IAAI,CAAC,QAAQ,GAAG,UAAU,CAAC,CAAC,CAAE,CAAC;QAC/B,IAAI,CAAC,MAAM,GAAG,UAAU,CAAC,CAAC,CAAE,CAAC;QAC7B,IAAI,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC;YAClB,IAAI,CAAC,UAAU,GAAG,mBAAmB,CACnC,UAAU,CAAC,CAAC,CAAC,CACW,CAAC;QAC7B,CAAC;IACH,CAAC;IAED,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;QACnD,OAAO,CAAC,KAAK,CACX,sLAAsL,CACvL,CAAC;QACF,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;QAC1B,OAAO,CAAC,KAAK,CACX,qHAAqH,CACtH,CAAC;QACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,kCAAkC;IAClC,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,IAAI,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC;IACnE,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,IAAI,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC;IAC5E,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,IAAI,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC;IAE7D,OAAO,IAAe,CAAC;AACzB,CAAC;AAED,SAAS,mBAAmB,CAAC,KAAc;IACzC,IAAI,CAAC,KAAK;QAAE,OAAO,SAAS,CAAC;IAC7B,OAAO,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;AACrD,CAAC;AAED,SAAS,mBAAmB,CAAC,QAAkB;IAC7C,IAAI,QAAQ,KAAK,IAAI,EAAE,CAAC;QACtB,OAAO,KAAK,CAAC;IACf,CAAC;IACD,IAAI,QAAQ,KAAK,KAAK,EAAE,CAAC;QACvB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC;IAC5C,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,OAAO,IAAI,CAAC;IACd,CAAC;IACD,OAAO,CAAC,CAAC,OAAO,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC,CAAC;AACjE,CAAC;AAED,SAAS,uBAAuB,CAAC,QAAiB;IAChD,IAAI,QAAQ,EAAE,CAAC;QACb,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,IAAI,OAAO,CAAC,GAAG,CAAC,wBAAwB,EAAE,CAAC;QACzC,OAAO,OAAO,CAAC,GAAG,CAAC,wBAAwB,CAAC;IAC9C,CAAC;IAED,MAAM,QAAQ,GAAG,iBAAiB,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;IAClD,OAAO,IAAI,CAAC,IAAI,CACd,QAAQ,EACR,yDAAyD,CAC1D,CAAC;AACJ,CAAC;AAED,SAAS,UAAU,CAAC,MAAe;IAIjC,IAAI,MAAM,EAAE,CAAC;QACX,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;IACxC,CAAC;IACD,OAAO,EAAE,GAAG,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;AAC/C,CAAC;AAED,KAAK,UAAU,sBAAsB,CAAC,gBAAwB;IAC5D,MAAM,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;AAC/E,CAAC;AAED,KAAK,UAAU,eAAe,CAC5B,IAAS,EACT,IAAmB;IAEnB,OAAO,CAAC,GAAG,CAAC,oCAAoC,CAAC,CAAC;IAClD,MAAM,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;IAEhC,OAAO,CAAC,GAAG,CAAC,uCAAuC,CAAC,CAAC;IACrD,MAAM,iBAAiB,GAAG,MAAM,IAAI,CAAC,QAAQ,CAC3C,GAAG,EAAE,CAAC,OAAQ,MAAc,CAAC,iBAAiB,CAC/C,CAAC;IACF,OAAO,CAAC,GAAG,CAAC,0CAA0C,iBAAiB,EAAE,CAAC,CAAC;IAE3E,MAAM,WAAW,GAAG,GAAG,CAAC,CAAC,8BAA8B;IACvD,KAAK,IAAI,QAAQ,GAAG,CAAC,EAAE,QAAQ,GAAG,WAAW,EAAE,QAAQ,EAAE,EAAE,CAAC;QAC1D,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,QAAQ,CACrC,GAAG,EAAE,CAAC,OAAQ,MAAc,CAAC,iBAAiB,KAAK,UAAU,CAC9D,CAAC;QACF,IAAI,WAAW,EAAE,CAAC;YAChB,OAAO,CAAC,GAAG,CAAC,yDAAyD,CAAC,CAAC;YACvE,MAAM;QACR,CAAC;QAED,IAAI,QAAQ,KAAK,WAAW,GAAG,CAAC,EAAE,CAAC;YACjC,MAAM,IAAI,KAAK,CACb,yDAAyD;gBACvD,0EAA0E,CAC7E,CAAC;QACJ,CAAC;QAED,IAAI,QAAQ,GAAG,EAAE,KAAK,CAAC,EAAE,CAAC;YACxB,OAAO,CAAC,GAAG,CAAC,wBAAwB,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QACrE,CAAC;QAED,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC;IAC3D,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,iCAAiC,CAAC,CAAC;IAC/C,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,IAAmB,EAAE,EAAE;QAC/D,MAAM,EACJ,QAAQ,EACR,MAAM,EACN,KAAK,EACL,MAAM,EACN,UAAU,EACV,GAAG,EACH,gBAAgB,EAChB,iBAAiB,EACjB,gBAAgB,GACjB,GAAG,IAAI,CAAC;QACT,OAAO,CAAC,GAAG,CACT,uCAAuC,EACvC,IAAI,CAAC,SAAS,CAAC;YACb,gBAAgB;YAChB,iBAAiB;YACjB,MAAM,EAAE,CAAC,CAAC,GAAG;YACb,UAAU;SACX,CAAC,CACH,CAAC;QACF,MAAM,SAAS,GAAI,MAAc,CAAC,iBAAiB,CAAC;QACpD,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,MAAM,IAAI,KAAK,CACb,oEAAoE,CACrE,CAAC;QACJ,CAAC;QAED,MAAM,UAAU,GAAG,MAAM,SAAS,CAAC;YACjC,QAAQ;YACR,MAAM;YACN,KAAK;YACL,MAAM;YACN,GAAG;YACH,OAAO,EAAE;gBACP,UAAU;gBACV,gBAAgB;gBAChB,iBAAiB;gBACjB,gBAAgB;aACjB;SACF,CAAC,CAAC;QAEH,IAAI,CAAC;YACH,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC;QAChD,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,UAAU,CAAC;QACpB,CAAC;IACH,CAAC,EAAE,IAAI,CAAC,CAAC;IAET,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,KAAK,UAAU,IAAI;IACjB,MAAM,IAAI,GAAG,SAAS,EAAE,CAAC;IACzB,MAAM,gBAAgB,GAAG,uBAAuB,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;IACxE,MAAM,QAAQ,GAAG,mBAAmB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAClD,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,GAAG,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAExD,4DAA4D;IAC5D,MAAM,UAAU,GAAG,MAAM,MAAM,CAAC,YAAY,CAAC,CAAC;IAC9C,MAAM,aAAa,GAAG,MAAM,UAAU,CAAC,QAAQ,CAAC,YAAY,CAAC;QAC3D,QAAQ;KACT,CAAC,CAAC;IACH,MAAM,iBAAiB,GAAG,aAAa,CAAC,UAAU,EAAE,CAAC;IAErD,OAAO,CAAC,GAAG,CAAC,yCAAyC,CAAC,CAAC;IACvD,OAAO,CAAC,GAAG,CAAC,yCAAyC,CAAC,CAAC;IACvD,OAAO,CAAC,GAAG,CAAC,cAAc,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;IAC3C,OAAO,CAAC,GAAG,CAAC,YAAY,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;IACvC,OAAO,CAAC,GAAG,CAAC,WAAW,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;IACtC,OAAO,CAAC,GAAG,CAAC,eAAe,IAAI,CAAC,UAAU,IAAI,QAAQ,EAAE,CAAC,CAAC;IAC1D,OAAO,CAAC,GAAG,CAAC,WAAW,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;IACtD,OAAO,CAAC,GAAG,CAAC,kBAAkB,gBAAgB,EAAE,CAAC,CAAC;IAClD,OAAO,CAAC,GAAG,CAAC,eAAe,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;IAC/D,OAAO,CAAC,GAAG,CAAC,oCAAoC,iBAAiB,EAAE,CAAC,CAAC;IACrE,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;QAC1C,OAAO,CAAC,GAAG,CAAC,gCAAgC,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;IAC5E,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,GAAG,CAAC,gDAAgD,CAAC,CAAC;IAChE,CAAC;IACD,OAAO,CAAC,GAAG,CACT,QAAQ,SAAS,KAAK,KAAK,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,uCAAuC,EAAE,CAC/F,CAAC;IACF,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChB,MAAM,OAAO,GAAG,MAAM,UAAU,CAAC,QAAQ,CAAC,OAAO,CAAC;QAChD,UAAU,EAAE,iBAAiB;KAC9B,CAAC,CAAC;IAEH,MAAM,cAAc,GAA4B,EAAE,CAAC;IACnD,IAAI,gBAAgB,IAAI,EAAE,CAAC,UAAU,CAAC,gBAAgB,CAAC,EAAE,CAAC;QACxD,OAAO,CAAC,GAAG,CAAC,iDAAiD,CAAC,CAAC;QAC/D,cAAc,CAAC,YAAY,GAAG,gBAAgB,CAAC;IACjD,CAAC;IAED,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC;IACzD,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,OAAO,EAAE,CAAC;IAErC,IAAI,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,GAA2B,EAAE,EAAE,CACjD,OAAO,CAAC,GAAG,CAAC,WAAW,EAAE,GAAG,CAAC,IAAI,EAAE,CAAC,CACrC,CAAC;IACF,IAAI,CAAC,EAAE,CAAC,WAAW,EAAE,CAAC,KAAY,EAAE,EAAE,CACpC,OAAO,CAAC,KAAK,CAAC,aAAa,EAAE,KAAK,CAAC,OAAO,CAAC,CAC5C,CAAC;IAEF,IAAI,CAAC;QACH,OAAO,CAAC,GAAG,CAAC,oBAAoB,IAAI,CAAC,MAAM,KAAK,CAAC,CAAC;QAClD,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;YAC3B,SAAS,EAAE,kBAAkB;YAC7B,OAAO,EAAE,KAAK;SACf,CAAC,CAAC;QAEH,MAAM,YAAY,GAAG,MAAM,mBAAmB,CAAC,IAAI,EAAE;YACnD,UAAU,EAAE,IAAI,CAAC,UAAU;YAC3B,aAAa,EAAE,IAAI,CAAC,aAAa;YACjC,QAAQ,EAAE,IAAI,CAAC,QAAQ;SACxB,CAAC,CAAC;QACH,MAAM,kBAAkB,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;QAE5C,MAAM,YAAY,GAAkC,EAAE,CAAC;QAEvD,IAAI,YAAY,EAAE,CAAC;YACjB,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC,YAAY,CAAC,CAAC,MAAM,CAAC;YACjD,MAAM,YAAY,GAAG,MAAM,oBAAoB,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;YACtE,IAAI,YAAY,EAAE,CAAC;gBACjB,YAAY,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;YAClC,CAAC;YACD,MAAM,UAAU,GAAG,MAAM,sBAAsB,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;YACtE,IACE,UAAU;gBACV,CAAC,UAAU,CAAC,YAAY,CAAC,MAAM,IAAI,UAAU,CAAC,cAAc,EAAE,MAAM,CAAC,EACrE,CAAC;gBACD,YAAY,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YAChC,CAAC;QACH,CAAC;QAED,IAAI,gBAAgB,EAAE,CAAC;YACrB,MAAM,sBAAsB,CAAC,gBAAgB,CAAC,CAAC;YAC/C,MAAM,OAAO,CAAC,YAAY,CAAC,EAAE,IAAI,EAAE,gBAAgB,EAAE,CAAC,CAAC;QACzD,CAAC;QACD,MAAM,gBAAgB,GAAG,MAAM,OAAO,CAAC,YAAY,EAAE,CAAC;QACtD,IAAI,YAAY,CAAC,MAAM,EAAE,CAAC;YACxB,gBAAgB,CAAC,OAAO,GAAG;gBACzB,GAAG,CAAC,gBAAgB,CAAC,OAAO,IAAI,EAAE,CAAC;gBACnC,GAAG,YAAY;aAChB,CAAC;QACJ,CAAC;QACD,MAAM,kBAAkB,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE;YAClD,MAAM,KAAK,GAA2C,EAAE,CAAC;YACzD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,cAAc,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;gBAC/C,MAAM,GAAG,GAAG,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;gBAClC,IAAI,GAAG,EAAE,CAAC;oBACR,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,cAAc,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;gBACtE,CAAC;YACH,CAAC;YACD,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,MAAM,EAAE,KAAK,EAAE,CAAC;QAC5C,CAAC,CAAC,CAAC;QAEH,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC,IAAI,EAAE;YACzC,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,KAAK,EAAE,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,QAAQ;YAClC,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,UAAU,EAAE,CAAC,IAAI,CAAC,UAAU,IAAI,QAAQ,CAA8B;YACtE,GAAG;YACH,gBAAgB;YAChB,iBAAiB;YACjB,gBAAgB;YAChB,kBAAkB;YAClB,YAAY;SACb,CAAC,CAAC;QAEH,WAAW,CAAC,MAAM,CAAC,CAAC;QACpB,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACtC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAClB,OAAO,CAAC,KAAK,CAAC,sBAAsB,CAAC,CAAC;QACtC,OAAO,CAAC,KAAK,CAAC,wBAAwB,CAAC,CAAC;QACxC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QACrB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;YAAS,CAAC;QACT,MAAM,OAAO,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;QACtC,MAAM,aAAa,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;IAC9C,CAAC;AACH,CAAC;AAED,KAAK,UAAU,oBAAoB,CACjC,OAAY,EACZ,MAAc;IAMd,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,OAAO,EAAE,CAAC;IACrC,IAAI,CAAC;QACH,MAAM,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,kBAAkB,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;QAC3E,MAAM,iBAAiB,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE;YACjD,MAAM,KAAK,GAA2C,EAAE,CAAC;YACzD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,YAAY,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;gBAC7C,MAAM,GAAG,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;gBAChC,IAAI,GAAG,EAAE,CAAC;oBACR,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,YAAY,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;gBACpE,CAAC;YACH,CAAC;YACD,OAAO,KAAK,CAAC;QACf,CAAC,CAAC,CAAC;QACH,MAAM,mBAAmB,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE;YACnD,MAAM,KAAK,GAA2C,EAAE,CAAC;YACzD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,cAAc,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;gBAC/C,MAAM,GAAG,GAAG,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;gBAClC,IAAI,GAAG,EAAE,CAAC;oBACR,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,cAAc,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;gBACtE,CAAC;YACH,CAAC;YACD,OAAO,KAAK,CAAC;QACf,CAAC,CAAC,CAAC;QACH,OAAO;YACL,MAAM;YACN,YAAY,EAAE,iBAAiB;YAC/B,cAAc,EAAE,mBAAmB;SACpC,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,IAAI,CACV,2CAA2C,MAAM,KAAK,MAAM,CAAC,KAAK,CAAC,EAAE,CACtE,CAAC;QACF,OAAO,IAAI,CAAC;IACd,CAAC;YAAS,CAAC;QACT,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;IACrC,CAAC;AACH,CAAC;AAED,KAAK,UAAU,sBAAsB,CACnC,OAAY,EACZ,MAAc;IAMd,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,OAAO,EAAE,CAAC;IACrC,IAAI,CAAC;QACH,MAAM,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,kBAAkB,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;QAC3E,MAAM,iBAAiB,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE;YACjD,MAAM,KAAK,GAA2C,EAAE,CAAC;YACzD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,YAAY,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;gBAC7C,MAAM,GAAG,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;gBAChC,IAAI,GAAG,IAAI,GAAG,CAAC,UAAU,CAAC,gBAAgB,CAAC,EAAE,CAAC;oBAC5C,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,YAAY,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;gBACpE,CAAC;YACH,CAAC;YACD,OAAO,KAAK,CAAC;QACf,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,iBAAiB,CAAC,MAAM,EAAE,CAAC;YAC9B,OAAO,IAAI,CAAC;QACd,CAAC;QACD,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,iBAAiB,EAAE,cAAc,EAAE,EAAE,EAAE,CAAC;IACzE,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,IAAI,CACV,qDAAqD,MAAM,KAAK,MAAM,CAAC,KAAK,CAAC,EAAE,CAChF,CAAC;QACF,OAAO,IAAI,CAAC;IACd,CAAC;YAAS,CAAC;QACT,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;IACrC,CAAC;AACH,CAAC;AAED,SAAS,SAAS,CAAC,KAAa;IAC9B,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACxC,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI;QAAE,OAAO,KAAK,CAAC;IACnC,MAAM,MAAM,GACV,IAAI,CAAC,MAAM,IAAI,CAAC;QACd,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,GAAG;QACrB,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAC/E,OAAO,GAAG,MAAM,IAAI,MAAM,EAAE,CAAC;AAC/B,CAAC;AAED,KAAK,UAAU,mBAAmB,CAChC,IAAS,EACT,IAAwE;IAExE,IAAI,UAAU,GAAG,MAAM,cAAc,CAAC,IAAI,CAAC,CAAC;IAE5C,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,qFAAqF;QACrF,UAAU,GAAG,MAAM,oBAAoB,CAAC,IAAI,CAAC,CAAC;IAChD,CAAC;IAED,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,OAAO;IACT,CAAC;IAED,IAAI,CAAC,IAAI,CAAC,UAAU,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC;QAC5C,MAAM,IAAI,KAAK,CACb,uGAAuG,CACxG,CAAC;IACJ,CAAC;IAED,MAAM,QAAQ,GACZ,IAAI,CAAC,QAAQ;QACb,OAAO,CAAC,GAAG,CAAC,eAAe;QAC3B,GAAG,OAAO,CAAC,GAAG,CAAC,oBAAoB,IAAI,uBAAuB,QAAQ,CAAC;IAEzE,OAAO,CAAC,GAAG,CACT,gDAAgD,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAChF,CAAC;IAEF,MAAM,aAAa,CAAC,IAAI,EAAE,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,aAAa,EAAE,QAAQ,CAAC,CAAC;IACzE,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,KAAK,UAAU,kBAAkB,CAAC,IAAS,EAAE,SAAiB;IAC5D,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAC9B,MAAM,YAAY,GAAG,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IAClD,IAAI,YAAY,IAAI,CAAC,UAAU,CAAC,UAAU,EAAE,SAAS,CAAC,EAAE,CAAC;QACvD,OAAO,CAAC,GAAG,CAAC,+CAA+C,CAAC,CAAC;QAC7D,MAAM,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;YACzB,SAAS,EAAE,kBAAkB;YAC7B,OAAO,EAAE,KAAK;SACf,CAAC,CAAC;IACL,CAAC;AACH,CAAC;AAED,KAAK,UAAU,cAAc,CAAC,IAAS;IACrC,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAC9B,IAAI,oBAAoB,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;QAC1C,OAAO,IAAI,CAAC;IACd,CAAC;IACD,MAAM,UAAU,GAAG,MAAM,IAAI;SAC1B,OAAO,CACN,+FAA+F,CAChG;SACA,KAAK,EAAE;SACP,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;IAClB,MAAM,aAAa,GAAG,MAAM,IAAI;SAC7B,OAAO,CACN,4EAA4E,CAC7E;SACA,KAAK,EAAE;SACP,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;IAClB,OAAO,UAAU,GAAG,CAAC,IAAI,aAAa,GAAG,CAAC,CAAC;AAC7C,CAAC;AAED,KAAK,UAAU,oBAAoB,CACjC,IAAS,EACT,SAAS,GAAG,KAAK;IAEjB,MAAM,aAAa,GACjB,+FAA+F,CAAC;IAClG,IAAI,CAAC;QACH,MAAM,OAAO,CAAC,IAAI,CAAC;YACjB,IAAI,CAAC,iBAAiB,CAAC;gBACrB,SAAS,EAAE,kBAAkB;gBAC7B,OAAO,EAAE,SAAS;aACnB,CAAC;YACF,IAAI,CAAC,eAAe,CAAC,aAAa,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC;SAC5D,CAAC,CAAC;IACL,CAAC;IAAC,MAAM,CAAC;QACP,sBAAsB;IACxB,CAAC;IAED,OAAO,MAAM,cAAc,CAAC,IAAI,CAAC,CAAC;AACpC,CAAC;AAED,KAAK,UAAU,aAAa,CAC1B,IAAS,EACT,KAAa,EACb,QAAgB,EAChB,QAAgB;IAEhB,KAAK,IAAI,OAAO,GAAG,CAAC,EAAE,OAAO,GAAG,CAAC,EAAE,OAAO,EAAE,EAAE,CAAC;QAC7C,IAAI,CAAC,CAAC,MAAM,cAAc,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC;YAClC,OAAO;QACT,CAAC;QAED,MAAM,aAAa,GACjB,+FAA+F,CAAC;QAClG,MAAM,gBAAgB,GACpB,4EAA4E,CAAC;QAE/E,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;QAC/C,MAAM,UAAU,CAAC,KAAK,EAAE,CAAC,OAAO,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;QACrD,MAAM,UAAU,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACrC,MAAM,UAAU;aACb,KAAK,EAAE;aACP,KAAK,CAAC,OAAO,CAAC;aACd,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;QAEnB,MAAM,cAAc,GAAG,IAAI,CAAC,OAAO,CACjC,6EAA6E,CAC9E,CAAC;QACF,IAAI,CAAC,MAAM,cAAc,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC;YACtD,MAAM,cAAc;iBACjB,KAAK,EAAE;iBACP,KAAK,EAAE;iBACP,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;QACrB,CAAC;QAED,MAAM,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC;QACrD,MAAM,aAAa,CAAC,KAAK,EAAE,CAAC,OAAO,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;QACxD,MAAM,aAAa,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAE3C,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAC/B,2GAA2G,CAC5G,CAAC;QACF,IAAI,CAAC,MAAM,YAAY,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC;YACpD,MAAM,YAAY,CAAC,KAAK,EAAE,CAAC,KAAK,EAAE,CAAC;QACrC,CAAC;aAAM,CAAC;YACN,MAAM,aAAa;iBAChB,KAAK,EAAE;iBACP,KAAK,CAAC,OAAO,CAAC;iBACd,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;QACrB,CAAC;QAED,MAAM,IAAI;aACP,iBAAiB,CAAC;YACjB,SAAS,EAAE,kBAAkB;YAC7B,OAAO,EAAE,KAAK;SACf,CAAC;aACD,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;QAEnB,IAAI,CAAC,CAAC,MAAM,cAAc,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC;YAClC,OAAO;QACT,CAAC;QAED,MAAM,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;YACxB,SAAS,EAAE,kBAAkB;YAC7B,OAAO,EAAE,KAAK;SACf,CAAC,CAAC;IACL,CAAC;IAED,IAAI,MAAM,cAAc,CAAC,IAAI,CAAC,EAAE,CAAC;QAC/B,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAC;IACjE,CAAC;AACH,CAAC;AAED,SAAS,UAAU,CAAC,IAAY,EAAE,IAAY;IAC5C,IAAI,CAAC;QACH,MAAM,CAAC,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC;QACxB,MAAM,CAAC,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC;QACxB,OAAO,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,QAAQ,KAAK,CAAC,CAAC,QAAQ,CAAC;IAC5D,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED,SAAS,WAAW,CAAC,MAA6B;IAChD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChB,OAAO,CAAC,GAAG,CAAC,wBAAwB,CAAC,CAAC;IACtC,OAAO,CAAC,GAAG,CAAC,0BAA0B,CAAC,CAAC;IACxC,OAAO,CAAC,GAAG,CAAC,qBAAqB,MAAM,CAAC,YAAY,MAAM,CAAC,CAAC;IAC5D,OAAO,CAAC,GAAG,CACT,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,YAAY,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,EAAE,CAC9E,CAAC;IACF,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChB,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;IACxB,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAC5B,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAEhB,IAAI,MAAM,CAAC,mBAAmB,EAAE,MAAM,EAAE,CAAC;QACvC,OAAO,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAC;QACrC,KAAK,MAAM,SAAS,IAAI,MAAM,CAAC,mBAAmB,EAAE,CAAC;YACnD,MAAM,IAAI,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;YAC1C,OAAO,CAAC,GAAG,CAAC,KAAK,IAAI,IAAI,SAAS,CAAC,SAAS,MAAM,SAAS,CAAC,KAAK,MAAM,CAAC,CAAC;YACzE,IAAI,SAAS,CAAC,SAAS,EAAE,CAAC;gBACxB,OAAO,CAAC,GAAG,CAAC,QAAQ,SAAS,CAAC,SAAS,EAAE,CAAC,CAAC;YAC7C,CAAC;QACH,CAAC;QACD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAClB,CAAC;IAED,IAAI,MAAM,CAAC,WAAW,EAAE,MAAM,EAAE,CAAC;QAC/B,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;QAC5B,KAAK,MAAM,UAAU,IAAI,MAAM,CAAC,WAAW,EAAE,CAAC;YAC5C,OAAO,CAAC,GAAG,CAAC,QAAQ,UAAU,EAAE,CAAC,CAAC;QACpC,CAAC;QACD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAClB,CAAC;AACH,CAAC;AAED,SAAS,iBAAiB,CAAC,QAAgB;IACzC,IAAI,OAAO,GAAG,QAAQ,CAAC;IACvB,IAAI,IAAI,GAAG,EAAE,CAAC;IACd,OAAO,OAAO,KAAK,IAAI,EAAE,CAAC;QACxB,MAAM,eAAe,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC;QAC3D,IAAI,EAAE,CAAC,UAAU,CAAC,eAAe,CAAC,EAAE,CAAC;YACnC,IAAI,CAAC;gBACH,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,eAAe,EAAE,OAAO,CAAC,CAAC,CAAC;gBAClE,IAAI,GAAG,CAAC,UAAU,EAAE,CAAC;oBACnB,OAAO,OAAO,CAAC;gBACjB,CAAC;YACH,CAAC;YAAC,MAAM,CAAC;gBACP,mCAAmC;YACrC,CAAC;QACH,CAAC;QACD,IAAI,GAAG,OAAO,CAAC;QACf,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IAClC,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,MAAM,IAAI,EAAE,CAAC"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import type { JudgeEvaluationResult } from "./judge-service.js";
|
|
2
|
+
import type { JudgeConfig } from "./types.js";
|
|
3
|
+
import type { LLMProviderConfig } from "@superblocksteam/library-shared/types";
|
|
4
|
+
export interface RunJudgeEvaluationOptions {
|
|
5
|
+
appUrl: string;
|
|
6
|
+
promptId: string;
|
|
7
|
+
prompt: string;
|
|
8
|
+
appId?: string;
|
|
9
|
+
complexity?: "low" | "medium" | "high";
|
|
10
|
+
storageStatePath: string;
|
|
11
|
+
jwt?: string;
|
|
12
|
+
llmConfig?: LLMProviderConfig;
|
|
13
|
+
storageStateData?: any;
|
|
14
|
+
sessionStorageData?: {
|
|
15
|
+
origin: string;
|
|
16
|
+
items: Array<{
|
|
17
|
+
name: string;
|
|
18
|
+
value: string;
|
|
19
|
+
}>;
|
|
20
|
+
};
|
|
21
|
+
extraOrigins?: Array<{
|
|
22
|
+
origin: string;
|
|
23
|
+
localStorage: Array<{
|
|
24
|
+
name: string;
|
|
25
|
+
value: string;
|
|
26
|
+
}>;
|
|
27
|
+
sessionStorage?: Array<{
|
|
28
|
+
name: string;
|
|
29
|
+
value: string;
|
|
30
|
+
}>;
|
|
31
|
+
}>;
|
|
32
|
+
configOverrides?: Partial<JudgeConfig>;
|
|
33
|
+
}
|
|
34
|
+
export declare function runJudgeServiceEvaluation(options: RunJudgeEvaluationOptions): Promise<JudgeEvaluationResult>;
|
|
35
|
+
//# sourceMappingURL=judge-eval-service-runner.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"judge-eval-service-runner.d.ts","sourceRoot":"","sources":["../../../src/ai-service/judge/judge-eval-service-runner.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAChE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAE9C,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,uCAAuC,CAAC;AAE/E,MAAM,WAAW,yBAAyB;IACxC,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,KAAK,GAAG,QAAQ,GAAG,MAAM,CAAC;IACvC,gBAAgB,EAAE,MAAM,CAAC;IACzB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,iBAAiB,CAAC;IAC9B,gBAAgB,CAAC,EAAE,GAAG,CAAC;IACvB,kBAAkB,CAAC,EAAE;QACnB,MAAM,EAAE,MAAM,CAAC;QACf,KAAK,EAAE,KAAK,CAAC;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,KAAK,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;KAC/C,CAAC;IACF,YAAY,CAAC,EAAE,KAAK,CAAC;QACnB,MAAM,EAAE,MAAM,CAAC;QACf,YAAY,EAAE,KAAK,CAAC;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,KAAK,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;QACrD,cAAc,CAAC,EAAE,KAAK,CAAC;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,KAAK,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;KACzD,CAAC,CAAC;IACH,eAAe,CAAC,EAAE,OAAO,CAAC,WAAW,CAAC,CAAC;CACxC;AAED,wBAAsB,yBAAyB,CAC7C,OAAO,EAAE,yBAAyB,GACjC,OAAO,CAAC,qBAAqB,CAAC,CAuChC"}
|