@post-print/agent-test 2.0.0 → 2.0.2
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/sdk/cli.d.ts +1 -1
- package/dist/sdk/cli.d.ts.map +1 -1
- package/dist/sdk/cli.js +49 -14
- package/dist/sdk/cli.js.map +1 -1
- package/dist/sdk/criteria.d.ts +3 -0
- package/dist/sdk/criteria.d.ts.map +1 -0
- package/dist/sdk/criteria.js +162 -0
- package/dist/sdk/criteria.js.map +1 -0
- package/dist/sdk/definitions.js +1 -1
- package/dist/sdk/definitions.js.map +1 -1
- package/dist/sdk/execution-reporter.d.ts +18 -0
- package/dist/sdk/execution-reporter.d.ts.map +1 -0
- package/dist/sdk/execution-reporter.js +171 -0
- package/dist/sdk/execution-reporter.js.map +1 -0
- package/dist/sdk/execution-runner.d.ts +14 -0
- package/dist/sdk/execution-runner.d.ts.map +1 -0
- package/dist/sdk/execution-runner.js +80 -0
- package/dist/sdk/execution-runner.js.map +1 -0
- package/dist/sdk/execution-store.d.ts +92 -0
- package/dist/sdk/execution-store.d.ts.map +1 -0
- package/dist/sdk/execution-store.js +357 -0
- package/dist/sdk/execution-store.js.map +1 -0
- package/dist/sdk/expect.d.ts.map +1 -1
- package/dist/sdk/expect.js +33 -5
- package/dist/sdk/expect.js.map +1 -1
- package/dist/sdk/playwright-cli.d.ts +2 -0
- package/dist/sdk/playwright-cli.d.ts.map +1 -0
- package/dist/sdk/playwright-cli.js +6 -0
- package/dist/sdk/playwright-cli.js.map +1 -0
- package/dist/sdk/reporter.d.ts.map +1 -1
- package/dist/sdk/reporter.js +40 -0
- package/dist/sdk/reporter.js.map +1 -1
- package/dist/sdk/runtime.d.ts +1 -1
- package/dist/sdk/runtime.d.ts.map +1 -1
- package/dist/sdk/runtime.js +14 -5
- package/dist/sdk/runtime.js.map +1 -1
- package/dist/sdk/test.d.ts +10 -1
- package/dist/sdk/test.d.ts.map +1 -1
- package/dist/sdk/test.js +49 -4
- package/dist/sdk/test.js.map +1 -1
- package/dist/sdk/types.d.ts +2 -1
- package/dist/sdk/types.d.ts.map +1 -1
- package/dist/sdk/viewer.d.ts +3 -9
- package/dist/sdk/viewer.d.ts.map +1 -1
- package/dist/sdk/viewer.js +41 -127
- package/dist/sdk/viewer.js.map +1 -1
- package/dist/viewer/bootstrap.d.ts +10 -0
- package/dist/viewer/bootstrap.d.ts.map +1 -0
- package/dist/viewer/bootstrap.js +2 -0
- package/dist/viewer/bootstrap.js.map +1 -0
- package/dist/viewer/client-entry.d.ts +2 -0
- package/dist/viewer/client-entry.d.ts.map +1 -0
- package/dist/viewer/client-entry.js +31 -0
- package/dist/viewer/client-entry.js.map +1 -0
- package/dist/viewer/generated-api.d.ts +15 -0
- package/dist/viewer/generated-api.d.ts.map +1 -0
- package/dist/viewer/generated-api.js +42 -0
- package/dist/viewer/generated-api.js.map +1 -0
- package/dist/viewer/generated-contracts.d.ts +13 -0
- package/dist/viewer/generated-contracts.d.ts.map +1 -0
- package/dist/viewer/generated-contracts.js +12 -0
- package/dist/viewer/generated-contracts.js.map +1 -0
- package/dist/viewer/main.js +64 -3
- package/dist/viewer/main.js.map +1 -1
- package/dist/viewer/page.d.ts +2 -4
- package/dist/viewer/page.d.ts.map +1 -1
- package/dist/viewer/page.js +18 -194
- package/dist/viewer/page.js.map +1 -1
- package/dist/viewer/presentation.d.ts +12 -0
- package/dist/viewer/presentation.d.ts.map +1 -0
- package/dist/viewer/presentation.js +48 -0
- package/dist/viewer/presentation.js.map +1 -0
- package/dist/viewer/protocol.d.ts +21 -0
- package/dist/viewer/protocol.d.ts.map +1 -0
- package/dist/viewer/protocol.js +6 -0
- package/dist/viewer/protocol.js.map +1 -0
- package/dist/viewer/server.d.ts +5 -10
- package/dist/viewer/server.d.ts.map +1 -1
- package/dist/viewer/server.js +301 -199
- package/dist/viewer/server.js.map +1 -1
- package/dist/viewer/styles.d.ts +1 -1
- package/dist/viewer/styles.d.ts.map +1 -1
- package/dist/viewer/styles.js +82 -429
- package/dist/viewer/styles.js.map +1 -1
- package/dist/viewer/stylex.css +1322 -0
- package/dist/viewer/test-catalog.d.ts +43 -0
- package/dist/viewer/test-catalog.d.ts.map +1 -0
- package/dist/viewer/test-catalog.js +27 -0
- package/dist/viewer/test-catalog.js.map +1 -0
- package/dist/viewer/v2-client.d.ts +7 -0
- package/dist/viewer/v2-client.d.ts.map +1 -0
- package/dist/viewer/v2-client.js +1862 -0
- package/dist/viewer/v2-client.js.map +1 -0
- package/package.json +14 -4
- package/dist/compare-scenario.d.ts +0 -65
- package/dist/compare-scenario.d.ts.map +0 -1
- package/dist/compare-scenario.js +0 -325
- package/dist/compare-scenario.js.map +0 -1
- package/dist/failures.d.ts +0 -8
- package/dist/failures.d.ts.map +0 -1
- package/dist/failures.js +0 -7
- package/dist/failures.js.map +0 -1
- package/dist/scenario-story.d.ts +0 -41
- package/dist/scenario-story.d.ts.map +0 -1
- package/dist/scenario-story.js +0 -477
- package/dist/scenario-story.js.map +0 -1
- package/dist/scenario-usage.d.ts +0 -15
- package/dist/scenario-usage.d.ts.map +0 -1
- package/dist/scenario-usage.js +0 -18
- package/dist/scenario-usage.js.map +0 -1
- package/dist/sdk/viewer-results.d.ts +0 -43
- package/dist/sdk/viewer-results.d.ts.map +0 -1
- package/dist/sdk/viewer-results.js +0 -126
- package/dist/sdk/viewer-results.js.map +0 -1
- package/dist/types.d.ts +0 -328
- package/dist/types.d.ts.map +0 -1
- package/dist/types.js +0 -2
- package/dist/types.js.map +0 -1
- package/dist/viewer/catalog.d.ts +0 -66
- package/dist/viewer/catalog.d.ts.map +0 -1
- package/dist/viewer/catalog.js +0 -49
- package/dist/viewer/catalog.js.map +0 -1
- package/dist/viewer/client.d.ts +0 -7
- package/dist/viewer/client.d.ts.map +0 -1
- package/dist/viewer/client.js +0 -14
- package/dist/viewer/client.js.map +0 -1
- package/dist/viewer/events.d.ts +0 -118
- package/dist/viewer/events.d.ts.map +0 -1
- package/dist/viewer/events.js +0 -51
- package/dist/viewer/events.js.map +0 -1
- package/dist/viewer/run-controller.d.ts +0 -43
- package/dist/viewer/run-controller.d.ts.map +0 -1
- package/dist/viewer/run-controller.js +0 -475
- package/dist/viewer/run-controller.js.map +0 -1
- package/dist/worker-pool.d.ts +0 -12
- package/dist/worker-pool.d.ts.map +0 -1
- package/dist/worker-pool.js +0 -26
- package/dist/worker-pool.js.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client-entry.js","sourceRoot":"","sources":["../../src/viewer/client-entry.tsx"],"names":[],"mappings":"AAAA,OAAO,WAAW,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
export declare class ViewerApi {
|
|
2
|
+
private readonly request;
|
|
3
|
+
constructor(request?: typeof fetch);
|
|
4
|
+
getTestCatalog<T>(): Promise<T>;
|
|
5
|
+
listExecutions<T>(): Promise<T>;
|
|
6
|
+
getExecution<T>(id: string): Promise<T>;
|
|
7
|
+
startExecution<T>(testId: string, workers?: number): Promise<T>;
|
|
8
|
+
startTestGroup<T>(testIds: string[], workers?: number): Promise<T>;
|
|
9
|
+
startSuiteExecution<T>(workers?: number): Promise<T>;
|
|
10
|
+
cancelExecution<T>(id: string): Promise<T>;
|
|
11
|
+
private start;
|
|
12
|
+
private json;
|
|
13
|
+
}
|
|
14
|
+
export declare const viewerApi: ViewerApi;
|
|
15
|
+
//# sourceMappingURL=generated-api.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generated-api.d.ts","sourceRoot":"","sources":["../../src/viewer/generated-api.ts"],"names":[],"mappings":"AAIA,qBAAa,SAAS;IACT,OAAO,CAAC,QAAQ,CAAC,OAAO;IAApC,YAA6B,OAAO,GAAE,OAAO,KAA2C,EAAI;IAC5F,cAAc,CAAC,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC,CAE9B;IACD,cAAc,CAAC,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC,CAE9B;IACD,YAAY,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,CAEtC;IACD,cAAc,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,SAAI,GAAG,OAAO,CAAC,CAAC,CAAC,CAEzD;IACD,cAAc,CAAC,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,OAAO,SAAI,GAAG,OAAO,CAAC,CAAC,CAAC,CAE5D;IACD,mBAAmB,CAAC,CAAC,EAAE,OAAO,SAAI,GAAG,OAAO,CAAC,CAAC,CAAC,CAE9C;IACD,eAAe,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,CAEzC;IACD,OAAO,CAAC,KAAK;YAOC,IAAI;CAKlB;AACD,eAAO,MAAM,SAAS,WAAkB,CAAC"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
export class ViewerApi {
|
|
2
|
+
request;
|
|
3
|
+
constructor(request = (input, init) => fetch(input, init)) {
|
|
4
|
+
this.request = request;
|
|
5
|
+
}
|
|
6
|
+
getTestCatalog() {
|
|
7
|
+
return this.json("/api/test-catalog");
|
|
8
|
+
}
|
|
9
|
+
listExecutions() {
|
|
10
|
+
return this.json("/api/executions");
|
|
11
|
+
}
|
|
12
|
+
getExecution(id) {
|
|
13
|
+
return this.json(`/api/executions/${id}`);
|
|
14
|
+
}
|
|
15
|
+
startExecution(testId, workers = 1) {
|
|
16
|
+
return this.start({ testId, workers });
|
|
17
|
+
}
|
|
18
|
+
startTestGroup(testIds, workers = 1) {
|
|
19
|
+
return this.start({ testIds, workers });
|
|
20
|
+
}
|
|
21
|
+
startSuiteExecution(workers = 1) {
|
|
22
|
+
return this.start({ all: true, workers });
|
|
23
|
+
}
|
|
24
|
+
cancelExecution(id) {
|
|
25
|
+
return this.json(`/api/executions/${id}/cancel`, { method: "POST" });
|
|
26
|
+
}
|
|
27
|
+
start(body) {
|
|
28
|
+
return this.json("/api/executions", {
|
|
29
|
+
method: "POST",
|
|
30
|
+
headers: { "content-type": "application/json" },
|
|
31
|
+
body: JSON.stringify(body),
|
|
32
|
+
});
|
|
33
|
+
}
|
|
34
|
+
async json(path, init) {
|
|
35
|
+
const response = await this.request(path, init);
|
|
36
|
+
if (!response.ok)
|
|
37
|
+
throw new Error(`Request failed: ${response.status}`);
|
|
38
|
+
return response.json();
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
export const viewerApi = new ViewerApi();
|
|
42
|
+
//# sourceMappingURL=generated-api.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generated-api.js","sourceRoot":"","sources":["../../src/viewer/generated-api.ts"],"names":[],"mappings":"AAIA,MAAM,OAAO,SAAS;IACQ,OAAO;IAApC,YAA6B,OAAO,GAAiB,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC;uBAA3D,OAAO;IAAuD,CAAC;IAC5F,cAAc;QACb,OAAO,IAAI,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;IACvC,CAAC;IACD,cAAc;QACb,OAAO,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;IACrC,CAAC;IACD,YAAY,CAAI,EAAU;QACzB,OAAO,IAAI,CAAC,IAAI,CAAC,mBAAmB,EAAE,EAAE,CAAC,CAAC;IAC3C,CAAC;IACD,cAAc,CAAI,MAAc,EAAE,OAAO,GAAG,CAAC;QAC5C,OAAO,IAAI,CAAC,KAAK,CAAI,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC;IAC3C,CAAC;IACD,cAAc,CAAI,OAAiB,EAAE,OAAO,GAAG,CAAC;QAC/C,OAAO,IAAI,CAAC,KAAK,CAAI,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;IAC5C,CAAC;IACD,mBAAmB,CAAI,OAAO,GAAG,CAAC;QACjC,OAAO,IAAI,CAAC,KAAK,CAAI,EAAE,GAAG,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;IAC9C,CAAC;IACD,eAAe,CAAI,EAAU;QAC5B,OAAO,IAAI,CAAC,IAAI,CAAC,mBAAmB,EAAE,SAAS,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;IACtE,CAAC;IACO,KAAK,CAAI,IAAsB;QACtC,OAAO,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE;YACnC,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;YAC/C,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;SAC1B,CAAC,CAAC;IACJ,CAAC;IACO,KAAK,CAAC,IAAI,CAAI,IAAY,EAAE,IAAkB;QACrD,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAChD,IAAI,CAAC,QAAQ,CAAC,EAAE;YAAE,MAAM,IAAI,KAAK,CAAC,mBAAmB,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;QACxE,OAAO,QAAQ,CAAC,IAAI,EAAgB,CAAC;IACtC,CAAC;CACD;AACD,MAAM,CAAC,MAAM,SAAS,GAAG,IAAI,SAAS,EAAE,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { z } from "zod/v4";
|
|
2
|
+
export declare const VIEWER_PROTOCOL_VERSION = 1;
|
|
3
|
+
export declare const viewerClientMessage: z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
4
|
+
type: z.ZodLiteral<"hello">;
|
|
5
|
+
protocol: z.ZodNumber;
|
|
6
|
+
subscriptions: z.ZodArray<z.ZodEnum<{
|
|
7
|
+
catalog: "catalog";
|
|
8
|
+
executions: "executions";
|
|
9
|
+
}>>;
|
|
10
|
+
cursors: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodNumber>>;
|
|
11
|
+
}, z.core.$strip>]>;
|
|
12
|
+
export type ViewerClientMessage = z.output<typeof viewerClientMessage>;
|
|
13
|
+
//# sourceMappingURL=generated-contracts.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generated-contracts.d.ts","sourceRoot":"","sources":["../../src/viewer/generated-contracts.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,QAAQ,CAAC;AAE3B,eAAO,MAAM,uBAAuB,IAAI,CAAC;AACzC,eAAO,MAAM,mBAAmB;;;;;;;;mBAO9B,CAAC;AACH,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,mBAAmB,CAAC,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
// Generated by scripts/generate-viewer-contracts.ts from contracts/viewer.asyncapi.json.
|
|
2
|
+
import { z } from "zod/v4";
|
|
3
|
+
export const VIEWER_PROTOCOL_VERSION = 1;
|
|
4
|
+
export const viewerClientMessage = z.discriminatedUnion("type", [
|
|
5
|
+
z.object({
|
|
6
|
+
type: z.literal("hello"),
|
|
7
|
+
protocol: z.number().int().positive(),
|
|
8
|
+
subscriptions: z.array(z.enum(["catalog", "executions"])),
|
|
9
|
+
cursors: z.record(z.string(), z.number().int().nonnegative()).default({}),
|
|
10
|
+
}),
|
|
11
|
+
]);
|
|
12
|
+
//# sourceMappingURL=generated-contracts.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generated-contracts.js","sourceRoot":"","sources":["../../src/viewer/generated-contracts.ts"],"names":[],"mappings":"AAAA,yFAAyF;AACzF,OAAO,EAAE,CAAC,EAAE,MAAM,QAAQ,CAAC;AAE3B,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,CAAC;AACzC,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,CAAC,kBAAkB,CAAC,MAAM,EAAE;IAC/D,CAAC,CAAC,MAAM,CAAC;QACR,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC;QACxB,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE;QACrC,aAAa,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC,CAAC;QACzD,OAAO,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,WAAW,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;KACzE,CAAC;CACF,CAAC,CAAC"}
|
package/dist/viewer/main.js
CHANGED
|
@@ -1,11 +1,72 @@
|
|
|
1
|
-
import { jsx as _jsx } from "react/jsx-runtime";
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { QueryClient, QueryClientProvider } from "@tanstack/react-query";
|
|
3
|
+
import { RouterProvider } from "@tanstack/react-router";
|
|
4
|
+
import { useEffect } from "react";
|
|
2
5
|
import { createRoot } from "react-dom/client";
|
|
3
|
-
import
|
|
6
|
+
import { viewerRouter } from "./v2-client.js";
|
|
4
7
|
const root = document.getElementById("viewer-root");
|
|
5
8
|
const bootstrapData = document.getElementById("bootstrap-data")?.textContent;
|
|
6
9
|
if (!(root instanceof HTMLElement) || bootstrapData === undefined) {
|
|
7
10
|
throw new Error("Viewer shell is missing its root or bootstrap data");
|
|
8
11
|
}
|
|
9
12
|
const bootstrap = JSON.parse(bootstrapData);
|
|
10
|
-
|
|
13
|
+
const queryClient = new QueryClient({ defaultOptions: { queries: { staleTime: 5_000 } } });
|
|
14
|
+
function ExecutionSync({ bootstrap }) {
|
|
15
|
+
useEffect(() => {
|
|
16
|
+
return connectExecutionSync(bootstrap);
|
|
17
|
+
}, [bootstrap]);
|
|
18
|
+
return null;
|
|
19
|
+
}
|
|
20
|
+
function applyLiveEvent(message) {
|
|
21
|
+
const event = JSON.parse(message.data);
|
|
22
|
+
if (event.type === "catalog.snapshot")
|
|
23
|
+
queryClient.setQueryData(["test-catalog"], event.catalog);
|
|
24
|
+
if (event.type === "executions.snapshot")
|
|
25
|
+
queryClient.setQueryData(["execution-history"], event.executions ?? []);
|
|
26
|
+
if (event.type === "execution.snapshot" && typeof event.execution?.id === "string")
|
|
27
|
+
queryClient.setQueryData(["execution", event.execution.id], event.execution);
|
|
28
|
+
}
|
|
29
|
+
function connectExecutionSync(bootstrap) {
|
|
30
|
+
const socket = bootstrap.capabilities.socket;
|
|
31
|
+
if (!socket)
|
|
32
|
+
return undefined;
|
|
33
|
+
let connection;
|
|
34
|
+
let reconnect;
|
|
35
|
+
let stopped = false;
|
|
36
|
+
let opened = false;
|
|
37
|
+
let delay = 250;
|
|
38
|
+
const connect = () => {
|
|
39
|
+
const protocol = location.protocol === "https:" ? "wss:" : "ws:";
|
|
40
|
+
connection = new WebSocket(`${protocol}//${location.host}${socket.path}?token=${socket.token}`);
|
|
41
|
+
connection.onopen = () => {
|
|
42
|
+
if (opened)
|
|
43
|
+
void queryClient.invalidateQueries({ queryKey: ["execution"] });
|
|
44
|
+
opened = true;
|
|
45
|
+
delay = 250;
|
|
46
|
+
connection?.send(JSON.stringify({
|
|
47
|
+
type: "hello",
|
|
48
|
+
protocol: socket.protocol,
|
|
49
|
+
subscriptions: ["catalog", "executions"],
|
|
50
|
+
}));
|
|
51
|
+
};
|
|
52
|
+
connection.onmessage = applyLiveEvent;
|
|
53
|
+
connection.onclose = () => {
|
|
54
|
+
if (stopped)
|
|
55
|
+
return;
|
|
56
|
+
reconnect = setTimeout(connect, delay);
|
|
57
|
+
delay = Math.min(delay * 2, 5_000);
|
|
58
|
+
};
|
|
59
|
+
};
|
|
60
|
+
connect();
|
|
61
|
+
return () => {
|
|
62
|
+
stopped = true;
|
|
63
|
+
if (reconnect)
|
|
64
|
+
clearTimeout(reconnect);
|
|
65
|
+
connection?.close();
|
|
66
|
+
};
|
|
67
|
+
}
|
|
68
|
+
createRoot(root).render(_jsx(QueryClientProvider, { client: queryClient, children: _jsx(ViewerRoot, {}) }));
|
|
69
|
+
function ViewerRoot() {
|
|
70
|
+
return (_jsxs("div", { children: [_jsx(ExecutionSync, { bootstrap: bootstrap }), _jsx(RouterProvider, { router: viewerRouter })] }));
|
|
71
|
+
}
|
|
11
72
|
//# sourceMappingURL=main.js.map
|
package/dist/viewer/main.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"main.js","sourceRoot":"","sources":["../../src/viewer/main.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"main.js","sourceRoot":"","sources":["../../src/viewer/main.tsx"],"names":[],"mappings":"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"}
|
package/dist/viewer/page.d.ts
CHANGED
|
@@ -1,8 +1,6 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
import type { ViewerBootstrap } from "./events.js";
|
|
1
|
+
import type { ViewerBootstrap } from "./bootstrap.js";
|
|
3
2
|
export interface ViewerPageRenderOptions {
|
|
4
3
|
baseCss?: string;
|
|
5
4
|
}
|
|
6
|
-
|
|
7
|
-
export declare function renderViewerPage(input: ViewerCatalog | ViewerBootstrap, options?: ViewerPageRenderOptions): string;
|
|
5
|
+
export declare function renderViewerPage(bootstrap: ViewerBootstrap, options?: ViewerPageRenderOptions): string;
|
|
8
6
|
//# sourceMappingURL=page.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"page.d.ts","sourceRoot":"","sources":["../../src/viewer/page.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"page.d.ts","sourceRoot":"","sources":["../../src/viewer/page.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAEtD,MAAM,WAAW,uBAAuB;IACvC,OAAO,CAAC,EAAE,MAAM,CAAC;CACjB;AA0BD,wBAAgB,gBAAgB,CAC/B,SAAS,EAAE,eAAe,EAC1B,OAAO,GAAE,uBAA4B,GACnC,MAAM,CAeR"}
|
package/dist/viewer/page.js
CHANGED
|
@@ -2,213 +2,37 @@ import { existsSync, readFileSync } from "node:fs";
|
|
|
2
2
|
function embedJson(value) {
|
|
3
3
|
return JSON.stringify(value).replaceAll("<", "\\u003c");
|
|
4
4
|
}
|
|
5
|
-
function
|
|
6
|
-
const
|
|
7
|
-
new URL("./client.js", import.meta.url),
|
|
8
|
-
new URL("../../dist/viewer/client.js", import.meta.url),
|
|
5
|
+
function readBuiltViewer() {
|
|
6
|
+
const paths = [
|
|
7
|
+
new URL("./client-entry.js", import.meta.url),
|
|
8
|
+
new URL("../../dist/viewer/client-entry.js", import.meta.url),
|
|
9
9
|
];
|
|
10
|
-
const
|
|
11
|
-
if (!
|
|
10
|
+
const path = paths.find((candidate) => existsSync(candidate));
|
|
11
|
+
if (!path)
|
|
12
12
|
throw new Error("Viewer client bundle is missing. Run the @post-print/agent-test build first.");
|
|
13
|
-
|
|
14
|
-
return readFileSync(bundle, "utf8").replaceAll("</script", "<\\/script");
|
|
13
|
+
return readFileSync(path, "utf8").replaceAll("</script", "<\\/script");
|
|
15
14
|
}
|
|
16
|
-
function
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
button:disabled { cursor: not-allowed; opacity: .5; }
|
|
24
|
-
button.primary { background: color-mix(in srgb, var(--pass) 18%, var(--panel-2)); border-color: color-mix(in srgb, var(--pass) 40%, var(--border)); }
|
|
25
|
-
button.danger { color: var(--fail); border-color: color-mix(in srgb, var(--fail) 45%, var(--border)); }
|
|
26
|
-
.viewer-shell { display: flex; flex-direction: column; width: 100%; max-width: 96rem; height: 100vh; height: 100dvh; margin: 0 auto; overflow: hidden; padding: .65rem .9rem; }
|
|
27
|
-
.viewer-topbar { display: flex; align-items: end; border-block-end: 1px solid var(--border); padding-block-end: .65rem; }
|
|
28
|
-
.viewer-identity h1 { margin: 0; font-size: 1.35rem; }
|
|
29
|
-
.section-label, .toolbar-label, .task-meta-label { color: var(--muted); font-size: .72rem; font-weight: 700; letter-spacing: .06em; text-transform: uppercase; }
|
|
30
|
-
.run-history { min-width: 10rem; border: 1px solid var(--border); border-radius: 8px; background: var(--panel-2); color: var(--text); padding: .45rem .6rem; }
|
|
31
|
-
.run-banner { color: var(--muted); font-size: .82rem; }
|
|
32
|
-
.viewer-command-row { display: flex; flex-wrap: wrap; align-items: center; gap: .55rem 1rem; padding-block: .55rem; }
|
|
33
|
-
.toolbar-block { display: flex; align-items: center; gap: .65rem; }
|
|
34
|
-
.toolbar-block .toolbar-label { margin: 0; }
|
|
35
|
-
.sidebar-toggle { display: inline-grid; place-items: center; width: 2rem; min-height: 2rem; padding: 0; }
|
|
36
|
-
.sidebar-toggle svg { width: 1rem; height: 1rem; fill: none; stroke: currentColor; stroke-width: 1.8; }
|
|
37
|
-
.host-toggles, .scenario-actions, .host-tablist, .compare-tablist, .compare-definition-tabs { display: flex; flex-wrap: wrap; gap: .4rem; }
|
|
38
|
-
.host-toggles label, .parallel-control, .worker-control, .run-actions { display: inline-flex; align-items: center; gap: .3rem; font-size: .82rem; }
|
|
39
|
-
.worker-control input { min-inline-size: 4.25rem; }
|
|
40
|
-
.viewer-workspace { display: grid; grid-template-columns: minmax(13rem, 17rem) minmax(0, 1fr); flex: 1 1 auto; min-height: 0; gap: .75rem; overflow: hidden; }
|
|
41
|
-
.viewer-workspace[data-sidebar-open="false"] { grid-template-columns: minmax(0, 1fr); }
|
|
42
|
-
.test-navigator { min-height: 0; overflow-y: auto; overscroll-behavior: contain; scrollbar-gutter: stable; border: 1px solid var(--border); border-radius: 10px; background: var(--panel); padding: .6rem; }
|
|
43
|
-
.test-navigator-heading h2, .test-nav-suite h2 { margin: 0; }
|
|
44
|
-
.test-picker-label, .test-picker { display: none; }
|
|
45
|
-
.test-nav-suite { margin-block-start: .7rem; }
|
|
46
|
-
.test-nav-suite > header { display: flex; gap: .5rem; align-items: center; justify-content: space-between; }
|
|
47
|
-
.test-nav-suite h2 { font-size: .72rem; color: var(--muted); }
|
|
48
|
-
.test-navigator .run-suite { min-height: 1.55rem; border-radius: 6px; padding: .18rem .45rem; font-size: .68rem; line-height: 1.1; }
|
|
49
|
-
.test-nav-items { display: grid; gap: .25rem; margin-block-start: .35rem; }
|
|
50
|
-
.test-nav-item { display: grid; grid-template-columns: .55rem 1fr; gap: .4rem; width: 100%; text-align: start; padding: .42rem; }
|
|
51
|
-
.test-nav-item[aria-current="true"] { border-color: color-mix(in srgb, var(--pass) 50%, var(--border)); background: color-mix(in srgb, var(--pass) 12%, var(--panel-2)); }
|
|
52
|
-
.test-nav-status { width: .55rem; height: .55rem; margin-block-start: .18rem; border: 1px solid color-mix(in srgb, currentColor 20%, transparent); border-radius: 50%; background: var(--border); box-shadow: 0 0 0 2px color-mix(in srgb, var(--panel-2) 80%, transparent); }
|
|
53
|
-
.test-nav-item[data-status="passed"] .test-nav-status { background: var(--pass); }
|
|
54
|
-
.test-nav-item[data-status="failed"] .test-nav-status { background: var(--fail); }
|
|
55
|
-
.test-nav-item[data-status="running"] .test-nav-status { background: var(--skip); }
|
|
56
|
-
.test-nav-copy { display: grid; min-width: 0; gap: .08rem; font-size: .82rem; line-height: 1.22; }
|
|
57
|
-
.test-nav-copy small { color: var(--muted); font-size: .68rem; line-height: 1.25; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
|
|
58
|
-
.test-stage { min-width: 0; min-height: 0; overflow-y: auto; overscroll-behavior: contain; }
|
|
59
|
-
.scenario-card { min-width: 0; }
|
|
60
|
-
.scenario-card[hidden] { display: none; }
|
|
61
|
-
.scenario-card { display: grid; gap: .75rem; border: 1px solid var(--border); border-radius: 12px; background: var(--panel); padding: .75rem .85rem; }
|
|
62
|
-
.scenario-focus-header { display: grid; grid-template-columns: minmax(0, 1fr) auto; align-items: start; gap: 1rem; padding-block-end: .85rem; border-block-end: 1px solid var(--border); }
|
|
63
|
-
.scenario-heading-copy { display: grid; gap: .2rem; min-width: 0; }
|
|
64
|
-
.scenario-path { color: var(--muted); font-size: .7rem; font-weight: 700; letter-spacing: .05em; text-transform: uppercase; }
|
|
65
|
-
.scenario-focus-header h2 { font-size: 1.2rem; line-height: 1.25; text-wrap: balance; }
|
|
66
|
-
.scenario-focus-header .scenario-lede { color: var(--muted); font-size: .84rem; line-height: 1.4; }
|
|
67
|
-
.diagnostics { display: grid; grid-template-columns: minmax(0, 1fr); gap: .7rem; margin-bottom: .9rem; }
|
|
68
|
-
.diagnostics > * { min-width: 0; }
|
|
69
|
-
.focus-verdict { display: inline-flex; align-items: center; gap: .4rem; border: 1px solid var(--border); border-radius: 999px; padding: .22rem .55rem; color: var(--muted); font-size: .72rem; font-weight: 650; white-space: nowrap; }
|
|
70
|
-
.focus-verdict > span { width: .45rem; height: .45rem; border-radius: 50%; background: currentColor; }
|
|
71
|
-
.focus-verdict[data-status="passed"] { color: var(--pass); border-color: color-mix(in srgb, var(--pass) 40%, var(--border)); }
|
|
72
|
-
.focus-verdict[data-status="failed"] { color: var(--fail); border-color: color-mix(in srgb, var(--fail) 40%, var(--border)); }
|
|
73
|
-
.focus-verdict[data-status="running"], .focus-verdict[data-status="cancelling"] { color: var(--skip); border-color: color-mix(in srgb, var(--skip) 40%, var(--border)); }
|
|
74
|
-
.scenario-definition { display: grid; gap: 1rem; }
|
|
75
|
-
.scenario-detail { display: grid; gap: .3rem; }
|
|
76
|
-
.scenario-detail h2, .scenario-detail p { margin: 0; }
|
|
77
|
-
.test-intent { display: grid; gap: .35rem; }
|
|
78
|
-
.prompt-preview { color: var(--text); font-size: .92rem; line-height: 1.5; white-space: pre-wrap; overflow-wrap: anywhere; }
|
|
79
|
-
.rubric-line, .arm-note { color: var(--muted); font-size: .8rem; white-space: pre-wrap; }
|
|
80
|
-
.scenario-toolbar { display: flex; flex-wrap: wrap; justify-content: space-between; gap: .75rem 1rem; align-items: end; border-block-start: 1px solid var(--border); padding-block-start: .85rem; }
|
|
81
|
-
.host-runs { display: flex; align-items: center; gap: .55rem; }
|
|
82
|
-
.host-runs-label { color: var(--muted); font-size: .7rem; font-weight: 700; letter-spacing: .05em; text-transform: uppercase; }
|
|
83
|
-
.host-tablist { gap: .3rem; }
|
|
84
|
-
.host-tab { min-height: 0; padding: .22rem .42rem; font-size: .72rem; line-height: 1.15; }
|
|
85
|
-
.cell-status { margin-inline-start: .1rem; color: var(--muted); font-size: .62rem; font-weight: 500; text-transform: capitalize; }
|
|
86
|
-
.host-tab[aria-selected="true"], .compare-tab[aria-selected="true"], .compare-definition-tab[aria-selected="true"] { border-color: color-mix(in srgb, var(--pass) 50%, var(--border)); background: color-mix(in srgb, var(--pass) 14%, var(--panel-2)); }
|
|
87
|
-
.task-definition { display: grid; gap: .8rem; border: 1px solid var(--border); border-radius: 12px; padding: .9rem; }
|
|
88
|
-
.task-definition-header { display: flex; justify-content: space-between; gap: 1rem; align-items: baseline; }
|
|
89
|
-
.task-definition-header h3, .criteria > h3 { margin: 0; }
|
|
90
|
-
.task-description { font-size: .96rem; }
|
|
91
|
-
.task-prompt { margin: 0; padding: .75rem; border-radius: 8px; background: var(--panel-2); white-space: pre-wrap; overflow-wrap: anywhere; }
|
|
92
|
-
.starting-context { border-block-start: 1px solid var(--border); padding-block: .55rem .8rem; }
|
|
93
|
-
.criteria-panel { border-block-start: 1px solid var(--border); padding-block: .55rem .8rem; }
|
|
94
|
-
.criteria-panel > summary { cursor: pointer; padding-block: .1rem .55rem; font-weight: 650; }
|
|
95
|
-
.criteria-panel[open] > summary { margin-block-end: .35rem; }
|
|
96
|
-
.criteria-summary { margin-inline-start: .8rem; color: var(--muted); font-size: .75rem; font-weight: 500; }
|
|
97
|
-
.criteria-empty { color: var(--muted); font-size: .84rem; }
|
|
98
|
-
.criteria { display: grid; gap: .75rem; }
|
|
99
|
-
.criterion-groups { display: flex; flex-direction: row; align-items: stretch; gap: .45rem; }
|
|
100
|
-
.criterion-groups > .criterion-group { flex: 1 1 0; min-width: 0; }
|
|
101
|
-
.criterion-group { border: 1px solid var(--border); border-radius: 10px; padding: .7rem; background: var(--panel-2); }
|
|
102
|
-
.criterion-group h4 { margin: 0 0 .45rem; }
|
|
103
|
-
.criterion-group p { color: var(--muted); font-size: .82rem; line-height: 1.45; }
|
|
104
|
-
.criterion-list { margin: 0; padding-inline-start: 1.2rem; font-size: .86rem; line-height: 1.45; }
|
|
105
|
-
.source-folder-link { color: var(--text); overflow-wrap: anywhere; text-decoration-color: color-mix(in srgb, var(--text) 45%, transparent); text-underline-offset: .18em; }
|
|
106
|
-
.source-folder-link:hover { text-decoration-color: currentColor; }
|
|
107
|
-
.criterion-group p + .criterion-list { margin-block-start: .5rem; }
|
|
108
|
-
.criterion-list li + li { margin-block-start: .38rem; }
|
|
109
|
-
.comparison-task, .comparison-criteria, .compare-definition-tabbed { display: grid; gap: .4rem; }
|
|
110
|
-
.comparison-intro { color: var(--muted); font-size: .84rem; }
|
|
111
|
-
.comparison-criteria .criterion-groups { margin-block-start: .2rem; }
|
|
112
|
-
.compare-definition-tabbed { gap: .55rem; }
|
|
113
|
-
.compare-arm-definition { display: grid; gap: .75rem; border-block-start: 1px solid var(--border); padding-block-start: .8rem; }
|
|
114
|
-
.compare-arm-header { display: grid; gap: .2rem; }
|
|
115
|
-
.compare-arm-header h3 { color: var(--text); font-size: .95rem; }
|
|
116
|
-
.compare-arm-description { color: var(--muted); font-size: .82rem; line-height: 1.4; }
|
|
117
|
-
.comparison-definition { display: grid; gap: .75rem; border: 1px solid color-mix(in srgb, var(--skip) 35%, var(--border)); border-radius: 12px; padding: .85rem; }
|
|
118
|
-
.compare-definition-arms, .compare-arms, .compare-definition-arm, .compare-arm { min-width: 0; }
|
|
119
|
-
.compare-tabs .compare-arm { border-block-start-width: 1px; border-block-start-color: var(--border); }
|
|
120
|
-
.scenario-live { display: grid; gap: .8rem; }
|
|
121
|
-
.live-cell { border: 1px solid var(--border); border-radius: 12px; background: var(--panel-2); padding: .8rem; }
|
|
122
|
-
.live-status { max-height: 9rem; overflow: auto; color: var(--muted); font: .75rem ui-monospace, monospace; }
|
|
123
|
-
.chat-running-row[hidden] { display: none; }
|
|
124
|
-
.chat-running { display: inline-flex; align-items: center; gap: .45rem; color: var(--muted); font-size: .85rem; padding: .2rem .1rem; }
|
|
125
|
-
.chat-progress { display: inline-flex; gap: .18rem; }
|
|
126
|
-
.chat-progress span { width: .32rem; height: .32rem; border-radius: 999px; background: var(--skip); animation: chat-progress 1s ease-in-out infinite; }
|
|
127
|
-
.chat-progress span:nth-child(2) { animation-delay: .15s; }
|
|
128
|
-
.chat-progress span:nth-child(3) { animation-delay: .3s; }
|
|
129
|
-
@keyframes chat-progress { 0%, 80%, 100% { opacity: .2; } 40% { opacity: 1; } }
|
|
130
|
-
.bubble.is-streaming .bubble-text::after { content: "▍"; margin-inline-start: .12rem; color: var(--pass); animation: chat-caret 1s step-end infinite; }
|
|
131
|
-
@keyframes chat-caret { 50% { opacity: 0; } }
|
|
132
|
-
@media (prefers-reduced-motion: reduce) {
|
|
133
|
-
.chat-progress span, .bubble.is-streaming .bubble-text::after { animation: none; }
|
|
134
|
-
.run-progress-segment { transition: none; }
|
|
135
|
-
}
|
|
136
|
-
.run-progress { border: 1px solid var(--border); border-radius: 10px; padding: .7rem; margin-bottom: .8rem; }
|
|
137
|
-
.run-progress-title { margin: 0 0 .4rem; }
|
|
138
|
-
.run-progress-track { display: flex; height: .5rem; border-radius: 999px; background: var(--panel-2); overflow: hidden; }
|
|
139
|
-
.run-progress-segment { display: block; height: 100%; transition: width .2s ease; }
|
|
140
|
-
.run-progress-passed { background: var(--pass); }
|
|
141
|
-
.run-progress-failed { background: var(--fail); }
|
|
142
|
-
.run-progress-skipped { background: var(--skip); }
|
|
143
|
-
.run-progress-counts { display: flex; flex-wrap: wrap; gap: 1rem; margin-top: .4rem; font-size: .78rem; color: var(--muted); }
|
|
144
|
-
.progress-passed strong { color: var(--pass); }
|
|
145
|
-
.progress-failed strong { color: var(--fail); }
|
|
146
|
-
.progress-skipped strong { color: var(--skip); }
|
|
147
|
-
.failure-panel { border-color: color-mix(in oklch, var(--fail) 42%, var(--border)); background: color-mix(in oklch, var(--fail) 5%, var(--panel-2)); }
|
|
148
|
-
.failure-section-head { display: flex; align-items: start; justify-content: space-between; gap: .75rem; padding-block-end: .65rem; border-block-end: 1px solid color-mix(in oklch, var(--fail) 22%, var(--border)); }
|
|
149
|
-
.failure-section-head h3 { color: var(--text); font-size: .86rem; }
|
|
150
|
-
.failure-section-head p { margin-block-start: .12rem; color: var(--muted); font-size: .72rem; }
|
|
151
|
-
.copy-error { min-height: 0; flex: none; padding: .28rem .48rem; font-size: .7rem; }
|
|
152
|
-
.failures { display: grid; gap: .65rem; margin-block-start: .7rem; }
|
|
153
|
-
.failures .failure-item { display: grid; gap: .32rem; padding: .62rem .68rem; border: 1px solid color-mix(in oklch, var(--fail) 24%, var(--border)); border-inline-start: 3px solid var(--fail); border-radius: 8px; background: color-mix(in oklch, var(--fail) 5%, var(--panel)); }
|
|
154
|
-
.failure-label { color: var(--fail); font-size: .68rem; font-weight: 750; letter-spacing: .055em; text-transform: uppercase; }
|
|
155
|
-
.failure-message { margin: 0; padding: 0; border: 0; background: transparent; color: var(--text); font: 650 .84rem/1.4 "Helvetica Neue", Helvetica, Arial, sans-serif; white-space: pre-wrap; overflow-wrap: anywhere; }
|
|
156
|
-
.failure-evidence-details { margin-block-start: .12rem; border-block-start: 1px solid var(--border); }
|
|
157
|
-
.failure-evidence-details > summary { cursor: pointer; padding-block: .42rem .1rem; color: var(--muted); font-size: .72rem; font-weight: 650; }
|
|
158
|
-
.failure-evidence { max-height: 11rem; margin: .4rem 0 0; padding: .5rem .55rem; overflow: auto; border: 1px dashed var(--border); border-radius: 6px; background: color-mix(in oklch, black 28%, var(--panel)); color: var(--muted); font: .7rem/1.4 ui-monospace, SFMono-Regular, Menlo, monospace; white-space: pre-wrap; overflow-wrap: anywhere; }
|
|
159
|
-
.story-criteria { padding-block: .55rem .8rem; }
|
|
160
|
-
.story-criteria > h3 { margin: 0 0 .55rem; }
|
|
161
|
-
.judge-responses { display: grid; gap: .7rem; padding-block: .25rem .8rem; }
|
|
162
|
-
.judge-responses-inline { border: 0; background: transparent; padding: .75rem 0 0 1rem; }
|
|
163
|
-
.judge-response { display: grid; gap: .65rem; width: 100%; border: 1px solid color-mix(in oklch, var(--arm-a) 32%, var(--border)); border-radius: 12px; background: color-mix(in oklch, var(--arm-a) 7%, var(--panel)); padding: .9rem 1rem; }
|
|
164
|
-
.judge-response-inline { gap: .4rem; border: 0; border-radius: 0; background: transparent; padding: 0; color: color-mix(in oklch, var(--arm-a) 72%, var(--text)); }
|
|
165
|
-
.judge-answer-label { margin: 0; color: var(--muted); font-size: .7rem; font-weight: 700; letter-spacing: .055em; text-transform: uppercase; }
|
|
166
|
-
.judge-response-inline .judge-rationale, .judge-response-inline .judge-evidence, .judge-response-inline .judge-evidence q { color: inherit; }
|
|
167
|
-
.judge-response-head { display: flex; align-items: start; justify-content: space-between; gap: .75rem; }
|
|
168
|
-
.judge-response-head h3 { margin: 0; font-size: .95rem; }
|
|
169
|
-
.judge-verdict-badge { flex: none; padding: .15rem .38rem; border: 1px solid currentColor; border-radius: 999px; font-size: .62rem; font-weight: 800; letter-spacing: .055em; text-transform: uppercase; }
|
|
170
|
-
.judge-response.verdict-pass .judge-verdict-badge { color: var(--pass); }
|
|
171
|
-
.judge-response.verdict-fail .judge-verdict-badge { color: var(--fail); }
|
|
172
|
-
.judge-response.verdict-pending .judge-verdict-badge { color: var(--skip); }
|
|
173
|
-
.judge-rationale { margin: 0; color: var(--text); font-size: .95rem; line-height: 1.55; white-space: pre-wrap; }
|
|
174
|
-
.judge-evidence { display: grid; gap: .35rem; margin: 0; padding-inline-start: 1.2rem; color: var(--muted); font-size: .85rem; line-height: 1.5; }
|
|
175
|
-
.judge-evidence q { color: var(--text); }
|
|
176
|
-
.trace-command-list { display: grid; gap: .45rem; margin-block-start: .7rem; padding-block-start: .65rem; border-block-start: 1px solid var(--border); }
|
|
177
|
-
.trace-command-list h4 { margin: 0; font-size: .8rem; }
|
|
178
|
-
.trace-details .trace-summary-title { color: var(--text); font-weight: 700; }
|
|
179
|
-
.trace-details .trace-summary-meta { margin-inline-start: auto; color: var(--muted); font-weight: 400; }
|
|
180
|
-
.viewer-shell .chat { max-inline-size: none; }
|
|
181
|
-
@media (max-width: 760px) {
|
|
182
|
-
.viewer-shell { padding: .75rem; }
|
|
183
|
-
.viewer-topbar { align-items: start; }
|
|
184
|
-
.run-banner { text-align: start; }
|
|
185
|
-
.viewer-workspace { grid-template-columns: 1fr; }
|
|
186
|
-
.test-navigator { overflow: visible; }
|
|
187
|
-
.test-picker-label { display: block; margin-top: .7rem; }
|
|
188
|
-
.test-picker { display: block; width: 100%; margin-top: .3rem; }
|
|
189
|
-
.test-tree { display: none; }
|
|
190
|
-
.criterion-groups { flex-direction: column; }
|
|
191
|
-
.scenario-focus-header { grid-template-columns: 1fr; gap: .55rem; }
|
|
192
|
-
.focus-verdict { justify-self: start; }
|
|
193
|
-
}
|
|
194
|
-
`;
|
|
15
|
+
function readStylex() {
|
|
16
|
+
const paths = [
|
|
17
|
+
new URL("./stylex.css", import.meta.url),
|
|
18
|
+
new URL("../../dist/viewer/stylex.css", import.meta.url),
|
|
19
|
+
];
|
|
20
|
+
const path = paths.find((candidate) => existsSync(candidate));
|
|
21
|
+
return path ? readFileSync(path, "utf8").replaceAll("</style", "<\\/style") : "";
|
|
195
22
|
}
|
|
196
|
-
|
|
197
|
-
export function renderViewerPage(input, options = {}) {
|
|
198
|
-
const bootstrap = "catalog" in input ? input : { catalog: input, runs: [], capabilities: { canRun: true } };
|
|
23
|
+
export function renderViewerPage(bootstrap, options = {}) {
|
|
199
24
|
return `<!DOCTYPE html>
|
|
200
25
|
<html lang="en">
|
|
201
26
|
<head>
|
|
202
27
|
<meta charset="utf-8">
|
|
203
28
|
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
204
|
-
<title>agent-test
|
|
205
|
-
<style>${options.baseCss ?? ""}${
|
|
29
|
+
<title>agent-test viewer</title>
|
|
30
|
+
<style>${options.baseCss ?? ""}${readStylex()}</style>
|
|
206
31
|
</head>
|
|
207
32
|
<body>
|
|
208
33
|
<div id="viewer-root"></div>
|
|
209
|
-
<script type="application/json" id="catalog-data">${embedJson(bootstrap.catalog)}</script>
|
|
210
34
|
<script type="application/json" id="bootstrap-data">${embedJson(bootstrap)}</script>
|
|
211
|
-
<script>${
|
|
35
|
+
<script>${readBuiltViewer()}</script>
|
|
212
36
|
</body>
|
|
213
37
|
</html>`;
|
|
214
38
|
}
|
package/dist/viewer/page.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"page.js","sourceRoot":"","sources":["../../src/viewer/page.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"page.js","sourceRoot":"","sources":["../../src/viewer/page.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAOnD,SAAS,SAAS,CAAC,KAAc;IAChC,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,UAAU,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;AACzD,CAAC;AAED,SAAS,eAAe;IACvB,MAAM,KAAK,GAAG;QACb,IAAI,GAAG,CAAC,mBAAmB,EAAE,OAAO,IAAI,CAAC,GAAG,CAAC;QAC7C,IAAI,GAAG,CAAC,mCAAmC,EAAE,OAAO,IAAI,CAAC,GAAG,CAAC;KAC7D,CAAC;IACF,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC;IAC9D,IAAI,CAAC,IAAI;QACR,MAAM,IAAI,KAAK,CAAC,8EAA8E,CAAC,CAAC;IACjG,OAAO,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,UAAU,CAAC,UAAU,EAAE,YAAY,CAAC,CAAC;AACxE,CAAC;AAED,SAAS,UAAU;IAClB,MAAM,KAAK,GAAG;QACb,IAAI,GAAG,CAAC,cAAc,EAAE,OAAO,IAAI,CAAC,GAAG,CAAC;QACxC,IAAI,GAAG,CAAC,8BAA8B,EAAE,OAAO,IAAI,CAAC,GAAG,CAAC;KACxD,CAAC;IACF,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC;IAC9D,OAAO,IAAI,CAAC,CAAC,CAAC,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,UAAU,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;AAClF,CAAC;AAED,MAAM,UAAU,gBAAgB,CAC/B,SAA0B,EAC1B,OAAO,GAA4B,EAAE;IAErC,OAAO;;;;;;WAMG,OAAO,CAAC,OAAO,IAAI,EAAE,GAAG,UAAU,EAAE;;;;wDAIS,SAAS,CAAC,SAAS,CAAC;YAChE,eAAe,EAAE;;QAErB,CAAC;AACT,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export declare function stripAnsi(value: string): string;
|
|
2
|
+
export declare function conversationPlaceholder(status: string): string;
|
|
3
|
+
export declare function preferredExecutionId(executions: Array<{
|
|
4
|
+
id: string;
|
|
5
|
+
status: string;
|
|
6
|
+
}>): string | undefined;
|
|
7
|
+
export type AssertionComparison = {
|
|
8
|
+
expected: string;
|
|
9
|
+
received: string;
|
|
10
|
+
};
|
|
11
|
+
export declare function assertionComparison(value: string): AssertionComparison | undefined;
|
|
12
|
+
//# sourceMappingURL=presentation.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"presentation.d.ts","sourceRoot":"","sources":["../../src/viewer/presentation.ts"],"names":[],"mappings":"AAGA,wBAAgB,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAe/C;AAED,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAI9D;AAED,wBAAgB,oBAAoB,CACnC,UAAU,EAAE,KAAK,CAAC;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC,GAC/C,MAAM,GAAG,SAAS,CAEpB;AAED,MAAM,MAAM,mBAAmB,GAAG;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,CAAC;AAEzE,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,MAAM,GAAG,mBAAmB,GAAG,SAAS,CAgBlF"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
const EXPECTED_DIFF_HEADER = /^-\s+Expected\s+-\s+\d+\s*$/;
|
|
2
|
+
const RECEIVED_DIFF_HEADER = /^\+\s+Received\s+\+\s+\d+\s*$/;
|
|
3
|
+
export function stripAnsi(value) {
|
|
4
|
+
let output = "";
|
|
5
|
+
for (let index = 0; index < value.length; index++) {
|
|
6
|
+
if (value.charCodeAt(index) !== 27 || value[index + 1] !== "[") {
|
|
7
|
+
output += value[index];
|
|
8
|
+
continue;
|
|
9
|
+
}
|
|
10
|
+
index += 2;
|
|
11
|
+
while (index < value.length) {
|
|
12
|
+
const code = value.charCodeAt(index);
|
|
13
|
+
if (code >= 64 && code <= 126)
|
|
14
|
+
break;
|
|
15
|
+
index++;
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
return output;
|
|
19
|
+
}
|
|
20
|
+
export function conversationPlaceholder(status) {
|
|
21
|
+
return status === "running"
|
|
22
|
+
? "Waiting for the first agent event…"
|
|
23
|
+
: "No conversation was captured.";
|
|
24
|
+
}
|
|
25
|
+
export function preferredExecutionId(executions) {
|
|
26
|
+
return executions.find((execution) => execution.status === "running")?.id ?? executions[0]?.id;
|
|
27
|
+
}
|
|
28
|
+
export function assertionComparison(value) {
|
|
29
|
+
const lines = stripAnsi(value).split("\n");
|
|
30
|
+
const expectedHeader = lines.findIndex((line) => EXPECTED_DIFF_HEADER.test(line));
|
|
31
|
+
const receivedHeader = lines.findIndex((line) => RECEIVED_DIFF_HEADER.test(line));
|
|
32
|
+
if (expectedHeader < 0 || receivedHeader !== expectedHeader + 1)
|
|
33
|
+
return undefined;
|
|
34
|
+
const expected = [];
|
|
35
|
+
const received = [];
|
|
36
|
+
for (const line of lines.slice(receivedHeader + 1)) {
|
|
37
|
+
if (line.startsWith("- "))
|
|
38
|
+
expected.push(line.slice(2));
|
|
39
|
+
if (line.startsWith("+ "))
|
|
40
|
+
received.push(line.slice(2));
|
|
41
|
+
if (line.startsWith(" ")) {
|
|
42
|
+
expected.push(line.slice(2));
|
|
43
|
+
received.push(line.slice(2));
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
return { expected: expected.join("\n"), received: received.join("\n") };
|
|
47
|
+
}
|
|
48
|
+
//# sourceMappingURL=presentation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"presentation.js","sourceRoot":"","sources":["../../src/viewer/presentation.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
export { VIEWER_PROTOCOL_VERSION, type ViewerClientMessage, viewerClientMessage, } from "./generated-contracts.js";
|
|
2
|
+
import { type VIEWER_PROTOCOL_VERSION, type ViewerClientMessage } from "./generated-contracts.js";
|
|
3
|
+
export type ViewerServerMessage = {
|
|
4
|
+
type: "ready";
|
|
5
|
+
protocol: typeof VIEWER_PROTOCOL_VERSION;
|
|
6
|
+
} | {
|
|
7
|
+
type: "catalog.snapshot";
|
|
8
|
+
catalog: unknown;
|
|
9
|
+
} | {
|
|
10
|
+
type: "executions.snapshot";
|
|
11
|
+
executions: unknown[];
|
|
12
|
+
} | {
|
|
13
|
+
type: "execution.snapshot";
|
|
14
|
+
execution: unknown;
|
|
15
|
+
} | {
|
|
16
|
+
type: "error";
|
|
17
|
+
code: "invalid_message" | "incompatible_protocol";
|
|
18
|
+
message: string;
|
|
19
|
+
};
|
|
20
|
+
export declare function parseViewerClientMessage(input: unknown): ViewerClientMessage;
|
|
21
|
+
//# sourceMappingURL=protocol.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"protocol.d.ts","sourceRoot":"","sources":["../../src/viewer/protocol.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,uBAAuB,EACvB,KAAK,mBAAmB,EACxB,mBAAmB,GACnB,MAAM,0BAA0B,CAAC;AAElC,OAAO,EACN,KAAK,uBAAuB,EAC5B,KAAK,mBAAmB,EAExB,MAAM,0BAA0B,CAAC;AAElC,MAAM,MAAM,mBAAmB,GAC5B;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,QAAQ,EAAE,OAAO,uBAAuB,CAAA;CAAE,GAC3D;IAAE,IAAI,EAAE,kBAAkB,CAAC;IAAC,OAAO,EAAE,OAAO,CAAA;CAAE,GAC9C;IAAE,IAAI,EAAE,qBAAqB,CAAC;IAAC,UAAU,EAAE,OAAO,EAAE,CAAA;CAAE,GACtD;IAAE,IAAI,EAAE,oBAAoB,CAAC;IAAC,SAAS,EAAE,OAAO,CAAA;CAAE,GAClD;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,IAAI,EAAE,iBAAiB,GAAG,uBAAuB,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC;AAEzF,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,OAAO,GAAG,mBAAmB,CAE5E"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export { VIEWER_PROTOCOL_VERSION, viewerClientMessage, } from "./generated-contracts.js";
|
|
2
|
+
import { viewerClientMessage, } from "./generated-contracts.js";
|
|
3
|
+
export function parseViewerClientMessage(input) {
|
|
4
|
+
return viewerClientMessage.parse(input);
|
|
5
|
+
}
|
|
6
|
+
//# sourceMappingURL=protocol.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"protocol.js","sourceRoot":"","sources":["../../src/viewer/protocol.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,uBAAuB,EAEvB,mBAAmB,GACnB,MAAM,0BAA0B,CAAC;AAElC,OAAO,EAGN,mBAAmB,GACnB,MAAM,0BAA0B,CAAC;AASlC,MAAM,UAAU,wBAAwB,CAAC,KAAc;IACtD,OAAO,mBAAmB,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;AACzC,CAAC"}
|
package/dist/viewer/server.d.ts
CHANGED
|
@@ -1,18 +1,13 @@
|
|
|
1
|
-
import type
|
|
2
|
-
import {
|
|
3
|
-
import { type ViewerRunner } from "./run-controller.js";
|
|
1
|
+
import { type StartExecutionOptions, type StartedExecution } from "../sdk/execution-runner.js";
|
|
2
|
+
import type { TestCatalog } from "./test-catalog.js";
|
|
4
3
|
export interface ListenViewerOptions {
|
|
5
|
-
cwd: string;
|
|
6
4
|
suitesDir: string;
|
|
7
|
-
|
|
5
|
+
testCatalog: TestCatalog;
|
|
6
|
+
refreshTestCatalog?: () => Promise<TestCatalog>;
|
|
8
7
|
port?: number;
|
|
9
|
-
runner: ViewerRunner;
|
|
10
|
-
/** Parallel live agents. Default 4. */
|
|
11
|
-
workers?: number;
|
|
12
|
-
initialRuns?: ViewerRunRecord[];
|
|
13
|
-
selectedRunId?: string;
|
|
14
8
|
idleMs?: number;
|
|
15
9
|
onClose?: () => void | Promise<void>;
|
|
10
|
+
startExecution?: (options: StartExecutionOptions) => Promise<StartedExecution>;
|
|
16
11
|
}
|
|
17
12
|
export interface ViewerServerHandle {
|
|
18
13
|
url: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/viewer/server.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/viewer/server.ts"],"names":[],"mappings":"AAIA,OAAO,EACN,KAAK,qBAAqB,EAC1B,KAAK,gBAAgB,EAErB,MAAM,4BAA4B,CAAC;AAWpC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAUrD,MAAM,WAAW,mBAAmB;IACnC,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,WAAW,CAAC;IACzB,kBAAkB,CAAC,EAAE,MAAM,OAAO,CAAC,WAAW,CAAC,CAAC;IAChD,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACrC,cAAc,CAAC,EAAE,CAAC,OAAO,EAAE,qBAAqB,KAAK,OAAO,CAAC,gBAAgB,CAAC,CAAC;CAC/E;AACD,MAAM,WAAW,kBAAkB;IAClC,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CAC3B;AAgQD,wBAAsB,YAAY,CAAC,OAAO,EAAE,mBAAmB,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAE5F"}
|