@reticlehq/server 2.2.0 → 2.2.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.
- package/dist/cli-parse.d.ts +19 -1
- package/dist/cli-parse.d.ts.map +1 -1
- package/dist/cli-parse.js +40 -2
- package/dist/cli-parse.js.map +1 -1
- package/dist/cli-verify.d.ts +2 -0
- package/dist/cli-verify.d.ts.map +1 -1
- package/dist/cli-verify.js +24 -2
- package/dist/cli-verify.js.map +1 -1
- package/dist/cli.d.ts +2 -3
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +94 -7
- package/dist/cli.js.map +1 -1
- package/dist/cloud/cloud-config.d.ts +37 -0
- package/dist/cloud/cloud-config.d.ts.map +1 -0
- package/dist/cloud/cloud-config.js +87 -0
- package/dist/cloud/cloud-config.js.map +1 -0
- package/dist/cloud/cloud-sync.d.ts +96 -3
- package/dist/cloud/cloud-sync.d.ts.map +1 -1
- package/dist/cloud/cloud-sync.js +131 -2
- package/dist/cloud/cloud-sync.js.map +1 -1
- package/dist/cloud-cli.d.ts +4 -0
- package/dist/cloud-cli.d.ts.map +1 -0
- package/dist/cloud-cli.js +507 -0
- package/dist/cloud-cli.js.map +1 -0
- package/dist/daemon.d.ts.map +1 -1
- package/dist/daemon.js +52 -7
- package/dist/daemon.js.map +1 -1
- package/dist/flows/flow-replay-run.d.ts.map +1 -1
- package/dist/flows/flow-replay-run.js +22 -5
- package/dist/flows/flow-replay-run.js.map +1 -1
- package/dist/flows/flow-tools.d.ts.map +1 -1
- package/dist/flows/flow-tools.js +24 -8
- package/dist/flows/flow-tools.js.map +1 -1
- package/dist/flows/server-verify.d.ts +16 -0
- package/dist/flows/server-verify.d.ts.map +1 -0
- package/dist/flows/server-verify.js +43 -0
- package/dist/flows/server-verify.js.map +1 -0
- package/dist/pool/playwright-launcher.d.ts +2 -0
- package/dist/pool/playwright-launcher.d.ts.map +1 -1
- package/dist/pool/playwright-launcher.js +13 -1
- package/dist/pool/playwright-launcher.js.map +1 -1
- package/dist/project/baselines.d.ts.map +1 -1
- package/dist/project/baselines.js +5 -3
- package/dist/project/baselines.js.map +1 -1
- package/dist/project/project-store.js +20 -8
- package/dist/project/project-store.js.map +1 -1
- package/dist/project/project-tools.d.ts.map +1 -1
- package/dist/project/project-tools.js +29 -6
- package/dist/project/project-tools.js.map +1 -1
- package/dist/runs/verification-sync.d.ts +24 -0
- package/dist/runs/verification-sync.d.ts.map +1 -0
- package/dist/runs/verification-sync.js +67 -0
- package/dist/runs/verification-sync.js.map +1 -0
- package/dist/telemetry/telemetry.d.ts +41 -0
- package/dist/telemetry/telemetry.d.ts.map +1 -0
- package/dist/telemetry/telemetry.js +220 -0
- package/dist/telemetry/telemetry.js.map +1 -0
- package/dist/tools/dynamic-tools.js +1 -1
- package/dist/tools/dynamic-tools.js.map +1 -1
- package/dist/tools/invoke-tool.d.ts.map +1 -1
- package/dist/tools/invoke-tool.js +4 -0
- package/dist/tools/invoke-tool.js.map +1 -1
- package/dist/update/update-checker.d.ts.map +1 -1
- package/dist/update/update-checker.js +26 -1
- package/dist/update/update-checker.js.map +1 -1
- package/package.json +2 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"flow-replay-run.d.ts","sourceRoot":"","sources":["../../src/flows/flow-replay-run.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,aAAa,EAKb,KAAK,QAAQ,EACb,KAAK,gBAAgB,EAErB,KAAK,YAAY,EAClB,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"flow-replay-run.d.ts","sourceRoot":"","sources":["../../src/flows/flow-replay-run.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,aAAa,EAKb,KAAK,QAAQ,EACb,KAAK,gBAAgB,EAErB,KAAK,YAAY,EAClB,MAAM,iBAAiB,CAAC;AAgBzB,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAElD,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,YAAY,EAAE,GACrB;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,OAAO,iBAAiB,EAAE,QAAQ,CAAA;CAAE,GAAG,SAAS,CAQxE;AAED,kFAAkF;AAClF,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,aAAa,GAAG,MAAM,CAW5D;AAiDD;;;;;;;;GAQG;AACH,wBAAgB,qBAAqB,CACnC,IAAI,EAAE,QAAQ,EACd,OAAO,EAAE;IAAE,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,YAAY,EAAE,CAAA;CAAE,GACvD,MAAM,GAAG,SAAS,CASpB;AAED;;;;GAIG;AACH,wBAAsB,eAAe,CACnC,IAAI,EAAE,QAAQ,EACd,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC5B,OAAO,CAAC,gBAAgB,CAAC,CA+F3B;AA2BD;;;;GAIG;AACH,wBAAgB,gBAAgB,CAC9B,IAAI,EAAE,QAAQ,EACd,SAAS,EAAE,MAAM,GAAG,SAAS,GAC5B,MAAM,GAAG,SAAS,CAMpB"}
|
|
@@ -9,6 +9,10 @@ import { AssertionTiersStore } from './assertion-tiers-store.js';
|
|
|
9
9
|
import { toFlowSources } from './flow-sources.js';
|
|
10
10
|
import { reportAndAccumulate } from '../journal/deviation-service.js';
|
|
11
11
|
import { EnvelopeStore } from '../journal/envelope-store.js';
|
|
12
|
+
import { homedir } from 'node:os';
|
|
13
|
+
import { syncRunRecordToCloud, SyncOutcome } from '../cloud/cloud-sync.js';
|
|
14
|
+
import { resolveProjectCloud } from '../cloud/cloud-config.js';
|
|
15
|
+
import { log } from '../log.js';
|
|
12
16
|
export function latestRecordedFlow(events) {
|
|
13
17
|
for (let i = events.length - 1; i >= 0; i--) {
|
|
14
18
|
const event = events[i];
|
|
@@ -44,15 +48,28 @@ function replayToRunStatus(status) {
|
|
|
44
48
|
return RunStatus.ERROR;
|
|
45
49
|
}
|
|
46
50
|
}
|
|
47
|
-
/**
|
|
48
|
-
|
|
51
|
+
/**
|
|
52
|
+
* Append a flow-replay outcome to .reticle/project.json (never throws into replay) and, when logged in,
|
|
53
|
+
* best-effort mirror it to Reticle Cloud so the team's server-side regression history stays current. The
|
|
54
|
+
* cloud push is fire-and-forget: not logged in → skipped, a network failure is logged and swallowed.
|
|
55
|
+
*/
|
|
56
|
+
async function recordReplayRun(deps, name, status, driftSteps, durationMs, projectId) {
|
|
57
|
+
const runStatus = replayToRunStatus(status);
|
|
49
58
|
await deps.project.recordRun({
|
|
50
59
|
kind: RunKind.FLOW_REPLAY,
|
|
51
60
|
name,
|
|
52
|
-
status:
|
|
61
|
+
status: runStatus,
|
|
53
62
|
evidence: { driftSteps },
|
|
54
63
|
durationMs,
|
|
55
64
|
});
|
|
65
|
+
// Per-project cloud: push memory outcomes only when cloud is attached AND memory sync is enabled.
|
|
66
|
+
const cloud = await resolveProjectCloud(deps.fs, deps.reticleRoot, homedir(), process.env);
|
|
67
|
+
if (cloud.config === null || !cloud.policy.memory)
|
|
68
|
+
return; // not attached / memory disabled → local only
|
|
69
|
+
const result = await syncRunRecordToCloud({ kind: RunKind.FLOW_REPLAY, name, status: runStatus, at: deps.now(), durationMs }, projectId, cloud.config, (url, init) => fetch(url, init));
|
|
70
|
+
if (result.outcome !== SyncOutcome.SYNCED) {
|
|
71
|
+
log('cloud-run-record-sync-failed', { flow: name, status: result.status, error: result.error });
|
|
72
|
+
}
|
|
56
73
|
}
|
|
57
74
|
/**
|
|
58
75
|
* When a flow records the page its journey started on (`startPath`) and the tab is currently on a
|
|
@@ -95,7 +112,7 @@ export async function replayNamedFlow(deps, args) {
|
|
|
95
112
|
}
|
|
96
113
|
const loaded = await deps.flows.load(name, projectId);
|
|
97
114
|
if (!loaded.ok) {
|
|
98
|
-
await recordReplayRun(deps, name, ReplayStatus.ERROR, 0, deps.now() - startedAt);
|
|
115
|
+
await recordReplayRun(deps, name, ReplayStatus.ERROR, 0, deps.now() - startedAt, projectId);
|
|
99
116
|
return {
|
|
100
117
|
name,
|
|
101
118
|
status: ReplayStatus.ERROR,
|
|
@@ -129,7 +146,7 @@ export async function replayNamedFlow(deps, args) {
|
|
|
129
146
|
const driftSteps = steps.filter((s) => s.drift !== undefined).length;
|
|
130
147
|
const allOk = steps.every((s) => s.ok);
|
|
131
148
|
const status = driftSteps > 0 ? ReplayStatus.DRIFT : allOk ? ReplayStatus.OK : ReplayStatus.ERROR;
|
|
132
|
-
await recordReplayRun(deps, name, status, driftSteps, deps.now() - startedAt);
|
|
149
|
+
await recordReplayRun(deps, name, status, driftSteps, deps.now() - startedAt, projectId);
|
|
133
150
|
// Anti-reward-hacking baseline: record what this flow asserted ONLY when it passed clean. A
|
|
134
151
|
// failing run must never become the baseline a later weakening is measured against.
|
|
135
152
|
if (status === ReplayStatus.OK) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"flow-replay-run.js","sourceRoot":"","sources":["../../src/flows/flow-replay-run.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,SAAS,EACT,sBAAsB,EACtB,aAAa,EACb,kBAAkB,EAClB,YAAY,EACZ,OAAO,EACP,SAAS,GAKV,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AACrD,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACnG,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAC9C,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AACjE,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,EAAE,mBAAmB,EAAE,MAAM,iCAAiC,CAAC;AACtE,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;
|
|
1
|
+
{"version":3,"file":"flow-replay-run.js","sourceRoot":"","sources":["../../src/flows/flow-replay-run.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"flow-tools.d.ts","sourceRoot":"","sources":["../../src/flows/flow-tools.ts"],"names":[],"mappings":"AACA,OAAO,EAIL,KAAK,gBAAgB,EACtB,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"flow-tools.d.ts","sourceRoot":"","sources":["../../src/flows/flow-tools.ts"],"names":[],"mappings":"AACA,OAAO,EAIL,KAAK,gBAAgB,EACtB,MAAM,iBAAiB,CAAC;AAezB,OAAO,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAW3D,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAuBvD;;;;;;;GAOG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,CAQhG;AAED,uFAAuF;AACvF,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,gBAAgB,CAU5F;AAKD,eAAO,MAAM,UAAU,EAAE,OAAO,EA+Z/B,CAAC"}
|
package/dist/flows/flow-tools.js
CHANGED
|
@@ -3,13 +3,17 @@ import { FlowErrorCode, RecordedSaveError, ReplayStatus, } from '@reticlehq/core
|
|
|
3
3
|
import { ReticleTool } from '../tools/tool-names.js';
|
|
4
4
|
import { asNumber, asString } from '../tools/tools-helpers.js';
|
|
5
5
|
import { log } from '../log.js';
|
|
6
|
-
import {
|
|
6
|
+
import { syncFlowToCloud, SyncOutcome } from '../cloud/cloud-sync.js';
|
|
7
7
|
import { mapWithConcurrency, resolveConcurrency } from './parallel-suite.js';
|
|
8
8
|
import { acquireLeasedSession } from '../tools/lease-tools.js';
|
|
9
|
+
import { homedir } from 'node:os';
|
|
10
|
+
import { resolveProjectCloud } from '../cloud/cloud-config.js';
|
|
9
11
|
import { buildSuiteVerdict } from './decision.js';
|
|
10
12
|
import { classifyFlowAssertions } from './flow-classify.js';
|
|
11
13
|
import { isValidFlowName, flowPath } from '../project/reticle-dir.js';
|
|
12
14
|
import { replayNamedFlow, flowErrorMessage, latestRecordedFlow, sessionProjectId, } from './flow-replay-run.js';
|
|
15
|
+
import { persistAndSyncVerificationRun } from '../runs/verification-sync.js';
|
|
16
|
+
import { runServerVerify } from './server-verify.js';
|
|
13
17
|
import { healFlow } from './heal-run.js';
|
|
14
18
|
export { replayNamedFlow } from './flow-replay-run.js';
|
|
15
19
|
/**
|
|
@@ -17,11 +21,12 @@ export { replayNamedFlow } from './flow-replay-run.js';
|
|
|
17
21
|
* set). Fire-and-forget: resolves the config, POSTs via the platform fetch, and logs the outcome. Any
|
|
18
22
|
* failure is swallowed so a network hiccup never affects the local save.
|
|
19
23
|
*/
|
|
20
|
-
async function syncSavedFlowToCloud(flow, projectId) {
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
24
|
+
async function syncSavedFlowToCloud(deps, flow, projectId) {
|
|
25
|
+
// Per-project cloud: sync a saved flow only when cloud is attached AND flow sync is enabled.
|
|
26
|
+
const cloud = await resolveProjectCloud(deps.fs, deps.reticleRoot, homedir(), process.env);
|
|
27
|
+
if (cloud.config === null || !cloud.policy.flows)
|
|
28
|
+
return; // not attached / flows disabled → local only
|
|
29
|
+
const result = await syncFlowToCloud(flow, cloud.config, projectId, (url, init) => fetch(url, init));
|
|
25
30
|
if (result.outcome !== SyncOutcome.SYNCED) {
|
|
26
31
|
log('cloud-flow-sync-failed', { flow: flow.name, status: result.status, error: result.error });
|
|
27
32
|
}
|
|
@@ -296,9 +301,15 @@ export const FLOW_TOOLS = [
|
|
|
296
301
|
handler: async (deps, args) => {
|
|
297
302
|
const sessionId = asString(args['sessionId']);
|
|
298
303
|
// "Replay all" means all of THIS app's flows (+ legacy), not every project's on a shared daemon.
|
|
304
|
+
const projectId = sessionProjectId(deps, sessionId);
|
|
299
305
|
const requested = Array.isArray(args['names'])
|
|
300
306
|
? args['names'].filter((n) => typeof n === 'string')
|
|
301
|
-
: await deps.flows.list(
|
|
307
|
+
: await deps.flows.list(projectId);
|
|
308
|
+
// verify:server — hand the whole suite to the hosted runner; it records the verification itself.
|
|
309
|
+
const cloud = await resolveProjectCloud(deps.fs, deps.reticleRoot, homedir(), process.env);
|
|
310
|
+
const server = await runServerVerify(deps, cloud, sessionId, requested);
|
|
311
|
+
if (server !== null)
|
|
312
|
+
return server;
|
|
302
313
|
// PARALLEL: flows race the DOM only when they share ONE tab. Given the lease pool, each
|
|
303
314
|
// flow gets its own isolated context, so a large suite finishes in interactive time. Opt-in via
|
|
304
315
|
// `parallel`; a missing prerequisite (no pool, unknown app URL) falls back to the sequential path
|
|
@@ -333,11 +344,16 @@ export const FLOW_TOOLS = [
|
|
|
333
344
|
})));
|
|
334
345
|
}
|
|
335
346
|
const runs = [];
|
|
347
|
+
const timed = [];
|
|
336
348
|
// Sequential default: every flow replays against the same live session, so they must not overlap.
|
|
337
349
|
for (const flowName of requested) {
|
|
350
|
+
const start = deps.now();
|
|
338
351
|
const replay = await replayNamedFlow(deps, { flowName, sessionId });
|
|
339
352
|
runs.push({ replay });
|
|
353
|
+
timed.push({ replay, durationMs: deps.now() - start });
|
|
340
354
|
}
|
|
355
|
+
// Emit the consolidated run artifact (Runs tab) + best-effort cloud push. Never blocks the verdict.
|
|
356
|
+
await persistAndSyncVerificationRun(deps, timed, projectId);
|
|
341
357
|
return buildSuiteVerdict(runs);
|
|
342
358
|
},
|
|
343
359
|
},
|
|
@@ -389,7 +405,7 @@ export const FLOW_TOOLS = [
|
|
|
389
405
|
return { error: flowErrorMessage(res.code), code: res.code };
|
|
390
406
|
// If logged into Reticle Cloud, mirror the saved flow to the team's regression suite. Best-effort
|
|
391
407
|
// and non-blocking: the flow is already on disk, so a sync failure never fails the save.
|
|
392
|
-
void syncSavedFlowToCloud(flow, session.projectId);
|
|
408
|
+
void syncSavedFlowToCloud(deps, flow, session.projectId);
|
|
393
409
|
// Return the SaveSummary as-is ({ name, stepCount, degraded, empty }) — the outputSchema
|
|
394
410
|
// declares `name`, so the old `flowName` key was silently stripped by schema-strict clients.
|
|
395
411
|
return res.value;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"flow-tools.js","sourceRoot":"","sources":["../../src/flows/flow-tools.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EACL,aAAa,EACb,iBAAiB,EACjB,YAAY,GAEb,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,EAAE,GAAG,EAAE,MAAM,WAAW,CAAC;AAChC,OAAO,EAAE,kBAAkB,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAC1F,OAAO,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAC7E,OAAO,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAC/D,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAClD,OAAO,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AAC5D,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AAItE,OAAO,EACL,eAAe,EACf,gBAAgB,EAChB,kBAAkB,EAClB,gBAAgB,GACjB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAEzC,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAEvD;;;;GAIG;AACH,KAAK,UAAU,oBAAoB,CAAC,IAAc,EAAE,SAA6B;IAC/E,MAAM,MAAM,GAAG,kBAAkB,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IAC/C,IAAI,MAAM,KAAK,IAAI;QAAE,OAAO,CAAC,8BAA8B;IAC3D,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC;IAC/F,IAAI,MAAM,CAAC,OAAO,KAAK,WAAW,CAAC,MAAM,EAAE,CAAC;QAC1C,GAAG,CAAC,wBAAwB,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;IACjG,CAAC;AACH,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,cAAc,CAAC,IAAc,EAAE,SAA6B;IAC1E,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC;QACjD,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,SAAS,CAAC;QAClE,OAAO,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC;IAC7B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAC,CAAC,4DAA4D;IAChF,CAAC;AACH,CAAC;AAED,uFAAuF;AACvF,MAAM,UAAU,kBAAkB,CAAC,IAAY,EAAE,KAAyB;IACxE,OAAO;QACL,IAAI;QACJ,MAAM,EAAE,YAAY,CAAC,KAAK;QAC1B,KAAK,EAAE,EAAE;QACT,KAAK,EAAE;YACL,IAAI,EAAE,YAAY,CAAC,KAAK;YACxB,OAAO,EAAE,sCAAsC,KAAK,IAAI,eAAe,EAAE;SAC1E;KACF,CAAC;AACJ,CAAC;AAED,4FAA4F;AAC5F,MAAM,sBAAsB,GAAG,yCAAyC,CAAC;AAEzE,MAAM,CAAC,MAAM,UAAU,GAAc;IACnC;QACE,IAAI,EAAE,WAAW,CAAC,SAAS;QAC3B,WAAW,EACT,qrBAAqrB;QACvrB,WAAW,EAAE;YACX,QAAQ,EAAE,CAAC;iBACR,MAAM,EAAE;iBACR,QAAQ,CACP,uHAAuH,CACxH;YACH,SAAS,EAAE,CAAC;iBACT,MAAM,EAAE;iBACR,QAAQ,EAAE;iBACV,QAAQ,CAAC,wDAAwD,CAAC;SACtE;QACD,6EAA6E;QAC7E,gGAAgG;QAChG,2FAA2F;QAC3F,mGAAmG;QACnG,4FAA4F;QAC5F,2CAA2C;QAC3C,YAAY,EAAE;YACZ,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;YAC3B,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;YAChC,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;YAC/B,KAAK,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;YAC7B,UAAU,EAAE,CAAC;iBACV,MAAM,CAAC;gBACN,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,2CAA2C,CAAC;gBACvE,uBAAuB,EAAE,CAAC,CAAC,OAAO,EAAE;gBACpC,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE;gBACtB,gBAAgB,EAAE,CAAC,CAAC,MAAM,EAAE;gBAC5B,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE;gBACrB,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;aAC/B,CAAC;iBACD,QAAQ,EAAE;YACb,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;YAC5B,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;SAC5B;QACD,OAAO,EAAE,CAAC,IAAc,EAAE,IAAI,EAAE,EAAE;YAChC,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,IAAI,EAAE,CAAC;YAC9C,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;YAClD,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;gBAC1B,OAAO,OAAO,CAAC,OAAO,CAAC;oBACrB,KAAK,EAAE,gBAAgB,CAAC,aAAa,CAAC,YAAY,CAAC;oBACnD,IAAI,EAAE,aAAa,CAAC,YAAY;iBACjC,CAAC,CAAC;YACL,CAAC;YACD,uFAAuF;YACvF,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YAC/C,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YAC7C,MAAM,WAAW,GAAoB;gBACnC,UAAU,EAAE,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,IAAI,CAAC;gBAC7C,OAAO,EAAE,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC;gBACvC,GAAG,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC7C,GAAG,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aAC5C,CAAC;YACF,MAAM,SAAS,GAAG,gBAAgB,CAAC,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;YACtE,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,WAAW,EAAE,SAAS,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;gBACzE,IAAI,CAAC,GAAG,CAAC,EAAE;oBAAE,OAAO,EAAE,KAAK,EAAE,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,CAAC;gBAC1E,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBAC7B,4FAA4F;gBAC5F,4EAA4E;gBAC5E,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;gBAChE,OAAO,MAAM,CAAC,EAAE;oBACd,CAAC,CAAC,EAAE,GAAG,GAAG,CAAC,KAAK,EAAE,UAAU,EAAE,sBAAsB,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;oBACpE,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC;YAChB,CAAC,CAAC,CAAC;QACL,CAAC;KACF;IACD;QACE,IAAI,EAAE,WAAW,CAAC,SAAS;QAC3B,WAAW,EACT,6FAA6F;YAC7F,0FAA0F;YAC1F,mFAAmF;QACrF,WAAW,EAAE;YACX,SAAS,EAAE,CAAC;iBACT,MAAM,EAAE;iBACR,QAAQ,EAAE;iBACV,QAAQ,CACP,iFAAiF,CAClF;SACJ;QACD,YAAY,EAAE;YACZ,KAAK,EAAE,CAAC,CAAC,KAAK,CACZ,CAAC,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC,CACnF;SACF;QACD,8FAA8F;QAC9F,0FAA0F;QAC1F,oDAAoD;QACpD,OAAO,EAAE,CAAC,IAAc,EAAE,IAAI,EAAE,EAAE;YAChC,MAAM,SAAS,GAAG,gBAAgB,CAAC,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;YACtE,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;gBACjD,sFAAsF;gBACtF,+FAA+F;gBAC/F,8FAA8F;gBAC9F,8FAA8F;gBAC9F,2FAA2F;gBAC3F,sCAAsC;gBACtC,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CACxB,eAAe,CAAC,IAAI,CAAC;oBACnB,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,EAAE,SAAS,CAAC,EAAE;oBAC7D,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,sBAAsB,EAAE,CAC3C;aACF,CAAC,CAAC,CAAC;QACN,CAAC;KACF;IACD;QACE,IAAI,EAAE,WAAW,CAAC,SAAS;QAC3B,WAAW,EACT,oLAAoL;QACtL,WAAW,EAAE;YACX,QAAQ,EAAE,CAAC;iBACR,MAAM,EAAE;iBACR,QAAQ,CAAC,kEAAkE,CAAC;YAC/E,SAAS,EAAE,CAAC;iBACT,MAAM,EAAE;iBACR,QAAQ,EAAE;iBACV,QAAQ,CAAC,gEAAgE,CAAC;SAC9E;QACD,YAAY,EAAE;YACZ,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE;YACpB,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;YAC3B,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;SACjC;QACD,OAAO,EAAE,CAAC,IAAc,EAAE,IAAI,EAAE,EAAE;YAChC,MAAM,SAAS,GAAG,gBAAgB,CAAC,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;YACtE,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,IAAI,EAAE,EAAE,SAAS,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE;gBAC/E,IAAI,CAAC,GAAG,CAAC,EAAE;oBAAE,OAAO,EAAE,KAAK,EAAE,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,CAAC;gBAC1E,MAAM,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,GAAG,CAAC,KAAK,CAAC;gBACpC,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,CAAC;YACrC,CAAC,CAAC,CAAC;QACL,CAAC;KACF;IACD;QACE,IAAI,EAAE,WAAW,CAAC,WAAW;QAC7B,WAAW,EACT,iGAAiG;YACjG,kGAAkG;YAClG,+EAA+E;QACjF,WAAW,EAAE;YACX,QAAQ,EAAE,CAAC;iBACR,MAAM,EAAE;iBACR,QAAQ,CAAC,kEAAkE,CAAC;YAC/E,SAAS,EAAE,CAAC;iBACT,MAAM,EAAE;iBACR,QAAQ,EAAE;iBACV,QAAQ,CAAC,gEAAgE,CAAC;SAC9E;QACD,YAAY,EAAE;YACZ,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;YAC/B,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;YAC5B,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;SAC5B;QACD,OAAO,EAAE,CAAC,IAAc,EAAE,IAAI,EAAE,EAAE;YAChC,MAAM,SAAS,GAAG,gBAAgB,CAAC,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;YACtE,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,IAAI,EAAE,EAAE,SAAS,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE;gBACjF,IAAI,CAAC,GAAG,CAAC,EAAE;oBAAE,OAAO,EAAE,KAAK,EAAE,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,CAAC;gBAC1E,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;YAC3B,CAAC,CAAC,CAAC;QACL,CAAC;KACF;IACD;QACE,IAAI,EAAE,WAAW,CAAC,WAAW;QAC7B,WAAW,EACT,8FAA8F;YAC9F,gGAAgG;YAChG,iGAAiG;YACjG,2FAA2F;YAC3F,4FAA4F;YAC5F,0FAA0F;QAC5F,WAAW,EAAE;YACX,QAAQ,EAAE,CAAC;iBACR,MAAM,EAAE;iBACR,QAAQ,CAAC,kEAAkE,CAAC;YAC/E,gBAAgB,EAAE,CAAC;iBAChB,OAAO,EAAE;iBACT,QAAQ,EAAE;iBACV,QAAQ,CAAC,iEAAiE,CAAC;YAC9E,SAAS,EAAE,CAAC;iBACT,MAAM,EAAE;iBACR,QAAQ,EAAE;iBACV,QAAQ,CACP,sFAAsF,CACvF;SACJ;QACD,YAAY,EAAE;YACZ,iGAAiG;YACjG,+FAA+F;YAC/F,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;YAChB,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,oBAAoB,CAAC;YACjD,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;YAC3B,SAAS,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,QAAQ,EAAE;YAC1C,SAAS,EAAE,CAAC;iBACT,OAAO,EAAE;iBACT,QAAQ,EAAE;iBACV,QAAQ,CACP,wJAAwJ,CACzJ;YACH,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,QAAQ,EAAE;YACrE,QAAQ,EAAE,CAAC;iBACR,MAAM,CAAC;gBACN,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;gBACnB,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;gBACnB,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;gBAClC,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;gBACpC,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;gBACnC,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE;aACvB,CAAC;iBACD,QAAQ,EAAE;iBACV,QAAQ,CAAC,wEAAwE,CAAC;SACtF;QACD,4FAA4F;QAC5F,wFAAwF;QACxF,OAAO,EAAE,CAAC,IAAc,EAAE,IAAI,EAA6B,EAAE,CAAC,eAAe,CAAC,IAAI,EAAE,IAAI,CAAC;KAC1F;IACD;QACE,IAAI,EAAE,WAAW,CAAC,WAAW;QAC7B,WAAW,EACT,8FAA8F;YAC9F,4FAA4F;YAC5F,0FAA0F;YAC1F,+FAA+F;YAC/F,uEAAuE;QACzE,WAAW,EAAE;YACX,KAAK,EAAE,CAAC;iBACL,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;iBACjB,QAAQ,EAAE;iBACV,QAAQ,CAAC,wDAAwD,CAAC;YACrE,QAAQ,EAAE,CAAC;iBACR,MAAM,EAAE;iBACR,QAAQ,EAAE;iBACV,QAAQ,CACP,iMAAiM,CAClM;YACH,SAAS,EAAE,CAAC;iBACT,MAAM,EAAE;iBACR,QAAQ,EAAE;iBACV,QAAQ,CACP,sFAAsF,CACvF;SACJ;QACD,YAAY,EAAE;YACZ,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,aAAa,CAAC;YAC1C,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE;YACjB,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE;YAClB,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE;YAClB,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;YACnB,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;SAC/B;QACD,OAAO,EAAE,KAAK,EAAE,IAAc,EAAE,IAAI,EAAyB,EAAE;YAC7D,MAAM,SAAS,GAAG,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC;YAC9C,iGAAiG;YACjG,MAAM,SAAS,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;gBAC5C,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAe,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC;gBACjE,CAAC,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC;YAC7D,wFAAwF;YACxF,gGAAgG;YAChG,kGAAkG;YAClG,yDAAyD;YACzD,EAAE;YACF,iGAAiG;YACjG,kGAAkG;YAClG,mGAAmG;YACnG,wBAAwB;YACxB,MAAM,WAAW,GAAG,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;YAC/C,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;YACvB,MAAM,MAAM,GAAG,cAAc,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;YAC/C,IACE,WAAW,KAAK,SAAS;gBACzB,IAAI,KAAK,SAAS;gBAClB,MAAM,KAAK,SAAS;gBACpB,SAAS,CAAC,MAAM,GAAG,CAAC,EACpB,CAAC;gBACD,MAAM,WAAW,GAAG,kBAAkB,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,CAAC,QAAQ,EAAE,EAAE,WAAW,CAAC,CAAC;gBACvF,MAAM,QAAQ,GAAG,MAAM,kBAAkB,CAAC,SAAS,EAAE,WAAW,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE;oBACnF,MAAM,KAAK,GAAG,MAAM,oBAAoB,CACtC,IAAI,EACJ,CAAC,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,SAAS,EAC3C,MAAM,CACP,CAAC;oBACF,IAAI,CAAC;wBACH,OAAO,MAAM,eAAe,CAAC,IAAI,EAAE,EAAE,QAAQ,EAAE,SAAS,EAAE,KAAK,CAAC,SAAS,EAAE,CAAC,CAAC;oBAC/E,CAAC;4BAAS,CAAC;wBACT,0FAA0F;wBAC1F,MAAM,KAAK,CAAC,OAAO,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;oBAC/C,CAAC;gBACH,CAAC,CAAC,CAAC;gBACH,OAAO,iBAAiB,CACtB,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;oBACtB,MAAM,EACJ,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,KAAK,KAAK,SAAS;wBAC3B,CAAC,CAAC,CAAC,CAAC,KAAK;wBACT,CAAC,CAAC,kBAAkB,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC;iBACtD,CAAC,CAAC,CACJ,CAAC;YACJ,CAAC;YACD,MAAM,IAAI,GAAmC,EAAE,CAAC;YAChD,kGAAkG;YAClG,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;gBACjC,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC,IAAI,EAAE,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC,CAAC;gBACpE,IAAI,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC;YACxB,CAAC;YACD,OAAO,iBAAiB,CAAC,IAAI,CAAC,CAAC;QACjC,CAAC;KACF;IACD;QACE,IAAI,EAAE,WAAW,CAAC,kBAAkB;QACpC,WAAW,EACT,uFAAuF;YACvF,8FAA8F;YAC9F,mGAAmG;YACnG,8FAA8F;YAC9F,uFAAuF;YACvF,iDAAiD;QACnD,WAAW,EAAE;YACX,QAAQ,EAAE,CAAC;iBACR,MAAM,EAAE;iBACR,QAAQ,EAAE;iBACV,QAAQ,CACP,+FAA+F,CAChG;YACH,GAAG;gBACD,SAAS,EAAE,CAAC;qBACT,MAAM,EAAE;qBACR,QAAQ,EAAE;qBACV,QAAQ,CACP,sFAAsF,CACvF;aACJ;SACF;QACD,yFAAyF;QACzF,gGAAgG;QAChG,YAAY,EAAE;YACZ,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;YAC3B,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;YAChC,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;YAC/B,KAAK,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;YAC7B,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;YAC5B,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;SAC5B;QACD,OAAO,EAAE,KAAK,EAAE,IAAc,EAAE,IAAI,EAAE,EAAE;YACtC,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;YACnE,MAAM,QAAQ,GAAG,kBAAkB,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;YAC5D,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;gBAC3B,OAAO;oBACL,KAAK,EAAE,kFAAkF;oBACzF,IAAI,EAAE,iBAAiB,CAAC,gBAAgB;iBACzC,CAAC;YACJ,CAAC;YACD,MAAM,QAAQ,GAAG,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;YAC5C,MAAM,IAAI,GAAG,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,GAAG,QAAQ,CAAC,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC;YAC3F,+FAA+F;YAC/F,oFAAoF;YACpF,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC;YAC/D,IAAI,CAAC,GAAG,CAAC,EAAE;gBAAE,OAAO,EAAE,KAAK,EAAE,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,CAAC;YAC1E,kGAAkG;YAClG,yFAAyF;YACzF,KAAK,oBAAoB,CAAC,IAAI,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC;YACnD,yFAAyF;YACzF,6FAA6F;YAC7F,OAAO,GAAG,CAAC,KAAK,CAAC;QACnB,CAAC;KACF;IACD;QACE,IAAI,EAAE,WAAW,CAAC,SAAS;QAC3B,WAAW,EACT,+FAA+F;YAC/F,+FAA+F;YAC/F,oGAAoG;YACpG,8FAA8F;YAC9F,6FAA6F;YAC7F,+FAA+F;YAC/F,6FAA6F;YAC7F,iFAAiF;YACjF,oEAAoE;QACtE,WAAW,EAAE;YACX,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,kDAAkD,CAAC;YACjF,KAAK,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;YAC7B,gBAAgB,EAAE,CAAC;iBAChB,OAAO,EAAE;iBACT,QAAQ,EAAE;iBACV,QAAQ,CAAC,sEAAsE,CAAC;YACnF,SAAS,EAAE,CAAC;iBACT,MAAM,EAAE;iBACR,QAAQ,EAAE;iBACV,QAAQ,CACP,sFAAsF,CACvF;SACJ;QACD,YAAY,EAAE;YACZ,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE;YACpB,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE;YAClB,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE;YACpB,SAAS,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;YAC/B,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;YAC7B,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;YACnB,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,QAAQ,EAAE;SACtE;QACD,OAAO,EAAE,CAAC,IAAc,EAAE,IAAI,EAAE,EAAE,CAChC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,CAAC,CAAC;KAClF;CACF,CAAC"}
|
|
1
|
+
{"version":3,"file":"flow-tools.js","sourceRoot":"","sources":["../../src/flows/flow-tools.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* verify:server delegation. When a project's cloud config sets `verify: 'server'`, the FLOW_VERIFY tool
|
|
3
|
+
* runs the suite on the hosted runner (POST /v1/verifications) instead of replaying in the local browser,
|
|
4
|
+
* and maps the server's report back into the SAME SuiteVerdict the local path returns — so the agent's
|
|
5
|
+
* contract is identical either way. Falls back to local (returns null) when not attached, wrong mode, or
|
|
6
|
+
* there is no reachable preview URL for the server to hit.
|
|
7
|
+
*/
|
|
8
|
+
import type { SuiteVerdict } from '@reticlehq/core';
|
|
9
|
+
import type { ToolDeps } from '../tools/tools.js';
|
|
10
|
+
import { type ProjectCloud } from './../cloud/cloud-config.js';
|
|
11
|
+
import { type ServerVerification } from '../cloud/cloud-sync.js';
|
|
12
|
+
/** Map the hosted runner's report onto the local suite-verdict shape (status/total/passed/failed/failures). */
|
|
13
|
+
export declare function toSuiteVerdict(report: ServerVerification): SuiteVerdict;
|
|
14
|
+
/** Run the suite on the hosted runner, or null to signal the caller should replay locally. */
|
|
15
|
+
export declare function runServerVerify(deps: ToolDeps, cloud: ProjectCloud, sessionId: string | undefined, flows: string[]): Promise<SuiteVerdict | null>;
|
|
16
|
+
//# sourceMappingURL=server-verify.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"server-verify.d.ts","sourceRoot":"","sources":["../../src/flows/server-verify.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,KAAK,EAAE,YAAY,EAAmB,MAAM,iBAAiB,CAAC;AACrE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,EAAc,KAAK,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC3E,OAAO,EAA4B,KAAK,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAM3F,+GAA+G;AAC/G,wBAAgB,cAAc,CAAC,MAAM,EAAE,kBAAkB,GAAG,YAAY,CAavE;AAED,8FAA8F;AAC9F,wBAAsB,eAAe,CACnC,IAAI,EAAE,QAAQ,EACd,KAAK,EAAE,YAAY,EACnB,SAAS,EAAE,MAAM,GAAG,SAAS,EAC7B,KAAK,EAAE,MAAM,EAAE,GACd,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC,CAoB9B"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { VerifyMode } from './../cloud/cloud-config.js';
|
|
2
|
+
import { submitServerVerification } from '../cloud/cloud-sync.js';
|
|
3
|
+
const PASS = 'pass';
|
|
4
|
+
const UNVERIFIED = 'unverified';
|
|
5
|
+
const SOURCE = 'reticle-mcp';
|
|
6
|
+
/** Map the hosted runner's report onto the local suite-verdict shape (status/total/passed/failed/failures). */
|
|
7
|
+
export function toSuiteVerdict(report) {
|
|
8
|
+
const failures = report.flows
|
|
9
|
+
.filter((f) => f.status !== PASS)
|
|
10
|
+
.map((f) => ({
|
|
11
|
+
flow: f.name,
|
|
12
|
+
verdict: 'fail',
|
|
13
|
+
nextAction: `verified on the server — see report ${report.verificationId}`,
|
|
14
|
+
}));
|
|
15
|
+
const total = report.flows.length;
|
|
16
|
+
const passed = total - failures.length;
|
|
17
|
+
const status = report.verdict === PASS && failures.length === 0 ? 'pass' : 'fail';
|
|
18
|
+
return { status, total, passed, failed: failures.length, summary: report.summary, failures };
|
|
19
|
+
}
|
|
20
|
+
/** Run the suite on the hosted runner, or null to signal the caller should replay locally. */
|
|
21
|
+
export async function runServerVerify(deps, cloud, sessionId, flows) {
|
|
22
|
+
if (cloud.verify !== VerifyMode.SERVER || cloud.config === null)
|
|
23
|
+
return null;
|
|
24
|
+
let previewUrl;
|
|
25
|
+
try {
|
|
26
|
+
previewUrl = deps.sessions.resolve(sessionId).url;
|
|
27
|
+
}
|
|
28
|
+
catch {
|
|
29
|
+
previewUrl = undefined;
|
|
30
|
+
}
|
|
31
|
+
// The server hits the URL itself; with no URL (or a localhost one it can't reach) fall back to local.
|
|
32
|
+
if (previewUrl === undefined || previewUrl.length === 0)
|
|
33
|
+
return null;
|
|
34
|
+
const report = await submitServerVerification({ previewUrl, flows, source: SOURCE }, cloud.config, (url, init) => fetch(url, init));
|
|
35
|
+
if (report === null)
|
|
36
|
+
return null;
|
|
37
|
+
// The hosted runner said it couldn't actually verify (e.g. it's not enabled yet). Never surface that as
|
|
38
|
+
// a pass or a fail — fall back to the real local replay so the verdict reflects a browser that ran.
|
|
39
|
+
if (report.verdict === UNVERIFIED)
|
|
40
|
+
return null;
|
|
41
|
+
return toSuiteVerdict(report);
|
|
42
|
+
}
|
|
43
|
+
//# sourceMappingURL=server-verify.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"server-verify.js","sourceRoot":"","sources":["../../src/flows/server-verify.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,UAAU,EAAqB,MAAM,4BAA4B,CAAC;AAC3E,OAAO,EAAE,wBAAwB,EAA2B,MAAM,wBAAwB,CAAC;AAE3F,MAAM,IAAI,GAAG,MAAM,CAAC;AACpB,MAAM,UAAU,GAAG,YAAY,CAAC;AAChC,MAAM,MAAM,GAAG,aAAa,CAAC;AAE7B,+GAA+G;AAC/G,MAAM,UAAU,cAAc,CAAC,MAA0B;IACvD,MAAM,QAAQ,GAAsB,MAAM,CAAC,KAAK;SAC7C,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,IAAI,CAAC;SAChC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QACX,IAAI,EAAE,CAAC,CAAC,IAAI;QACZ,OAAO,EAAE,MAAM;QACf,UAAU,EAAE,uCAAuC,MAAM,CAAC,cAAc,EAAE;KAC3E,CAAC,CAAC,CAAC;IACN,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC;IAClC,MAAM,MAAM,GAAG,KAAK,GAAG,QAAQ,CAAC,MAAM,CAAC;IACvC,MAAM,MAAM,GACV,MAAM,CAAC,OAAO,KAAK,IAAI,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC;IACrE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,QAAQ,EAAE,CAAC;AAC/F,CAAC;AAED,8FAA8F;AAC9F,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,IAAc,EACd,KAAmB,EACnB,SAA6B,EAC7B,KAAe;IAEf,IAAI,KAAK,CAAC,MAAM,KAAK,UAAU,CAAC,MAAM,IAAI,KAAK,CAAC,MAAM,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC;IAC7E,IAAI,UAA8B,CAAC;IACnC,IAAI,CAAC;QACH,UAAU,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC;IACpD,CAAC;IAAC,MAAM,CAAC;QACP,UAAU,GAAG,SAAS,CAAC;IACzB,CAAC;IACD,sGAAsG;IACtG,IAAI,UAAU,KAAK,SAAS,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IACrE,MAAM,MAAM,GAAG,MAAM,wBAAwB,CAC3C,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,EACrC,KAAK,CAAC,MAAM,EACZ,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,IAAI,CAAC,CAChC,CAAC;IACF,IAAI,MAAM,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC;IACjC,wGAAwG;IACxG,oGAAoG;IACpG,IAAI,MAAM,CAAC,OAAO,KAAK,UAAU;QAAE,OAAO,IAAI,CAAC;IAC/C,OAAO,cAAc,CAAC,MAAM,CAAC,CAAC;AAChC,CAAC"}
|
|
@@ -6,6 +6,8 @@
|
|
|
6
6
|
* Headless by default — the pool exists for fault-tolerant headless multi-agent testing.
|
|
7
7
|
*/
|
|
8
8
|
import type { Launcher } from './browser-pool.js';
|
|
9
|
+
/** The fix for the most common first-run failure: Chromium isn't installed for Playwright. */
|
|
10
|
+
export declare const CHROMIUM_MISSING_HINT = "Chromium is not installed for Playwright. Run: npx playwright install chromium";
|
|
9
11
|
/** A Launcher that boots a real headless Chromium and adapts it to the pool's interface. */
|
|
10
12
|
export declare function playwrightLauncher(opts?: {
|
|
11
13
|
headless?: boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"playwright-launcher.d.ts","sourceRoot":"","sources":["../../src/pool/playwright-launcher.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,KAAK,EAAE,QAAQ,EAA4C,MAAM,mBAAmB,CAAC;AA4B5F,4FAA4F;AAC5F,wBAAgB,kBAAkB,CAAC,IAAI,GAAE;IAAE,QAAQ,CAAC,EAAE,OAAO,CAAA;CAAO,GAAG,QAAQ,
|
|
1
|
+
{"version":3,"file":"playwright-launcher.d.ts","sourceRoot":"","sources":["../../src/pool/playwright-launcher.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,KAAK,EAAE,QAAQ,EAA4C,MAAM,mBAAmB,CAAC;AA4B5F,8FAA8F;AAC9F,eAAO,MAAM,qBAAqB,mFACgD,CAAC;AAEnF,4FAA4F;AAC5F,wBAAgB,kBAAkB,CAAC,IAAI,GAAE;IAAE,QAAQ,CAAC,EAAE,OAAO,CAAA;CAAO,GAAG,QAAQ,CAoB9E;AAWD;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CASzF"}
|
|
@@ -26,6 +26,8 @@ function wrapBrowser(browser) {
|
|
|
26
26
|
onDisconnected: (handler) => browser.on('disconnected', handler),
|
|
27
27
|
};
|
|
28
28
|
}
|
|
29
|
+
/** The fix for the most common first-run failure: Chromium isn't installed for Playwright. */
|
|
30
|
+
export const CHROMIUM_MISSING_HINT = 'Chromium is not installed for Playwright. Run: npx playwright install chromium';
|
|
29
31
|
/** A Launcher that boots a real headless Chromium and adapts it to the pool's interface. */
|
|
30
32
|
export function playwrightLauncher(opts = {}) {
|
|
31
33
|
const headless = opts.headless ?? true;
|
|
@@ -36,7 +38,17 @@ export function playwrightLauncher(opts = {}) {
|
|
|
36
38
|
// (where it's meaningful) instead of at import-time (where it kills unrelated features).
|
|
37
39
|
return async () => {
|
|
38
40
|
const { chromium } = await import('playwright');
|
|
39
|
-
|
|
41
|
+
try {
|
|
42
|
+
return wrapBrowser(await chromium.launch({ headless }));
|
|
43
|
+
}
|
|
44
|
+
catch (err) {
|
|
45
|
+
// Turn Playwright's raw "Executable doesn't exist" into the one command that fixes it.
|
|
46
|
+
const msg = err instanceof Error ? err.message : String(err);
|
|
47
|
+
if (/executable doesn.?t exist|playwright install|browsertype\.launch/i.test(msg)) {
|
|
48
|
+
throw new Error(CHROMIUM_MISSING_HINT);
|
|
49
|
+
}
|
|
50
|
+
throw err;
|
|
51
|
+
}
|
|
40
52
|
};
|
|
41
53
|
}
|
|
42
54
|
const MAX_CONTEXTS_CEILING = 8;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"playwright-launcher.js","sourceRoot":"","sources":["../../src/pool/playwright-launcher.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAKH,SAAS,WAAW,CAAC,OAAgB;IACnC,OAAO;QACL,WAAW,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,WAAW,EAAE;QACxC,UAAU,EAAE,KAAK,IAA4B,EAAE;YAC7C,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,UAAU,EAAE,CAAC;YAC3C,OAAO;gBACL,OAAO,EAAE,KAAK,IAAyB,EAAE;oBACvC,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,OAAO,EAAE,CAAC;oBACrC,OAAO;wBACL,IAAI,EAAE,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,CAClB,IAAI,CAAC,IAAI,CACP,GAAG,EACH,IAAI,EAAE,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,SAAS,EAAE,CACxE;wBACH,KAAK,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE;wBACzB,OAAO,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC;qBAChD,CAAC;gBACJ,CAAC;gBACD,KAAK,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,KAAK,EAAE;aAC7B,CAAC;QACJ,CAAC;QACD,KAAK,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,KAAK,EAAE;QAC5B,cAAc,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,cAAc,EAAE,OAAO,CAAC;KACjE,CAAC;AACJ,CAAC;AAED,4FAA4F;AAC5F,MAAM,UAAU,kBAAkB,CAAC,OAA+B,EAAE;IAClE,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC;IACvC,+FAA+F;IAC/F,yFAAyF;IACzF,8FAA8F;IAC9F,6FAA6F;IAC7F,yFAAyF;IACzF,OAAO,KAAK,IAAI,EAAE;QAChB,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,MAAM,CAAC,YAAY,CAAC,CAAC;QAChD,OAAO,WAAW,CAAC,MAAM,QAAQ,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"playwright-launcher.js","sourceRoot":"","sources":["../../src/pool/playwright-launcher.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"baselines.d.ts","sourceRoot":"","sources":["../../src/project/baselines.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;CACf;AAED,UAAU,UAAU;IAClB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,KAAK,EAAE,MAAM,EAAE,CAAC;CACjB;AAED,mFAAmF;AACnF,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,
|
|
1
|
+
{"version":3,"file":"baselines.d.ts","sourceRoot":"","sources":["../../src/project/baselines.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;CACf;AAED,UAAU,UAAU;IAClB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,KAAK,EAAE,MAAM,EAAE,CAAC;CACjB;AAED,mFAAmF;AACnF,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,CASrD;AAQD,wGAAwG;AACxG,wBAAgB,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,UAAU,CAc3E;AAED,iDAAiD;AACjD,qBAAa,aAAa;;IAGxB,IAAI,CAAC,QAAQ,EAAE,QAAQ,GAAG,IAAI;IAI9B,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,QAAQ,GAAG,SAAS;IAIvC,IAAI,IAAI,MAAM,EAAE;CAGjB"}
|
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
/** Strip volatile ref ids so snapshots compare by semantics, not by ref number. */
|
|
2
2
|
export function normalizeLines(tree) {
|
|
3
|
-
return tree
|
|
3
|
+
return (tree
|
|
4
4
|
.split('\n')
|
|
5
|
-
|
|
6
|
-
|
|
5
|
+
// The separator before a ref marker is a single space; a bounded quantifier keeps this linear
|
|
6
|
+
// (an unbounded `\s*` here backtracks polynomially on a long whitespace run — a needless ReDoS).
|
|
7
|
+
.map((line) => line.replace(/\s?\(ref=e\d+\)/, '').trim())
|
|
8
|
+
.filter((line) => line.length > 0));
|
|
7
9
|
}
|
|
8
10
|
function frequency(lines) {
|
|
9
11
|
const map = new Map();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"baselines.js","sourceRoot":"","sources":["../../src/project/baselines.ts"],"names":[],"mappings":"AAWA,mFAAmF;AACnF,MAAM,UAAU,cAAc,CAAC,IAAY;IACzC,OAAO,IAAI;
|
|
1
|
+
{"version":3,"file":"baselines.js","sourceRoot":"","sources":["../../src/project/baselines.ts"],"names":[],"mappings":"AAWA,mFAAmF;AACnF,MAAM,UAAU,cAAc,CAAC,IAAY;IACzC,OAAO,CACL,IAAI;SACD,KAAK,CAAC,IAAI,CAAC;QACZ,8FAA8F;QAC9F,iGAAiG;SAChG,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,iBAAiB,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;SACzD,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CACrC,CAAC;AACJ,CAAC;AAED,SAAS,SAAS,CAAC,KAAe;IAChC,MAAM,GAAG,GAAG,IAAI,GAAG,EAAkB,CAAC;IACtC,KAAK,MAAM,IAAI,IAAI,KAAK;QAAE,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IAClE,OAAO,GAAG,CAAC;AACb,CAAC;AAED,wGAAwG;AACxG,MAAM,UAAU,SAAS,CAAC,QAAkB,EAAE,OAAiB;IAC7D,MAAM,CAAC,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAC;IAC9B,MAAM,CAAC,GAAG,SAAS,CAAC,OAAO,CAAC,CAAC;IAC7B,MAAM,OAAO,GAAa,EAAE,CAAC;IAC7B,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,KAAK,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;QAC1B,MAAM,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC9B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,IAAI,EAAE,CAAC,IAAI,CAAC;YAAE,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC3D,CAAC;IACD,KAAK,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;QAC1B,MAAM,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC7B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC;YAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACxD,CAAC;IACD,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;AAC5B,CAAC;AAED,iDAAiD;AACjD,MAAM,OAAO,aAAa;IACf,IAAI,GAAG,IAAI,GAAG,EAAoB,CAAC;IAE5C,IAAI,CAAC,QAAkB;QACrB,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IACzC,CAAC;IAED,GAAG,CAAC,IAAY;QACd,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAC7B,CAAC;IAED,IAAI;QACF,OAAO,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;IAC/B,CAAC;CACF"}
|
|
@@ -110,24 +110,36 @@ function serializeLearned(learned) {
|
|
|
110
110
|
};
|
|
111
111
|
}
|
|
112
112
|
/**
|
|
113
|
-
*
|
|
114
|
-
* most-recent
|
|
113
|
+
* Cap project memory while GUARANTEEING each flow keeps its last-known-good. Pass 1 reserves the
|
|
114
|
+
* most-recent run of every distinct name (never evicted by the TOTAL cap), so a fresh session can always
|
|
115
|
+
* answer "did my last run of this flow pass?" locally — the durable, free regression memory the solo
|
|
116
|
+
* loop needs. Pass 2 fills the remaining budget with additional recent runs (PER_NAME per name, TOTAL
|
|
117
|
+
* overall). Chronological order (oldest→newest) is preserved.
|
|
115
118
|
*/
|
|
116
119
|
function truncate(runs) {
|
|
117
120
|
const perName = new Map();
|
|
118
|
-
const
|
|
121
|
+
const kept = new Set();
|
|
122
|
+
// Pass 1 (newest→oldest): reserve each name's latest run. Kept regardless of the TOTAL cap.
|
|
123
|
+
const seen = new Set();
|
|
119
124
|
for (let i = runs.length - 1; i >= 0; i -= 1) {
|
|
120
125
|
const run = runs[i];
|
|
121
|
-
if (run === undefined)
|
|
126
|
+
if (run === undefined || seen.has(run.name))
|
|
127
|
+
continue;
|
|
128
|
+
seen.add(run.name);
|
|
129
|
+
kept.add(i);
|
|
130
|
+
perName.set(run.name, 1);
|
|
131
|
+
}
|
|
132
|
+
// Pass 2 (newest→oldest): fill the rest with extra recent runs, respecting PER_NAME and TOTAL.
|
|
133
|
+
for (let i = runs.length - 1; i >= 0 && kept.size < PROJECT_RUN_CAP.TOTAL; i -= 1) {
|
|
134
|
+
const run = runs[i];
|
|
135
|
+
if (run === undefined || kept.has(i))
|
|
122
136
|
continue;
|
|
123
137
|
const count = perName.get(run.name) ?? 0;
|
|
124
138
|
if (count >= PROJECT_RUN_CAP.PER_NAME)
|
|
125
139
|
continue;
|
|
126
140
|
perName.set(run.name, count + 1);
|
|
127
|
-
|
|
128
|
-
if (keptReversed.length >= PROJECT_RUN_CAP.TOTAL)
|
|
129
|
-
break;
|
|
141
|
+
kept.add(i);
|
|
130
142
|
}
|
|
131
|
-
return
|
|
143
|
+
return runs.filter((_, i) => kept.has(i));
|
|
132
144
|
}
|
|
133
145
|
//# sourceMappingURL=project-store.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"project-store.js","sourceRoot":"","sources":["../../src/project/project-store.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,oBAAoB,EACpB,eAAe,EACf,iBAAiB,EACjB,gBAAgB,GAIjB,MAAM,iBAAiB,CAAC;AAGzB,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAE9C,MAAM,WAAW,GAAG,CAAC,CAAC;AAOtB,MAAM,aAAa,GAAgB,EAAE,OAAO,EAAE,oBAAoB,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC;AAE/E;;;;GAIG;AACH,MAAM,OAAO,YAAY;IACd,GAAG,CAAiB;IACpB,KAAK,CAAS;IACd,MAAM,CAAQ;IAEvB,YAAY,EAAkB,EAAE,IAAY,EAAE,KAAY;QACxD,IAAI,CAAC,GAAG,GAAG,EAAE,CAAC;QACd,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QAClB,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;IACtB,CAAC;IAED;;;;OAIG;IACH,UAAU,CAAC,IAAiB;QAC1B,MAAM,QAAQ,GAAgB;YAC5B,OAAO,EAAE,oBAAoB;YAC7B,GAAG,CAAC,IAAI,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,gBAAgB,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAClF,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC;SAClC,CAAC;QACF,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,WAAW,CAAC,IAAI,CAAC;IAC5D,CAAC;IAED,mGAAmG;IACnG,KAAK,CAAC,IAAI;QACR,MAAM,IAAI,GAAG,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC;QACjD,IAAI,CAAC,CAAC,MAAM,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,gBAAgB,CAAC,OAAO,EAAE,CAAC;QAE3F,IAAI,IAAY,CAAC;QACjB,IAAI,CAAC;YACH,IAAI,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QACvC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO;gBACL,EAAE,EAAE,KAAK;gBACT,MAAM,EAAE,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,CAAC,gBAAgB,CAAC,SAAS;aAC3F,CAAC;QACJ,CAAC;QAED,IAAI,MAAe,CAAC;QACpB,IAAI,CAAC;YACH,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC5B,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,gBAAgB,CAAC,SAAS,EAAE,CAAC;QAC3D,CAAC;QAED,MAAM,MAAM,GAAG,iBAAiB,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QACnD,IAAI,CAAC,MAAM,CAAC,OAAO;YAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,gBAAgB,CAAC,SAAS,EAAE,CAAC;QAC9E,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC;IACzC,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,SAAS,CAAC,MAA6B;QAC3C,MAAM,IAAI,GAAG,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC;QACjD,2FAA2F;QAC3F,0FAA0F;QAC1F,MAAM,YAAY,CAAC,IAAI,EAAE,KAAK,IAAI,EAAE;YAClC,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC;YACnC,MAAM,IAAI,GAAgB,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,aAAa,CAAC;YACtE,MAAM,OAAO,GAAc,EAAE,GAAG,MAAM,EAAE,EAAE,EAAE,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,EAAE,CAAC;YAChE,MAAM,IAAI,GAAG,QAAQ,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC;YAC/C,MAAM,IAAI,GAAgB,EAAE,GAAG,IAAI,EAAE,IAAI,EAAE,CAAC;YAC5C,MAAM,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC;YACvD,MAAM,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC;QACxD,CAAC,CAAC,CAAC;IACL,CAAC;IAED,iGAAiG;IACjG,KAAK,CAAC,OAAO,CAAC,IAAY;QACxB,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC;QAC/B,IAAI,CAAC,IAAI,CAAC,EAAE;YAAE,OAAO,SAAS,CAAC;QAC/B,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;YACvD,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAC9B,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,CAAC,IAAI,KAAK,IAAI;gBAAE,OAAO,GAAG,CAAC;QACzD,CAAC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;CACF;AAED,+EAA+E;AAC/E,SAAS,YAAY,CAAC,GAAc;IAClC,OAAO;QACL,IAAI,EAAE,GAAG,CAAC,IAAI;QACd,IAAI,EAAE,GAAG,CAAC,IAAI;QACd,MAAM,EAAE,GAAG,CAAC,MAAM;QAClB,EAAE,EAAE,GAAG,CAAC,EAAE;QACV,GAAG,CAAC,GAAG,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC9D,GAAG,CAAC,GAAG,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACjE,GAAG,CAAC,GAAG,CAAC,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,GAAG,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACxE,CAAC;AACJ,CAAC;AAED,2EAA2E;AAC3E,SAAS,gBAAgB,CAAC,OAAuB;IAC/C,OAAO;QACL,GAAG,CAAC,OAAO,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC5E,GAAG,CAAC,OAAO,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAChF,CAAC;AACJ,CAAC;AAED
|
|
1
|
+
{"version":3,"file":"project-store.js","sourceRoot":"","sources":["../../src/project/project-store.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"project-tools.d.ts","sourceRoot":"","sources":["../../src/project/project-tools.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"project-tools.d.ts","sourceRoot":"","sources":["../../src/project/project-tools.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,OAAO,EAAY,MAAM,mBAAmB,CAAC;AAgG3D,eAAO,MAAM,aAAa,EAAE,OAAO,EAgFlC,CAAC"}
|
|
@@ -3,6 +3,7 @@ import { ProjectReadError, RunKind, RunStatus } from '@reticlehq/core';
|
|
|
3
3
|
import { ReticleTool } from '../tools/tool-names.js';
|
|
4
4
|
import { sessionIdShape } from '../tools/tool-kit.js';
|
|
5
5
|
import { asString } from '../tools/tools-helpers.js';
|
|
6
|
+
import { fetchProjectRegressionFromCloud, resolveCloudConfig } from '../cloud/cloud-sync.js';
|
|
6
7
|
import { RunStore } from '../runs/run-store.js';
|
|
7
8
|
import { diffRuns as diffVerificationRuns, } from '../runs/run-diff.js';
|
|
8
9
|
const REGRESSION_STATUSES = new Set([
|
|
@@ -28,6 +29,25 @@ function numericDelta(before, after) {
|
|
|
28
29
|
return undefined;
|
|
29
30
|
return (after ?? 0) - (before ?? 0);
|
|
30
31
|
}
|
|
32
|
+
/**
|
|
33
|
+
* Pull the team's server-side regression memory when logged in. This is what keeps a context-lost or
|
|
34
|
+
* brand-new agent (whose local project.json may be empty) oriented: the same reticle_project call folds in
|
|
35
|
+
* "what's broken vs before" from the cloud. Absent creds / unreachable → undefined (agent stays local).
|
|
36
|
+
*/
|
|
37
|
+
async function cloudRegression(deps, sessionId) {
|
|
38
|
+
const config = resolveCloudConfig(process.env);
|
|
39
|
+
if (config === null)
|
|
40
|
+
return undefined;
|
|
41
|
+
let projectId;
|
|
42
|
+
try {
|
|
43
|
+
projectId = deps.sessions.resolve(sessionId).projectId;
|
|
44
|
+
}
|
|
45
|
+
catch {
|
|
46
|
+
projectId = undefined;
|
|
47
|
+
}
|
|
48
|
+
const report = await fetchProjectRegressionFromCloud(config, projectId, (url, init) => fetch(url, init));
|
|
49
|
+
return report ?? undefined;
|
|
50
|
+
}
|
|
31
51
|
/** The two most-recent runs for `name`, oldest-first, or undefined if there are fewer than two. */
|
|
32
52
|
function lastTwoFor(runs, name) {
|
|
33
53
|
const matching = runs.filter((r) => r.name === name);
|
|
@@ -62,7 +82,7 @@ async function lastTwoRunArtifacts(deps) {
|
|
|
62
82
|
export const PROJECT_TOOLS = [
|
|
63
83
|
{
|
|
64
84
|
name: ReticleTool.PROJECT,
|
|
65
|
-
description: 'Read cross-run history from .reticle/project.json — the memory of how past runs behaved. With { name } it also returns the last run for that flow plus a diff-vs-last summary (status change, regressed flag, consoleErrors/driftSteps deltas) so you can answer "did it behave like last time?".
|
|
85
|
+
description: 'Read cross-run history from .reticle/project.json — the memory of how past runs behaved. With { name } it also returns the last run for that flow plus a diff-vs-last summary (status change, regressed flag, consoleErrors/driftSteps deltas) so you can answer "did it behave like last time?". `diff` is the lightweight status/console/drift delta vs the previous run of that NAME; `runDiff` is the per-flow duration/status delta between the two most-recent full verification artifacts ("step 3: 412ms -> 987ms (+140%), +2 requests"). When logged in to Reticle Cloud, also returns `cloud`: the team\'s server-side regression report (broken/changed flows vs before) — the durable memory a fresh or context-lost agent can rely on even when local history is empty. Returns { runs, learned?, lastRun?, diff?, runDiff?, cloud? } or { error, reason, cloud? }.',
|
|
66
86
|
inputSchema: {
|
|
67
87
|
name: z.string().optional().describe('Filter runs by this name. Omit to return all runs.'),
|
|
68
88
|
...sessionIdShape,
|
|
@@ -71,20 +91,23 @@ export const PROJECT_TOOLS = [
|
|
|
71
91
|
runs: z.array(z.unknown()),
|
|
72
92
|
diff: z.unknown().optional(),
|
|
73
93
|
runDiff: z.unknown().optional(),
|
|
94
|
+
cloud: z.unknown().optional(),
|
|
74
95
|
},
|
|
75
96
|
handler: async (deps, args) => {
|
|
97
|
+
const cloud = await cloudRegression(deps, asString(args['sessionId']));
|
|
98
|
+
const withCloud = (obj) => cloud === undefined ? obj : { ...obj, cloud };
|
|
76
99
|
const read = await deps.project.read();
|
|
77
100
|
if (!read.ok) {
|
|
78
|
-
return {
|
|
101
|
+
return withCloud({
|
|
79
102
|
error: read.reason === ProjectReadError.MISSING
|
|
80
103
|
? 'no .reticle/project.json yet — run a flow (reticle_flow_replay) or reticle_run_record first'
|
|
81
104
|
: '.reticle/project.json is malformed — it will self-heal on the next recorded run',
|
|
82
105
|
reason: read.reason,
|
|
83
|
-
};
|
|
106
|
+
});
|
|
84
107
|
}
|
|
85
108
|
const name = asString(args['name']);
|
|
86
109
|
if (name === undefined) {
|
|
87
|
-
return { runs: read.file.runs, learned: read.file.learned };
|
|
110
|
+
return withCloud({ runs: read.file.runs, learned: read.file.learned });
|
|
88
111
|
}
|
|
89
112
|
const lastRun = await deps.project.lastRun(name);
|
|
90
113
|
const pair = lastTwoFor(read.file.runs, name);
|
|
@@ -94,13 +117,13 @@ export const PROJECT_TOOLS = [
|
|
|
94
117
|
// last time?" from project.json, while `runDiff` answers "what changed between the last two full
|
|
95
118
|
// verification runs?" from .reticle/runs. Best-effort: no artifacts simply means no runDiff.
|
|
96
119
|
const runDiff = await lastTwoRunArtifacts(deps);
|
|
97
|
-
return {
|
|
120
|
+
return withCloud({
|
|
98
121
|
runs: read.file.runs.filter((r) => r.name === name),
|
|
99
122
|
learned: read.file.learned,
|
|
100
123
|
lastRun,
|
|
101
124
|
...(pair !== undefined ? { diff: diffRuns(pair[0], pair[1]) } : {}),
|
|
102
125
|
...(runDiff === undefined ? {} : { runDiff }),
|
|
103
|
-
};
|
|
126
|
+
});
|
|
104
127
|
},
|
|
105
128
|
},
|
|
106
129
|
{
|