@vercel/agent-eval-playground 0.1.2 → 0.1.3
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/.next/BUILD_ID +1 -1
- package/.next/app-path-routes-manifest.json +1 -0
- package/.next/build-manifest.json +2 -2
- package/.next/cache/.previewinfo +1 -1
- package/.next/cache/.rscinfo +1 -1
- package/.next/cache/.tsbuildinfo +1 -1
- package/.next/cache/config.json +3 -3
- package/.next/fallback-build-manifest.json +2 -2
- package/.next/prerender-manifest.json +3 -3
- package/.next/routes-manifest.json +8 -0
- package/.next/server/app/_global-error.html +2 -2
- package/.next/server/app/_global-error.rsc +1 -1
- package/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
- package/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
- package/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
- package/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
- package/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
- package/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/.next/server/app/_not-found.html +1 -1
- package/.next/server/app/_not-found.rsc +2 -2
- package/.next/server/app/_not-found.segments/_full.segment.rsc +2 -2
- package/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
- package/.next/server/app/_not-found.segments/_index.segment.rsc +2 -2
- package/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
- package/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
- package/.next/server/app/_not-found.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/compare/page.js.nft.json +1 -1
- package/.next/server/app/compare/page_client-reference-manifest.js +1 -1
- package/.next/server/app/evals/[name]/page.js.nft.json +1 -1
- package/.next/server/app/evals/[name]/page_client-reference-manifest.js +1 -1
- package/.next/server/app/evals/page.js.nft.json +1 -1
- package/.next/server/app/evals/page_client-reference-manifest.js +1 -1
- package/.next/server/app/experiments/[name]/[timestamp]/page.js.nft.json +1 -1
- package/.next/server/app/experiments/[name]/[timestamp]/page_client-reference-manifest.js +1 -1
- package/.next/server/app/experiments/[name]/page/app-paths-manifest.json +3 -0
- package/.next/server/app/experiments/[name]/page/build-manifest.json +17 -0
- package/.next/server/app/experiments/[name]/page/next-font-manifest.json +12 -0
- package/.next/server/app/experiments/[name]/page/react-loadable-manifest.json +1 -0
- package/.next/server/app/experiments/[name]/page/server-reference-manifest.json +4 -0
- package/.next/server/app/experiments/[name]/page.js +17 -0
- package/.next/server/app/experiments/[name]/page.js.map +5 -0
- package/.next/server/app/experiments/[name]/page.js.nft.json +1 -0
- package/.next/server/app/experiments/[name]/page_client-reference-manifest.js +2 -0
- package/.next/server/app/experiments/page.js.nft.json +1 -1
- package/.next/server/app/experiments/page_client-reference-manifest.js +1 -1
- package/.next/server/app/page.js.nft.json +1 -1
- package/.next/server/app/page_client-reference-manifest.js +1 -1
- package/.next/server/app/transcript/[experiment]/[timestamp]/[evalName]/[run]/page.js.nft.json +1 -1
- package/.next/server/app/transcript/[experiment]/[timestamp]/[evalName]/[run]/page_client-reference-manifest.js +1 -1
- package/.next/server/app-paths-manifest.json +1 -0
- package/.next/server/chunks/ssr/730ea_playground__next-internal_server_app_experiments_[name]_page_actions_9b119c24.js +3 -0
- package/.next/server/chunks/ssr/730ea_playground__next-internal_server_app_experiments_[name]_page_actions_9b119c24.js.map +1 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__3702960d._.js +1 -1
- package/.next/server/chunks/ssr/[root-of-the-server]__3702960d._.js.map +1 -1
- package/.next/server/chunks/ssr/[root-of-the-server]__4228b9c3._.js +1 -1
- package/.next/server/chunks/ssr/[root-of-the-server]__4228b9c3._.js.map +1 -1
- package/.next/server/chunks/ssr/[root-of-the-server]__a216b589._.js +1 -1
- package/.next/server/chunks/ssr/[root-of-the-server]__a216b589._.js.map +1 -1
- package/.next/server/chunks/ssr/[root-of-the-server]__ac2a456c._.js +1 -1
- package/.next/server/chunks/ssr/[root-of-the-server]__ac2a456c._.js.map +1 -1
- package/.next/server/chunks/ssr/[root-of-the-server]__aca11d57._.js +3 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__aca11d57._.js.map +1 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__b8fc4094._.js +1 -1
- package/.next/server/chunks/ssr/[root-of-the-server]__b8fc4094._.js.map +1 -1
- package/.next/server/chunks/ssr/[root-of-the-server]__c73d60f7._.js +1 -1
- package/.next/server/chunks/ssr/[root-of-the-server]__c73d60f7._.js.map +1 -1
- package/.next/server/chunks/ssr/[root-of-the-server]__f286e9a8._.js +1 -1
- package/.next/server/chunks/ssr/[root-of-the-server]__f286e9a8._.js.map +1 -1
- package/.next/server/chunks/ssr/_fa6de7c6._.js +4 -0
- package/.next/server/chunks/ssr/_fa6de7c6._.js.map +1 -0
- package/.next/server/chunks/ssr/packages_playground_components_TranscriptViewer_tsx_ba8ff423._.js +1 -1
- package/.next/server/chunks/ssr/packages_playground_components_TranscriptViewer_tsx_ba8ff423._.js.map +1 -1
- package/.next/server/next-font-manifest.js +1 -1
- package/.next/server/next-font-manifest.json +5 -0
- package/.next/server/pages/404.html +1 -1
- package/.next/server/pages/500.html +2 -2
- package/.next/server/server-reference-manifest.js +1 -1
- package/.next/server/server-reference-manifest.json +1 -1
- package/.next/static/chunks/225815167619f532.css +4 -0
- package/.next/static/chunks/{419a92b5c17e94a8.js → 405f69d0b8bdad66.js} +1 -1
- package/.next/trace +1 -1
- package/.next/trace-build +1 -1
- package/.next/types/routes.d.ts +2 -1
- package/.next/types/validator.ts +9 -0
- package/app/experiments/[name]/page.tsx +124 -0
- package/components/ExperimentList.tsx +34 -14
- package/components/O11ySummary.tsx +14 -9
- package/package.json +1 -1
- package/.next/static/chunks/b7a73603aa202938.css +0 -4
- /package/.next/static/{e-_lBXo-NK4NsMjf8KVfw → 7WvStP5_xMiGBpz094_IB}/_buildManifest.js +0 -0
- /package/.next/static/{e-_lBXo-NK4NsMjf8KVfw → 7WvStP5_xMiGBpz094_IB}/_clientMiddlewareManifest.json +0 -0
- /package/.next/static/{e-_lBXo-NK4NsMjf8KVfw → 7WvStP5_xMiGBpz094_IB}/_ssgManifest.js +0 -0
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
globalThis.__RSC_MANIFEST = globalThis.__RSC_MANIFEST || {};
|
|
2
|
-
globalThis.__RSC_MANIFEST["/page"] = {"moduleLoading":{"prefix":"","crossOrigin":null},"clientModules":{"[project]/node_modules/next/dist/esm/client/components/layout-router.js <module evaluation>":{"id":39756,"name":"*","chunks":["/_next/static/chunks/ff1a16fafef87110.js","/_next/static/chunks/d2be314c3ece3fbe.js"],"async":false},"[project]/node_modules/next/dist/esm/client/components/layout-router.js":{"id":39756,"name":"*","chunks":["/_next/static/chunks/ff1a16fafef87110.js","/_next/static/chunks/d2be314c3ece3fbe.js"],"async":false},"[project]/node_modules/next/dist/esm/client/components/render-from-template-context.js <module evaluation>":{"id":37457,"name":"*","chunks":["/_next/static/chunks/ff1a16fafef87110.js","/_next/static/chunks/d2be314c3ece3fbe.js"],"async":false},"[project]/node_modules/next/dist/esm/client/components/render-from-template-context.js":{"id":37457,"name":"*","chunks":["/_next/static/chunks/ff1a16fafef87110.js","/_next/static/chunks/d2be314c3ece3fbe.js"],"async":false},"[project]/node_modules/next/dist/esm/client/components/client-page.js <module evaluation>":{"id":47257,"name":"*","chunks":["/_next/static/chunks/ff1a16fafef87110.js","/_next/static/chunks/d2be314c3ece3fbe.js"],"async":false},"[project]/node_modules/next/dist/esm/client/components/client-page.js":{"id":47257,"name":"*","chunks":["/_next/static/chunks/ff1a16fafef87110.js","/_next/static/chunks/d2be314c3ece3fbe.js"],"async":false},"[project]/node_modules/next/dist/esm/client/components/client-segment.js <module evaluation>":{"id":92825,"name":"*","chunks":["/_next/static/chunks/ff1a16fafef87110.js","/_next/static/chunks/d2be314c3ece3fbe.js"],"async":false},"[project]/node_modules/next/dist/esm/client/components/client-segment.js":{"id":92825,"name":"*","chunks":["/_next/static/chunks/ff1a16fafef87110.js","/_next/static/chunks/d2be314c3ece3fbe.js"],"async":false},"[project]/node_modules/next/dist/esm/client/components/http-access-fallback/error-boundary.js <module evaluation>":{"id":68017,"name":"*","chunks":["/_next/static/chunks/ff1a16fafef87110.js","/_next/static/chunks/d2be314c3ece3fbe.js"],"async":false},"[project]/node_modules/next/dist/esm/client/components/http-access-fallback/error-boundary.js":{"id":68017,"name":"*","chunks":["/_next/static/chunks/ff1a16fafef87110.js","/_next/static/chunks/d2be314c3ece3fbe.js"],"async":false},"[project]/node_modules/next/dist/esm/lib/metadata/generate/icon-mark.js <module evaluation>":{"id":27201,"name":"*","chunks":["/_next/static/chunks/ff1a16fafef87110.js","/_next/static/chunks/d2be314c3ece3fbe.js"],"async":false},"[project]/node_modules/next/dist/esm/lib/metadata/generate/icon-mark.js":{"id":27201,"name":"*","chunks":["/_next/static/chunks/ff1a16fafef87110.js","/_next/static/chunks/d2be314c3ece3fbe.js"],"async":false},"[project]/node_modules/next/dist/esm/lib/framework/boundary-components.js <module evaluation>":{"id":97367,"name":"*","chunks":["/_next/static/chunks/ff1a16fafef87110.js","/_next/static/chunks/d2be314c3ece3fbe.js"],"async":false},"[project]/node_modules/next/dist/esm/lib/framework/boundary-components.js":{"id":97367,"name":"*","chunks":["/_next/static/chunks/ff1a16fafef87110.js","/_next/static/chunks/d2be314c3ece3fbe.js"],"async":false},"[project]/node_modules/next/dist/client/components/builtin/global-error.js <module evaluation>":{"id":68027,"name":"*","chunks":["/_next/static/chunks/ff1a16fafef87110.js","/_next/static/chunks/d2be314c3ece3fbe.js"],"async":false},"[project]/node_modules/next/dist/client/components/builtin/global-error.js":{"id":68027,"name":"*","chunks":["/_next/static/chunks/ff1a16fafef87110.js","/_next/static/chunks/d2be314c3ece3fbe.js"],"async":false},"[project]/node_modules/next/dist/client/app-dir/link.js <module evaluation>":{"id":22016,"name":"*","chunks":["/_next/static/chunks/7c92e96509cd355e.js"],"async":false},"[project]/node_modules/next/dist/client/app-dir/link.js":{"id":22016,"name":"*","chunks":["/_next/static/chunks/7c92e96509cd355e.js"],"async":false}},"ssrModuleMapping":{"39756":{"*":{"id":2420,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__a218194e._.js","server/chunks/ssr/node_modules_next_dist_7769b563._.js"],"async":false}},"37457":{"*":{"id":24017,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__a218194e._.js","server/chunks/ssr/node_modules_next_dist_7769b563._.js"],"async":false}},"47257":{"*":{"id":77682,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__a218194e._.js","server/chunks/ssr/node_modules_next_dist_7769b563._.js"],"async":false}},"92825":{"*":{"id":97296,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__a218194e._.js","server/chunks/ssr/node_modules_next_dist_7769b563._.js"],"async":false}},"68017":{"*":{"id":61660,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__a218194e._.js","server/chunks/ssr/node_modules_next_dist_7769b563._.js"],"async":false}},"27201":{"*":{"id":60704,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__a218194e._.js","server/chunks/ssr/node_modules_next_dist_7769b563._.js"],"async":false}},"97367":{"*":{"id":90574,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__a218194e._.js","server/chunks/ssr/node_modules_next_dist_7769b563._.js"],"async":false}},"68027":{"*":{"id":40622,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__a218194e._.js","server/chunks/ssr/node_modules_next_dist_7769b563._.js"],"async":false}},"22016":{"*":{"id":38246,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__d143f79e._.js","server/chunks/ssr/node_modules_ea845e5f._.js"],"async":false}}},"edgeSSRModuleMapping":{},"rscModuleMapping":{"39756":{"*":{"id":26768,"name":"*","chunks":[],"async":false}},"37457":{"*":{"id":17910,"name":"*","chunks":[],"async":false}},"47257":{"*":{"id":92977,"name":"*","chunks":[],"async":false}},"92825":{"*":{"id":48552,"name":"*","chunks":[],"async":false}},"68017":{"*":{"id":83919,"name":"*","chunks":[],"async":false}},"27201":{"*":{"id":40771,"name":"*","chunks":[],"async":false}},"97367":{"*":{"id":24150,"name":"*","chunks":[],"async":false}},"68027":{"*":{"id":82509,"name":"*","chunks":[],"async":false}},"22016":{"*":{"id":84707,"name":"*","chunks":[],"async":false}}},"edgeRscModuleMapping":{},"entryCSSFiles":{"[project]/node_modules/next/dist/client/components/builtin/global-error":[],"[project]/packages/playground/app/layout":[{"path":"static/chunks/
|
|
2
|
+
globalThis.__RSC_MANIFEST["/page"] = {"moduleLoading":{"prefix":"","crossOrigin":null},"clientModules":{"[project]/node_modules/next/dist/esm/client/components/layout-router.js <module evaluation>":{"id":39756,"name":"*","chunks":["/_next/static/chunks/ff1a16fafef87110.js","/_next/static/chunks/d2be314c3ece3fbe.js"],"async":false},"[project]/node_modules/next/dist/esm/client/components/layout-router.js":{"id":39756,"name":"*","chunks":["/_next/static/chunks/ff1a16fafef87110.js","/_next/static/chunks/d2be314c3ece3fbe.js"],"async":false},"[project]/node_modules/next/dist/esm/client/components/render-from-template-context.js <module evaluation>":{"id":37457,"name":"*","chunks":["/_next/static/chunks/ff1a16fafef87110.js","/_next/static/chunks/d2be314c3ece3fbe.js"],"async":false},"[project]/node_modules/next/dist/esm/client/components/render-from-template-context.js":{"id":37457,"name":"*","chunks":["/_next/static/chunks/ff1a16fafef87110.js","/_next/static/chunks/d2be314c3ece3fbe.js"],"async":false},"[project]/node_modules/next/dist/esm/client/components/client-page.js <module evaluation>":{"id":47257,"name":"*","chunks":["/_next/static/chunks/ff1a16fafef87110.js","/_next/static/chunks/d2be314c3ece3fbe.js"],"async":false},"[project]/node_modules/next/dist/esm/client/components/client-page.js":{"id":47257,"name":"*","chunks":["/_next/static/chunks/ff1a16fafef87110.js","/_next/static/chunks/d2be314c3ece3fbe.js"],"async":false},"[project]/node_modules/next/dist/esm/client/components/client-segment.js <module evaluation>":{"id":92825,"name":"*","chunks":["/_next/static/chunks/ff1a16fafef87110.js","/_next/static/chunks/d2be314c3ece3fbe.js"],"async":false},"[project]/node_modules/next/dist/esm/client/components/client-segment.js":{"id":92825,"name":"*","chunks":["/_next/static/chunks/ff1a16fafef87110.js","/_next/static/chunks/d2be314c3ece3fbe.js"],"async":false},"[project]/node_modules/next/dist/esm/client/components/http-access-fallback/error-boundary.js <module evaluation>":{"id":68017,"name":"*","chunks":["/_next/static/chunks/ff1a16fafef87110.js","/_next/static/chunks/d2be314c3ece3fbe.js"],"async":false},"[project]/node_modules/next/dist/esm/client/components/http-access-fallback/error-boundary.js":{"id":68017,"name":"*","chunks":["/_next/static/chunks/ff1a16fafef87110.js","/_next/static/chunks/d2be314c3ece3fbe.js"],"async":false},"[project]/node_modules/next/dist/esm/lib/metadata/generate/icon-mark.js <module evaluation>":{"id":27201,"name":"*","chunks":["/_next/static/chunks/ff1a16fafef87110.js","/_next/static/chunks/d2be314c3ece3fbe.js"],"async":false},"[project]/node_modules/next/dist/esm/lib/metadata/generate/icon-mark.js":{"id":27201,"name":"*","chunks":["/_next/static/chunks/ff1a16fafef87110.js","/_next/static/chunks/d2be314c3ece3fbe.js"],"async":false},"[project]/node_modules/next/dist/esm/lib/framework/boundary-components.js <module evaluation>":{"id":97367,"name":"*","chunks":["/_next/static/chunks/ff1a16fafef87110.js","/_next/static/chunks/d2be314c3ece3fbe.js"],"async":false},"[project]/node_modules/next/dist/esm/lib/framework/boundary-components.js":{"id":97367,"name":"*","chunks":["/_next/static/chunks/ff1a16fafef87110.js","/_next/static/chunks/d2be314c3ece3fbe.js"],"async":false},"[project]/node_modules/next/dist/client/components/builtin/global-error.js <module evaluation>":{"id":68027,"name":"*","chunks":["/_next/static/chunks/ff1a16fafef87110.js","/_next/static/chunks/d2be314c3ece3fbe.js"],"async":false},"[project]/node_modules/next/dist/client/components/builtin/global-error.js":{"id":68027,"name":"*","chunks":["/_next/static/chunks/ff1a16fafef87110.js","/_next/static/chunks/d2be314c3ece3fbe.js"],"async":false},"[project]/node_modules/next/dist/client/app-dir/link.js <module evaluation>":{"id":22016,"name":"*","chunks":["/_next/static/chunks/7c92e96509cd355e.js"],"async":false},"[project]/node_modules/next/dist/client/app-dir/link.js":{"id":22016,"name":"*","chunks":["/_next/static/chunks/7c92e96509cd355e.js"],"async":false}},"ssrModuleMapping":{"39756":{"*":{"id":2420,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__a218194e._.js","server/chunks/ssr/node_modules_next_dist_7769b563._.js"],"async":false}},"37457":{"*":{"id":24017,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__a218194e._.js","server/chunks/ssr/node_modules_next_dist_7769b563._.js"],"async":false}},"47257":{"*":{"id":77682,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__a218194e._.js","server/chunks/ssr/node_modules_next_dist_7769b563._.js"],"async":false}},"92825":{"*":{"id":97296,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__a218194e._.js","server/chunks/ssr/node_modules_next_dist_7769b563._.js"],"async":false}},"68017":{"*":{"id":61660,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__a218194e._.js","server/chunks/ssr/node_modules_next_dist_7769b563._.js"],"async":false}},"27201":{"*":{"id":60704,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__a218194e._.js","server/chunks/ssr/node_modules_next_dist_7769b563._.js"],"async":false}},"97367":{"*":{"id":90574,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__a218194e._.js","server/chunks/ssr/node_modules_next_dist_7769b563._.js"],"async":false}},"68027":{"*":{"id":40622,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__a218194e._.js","server/chunks/ssr/node_modules_next_dist_7769b563._.js"],"async":false}},"22016":{"*":{"id":38246,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__d143f79e._.js","server/chunks/ssr/node_modules_ea845e5f._.js"],"async":false}}},"edgeSSRModuleMapping":{},"rscModuleMapping":{"39756":{"*":{"id":26768,"name":"*","chunks":[],"async":false}},"37457":{"*":{"id":17910,"name":"*","chunks":[],"async":false}},"47257":{"*":{"id":92977,"name":"*","chunks":[],"async":false}},"92825":{"*":{"id":48552,"name":"*","chunks":[],"async":false}},"68017":{"*":{"id":83919,"name":"*","chunks":[],"async":false}},"27201":{"*":{"id":40771,"name":"*","chunks":[],"async":false}},"97367":{"*":{"id":24150,"name":"*","chunks":[],"async":false}},"68027":{"*":{"id":82509,"name":"*","chunks":[],"async":false}},"22016":{"*":{"id":84707,"name":"*","chunks":[],"async":false}}},"edgeRscModuleMapping":{},"entryCSSFiles":{"[project]/node_modules/next/dist/client/components/builtin/global-error":[],"[project]/packages/playground/app/layout":[{"path":"static/chunks/225815167619f532.css","inlined":false}],"[project]/packages/playground/app/page":[{"path":"static/chunks/225815167619f532.css","inlined":false}]},"entryJSFiles":{"[project]/node_modules/next/dist/client/components/builtin/global-error":["static/chunks/ff1a16fafef87110.js","static/chunks/d2be314c3ece3fbe.js"],"[project]/packages/playground/app/layout":["static/chunks/7c92e96509cd355e.js"],"[project]/packages/playground/app/page":["static/chunks/7c92e96509cd355e.js"]}}
|
package/.next/server/app/transcript/[experiment]/[timestamp]/[evalName]/[run]/page.js.nft.json
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":1,"files":["../../../../../../../../../../node_modules/@opentelemetry/api/build/src/api/context.js","../../../../../../../../../../node_modules/@opentelemetry/api/build/src/api/diag.js","../../../../../../../../../../node_modules/@opentelemetry/api/build/src/api/metrics.js","../../../../../../../../../../node_modules/@opentelemetry/api/build/src/api/propagation.js","../../../../../../../../../../node_modules/@opentelemetry/api/build/src/api/trace.js","../../../../../../../../../../node_modules/@opentelemetry/api/build/src/baggage/context-helpers.js","../../../../../../../../../../node_modules/@opentelemetry/api/build/src/baggage/internal/baggage-impl.js","../../../../../../../../../../node_modules/@opentelemetry/api/build/src/baggage/internal/symbol.js","../../../../../../../../../../node_modules/@opentelemetry/api/build/src/baggage/utils.js","../../../../../../../../../../node_modules/@opentelemetry/api/build/src/context-api.js","../../../../../../../../../../node_modules/@opentelemetry/api/build/src/context/NoopContextManager.js","../../../../../../../../../../node_modules/@opentelemetry/api/build/src/context/context.js","../../../../../../../../../../node_modules/@opentelemetry/api/build/src/diag-api.js","../../../../../../../../../../node_modules/@opentelemetry/api/build/src/diag/ComponentLogger.js","../../../../../../../../../../node_modules/@opentelemetry/api/build/src/diag/consoleLogger.js","../../../../../../../../../../node_modules/@opentelemetry/api/build/src/diag/internal/logLevelLogger.js","../../../../../../../../../../node_modules/@opentelemetry/api/build/src/diag/types.js","../../../../../../../../../../node_modules/@opentelemetry/api/build/src/index.js","../../../../../../../../../../node_modules/@opentelemetry/api/build/src/internal/global-utils.js","../../../../../../../../../../node_modules/@opentelemetry/api/build/src/internal/semver.js","../../../../../../../../../../node_modules/@opentelemetry/api/build/src/metrics-api.js","../../../../../../../../../../node_modules/@opentelemetry/api/build/src/metrics/Metric.js","../../../../../../../../../../node_modules/@opentelemetry/api/build/src/metrics/NoopMeter.js","../../../../../../../../../../node_modules/@opentelemetry/api/build/src/metrics/NoopMeterProvider.js","../../../../../../../../../../node_modules/@opentelemetry/api/build/src/platform/index.js","../../../../../../../../../../node_modules/@opentelemetry/api/build/src/platform/node/globalThis.js","../../../../../../../../../../node_modules/@opentelemetry/api/build/src/platform/node/index.js","../../../../../../../../../../node_modules/@opentelemetry/api/build/src/propagation-api.js","../../../../../../../../../../node_modules/@opentelemetry/api/build/src/propagation/NoopTextMapPropagator.js","../../../../../../../../../../node_modules/@opentelemetry/api/build/src/propagation/TextMapPropagator.js","../../../../../../../../../../node_modules/@opentelemetry/api/build/src/trace-api.js","../../../../../../../../../../node_modules/@opentelemetry/api/build/src/trace/NonRecordingSpan.js","../../../../../../../../../../node_modules/@opentelemetry/api/build/src/trace/NoopTracer.js","../../../../../../../../../../node_modules/@opentelemetry/api/build/src/trace/NoopTracerProvider.js","../../../../../../../../../../node_modules/@opentelemetry/api/build/src/trace/ProxyTracer.js","../../../../../../../../../../node_modules/@opentelemetry/api/build/src/trace/ProxyTracerProvider.js","../../../../../../../../../../node_modules/@opentelemetry/api/build/src/trace/SamplingResult.js","../../../../../../../../../../node_modules/@opentelemetry/api/build/src/trace/context-utils.js","../../../../../../../../../../node_modules/@opentelemetry/api/build/src/trace/internal/tracestate-impl.js","../../../../../../../../../../node_modules/@opentelemetry/api/build/src/trace/internal/tracestate-validators.js","../../../../../../../../../../node_modules/@opentelemetry/api/build/src/trace/internal/utils.js","../../../../../../../../../../node_modules/@opentelemetry/api/build/src/trace/invalid-span-constants.js","../../../../../../../../../../node_modules/@opentelemetry/api/build/src/trace/span_kind.js","../../../../../../../../../../node_modules/@opentelemetry/api/build/src/trace/spancontext-utils.js","../../../../../../../../../../node_modules/@opentelemetry/api/build/src/trace/status.js","../../../../../../../../../../node_modules/@opentelemetry/api/build/src/trace/trace_flags.js","../../../../../../../../../../node_modules/@opentelemetry/api/build/src/version.js","../../../../../../../../../../node_modules/@opentelemetry/api/package.json","../../../../../../../../../../node_modules/next/dist/client/components/app-router-headers.js","../../../../../../../../../../node_modules/next/dist/compiled/@opentelemetry/api/index.js","../../../../../../../../../../node_modules/next/dist/compiled/@opentelemetry/api/package.json","../../../../../../../../../../node_modules/next/dist/compiled/jsonwebtoken/index.js","../../../../../../../../../../node_modules/next/dist/compiled/jsonwebtoken/package.json","../../../../../../../../../../node_modules/next/dist/compiled/next-server/app-page-turbo.runtime.prod.js","../../../../../../../../../../node_modules/next/dist/lib/client-and-server-references.js","../../../../../../../../../../node_modules/next/dist/lib/constants.js","../../../../../../../../../../node_modules/next/dist/lib/interop-default.js","../../../../../../../../../../node_modules/next/dist/lib/is-error.js","../../../../../../../../../../node_modules/next/dist/lib/semver-noop.js","../../../../../../../../../../node_modules/next/dist/server/app-render/action-async-storage-instance.js","../../../../../../../../../../node_modules/next/dist/server/app-render/action-async-storage.external.js","../../../../../../../../../../node_modules/next/dist/server/app-render/after-task-async-storage-instance.js","../../../../../../../../../../node_modules/next/dist/server/app-render/after-task-async-storage.external.js","../../../../../../../../../../node_modules/next/dist/server/app-render/async-local-storage.js","../../../../../../../../../../node_modules/next/dist/server/app-render/cache-signal.js","../../../../../../../../../../node_modules/next/dist/server/app-render/console-async-storage-instance.js","../../../../../../../../../../node_modules/next/dist/server/app-render/console-async-storage.external.js","../../../../../../../../../../node_modules/next/dist/server/app-render/dynamic-access-async-storage-instance.js","../../../../../../../../../../node_modules/next/dist/server/app-render/dynamic-access-async-storage.external.js","../../../../../../../../../../node_modules/next/dist/server/app-render/module-loading/track-module-loading.external.js","../../../../../../../../../../node_modules/next/dist/server/app-render/module-loading/track-module-loading.instance.js","../../../../../../../../../../node_modules/next/dist/server/app-render/work-async-storage-instance.js","../../../../../../../../../../node_modules/next/dist/server/app-render/work-async-storage.external.js","../../../../../../../../../../node_modules/next/dist/server/app-render/work-unit-async-storage-instance.js","../../../../../../../../../../node_modules/next/dist/server/app-render/work-unit-async-storage.external.js","../../../../../../../../../../node_modules/next/dist/server/lib/incremental-cache/memory-cache.external.js","../../../../../../../../../../node_modules/next/dist/server/lib/incremental-cache/shared-cache-controls.external.js","../../../../../../../../../../node_modules/next/dist/server/lib/incremental-cache/tags-manifest.external.js","../../../../../../../../../../node_modules/next/dist/server/lib/lru-cache.js","../../../../../../../../../../node_modules/next/dist/server/lib/router-utils/instrumentation-globals.external.js","../../../../../../../../../../node_modules/next/dist/server/lib/router-utils/instrumentation-node-extensions.js","../../../../../../../../../../node_modules/next/dist/server/lib/trace/constants.js","../../../../../../../../../../node_modules/next/dist/server/lib/trace/tracer.js","../../../../../../../../../../node_modules/next/dist/server/load-manifest.external.js","../../../../../../../../../../node_modules/next/dist/server/node-environment-extensions/fast-set-immediate.external.js","../../../../../../../../../../node_modules/next/dist/server/response-cache/types.js","../../../../../../../../../../node_modules/next/dist/server/runtime-reacts.external.js","../../../../../../../../../../node_modules/next/dist/shared/lib/deep-freeze.js","../../../../../../../../../../node_modules/next/dist/shared/lib/invariant-error.js","../../../../../../../../../../node_modules/next/dist/shared/lib/is-plain-object.js","../../../../../../../../../../node_modules/next/dist/shared/lib/is-thenable.js","../../../../../../../../../../node_modules/next/dist/shared/lib/no-fallback-error.external.js","../../../../../../../../../../node_modules/next/dist/shared/lib/server-reference-info.js","../../../../../../../../../../node_modules/next/package.json","../../../../../../../../AGENTS.md","../../../../../../../../CHANGELOG.md","../../../../../../../../README.md","../../../../../../../../app/compare/page.tsx","../../../../../../../../app/evals/[name]/page.tsx","../../../../../../../../app/evals/page.tsx","../../../../../../../../app/experiments/[name]/[timestamp]/page.tsx","../../../../../../../../app/experiments/page.tsx","../../../../../../../../app/globals.css","../../../../../../../../app/layout.tsx","../../../../../../../../app/page.tsx","../../../../../../../../app/transcript/[experiment]/[timestamp]/[evalName]/[run]/page.tsx","../../../../../../../../bin.mjs","../../../../../../../../components.json","../../../../../../../../components/ComparePage.tsx","../../../../../../../../components/EvalDetail.tsx","../../../../../../../../components/EvalsPage.tsx","../../../../../../../../components/ExperimentDetail.tsx","../../../../../../../../components/ExperimentList.tsx","../../../../../../../../components/O11ySummary.tsx","../../../../../../../../components/RunResultCard.tsx","../../../../../../../../components/ShowMore.tsx","../../../../../../../../components/TranscriptPage.tsx","../../../../../../../../components/TranscriptViewer.tsx","../../../../../../../../components/ui/alert-dialog.tsx","../../../../../../../../components/ui/badge.tsx","../../../../../../../../components/ui/button.tsx","../../../../../../../../components/ui/card.tsx","../../../../../../../../components/ui/collapsible.tsx","../../../../../../../../components/ui/combobox.tsx","../../../../../../../../components/ui/dropdown-menu.tsx","../../../../../../../../components/ui/field.tsx","../../../../../../../../components/ui/input-group.tsx","../../../../../../../../components/ui/input.tsx","../../../../../../../../components/ui/label.tsx","../../../../../../../../components/ui/progress.tsx","../../../../../../../../components/ui/scroll-area.tsx","../../../../../../../../components/ui/select.tsx","../../../../../../../../components/ui/separator.tsx","../../../../../../../../components/ui/table.tsx","../../../../../../../../components/ui/tabs.tsx","../../../../../../../../components/ui/textarea.tsx","../../../../../../../../components/ui/tooltip.tsx","../../../../../../../../favicon.ico","../../../../../../../../lib/data.ts","../../../../../../../../lib/types.ts","../../../../../../../../lib/utils.ts","../../../../../../../../next.config.ts","../../../../../../../../package.json","../../../../../../../../postcss.config.mjs","../../../../../../../../public/vercel.svg","../../../../../../../../tsconfig.json","../../../../../../chunks/ssr/337e3_app_transcript_[experiment]_[timestamp]_[evalName]_[run]_page_actions_f96c6169.js","../../../../../../chunks/ssr/[root-of-the-server]__1690ee0d._.js","../../../../../../chunks/ssr/[root-of-the-server]__5d5aaa26._.js","../../../../../../chunks/ssr/[root-of-the-server]__72be1801._.js","../../../../../../chunks/ssr/[root-of-the-server]__a218194e._.js","../../../../../../chunks/ssr/[root-of-the-server]__c73d60f7._.js","../../../../../../chunks/ssr/[root-of-the-server]__d143f79e._.js","../../../../../../chunks/ssr/[root-of-the-server]__ec465b95._.js","../../../../../../chunks/ssr/[turbopack]_runtime.js","../../../../../../chunks/ssr/_6d67dac0._.js","../../../../../../chunks/ssr/_70603404._.js","../../../../../../chunks/ssr/_e3b4e74f._.js","../../../../../../chunks/ssr/_ec9a0c72._.js","../../../../../../chunks/ssr/node_modules_6e9b70d7._.js","../../../../../../chunks/ssr/node_modules_ea845e5f._.js","../../../../../../chunks/ssr/node_modules_f76a24fb._.js","../../../../../../chunks/ssr/node_modules_next_dist_023b6025._.js","../../../../../../chunks/ssr/node_modules_next_dist_7769b563._.js","../../../../../../chunks/ssr/node_modules_next_dist_client_components_9774470f._.js","../../../../../../chunks/ssr/node_modules_next_dist_client_components_builtin_forbidden_45780354.js","../../../../../../chunks/ssr/node_modules_next_dist_client_components_builtin_global-error_ece394eb.js","../../../../../../chunks/ssr/node_modules_next_dist_client_components_builtin_unauthorized_15817684.js","../../../../../../chunks/ssr/packages_playground_components_TranscriptViewer_tsx_ba8ff423._.js","./page/react-loadable-manifest.json","./page_client-reference-manifest.js"]}
|
|
1
|
+
{"version":1,"files":["../../../../../../../../../../node_modules/@opentelemetry/api/build/src/api/context.js","../../../../../../../../../../node_modules/@opentelemetry/api/build/src/api/diag.js","../../../../../../../../../../node_modules/@opentelemetry/api/build/src/api/metrics.js","../../../../../../../../../../node_modules/@opentelemetry/api/build/src/api/propagation.js","../../../../../../../../../../node_modules/@opentelemetry/api/build/src/api/trace.js","../../../../../../../../../../node_modules/@opentelemetry/api/build/src/baggage/context-helpers.js","../../../../../../../../../../node_modules/@opentelemetry/api/build/src/baggage/internal/baggage-impl.js","../../../../../../../../../../node_modules/@opentelemetry/api/build/src/baggage/internal/symbol.js","../../../../../../../../../../node_modules/@opentelemetry/api/build/src/baggage/utils.js","../../../../../../../../../../node_modules/@opentelemetry/api/build/src/context-api.js","../../../../../../../../../../node_modules/@opentelemetry/api/build/src/context/NoopContextManager.js","../../../../../../../../../../node_modules/@opentelemetry/api/build/src/context/context.js","../../../../../../../../../../node_modules/@opentelemetry/api/build/src/diag-api.js","../../../../../../../../../../node_modules/@opentelemetry/api/build/src/diag/ComponentLogger.js","../../../../../../../../../../node_modules/@opentelemetry/api/build/src/diag/consoleLogger.js","../../../../../../../../../../node_modules/@opentelemetry/api/build/src/diag/internal/logLevelLogger.js","../../../../../../../../../../node_modules/@opentelemetry/api/build/src/diag/types.js","../../../../../../../../../../node_modules/@opentelemetry/api/build/src/index.js","../../../../../../../../../../node_modules/@opentelemetry/api/build/src/internal/global-utils.js","../../../../../../../../../../node_modules/@opentelemetry/api/build/src/internal/semver.js","../../../../../../../../../../node_modules/@opentelemetry/api/build/src/metrics-api.js","../../../../../../../../../../node_modules/@opentelemetry/api/build/src/metrics/Metric.js","../../../../../../../../../../node_modules/@opentelemetry/api/build/src/metrics/NoopMeter.js","../../../../../../../../../../node_modules/@opentelemetry/api/build/src/metrics/NoopMeterProvider.js","../../../../../../../../../../node_modules/@opentelemetry/api/build/src/platform/index.js","../../../../../../../../../../node_modules/@opentelemetry/api/build/src/platform/node/globalThis.js","../../../../../../../../../../node_modules/@opentelemetry/api/build/src/platform/node/index.js","../../../../../../../../../../node_modules/@opentelemetry/api/build/src/propagation-api.js","../../../../../../../../../../node_modules/@opentelemetry/api/build/src/propagation/NoopTextMapPropagator.js","../../../../../../../../../../node_modules/@opentelemetry/api/build/src/propagation/TextMapPropagator.js","../../../../../../../../../../node_modules/@opentelemetry/api/build/src/trace-api.js","../../../../../../../../../../node_modules/@opentelemetry/api/build/src/trace/NonRecordingSpan.js","../../../../../../../../../../node_modules/@opentelemetry/api/build/src/trace/NoopTracer.js","../../../../../../../../../../node_modules/@opentelemetry/api/build/src/trace/NoopTracerProvider.js","../../../../../../../../../../node_modules/@opentelemetry/api/build/src/trace/ProxyTracer.js","../../../../../../../../../../node_modules/@opentelemetry/api/build/src/trace/ProxyTracerProvider.js","../../../../../../../../../../node_modules/@opentelemetry/api/build/src/trace/SamplingResult.js","../../../../../../../../../../node_modules/@opentelemetry/api/build/src/trace/context-utils.js","../../../../../../../../../../node_modules/@opentelemetry/api/build/src/trace/internal/tracestate-impl.js","../../../../../../../../../../node_modules/@opentelemetry/api/build/src/trace/internal/tracestate-validators.js","../../../../../../../../../../node_modules/@opentelemetry/api/build/src/trace/internal/utils.js","../../../../../../../../../../node_modules/@opentelemetry/api/build/src/trace/invalid-span-constants.js","../../../../../../../../../../node_modules/@opentelemetry/api/build/src/trace/span_kind.js","../../../../../../../../../../node_modules/@opentelemetry/api/build/src/trace/spancontext-utils.js","../../../../../../../../../../node_modules/@opentelemetry/api/build/src/trace/status.js","../../../../../../../../../../node_modules/@opentelemetry/api/build/src/trace/trace_flags.js","../../../../../../../../../../node_modules/@opentelemetry/api/build/src/version.js","../../../../../../../../../../node_modules/@opentelemetry/api/package.json","../../../../../../../../../../node_modules/next/dist/client/components/app-router-headers.js","../../../../../../../../../../node_modules/next/dist/compiled/@opentelemetry/api/index.js","../../../../../../../../../../node_modules/next/dist/compiled/@opentelemetry/api/package.json","../../../../../../../../../../node_modules/next/dist/compiled/jsonwebtoken/index.js","../../../../../../../../../../node_modules/next/dist/compiled/jsonwebtoken/package.json","../../../../../../../../../../node_modules/next/dist/compiled/next-server/app-page-turbo.runtime.prod.js","../../../../../../../../../../node_modules/next/dist/lib/client-and-server-references.js","../../../../../../../../../../node_modules/next/dist/lib/constants.js","../../../../../../../../../../node_modules/next/dist/lib/interop-default.js","../../../../../../../../../../node_modules/next/dist/lib/is-error.js","../../../../../../../../../../node_modules/next/dist/lib/semver-noop.js","../../../../../../../../../../node_modules/next/dist/server/app-render/action-async-storage-instance.js","../../../../../../../../../../node_modules/next/dist/server/app-render/action-async-storage.external.js","../../../../../../../../../../node_modules/next/dist/server/app-render/after-task-async-storage-instance.js","../../../../../../../../../../node_modules/next/dist/server/app-render/after-task-async-storage.external.js","../../../../../../../../../../node_modules/next/dist/server/app-render/async-local-storage.js","../../../../../../../../../../node_modules/next/dist/server/app-render/cache-signal.js","../../../../../../../../../../node_modules/next/dist/server/app-render/console-async-storage-instance.js","../../../../../../../../../../node_modules/next/dist/server/app-render/console-async-storage.external.js","../../../../../../../../../../node_modules/next/dist/server/app-render/dynamic-access-async-storage-instance.js","../../../../../../../../../../node_modules/next/dist/server/app-render/dynamic-access-async-storage.external.js","../../../../../../../../../../node_modules/next/dist/server/app-render/module-loading/track-module-loading.external.js","../../../../../../../../../../node_modules/next/dist/server/app-render/module-loading/track-module-loading.instance.js","../../../../../../../../../../node_modules/next/dist/server/app-render/work-async-storage-instance.js","../../../../../../../../../../node_modules/next/dist/server/app-render/work-async-storage.external.js","../../../../../../../../../../node_modules/next/dist/server/app-render/work-unit-async-storage-instance.js","../../../../../../../../../../node_modules/next/dist/server/app-render/work-unit-async-storage.external.js","../../../../../../../../../../node_modules/next/dist/server/lib/incremental-cache/memory-cache.external.js","../../../../../../../../../../node_modules/next/dist/server/lib/incremental-cache/shared-cache-controls.external.js","../../../../../../../../../../node_modules/next/dist/server/lib/incremental-cache/tags-manifest.external.js","../../../../../../../../../../node_modules/next/dist/server/lib/lru-cache.js","../../../../../../../../../../node_modules/next/dist/server/lib/router-utils/instrumentation-globals.external.js","../../../../../../../../../../node_modules/next/dist/server/lib/router-utils/instrumentation-node-extensions.js","../../../../../../../../../../node_modules/next/dist/server/lib/trace/constants.js","../../../../../../../../../../node_modules/next/dist/server/lib/trace/tracer.js","../../../../../../../../../../node_modules/next/dist/server/load-manifest.external.js","../../../../../../../../../../node_modules/next/dist/server/node-environment-extensions/fast-set-immediate.external.js","../../../../../../../../../../node_modules/next/dist/server/response-cache/types.js","../../../../../../../../../../node_modules/next/dist/server/runtime-reacts.external.js","../../../../../../../../../../node_modules/next/dist/shared/lib/deep-freeze.js","../../../../../../../../../../node_modules/next/dist/shared/lib/invariant-error.js","../../../../../../../../../../node_modules/next/dist/shared/lib/is-plain-object.js","../../../../../../../../../../node_modules/next/dist/shared/lib/is-thenable.js","../../../../../../../../../../node_modules/next/dist/shared/lib/no-fallback-error.external.js","../../../../../../../../../../node_modules/next/dist/shared/lib/server-reference-info.js","../../../../../../../../../../node_modules/next/package.json","../../../../../../../../AGENTS.md","../../../../../../../../CHANGELOG.md","../../../../../../../../README.md","../../../../../../../../app/compare/page.tsx","../../../../../../../../app/evals/[name]/page.tsx","../../../../../../../../app/evals/page.tsx","../../../../../../../../app/experiments/[name]/[timestamp]/page.tsx","../../../../../../../../app/experiments/[name]/page.tsx","../../../../../../../../app/experiments/page.tsx","../../../../../../../../app/globals.css","../../../../../../../../app/layout.tsx","../../../../../../../../app/page.tsx","../../../../../../../../app/transcript/[experiment]/[timestamp]/[evalName]/[run]/page.tsx","../../../../../../../../bin.mjs","../../../../../../../../components.json","../../../../../../../../components/ComparePage.tsx","../../../../../../../../components/EvalDetail.tsx","../../../../../../../../components/EvalsPage.tsx","../../../../../../../../components/ExperimentDetail.tsx","../../../../../../../../components/ExperimentList.tsx","../../../../../../../../components/O11ySummary.tsx","../../../../../../../../components/RunResultCard.tsx","../../../../../../../../components/ShowMore.tsx","../../../../../../../../components/TranscriptPage.tsx","../../../../../../../../components/TranscriptViewer.tsx","../../../../../../../../components/ui/alert-dialog.tsx","../../../../../../../../components/ui/badge.tsx","../../../../../../../../components/ui/button.tsx","../../../../../../../../components/ui/card.tsx","../../../../../../../../components/ui/collapsible.tsx","../../../../../../../../components/ui/combobox.tsx","../../../../../../../../components/ui/dropdown-menu.tsx","../../../../../../../../components/ui/field.tsx","../../../../../../../../components/ui/input-group.tsx","../../../../../../../../components/ui/input.tsx","../../../../../../../../components/ui/label.tsx","../../../../../../../../components/ui/progress.tsx","../../../../../../../../components/ui/scroll-area.tsx","../../../../../../../../components/ui/select.tsx","../../../../../../../../components/ui/separator.tsx","../../../../../../../../components/ui/table.tsx","../../../../../../../../components/ui/tabs.tsx","../../../../../../../../components/ui/textarea.tsx","../../../../../../../../components/ui/tooltip.tsx","../../../../../../../../favicon.ico","../../../../../../../../lib/data.ts","../../../../../../../../lib/types.ts","../../../../../../../../lib/utils.ts","../../../../../../../../next.config.ts","../../../../../../../../package.json","../../../../../../../../postcss.config.mjs","../../../../../../../../public/vercel.svg","../../../../../../../../tsconfig.json","../../../../../../chunks/ssr/337e3_app_transcript_[experiment]_[timestamp]_[evalName]_[run]_page_actions_f96c6169.js","../../../../../../chunks/ssr/[root-of-the-server]__1690ee0d._.js","../../../../../../chunks/ssr/[root-of-the-server]__5d5aaa26._.js","../../../../../../chunks/ssr/[root-of-the-server]__72be1801._.js","../../../../../../chunks/ssr/[root-of-the-server]__a218194e._.js","../../../../../../chunks/ssr/[root-of-the-server]__c73d60f7._.js","../../../../../../chunks/ssr/[root-of-the-server]__d143f79e._.js","../../../../../../chunks/ssr/[root-of-the-server]__ec465b95._.js","../../../../../../chunks/ssr/[turbopack]_runtime.js","../../../../../../chunks/ssr/_6d67dac0._.js","../../../../../../chunks/ssr/_70603404._.js","../../../../../../chunks/ssr/_e3b4e74f._.js","../../../../../../chunks/ssr/_ec9a0c72._.js","../../../../../../chunks/ssr/node_modules_6e9b70d7._.js","../../../../../../chunks/ssr/node_modules_ea845e5f._.js","../../../../../../chunks/ssr/node_modules_f76a24fb._.js","../../../../../../chunks/ssr/node_modules_next_dist_023b6025._.js","../../../../../../chunks/ssr/node_modules_next_dist_7769b563._.js","../../../../../../chunks/ssr/node_modules_next_dist_client_components_9774470f._.js","../../../../../../chunks/ssr/node_modules_next_dist_client_components_builtin_forbidden_45780354.js","../../../../../../chunks/ssr/node_modules_next_dist_client_components_builtin_global-error_ece394eb.js","../../../../../../chunks/ssr/node_modules_next_dist_client_components_builtin_unauthorized_15817684.js","../../../../../../chunks/ssr/packages_playground_components_TranscriptViewer_tsx_ba8ff423._.js","./page/react-loadable-manifest.json","./page_client-reference-manifest.js"]}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
globalThis.__RSC_MANIFEST = globalThis.__RSC_MANIFEST || {};
|
|
2
|
-
globalThis.__RSC_MANIFEST["/transcript/[experiment]/[timestamp]/[evalName]/[run]/page"] = {"moduleLoading":{"prefix":"","crossOrigin":null},"clientModules":{"[project]/node_modules/next/dist/esm/client/components/layout-router.js <module evaluation>":{"id":39756,"name":"*","chunks":["/_next/static/chunks/ff1a16fafef87110.js","/_next/static/chunks/d2be314c3ece3fbe.js"],"async":false},"[project]/node_modules/next/dist/esm/client/components/layout-router.js":{"id":39756,"name":"*","chunks":["/_next/static/chunks/ff1a16fafef87110.js","/_next/static/chunks/d2be314c3ece3fbe.js"],"async":false},"[project]/node_modules/next/dist/esm/client/components/render-from-template-context.js <module evaluation>":{"id":37457,"name":"*","chunks":["/_next/static/chunks/ff1a16fafef87110.js","/_next/static/chunks/d2be314c3ece3fbe.js"],"async":false},"[project]/node_modules/next/dist/esm/client/components/render-from-template-context.js":{"id":37457,"name":"*","chunks":["/_next/static/chunks/ff1a16fafef87110.js","/_next/static/chunks/d2be314c3ece3fbe.js"],"async":false},"[project]/node_modules/next/dist/esm/client/components/client-page.js <module evaluation>":{"id":47257,"name":"*","chunks":["/_next/static/chunks/ff1a16fafef87110.js","/_next/static/chunks/d2be314c3ece3fbe.js"],"async":false},"[project]/node_modules/next/dist/esm/client/components/client-page.js":{"id":47257,"name":"*","chunks":["/_next/static/chunks/ff1a16fafef87110.js","/_next/static/chunks/d2be314c3ece3fbe.js"],"async":false},"[project]/node_modules/next/dist/esm/client/components/client-segment.js <module evaluation>":{"id":92825,"name":"*","chunks":["/_next/static/chunks/ff1a16fafef87110.js","/_next/static/chunks/d2be314c3ece3fbe.js"],"async":false},"[project]/node_modules/next/dist/esm/client/components/client-segment.js":{"id":92825,"name":"*","chunks":["/_next/static/chunks/ff1a16fafef87110.js","/_next/static/chunks/d2be314c3ece3fbe.js"],"async":false},"[project]/node_modules/next/dist/esm/client/components/http-access-fallback/error-boundary.js <module evaluation>":{"id":68017,"name":"*","chunks":["/_next/static/chunks/ff1a16fafef87110.js","/_next/static/chunks/d2be314c3ece3fbe.js"],"async":false},"[project]/node_modules/next/dist/esm/client/components/http-access-fallback/error-boundary.js":{"id":68017,"name":"*","chunks":["/_next/static/chunks/ff1a16fafef87110.js","/_next/static/chunks/d2be314c3ece3fbe.js"],"async":false},"[project]/node_modules/next/dist/esm/lib/metadata/generate/icon-mark.js <module evaluation>":{"id":27201,"name":"*","chunks":["/_next/static/chunks/ff1a16fafef87110.js","/_next/static/chunks/d2be314c3ece3fbe.js"],"async":false},"[project]/node_modules/next/dist/esm/lib/metadata/generate/icon-mark.js":{"id":27201,"name":"*","chunks":["/_next/static/chunks/ff1a16fafef87110.js","/_next/static/chunks/d2be314c3ece3fbe.js"],"async":false},"[project]/node_modules/next/dist/esm/lib/framework/boundary-components.js <module evaluation>":{"id":97367,"name":"*","chunks":["/_next/static/chunks/ff1a16fafef87110.js","/_next/static/chunks/d2be314c3ece3fbe.js"],"async":false},"[project]/node_modules/next/dist/esm/lib/framework/boundary-components.js":{"id":97367,"name":"*","chunks":["/_next/static/chunks/ff1a16fafef87110.js","/_next/static/chunks/d2be314c3ece3fbe.js"],"async":false},"[project]/node_modules/next/dist/client/components/builtin/global-error.js <module evaluation>":{"id":68027,"name":"*","chunks":["/_next/static/chunks/ff1a16fafef87110.js","/_next/static/chunks/d2be314c3ece3fbe.js"],"async":false},"[project]/node_modules/next/dist/client/components/builtin/global-error.js":{"id":68027,"name":"*","chunks":["/_next/static/chunks/ff1a16fafef87110.js","/_next/static/chunks/d2be314c3ece3fbe.js"],"async":false},"[project]/node_modules/next/dist/client/app-dir/link.js <module evaluation>":{"id":22016,"name":"*","chunks":["/_next/static/chunks/7c92e96509cd355e.js","/_next/static/chunks/66ffe3fd1030c2a6.js","/_next/static/chunks/bc1ad5694f41cef0.js","/_next/static/chunks/
|
|
2
|
+
globalThis.__RSC_MANIFEST["/transcript/[experiment]/[timestamp]/[evalName]/[run]/page"] = {"moduleLoading":{"prefix":"","crossOrigin":null},"clientModules":{"[project]/node_modules/next/dist/esm/client/components/layout-router.js <module evaluation>":{"id":39756,"name":"*","chunks":["/_next/static/chunks/ff1a16fafef87110.js","/_next/static/chunks/d2be314c3ece3fbe.js"],"async":false},"[project]/node_modules/next/dist/esm/client/components/layout-router.js":{"id":39756,"name":"*","chunks":["/_next/static/chunks/ff1a16fafef87110.js","/_next/static/chunks/d2be314c3ece3fbe.js"],"async":false},"[project]/node_modules/next/dist/esm/client/components/render-from-template-context.js <module evaluation>":{"id":37457,"name":"*","chunks":["/_next/static/chunks/ff1a16fafef87110.js","/_next/static/chunks/d2be314c3ece3fbe.js"],"async":false},"[project]/node_modules/next/dist/esm/client/components/render-from-template-context.js":{"id":37457,"name":"*","chunks":["/_next/static/chunks/ff1a16fafef87110.js","/_next/static/chunks/d2be314c3ece3fbe.js"],"async":false},"[project]/node_modules/next/dist/esm/client/components/client-page.js <module evaluation>":{"id":47257,"name":"*","chunks":["/_next/static/chunks/ff1a16fafef87110.js","/_next/static/chunks/d2be314c3ece3fbe.js"],"async":false},"[project]/node_modules/next/dist/esm/client/components/client-page.js":{"id":47257,"name":"*","chunks":["/_next/static/chunks/ff1a16fafef87110.js","/_next/static/chunks/d2be314c3ece3fbe.js"],"async":false},"[project]/node_modules/next/dist/esm/client/components/client-segment.js <module evaluation>":{"id":92825,"name":"*","chunks":["/_next/static/chunks/ff1a16fafef87110.js","/_next/static/chunks/d2be314c3ece3fbe.js"],"async":false},"[project]/node_modules/next/dist/esm/client/components/client-segment.js":{"id":92825,"name":"*","chunks":["/_next/static/chunks/ff1a16fafef87110.js","/_next/static/chunks/d2be314c3ece3fbe.js"],"async":false},"[project]/node_modules/next/dist/esm/client/components/http-access-fallback/error-boundary.js <module evaluation>":{"id":68017,"name":"*","chunks":["/_next/static/chunks/ff1a16fafef87110.js","/_next/static/chunks/d2be314c3ece3fbe.js"],"async":false},"[project]/node_modules/next/dist/esm/client/components/http-access-fallback/error-boundary.js":{"id":68017,"name":"*","chunks":["/_next/static/chunks/ff1a16fafef87110.js","/_next/static/chunks/d2be314c3ece3fbe.js"],"async":false},"[project]/node_modules/next/dist/esm/lib/metadata/generate/icon-mark.js <module evaluation>":{"id":27201,"name":"*","chunks":["/_next/static/chunks/ff1a16fafef87110.js","/_next/static/chunks/d2be314c3ece3fbe.js"],"async":false},"[project]/node_modules/next/dist/esm/lib/metadata/generate/icon-mark.js":{"id":27201,"name":"*","chunks":["/_next/static/chunks/ff1a16fafef87110.js","/_next/static/chunks/d2be314c3ece3fbe.js"],"async":false},"[project]/node_modules/next/dist/esm/lib/framework/boundary-components.js <module evaluation>":{"id":97367,"name":"*","chunks":["/_next/static/chunks/ff1a16fafef87110.js","/_next/static/chunks/d2be314c3ece3fbe.js"],"async":false},"[project]/node_modules/next/dist/esm/lib/framework/boundary-components.js":{"id":97367,"name":"*","chunks":["/_next/static/chunks/ff1a16fafef87110.js","/_next/static/chunks/d2be314c3ece3fbe.js"],"async":false},"[project]/node_modules/next/dist/client/components/builtin/global-error.js <module evaluation>":{"id":68027,"name":"*","chunks":["/_next/static/chunks/ff1a16fafef87110.js","/_next/static/chunks/d2be314c3ece3fbe.js"],"async":false},"[project]/node_modules/next/dist/client/components/builtin/global-error.js":{"id":68027,"name":"*","chunks":["/_next/static/chunks/ff1a16fafef87110.js","/_next/static/chunks/d2be314c3ece3fbe.js"],"async":false},"[project]/node_modules/next/dist/client/app-dir/link.js <module evaluation>":{"id":22016,"name":"*","chunks":["/_next/static/chunks/7c92e96509cd355e.js","/_next/static/chunks/66ffe3fd1030c2a6.js","/_next/static/chunks/bc1ad5694f41cef0.js","/_next/static/chunks/405f69d0b8bdad66.js"],"async":false},"[project]/node_modules/next/dist/client/app-dir/link.js":{"id":22016,"name":"*","chunks":["/_next/static/chunks/7c92e96509cd355e.js","/_next/static/chunks/66ffe3fd1030c2a6.js","/_next/static/chunks/bc1ad5694f41cef0.js","/_next/static/chunks/405f69d0b8bdad66.js"],"async":false},"[project]/packages/playground/components/TranscriptViewer.tsx <module evaluation>":{"id":83609,"name":"*","chunks":["/_next/static/chunks/7c92e96509cd355e.js","/_next/static/chunks/66ffe3fd1030c2a6.js","/_next/static/chunks/bc1ad5694f41cef0.js","/_next/static/chunks/405f69d0b8bdad66.js"],"async":false},"[project]/packages/playground/components/TranscriptViewer.tsx":{"id":83609,"name":"*","chunks":["/_next/static/chunks/7c92e96509cd355e.js","/_next/static/chunks/66ffe3fd1030c2a6.js","/_next/static/chunks/bc1ad5694f41cef0.js","/_next/static/chunks/405f69d0b8bdad66.js"],"async":false}},"ssrModuleMapping":{"39756":{"*":{"id":2420,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__a218194e._.js","server/chunks/ssr/node_modules_next_dist_7769b563._.js"],"async":false}},"37457":{"*":{"id":24017,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__a218194e._.js","server/chunks/ssr/node_modules_next_dist_7769b563._.js"],"async":false}},"47257":{"*":{"id":77682,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__a218194e._.js","server/chunks/ssr/node_modules_next_dist_7769b563._.js"],"async":false}},"92825":{"*":{"id":97296,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__a218194e._.js","server/chunks/ssr/node_modules_next_dist_7769b563._.js"],"async":false}},"68017":{"*":{"id":61660,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__a218194e._.js","server/chunks/ssr/node_modules_next_dist_7769b563._.js"],"async":false}},"27201":{"*":{"id":60704,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__a218194e._.js","server/chunks/ssr/node_modules_next_dist_7769b563._.js"],"async":false}},"97367":{"*":{"id":90574,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__a218194e._.js","server/chunks/ssr/node_modules_next_dist_7769b563._.js"],"async":false}},"68027":{"*":{"id":40622,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__a218194e._.js","server/chunks/ssr/node_modules_next_dist_7769b563._.js"],"async":false}},"22016":{"*":{"id":38246,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__d143f79e._.js","server/chunks/ssr/node_modules_ea845e5f._.js","server/chunks/ssr/_70603404._.js","server/chunks/ssr/node_modules_6e9b70d7._.js","server/chunks/ssr/_6d67dac0._.js","server/chunks/ssr/_e3b4e74f._.js","server/chunks/ssr/packages_playground_components_TranscriptViewer_tsx_ba8ff423._.js"],"async":false}},"83609":{"*":{"id":43846,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__d143f79e._.js","server/chunks/ssr/node_modules_ea845e5f._.js","server/chunks/ssr/_70603404._.js","server/chunks/ssr/node_modules_6e9b70d7._.js","server/chunks/ssr/_6d67dac0._.js","server/chunks/ssr/_e3b4e74f._.js","server/chunks/ssr/packages_playground_components_TranscriptViewer_tsx_ba8ff423._.js"],"async":false}}},"edgeSSRModuleMapping":{},"rscModuleMapping":{"39756":{"*":{"id":26768,"name":"*","chunks":[],"async":false}},"37457":{"*":{"id":17910,"name":"*","chunks":[],"async":false}},"47257":{"*":{"id":92977,"name":"*","chunks":[],"async":false}},"92825":{"*":{"id":48552,"name":"*","chunks":[],"async":false}},"68017":{"*":{"id":83919,"name":"*","chunks":[],"async":false}},"27201":{"*":{"id":40771,"name":"*","chunks":[],"async":false}},"97367":{"*":{"id":24150,"name":"*","chunks":[],"async":false}},"68027":{"*":{"id":82509,"name":"*","chunks":[],"async":false}},"22016":{"*":{"id":84707,"name":"*","chunks":[],"async":false}},"83609":{"*":{"id":20516,"name":"*","chunks":[],"async":false}}},"edgeRscModuleMapping":{},"entryCSSFiles":{"[project]/node_modules/next/dist/client/components/builtin/global-error":[],"[project]/packages/playground/app/layout":[{"path":"static/chunks/225815167619f532.css","inlined":false}],"[project]/packages/playground/app/transcript/[experiment]/[timestamp]/[evalName]/[run]/page":[{"path":"static/chunks/225815167619f532.css","inlined":false}]},"entryJSFiles":{"[project]/node_modules/next/dist/client/components/builtin/global-error":["static/chunks/ff1a16fafef87110.js","static/chunks/d2be314c3ece3fbe.js"],"[project]/packages/playground/app/layout":["static/chunks/7c92e96509cd355e.js"],"[project]/packages/playground/app/transcript/[experiment]/[timestamp]/[evalName]/[run]/page":["static/chunks/7c92e96509cd355e.js","static/chunks/66ffe3fd1030c2a6.js","static/chunks/bc1ad5694f41cef0.js","static/chunks/405f69d0b8bdad66.js"]}}
|
|
@@ -5,6 +5,7 @@
|
|
|
5
5
|
"/evals/[name]/page": "app/evals/[name]/page.js",
|
|
6
6
|
"/evals/page": "app/evals/page.js",
|
|
7
7
|
"/experiments/[name]/[timestamp]/page": "app/experiments/[name]/[timestamp]/page.js",
|
|
8
|
+
"/experiments/[name]/page": "app/experiments/[name]/page.js",
|
|
8
9
|
"/experiments/page": "app/experiments/page.js",
|
|
9
10
|
"/page": "app/page.js",
|
|
10
11
|
"/transcript/[experiment]/[timestamp]/[evalName]/[run]/page": "app/transcript/[experiment]/[timestamp]/[evalName]/[run]/page.js"
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"names":[],"mappings":""}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
module.exports=[69046,a=>{a.n(a.i(80979))},43619,a=>{a.n(a.i(79962))},13718,a=>{a.n(a.i(85523))},18198,a=>{a.n(a.i(45518))},62212,a=>{a.n(a.i(66114))},22734,(a,b,c)=>{b.exports=a.x("fs",()=>require("fs"))},5419,a=>{"use strict";var b=a.i(22734),c=a.i(14747);function d(){return(0,c.resolve)(process.env.RESULTS_DIR||"./results")}function e(){return(0,c.resolve)(process.env.EVALS_DIR||"./evals")}function f(a){return/^\d{4}-\d{2}-\d{2}T/.test(a)}function g(a){let e=d();if(!(0,b.existsSync)(e))return{items:[],total:0};let g=[];!function a(d,e){let h=(0,b.readdirSync)(d,{withFileTypes:!0}).filter(a=>a.isDirectory()).map(a=>a.name);if(h.some(f))return void g.push(e);for(let b of h)a((0,c.join)(d,b),e?`${e}/${b}`:b)}(e,"");let h=g.length;return{items:(a?g.slice(0,a):g).map(a=>{let d,g=(0,c.join)(e,a),h=(0,b.readdirSync)(g,{withFileTypes:!0}).filter(a=>a.isDirectory()&&f(a.name)).map(a=>a.name).sort().reverse(),i=0,j=0;if(h.length>0){let a=(0,c.join)(g,h[0]);for(let d of(0,b.readdirSync)(a,{withFileTypes:!0}).filter(a=>a.isDirectory())){let e=(0,c.join)(a,d.name,"summary.json");if((0,b.existsSync)(e))try{let a=JSON.parse((0,b.readFileSync)(e,"utf-8"));i+=a.totalRuns??0,j+=a.passedRuns??0}catch{}}i>0&&(d=j/i*100)}return{name:a,timestamps:h,latestTimestamp:h[0]??null,latestPassRate:d,latestTotalRuns:i,latestPassedRuns:j}}),total:h}}function h(a,e){let f=(0,c.join)(d(),a,e);if(!(0,b.existsSync)(f))return null;let g=[];return!function a(d,e=""){for(let f of(0,b.readdirSync)(d,{withFileTypes:!0})){if(!f.isDirectory()||f.name.startsWith(".")||f.name.startsWith("run-"))continue;let h=e?`${e}/${f.name}`:f.name,i=(0,c.join)(d,f.name),j=(0,c.join)(i,"summary.json");(0,b.existsSync)(j)?g.push(h):a(i,h)}}(f),g.sort(),{name:a,timestamp:e,evals:g.map(a=>{let d=(0,c.join)(f,a),e=(0,c.join)(d,"summary.json"),g={totalRuns:0,passedRuns:0,passRate:"0%",meanDuration:0};if((0,b.existsSync)(e))try{g=JSON.parse((0,b.readFileSync)(e,"utf-8"))}catch{}let h=(0,b.readdirSync)(d,{withFileTypes:!0}).filter(a=>a.isDirectory()&&a.name.startsWith("run-")).map(a=>a.name).sort().map(a=>{let e=(0,c.join)(d,a,"result.json"),f=null;if((0,b.existsSync)(e))try{f=JSON.parse((0,b.readFileSync)(e,"utf-8"))}catch{}return{name:a,result:f}});return{name:a,totalRuns:g.totalRuns,passedRuns:g.passedRuns,passRate:"string"==typeof g.passRate?parseFloat(g.passRate):g.passRate,meanDuration:g.meanDuration,runs:h}})}}function i(a,e,f,g){let h=(0,c.join)(d(),a,e,f,g,"transcript.json");if(!(0,b.existsSync)(h))return null;try{return JSON.parse((0,b.readFileSync)(h,"utf-8"))}catch{return null}}function j(a){let d=e();if(!(0,b.existsSync)(d))return{items:[],total:0};let f=[];!function a(d,e=""){for(let g of(0,b.readdirSync)(d,{withFileTypes:!0})){if(!g.isDirectory()||g.name.startsWith("."))continue;let h=e?`${e}/${g.name}`:g.name,i=(0,c.join)(d,g.name),j=(0,c.join)(i,"PROMPT.md");(0,b.existsSync)(j)?f.push(h):a(i,h)}}(d),f.sort();let g=f.length;return{items:(a?f.slice(0,a):f).map(a=>{let e=(0,c.join)(d,a),f=(0,c.join)(e,"PROMPT.md"),g="";return(0,b.existsSync)(f)&&(g=(0,b.readFileSync)(f,"utf-8")),{name:a,prompt:g,files:(0,b.readdirSync)(e,{withFileTypes:!0}).filter(a=>a.isFile()).map(a=>a.name)}}),total:g}}function k(a){let d=(0,c.join)(e(),a);if(!(0,b.existsSync)(d))return null;let f=(0,c.join)(d,"PROMPT.md"),g="";(0,b.existsSync)(f)&&(g=(0,b.readFileSync)(f,"utf-8"));let h=[];!function a(d,e){for(let f of(0,b.readdirSync)(d,{withFileTypes:!0})){if("node_modules"===f.name||".git"===f.name)continue;let b=e?`${e}/${f.name}`:f.name;f.isDirectory()?a((0,c.join)(d,f.name),b):h.push(b)}}(d,"");let i={};for(let a of["PROMPT.md","EVAL.ts","EVAL.tsx","package.json"]){let e=(0,c.join)(d,a);if((0,b.existsSync)(e))try{i[a]=(0,b.readFileSync)(e,"utf-8")}catch{}}return{name:a,prompt:g,files:h,fileContents:i}}a.s(["getEvalDetail",()=>k,"getExperimentDetail",()=>h,"getTranscript",()=>i,"listEvals",()=>j,"listExperiments",()=>g])},22977,a=>{"use strict";var b=a.i(7997),c=a.i(95387);function d({className:a,size:d="default",...e}){return(0,b.jsx)("div",{"data-slot":"card","data-size":d,className:(0,c.cn)("ring-foreground/10 bg-card text-card-foreground gap-4 overflow-hidden rounded-lg py-4 text-xs/relaxed ring-1 has-[>img:first-child]:pt-0 data-[size=sm]:gap-3 data-[size=sm]:py-3 *:[img:first-child]:rounded-t-lg *:[img:last-child]:rounded-b-lg group/card flex flex-col",a),...e})}function e({className:a,...d}){return(0,b.jsx)("div",{"data-slot":"card-header",className:(0,c.cn)("gap-1 rounded-t-lg px-4 group-data-[size=sm]/card:px-3 [.border-b]:pb-4 group-data-[size=sm]/card:[.border-b]:pb-3 group/card-header @container/card-header grid auto-rows-min items-start has-data-[slot=card-action]:grid-cols-[1fr_auto] has-data-[slot=card-description]:grid-rows-[auto_auto]",a),...d})}function f({className:a,...d}){return(0,b.jsx)("div",{"data-slot":"card-title",className:(0,c.cn)("text-sm font-medium",a),...d})}function g({className:a,...d}){return(0,b.jsx)("div",{"data-slot":"card-content",className:(0,c.cn)("px-4 group-data-[size=sm]/card:px-3",a),...d})}a.s(["Card",()=>d,"CardContent",()=>g,"CardHeader",()=>e,"CardTitle",()=>f])},17018,a=>{"use strict";var b=a.i(7997),c=a.i(95936),d=a.i(5419),e=a.i(22977),f=a.i(20954);async function g(){let{items:a,total:g}=(0,d.listExperiments)(6),{items:h,total:i}=(0,d.listEvals)(6),j=a.reduce((a,b)=>a+b.timestamps.length,0),k=a.reduce((a,b)=>a+(b.latestPassedRuns??0),0),l=a.reduce((a,b)=>a+(b.latestTotalRuns??0),0);return(0,b.jsxs)("div",{className:"space-y-10",children:[(0,b.jsxs)("div",{children:[(0,b.jsx)("h1",{className:"text-2xl font-bold tracking-tight",children:"Overview"}),(0,b.jsx)("p",{className:"text-muted-foreground mt-1",children:"Playground for your agent evals to view experiments, evals, and compare runs."})]}),(0,b.jsxs)("div",{className:"grid grid-cols-1 sm:grid-cols-4 gap-4",children:[(0,b.jsx)(e.Card,{children:(0,b.jsxs)(e.CardContent,{className:"py-4 px-4",children:[(0,b.jsx)("div",{className:"text-xs text-muted-foreground",children:"Experiments"}),(0,b.jsx)("div",{className:"text-2xl font-bold mt-1",children:g})]})}),(0,b.jsx)(e.Card,{children:(0,b.jsxs)(e.CardContent,{className:"py-4 px-4",children:[(0,b.jsx)("div",{className:"text-xs text-muted-foreground",children:"Total Runs"}),(0,b.jsx)("div",{className:"text-2xl font-bold mt-1",children:j})]})}),(0,b.jsx)(e.Card,{children:(0,b.jsxs)(e.CardContent,{className:"py-4 px-4",children:[(0,b.jsx)("div",{className:"text-xs text-muted-foreground",children:"Eval Fixtures"}),(0,b.jsx)("div",{className:"text-2xl font-bold mt-1",children:i})]})}),(0,b.jsx)(e.Card,{children:(0,b.jsxs)(e.CardContent,{className:"py-4 px-4",children:[(0,b.jsx)("div",{className:"text-xs text-muted-foreground",children:"Latest Pass Rate"}),(0,b.jsx)("div",{className:"text-2xl font-bold mt-1",children:l>0?`${(l>0?k/l*100:0).toFixed(0)}%`:"—"})]})})]}),(0,b.jsxs)("section",{className:"space-y-3",children:[(0,b.jsxs)("div",{className:"flex items-center justify-between",children:[(0,b.jsx)("h2",{className:"text-lg font-semibold tracking-tight",children:"Recent Experiments"}),(0,b.jsx)(c.default,{href:"/experiments",className:"text-sm text-muted-foreground hover:text-foreground transition-colors",children:"View all →"})]}),0===a.length?(0,b.jsx)(e.Card,{children:(0,b.jsxs)(e.CardContent,{className:"py-8 text-center text-muted-foreground",children:["No experiments yet. Run ",(0,b.jsx)("code",{className:"text-foreground bg-muted px-1.5 py-0.5 rounded text-xs",children:"agent-eval"})," to get started."]})}):(0,b.jsx)("div",{className:"grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 gap-4",children:a.slice(0,6).map(a=>(0,b.jsx)(c.default,{href:a.latestTimestamp?`/experiments/${encodeURIComponent(a.name)}/${encodeURIComponent(a.latestTimestamp)}`:"/experiments",className:"block cursor-pointer",children:(0,b.jsxs)(e.Card,{className:"transition-colors hover:bg-muted",children:[(0,b.jsx)(e.CardHeader,{className:"pb-2",children:(0,b.jsx)(e.CardTitle,{className:"text-sm",children:a.name})}),(0,b.jsx)(e.CardContent,{children:(0,b.jsxs)("div",{className:"flex items-center gap-2",children:[void 0!==a.latestPassRate?(0,b.jsxs)(f.Badge,{variant:100===a.latestPassRate?"default":a.latestPassRate>=50?"secondary":"destructive",children:[a.latestPassRate.toFixed(0),"%"]}):(0,b.jsx)(f.Badge,{variant:"outline",children:"—"}),(0,b.jsxs)("span",{className:"text-xs text-muted-foreground",children:[a.timestamps.length," run",1!==a.timestamps.length?"s":""]})]})})]})},a.name))})]}),(0,b.jsxs)("section",{className:"space-y-3",children:[(0,b.jsxs)("div",{className:"flex items-center justify-between",children:[(0,b.jsx)("h2",{className:"text-lg font-semibold tracking-tight",children:"Eval Fixtures"}),(0,b.jsx)(c.default,{href:"/evals",className:"text-sm text-muted-foreground hover:text-foreground transition-colors",children:"View all →"})]}),0===h.length?(0,b.jsx)(e.Card,{children:(0,b.jsxs)(e.CardContent,{className:"py-8 text-center text-muted-foreground",children:["No evals found. Create evals in your ",(0,b.jsx)("code",{className:"text-foreground bg-muted px-1.5 py-0.5 rounded text-xs",children:"evals/"})," directory."]})}):(0,b.jsx)("div",{className:"grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 gap-4",children:h.slice(0,6).map(a=>(0,b.jsx)(c.default,{href:`/evals/${encodeURIComponent(a.name)}`,className:"block cursor-pointer",children:(0,b.jsxs)(e.Card,{className:"transition-colors hover:bg-muted",children:[(0,b.jsx)(e.CardHeader,{className:"pb-2",children:(0,b.jsx)(e.CardTitle,{className:"text-sm",children:a.name})}),(0,b.jsx)(e.CardContent,{children:a.prompt?(0,b.jsxs)("p",{className:"text-xs text-muted-foreground line-clamp-2",children:[a.prompt.slice(0,150),a.prompt.length>150?"...":""]}):(0,b.jsx)("p",{className:"text-xs text-muted-foreground",children:"No prompt"})})]})},a.name))})]}),(0,b.jsxs)("section",{className:"space-y-3",children:[(0,b.jsx)("div",{className:"flex items-center justify-between",children:(0,b.jsx)("h2",{className:"text-lg font-semibold tracking-tight",children:"Compare"})}),(0,b.jsx)(c.default,{href:"/compare",className:"block cursor-pointer",children:(0,b.jsx)(e.Card,{className:"transition-colors hover:bg-muted",children:(0,b.jsxs)(e.CardContent,{className:"py-8 text-center",children:[(0,b.jsx)("p",{className:"mx-auto max-w-sm text-sm text-muted-foreground",children:"Compare two experiment runs side-by-side to see pass rate deltas, duration changes, and per-eval breakdowns."}),(0,b.jsx)("p",{className:"text-xs text-foreground mt-2",children:"Open Compare →"})]})})})]})]})}a.s(["default",()=>g,"dynamic",0,"force-dynamic"])}];
|
|
1
|
+
module.exports=[69046,a=>{a.n(a.i(80979))},43619,a=>{a.n(a.i(79962))},13718,a=>{a.n(a.i(85523))},18198,a=>{a.n(a.i(45518))},62212,a=>{a.n(a.i(66114))},22734,(a,b,c)=>{b.exports=a.x("fs",()=>require("fs"))},5419,a=>{"use strict";var b=a.i(22734),c=a.i(14747);function d(){return(0,c.resolve)(process.env.RESULTS_DIR||"./results")}function e(){return(0,c.resolve)(process.env.EVALS_DIR||"./evals")}function f(a){return/^\d{4}-\d{2}-\d{2}T/.test(a)}function g(a){let e=d();if(!(0,b.existsSync)(e))return{items:[],total:0};let g=[];!function a(d,e){let h=(0,b.readdirSync)(d,{withFileTypes:!0}).filter(a=>a.isDirectory()).map(a=>a.name);if(h.some(f))return void g.push(e);for(let b of h)a((0,c.join)(d,b),e?`${e}/${b}`:b)}(e,"");let h=g.length;return{items:(a?g.slice(0,a):g).map(a=>{let d,g=(0,c.join)(e,a),h=(0,b.readdirSync)(g,{withFileTypes:!0}).filter(a=>a.isDirectory()&&f(a.name)).map(a=>a.name).sort().reverse(),i=0,j=0;if(h.length>0){let a=(0,c.join)(g,h[0]);for(let d of(0,b.readdirSync)(a,{withFileTypes:!0}).filter(a=>a.isDirectory())){let e=(0,c.join)(a,d.name,"summary.json");if((0,b.existsSync)(e))try{let a=JSON.parse((0,b.readFileSync)(e,"utf-8"));i+=a.totalRuns??0,j+=a.passedRuns??0}catch{}}i>0&&(d=j/i*100)}return{name:a,timestamps:h,latestTimestamp:h[0]??null,latestPassRate:d,latestTotalRuns:i,latestPassedRuns:j}}),total:h}}function h(a){let e=(0,c.join)(d(),a);if(!(0,b.existsSync)(e))return null;let f=(0,b.readdirSync)(e,{withFileTypes:!0}).filter(a=>a.isDirectory()).map(a=>a.name).sort().reverse();return{name:a,timestamps:f,latestTimestamp:f[0]??null}}function i(a,e){let f=(0,c.join)(d(),a,e);if(!(0,b.existsSync)(f))return null;let g=[];return!function a(d,e=""){for(let f of(0,b.readdirSync)(d,{withFileTypes:!0})){if(!f.isDirectory()||f.name.startsWith(".")||f.name.startsWith("run-"))continue;let h=e?`${e}/${f.name}`:f.name,i=(0,c.join)(d,f.name),j=(0,c.join)(i,"summary.json");(0,b.existsSync)(j)?g.push(h):a(i,h)}}(f),g.sort(),{name:a,timestamp:e,evals:g.map(a=>{let d=(0,c.join)(f,a),e=(0,c.join)(d,"summary.json"),g={totalRuns:0,passedRuns:0,passRate:"0%",meanDuration:0};if((0,b.existsSync)(e))try{g=JSON.parse((0,b.readFileSync)(e,"utf-8"))}catch{}let h=(0,b.readdirSync)(d,{withFileTypes:!0}).filter(a=>a.isDirectory()&&a.name.startsWith("run-")).map(a=>a.name).sort().map(a=>{let e=(0,c.join)(d,a,"result.json"),f=null;if((0,b.existsSync)(e))try{f=JSON.parse((0,b.readFileSync)(e,"utf-8"))}catch{}return{name:a,result:f}});return{name:a,totalRuns:g.totalRuns,passedRuns:g.passedRuns,passRate:"string"==typeof g.passRate?parseFloat(g.passRate):g.passRate,meanDuration:g.meanDuration,runs:h}})}}function j(a,e,f,g){let h=(0,c.join)(d(),a,e,f,g,"transcript.json");if(!(0,b.existsSync)(h))return null;try{return JSON.parse((0,b.readFileSync)(h,"utf-8"))}catch{return null}}function k(a){let d=e();if(!(0,b.existsSync)(d))return{items:[],total:0};let f=[];!function a(d,e=""){for(let g of(0,b.readdirSync)(d,{withFileTypes:!0})){if(!g.isDirectory()||g.name.startsWith("."))continue;let h=e?`${e}/${g.name}`:g.name,i=(0,c.join)(d,g.name),j=(0,c.join)(i,"PROMPT.md");(0,b.existsSync)(j)?f.push(h):a(i,h)}}(d),f.sort();let g=f.length;return{items:(a?f.slice(0,a):f).map(a=>{let e=(0,c.join)(d,a),f=(0,c.join)(e,"PROMPT.md"),g="";return(0,b.existsSync)(f)&&(g=(0,b.readFileSync)(f,"utf-8")),{name:a,prompt:g,files:(0,b.readdirSync)(e,{withFileTypes:!0}).filter(a=>a.isFile()).map(a=>a.name)}}),total:g}}function l(a){let d=(0,c.join)(e(),a);if(!(0,b.existsSync)(d))return null;let f=(0,c.join)(d,"PROMPT.md"),g="";(0,b.existsSync)(f)&&(g=(0,b.readFileSync)(f,"utf-8"));let h=[];!function a(d,e){for(let f of(0,b.readdirSync)(d,{withFileTypes:!0})){if("node_modules"===f.name||".git"===f.name)continue;let b=e?`${e}/${f.name}`:f.name;f.isDirectory()?a((0,c.join)(d,f.name),b):h.push(b)}}(d,"");let i={};for(let a of["PROMPT.md","EVAL.ts","EVAL.tsx","package.json"]){let e=(0,c.join)(d,a);if((0,b.existsSync)(e))try{i[a]=(0,b.readFileSync)(e,"utf-8")}catch{}}return{name:a,prompt:g,files:h,fileContents:i}}a.s(["getEvalDetail",()=>l,"getExperiment",()=>h,"getExperimentDetail",()=>i,"getTranscript",()=>j,"listEvals",()=>k,"listExperiments",()=>g])},22977,a=>{"use strict";var b=a.i(7997),c=a.i(95387);function d({className:a,size:d="default",...e}){return(0,b.jsx)("div",{"data-slot":"card","data-size":d,className:(0,c.cn)("ring-foreground/10 bg-card text-card-foreground gap-4 overflow-hidden rounded-lg py-4 text-xs/relaxed ring-1 has-[>img:first-child]:pt-0 data-[size=sm]:gap-3 data-[size=sm]:py-3 *:[img:first-child]:rounded-t-lg *:[img:last-child]:rounded-b-lg group/card flex flex-col",a),...e})}function e({className:a,...d}){return(0,b.jsx)("div",{"data-slot":"card-header",className:(0,c.cn)("gap-1 rounded-t-lg px-4 group-data-[size=sm]/card:px-3 [.border-b]:pb-4 group-data-[size=sm]/card:[.border-b]:pb-3 group/card-header @container/card-header grid auto-rows-min items-start has-data-[slot=card-action]:grid-cols-[1fr_auto] has-data-[slot=card-description]:grid-rows-[auto_auto]",a),...d})}function f({className:a,...d}){return(0,b.jsx)("div",{"data-slot":"card-title",className:(0,c.cn)("text-sm font-medium",a),...d})}function g({className:a,...d}){return(0,b.jsx)("div",{"data-slot":"card-content",className:(0,c.cn)("px-4 group-data-[size=sm]/card:px-3",a),...d})}a.s(["Card",()=>d,"CardContent",()=>g,"CardHeader",()=>e,"CardTitle",()=>f])},17018,a=>{"use strict";var b=a.i(7997),c=a.i(95936),d=a.i(5419),e=a.i(22977),f=a.i(20954);async function g(){let{items:a,total:g}=(0,d.listExperiments)(6),{items:h,total:i}=(0,d.listEvals)(6),j=a.reduce((a,b)=>a+b.timestamps.length,0),k=a.reduce((a,b)=>a+(b.latestPassedRuns??0),0),l=a.reduce((a,b)=>a+(b.latestTotalRuns??0),0);return(0,b.jsxs)("div",{className:"space-y-10",children:[(0,b.jsxs)("div",{children:[(0,b.jsx)("h1",{className:"text-2xl font-bold tracking-tight",children:"Overview"}),(0,b.jsx)("p",{className:"text-muted-foreground mt-1",children:"Playground for your agent evals to view experiments, evals, and compare runs."})]}),(0,b.jsxs)("div",{className:"grid grid-cols-1 sm:grid-cols-4 gap-4",children:[(0,b.jsx)(e.Card,{children:(0,b.jsxs)(e.CardContent,{className:"py-4 px-4",children:[(0,b.jsx)("div",{className:"text-xs text-muted-foreground",children:"Experiments"}),(0,b.jsx)("div",{className:"text-2xl font-bold mt-1",children:g})]})}),(0,b.jsx)(e.Card,{children:(0,b.jsxs)(e.CardContent,{className:"py-4 px-4",children:[(0,b.jsx)("div",{className:"text-xs text-muted-foreground",children:"Total Runs"}),(0,b.jsx)("div",{className:"text-2xl font-bold mt-1",children:j})]})}),(0,b.jsx)(e.Card,{children:(0,b.jsxs)(e.CardContent,{className:"py-4 px-4",children:[(0,b.jsx)("div",{className:"text-xs text-muted-foreground",children:"Eval Fixtures"}),(0,b.jsx)("div",{className:"text-2xl font-bold mt-1",children:i})]})}),(0,b.jsx)(e.Card,{children:(0,b.jsxs)(e.CardContent,{className:"py-4 px-4",children:[(0,b.jsx)("div",{className:"text-xs text-muted-foreground",children:"Latest Pass Rate"}),(0,b.jsx)("div",{className:"text-2xl font-bold mt-1",children:l>0?`${(l>0?k/l*100:0).toFixed(0)}%`:"—"})]})})]}),(0,b.jsxs)("section",{className:"space-y-3",children:[(0,b.jsxs)("div",{className:"flex items-center justify-between",children:[(0,b.jsx)("h2",{className:"text-lg font-semibold tracking-tight",children:"Recent Experiments"}),(0,b.jsx)(c.default,{href:"/experiments",className:"text-sm text-muted-foreground hover:text-foreground transition-colors",children:"View all →"})]}),0===a.length?(0,b.jsx)(e.Card,{children:(0,b.jsxs)(e.CardContent,{className:"py-8 text-center text-muted-foreground",children:["No experiments yet. Run ",(0,b.jsx)("code",{className:"text-foreground bg-muted px-1.5 py-0.5 rounded text-xs",children:"agent-eval"})," to get started."]})}):(0,b.jsx)("div",{className:"grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 gap-4",children:a.slice(0,6).map(a=>(0,b.jsx)(c.default,{href:a.latestTimestamp?`/experiments/${encodeURIComponent(a.name)}/${encodeURIComponent(a.latestTimestamp)}`:"/experiments",className:"block cursor-pointer",children:(0,b.jsxs)(e.Card,{className:"transition-colors hover:bg-muted",children:[(0,b.jsx)(e.CardHeader,{className:"pb-2",children:(0,b.jsx)(e.CardTitle,{className:"text-sm",children:a.name})}),(0,b.jsx)(e.CardContent,{children:(0,b.jsxs)("div",{className:"flex items-center gap-2",children:[void 0!==a.latestPassRate?(0,b.jsxs)(f.Badge,{variant:100===a.latestPassRate?"default":a.latestPassRate>=50?"secondary":"destructive",children:[a.latestPassRate.toFixed(0),"%"]}):(0,b.jsx)(f.Badge,{variant:"outline",children:"—"}),(0,b.jsxs)("span",{className:"text-xs text-muted-foreground",children:[a.timestamps.length," run",1!==a.timestamps.length?"s":""]})]})})]})},a.name))})]}),(0,b.jsxs)("section",{className:"space-y-3",children:[(0,b.jsxs)("div",{className:"flex items-center justify-between",children:[(0,b.jsx)("h2",{className:"text-lg font-semibold tracking-tight",children:"Eval Fixtures"}),(0,b.jsx)(c.default,{href:"/evals",className:"text-sm text-muted-foreground hover:text-foreground transition-colors",children:"View all →"})]}),0===h.length?(0,b.jsx)(e.Card,{children:(0,b.jsxs)(e.CardContent,{className:"py-8 text-center text-muted-foreground",children:["No evals found. Create evals in your ",(0,b.jsx)("code",{className:"text-foreground bg-muted px-1.5 py-0.5 rounded text-xs",children:"evals/"})," directory."]})}):(0,b.jsx)("div",{className:"grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 gap-4",children:h.slice(0,6).map(a=>(0,b.jsx)(c.default,{href:`/evals/${encodeURIComponent(a.name)}`,className:"block cursor-pointer",children:(0,b.jsxs)(e.Card,{className:"transition-colors hover:bg-muted",children:[(0,b.jsx)(e.CardHeader,{className:"pb-2",children:(0,b.jsx)(e.CardTitle,{className:"text-sm",children:a.name})}),(0,b.jsx)(e.CardContent,{children:a.prompt?(0,b.jsxs)("p",{className:"text-xs text-muted-foreground line-clamp-2",children:[a.prompt.slice(0,150),a.prompt.length>150?"...":""]}):(0,b.jsx)("p",{className:"text-xs text-muted-foreground",children:"No prompt"})})]})},a.name))})]}),(0,b.jsxs)("section",{className:"space-y-3",children:[(0,b.jsx)("div",{className:"flex items-center justify-between",children:(0,b.jsx)("h2",{className:"text-lg font-semibold tracking-tight",children:"Compare"})}),(0,b.jsx)(c.default,{href:"/compare",className:"block cursor-pointer",children:(0,b.jsx)(e.Card,{className:"transition-colors hover:bg-muted",children:(0,b.jsxs)(e.CardContent,{className:"py-8 text-center",children:[(0,b.jsx)("p",{className:"mx-auto max-w-sm text-sm text-muted-foreground",children:"Compare two experiment runs side-by-side to see pass rate deltas, duration changes, and per-eval breakdowns."}),(0,b.jsx)("p",{className:"text-xs text-foreground mt-2",children:"Open Compare →"})]})})})]})]})}a.s(["default",()=>g,"dynamic",0,"force-dynamic"])}];
|
|
2
2
|
|
|
3
3
|
//# sourceMappingURL=%5Broot-of-the-server%5D__3702960d._.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../../packages/playground/lib/data.ts","../../../../../../packages/playground/components/ui/card.tsx","../../../../../../packages/playground/app/page.tsx"],"sourcesContent":["/**\n * Server-side data access for the playground.\n * Reads JSON files from the results/ and evals/ directories.\n * Directory paths are provided via RESULTS_DIR and EVALS_DIR env vars.\n */\n\nimport { readdirSync, readFileSync, existsSync } from \"fs\";\nimport { join, resolve } from \"path\";\n\nfunction getResultsDir(): string {\n return resolve(process.env.RESULTS_DIR || \"./results\");\n}\n\nfunction getEvalsDir(): string {\n return resolve(process.env.EVALS_DIR || \"./evals\");\n}\n\n/** Check if a directory name looks like an ISO timestamp (used as run ID) */\nfunction isTimestamp(name: string): boolean {\n return /^\\d{4}-\\d{2}-\\d{2}T/.test(name);\n}\n\n/** List experiments from the results directory. Pass limit to cap expensive per-item reads. */\nexport function listExperiments(limit?: number) {\n const resultsDir = getResultsDir();\n\n if (!existsSync(resultsDir)) {\n return { items: [], total: 0 };\n }\n\n // Discover experiments by walking the directory tree until we find\n // timestamp directories. The path from resultsDir to the parent of the\n // first timestamp is the experiment name (e.g. \"my-config/openai/gpt-5.2-codex\").\n const entries: string[] = [];\n\n function walk(dir: string, prefix: string) {\n const children = readdirSync(dir, { withFileTypes: true })\n .filter((e) => e.isDirectory())\n .map((e) => e.name);\n\n // If any child looks like a timestamp, this directory is an experiment\n if (children.some(isTimestamp)) {\n entries.push(prefix);\n return;\n }\n\n // Otherwise keep recursing\n for (const child of children) {\n walk(join(dir, child), prefix ? `${prefix}/${child}` : child);\n }\n }\n\n walk(resultsDir, \"\");\n\n const total = entries.length;\n const toProcess = limit ? entries.slice(0, limit) : entries;\n\n const items = toProcess.map((name) => {\n const expDir = join(resultsDir, name);\n const timestamps = readdirSync(expDir, { withFileTypes: true })\n .filter((e) => e.isDirectory() && isTimestamp(e.name))\n .map((e) => e.name)\n .sort()\n .reverse();\n\n let latestPassRate: number | undefined;\n let latestTotalRuns = 0;\n let latestPassedRuns = 0;\n\n if (timestamps.length > 0) {\n const latestDir = join(expDir, timestamps[0]);\n const evalDirs = readdirSync(latestDir, { withFileTypes: true }).filter(\n (e) => e.isDirectory()\n );\n\n for (const evalDir of evalDirs) {\n const summaryPath = join(latestDir, evalDir.name, \"summary.json\");\n if (existsSync(summaryPath)) {\n try {\n const summary = JSON.parse(readFileSync(summaryPath, \"utf-8\"));\n latestTotalRuns += summary.totalRuns ?? 0;\n latestPassedRuns += summary.passedRuns ?? 0;\n } catch {\n // Skip invalid summary files\n }\n }\n }\n\n if (latestTotalRuns > 0) {\n latestPassRate = (latestPassedRuns / latestTotalRuns) * 100;\n }\n }\n\n return {\n name,\n timestamps,\n latestTimestamp: timestamps[0] ?? null,\n latestPassRate,\n latestTotalRuns,\n latestPassedRuns,\n };\n });\n\n return { items, total };\n}\n\n/** Get timestamps for a specific experiment */\nexport function getExperiment(name: string) {\n const expDir = join(getResultsDir(), name);\n\n if (!existsSync(expDir)) {\n return null;\n }\n\n const timestamps = readdirSync(expDir, { withFileTypes: true })\n .filter((e) => e.isDirectory())\n .map((e) => e.name)\n .sort()\n .reverse();\n\n return { name, timestamps, latestTimestamp: timestamps[0] ?? null };\n}\n\n/** Get full experiment detail for a specific timestamp */\nexport function getExperimentDetail(name: string, timestamp: string) {\n const runDir = join(getResultsDir(), name, timestamp);\n\n if (!existsSync(runDir)) {\n return null;\n }\n\n // Recursively discover all eval result directories (directories with summary.json)\n const evalDirs: string[] = [];\n function walk(dir: string, basePath: string = \"\") {\n const dirEntries = readdirSync(dir, { withFileTypes: true });\n\n for (const entry of dirEntries) {\n if (!entry.isDirectory() || entry.name.startsWith(\".\") || entry.name.startsWith(\"run-\")) {\n continue;\n }\n\n const relativePath = basePath ? `${basePath}/${entry.name}` : entry.name;\n const entryPath = join(dir, entry.name);\n const summaryPath = join(entryPath, \"summary.json\");\n\n // Check if this is an eval result directory (has summary.json)\n if (existsSync(summaryPath)) {\n evalDirs.push(relativePath);\n } else {\n // Not an eval result, recurse into it\n walk(entryPath, relativePath);\n }\n }\n }\n\n walk(runDir);\n evalDirs.sort();\n\n const evals = evalDirs.map((evalName) => {\n const evalDir = join(runDir, evalName);\n const summaryPath = join(evalDir, \"summary.json\");\n\n let summary = {\n totalRuns: 0,\n passedRuns: 0,\n passRate: \"0%\",\n meanDuration: 0,\n };\n if (existsSync(summaryPath)) {\n try {\n summary = JSON.parse(readFileSync(summaryPath, \"utf-8\"));\n } catch {\n // Use defaults\n }\n }\n\n // List run directories\n const runDirs = readdirSync(evalDir, { withFileTypes: true })\n .filter((e) => e.isDirectory() && e.name.startsWith(\"run-\"))\n .map((e) => e.name)\n .sort();\n\n // Read each run's result.json\n const runs = runDirs.map((runDirName) => {\n const resultPath = join(evalDir, runDirName, \"result.json\");\n let result = null;\n if (existsSync(resultPath)) {\n try {\n result = JSON.parse(readFileSync(resultPath, \"utf-8\"));\n } catch {\n // Skip\n }\n }\n return { name: runDirName, result };\n });\n\n return {\n name: evalName,\n totalRuns: summary.totalRuns,\n passedRuns: summary.passedRuns,\n passRate:\n typeof summary.passRate === \"string\"\n ? parseFloat(summary.passRate)\n : summary.passRate,\n meanDuration: summary.meanDuration,\n runs,\n };\n });\n\n return { name, timestamp, evals };\n}\n\n/** Get result for a specific run */\nexport function getRunResult(\n experiment: string,\n timestamp: string,\n evalName: string,\n run: string\n) {\n const resultPath = join(\n getResultsDir(),\n experiment,\n timestamp,\n evalName,\n run,\n \"result.json\"\n );\n\n if (!existsSync(resultPath)) {\n return null;\n }\n\n try {\n return { result: JSON.parse(readFileSync(resultPath, \"utf-8\")) };\n } catch {\n return null;\n }\n}\n\n/** Get parsed transcript for a specific run */\nexport function getTranscript(\n experiment: string,\n timestamp: string,\n evalName: string,\n run: string\n) {\n const transcriptPath = join(\n getResultsDir(),\n experiment,\n timestamp,\n evalName,\n run,\n \"transcript.json\"\n );\n\n if (!existsSync(transcriptPath)) {\n return null;\n }\n\n try {\n return JSON.parse(readFileSync(transcriptPath, \"utf-8\"));\n } catch {\n return null;\n }\n}\n\n/** List evals from the evals directory. Pass limit to cap per-item reads. */\nexport function listEvals(limit?: number) {\n const evalsDir = getEvalsDir();\n\n if (!existsSync(evalsDir)) {\n return { items: [], total: 0 };\n }\n\n // Recursively discover all evals (directories with PROMPT.md)\n const entries: string[] = [];\n function walk(dir: string, basePath: string = \"\") {\n const dirEntries = readdirSync(dir, { withFileTypes: true });\n\n for (const entry of dirEntries) {\n if (!entry.isDirectory() || entry.name.startsWith(\".\")) {\n continue;\n }\n\n const relativePath = basePath ? `${basePath}/${entry.name}` : entry.name;\n const entryPath = join(dir, entry.name);\n const promptPath = join(entryPath, \"PROMPT.md\");\n\n // Check if this is an eval directory (has PROMPT.md)\n if (existsSync(promptPath)) {\n entries.push(relativePath);\n } else {\n // Not an eval, recurse into it\n walk(entryPath, relativePath);\n }\n }\n }\n\n walk(evalsDir);\n entries.sort();\n\n const total = entries.length;\n const toProcess = limit ? entries.slice(0, limit) : entries;\n\n const items = toProcess.map((name) => {\n const evalDir = join(evalsDir, name);\n const promptPath = join(evalDir, \"PROMPT.md\");\n let prompt = \"\";\n if (existsSync(promptPath)) {\n prompt = readFileSync(promptPath, \"utf-8\");\n }\n\n const files = readdirSync(evalDir, { withFileTypes: true })\n .filter((e) => e.isFile())\n .map((e) => e.name);\n\n return { name, prompt, files };\n });\n\n return { items, total };\n}\n\n/** Get detail for a specific eval */\nexport function getEvalDetail(name: string) {\n const evalDir = join(getEvalsDir(), name);\n\n if (!existsSync(evalDir)) {\n return null;\n }\n\n const promptPath = join(evalDir, \"PROMPT.md\");\n let prompt = \"\";\n if (existsSync(promptPath)) {\n prompt = readFileSync(promptPath, \"utf-8\");\n }\n\n // Recursively list files\n const files: string[] = [];\n function walk(dir: string, prefix: string) {\n const entries = readdirSync(dir, { withFileTypes: true });\n for (const entry of entries) {\n if (entry.name === \"node_modules\" || entry.name === \".git\") continue;\n const relativePath = prefix ? `${prefix}/${entry.name}` : entry.name;\n if (entry.isDirectory()) {\n walk(join(dir, entry.name), relativePath);\n } else {\n files.push(relativePath);\n }\n }\n }\n walk(evalDir, \"\");\n\n // Read file contents for key files\n const fileContents: Record<string, string> = {};\n const keyFiles = [\"PROMPT.md\", \"EVAL.ts\", \"EVAL.tsx\", \"package.json\"];\n for (const file of keyFiles) {\n const filePath = join(evalDir, file);\n if (existsSync(filePath)) {\n try {\n fileContents[file] = readFileSync(filePath, \"utf-8\");\n } catch {\n // Skip unreadable files\n }\n }\n }\n\n return { name, prompt, files, fileContents };\n}\n","import * as React from \"react\"\n\nimport { cn } from \"@/lib/utils\"\n\nfunction Card({\n className,\n size = \"default\",\n ...props\n}: React.ComponentProps<\"div\"> & { size?: \"default\" | \"sm\" }) {\n return (\n <div\n data-slot=\"card\"\n data-size={size}\n className={cn(\"ring-foreground/10 bg-card text-card-foreground gap-4 overflow-hidden rounded-lg py-4 text-xs/relaxed ring-1 has-[>img:first-child]:pt-0 data-[size=sm]:gap-3 data-[size=sm]:py-3 *:[img:first-child]:rounded-t-lg *:[img:last-child]:rounded-b-lg group/card flex flex-col\", className)}\n {...props}\n />\n )\n}\n\nfunction CardHeader({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card-header\"\n className={cn(\n \"gap-1 rounded-t-lg px-4 group-data-[size=sm]/card:px-3 [.border-b]:pb-4 group-data-[size=sm]/card:[.border-b]:pb-3 group/card-header @container/card-header grid auto-rows-min items-start has-data-[slot=card-action]:grid-cols-[1fr_auto] has-data-[slot=card-description]:grid-rows-[auto_auto]\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction CardTitle({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card-title\"\n className={cn(\"text-sm font-medium\", className)}\n {...props}\n />\n )\n}\n\nfunction CardDescription({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card-description\"\n className={cn(\"text-muted-foreground text-xs/relaxed\", className)}\n {...props}\n />\n )\n}\n\nfunction CardAction({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card-action\"\n className={cn(\n \"col-start-2 row-span-2 row-start-1 self-start justify-self-end\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction CardContent({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card-content\"\n className={cn(\"px-4 group-data-[size=sm]/card:px-3\", className)}\n {...props}\n />\n )\n}\n\nfunction CardFooter({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card-footer\"\n className={cn(\"rounded-b-lg px-4 group-data-[size=sm]/card:px-3 [.border-t]:pt-4 group-data-[size=sm]/card:[.border-t]:pt-3 flex items-center\", className)}\n {...props}\n />\n )\n}\n\nexport {\n Card,\n CardHeader,\n CardFooter,\n CardTitle,\n CardAction,\n CardDescription,\n CardContent,\n}\n","import Link from \"next/link\";\nimport { listExperiments, listEvals } from \"@/lib/data\";\nimport { Card, CardContent, CardHeader, CardTitle } from \"@/components/ui/card\";\nimport { Badge } from \"@/components/ui/badge\";\n\nexport const dynamic = \"force-dynamic\";\n\nexport default async function HomePage() {\n const { items: experiments, total: totalExperiments } = listExperiments(6);\n const { items: evals, total: totalEvals } = listEvals(6);\n\n const totalRuns = experiments.reduce((sum, e) => sum + e.timestamps.length, 0);\n\n // Compute aggregate pass rate across all latest experiment runs\n const totalPassed = experiments.reduce((sum, e) => sum + (e.latestPassedRuns ?? 0), 0);\n const totalAttempted = experiments.reduce((sum, e) => sum + (e.latestTotalRuns ?? 0), 0);\n const overallPassRate = totalAttempted > 0 ? (totalPassed / totalAttempted) * 100 : 0;\n\n return (\n <div className=\"space-y-10\">\n {/* Hero */}\n <div>\n <h1 className=\"text-2xl font-bold tracking-tight\">Overview</h1>\n <p className=\"text-muted-foreground mt-1\">\n Playground for your agent evals to view experiments, evals, and compare runs.\n </p>\n </div>\n\n {/* Stats */}\n <div className=\"grid grid-cols-1 sm:grid-cols-4 gap-4\">\n <Card>\n <CardContent className=\"py-4 px-4\">\n <div className=\"text-xs text-muted-foreground\">Experiments</div>\n <div className=\"text-2xl font-bold mt-1\">{totalExperiments}</div>\n </CardContent>\n </Card>\n <Card>\n <CardContent className=\"py-4 px-4\">\n <div className=\"text-xs text-muted-foreground\">Total Runs</div>\n <div className=\"text-2xl font-bold mt-1\">{totalRuns}</div>\n </CardContent>\n </Card>\n <Card>\n <CardContent className=\"py-4 px-4\">\n <div className=\"text-xs text-muted-foreground\">Eval Fixtures</div>\n <div className=\"text-2xl font-bold mt-1\">{totalEvals}</div>\n </CardContent>\n </Card>\n <Card>\n <CardContent className=\"py-4 px-4\">\n <div className=\"text-xs text-muted-foreground\">Latest Pass Rate</div>\n <div className=\"text-2xl font-bold mt-1\">\n {totalAttempted > 0 ? `${overallPassRate.toFixed(0)}%` : \"—\"}\n </div>\n </CardContent>\n </Card>\n </div>\n\n {/* Recent Experiments */}\n <section className=\"space-y-3\">\n <div className=\"flex items-center justify-between\">\n <h2 className=\"text-lg font-semibold tracking-tight\">Recent Experiments</h2>\n <Link href=\"/experiments\" className=\"text-sm text-muted-foreground hover:text-foreground transition-colors\">\n View all →\n </Link>\n </div>\n {experiments.length === 0 ? (\n <Card>\n <CardContent className=\"py-8 text-center text-muted-foreground\">\n No experiments yet. Run <code className=\"text-foreground bg-muted px-1.5 py-0.5 rounded text-xs\">agent-eval</code> to get started.\n </CardContent>\n </Card>\n ) : (\n <div className=\"grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 gap-4\">\n {experiments.slice(0, 6).map((exp) => (\n <Link\n key={exp.name}\n href={exp.latestTimestamp\n ? `/experiments/${encodeURIComponent(exp.name)}/${encodeURIComponent(exp.latestTimestamp)}`\n : \"/experiments\"}\n className=\"block cursor-pointer\"\n >\n <Card className=\"transition-colors hover:bg-muted\">\n <CardHeader className=\"pb-2\">\n <CardTitle className=\"text-sm\">{exp.name}</CardTitle>\n </CardHeader>\n <CardContent>\n <div className=\"flex items-center gap-2\">\n {exp.latestPassRate !== undefined ? (\n <Badge\n variant={\n exp.latestPassRate === 100\n ? \"default\"\n : exp.latestPassRate >= 50\n ? \"secondary\"\n : \"destructive\"\n }\n >\n {exp.latestPassRate.toFixed(0)}%\n </Badge>\n ) : (\n <Badge variant=\"outline\">—</Badge>\n )}\n <span className=\"text-xs text-muted-foreground\">\n {exp.timestamps.length} run{exp.timestamps.length !== 1 ? \"s\" : \"\"}\n </span>\n </div>\n </CardContent>\n </Card>\n </Link>\n ))}\n </div>\n )}\n </section>\n\n {/* Evals Preview */}\n <section className=\"space-y-3\">\n <div className=\"flex items-center justify-between\">\n <h2 className=\"text-lg font-semibold tracking-tight\">Eval Fixtures</h2>\n <Link href=\"/evals\" className=\"text-sm text-muted-foreground hover:text-foreground transition-colors\">\n View all →\n </Link>\n </div>\n {evals.length === 0 ? (\n <Card>\n <CardContent className=\"py-8 text-center text-muted-foreground\">\n No evals found. Create evals in your <code className=\"text-foreground bg-muted px-1.5 py-0.5 rounded text-xs\">evals/</code> directory.\n </CardContent>\n </Card>\n ) : (\n <div className=\"grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 gap-4\">\n {evals.slice(0, 6).map((evalInfo) => (\n <Link\n key={evalInfo.name}\n href={`/evals/${encodeURIComponent(evalInfo.name)}`}\n className=\"block cursor-pointer\"\n >\n <Card className=\"transition-colors hover:bg-muted\">\n <CardHeader className=\"pb-2\">\n <CardTitle className=\"text-sm\">{evalInfo.name}</CardTitle>\n </CardHeader>\n <CardContent>\n {evalInfo.prompt ? (\n <p className=\"text-xs text-muted-foreground line-clamp-2\">\n {evalInfo.prompt.slice(0, 150)}\n {evalInfo.prompt.length > 150 ? \"...\" : \"\"}\n </p>\n ) : (\n <p className=\"text-xs text-muted-foreground\">No prompt</p>\n )}\n </CardContent>\n </Card>\n </Link>\n ))}\n </div>\n )}\n </section>\n\n {/* Compare CTA */}\n <section className=\"space-y-3\">\n <div className=\"flex items-center justify-between\">\n <h2 className=\"text-lg font-semibold tracking-tight\">Compare</h2>\n </div>\n <Link href=\"/compare\" className=\"block cursor-pointer\">\n <Card className=\"transition-colors hover:bg-muted\">\n <CardContent className=\"py-8 text-center\">\n <p className=\"mx-auto max-w-sm text-sm text-muted-foreground\">\n Compare two experiment runs side-by-side to see pass rate deltas, duration changes, and per-eval breakdowns.\n </p>\n <p className=\"text-xs text-foreground mt-2\">\n Open Compare →\n </p>\n </CardContent>\n </Card>\n </Link>\n </section>\n </div>\n );\n}\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["../../../../../../packages/playground/lib/data.ts","../../../../../../packages/playground/components/ui/card.tsx","../../../../../../packages/playground/app/page.tsx"],"sourcesContent":["/**\n * Server-side data access for the playground.\n * Reads JSON files from the results/ and evals/ directories.\n * Directory paths are provided via RESULTS_DIR and EVALS_DIR env vars.\n */\n\nimport { readdirSync, readFileSync, existsSync } from \"fs\";\nimport { join, resolve } from \"path\";\n\nfunction getResultsDir(): string {\n return resolve(process.env.RESULTS_DIR || \"./results\");\n}\n\nfunction getEvalsDir(): string {\n return resolve(process.env.EVALS_DIR || \"./evals\");\n}\n\n/** Check if a directory name looks like an ISO timestamp (used as run ID) */\nfunction isTimestamp(name: string): boolean {\n return /^\\d{4}-\\d{2}-\\d{2}T/.test(name);\n}\n\n/** List experiments from the results directory. Pass limit to cap expensive per-item reads. */\nexport function listExperiments(limit?: number) {\n const resultsDir = getResultsDir();\n\n if (!existsSync(resultsDir)) {\n return { items: [], total: 0 };\n }\n\n // Discover experiments by walking the directory tree until we find\n // timestamp directories. The path from resultsDir to the parent of the\n // first timestamp is the experiment name (e.g. \"my-config/openai/gpt-5.2-codex\").\n const entries: string[] = [];\n\n function walk(dir: string, prefix: string) {\n const children = readdirSync(dir, { withFileTypes: true })\n .filter((e) => e.isDirectory())\n .map((e) => e.name);\n\n // If any child looks like a timestamp, this directory is an experiment\n if (children.some(isTimestamp)) {\n entries.push(prefix);\n return;\n }\n\n // Otherwise keep recursing\n for (const child of children) {\n walk(join(dir, child), prefix ? `${prefix}/${child}` : child);\n }\n }\n\n walk(resultsDir, \"\");\n\n const total = entries.length;\n const toProcess = limit ? entries.slice(0, limit) : entries;\n\n const items = toProcess.map((name) => {\n const expDir = join(resultsDir, name);\n const timestamps = readdirSync(expDir, { withFileTypes: true })\n .filter((e) => e.isDirectory() && isTimestamp(e.name))\n .map((e) => e.name)\n .sort()\n .reverse();\n\n let latestPassRate: number | undefined;\n let latestTotalRuns = 0;\n let latestPassedRuns = 0;\n\n if (timestamps.length > 0) {\n const latestDir = join(expDir, timestamps[0]);\n const evalDirs = readdirSync(latestDir, { withFileTypes: true }).filter(\n (e) => e.isDirectory()\n );\n\n for (const evalDir of evalDirs) {\n const summaryPath = join(latestDir, evalDir.name, \"summary.json\");\n if (existsSync(summaryPath)) {\n try {\n const summary = JSON.parse(readFileSync(summaryPath, \"utf-8\"));\n latestTotalRuns += summary.totalRuns ?? 0;\n latestPassedRuns += summary.passedRuns ?? 0;\n } catch {\n // Skip invalid summary files\n }\n }\n }\n\n if (latestTotalRuns > 0) {\n latestPassRate = (latestPassedRuns / latestTotalRuns) * 100;\n }\n }\n\n return {\n name,\n timestamps,\n latestTimestamp: timestamps[0] ?? null,\n latestPassRate,\n latestTotalRuns,\n latestPassedRuns,\n };\n });\n\n return { items, total };\n}\n\n/** Get timestamps for a specific experiment */\nexport function getExperiment(name: string) {\n const expDir = join(getResultsDir(), name);\n\n if (!existsSync(expDir)) {\n return null;\n }\n\n const timestamps = readdirSync(expDir, { withFileTypes: true })\n .filter((e) => e.isDirectory())\n .map((e) => e.name)\n .sort()\n .reverse();\n\n return { name, timestamps, latestTimestamp: timestamps[0] ?? null };\n}\n\n/** Get full experiment detail for a specific timestamp */\nexport function getExperimentDetail(name: string, timestamp: string) {\n const runDir = join(getResultsDir(), name, timestamp);\n\n if (!existsSync(runDir)) {\n return null;\n }\n\n // Recursively discover all eval result directories (directories with summary.json)\n const evalDirs: string[] = [];\n function walk(dir: string, basePath: string = \"\") {\n const dirEntries = readdirSync(dir, { withFileTypes: true });\n\n for (const entry of dirEntries) {\n if (!entry.isDirectory() || entry.name.startsWith(\".\") || entry.name.startsWith(\"run-\")) {\n continue;\n }\n\n const relativePath = basePath ? `${basePath}/${entry.name}` : entry.name;\n const entryPath = join(dir, entry.name);\n const summaryPath = join(entryPath, \"summary.json\");\n\n // Check if this is an eval result directory (has summary.json)\n if (existsSync(summaryPath)) {\n evalDirs.push(relativePath);\n } else {\n // Not an eval result, recurse into it\n walk(entryPath, relativePath);\n }\n }\n }\n\n walk(runDir);\n evalDirs.sort();\n\n const evals = evalDirs.map((evalName) => {\n const evalDir = join(runDir, evalName);\n const summaryPath = join(evalDir, \"summary.json\");\n\n let summary = {\n totalRuns: 0,\n passedRuns: 0,\n passRate: \"0%\",\n meanDuration: 0,\n };\n if (existsSync(summaryPath)) {\n try {\n summary = JSON.parse(readFileSync(summaryPath, \"utf-8\"));\n } catch {\n // Use defaults\n }\n }\n\n // List run directories\n const runDirs = readdirSync(evalDir, { withFileTypes: true })\n .filter((e) => e.isDirectory() && e.name.startsWith(\"run-\"))\n .map((e) => e.name)\n .sort();\n\n // Read each run's result.json\n const runs = runDirs.map((runDirName) => {\n const resultPath = join(evalDir, runDirName, \"result.json\");\n let result = null;\n if (existsSync(resultPath)) {\n try {\n result = JSON.parse(readFileSync(resultPath, \"utf-8\"));\n } catch {\n // Skip\n }\n }\n return { name: runDirName, result };\n });\n\n return {\n name: evalName,\n totalRuns: summary.totalRuns,\n passedRuns: summary.passedRuns,\n passRate:\n typeof summary.passRate === \"string\"\n ? parseFloat(summary.passRate)\n : summary.passRate,\n meanDuration: summary.meanDuration,\n runs,\n };\n });\n\n return { name, timestamp, evals };\n}\n\n/** Get result for a specific run */\nexport function getRunResult(\n experiment: string,\n timestamp: string,\n evalName: string,\n run: string\n) {\n const resultPath = join(\n getResultsDir(),\n experiment,\n timestamp,\n evalName,\n run,\n \"result.json\"\n );\n\n if (!existsSync(resultPath)) {\n return null;\n }\n\n try {\n return { result: JSON.parse(readFileSync(resultPath, \"utf-8\")) };\n } catch {\n return null;\n }\n}\n\n/** Get parsed transcript for a specific run */\nexport function getTranscript(\n experiment: string,\n timestamp: string,\n evalName: string,\n run: string\n) {\n const transcriptPath = join(\n getResultsDir(),\n experiment,\n timestamp,\n evalName,\n run,\n \"transcript.json\"\n );\n\n if (!existsSync(transcriptPath)) {\n return null;\n }\n\n try {\n return JSON.parse(readFileSync(transcriptPath, \"utf-8\"));\n } catch {\n return null;\n }\n}\n\n/** List evals from the evals directory. Pass limit to cap per-item reads. */\nexport function listEvals(limit?: number) {\n const evalsDir = getEvalsDir();\n\n if (!existsSync(evalsDir)) {\n return { items: [], total: 0 };\n }\n\n // Recursively discover all evals (directories with PROMPT.md)\n const entries: string[] = [];\n function walk(dir: string, basePath: string = \"\") {\n const dirEntries = readdirSync(dir, { withFileTypes: true });\n\n for (const entry of dirEntries) {\n if (!entry.isDirectory() || entry.name.startsWith(\".\")) {\n continue;\n }\n\n const relativePath = basePath ? `${basePath}/${entry.name}` : entry.name;\n const entryPath = join(dir, entry.name);\n const promptPath = join(entryPath, \"PROMPT.md\");\n\n // Check if this is an eval directory (has PROMPT.md)\n if (existsSync(promptPath)) {\n entries.push(relativePath);\n } else {\n // Not an eval, recurse into it\n walk(entryPath, relativePath);\n }\n }\n }\n\n walk(evalsDir);\n entries.sort();\n\n const total = entries.length;\n const toProcess = limit ? entries.slice(0, limit) : entries;\n\n const items = toProcess.map((name) => {\n const evalDir = join(evalsDir, name);\n const promptPath = join(evalDir, \"PROMPT.md\");\n let prompt = \"\";\n if (existsSync(promptPath)) {\n prompt = readFileSync(promptPath, \"utf-8\");\n }\n\n const files = readdirSync(evalDir, { withFileTypes: true })\n .filter((e) => e.isFile())\n .map((e) => e.name);\n\n return { name, prompt, files };\n });\n\n return { items, total };\n}\n\n/** Get detail for a specific eval */\nexport function getEvalDetail(name: string) {\n const evalDir = join(getEvalsDir(), name);\n\n if (!existsSync(evalDir)) {\n return null;\n }\n\n const promptPath = join(evalDir, \"PROMPT.md\");\n let prompt = \"\";\n if (existsSync(promptPath)) {\n prompt = readFileSync(promptPath, \"utf-8\");\n }\n\n // Recursively list files\n const files: string[] = [];\n function walk(dir: string, prefix: string) {\n const entries = readdirSync(dir, { withFileTypes: true });\n for (const entry of entries) {\n if (entry.name === \"node_modules\" || entry.name === \".git\") continue;\n const relativePath = prefix ? `${prefix}/${entry.name}` : entry.name;\n if (entry.isDirectory()) {\n walk(join(dir, entry.name), relativePath);\n } else {\n files.push(relativePath);\n }\n }\n }\n walk(evalDir, \"\");\n\n // Read file contents for key files\n const fileContents: Record<string, string> = {};\n const keyFiles = [\"PROMPT.md\", \"EVAL.ts\", \"EVAL.tsx\", \"package.json\"];\n for (const file of keyFiles) {\n const filePath = join(evalDir, file);\n if (existsSync(filePath)) {\n try {\n fileContents[file] = readFileSync(filePath, \"utf-8\");\n } catch {\n // Skip unreadable files\n }\n }\n }\n\n return { name, prompt, files, fileContents };\n}\n","import * as React from \"react\"\n\nimport { cn } from \"@/lib/utils\"\n\nfunction Card({\n className,\n size = \"default\",\n ...props\n}: React.ComponentProps<\"div\"> & { size?: \"default\" | \"sm\" }) {\n return (\n <div\n data-slot=\"card\"\n data-size={size}\n className={cn(\"ring-foreground/10 bg-card text-card-foreground gap-4 overflow-hidden rounded-lg py-4 text-xs/relaxed ring-1 has-[>img:first-child]:pt-0 data-[size=sm]:gap-3 data-[size=sm]:py-3 *:[img:first-child]:rounded-t-lg *:[img:last-child]:rounded-b-lg group/card flex flex-col\", className)}\n {...props}\n />\n )\n}\n\nfunction CardHeader({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card-header\"\n className={cn(\n \"gap-1 rounded-t-lg px-4 group-data-[size=sm]/card:px-3 [.border-b]:pb-4 group-data-[size=sm]/card:[.border-b]:pb-3 group/card-header @container/card-header grid auto-rows-min items-start has-data-[slot=card-action]:grid-cols-[1fr_auto] has-data-[slot=card-description]:grid-rows-[auto_auto]\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction CardTitle({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card-title\"\n className={cn(\"text-sm font-medium\", className)}\n {...props}\n />\n )\n}\n\nfunction CardDescription({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card-description\"\n className={cn(\"text-muted-foreground text-xs/relaxed\", className)}\n {...props}\n />\n )\n}\n\nfunction CardAction({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card-action\"\n className={cn(\n \"col-start-2 row-span-2 row-start-1 self-start justify-self-end\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction CardContent({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card-content\"\n className={cn(\"px-4 group-data-[size=sm]/card:px-3\", className)}\n {...props}\n />\n )\n}\n\nfunction CardFooter({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card-footer\"\n className={cn(\"rounded-b-lg px-4 group-data-[size=sm]/card:px-3 [.border-t]:pt-4 group-data-[size=sm]/card:[.border-t]:pt-3 flex items-center\", className)}\n {...props}\n />\n )\n}\n\nexport {\n Card,\n CardHeader,\n CardFooter,\n CardTitle,\n CardAction,\n CardDescription,\n CardContent,\n}\n","import Link from \"next/link\";\nimport { listExperiments, listEvals } from \"@/lib/data\";\nimport { Card, CardContent, CardHeader, CardTitle } from \"@/components/ui/card\";\nimport { Badge } from \"@/components/ui/badge\";\n\nexport const dynamic = \"force-dynamic\";\n\nexport default async function HomePage() {\n const { items: experiments, total: totalExperiments } = listExperiments(6);\n const { items: evals, total: totalEvals } = listEvals(6);\n\n const totalRuns = experiments.reduce((sum, e) => sum + e.timestamps.length, 0);\n\n // Compute aggregate pass rate across all latest experiment runs\n const totalPassed = experiments.reduce((sum, e) => sum + (e.latestPassedRuns ?? 0), 0);\n const totalAttempted = experiments.reduce((sum, e) => sum + (e.latestTotalRuns ?? 0), 0);\n const overallPassRate = totalAttempted > 0 ? (totalPassed / totalAttempted) * 100 : 0;\n\n return (\n <div className=\"space-y-10\">\n {/* Hero */}\n <div>\n <h1 className=\"text-2xl font-bold tracking-tight\">Overview</h1>\n <p className=\"text-muted-foreground mt-1\">\n Playground for your agent evals to view experiments, evals, and compare runs.\n </p>\n </div>\n\n {/* Stats */}\n <div className=\"grid grid-cols-1 sm:grid-cols-4 gap-4\">\n <Card>\n <CardContent className=\"py-4 px-4\">\n <div className=\"text-xs text-muted-foreground\">Experiments</div>\n <div className=\"text-2xl font-bold mt-1\">{totalExperiments}</div>\n </CardContent>\n </Card>\n <Card>\n <CardContent className=\"py-4 px-4\">\n <div className=\"text-xs text-muted-foreground\">Total Runs</div>\n <div className=\"text-2xl font-bold mt-1\">{totalRuns}</div>\n </CardContent>\n </Card>\n <Card>\n <CardContent className=\"py-4 px-4\">\n <div className=\"text-xs text-muted-foreground\">Eval Fixtures</div>\n <div className=\"text-2xl font-bold mt-1\">{totalEvals}</div>\n </CardContent>\n </Card>\n <Card>\n <CardContent className=\"py-4 px-4\">\n <div className=\"text-xs text-muted-foreground\">Latest Pass Rate</div>\n <div className=\"text-2xl font-bold mt-1\">\n {totalAttempted > 0 ? `${overallPassRate.toFixed(0)}%` : \"—\"}\n </div>\n </CardContent>\n </Card>\n </div>\n\n {/* Recent Experiments */}\n <section className=\"space-y-3\">\n <div className=\"flex items-center justify-between\">\n <h2 className=\"text-lg font-semibold tracking-tight\">Recent Experiments</h2>\n <Link href=\"/experiments\" className=\"text-sm text-muted-foreground hover:text-foreground transition-colors\">\n View all →\n </Link>\n </div>\n {experiments.length === 0 ? (\n <Card>\n <CardContent className=\"py-8 text-center text-muted-foreground\">\n No experiments yet. Run <code className=\"text-foreground bg-muted px-1.5 py-0.5 rounded text-xs\">agent-eval</code> to get started.\n </CardContent>\n </Card>\n ) : (\n <div className=\"grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 gap-4\">\n {experiments.slice(0, 6).map((exp) => (\n <Link\n key={exp.name}\n href={exp.latestTimestamp\n ? `/experiments/${encodeURIComponent(exp.name)}/${encodeURIComponent(exp.latestTimestamp)}`\n : \"/experiments\"}\n className=\"block cursor-pointer\"\n >\n <Card className=\"transition-colors hover:bg-muted\">\n <CardHeader className=\"pb-2\">\n <CardTitle className=\"text-sm\">{exp.name}</CardTitle>\n </CardHeader>\n <CardContent>\n <div className=\"flex items-center gap-2\">\n {exp.latestPassRate !== undefined ? (\n <Badge\n variant={\n exp.latestPassRate === 100\n ? \"default\"\n : exp.latestPassRate >= 50\n ? \"secondary\"\n : \"destructive\"\n }\n >\n {exp.latestPassRate.toFixed(0)}%\n </Badge>\n ) : (\n <Badge variant=\"outline\">—</Badge>\n )}\n <span className=\"text-xs text-muted-foreground\">\n {exp.timestamps.length} run{exp.timestamps.length !== 1 ? \"s\" : \"\"}\n </span>\n </div>\n </CardContent>\n </Card>\n </Link>\n ))}\n </div>\n )}\n </section>\n\n {/* Evals Preview */}\n <section className=\"space-y-3\">\n <div className=\"flex items-center justify-between\">\n <h2 className=\"text-lg font-semibold tracking-tight\">Eval Fixtures</h2>\n <Link href=\"/evals\" className=\"text-sm text-muted-foreground hover:text-foreground transition-colors\">\n View all →\n </Link>\n </div>\n {evals.length === 0 ? (\n <Card>\n <CardContent className=\"py-8 text-center text-muted-foreground\">\n No evals found. Create evals in your <code className=\"text-foreground bg-muted px-1.5 py-0.5 rounded text-xs\">evals/</code> directory.\n </CardContent>\n </Card>\n ) : (\n <div className=\"grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 gap-4\">\n {evals.slice(0, 6).map((evalInfo) => (\n <Link\n key={evalInfo.name}\n href={`/evals/${encodeURIComponent(evalInfo.name)}`}\n className=\"block cursor-pointer\"\n >\n <Card className=\"transition-colors hover:bg-muted\">\n <CardHeader className=\"pb-2\">\n <CardTitle className=\"text-sm\">{evalInfo.name}</CardTitle>\n </CardHeader>\n <CardContent>\n {evalInfo.prompt ? (\n <p className=\"text-xs text-muted-foreground line-clamp-2\">\n {evalInfo.prompt.slice(0, 150)}\n {evalInfo.prompt.length > 150 ? \"...\" : \"\"}\n </p>\n ) : (\n <p className=\"text-xs text-muted-foreground\">No prompt</p>\n )}\n </CardContent>\n </Card>\n </Link>\n ))}\n </div>\n )}\n </section>\n\n {/* Compare CTA */}\n <section className=\"space-y-3\">\n <div className=\"flex items-center justify-between\">\n <h2 className=\"text-lg font-semibold tracking-tight\">Compare</h2>\n </div>\n <Link href=\"/compare\" className=\"block cursor-pointer\">\n <Card className=\"transition-colors hover:bg-muted\">\n <CardContent className=\"py-8 text-center\">\n <p className=\"mx-auto max-w-sm text-sm text-muted-foreground\">\n Compare two experiment runs side-by-side to see pass rate deltas, duration changes, and per-eval breakdowns.\n </p>\n <p className=\"text-xs text-foreground mt-2\">\n Open Compare →\n </p>\n </CardContent>\n </Card>\n </Link>\n </section>\n </div>\n );\n}\n"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
module.exports=[69046,a=>{a.n(a.i(80979))},43619,a=>{a.n(a.i(79962))},13718,a=>{a.n(a.i(85523))},18198,a=>{a.n(a.i(45518))},62212,a=>{a.n(a.i(66114))},22734,(a,b,c)=>{b.exports=a.x("fs",()=>require("fs"))},5419,a=>{"use strict";var b=a.i(22734),c=a.i(14747);function d(){return(0,c.resolve)(process.env.RESULTS_DIR||"./results")}function e(){return(0,c.resolve)(process.env.EVALS_DIR||"./evals")}function f(a){return/^\d{4}-\d{2}-\d{2}T/.test(a)}function g(a){let e=d();if(!(0,b.existsSync)(e))return{items:[],total:0};let g=[];!function a(d,e){let h=(0,b.readdirSync)(d,{withFileTypes:!0}).filter(a=>a.isDirectory()).map(a=>a.name);if(h.some(f))return void g.push(e);for(let b of h)a((0,c.join)(d,b),e?`${e}/${b}`:b)}(e,"");let h=g.length;return{items:(a?g.slice(0,a):g).map(a=>{let d,g=(0,c.join)(e,a),h=(0,b.readdirSync)(g,{withFileTypes:!0}).filter(a=>a.isDirectory()&&f(a.name)).map(a=>a.name).sort().reverse(),i=0,j=0;if(h.length>0){let a=(0,c.join)(g,h[0]);for(let d of(0,b.readdirSync)(a,{withFileTypes:!0}).filter(a=>a.isDirectory())){let e=(0,c.join)(a,d.name,"summary.json");if((0,b.existsSync)(e))try{let a=JSON.parse((0,b.readFileSync)(e,"utf-8"));i+=a.totalRuns??0,j+=a.passedRuns??0}catch{}}i>0&&(d=j/i*100)}return{name:a,timestamps:h,latestTimestamp:h[0]??null,latestPassRate:d,latestTotalRuns:i,latestPassedRuns:j}}),total:h}}function h(a,e){let f=(0,c.join)(d(),a,e);if(!(0,b.existsSync)(f))return null;let g=[];return!function a(d,e=""){for(let f of(0,b.readdirSync)(d,{withFileTypes:!0})){if(!f.isDirectory()||f.name.startsWith(".")||f.name.startsWith("run-"))continue;let h=e?`${e}/${f.name}`:f.name,i=(0,c.join)(d,f.name),j=(0,c.join)(i,"summary.json");(0,b.existsSync)(j)?g.push(h):a(i,h)}}(f),g.sort(),{name:a,timestamp:e,evals:g.map(a=>{let d=(0,c.join)(f,a),e=(0,c.join)(d,"summary.json"),g={totalRuns:0,passedRuns:0,passRate:"0%",meanDuration:0};if((0,b.existsSync)(e))try{g=JSON.parse((0,b.readFileSync)(e,"utf-8"))}catch{}let h=(0,b.readdirSync)(d,{withFileTypes:!0}).filter(a=>a.isDirectory()&&a.name.startsWith("run-")).map(a=>a.name).sort().map(a=>{let e=(0,c.join)(d,a,"result.json"),f=null;if((0,b.existsSync)(e))try{f=JSON.parse((0,b.readFileSync)(e,"utf-8"))}catch{}return{name:a,result:f}});return{name:a,totalRuns:g.totalRuns,passedRuns:g.passedRuns,passRate:"string"==typeof g.passRate?parseFloat(g.passRate):g.passRate,meanDuration:g.meanDuration,runs:h}})}}function
|
|
1
|
+
module.exports=[69046,a=>{a.n(a.i(80979))},43619,a=>{a.n(a.i(79962))},13718,a=>{a.n(a.i(85523))},18198,a=>{a.n(a.i(45518))},62212,a=>{a.n(a.i(66114))},22734,(a,b,c)=>{b.exports=a.x("fs",()=>require("fs"))},5419,a=>{"use strict";var b=a.i(22734),c=a.i(14747);function d(){return(0,c.resolve)(process.env.RESULTS_DIR||"./results")}function e(){return(0,c.resolve)(process.env.EVALS_DIR||"./evals")}function f(a){return/^\d{4}-\d{2}-\d{2}T/.test(a)}function g(a){let e=d();if(!(0,b.existsSync)(e))return{items:[],total:0};let g=[];!function a(d,e){let h=(0,b.readdirSync)(d,{withFileTypes:!0}).filter(a=>a.isDirectory()).map(a=>a.name);if(h.some(f))return void g.push(e);for(let b of h)a((0,c.join)(d,b),e?`${e}/${b}`:b)}(e,"");let h=g.length;return{items:(a?g.slice(0,a):g).map(a=>{let d,g=(0,c.join)(e,a),h=(0,b.readdirSync)(g,{withFileTypes:!0}).filter(a=>a.isDirectory()&&f(a.name)).map(a=>a.name).sort().reverse(),i=0,j=0;if(h.length>0){let a=(0,c.join)(g,h[0]);for(let d of(0,b.readdirSync)(a,{withFileTypes:!0}).filter(a=>a.isDirectory())){let e=(0,c.join)(a,d.name,"summary.json");if((0,b.existsSync)(e))try{let a=JSON.parse((0,b.readFileSync)(e,"utf-8"));i+=a.totalRuns??0,j+=a.passedRuns??0}catch{}}i>0&&(d=j/i*100)}return{name:a,timestamps:h,latestTimestamp:h[0]??null,latestPassRate:d,latestTotalRuns:i,latestPassedRuns:j}}),total:h}}function h(a){let e=(0,c.join)(d(),a);if(!(0,b.existsSync)(e))return null;let f=(0,b.readdirSync)(e,{withFileTypes:!0}).filter(a=>a.isDirectory()).map(a=>a.name).sort().reverse();return{name:a,timestamps:f,latestTimestamp:f[0]??null}}function i(a,e){let f=(0,c.join)(d(),a,e);if(!(0,b.existsSync)(f))return null;let g=[];return!function a(d,e=""){for(let f of(0,b.readdirSync)(d,{withFileTypes:!0})){if(!f.isDirectory()||f.name.startsWith(".")||f.name.startsWith("run-"))continue;let h=e?`${e}/${f.name}`:f.name,i=(0,c.join)(d,f.name),j=(0,c.join)(i,"summary.json");(0,b.existsSync)(j)?g.push(h):a(i,h)}}(f),g.sort(),{name:a,timestamp:e,evals:g.map(a=>{let d=(0,c.join)(f,a),e=(0,c.join)(d,"summary.json"),g={totalRuns:0,passedRuns:0,passRate:"0%",meanDuration:0};if((0,b.existsSync)(e))try{g=JSON.parse((0,b.readFileSync)(e,"utf-8"))}catch{}let h=(0,b.readdirSync)(d,{withFileTypes:!0}).filter(a=>a.isDirectory()&&a.name.startsWith("run-")).map(a=>a.name).sort().map(a=>{let e=(0,c.join)(d,a,"result.json"),f=null;if((0,b.existsSync)(e))try{f=JSON.parse((0,b.readFileSync)(e,"utf-8"))}catch{}return{name:a,result:f}});return{name:a,totalRuns:g.totalRuns,passedRuns:g.passedRuns,passRate:"string"==typeof g.passRate?parseFloat(g.passRate):g.passRate,meanDuration:g.meanDuration,runs:h}})}}function j(a,e,f,g){let h=(0,c.join)(d(),a,e,f,g,"transcript.json");if(!(0,b.existsSync)(h))return null;try{return JSON.parse((0,b.readFileSync)(h,"utf-8"))}catch{return null}}function k(a){let d=e();if(!(0,b.existsSync)(d))return{items:[],total:0};let f=[];!function a(d,e=""){for(let g of(0,b.readdirSync)(d,{withFileTypes:!0})){if(!g.isDirectory()||g.name.startsWith("."))continue;let h=e?`${e}/${g.name}`:g.name,i=(0,c.join)(d,g.name),j=(0,c.join)(i,"PROMPT.md");(0,b.existsSync)(j)?f.push(h):a(i,h)}}(d),f.sort();let g=f.length;return{items:(a?f.slice(0,a):f).map(a=>{let e=(0,c.join)(d,a),f=(0,c.join)(e,"PROMPT.md"),g="";return(0,b.existsSync)(f)&&(g=(0,b.readFileSync)(f,"utf-8")),{name:a,prompt:g,files:(0,b.readdirSync)(e,{withFileTypes:!0}).filter(a=>a.isFile()).map(a=>a.name)}}),total:g}}function l(a){let d=(0,c.join)(e(),a);if(!(0,b.existsSync)(d))return null;let f=(0,c.join)(d,"PROMPT.md"),g="";(0,b.existsSync)(f)&&(g=(0,b.readFileSync)(f,"utf-8"));let h=[];!function a(d,e){for(let f of(0,b.readdirSync)(d,{withFileTypes:!0})){if("node_modules"===f.name||".git"===f.name)continue;let b=e?`${e}/${f.name}`:f.name;f.isDirectory()?a((0,c.join)(d,f.name),b):h.push(b)}}(d,"");let i={};for(let a of["PROMPT.md","EVAL.ts","EVAL.tsx","package.json"]){let e=(0,c.join)(d,a);if((0,b.existsSync)(e))try{i[a]=(0,b.readFileSync)(e,"utf-8")}catch{}}return{name:a,prompt:g,files:h,fileContents:i}}a.s(["getEvalDetail",()=>l,"getExperiment",()=>h,"getExperimentDetail",()=>i,"getTranscript",()=>j,"listEvals",()=>k,"listExperiments",()=>g])},76682,a=>{"use strict";a.s(["ComparePage",()=>b]);let b=(0,a.i(11857).registerClientReference)(function(){throw Error("Attempted to call ComparePage() from the server but ComparePage is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"[project]/packages/playground/components/ComparePage.tsx <module evaluation>","ComparePage")},16143,a=>{"use strict";a.s(["ComparePage",()=>b]);let b=(0,a.i(11857).registerClientReference)(function(){throw Error("Attempted to call ComparePage() from the server but ComparePage is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"[project]/packages/playground/components/ComparePage.tsx","ComparePage")},62238,a=>{"use strict";a.i(76682);var b=a.i(16143);a.n(b)},69362,a=>{"use strict";var b=a.i(7997),c=a.i(62238),d=a.i(5419);async function e(){let{items:a}=(0,d.listExperiments)(),e=a.flatMap(a=>a.timestamps.map(b=>({value:`${a.name}|||${b}`,label:`${a.name} / ${function(a){try{let b=a.replace(/T(\d{2})-(\d{2})-(\d{2})/,"T$1:$2:$3"),c=new Date(b);if(isNaN(c.getTime()))return a;return c.toLocaleString()}catch{return a}}(b)}`}))),f={};for(let b of a)for(let a of b.timestamps){let c=(0,d.getExperimentDetail)(b.name,a);c&&(f[`${b.name}|||${a}`]=c)}return(0,b.jsx)(c.ComparePage,{options:e,detailsMap:f})}a.s(["default",()=>e,"dynamic",0,"force-dynamic"])}];
|
|
2
2
|
|
|
3
3
|
//# sourceMappingURL=%5Broot-of-the-server%5D__4228b9c3._.js.map
|