@percepta/kaizen 0.6.0 → 0.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (139) hide show
  1. package/README.md +54 -126
  2. package/agent/claude-command.md +23 -0
  3. package/agent/evals.md +41 -0
  4. package/agent/overview.md +53 -0
  5. package/agent/variant-builder.md +22 -0
  6. package/agent/views.md +51 -0
  7. package/dashboard/.next/standalone/package.json +1 -1
  8. package/dashboard/.next/standalone/packages/kaizen/dashboard/.next/BUILD_ID +1 -1
  9. package/dashboard/.next/standalone/packages/kaizen/dashboard/.next/build-manifest.json +22 -22
  10. package/dashboard/.next/standalone/packages/kaizen/dashboard/.next/prerender-manifest.json +3 -3
  11. package/dashboard/.next/standalone/packages/kaizen/dashboard/.next/routes-manifest.json +36 -10
  12. package/dashboard/.next/standalone/packages/kaizen/dashboard/.next/server/chunks/169.js +1 -0
  13. package/dashboard/.next/standalone/packages/kaizen/dashboard/.next/server/chunks/588.js +8 -0
  14. package/dashboard/.next/standalone/packages/kaizen/dashboard/.next/server/middleware-build-manifest.js +1 -1
  15. package/dashboard/.next/standalone/packages/kaizen/dashboard/.next/server/pages/404.html +1 -1
  16. package/dashboard/.next/standalone/packages/kaizen/dashboard/.next/server/pages/500.html +1 -1
  17. package/dashboard/.next/standalone/packages/kaizen/dashboard/.next/server/pages/[system]/benchmarks.html +1 -1
  18. package/dashboard/.next/standalone/packages/kaizen/dashboard/.next/server/pages/[system]/benchmarks.js.nft.json +1 -1
  19. package/dashboard/.next/standalone/packages/kaizen/dashboard/.next/server/pages/[system]/data/[[...path]].html +1 -0
  20. package/dashboard/.next/standalone/packages/kaizen/dashboard/.next/server/pages/[system]/data/[[...path]].js.nft.json +1 -0
  21. package/dashboard/.next/standalone/packages/kaizen/dashboard/.next/server/pages/[system]/eval.html +1 -1
  22. package/dashboard/.next/standalone/packages/kaizen/dashboard/.next/server/pages/[system]/eval.js.nft.json +1 -1
  23. package/dashboard/.next/standalone/packages/kaizen/dashboard/.next/server/pages/[system]/experiments/[[...path]].html +1 -0
  24. package/dashboard/.next/standalone/packages/kaizen/dashboard/.next/server/pages/[system]/experiments/[[...path]].js.nft.json +1 -0
  25. package/dashboard/.next/standalone/packages/kaizen/dashboard/.next/server/pages/[system]/ideas.html +1 -1
  26. package/dashboard/.next/standalone/packages/kaizen/dashboard/.next/server/pages/[system]/ideas.js.nft.json +1 -1
  27. package/dashboard/.next/standalone/packages/kaizen/dashboard/.next/server/pages/api/langfuse-action.js +1 -0
  28. package/dashboard/.next/standalone/packages/kaizen/dashboard/.next/server/pages/api/langfuse-action.js.nft.json +1 -0
  29. package/dashboard/.next/standalone/packages/kaizen/dashboard/.next/server/pages/api/langfuse-dataset-item.js +1 -1
  30. package/dashboard/.next/standalone/packages/kaizen/dashboard/.next/server/pages/api/langfuse-dataset-item.js.nft.json +1 -1
  31. package/dashboard/.next/standalone/packages/kaizen/dashboard/.next/server/pages/api/langfuse-dataset-mutation.js +1 -0
  32. package/dashboard/.next/standalone/packages/kaizen/dashboard/.next/server/pages/api/langfuse-dataset-mutation.js.nft.json +1 -0
  33. package/dashboard/.next/standalone/packages/kaizen/dashboard/.next/server/pages/api/langfuse-dataset.js +1 -1
  34. package/dashboard/.next/standalone/packages/kaizen/dashboard/.next/server/pages/api/langfuse-dataset.js.nft.json +1 -1
  35. package/dashboard/.next/standalone/packages/kaizen/dashboard/.next/server/pages/api/langfuse-datasets.js +1 -1
  36. package/dashboard/.next/standalone/packages/kaizen/dashboard/.next/server/pages/api/langfuse-datasets.js.nft.json +1 -1
  37. package/dashboard/.next/standalone/packages/kaizen/dashboard/.next/server/pages/api/langfuse-trace-memberships.js +1 -0
  38. package/dashboard/.next/standalone/packages/kaizen/dashboard/.next/server/pages/api/langfuse-trace-memberships.js.nft.json +1 -0
  39. package/dashboard/.next/standalone/packages/kaizen/dashboard/.next/server/pages/api/langfuse-trace.js +1 -1
  40. package/dashboard/.next/standalone/packages/kaizen/dashboard/.next/server/pages/api/langfuse-trace.js.nft.json +1 -1
  41. package/dashboard/.next/standalone/packages/kaizen/dashboard/.next/server/pages/api/langfuse-traces.js +1 -0
  42. package/dashboard/.next/standalone/packages/kaizen/dashboard/.next/server/pages/api/langfuse-traces.js.nft.json +1 -0
  43. package/dashboard/.next/standalone/packages/kaizen/dashboard/.next/server/pages/api/linear-ideas.js +2 -2
  44. package/dashboard/.next/standalone/packages/kaizen/dashboard/.next/server/pages/api/linear-ideas.js.nft.json +1 -1
  45. package/dashboard/.next/standalone/packages/kaizen/dashboard/.next/server/pages/api/run-events.js +1 -1
  46. package/dashboard/.next/standalone/packages/kaizen/dashboard/.next/server/pages/api/run-events.js.nft.json +1 -1
  47. package/dashboard/.next/standalone/packages/kaizen/dashboard/.next/server/pages/api/run-failures.js +1 -1
  48. package/dashboard/.next/standalone/packages/kaizen/dashboard/.next/server/pages/api/run-failures.js.nft.json +1 -1
  49. package/dashboard/.next/standalone/packages/kaizen/dashboard/.next/server/pages/api/run-traces.js +1 -1
  50. package/dashboard/.next/standalone/packages/kaizen/dashboard/.next/server/pages/api/run-traces.js.nft.json +1 -1
  51. package/dashboard/.next/standalone/packages/kaizen/dashboard/.next/server/pages/api/runs.js +2 -2
  52. package/dashboard/.next/standalone/packages/kaizen/dashboard/.next/server/pages/api/runs.js.nft.json +1 -1
  53. package/dashboard/.next/standalone/packages/kaizen/dashboard/.next/server/pages/api/systems.js +2 -2
  54. package/dashboard/.next/standalone/packages/kaizen/dashboard/.next/server/pages/api/systems.js.nft.json +1 -1
  55. package/dashboard/.next/standalone/packages/kaizen/dashboard/.next/server/pages/api/trace-renderer.js +1 -1
  56. package/dashboard/.next/standalone/packages/kaizen/dashboard/.next/server/pages/api/trace-renderer.js.nft.json +1 -1
  57. package/dashboard/.next/standalone/packages/kaizen/dashboard/.next/server/pages/index.html +1 -1
  58. package/dashboard/.next/standalone/packages/kaizen/dashboard/.next/server/pages/index.js.nft.json +1 -1
  59. package/dashboard/.next/standalone/packages/kaizen/dashboard/.next/server/pages-manifest.json +10 -6
  60. package/dashboard/.next/standalone/packages/kaizen/dashboard/.next/static/9JQIPpJv6qWldYoYMHZAl/_buildManifest.js +1 -0
  61. package/dashboard/.next/standalone/packages/kaizen/dashboard/.next/static/chunks/53-795fe9d662eaacfe.js +8 -0
  62. package/dashboard/.next/standalone/packages/kaizen/dashboard/.next/static/chunks/pages/[system]/{benchmarks-559dc9df52db3af4.js → benchmarks-bc38d751890170d0.js} +1 -1
  63. package/dashboard/.next/standalone/packages/kaizen/dashboard/.next/static/chunks/pages/[system]/data/[[...path]]-8afe5a733bdde0f4.js +1 -0
  64. package/dashboard/.next/standalone/packages/kaizen/dashboard/.next/static/chunks/pages/[system]/{eval-3c911ea8744631fd.js → eval-ab900515b5b18b4d.js} +1 -1
  65. package/dashboard/.next/standalone/packages/kaizen/dashboard/.next/static/chunks/pages/[system]/experiments/[[...path]]-7198800378ce98dc.js +1 -0
  66. package/dashboard/.next/standalone/packages/kaizen/dashboard/.next/static/chunks/pages/[system]/{ideas-6829a271003150a9.js → ideas-d8fd592d7cd21bb9.js} +1 -1
  67. package/dashboard/.next/standalone/packages/kaizen/dashboard/.next/static/chunks/pages/{index-1d8b6719f49e4ae0.js → index-842f5332939fc510.js} +1 -1
  68. package/dashboard/.next/standalone/packages/kaizen/dashboard/.next/static/css/d97fcd1d34ebab98.css +1 -0
  69. package/dashboard/.next/standalone/packages/kaizen/package.json +8 -3
  70. package/dashboard/.next/standalone/packages/kaizen/shared/workspace-paths.js +84 -0
  71. package/dist/commands/create-view.js +58 -0
  72. package/dist/commands/create-view.js.map +1 -0
  73. package/dist/commands/guide.js +66 -0
  74. package/dist/commands/guide.js.map +1 -0
  75. package/dist/commands/ideas.js +4 -8
  76. package/dist/commands/ideas.js.map +1 -1
  77. package/dist/commands/init-system.js +22 -20
  78. package/dist/commands/init-system.js.map +1 -1
  79. package/dist/commands/init.js +28 -64
  80. package/dist/commands/init.js.map +1 -1
  81. package/dist/commands/log.js +5 -11
  82. package/dist/commands/log.js.map +1 -1
  83. package/dist/commands/rebuild.js +7 -9
  84. package/dist/commands/rebuild.js.map +1 -1
  85. package/dist/commands/run.js +5 -9
  86. package/dist/commands/run.js.map +1 -1
  87. package/dist/commands/studio.js +3 -3
  88. package/dist/commands/studio.js.map +1 -1
  89. package/dist/index.js +17 -21
  90. package/dist/index.js.map +1 -1
  91. package/dist/lib/cli.js +20 -0
  92. package/dist/lib/cli.js.map +1 -0
  93. package/dist/lib/events.js.map +1 -1
  94. package/dist/lib/fs-utils.js +3 -27
  95. package/dist/lib/fs-utils.js.map +1 -1
  96. package/dist/lib/leaderboard.js +1 -1
  97. package/dist/lib/leaderboard.js.map +1 -1
  98. package/dist/lib/paths.js +3 -3
  99. package/dist/lib/paths.js.map +1 -1
  100. package/dist/lib/promotion.js.map +1 -1
  101. package/dist/lib/run-dir.js +1 -1
  102. package/dist/lib/run-dir.js.map +1 -1
  103. package/dist/lib/runner.js +6 -5
  104. package/dist/lib/runner.js.map +1 -1
  105. package/dist/lib/system.js +4 -2
  106. package/dist/lib/system.js.map +1 -1
  107. package/dist/package.js +6 -3
  108. package/dist/shared/view-types.d.ts +67 -0
  109. package/dist/shared/view-types.d.ts.map +1 -0
  110. package/dist/shared/workspace-paths.js +84 -0
  111. package/dist/shared/workspace-paths.js.map +1 -0
  112. package/dist/types.d.ts +3 -30
  113. package/dist/types.d.ts.map +1 -1
  114. package/package.json +8 -3
  115. package/shared/view-types.d.ts +69 -0
  116. package/shared/view-types.js +1 -0
  117. package/shared/workspace-paths.d.ts +19 -0
  118. package/shared/workspace-paths.js +84 -0
  119. package/templates/system/eval.py +13 -6
  120. package/templates/system/eval.ts +11 -5
  121. package/templates/system/rubric.md +1 -1
  122. package/templates/system/system.md +6 -5
  123. package/templates/view/dataset-item.tsx +63 -0
  124. package/templates/view/trace.tsx +10 -0
  125. package/dashboard/.next/standalone/packages/kaizen/dashboard/.next/server/chunks/715.js +0 -6
  126. package/dashboard/.next/standalone/packages/kaizen/dashboard/.next/server/pages/[system]/data.html +0 -1
  127. package/dashboard/.next/standalone/packages/kaizen/dashboard/.next/server/pages/[system]/data.js.nft.json +0 -1
  128. package/dashboard/.next/standalone/packages/kaizen/dashboard/.next/server/pages/[system]/experiments.html +0 -1
  129. package/dashboard/.next/standalone/packages/kaizen/dashboard/.next/server/pages/[system]/experiments.js.nft.json +0 -1
  130. package/dashboard/.next/standalone/packages/kaizen/dashboard/.next/static/YpQ-I4VL-aEdQrM5uN7_3/_buildManifest.js +0 -1
  131. package/dashboard/.next/standalone/packages/kaizen/dashboard/.next/static/chunks/673-ed4be46027ae7a37.js +0 -6
  132. package/dashboard/.next/standalone/packages/kaizen/dashboard/.next/static/chunks/pages/[system]/data-644e4280b4c86fe0.js +0 -1
  133. package/dashboard/.next/standalone/packages/kaizen/dashboard/.next/static/chunks/pages/[system]/experiments-42f31600c2bb47ad.js +0 -1
  134. package/dashboard/.next/standalone/packages/kaizen/dashboard/.next/static/css/b18a6732b96168e1.css +0 -1
  135. package/dist/lib/env.js +0 -2
  136. package/dist/shared/env.js +0 -4
  137. package/templates/workspace/.claude/agents/variant-builder.md +0 -51
  138. package/templates/workspace/.claude/commands/kaizen.md +0 -65
  139. /package/dashboard/.next/standalone/packages/kaizen/dashboard/.next/static/{YpQ-I4VL-aEdQrM5uN7_3 → 9JQIPpJv6qWldYoYMHZAl}/_ssgManifest.js +0 -0
@@ -7,7 +7,7 @@ well-formed event stream:
7
7
  {"type": "start", "n": <int>, "eval_version": <int>, "dataset_version": "<str>"}
8
8
  {"type": "item", "id": "<str>", "score": <float in [0,1]>, "breakdown": {...}, "trace_id": "<str|null>"}
9
9
  ... one item event per dataset item ...
10
- {"type": "complete", "score": <float>, "breakdown": {...}, "worst_traces": [...]}
10
+ {"type": "complete", "score": <float>, "n": <int>, "breakdown": {...}, "worst_traces": [...]}
11
11
 
12
12
  If something goes wrong, emit `{"type": "error", "message": "<str>"}` and exit non-zero.
13
13
  The supervisor will record the run as `crashed` if no `complete` event is seen.
@@ -19,8 +19,9 @@ For production evals backed by Langfuse, keep the NDJSON stream as the required
19
19
  Kaizen contract and also persist results back to Langfuse as a best-effort side
20
20
  effect: load the versioned dataset, run the system to create a fresh trace for
21
21
  each item, link that trace to the dataset item in a dataset run, and write the
22
- primary metric as a score on the trace. Include that fresh trace id in the
23
- Kaizen item event so failure analysis can jump directly to Langfuse.
22
+ primary metric as a score on the trace. Treat --dataset as the Langfuse dataset
23
+ name unless system.md says otherwise. Include that fresh trace id in the Kaizen
24
+ item event so failure analysis can jump directly to Langfuse.
24
25
  """
25
26
  from __future__ import annotations
26
27
 
@@ -41,8 +42,14 @@ def emit(out, event: dict[str, Any]) -> None:
41
42
  out.flush()
42
43
 
43
44
 
44
- def iter_items(dataset_version: str, max_items: int | None) -> Iterator[dict[str, Any]]:
45
- """Yield dataset items. Replace with your real loader."""
45
+ def load_items(dataset_name: str, max_items: int | None) -> Iterator[dict[str, Any]]:
46
+ """Yield dataset items.
47
+
48
+ Replace this with your real dataset loader. For Langfuse-backed evals, list
49
+ items from dataset_name and yield stable ids, inputs, expected outputs, and
50
+ any metadata your scorer needs.
51
+ """
52
+ del dataset_name
46
53
  items = [
47
54
  {"id": "demo-1", "input": "hello", "expected": "hi"},
48
55
  {"id": "demo-2", "input": "world", "expected": "world"},
@@ -87,7 +94,7 @@ def main() -> int:
87
94
  else:
88
95
  out = sys.stdout
89
96
 
90
- items = list(iter_items(args.dataset, args.max_items))
97
+ items = list(load_items(args.dataset, args.max_items))
91
98
  emit(out, {
92
99
  "type": "start",
93
100
  "n": len(items),
@@ -8,14 +8,16 @@
8
8
  * {"type":"start","n":<int>,"eval_version":<int>,"dataset_version":"<str>"}
9
9
  * {"type":"item","id":"<str>","score":<float in [0,1]>,"breakdown":{},"trace_id":"<str|null>"}
10
10
  * ... one item event per dataset item ...
11
- * {"type":"complete","score":<float>,"breakdown":{},"worst_traces":[]}
11
+ * {"type":"complete","score":<float>,"n":<int>,"breakdown":{},"worst_traces":[]}
12
12
  *
13
13
  * For Langfuse-backed production evals, keep the NDJSON stream as the required
14
14
  * Kaizen contract and also persist results back to Langfuse as a best-effort
15
15
  * side effect: load the versioned dataset, run the system to create a fresh
16
16
  * trace for each item, link that trace to the dataset item in a dataset run,
17
- * and write the primary metric as a score on the trace. Include that fresh
18
- * trace id in the Kaizen item event so failure analysis can jump to Langfuse.
17
+ * and write the primary metric as a score on the trace. Treat --dataset as the
18
+ * Langfuse dataset name unless your system.md says otherwise. Include each
19
+ * fresh trace id in the Kaizen item event so failure analysis can jump to
20
+ * Langfuse.
19
21
  */
20
22
  import { closeSync, writeSync } from "node:fs";
21
23
 
@@ -82,7 +84,11 @@ function parseArgs(argv: string[]): EvalArgs {
82
84
  return args;
83
85
  }
84
86
 
85
- function iterItems(maxItems: number | null): DemoItem[] {
87
+ function loadItems(datasetName: string, maxItems: number | null): DemoItem[] {
88
+ void datasetName;
89
+ // Replace this with your real dataset loader. For Langfuse-backed evals,
90
+ // list dataset items from --dataset and return objects with stable ids,
91
+ // inputs, expected outputs, and any metadata your scorer needs.
86
92
  const items = [
87
93
  { id: "demo-1", input: "hello", expected: "hi" },
88
94
  { id: "demo-2", input: "world", expected: "world" },
@@ -111,7 +117,7 @@ function average(values: number[]): number {
111
117
 
112
118
  async function main(): Promise<void> {
113
119
  const args = parseArgs(process.argv.slice(2));
114
- const items = iterItems(args.maxItems);
120
+ const items = loadItems(args.dataset, args.maxItems);
115
121
 
116
122
  emit(args.outFd, {
117
123
  type: "start",
@@ -25,4 +25,4 @@ The judge is itself an LLM system. Calibrate it against human labels until they
25
25
 
26
26
  ## Calibration
27
27
 
28
- Run the judge on 30 items that also have human labels. Iterate the rubric/prompt until agreement ≥ 95%. Track in `.kaizen/runs/<system>/<judge_run_id>/`.
28
+ Run the judge on 30 items that also have human labels. Iterate the rubric/prompt until agreement ≥ 95%. Track in `kaizen/.kaizen/runs/<system>/<judge_run_id>/`.
@@ -1,13 +1,13 @@
1
1
  ---
2
2
  name: {{name}}
3
3
  description: {{description}}
4
- run_eval: eval/{{name}}.{{eval_ext}}
4
+ run_eval: kaizen/systems/{{name}}/{{eval_file}}
5
5
  eval_version: 1
6
6
  dataset_version: v1
7
7
  eval_style: {{eval_style}}
8
8
  primary_metric: {{primary_metric}}
9
9
  target: {{target}}
10
- execution_mode: in_process
10
+ {{rubric_frontmatter}}
11
11
  # Optional: stable Linear project URL or ID for Kaizen Ideas.
12
12
  # linear_project: https://linear.app/<workspace>/project/<project-slug>
13
13
  created_at: {{iso_now}}
@@ -21,7 +21,7 @@ created_at: {{iso_now}}
21
21
 
22
22
  ## Key files
23
23
 
24
- <!-- Paths in this repo that a variant-builder agent needs to read to understand the system. -->
24
+ <!-- Paths in this repo that a coding agent needs to read to understand the system. -->
25
25
 
26
26
  - `path/to/main_workflow.py` — orchestrator
27
27
  - `path/to/prompts.py` — prompt templates
@@ -29,7 +29,7 @@ created_at: {{iso_now}}
29
29
 
30
30
  ## Setup
31
31
 
32
- <!-- What does the runner or variant-builder agent need before invoking the eval? E.g.:
32
+ <!-- What does the runner or coding agent need before invoking the eval? E.g.:
33
33
  - start servers
34
34
  - install deps
35
35
  - set env vars
@@ -39,6 +39,7 @@ created_at: {{iso_now}}
39
39
 
40
40
  <!-- For Langfuse-backed production evals:
41
41
  - Load dataset items from the `dataset_version` named in frontmatter.
42
+ - Treat `dataset_version` as the Langfuse dataset name unless this section says otherwise.
42
43
  - For each item, run the candidate system and capture the fresh Langfuse trace id.
43
44
  - Link the dataset item to that trace in a Langfuse dataset run named for the Kaizen run.
44
45
  - Write the primary metric as a Langfuse score on the fresh trace, with secondary metrics in metadata.
@@ -63,6 +64,6 @@ graph TD
63
64
 
64
65
  ## Variant candidates
65
66
 
66
- <!-- A scratchpad of ideas to try. The /kaizen skill reads this to seed variant generation. -->
67
+ <!-- A scratchpad of ideas to try. Coding agents read this to seed variant generation. -->
67
68
 
68
69
  - _none yet_
@@ -0,0 +1,63 @@
1
+ import { useState } from "react";
2
+ import type { DatasetItemRendererProps } from "@percepta/kaizen";
3
+
4
+ export default function DatasetItemView({
5
+ datasetItem,
6
+ trace,
7
+ actions,
8
+ }: DatasetItemRendererProps) {
9
+ const [expectedOutput, setExpectedOutput] = useState(() =>
10
+ JSON.stringify(datasetItem.expectedOutput ?? null, null, 2),
11
+ );
12
+ const [status, setStatus] = useState<"idle" | "saving" | "saved" | "error">(
13
+ "idle",
14
+ );
15
+
16
+ async function saveExpectedOutput() {
17
+ setStatus("saving");
18
+ try {
19
+ await actions.updateDatasetItem({
20
+ expectedOutput: JSON.parse(expectedOutput),
21
+ });
22
+ setStatus("saved");
23
+ } catch {
24
+ setStatus("error");
25
+ }
26
+ }
27
+
28
+ return (
29
+ <main>
30
+ <h2>{datasetItem.id}</h2>
31
+ <section>
32
+ <h3>Expected output</h3>
33
+ <textarea
34
+ value={expectedOutput}
35
+ onChange={(event) => {
36
+ setExpectedOutput(event.target.value);
37
+ setStatus("idle");
38
+ }}
39
+ rows={10}
40
+ style={{ width: "100%" }}
41
+ />
42
+ <button type="button" onClick={saveExpectedOutput}>
43
+ Save label
44
+ </button>
45
+ {status !== "idle" ? <span>{status}</span> : null}
46
+ </section>
47
+ <section>
48
+ <h3>Input</h3>
49
+ <pre>{JSON.stringify(datasetItem.input, null, 2)}</pre>
50
+ </section>
51
+ <section>
52
+ <h3>Metadata</h3>
53
+ <pre>{JSON.stringify(datasetItem.metadata, null, 2)}</pre>
54
+ </section>
55
+ {trace ? (
56
+ <section>
57
+ <h3>Source trace</h3>
58
+ <pre>{JSON.stringify(trace, null, 2)}</pre>
59
+ </section>
60
+ ) : null}
61
+ </main>
62
+ );
63
+ }
@@ -0,0 +1,10 @@
1
+ import type { TraceRendererProps } from "@percepta/kaizen";
2
+
3
+ export default function TraceView({ trace }: TraceRendererProps) {
4
+ return (
5
+ <main>
6
+ <h2>{trace.name ?? trace.id ?? "Trace"}</h2>
7
+ <pre>{JSON.stringify(trace, null, 2)}</pre>
8
+ </main>
9
+ );
10
+ }
@@ -1,6 +0,0 @@
1
- exports.id=715,exports.ids=[715],exports.modules={1039:(a,b,c)=>{"use strict";c.d(b,{G:()=>k,V:()=>j});var d=c(8732),e=c(4739),f=c.n(e),g=c(2015);let h=g.useEffect,i=(0,g.createContext)({systems:[],activeSystemId:null,setActiveSystemId:()=>{}});function j(){return(0,g.useContext)(i)}function k({children:a}){let b=function(){let[a,b]=(0,g.useState)([]);return a}(),[c,e]=(0,g.useState)(null),j=(0,g.useCallback)(a=>{e(a);let b=a?`/${a}/experiments`:"/";f().push(b)},[]);h(()=>{let a=()=>{let a;e((a=window.location.pathname.match(/^\/([^/?#]+)/))?a[1]:null)};return a(),window.addEventListener("popstate",a),f().events.on("routeChangeComplete",a),()=>{window.removeEventListener("popstate",a),f().events.off("routeChangeComplete",a)}},[]);let k=(0,g.useMemo)(()=>({systems:b,activeSystemId:c,setActiveSystemId:j}),[b,c,j]);return(0,d.jsx)(i.Provider,{value:k,children:a})}},1805:(a,b,c)=>{"use strict";c.d(b,{W:()=>aW});var d=c(8732),e=c(2015),f=c(1039),g=c(1836),h=c.n(g),i=c(7729),j=c.n(i);let k={code:"Owned by system source code. Agent changes edit the customer repo.",langfuse:"Owned by Langfuse. Agent changes use the Langfuse API.",linear:"Owned by Linear. Agent changes use the Linear API.",local:"Owned by local Kaizen state on this machine."};function l({source:a}){return(0,d.jsx)("span",{className:`${j().sourceChip} ${j()[`sourceChip_${a}`]}`,title:k[a],"aria-label":k[a],children:(0,d.jsx)(m,{source:a})})}function m({source:a}){return"langfuse"===a?(0,d.jsx)("img",{src:"/source-icons/langfuse.svg",alt:"",className:j().sourceLogo}):"linear"===a?(0,d.jsx)("img",{src:"/source-icons/linear.svg",alt:"",className:j().sourceLogo}):"local"===a?(0,d.jsx)(o,{}):(0,d.jsx)(n,{})}function n(){return(0,d.jsxs)("svg",{className:j().sourceSvgIcon,viewBox:"0 0 24 24",fill:"none","aria-hidden":"true",children:[(0,d.jsx)("path",{d:"M8.5 7L3.5 12L8.5 17",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"square",strokeLinejoin:"miter"}),(0,d.jsx)("path",{d:"M15.5 7L20.5 12L15.5 17",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"square",strokeLinejoin:"miter"})]})}function o(){return(0,d.jsxs)("svg",{className:j().sourceSvgIcon,viewBox:"0 0 24 24",fill:"none","aria-hidden":"true",children:[(0,d.jsx)("path",{d:"M5 4H17L20 7V20H5V4Z",stroke:"currentColor",strokeWidth:"2",strokeLinejoin:"miter"}),(0,d.jsx)("path",{d:"M8 4V10H16V4",stroke:"currentColor",strokeWidth:"2"}),(0,d.jsx)("path",{d:"M8 16H16",stroke:"currentColor",strokeWidth:"2"})]})}var p=c(3031),q=c.n(p);function r(){let{systems:a,activeSystemId:b,setActiveSystemId:c}=(0,f.V)(),e=a.find(a=>a.id===b);return(0,d.jsxs)("label",{className:q().wrapper,children:[(0,d.jsx)("span",{className:q().label,children:"System"}),(0,d.jsxs)("select",{className:q().select,value:b??"",onChange:a=>c(a.target.value||null),children:[!b&&(0,d.jsx)("option",{value:"",disabled:!0,children:"Choose"}),b&&!e&&(0,d.jsx)("option",{value:b,children:"Loading system..."}),a.map(a=>(0,d.jsx)("option",{value:a.id,children:a.name},a.id))]}),b&&(0,d.jsx)(l,{source:"code"})]})}let s=[{id:"data",label:"Data"},{id:"benchmarks",label:"Benchmarks"},{id:"ideas",label:"Ideas"},{id:"experiments",label:"Experiments"}];function t({activeSystem:a,activeSurface:b,children:c}){return(0,d.jsxs)("div",{className:j().page,children:[(0,d.jsxs)("header",{className:j().topBar,children:[(0,d.jsx)(h(),{href:"/",className:j().logoLink,"aria-label":"Kaizen home",children:(0,d.jsx)("img",{src:"/logo-cream.svg",alt:"",className:j().topLogo})}),(0,d.jsx)("div",{className:j().systemSlot,children:(0,d.jsx)(r,{})}),(0,d.jsx)("nav",{className:j().surfaceNav,"aria-label":"Kaizen surfaces",children:s.map(c=>a?(0,d.jsx)(h(),{href:`/${a.id}/${c.id}`,className:`${j().surfaceLink} ${b===c.id?j().surfaceLinkActive:""}`,children:c.label},c.id):(0,d.jsx)("span",{className:`${j().surfaceLink} ${j().surfaceLinkDisabled}`,children:c.label},c.id))}),(0,d.jsx)("div",{})]}),(0,d.jsx)("main",{className:j().content,children:c})]})}function u(a){let[b,c]=(0,e.useState)([]),[d,f]=(0,e.useState)(!1);return{runs:b,connected:d}}function v(a){if(!a)return"";let b=new Date(a);return Number.isNaN(b.getTime())?a:new Intl.DateTimeFormat(void 0,{year:"numeric",month:"short",day:"numeric",hour:"numeric",minute:"2-digit"}).format(b)}var w=c(9857);w.Ik({runId:w.Yj(),runName:w.Yj(),status:w.k5(["running","complete","crashed","aborted"]),worktreeBranch:w.Yj(),parentId:w.Yj().nullable(),system:w.Yj(),progress:w.Ik({completed:w.ai(),total:w.ai(),lastHeartbeat:w.Yj()}).optional(),metrics:w.g1(w.Yj(),w.ai()),totalItems:w.ai().nullable(),langfuseRunId:w.Yj().optional(),linearIssue:w.Ik({id:w.Yj(),url:w.Yj()}).optional(),evalConfig:w.Ik({dataset:w.Yj(),evalVersion:w.ai().optional(),datasetItemCount:w.ai(),judge:w.Ik({rubric:w.Yj(),rubricHash:w.Yj(),model:w.Yj(),temperature:w.ai()}).optional()}).optional(),startedAt:w.Yj(),updatedAt:w.Yj()});let x={actionAccuracy:{label:"Action Accuracy",format:"percent"},parameterExtraction:{label:"Param Extraction",format:"percent"},clarificationAppropriateness:{label:"Clarification",format:"percent"},multiActionDetection:{label:"Multi-Action",format:"percent"},f1:{label:"F1",format:"percent"},f2:{label:"F2",format:"percent"},precision:{label:"Precision",format:"percent"},recall:{label:"Recall",format:"percent"},cost_per_item:{label:"Cost / Item",format:"raw"},avg_latency_s:{label:"Avg Latency (s)",format:"raw"},true_positives:{label:"TP",format:"integer"},false_positives:{label:"FP",format:"integer"},false_negatives:{label:"FN",format:"integer"},total_clis_scored:{label:"CLIs Scored",format:"integer"},items_with_metrics:{label:"Items w/ Metrics",format:"integer"},timeouts:{label:"Timeouts",format:"integer"},judge_quality:{label:"Judge Quality",format:"percent"},judge_quality_chartNotes:{label:"Quality: Chart Notes",format:"percent"},judge_quality_followUp:{label:"Quality: Follow-Up",format:"percent"}};function y(a){return x[a]?.label??a.replace(/[_-]+/g," ").replace(/([A-Z])/g," $1").replace(/^./,a=>a.toUpperCase()).trim()}function z(a,b){let c=x[a];return c?.format==="integer"?Math.round(b).toLocaleString():c?.format==="raw"?b.toFixed(2):c?.format==="percent"?(100*b).toFixed(1)+"%":b>1?Math.round(b).toLocaleString():(100*b).toFixed(1)+"%"}function A(a,b){if(!b)return null;if(b in a.metrics)return a.metrics[b];if("f2"===b&&"precision"in a.metrics&&"recall"in a.metrics){var c,d;return(c=a.metrics.precision)+(d=a.metrics.recall)===0?0:5*c*d/(4*c+d)}return null}function B(a,b){var c,d;let e=a.evalConfig?.dataset??"unknown dataset",f="number"==typeof a.evalConfig?.evalVersion?String(a.evalConfig.evalVersion):"unknown",g=(c=a,d=b,c.evalConfig?.judge?.rubric??d??"unknown eval"),h=`Eval v${f} \xb7 ${y(g)}`;return{key:`${e}::${f}::${g}`,dataset:e,datasetLabel:C(e),evalVersion:f,evalMetric:g,evalLabel:h}}function C(a){return a.replace(/--/g," ").replace(/[-_]+/g," ").replace(/\bgt\b/gi,"Ground Truth").replace(/\bv(\d+)\b/gi,"v$1").replace(/\b\w/g,a=>a.toUpperCase()).trim()}function D({title:a,children:b,source:c,syncLabel:e,onRefresh:f,refreshing:g}){return(0,d.jsxs)("section",{className:j().surfaceBanner,children:[(0,d.jsxs)("div",{className:j().surfaceBannerText,children:[(0,d.jsxs)("div",{className:j().surfaceBannerTitle,children:[(0,d.jsx)("span",{children:a}),c&&(0,d.jsx)(l,{source:c})]}),(0,d.jsx)("div",{className:j().surfaceBannerCopy,children:b})]}),(null!=e||null!=f)&&(0,d.jsx)(E,{label:e,onRefresh:f,refreshing:g})]})}function E({label:a,onRefresh:b,refreshing:c}){return(0,d.jsxs)("div",{className:j().syncStatus,children:[null!=a&&(0,d.jsx)("span",{className:j().syncStatusLabel,children:a}),b&&(0,d.jsx)("button",{className:j().iconButton,onClick:b,title:"Refresh","aria-label":"Refresh","aria-busy":c?"true":"false",children:(0,d.jsx)("span",{"aria-hidden":"true",children:"↻"})})]})}function F({system:a}){var b;let{runs:c}=u(a.id),f=a.primaryMetric??null,g=(0,e.useMemo)(()=>(function(a,b){let c=new Map;for(let h of a){var d,e,f,g;let a=B(h,b),i=c.get(a.key);i?(i.count++,d=i.itemCount,e=h.totalItems,i.itemCount=null===d?e:null===e?d:Math.max(d,e),f=i.latestAt,g=h.updatedAt,i.latestAt=f?Date.parse(g)>Date.parse(f)?g:f:g):c.set(a.key,{...a,count:1,itemCount:h.totalItems,latestAt:h.updatedAt})}return[...c.values()].sort((a,b)=>(b.latestAt??"").localeCompare(a.latestAt??""))})(c,f),[f,c]);return(0,d.jsxs)("div",{className:j().surface,children:[(0,d.jsx)(D,{title:"Benchmarks",source:"code",syncLabel:"Live updates",children:"A benchmark is the fixed dataset plus scoring setup for this system. The current benchmark comes from the system file, and the rows below show which benchmarks have actually been used by local experiments."}),(0,d.jsxs)("section",{className:j().detailPanel,children:[(0,d.jsxs)("div",{className:j().detailHeader,children:[(0,d.jsxs)("div",{children:[(0,d.jsx)("h2",{className:j().detailTitle,children:"Current benchmark"}),(0,d.jsx)("div",{className:j().detailMeta,children:"This is what the next Kaizen run will use unless a coding agent changes the system file."})]}),(0,d.jsx)(l,{source:"code"})]}),(0,d.jsxs)("div",{className:j().evalDefinitionGrid,children:[(0,d.jsx)(G,{label:"Dataset",value:a.evalDataset?C(a.evalDataset):"Not configured",detail:a.evalDataset}),(0,d.jsx)(G,{label:"Eval version",value:null===a.evalVersion?"Not configured":`v${a.evalVersion}`}),(0,d.jsx)(G,{label:"Primary metric",value:a.primaryMetric?y(a.primaryMetric):"Not configured",detail:a.primaryMetric}),(0,d.jsx)(G,{label:"Style",value:"ground_truth"===(b=a.evalType)?"Ground truth":"llm_judge"===b?"LLM judge":"human"===b?"Human review":"policy"===b?"Policy":"Not configured"})]})]}),(0,d.jsxs)("section",{className:j().evalHistorySection,children:[(0,d.jsxs)("div",{className:j().evalSectionHeader,children:[(0,d.jsxs)("div",{children:[(0,d.jsx)("h2",{className:j().detailTitle,children:"Benchmarks used in experiments"}),(0,d.jsx)("div",{className:j().detailMeta,children:"Each row is a separate comparison group."})]}),(0,d.jsx)(l,{source:"local"})]}),0===g.length?(0,d.jsx)("div",{className:j().emptyPanel,children:"No benchmarks yet. Run an experiment to create one."}):(0,d.jsxs)("div",{className:j().evalSummaryTable,children:[(0,d.jsxs)("div",{className:j().evalSummaryHeader,children:[(0,d.jsx)("span",{children:"Dataset"}),(0,d.jsx)("span",{children:"Scoring"}),(0,d.jsx)("span",{children:"Runs"}),(0,d.jsx)("span",{children:"Items"}),(0,d.jsx)("span",{children:"Latest"})]}),g.map(a=>(0,d.jsxs)("div",{className:j().evalSummaryRow,children:[(0,d.jsxs)("div",{children:[(0,d.jsx)("span",{className:j().evalSummaryPrimary,children:a.datasetLabel}),(0,d.jsx)("span",{className:j().evalSummaryMeta,children:a.dataset})]}),(0,d.jsxs)("div",{children:[(0,d.jsx)("span",{className:j().evalSummaryPrimary,children:a.evalLabel}),(0,d.jsx)("span",{className:j().evalSummaryMeta,children:y(a.evalMetric)})]}),(0,d.jsx)("span",{children:a.count}),(0,d.jsx)("span",{children:a.itemCount??"?"}),(0,d.jsx)("span",{children:a.latestAt?v(a.latestAt):"-"})]},a.key))]})]})]})}function G({label:a,value:b,detail:c}){return(0,d.jsxs)("div",{className:j().evalDefinitionCell,children:[(0,d.jsx)("span",{className:j().metaLabel,children:a}),(0,d.jsx)("span",{className:j().metaValue,children:b}),c&&(0,d.jsx)("code",{className:j().evalDefinitionCode,children:c})]})}Object.keys(x);let H=new Map;function I(a){return a.replace(/(\w+)\s+as\s+(\w+)/g,"$1: $2")}function J({trace:a,systemId:b,hasCustomRenderer:f,datasetItem:g,loading:h,error:i}){let{Component:k,loading:l,error:m}=function(a,b){let[d,f]=(0,e.useState)(()=>{if(!b)return{Component:null,loading:!1,error:null};let c=H.get(a);return c?{Component:c,loading:!1,error:null}:{Component:null,loading:!0,error:null}}),g=(0,e.useRef)(a);if(g.current!==a)if(g.current=a,b){let b=H.get(a);b?f({Component:b,loading:!1,error:null}):f({Component:null,loading:!0,error:null})}else f({Component:null,loading:!1,error:null});let h=(0,e.useRef)(a);return h.current=a,(0,e.useCallback)(async()=>{if(!b)return void f({Component:null,loading:!1,error:null});let d=H.get(a);if(d)return void f({Component:d,loading:!1,error:null});f(a=>({...a,loading:!0,error:null}));try{let b=await fetch(`/api/trace-renderer?systemId=${encodeURIComponent(a)}`);if(!b.ok){let c=await b.json().catch(()=>({})),d="string"==typeof c.error?c.error:`HTTP ${b.status}`;h.current===a&&f({Component:null,loading:!1,error:d});return}let d=await b.text(),e=function(a){let b=a.replace(/import\s*\{([^}]*)\}\s*from\s*["']react["']\s*;?/g,(a,b)=>`const {${I(b)}} = __kaizenReact;`).replace(/import\s+React\s*(?:,\s*\{([^}]*)\})?\s*from\s*["']react["']\s*;?/g,(a,b)=>{let c="const React = __kaizenReact;";return b?`${c}
2
- const {${I(b)}} = __kaizenReact;`:c}).replace(/import\s*\*\s*as\s+(\w+)\s+from\s*["']react["']\s*;?/g,"const $1 = __kaizenReact;").replace(/import\s*\{([^}]*)\}\s*from\s*["']react\/jsx-runtime["']\s*;?/g,(a,b)=>`const {${I(b)}} = __kaizenJsxRuntime;`).replace(/export\s*\{[^}]*\}\s*from\s*["'][^"']*["']\s*;?/g,"").replace(/export\s*\{([^}]*)\}\s*;?/g,(a,b)=>{let c=b.match(/(\w+)\s+as\s+default/);return c?`__exports.default = ${c[1]};`:""}).replace(/export\s*default\s+(async\s+)?function\s+(\w+)/g,(a,b,c)=>`__exports.default = ${c}; ${b??""}function ${c}`).replace(/export\s*default\s+/g,"__exports.default = ").replace(/export\s+(function|const|let|var|class)\s/g,"$1 "),d=c(2015),e=c(8732),f={};if(Function("__kaizenReact","__kaizenJsxRuntime","__exports",`${b}
3
- if (typeof TraceRenderer !== 'undefined' && !__exports.default) __exports.default = TraceRenderer;
4
- `)(d,e,f),"function"!=typeof f.default)throw Error("Custom trace renderer must export a default component named TraceRenderer");return f.default}(d);h.current===a&&(H.set(a,e),f({Component:e,loading:!1,error:null}))}catch(b){h.current===a&&f({Component:null,loading:!1,error:b instanceof Error?b.message:String(b)})}},[b,a]),d}(b,f);return h?(0,d.jsx)("div",{className:j().loadingPanel,children:"Loading trace..."}):i?(0,d.jsx)("div",{className:j().errorPanel,children:i}):a?l?(0,d.jsx)("div",{className:j().loadingPanel,children:"Loading custom renderer..."}):m?(0,d.jsxs)("div",{children:[(0,d.jsxs)("div",{className:j().errorPanel,children:["Custom renderer error: ",m]}),(0,d.jsx)(K,{trace:a})]}):k?(0,d.jsx)(M,{fallback:(0,d.jsx)(K,{trace:a}),children:(0,d.jsx)(k,{trace:a,datasetItem:g})},a.id??a.name??""):(0,d.jsx)(K,{trace:a}):(0,d.jsx)("div",{className:j().mutedText,children:"No source trace linked."})}function K({trace:a}){return(0,d.jsxs)(d.Fragment,{children:[(0,d.jsxs)("div",{className:j().traceHeader,children:[(0,d.jsx)("span",{className:j().traceName,children:a.name??a.id}),a.timestamp&&(0,d.jsx)("span",{className:j().detailMeta,children:a.timestamp})]}),a.tags&&a.tags.length>0&&(0,d.jsx)("div",{className:j().tagRow,children:a.tags.map(a=>(0,d.jsx)("span",{className:j().tagPill,children:a},a))}),(0,d.jsx)(L,{title:"Trace metadata",value:a.metadata}),(0,d.jsxs)("div",{className:j().detailGrid,children:[(0,d.jsx)(L,{title:"Trace input",value:a.input}),(0,d.jsx)(L,{title:"Trace output",value:a.output})]})]})}function L({title:a,value:b}){var c;return(0,d.jsxs)("div",{className:j().jsonBlock,children:[(0,d.jsx)("div",{className:j().jsonTitle,children:a}),(0,d.jsx)("pre",{className:j().jsonPre,children:null==(c=b)?"(empty)":"string"==typeof c?c:JSON.stringify(c,null,2)})]})}class M extends e.Component{static getDerivedStateFromError(a){return{error:a}}render(){return this.state.error?(0,d.jsxs)("div",{children:[(0,d.jsxs)("div",{className:j().errorPanel,children:["Custom renderer crashed: ",this.state.error.message]}),this.props.fallback]}):this.props.children}constructor(...a){super(...a),this.state={error:null}}}function N({status:a,currentValues:b}){let c=[a.requiredEnvVars?.length?{title:"Required",values:a.requiredEnvVars}:null,a.missingEnvVars?.length?{title:"Missing",values:a.missingEnvVars}:null,a.optionalEnvVars?.length?{title:"Optional",values:a.optionalEnvVars}:null,a.expectedEnvFile?{title:"Put values here",values:[a.expectedEnvFile]}:null,b?.length?{title:"Current query",values:b}:null].filter(P);return(0,d.jsxs)("div",{className:j().setupBanner,children:[(0,d.jsxs)("div",{className:j().setupHeader,children:[(0,d.jsxs)("div",{children:[(0,d.jsx)("div",{className:j().setupTitle,children:a.message}),(0,d.jsx)("div",{className:j().setupCopy,children:a.remediation})]}),(0,d.jsx)("span",{className:j().setupState,children:a.state})]}),c.length>0&&(0,d.jsx)("div",{className:j().setupGrid,children:c.map(a=>(0,d.jsx)(O,{title:a.title,values:a.values},`${a.title}:${a.values.join(",")}`))}),a.lookup&&a.lookup.length>0&&(0,d.jsxs)("div",{className:j().setupLookup,children:[(0,d.jsx)("span",{className:j().setupLookupLabel,children:"Kaizen checks"}),a.lookup.join(" -> ")]}),a.detail&&(0,d.jsx)("div",{className:j().setupDetail,children:a.detail})]})}function O({title:a,values:b}){return(0,d.jsxs)("div",{className:j().setupBlock,children:[(0,d.jsx)("span",{className:j().setupBlockTitle,children:a}),b.map(a=>(0,d.jsx)("code",{className:j().setupCode,children:a},a))]})}function P(a){return null!==a}function Q(a=new Date){return new Intl.DateTimeFormat(void 0,{hour:"numeric",minute:"2-digit"}).format(a)}function R(a,b){var c;let d=(c=b)%6e4==0?`${c/6e4}m`:c%1e3==0?`${c/1e3}s`:`${c}ms`;return a?`Updated ${a} \xb7 Every ${d}`:`Every ${d}`}function S({system:a}){let[b,c]=(0,e.useState)("datasets"),[f,g]=(0,e.useState)([]),[h,i]=(0,e.useState)({name:null,systemId:null}),[k,l]=(0,e.useState)([]),[m,n]=(0,e.useState)(null),[o,p]=(0,e.useState)(null),[q,r]=(0,e.useState)(!1),[s,t]=(0,e.useState)(null),[u,v]=(0,e.useState)(!1),[w,x]=(0,e.useState)(!1),[y,z]=(0,e.useState)(!1),[A,B]=(0,e.useState)(null),[C,E]=(0,e.useState)(null),[F,G]=(0,e.useState)(null),[H,I]=(0,e.useState)(null),[J,K]=(0,e.useState)(!1),[L,M]=(0,e.useState)(null),O=a.evalDataset,P=(0,e.useRef)(!1),S=(0,e.useRef)(a.id),W=(0,e.useRef)(O),X=(0,e.useRef)(async()=>{}),Y=(0,e.useRef)(h);S.current=a.id,W.current=O,Y.current=h;let Z=h.name;h.systemId;let $=(0,e.useCallback)(()=>{c("datasets")},[]),ab=(0,e.useCallback)(()=>{c("traces")},[]),af=(0,e.useCallback)(()=>{c("add")},[]),ag=(0,e.useCallback)(()=>{X.current()},[]),ai=(0,e.useCallback)(a=>{i({name:a,systemId:a?S.current:null}),l([]),n(null),p(null),G(null),I(null)},[]),ak=(0,e.useCallback)(async()=>{let b=a.id;r(!0);try{var c,d,e,f;let a=await fetch(`/api/langfuse-datasets?systemId=${encodeURIComponent(b)}`),h=(c=await a.json(),ah(c)?{data:Array.isArray(c.data)?c.data.map(ad).filter(aj):void 0,connection:ac(c.connection),error:al(c.error)}:{});if(S.current===b&&E(h.connection??null),!a.ok)throw Error(h.error??`HTTP ${a.status}`);if(S.current!==b)return null;let j=h.data??[],k=Y.current,m=(d=k.systemId===b?k.name:null,e=j,f=W.current,d&&e.some(a=>a.name===d)?d:f&&e.some(a=>a.name===f)?f:e[0]?.name??null);return g(j),t(null),M(Q()),i({name:m,systemId:m?b:null}),0===j.length&&(l([]),n(null),p(null)),m}catch(a){if(S.current!==b)return null;return P.current||(g([]),i({name:null,systemId:null}),l([]),n(null),p(null)),t(a instanceof Error?a.message:String(a)),null}finally{S.current===b&&(P.current=!0,x(!0),r(!1))}},[a.id]),am=(0,e.useCallback)(async(b=Z)=>{if(!b)return null;let c=a.id;v(!0);try{var d;let a=await fetch(`/api/langfuse-dataset?dataset=${encodeURIComponent(b)}&systemId=${encodeURIComponent(c)}`),e=(d=await a.json(),ah(d)?{data:Array.isArray(d.data)?d.data.map(ae).filter(aj):void 0,connection:ac(d.connection),error:al(d.error)}:{});if(S.current===c&&E(e.connection??null),!a.ok)throw Error(e.error??`HTTP ${a.status}`);if(S.current!==c)return null;let f=e.data??[],g=f.filter(aa);l(f),B(null),n(a=>a&&g.some(b=>b.id===a)?a:g[0]?.id??null);let h=g.map(_).find(Boolean);return p(a=>a&&g.some(b=>_(b)===a)?a:h??null),M(Q()),f}catch(a){if(S.current!==c)return null;return B(a instanceof Error?a.message:String(a)),null}finally{S.current===c&&(z(!0),v(!1))}},[a.id,Z]),an=(0,e.useCallback)(async(a,b,c)=>{let d=Y.current.name;if(!d)return G("Choose a dataset first."),!1;K(!0),G(null),I(null);try{var e;let f=await fetch("/api/langfuse-dataset-item",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({...a,datasetName:d,systemId:S.current})}),g=(e=await f.json(),ah(e)?{data:ae(e.data)??void 0,error:al(e.error)}:{});if(!f.ok)throw Error(g.error??`HTTP ${f.status}`);let h=await am(d),i=g.data?.id??null;return c&&i&&h?.some(a=>a.id===i&&aa(a))&&n(i),I(b),!0}catch(a){return G(a instanceof Error?a.message:String(a)),!1}finally{K(!1)}},[am]),ao=(0,e.useCallback)(async a=>{await an({action:"add-from-trace",source:a.source,expectedOutput:a.expectedOutput,notes:a.notes},"Dataset item added.",!0)&&c("datasets")},[an]),ap=(0,e.useCallback)(async a=>{await an({action:"update",itemId:a.itemId,expectedOutput:a.expectedOutput,notes:a.notes},"Dataset item saved.",!0)},[an]),aq=(0,e.useCallback)(async a=>{await an({action:"archive",itemId:a},"Dataset item archived.",!1)},[an]),ar=(0,e.useMemo)(()=>k.filter(aa),[k]),as=(0,e.useMemo)(()=>ar.find(a=>a.id===m)??ar[0]??null,[ar,m]),at=(0,e.useMemo)(()=>{let a=new Map;for(let b of ar){let c=_(b);c&&!a.has(c)&&a.set(c,b)}return[...a.entries()].map(([a,b])=>({traceId:a,item:b}))},[ar]),au=o??at[0]?.traceId??_(as);return X.current=(0,e.useCallback)(async()=>{let b=await ak();b&&S.current===a.id&&await am(b)},[ak,am,a.id]),(0,d.jsxs)("div",{className:j().dataLayout,children:[(0,d.jsxs)("aside",{className:j().dataNav,children:[(0,d.jsx)("button",{className:`${j().dataNavItem} ${"datasets"===b?j().dataNavItemActive:""}`,onClick:$,children:"Datasets"}),(0,d.jsx)("button",{className:`${j().dataNavItem} ${"traces"===b?j().dataNavItemActive:""}`,onClick:ab,children:"Traces"}),(0,d.jsx)("button",{className:`${j().dataNavItem} ${"add"===b?j().dataNavItemActive:""}`,onClick:af,children:"Add item"})]}),(0,d.jsxs)("section",{className:j().dataMain,children:[(0,d.jsx)(D,{title:"Langfuse data",source:"langfuse",syncLabel:R(L,15e3),onRefresh:ag,refreshing:u||q,children:"This is the evaluation data for the selected system. Use Datasets to inspect golden examples, Traces to review the source calls behind those examples, and Add item to prepare new examples. The view updates automatically while open; Refresh pulls the latest now."}),C&&"connected"!==C.state&&(0,d.jsx)(N,{status:C}),"datasets"===b?(0,d.jsx)(T,{system:a,datasets:f,selectedDatasetName:Z,configuredDatasetName:O,items:ar,selectedItem:as,loading:q&&!w||u&&!y,datasetsError:s,error:A,mutationError:F,mutationMessage:H,mutating:J,onSelectDataset:ai,onSelect:n,onUpdateItem:ap,onArchiveItem:aq}):"traces"===b?(0,d.jsx)(U,{systemId:a.id,linkedTraces:at,selectedTraceId:au,onSelectTrace:p,hasCustomRenderer:!!a.traceRenderer,error:s??A}):(0,d.jsx)(V,{system:a,datasetName:Z,error:F,message:H,mutating:J,onAddItem:ao})]})]})}function T({system:a,datasets:b,selectedDatasetName:c,configuredDatasetName:f,items:g,selectedItem:h,loading:i,datasetsError:k,error:m,mutationError:n,mutationMessage:o,mutating:p,onSelectDataset:q,onSelect:r,onUpdateItem:s,onArchiveItem:t}){let u=(0,e.useCallback)(a=>{q(a.target.value?a.target.value:null)},[q]);return(0,d.jsxs)("div",{className:j().surface,children:[(0,d.jsx)("div",{className:j().surfaceToolbar,children:(0,d.jsxs)("div",{children:[(0,d.jsxs)("label",{className:j().inlineSelector,children:[(0,d.jsx)("span",{className:j().inlineSelectorLabel,children:"Dataset"}),(0,d.jsxs)("select",{className:j().select,value:c??"",onChange:u,disabled:0===b.length,children:[(0,d.jsx)("option",{value:"",disabled:!0,children:0===b.length?"No datasets available":"Select dataset"}),b.map(a=>(0,d.jsx)("option",{value:a.name,children:a.name},a.name))]})]}),f&&(0,d.jsxs)("div",{className:j().provenanceLine,children:[(0,d.jsx)("span",{children:"Default dataset"}),(0,d.jsx)("code",{children:f}),(0,d.jsx)(l,{source:"code"})]})]})}),k&&(0,d.jsx)("div",{className:j().errorPanel,children:k}),n&&(0,d.jsx)("div",{className:j().errorPanel,children:n}),o&&(0,d.jsx)("div",{className:j().successPanel,children:o}),i?(0,d.jsx)("div",{className:j().loadingPanel,children:"Loading Langfuse data..."}):c?m?(0,d.jsx)("div",{className:j().errorPanel,children:m}):(0,d.jsxs)("div",{className:j().splitSurface,children:[(0,d.jsx)(W,{items:g,selectedId:h?.id??null,onSelect:r}),(0,d.jsx)(Y,{item:h,systemId:a.id,hasCustomRenderer:!!a.traceRenderer,datasetName:c,mutating:p,onUpdate:s,onArchive:t})]}):(0,d.jsxs)("div",{className:j().emptyPanel,children:[(0,d.jsx)("div",{className:j().emptyPanelTitle,children:0===b.length?"No Langfuse datasets found":"No Langfuse dataset selected"}),(0,d.jsx)("div",{className:j().emptyPanelCopy,children:0===b.length?"Kaizen did not find any datasets for this system.":"Choose a dataset to inspect its examples."})]})]})}function U({systemId:a,linkedTraces:b,selectedTraceId:c,onSelectTrace:e,hasCustomRenderer:f,error:g}){return(0,d.jsxs)("div",{className:j().surface,children:[(0,d.jsx)("div",{className:j().surfaceToolbar,children:(0,d.jsxs)("div",{children:[(0,d.jsx)("div",{className:j().surfaceTitle,children:"Traces"}),(0,d.jsxs)("div",{className:j().surfaceSubtitle,children:[b.length," linked source trace",1===b.length?"":"s"]})]})}),g?(0,d.jsx)("div",{className:j().errorPanel,children:g}):(0,d.jsxs)("div",{className:j().splitSurface,children:[(0,d.jsx)(X,{traces:b,selectedTraceId:c,onSelect:e}),(0,d.jsx)(Z,{traceId:c,systemId:a,hasCustomRenderer:f})]})]})}function V({system:a,datasetName:b,error:c,message:f,mutating:g,onAddItem:h}){let[i,k]=(0,e.useState)(""),[l,m]=(0,e.useState)(""),[n,o]=(0,e.useState)(""),p=(0,e.useCallback)(a=>{k(a.target.value)},[]),q=(0,e.useCallback)(a=>{m(a.target.value)},[]),r=(0,e.useCallback)(a=>{o(a.target.value)},[]),s=(0,e.useCallback)(a=>{a.preventDefault(),h({source:i,expectedOutput:ab(l),notes:n})},[l,n,h,i]),t=!!(b&&i.trim()&&!g);return(0,d.jsxs)("form",{className:j().detailPanel,onSubmit:s,children:[(0,d.jsxs)("div",{className:j().detailHeader,children:[(0,d.jsxs)("div",{children:[(0,d.jsx)("h2",{className:j().detailTitle,children:"Add dataset item"}),(0,d.jsx)("div",{className:j().detailMeta,children:b??a.evalDataset??"No dataset selected"})]}),(0,d.jsx)("span",{className:j().statusPill,children:"Langfuse"})]}),c&&(0,d.jsx)("div",{className:j().errorPanel,children:c}),f&&(0,d.jsx)("div",{className:j().successPanel,children:f}),(0,d.jsxs)("div",{className:j().formRow,children:[(0,d.jsx)("label",{className:j().formLabel,htmlFor:"dataset-source",children:"Source trace"}),(0,d.jsx)("input",{id:"dataset-source",className:j().textInput,disabled:!b||g,placeholder:"Langfuse trace URL or trace ID",value:i,onChange:p}),(0,d.jsx)("div",{className:j().detailMeta,children:"Orbit URL lookup will be wired in a follow-up. For now, paste the Langfuse trace URL or trace ID for the call you want in the golden dataset."})]}),(0,d.jsxs)("div",{className:j().formRow,children:[(0,d.jsx)("label",{className:j().formLabel,htmlFor:"dataset-expected-output",children:"Expected output"}),(0,d.jsx)("textarea",{id:"dataset-expected-output",className:j().textArea,disabled:!b||g,placeholder:"Leave blank to use the trace output, or paste text/JSON ground truth.",value:l,onChange:q})]}),(0,d.jsxs)("div",{className:j().formRow,children:[(0,d.jsx)("label",{className:j().formLabel,htmlFor:"dataset-notes",children:"Notes"}),(0,d.jsx)("textarea",{id:"dataset-notes",className:j().textArea,disabled:!b||g,placeholder:"Why this belongs in the golden dataset.",value:n,onChange:r})]}),(0,d.jsx)("button",{className:j().secondaryButton,disabled:!t,children:g?"Adding...":"Add item"})]})}function W({items:a,selectedId:b,onSelect:c}){let f=(0,e.useCallback)(a=>{let b=ag(a.target,"itemId");b&&c(b)},[c]);return 0===a.length?(0,d.jsx)("div",{className:j().listPanelEmpty,children:"No dataset items"}):(0,d.jsx)("aside",{className:j().listPanel,onClick:f,children:a.map((a,c)=>{let e=_(a);return(0,d.jsxs)("button",{"data-item-id":a.id,className:`${j().listRow} ${b===a.id?j().listRowSelected:""}`,children:[(0,d.jsx)("span",{className:j().listRowTitle,children:af(a,c)}),(0,d.jsx)("span",{className:j().listRowMeta,children:e?`trace ${e.slice(0,8)}`:a.status??"item"})]},a.id)})})}function X({traces:a,selectedTraceId:b,onSelect:c}){let f=(0,e.useCallback)(a=>{let b=ag(a.target,"traceId");b&&c(b)},[c]);return 0===a.length?(0,d.jsx)("div",{className:j().listPanelEmpty,children:"No linked traces"}):(0,d.jsx)("aside",{className:j().listPanel,onClick:f,children:a.map(({traceId:a,item:c},e)=>(0,d.jsxs)("button",{"data-trace-id":a,className:`${j().listRow} ${b===a?j().listRowSelected:""}`,children:[(0,d.jsx)("span",{className:j().listRowTitle,children:af(c,e)}),(0,d.jsx)("span",{className:j().listRowMeta,children:a})]},a))})}function Y({item:a,systemId:b,hasCustomRenderer:c,datasetName:f,mutating:g,onUpdate:h,onArchive:i}){let k=a?_(a):null;a?.id;let[l,m]=(0,e.useState)(""),[n,o]=(0,e.useState)(""),p=(0,e.useCallback)(a=>{m(a.target.value)},[]),q=(0,e.useCallback)(a=>{o(a.target.value)},[]),r=(0,e.useCallback)(()=>{a&&h({itemId:a.id,expectedOutput:ab(l),notes:n})},[l,a,n,h]),s=(0,e.useCallback)(()=>{a&&i(a.id)},[a,i]),t=(0,e.useMemo)(()=>a?{id:a.id,input:a.input,expectedOutput:a.expectedOutput,metadata:a.metadata}:null,[a]);if(!a)return(0,d.jsx)("section",{className:j().detailPanel,children:"No item selected"});let u=!g,v=!!(f&&!g);return(0,d.jsxs)("section",{className:j().detailPanel,children:[(0,d.jsxs)("div",{className:j().detailHeader,children:[(0,d.jsxs)("div",{children:[(0,d.jsx)("h2",{className:j().detailTitle,children:af(a,0)}),(0,d.jsx)("div",{className:j().detailMeta,children:a.id})]}),a.status&&(0,d.jsx)("span",{className:j().statusPill,children:a.status})]}),(0,d.jsxs)("div",{className:j().formRow,children:[(0,d.jsx)("label",{className:j().formLabel,htmlFor:"dataset-item-notes",children:"Notes"}),(0,d.jsx)("textarea",{id:"dataset-item-notes",className:j().textArea,disabled:g,placeholder:"Add context for future experiments.",value:n,onChange:q})]}),(0,d.jsxs)("div",{className:j().formRow,children:[(0,d.jsx)("label",{className:j().formLabel,htmlFor:"dataset-item-expected",children:"Expected output"}),(0,d.jsx)("textarea",{id:"dataset-item-expected",className:j().textAreaLarge,disabled:g,value:l,onChange:p})]}),(0,d.jsxs)("div",{className:j().actionFooter,children:[(0,d.jsx)("div",{className:j().detailMeta,children:"Archived examples are hidden from the active dataset view but remain in Langfuse history."}),(0,d.jsxs)("div",{className:j().actionRow,children:[(0,d.jsx)("button",{className:j().dangerButton,disabled:!u,onClick:s,type:"button",children:"Archive item"}),(0,d.jsx)("button",{className:j().primaryButton,disabled:!v,onClick:r,type:"button",children:g?"Saving...":"Save changes"})]})]}),(0,d.jsxs)("div",{className:j().detailGrid,children:[(0,d.jsx)($,{title:"Input",value:a.input}),(0,d.jsx)($,{title:"Current expected output",value:a.expectedOutput})]}),(0,d.jsx)($,{title:"Metadata",value:a.metadata}),(0,d.jsxs)("div",{className:j().traceSection,children:[(0,d.jsx)("div",{className:j().sectionTitle,children:"Source Trace"}),(0,d.jsx)(Z,{traceId:k,systemId:b,hasCustomRenderer:c,datasetItem:t,compact:!0})]})]})}function Z({traceId:a,systemId:b,hasCustomRenderer:c,datasetItem:f,compact:g}){let[h,i]=(0,e.useState)(null),[k,l]=(0,e.useState)(null),[m,n]=(0,e.useState)(!1),o=(0,d.jsx)(J,{trace:h,systemId:b,hasCustomRenderer:c,datasetItem:f,loading:m,error:a?k:null});return a||g?g?o:(0,d.jsx)("section",{className:j().detailPanel,children:o}):(0,d.jsx)("section",{className:j().detailPanel,children:(0,d.jsx)("div",{className:j().mutedText,children:"No source trace linked."})})}function $({title:a,value:b}){var c;return(0,d.jsxs)("div",{className:j().jsonBlock,children:[(0,d.jsx)("div",{className:j().jsonTitle,children:a}),(0,d.jsx)("pre",{className:j().jsonPre,children:null==(c=b)?"(empty)":"string"==typeof c?c:JSON.stringify(c,null,2)})]})}function _(a){if(!a)return null;if("string"==typeof a.sourceTraceId&&a.sourceTraceId)return a.sourceTraceId;let b=a.metadata,c=b?.sourceTraceId??b?.traceId;return"string"==typeof c&&c?c:null}function aa(a){return a.status?.toUpperCase()!=="ARCHIVED"}function ab(a){let b=a.trim();if(b&&"(empty)"!==b)try{return JSON.parse(b)}catch{return b}}function ac(a){if(ah(a)&&"string"==typeof a.state&&"string"==typeof a.message&&"string"==typeof a.remediation)return{state:a.state,message:a.message,remediation:a.remediation,requiredEnvVars:ak(a.requiredEnvVars),optionalEnvVars:ak(a.optionalEnvVars),expectedEnvFile:al(a.expectedEnvFile),missingEnvVars:ak(a.missingEnvVars),lookup:ak(a.lookup),detail:al(a.detail)}}function ad(a){return ah(a)&&"string"==typeof a.name?{id:al(a.id),name:a.name,description:"string"==typeof a.description||null===a.description?a.description:void 0,metadata:ah(a.metadata)||null===a.metadata?a.metadata:void 0,createdAt:al(a.createdAt),updatedAt:al(a.updatedAt)}:null}function ae(a){return ah(a)&&"string"==typeof a.id?{id:a.id,status:al(a.status),sourceTraceId:"string"==typeof a.sourceTraceId||null===a.sourceTraceId?a.sourceTraceId:void 0,input:a.input,expectedOutput:a.expectedOutput,metadata:ah(a.metadata)||null===a.metadata?a.metadata:void 0,createdAt:al(a.createdAt),updatedAt:al(a.updatedAt)}:null}function af(a,b){let c=a.metadata;for(let b of[c?.callSummary,c?.summary,c?.name,c?.analysisId,a.id])if("string"==typeof b&&b.trim())return b;return`Item ${b+1}`}function ag(a,b){if(!(a instanceof Element))return null;let c=a.closest("button");return c instanceof HTMLButtonElement?c.dataset[b]??null:null}function ah(a){return"object"==typeof a&&null!==a&&!Array.isArray(a)}function ai(a){return"string"==typeof a}function aj(a){return null!==a}function ak(a){return Array.isArray(a)?a.filter(ai):[]}function al(a){return"string"==typeof a?a:void 0}function am(a){var b,c,d,e,f;return ao(a)&&"string"==typeof a.id&&"string"==typeof a.identifier&&"string"==typeof a.title&&"string"==typeof a.url&&"string"==typeof a.createdAt&&"string"==typeof a.updatedAt?{id:a.id,identifier:a.identifier,title:a.title,description:"string"==typeof a.description||null===a.description?a.description:null,url:a.url,priority:"number"==typeof a.priority?a.priority:0,createdAt:a.createdAt,updatedAt:a.updatedAt,state:ao(b=a.state)&&"string"==typeof b.name&&"string"==typeof b.type?{name:b.name,type:b.type}:null,assignee:ao(c=a.assignee)&&"string"==typeof c.name?{name:c.name}:null,project:ao(d=a.project)&&"string"==typeof d.id&&"string"==typeof d.name?{id:d.id,name:d.name,url:"string"==typeof d.url?d.url:null}:null,team:ao(e=a.team)&&"string"==typeof e.key&&"string"==typeof e.name?{key:e.key,name:e.name}:null,labels:ao(f=a.labels)&&Array.isArray(f.nodes)?{nodes:f.nodes.map(a=>ao(a)&&"string"==typeof a.name?{name:a.name}:null).filter(aq)}:{nodes:[]}}:null}function an(a){return Array.isArray(a)?a.filter(ap):[]}function ao(a){return"object"==typeof a&&null!==a&&!Array.isArray(a)}function ap(a){return"string"==typeof a}function aq(a){return null!==a}function ar(a){return"string"==typeof a?a:void 0}function as(a){return"string"==typeof a?a:null}var at=c(2377),au=c.n(at);function av({issue:a,issueTitle:b,showTitle:c=!1}){if(!a)return null;let e=b?`${a.id} \xb7 ${b}`:a.id;return(0,d.jsxs)("a",{className:au().linearIssueLink,href:a.url,target:"_blank",rel:"noreferrer",title:b?`${a.id}: ${b}`:`Open ${a.id} in Linear`,onClick:aw,children:[(0,d.jsx)("img",{src:"/source-icons/linear.svg",alt:""}),(0,d.jsx)("span",{children:c?e:a.id})]})}function aw(a){a.stopPropagation()}let ax={running:{color:"#f5a623",bg:"rgba(245,166,35,0.1)",border:"rgba(245,166,35,0.3)"},complete:{color:"#00d4aa",bg:"rgba(0,212,170,0.1)",border:"rgba(0,212,170,0.3)"},crashed:{color:"#e8553d",bg:"rgba(232,85,61,0.1)",border:"rgba(232,85,61,0.3)"},aborted:{color:"rgba(250,250,250,0.4)",bg:"rgba(255,255,255,0.04)",border:"rgba(255,255,255,0.08)"}},ay=ax.running;function az({metrics:a}){let b=Object.entries(a);return 0===b.length?null:(0,d.jsxs)("table",{className:au().metricsTable,children:[(0,d.jsx)("thead",{children:(0,d.jsxs)("tr",{children:[(0,d.jsx)("th",{className:au().metricsTableHeader,children:"Metric"}),(0,d.jsx)("th",{className:au().metricsTableHeader,style:{textAlign:"right"},children:"Value"}),(0,d.jsx)("th",{className:au().metricsTableHeader,style:{width:"40%"}})]})}),(0,d.jsx)("tbody",{children:b.map(([a,b])=>(0,d.jsxs)("tr",{className:au().metricsTableRow,children:[(0,d.jsx)("td",{className:au().metricsTableLabel,children:y(a)}),(0,d.jsx)("td",{className:au().metricsTableValue,children:z(a,b)}),(0,d.jsx)("td",{className:au().metricsTableBarCell,children:b>=0&&b<=1&&(0,d.jsx)("div",{className:au().metricsTableBarTrack,children:(0,d.jsx)("div",{className:au().metricsTableBar,style:{width:`${100*b}%`}})})})]},a))})]})}function aA({run:a,primaryMetric:b,linearIssueTitle:c}){let e=ax[a.status]??ay,f=A(a,b),g=function(a){let b=a.progress?.total||a.totalItems||a.evalConfig?.datasetItemCount||null;if(!b||b<=0)return null;let c="complete"===a.status?b:"number"==typeof a.progress?.completed?Math.min(a.progress.completed,b):null;return null===c?null:{completed:c,total:b,percent:Math.min(100,Math.max(0,c/b*100))}}(a);return(0,d.jsxs)("div",{children:[(0,d.jsxs)("div",{className:au().detailPanelHeader,children:[(0,d.jsxs)("div",{className:au().detailTitleStack,children:[(0,d.jsx)("h2",{className:au().detailPanelTitle,children:a.runName}),a.linearIssue&&(0,d.jsx)(av,{issue:a.linearIssue,issueTitle:c,showTitle:!0})]}),null!=f&&(0,d.jsx)("span",{className:au().bestAccuracyInline,children:z(b??"score",f)}),(0,d.jsx)("span",{className:au().statusBadge,style:{color:e.color,backgroundColor:e.bg,border:`1px solid ${e.border}`},children:a.status})]}),g&&(0,d.jsxs)("div",{className:au().runProgressBlock,children:[(0,d.jsxs)("div",{className:au().runProgressHeader,children:[(0,d.jsx)("span",{children:"Dataset items"}),(0,d.jsxs)("span",{children:[g.completed,"/",g.total]})]}),(0,d.jsx)("div",{className:au().runProgressTrack,children:(0,d.jsx)("div",{className:au().runProgressFill,style:{width:`${g.percent}%`}})})]}),(0,d.jsxs)("div",{className:au().runMetaGrid,children:[(0,d.jsx)(aB,{label:"Dataset",value:a.evalConfig?.dataset}),(0,d.jsx)(aB,{label:"Eval version",value:"number"==typeof a.evalConfig?.evalVersion?`v${a.evalConfig.evalVersion}`:null}),(0,d.jsx)(aB,{label:"Started",value:v(a.startedAt)}),(0,d.jsx)(aB,{label:"Updated",value:v(a.updatedAt)}),a.worktreeBranch&&(0,d.jsx)(aB,{label:"Branch",value:a.worktreeBranch}),a.parentId&&(0,d.jsx)(aB,{label:"Parent",value:a.parentId})]}),(0,d.jsxs)("div",{className:au().runSection,children:[(0,d.jsx)("span",{className:au().runLabel,children:"Metrics"}),(0,d.jsx)(az,{metrics:a.metrics}),0===Object.keys(a.metrics).length&&(0,d.jsx)("div",{className:au().detailEmpty,children:"No metrics yet."})]})]})}function aB({label:a,value:b}){return b?(0,d.jsxs)("div",{className:au().runMetaCell,children:[(0,d.jsx)("span",{className:au().runMetaLabel,children:a}),(0,d.jsx)("span",{className:au().runMetaValue,children:b})]}):null}function aC({run:a,primaryMetric:b,linearIssueTitle:c,onClose:f,onViewTraces:g}){let h=(0,e.useCallback)(()=>{g?.(a.runId)},[g,a.runId]);return(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)("div",{className:au().detailPanelBackdrop,onClick:f}),(0,d.jsxs)("div",{className:au().detailPanel,children:[(0,d.jsx)("button",{className:au().detailPanelClose,onClick:f,children:"\xd7"}),(0,d.jsx)(aA,{run:a,primaryMetric:b,linearIssueTitle:c}),g&&(0,d.jsx)("button",{className:au().viewTracesButton,onClick:h,type:"button",children:"View Traces"})]})]})}function aD({run:a,systemId:b,primaryMetric:c,hasCustomRenderer:f,onClose:g}){let[h,i]=(0,e.useState)([]),[k,l]=(0,e.useState)(!0),[m,n]=(0,e.useState)(null),[o,p]=(0,e.useState)(null),[q,r]=(0,e.useState)(!1),[s,t]=(0,e.useState)(null),[u,v]=(0,e.useState)(null),w=(0,e.useCallback)(a=>{let b=a.currentTarget.dataset.traceId;b&&n(b)},[]),x=(0,e.useCallback)(()=>{n(null)},[]),A=a.metrics,B=(0,e.useMemo)(()=>{let a=h.find(a=>null!=a.breakdown);return a?.breakdown!=null?Object.keys(a.breakdown):[]},[h]);return(0,d.jsx)("div",{className:j().runTracesOverlay,children:(0,d.jsxs)("div",{className:j().runTracesPanel,children:[(0,d.jsxs)("div",{className:j().runTracesPanelHeader,children:[(0,d.jsxs)("div",{children:[(0,d.jsx)("h2",{className:j().runTracesPanelTitle,children:a.runName}),(0,d.jsxs)("div",{className:j().detailMeta,children:[a.totalItems??h.length," items \xb7 ",a.status]})]}),(0,d.jsx)("button",{className:j().runTracesPanelClose,onClick:g,type:"button",children:"\xd7"})]}),(0,d.jsx)("div",{className:j().runTracesScores,children:Object.entries(A).map(([a,b])=>(0,d.jsxs)("div",{className:j().runTracesScoreChip,children:[(0,d.jsx)("span",{className:j().runTracesScoreLabel,children:y(a)}),(0,d.jsx)("span",{className:j().runTracesScoreValue,children:z(a,b)})]},a))}),m?(0,d.jsxs)("div",{className:j().runTracesDetail,children:[(0,d.jsx)("button",{className:j().backButton,onClick:x,type:"button",children:"← Back to traces"}),(0,d.jsx)(J,{trace:o,systemId:b,hasCustomRenderer:f,loading:q,error:s})]}):k?(0,d.jsx)("div",{className:j().loadingPanel,children:"Loading run traces..."}):u?(0,d.jsx)("div",{className:j().errorPanel,children:u}):0===h.length?(0,d.jsxs)("div",{className:j().emptyPanel,children:[(0,d.jsx)("div",{className:j().emptyPanelTitle,children:"No traces found"}),(0,d.jsx)("div",{className:j().emptyPanelCopy,children:"This run did not emit any item events with trace IDs."})]}):(0,d.jsx)("div",{className:j().runTracesTableWrap,children:(0,d.jsxs)("table",{className:j().runTracesTable,children:[(0,d.jsx)("thead",{children:(0,d.jsxs)("tr",{children:[(0,d.jsx)("th",{children:"Item ID"}),(0,d.jsx)("th",{children:c?y(c):"Score"}),B.map(a=>(0,d.jsx)("th",{children:y(a)},a)),(0,d.jsx)("th",{children:"Trace"})]})}),(0,d.jsx)("tbody",{children:h.map(a=>(0,d.jsxs)("tr",{"data-trace-id":a.traceId??void 0,className:a.traceId?j().runTracesTableRowClickable:void 0,onClick:a.traceId?w:void 0,children:[(0,d.jsx)("td",{className:j().runTracesTableId,children:a.id}),(0,d.jsx)("td",{children:a.score.toFixed(2)}),B.map(b=>(0,d.jsx)("td",{children:a.breakdown?.[b]!=null?a.breakdown[b].toFixed(2):"—"},b)),(0,d.jsx)("td",{children:a.traceId?(0,d.jsx)("span",{className:j().runTracesTraceLink,children:"View"}):(0,d.jsx)("span",{className:j().mutedText,children:"—"})})]},a.id))})]})})]})})}var aE=c(3604),aF=c(7504),aG=c(452);function aH(a){return a<60?`${a}s`:a<3600?`${Math.floor(a/60)}m`:`${Math.floor(a/3600)}h ${Math.floor(a%3600/60)}m`}function aI({node:a,isSelected:b,isBestGlobal:c,isHighlighted:f,primaryMetric:g,linearIssueTitles:h,onClick:i}){let j=a.data.status,k=ax[j.status]??ay,l=A(j,g),m=null!=l?`${(100*l).toFixed(1)}%`:null,n="running"===j.status,o=function(a,b){let[c,d]=(0,e.useState)(Date.now());if(!a)return null;let f=new Date(a).getTime();return isNaN(f)?null:aH(Math.max(0,Math.floor((c-f)/1e3)))}(j.startedAt,0),p=n?null:function(a,b){if(!a||!b)return null;let c=new Date(a).getTime(),d=new Date(b).getTime();if(isNaN(c)||isNaN(d))return null;let e=Math.max(0,Math.floor((d-c)/1e3));return 0===e?null:aH(e)}(j.startedAt,j.updatedAt),q=j.linearIssue?h?.[j.linearIssue.id]??null:null;return(0,d.jsx)("foreignObject",{x:a.x-100,y:a.y-63,width:200,height:126,children:(0,d.jsxs)("button",{"data-run-id":j.runId,className:[au().treeNodeCard,b?au().treeNodeSelected:"",c?au().treeNodeBest:"",f?au().treeNodeHighlight:""].filter(Boolean).join(" "),onClick:i,title:q?`${j.runName}
5
- ${q}`:j.runName,children:[(0,d.jsx)("div",{className:au().treeNodeName,children:j.runName}),(0,d.jsxs)("div",{className:au().treeNodeBadgeRow,children:[(0,d.jsx)("span",{className:au().treeNodeBadge,style:{color:k.color,backgroundColor:k.bg,border:`1px solid ${k.border}`},children:j.status}),n&&o&&(0,d.jsx)("span",{className:au().treeNodeElapsed,children:o}),p&&(0,d.jsx)("span",{className:au().treeNodeElapsed,children:p})]}),(0,d.jsx)("div",{className:au().treeNodeScoreRow,children:m?(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)("span",{className:au().treeNodeAccuracy,children:m}),null!=j.totalItems&&(0,d.jsxs)("span",{className:au().treeNodeItems,children:["n=",j.totalItems]})]}):"aborted"===j.status||"crashed"===j.status?(0,d.jsx)("span",{className:au().treeNodeItems,children:"—"}):(0,d.jsxs)("span",{className:au().treeNodeLoading,children:[(0,d.jsx)("span",{className:au().treeNodePulse}),(0,d.jsx)("span",{className:au().treeNodeLoadingText,children:"running"===j.status&&j.progress?`${j.progress.completed}/${j.progress.total}`:"running"===j.status?"Running eval...":"Pending"})]})}),j.linearIssue&&(0,d.jsx)("div",{className:au().treeNodeIssueRow,children:(0,d.jsx)(av,{issue:j.linearIssue,issueTitle:q,showTitle:!0})})]})})}function aJ({link:a}){return(0,d.jsx)(aG.LinkVertical,{data:a,stroke:"rgba(255, 255, 255, 0.25)",strokeWidth:1.5,fill:"none"})}function aK(a){return{status:a.status,children:a.children.map(aK)}}function aL(a){return a.depth>0&&null!==a.data.status}function aM({roots:a,selectedId:b,bestGlobalId:c,highlightId:f,primaryMetric:g,linearIssueTitles:h,onSelect:i}){let j=(0,e.useMemo)(()=>({status:null,children:a.map(aK)}),[a]),k=(0,e.useMemo)(()=>(0,aF.Sk)(j,a=>a.children.length>0?a.children:null),[j]);return 0===a.length?null:(0,d.jsx)("div",{className:au().treeForest,children:(0,d.jsx)(aF.PH,{root:k,nodeSize:[216,158],separation:(a,b)=>a.parent===b.parent?1:1.1,children:a=>{let e=a.descendants(),j=a.links(),k=e.filter(aL),l=j.filter(a=>a.source.depth>0);if(0===k.length)return null;let m=1/0,n=-1/0,o=1/0,p=-1/0;for(let a of k)m=Math.min(m,a.x),n=Math.max(n,a.x),o=Math.min(o,a.y),p=Math.max(p,a.y);let q=n-m+200+80,r=p-o+126+80,s=-m+100+40,t=-o+63+40;return(0,d.jsx)("svg",{width:q,height:r,className:au().treeSvg,children:(0,d.jsxs)(aE.Group,{top:t,left:s,children:[l.map((a,b)=>(0,d.jsx)(aJ,{link:a},`link-${b}`)),k.map(a=>(0,d.jsx)(aI,{node:a,isSelected:b===a.data.status.runId,isBestGlobal:c===a.data.status.runId,isHighlighted:f===a.data.status.runId,primaryMetric:g,linearIssueTitles:h,onClick:()=>i(a.data.status.runId)},a.data.status.runId))]})})}})})}var aN=c(7048),aO=c.n(aN);function aP({runs:a,primaryMetric:b,bestGlobalId:c,selectedId:f,linearIssueTitles:g,onSelect:h}){let[i,j]=(0,e.useState)(b??""),[k,l]=(0,e.useState)(!0),m=(0,e.useRef)(new Map),n=(0,e.useRef)(new Map),o=(0,e.useMemo)(()=>{let c=new Set;for(let b of a)for(let a of Object.keys(b.metrics))c.add(a);return[...c].sort((a,c)=>a===b?-1:c===b?1:a.localeCompare(c))},[a,b]),p=(0,e.useMemo)(()=>{let b=[...a];return b.sort((a,b)=>{let c=i?a.metrics[i]??-1/0:0,d=i?b.metrics[i]??-1/0:0,e=k?d-c:c-d;return 0!==e?e:(b.totalItems??0)-(a.totalItems??0)}),b},[a,i,k]),q=(0,e.useCallback)(a=>{for(let[a,b]of m.current)n.current.set(a,b.getBoundingClientRect().top);a===i?l(a=>!a):(j(a),l(!0))},[i]);return 0===a.length?(0,d.jsx)("p",{className:aO().noData,children:"No experiments yet."}):(0,d.jsx)("div",{className:aO().tableWrapper,children:(0,d.jsxs)("table",{className:aO().table,children:[(0,d.jsx)("thead",{children:(0,d.jsxs)("tr",{children:[(0,d.jsx)("th",{className:aO().thRank,children:"#"}),(0,d.jsx)("th",{className:aO().thName,children:"Run"}),(0,d.jsx)("th",{className:aO().thStatus,children:"Status"}),o.map(a=>(0,d.jsxs)("th",{className:`${aO().thMetric} ${a===b?aO().thPrimary:""} ${a===i?aO().thSorted:""}`,onClick:()=>q(a),children:[(0,d.jsx)("span",{className:aO().thLabel,children:y(a)}),a===i&&(0,d.jsx)("span",{className:aO().sortArrow,children:k?"▼":"▲"})]},a)),(0,d.jsx)("th",{className:aO().thItems,children:"n"}),(0,d.jsx)("th",{className:aO().thStarted,children:"Started"})]})}),(0,d.jsx)("tbody",{children:p.map((a,e)=>{let i=ax[a.status]??ay,j=a.runId===c,k=a.runId===f;return(0,d.jsxs)("tr",{ref:b=>{b?m.current.set(a.runId,b):m.current.delete(a.runId)},className:`${aO().row} ${j?aO().rowBest:""} ${k?aO().rowSelected:""}`,onClick:()=>h(a.runId),children:[(0,d.jsx)("td",{className:aO().tdRank,children:e+1}),(0,d.jsxs)("td",{className:aO().tdName,children:[(0,d.jsx)("span",{className:aO().expName,children:a.runName}),(0,d.jsx)(av,{issue:a.linearIssue,issueTitle:a.linearIssue?g?.[a.linearIssue.id]:null}),j&&(0,d.jsx)("span",{className:aO().bestBadge,children:"BEST"})]}),(0,d.jsx)("td",{className:aO().tdStatus,children:(0,d.jsx)("span",{className:aO().statusDot,style:{backgroundColor:i.color},title:a.status})}),o.map(c=>{let e=a.metrics[c],f=c===b;return(0,d.jsx)("td",{className:`${aO().tdMetric} ${f?aO().tdPrimary:""}`,children:null!=e?(0,d.jsx)("span",{className:aO().metricValue,children:z(c,e)}):(0,d.jsx)("span",{className:aO().metricEmpty,children:"—"})},c)}),(0,d.jsx)("td",{className:aO().tdItems,children:a.totalItems??"?"}),(0,d.jsx)("td",{className:aO().tdStarted,children:v(a.startedAt)})]},a.runId)})})]})})}function aQ({runs:a,primaryMetric:b,bestRunId:c,selectedRunId:e,linearIssueTitles:f,onSelectRun:g}){return(0,d.jsx)(aP,{runs:a,primaryMetric:b,bestGlobalId:c,selectedId:e,linearIssueTitles:f,onSelect:g})}function aR({system:a}){let{runs:b}=u(a.id),[c,f]=(0,e.useState)(null),[g]=(0,e.useState)(null),[h,i]=(0,e.useState)(null),[k,l]=(0,e.useState)(null),[m,n]=(0,e.useState)(280),[o,p]=(0,e.useState)({}),q=(0,e.useCallback)(()=>{f(null)},[]),r=(0,e.useCallback)(a=>{l(a)},[]),s=(0,e.useCallback)(()=>{l(null)},[]),t=(0,e.useCallback)(a=>{let b=function(a){if(!(a instanceof Element))return null;let b=a.closest("button");return b instanceof HTMLButtonElement?b.dataset.groupKey??null:null}(a.target);b&&i(b)},[]),v=(0,e.useCallback)(a=>{a.preventDefault();let b=a.clientX,c=a=>{n(Math.min(560,Math.max(220,m+a.clientX-b)))};document.body.style.cursor="col-resize",document.body.style.userSelect="none",document.addEventListener("pointermove",c),document.addEventListener("pointerup",()=>{document.removeEventListener("pointermove",c),document.body.style.cursor="",document.body.style.userSelect=""},{once:!0})},[m]),w=a.primaryMetric??null,x=(0,e.useMemo)(()=>{let a=new Map;for(let c of b){let b=B(c,w),d=a.get(b.key);d?d.count++:a.set(b.key,{...b,count:1})}return[...a.values()].sort((a,b)=>{let c=a.dataset.localeCompare(b.dataset);return 0===c?a.evalLabel.localeCompare(b.evalLabel):c})},[w,b]),y=h&&x.some(a=>a.key===h)?h:x[0]?.key??null,z=(0,e.useMemo)(()=>y?b.filter(a=>B(a,w).key===y):b,[b,y,w]),C=(0,e.useMemo)(()=>(function(a,b){let c=new Map;for(let b of a)c.set(b.runId,{status:b,children:[]});let d=[];for(let a of c.values()){let b=a.status.parentId;b&&c.has(b)?c.get(b).children.push(a):d.push(a)}let e=a=>{for(let c of(a.sort((a,c)=>(A(c.status,b)??-1)-(A(a.status,b)??-1)),a))e(c.children)};return e(d),d})(z,w),[z,w]),E=(0,e.useMemo)(()=>{let a=null,b=-1;for(let c of z){let d=A(c,w);null!=d&&d>b&&(b=d,a=c.runId)}return a},[z,w]),F=c?z.find(a=>a.runId===c):null,G=k?z.find(a=>a.runId===k):null;return(0,d.jsxs)("div",{className:j().experimentsLayout,children:[(0,d.jsx)("aside",{className:`${j().dataNav} ${j().experimentNav}`,style:{width:m},onClick:t,children:0===x.length?(0,d.jsx)("div",{className:j().dataNavEmpty,children:"No experiments yet"}):x.map(a=>(0,d.jsxs)("button",{"data-group-key":a.key,title:`${a.datasetLabel}
6
- ${a.evalLabel} \xb7 ${a.count} experiments`,className:`${j().dataNavItem} ${j().dataNavGroupItem} ${j().experimentNavItem} ${y===a.key?j().dataNavItemActive:""}`,children:[(0,d.jsx)("span",{className:j().dataNavItemText,children:a.datasetLabel}),(0,d.jsxs)("span",{className:j().dataNavItemMeta,children:[a.evalLabel," \xb7 ",a.count]})]},a.key))}),(0,d.jsx)("div",{className:j().sidebarResizeHandle,role:"separator","aria-label":"Resize benchmarks","aria-orientation":"vertical",onPointerDown:v}),(0,d.jsxs)("section",{className:`${j().dataMain} ${j().experimentsMain}`,children:[(0,d.jsx)(D,{title:"Local experiments",source:"local",syncLabel:"Live updates",children:"Choose a benchmark on the left. Kaizen only compares experiments inside the selected benchmark, because scores from different datasets or scoring setups are not scientifically comparable."}),(0,d.jsx)(aM,{roots:C,selectedId:c,bestGlobalId:E,highlightId:g,primaryMetric:w,linearIssueTitles:o,onSelect:f}),F&&(0,d.jsx)(aC,{run:F,primaryMetric:w,linearIssueTitle:F.linearIssue?o[F.linearIssue.id]:null,onClose:q,onViewTraces:r}),G&&(0,d.jsx)(aD,{run:G,systemId:a.id,primaryMetric:w,hasCustomRenderer:!!a.traceRenderer,onClose:s}),(0,d.jsx)(aQ,{runs:z,primaryMetric:w,bestRunId:E,selectedRunId:c,linearIssueTitles:o,onSelectRun:f})]})]})}function aS({system:a}){let[b,c]=(0,e.useState)([]),[f,g]=(0,e.useState)(null),[h,i]=(0,e.useState)(void 0),[k,m]=(0,e.useState)(null),[n,o]=(0,e.useState)(null),[p,q]=(0,e.useState)(!1),[r,s]=(0,e.useState)(!1),[t,u]=(0,e.useState)(null),v=(0,e.useRef)(a.id);v.current=a.id;let w=(0,e.useCallback)(async()=>{let b=a.id;q(!0);try{var d;let a=await fetch(`/api/linear-ideas?systemId=${encodeURIComponent(b)}`),e=(d=await a.json(),ao(d)?{ideas:Array.isArray(d.ideas)?d.ideas.map(am).filter(aq):void 0,config:function(a){if(ao(a))return{teamKey:as(a.teamKey),projectName:as(a.projectName),projectId:as(a.projectId),projectUrl:as(a.projectUrl),projectRef:as(a.projectRef),projectRefKind:as(a.projectRefKind),label:ar(a.label)??"Kaizen"}}(d.config),connection:function(a){if(ao(a)&&function(a){switch(a){case"connected":case"missing_project":case"missing_api_key":case"project_not_found":case"auth_failed":case"query_failed":case"network_error":return!0;default:return!1}}(a.state)&&"string"==typeof a.message&&"string"==typeof a.remediation)return{state:a.state,message:a.message,remediation:a.remediation,requiredEnvVars:an(a.requiredEnvVars),optionalEnvVars:an(a.optionalEnvVars),expectedEnvFile:ar(a.expectedEnvFile),missingEnvVars:an(a.missingEnvVars),lookup:an(a.lookup),detail:ar(a.detail)}}(d.connection),error:ar(d.error)}:{});if(!a.ok)throw Error(e.error??`HTTP ${a.status}`);if(v.current!==b)return;c(e.ideas??[]),i(e.config),m(e.connection??null),g(a=>a&&(e.ideas??[]).some(b=>b.id===a)?a:e.ideas?.[0]?.id??null),o(e.error??null),u(Q())}catch(a){if(v.current!==b)return;m(null),o(a instanceof Error?a.message:String(a))}finally{v.current===b&&(s(!0),q(!1))}},[a.id]),x=(0,e.useCallback)(()=>{w()},[w]),y=(0,e.useMemo)(()=>b.find(a=>a.id===f)??b[0]??null,[b,f]),z=h?.teamKey??null,A=h?.projectRef??null,B=h?.label??"Kaizen",C=(0,e.useMemo)(()=>{var a;return[(a={teamKey:z,projectRef:A,label:B}).teamKey?`LINEAR_TEAM_KEY=${a.teamKey}`:"any team",a.projectRef?`linear_project=${a.projectRef}`:"linear_project not set",`label=${a.label}`]},[B,A,z]);return(0,d.jsxs)("div",{className:j().surface,children:[(0,d.jsxs)(D,{title:"Linear ideas",source:"linear",syncLabel:R(t,2e4),onRefresh:x,refreshing:p,children:["This shows Linear issues that Kaizen can try as experiments. For this system, Kaizen looks",h?.projectName||h?.projectRef?(0,d.jsxs)(d.Fragment,{children:[" in project ",(0,d.jsxs)("span",{className:j().inlineSourceValue,children:[(0,d.jsx)("code",{children:h.projectName??h.projectRef}),(0,d.jsx)(l,{source:"code"})]})]}):" in the Linear project configured in this system's code"," ","for issues labeled ",(0,d.jsx)("code",{children:"Kaizen"}),". Label a Linear issue"," ",(0,d.jsx)("code",{children:"Kaizen"})," when you want Kaizen to try it as an experiment."]}),k&&"connected"!==k.state&&(0,d.jsx)(N,{status:k,currentValues:C}),n&&(0,d.jsx)("div",{className:j().errorPanel,children:n}),p&&!r?(0,d.jsx)("div",{className:j().loadingPanel,children:"Loading Linear ideas..."}):(0,d.jsxs)("div",{className:j().splitSurface,children:[(0,d.jsx)(aT,{ideas:b,selectedId:y?.id??null,onSelect:g}),(0,d.jsx)(aU,{idea:y})]})]})}function aT({ideas:a,selectedId:b,onSelect:c}){let f=(0,e.useCallback)(a=>{let b=function(a){if(!(a instanceof Element))return null;let b=a.closest("button");return b instanceof HTMLButtonElement?b.dataset.ideaId??null:null}(a.target);b&&c(b)},[c]);return 0===a.length?(0,d.jsx)("div",{className:j().listPanelEmpty,children:"No Linear ideas"}):(0,d.jsx)("aside",{className:j().listPanel,onClick:f,children:a.map(a=>(0,d.jsxs)("button",{"data-idea-id":a.id,className:`${j().listRow} ${b===a.id?j().listRowSelected:""}`,children:[(0,d.jsx)("span",{className:j().listRowTitle,children:a.title}),(0,d.jsxs)("span",{className:j().listRowMeta,children:[a.identifier," \xb7 ",a.state?.name??"No status"]})]},a.id))})}function aU({idea:a}){var b;let c;return a?(0,d.jsxs)("section",{className:j().detailPanel,children:[(0,d.jsxs)("div",{className:j().detailHeader,children:[(0,d.jsxs)("div",{children:[(0,d.jsx)("h2",{className:j().detailTitle,children:a.title}),(0,d.jsx)("a",{className:j().detailLink,href:a.url,target:"_blank",rel:"noreferrer",children:a.identifier})]}),a.state&&(0,d.jsx)("span",{className:j().statusPill,children:a.state.name})]}),(0,d.jsxs)("div",{className:j().ideaMetaGrid,children:[(0,d.jsx)(aV,{label:"Team",value:a.team?.key??a.team?.name}),(0,d.jsx)(aV,{label:"Project",value:a.project?.name}),(0,d.jsx)(aV,{label:"Assignee",value:a.assignee?.name}),(0,d.jsx)(aV,{label:"Updated",value:Number.isNaN((c=new Date(b=a.updatedAt)).getTime())?b:c.toLocaleString()})]}),a.labels.nodes.length>0&&(0,d.jsx)("div",{className:j().tagRow,children:a.labels.nodes.map(a=>(0,d.jsx)("span",{className:j().tagPill,children:a.name},a.name))}),(0,d.jsx)("div",{className:j().descriptionBlock,children:a.description||"No description."})]}):(0,d.jsx)("section",{className:j().detailPanel,children:"No idea selected"})}function aV({label:a,value:b}){return(0,d.jsxs)("div",{className:j().metaCell,children:[(0,d.jsx)("span",{className:j().metaLabel,children:a}),(0,d.jsx)("span",{className:j().metaValue,children:b??"Unassigned"})]})}function aW({surface:a}){let{systems:b,activeSystemId:c}=(0,f.V)(),g=(0,e.useMemo)(()=>b.find(a=>a.id===c)??null,[c,b]);return(0,d.jsx)(t,{activeSystem:g,activeSurface:a,children:g?"data"===a?(0,d.jsx)(S,{system:g}):"benchmarks"===a?(0,d.jsx)(F,{system:g}):"ideas"===a?(0,d.jsx)(aS,{system:g}):(0,d.jsx)(aR,{system:g}):(0,d.jsx)(aX,{systemCount:b.length})})}function aX({systemCount:a}){return(0,d.jsxs)("div",{className:j().emptyState,children:[(0,d.jsx)("img",{src:"/logo-cream.svg",alt:"Kaizen",className:j().emptyLogo}),(0,d.jsx)("h1",{className:j().emptyTitle,children:"Kaizen"}),(0,d.jsx)("p",{className:j().emptyCopy,children:"Select a system to inspect its data, benchmarks, ideas, and experiments."}),(0,d.jsxs)("span",{className:j().emptyMeta,children:[a," system",1===a?"":"s"]})]})}},2377:a=>{a.exports={layout:"Runs_layout__Ih4Cn",heroLogo:"Runs_heroLogo__BAUu8",headerLogo:"Runs_headerLogo__TgYiK",container:"Runs_container__0aqIq",headerRow:"Runs_headerRow__abEUi",title:"Runs_title__oroey",connectedBadge:"Runs_connectedBadge__d1Ss1",disconnectedBadge:"Runs_disconnectedBadge__v3kiS",systemTabs:"Runs_systemTabs__Gtuvz",systemTab:"Runs_systemTab__XYpgy",systemTabActive:"Runs_systemTabActive__10lyk",systemTabName:"Runs_systemTabName__pER4w",systemTabStatus:"Runs_systemTabStatus__YbTNa",systemStatus_in_progress:"Runs_systemStatus_in_progress__i_6lJ",systemStatus_completed:"Runs_systemStatus_completed__pjTng",systemStatus_not_started:"Runs_systemStatus_not_started__FqOI6",subtitle:"Runs_subtitle__ZfT5k",targetBadge:"Runs_targetBadge__XoNhG",grid:"Runs_grid__7DXl9",card:"Runs_card__AxGEL",cardFlash:"Runs_cardFlash__pXo7_",cardGlow:"Runs_cardGlow__mf3t7",badgeFlash:"Runs_badgeFlash__Q0C8G",badgePop:"Runs_badgePop__PdKoP",textFlash:"Runs_textFlash__O_0mj",textHighlight:"Runs_textHighlight__9znCz",rowSlideIn:"Runs_rowSlideIn__rGZ9I",slideInFade:"Runs_slideInFade__SsIak",diagramFlash:"Runs_diagramFlash__4ZTFP",diagramPulse:"Runs_diagramPulse__yN0dx",cardHeader:"Runs_cardHeader__7EpGx",cardTitle:"Runs_cardTitle__l82f2",bestAccuracyInline:"Runs_bestAccuracyInline__0XYna",linearIssueLink:"Runs_linearIssueLink__aVa6L",statusBadge:"Runs_statusBadge__T4ifS",detailTitleStack:"Runs_detailTitleStack__a_E4h",runProgressBlock:"Runs_runProgressBlock__Hg4fw",runProgressHeader:"Runs_runProgressHeader__e69Sy",runProgressTrack:"Runs_runProgressTrack__c_Wjv",runProgressFill:"Runs_runProgressFill__JOLgM",runMetaGrid:"Runs_runMetaGrid__kiPS9",runMetaCell:"Runs_runMetaCell__lEV1l",runMetaLabel:"Runs_runMetaLabel__DxMGL",runMetaValue:"Runs_runMetaValue__gJoib",detailEmpty:"Runs_detailEmpty__wy74V",metricsTable:"Runs_metricsTable__C_A_z",iterRowClickable:"Runs_iterRowClickable__g1tjc",iterRowExpanded:"Runs_iterRowExpanded__Nbl8_",bestRow:"Runs_bestRow__A_kku",iterDetailRow:"Runs_iterDetailRow__y10KK",cardFooter:"Runs_cardFooter__o_f_i",footerUpdated:"Runs_footerUpdated__21L7o",chartContainer:"Runs_chartContainer__bTh0u",chartTitle:"Runs_chartTitle__OkYqw",chart:"Runs_chart__XhGIf",chartRow:"Runs_chartRow__DbGz_",chartLabel:"Runs_chartLabel__3FlRl",chartBarContainer:"Runs_chartBarContainer__zzYv4",chartBarTrack:"Runs_chartBarTrack__5ogbA",chartBar:"Runs_chartBar__64D55",chartRowClickable:"Runs_chartRowClickable__RxDfH",chartValue:"Runs_chartValue__lmV61",metricsTableHeader:"Runs_metricsTableHeader__8d74Z",metricsTableRow:"Runs_metricsTableRow__FEGrk",metricsTableLabel:"Runs_metricsTableLabel__K8De_",metricsTableValue:"Runs_metricsTableValue__kaegJ",metricsTableBarCell:"Runs_metricsTableBarCell__8h1wf",metricsTableBarTrack:"Runs_metricsTableBarTrack__b_CnH",metricsTableBar:"Runs_metricsTableBar__HScEe",chartItems:"Runs_chartItems__Quwyx",noData:"Runs_noData__fi5_n",runSection:"Runs_runSection__Ggi_B",runLabel:"Runs_runLabel__uGajV",treeForest:"Runs_treeForest__6GBAM",treeSvg:"Runs_treeSvg___AATo",treeNodeCard:"Runs_treeNodeCard__Y5XEX",treeNodeSelected:"Runs_treeNodeSelected__QaPg2",treeNodeBest:"Runs_treeNodeBest__U8FaL",treeNodeHighlight:"Runs_treeNodeHighlight__A7a9x",nodeHighlight:"Runs_nodeHighlight__Zuhi5",treeNodeName:"Runs_treeNodeName__XtYDH",treeNodeBadgeRow:"Runs_treeNodeBadgeRow__ZwAvw",treeNodeBadge:"Runs_treeNodeBadge__jLVIw",treeNodeElapsed:"Runs_treeNodeElapsed__vsyq2",treeNodeScoreRow:"Runs_treeNodeScoreRow__BN81e",treeNodeIssueRow:"Runs_treeNodeIssueRow__7fXg_",treeNodeAccuracy:"Runs_treeNodeAccuracy__ehSVZ",treeNodeItems:"Runs_treeNodeItems__4SRsq",treeNodeLoading:"Runs_treeNodeLoading__P7_CS",treeNodePulse:"Runs_treeNodePulse__nC6rt",pulse:"Runs_pulse__LMgDF",treeNodeLoadingText:"Runs_treeNodeLoadingText__C1_bJ",detailPanelBackdrop:"Runs_detailPanelBackdrop__UMPlF",fadeIn:"Runs_fadeIn__1nqka",detailPanel:"Runs_detailPanel__BII9F",slideInFromRight:"Runs_slideInFromRight__uHSvO",detailPanelClose:"Runs_detailPanelClose__vgQbo",detailPanelHeader:"Runs_detailPanelHeader__XMEDA",detailPanelTitle:"Runs_detailPanelTitle__vAuOY",viewTracesButton:"Runs_viewTracesButton__W3KMl"}},3031:a=>{a.exports={wrapper:"SystemSelector_wrapper__ERtiP",label:"SystemSelector_label__4i0LZ",select:"SystemSelector_select__NXXNb"}},3062:(a,b,c)=>{"use strict";c.r(b),c.d(b,{default:()=>h});var d=c(8732);c(9990);var e=c(4130),f=c.n(e),g=c(1039);function h({Component:a,pageProps:b}){return(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)(f(),{children:(0,d.jsx)("title",{children:"Kaizen"})}),(0,d.jsx)(g.G,{children:(0,d.jsx)("div",{style:{height:"100vh",overflow:"auto"},children:(0,d.jsx)(a,{...b})})})]})}},7048:a=>{a.exports={tableWrapper:"Leaderboard_tableWrapper__6uunR",table:"Leaderboard_table__8gTqK",noData:"Leaderboard_noData__aKd3L",thRank:"Leaderboard_thRank__e16FK",thName:"Leaderboard_thName__i_zQZ",thStatus:"Leaderboard_thStatus__F4ZyW",thMetric:"Leaderboard_thMetric__ZMVo_",thPrimary:"Leaderboard_thPrimary__SzN76",thSorted:"Leaderboard_thSorted__13fmP",thLabel:"Leaderboard_thLabel__2cqYD",sortArrow:"Leaderboard_sortArrow__3IJre",thItems:"Leaderboard_thItems__3MS6a",thStarted:"Leaderboard_thStarted__9zNIp",row:"Leaderboard_row__A9H8t",rowBest:"Leaderboard_rowBest__JCqYu",rowSelected:"Leaderboard_rowSelected__GFyz5",tdRank:"Leaderboard_tdRank__kZKT_",tdName:"Leaderboard_tdName__2ymmx",expName:"Leaderboard_expName__6rkrZ",bestBadge:"Leaderboard_bestBadge__33jMs",tdStatus:"Leaderboard_tdStatus__zRhgm",statusDot:"Leaderboard_statusDot__hEPYp",tdMetric:"Leaderboard_tdMetric__Ll0O_",tdPrimary:"Leaderboard_tdPrimary__SZr_5",metricValue:"Leaderboard_metricValue__IhFZf",metricEmpty:"Leaderboard_metricEmpty__l1hwN",tdItems:"Leaderboard_tdItems__4_5Q6",tdStarted:"Leaderboard_tdStarted__p97S3"}},7729:a=>{a.exports={page:"Studio_page__X6enu",topBar:"Studio_topBar__OlLt6",logoLink:"Studio_logoLink__Hv20q",topLogo:"Studio_topLogo__YEKp4",systemSlot:"Studio_systemSlot__5m3MM",surfaceNav:"Studio_surfaceNav__RKZjS",surfaceLink:"Studio_surfaceLink__ivMXp",surfaceLinkActive:"Studio_surfaceLinkActive__Der5b",surfaceLinkDisabled:"Studio_surfaceLinkDisabled__gfVYR",statusPill:"Studio_statusPill__m2ERk",content:"Studio_content__LELHT",surface:"Studio_surface__lxZ_I",surfaceBanner:"Studio_surfaceBanner__UNvfB",surfaceBannerText:"Studio_surfaceBannerText__6jNss",surfaceBannerTitle:"Studio_surfaceBannerTitle__vXJox",surfaceBannerCopy:"Studio_surfaceBannerCopy__Abpvv",sourceChip:"Studio_sourceChip___xMTP",sourceChip_code:"Studio_sourceChip_code__DPzDj",sourceChip_langfuse:"Studio_sourceChip_langfuse__h6LSy",sourceChip_linear:"Studio_sourceChip_linear__9NNQ5",sourceChip_local:"Studio_sourceChip_local__3Ws2K",sourceLogo:"Studio_sourceLogo__iWmOz",sourceSvgIcon:"Studio_sourceSvgIcon__dpcyH",provenanceLine:"Studio_provenanceLine__a5uDd",inlineSourceValue:"Studio_inlineSourceValue__WMOb9",syncStatus:"Studio_syncStatus__exlkz",syncStatusLabel:"Studio_syncStatusLabel__C5cmS",iconButton:"Studio_iconButton__aVxFx",dataLayout:"Studio_dataLayout__RTqFZ",experimentsLayout:"Studio_experimentsLayout__dJ9_W",dataNav:"Studio_dataNav__Hhqcz",experimentNav:"Studio_experimentNav__pUm9S",sidebarResizeHandle:"Studio_sidebarResizeHandle__Bfcoi",experimentsMain:"Studio_experimentsMain__8IYj4",dataNavItem:"Studio_dataNavItem__rzaJQ",dataNavGroupItem:"Studio_dataNavGroupItem__0bfKJ",dataNavItemText:"Studio_dataNavItemText__nSadp",dataNavItemMeta:"Studio_dataNavItemMeta__PEhqv",experimentNavItem:"Studio_experimentNavItem__VrdaI",dataNavEmpty:"Studio_dataNavEmpty__sffpq",dataNavItemActive:"Studio_dataNavItemActive__TANbd",dataMain:"Studio_dataMain__rSYxU",surfaceToolbar:"Studio_surfaceToolbar__ayM6U",surfaceTitle:"Studio_surfaceTitle__7SjZP",surfaceSubtitle:"Studio_surfaceSubtitle__i6YB6",inlineSelector:"Studio_inlineSelector__er_h_",inlineSelectorLabel:"Studio_inlineSelectorLabel__T4g6q",filterBar:"Studio_filterBar__I6G_F",select:"Studio_select__rbQ0i",primaryButton:"Studio_primaryButton__t0Otf",secondaryButton:"Studio_secondaryButton__gEhyV",dangerButton:"Studio_dangerButton__9Bclj",splitSurface:"Studio_splitSurface__v2lGr",listPanel:"Studio_listPanel__KQbqx",listPanelEmpty:"Studio_listPanelEmpty__Ofh2D",detailPanel:"Studio_detailPanel__upjwv",errorPanel:"Studio_errorPanel__OFovk",loadingPanel:"Studio_loadingPanel__VwGMY",emptyPanel:"Studio_emptyPanel__nqsJ1",listRow:"Studio_listRow__NObDS",listRowSelected:"Studio_listRowSelected__v7gF6",listRowTitle:"Studio_listRowTitle__Dg_xF",listRowMeta:"Studio_listRowMeta__fmtZx",detailHeader:"Studio_detailHeader__an_N2",detailTitle:"Studio_detailTitle__H8HXN",detailMeta:"Studio_detailMeta__F__Kq",mutedText:"Studio_mutedText__gxlbZ",detailLink:"Studio_detailLink__QdlV6",detailGrid:"Studio_detailGrid__eKjPQ",jsonBlock:"Studio_jsonBlock__V4yWY",jsonTitle:"Studio_jsonTitle__4rJZO",sectionTitle:"Studio_sectionTitle__AgJZy",jsonPre:"Studio_jsonPre__NT0BZ",traceSection:"Studio_traceSection__7pMTX",traceHeader:"Studio_traceHeader__Ulrn7",traceName:"Studio_traceName__YsChW",tagRow:"Studio_tagRow__Prgun",tagPill:"Studio_tagPill__TRnnW",successPanel:"Studio_successPanel__03cvQ",evalDefinitionGrid:"Studio_evalDefinitionGrid__YMID0",evalDefinitionCell:"Studio_evalDefinitionCell__wS4ZE",evalDefinitionCode:"Studio_evalDefinitionCode___J0aO",evalHistorySection:"Studio_evalHistorySection__e_91j",evalSectionHeader:"Studio_evalSectionHeader___IiLV",evalSummaryTable:"Studio_evalSummaryTable__gZ5vh",evalSummaryHeader:"Studio_evalSummaryHeader__ku_ov",evalSummaryRow:"Studio_evalSummaryRow__KtPSR",evalSummaryPrimary:"Studio_evalSummaryPrimary__VAArE",evalSummaryMeta:"Studio_evalSummaryMeta__RgcSF",setupBanner:"Studio_setupBanner__rn3R6",setupTitle:"Studio_setupTitle__rrPH_",setupCopy:"Studio_setupCopy__InFUm",setupHeader:"Studio_setupHeader__0z51Y",setupState:"Studio_setupState__u13N3",setupGrid:"Studio_setupGrid__43Ac0",setupBlock:"Studio_setupBlock__pXdLU",setupBlockTitle:"Studio_setupBlockTitle__HS_1S",setupCode:"Studio_setupCode__3AADb",setupLookup:"Studio_setupLookup__S7xvC",setupDetail:"Studio_setupDetail__BYnnc",setupLookupLabel:"Studio_setupLookupLabel__OOHGt",ideaMetaGrid:"Studio_ideaMetaGrid__QA5ZP",metaCell:"Studio_metaCell__lTOia",metaLabel:"Studio_metaLabel__orMyw",metaValue:"Studio_metaValue__wPOIw",descriptionBlock:"Studio_descriptionBlock__RgZHz",formRow:"Studio_formRow__CkHSQ",formLabel:"Studio_formLabel__pObCQ",textInput:"Studio_textInput__9WjCF",textArea:"Studio_textArea__yi_Lm",textAreaLarge:"Studio_textAreaLarge__20NQc",actionRow:"Studio_actionRow__0pQf0",actionFooter:"Studio_actionFooter__wFiYP",emptyState:"Studio_emptyState__dwICN",emptyLogo:"Studio_emptyLogo__ehso4",emptyTitle:"Studio_emptyTitle__ByiEP",emptyCopy:"Studio_emptyCopy__NP7hT",emptyMeta:"Studio_emptyMeta__Bsrtp",emptyPanelCopy:"Studio_emptyPanelCopy__EExQw",emptyPanelTitle:"Studio_emptyPanelTitle__g31eb",runTracesOverlay:"Studio_runTracesOverlay__Obe3a",runTracesPanel:"Studio_runTracesPanel__nh_gK",runTracesPanelHeader:"Studio_runTracesPanelHeader__gJlWU",runTracesPanelTitle:"Studio_runTracesPanelTitle__gUr1M",runTracesPanelClose:"Studio_runTracesPanelClose__SV_Tp",runTracesScores:"Studio_runTracesScores__OEEiI",runTracesScoreChip:"Studio_runTracesScoreChip__lujZE",runTracesScoreLabel:"Studio_runTracesScoreLabel__rb3rj",runTracesScoreValue:"Studio_runTracesScoreValue__aWrWN",runTracesDetail:"Studio_runTracesDetail__vStOu",runTracesTableWrap:"Studio_runTracesTableWrap__V4tCd",runTracesTable:"Studio_runTracesTable__FzXJs",runTracesTableRowClickable:"Studio_runTracesTableRowClickable__sdAb4",runTracesTableId:"Studio_runTracesTableId__zVZBX",runTracesTraceLink:"Studio_runTracesTraceLink___ot6u",backButton:"Studio_backButton__sPEo0"}},7934:(a,b,c)=>{"use strict";c.r(b),c.d(b,{default:()=>f});var d=c(8732),e=c(7215);function f(){return(0,d.jsxs)(e.Html,{lang:"en",children:[(0,d.jsxs)(e.Head,{children:[(0,d.jsx)("link",{rel:"icon",type:"image/png",sizes:"32x32",href:"/favicon-32.png"}),(0,d.jsx)("link",{rel:"icon",type:"image/png",sizes:"64x64",href:"/favicon-64.png"}),(0,d.jsx)("link",{rel:"apple-touch-icon",href:"/apple-touch-icon.png"})]}),(0,d.jsxs)("body",{children:[(0,d.jsx)(e.Main,{}),(0,d.jsx)(e.NextScript,{})]})]})}},9990:()=>{}};
@@ -1 +0,0 @@
1
- <!DOCTYPE html><html lang="en"><head><meta charSet="utf-8" data-next-head=""/><meta name="viewport" content="width=device-width" data-next-head=""/><title data-next-head="">Kaizen</title><link rel="icon" type="image/png" sizes="32x32" href="/favicon-32.png"/><link rel="icon" type="image/png" sizes="64x64" href="/favicon-64.png"/><link rel="apple-touch-icon" href="/apple-touch-icon.png"/><link rel="preload" href="/_next/static/css/1224a99c5dfac9b3.css" as="style"/><link rel="preload" href="/_next/static/css/b18a6732b96168e1.css" as="style"/><link rel="stylesheet" href="/_next/static/css/1224a99c5dfac9b3.css" data-n-g=""/><link rel="stylesheet" href="/_next/static/css/b18a6732b96168e1.css" data-n-p=""/><noscript data-n-css=""></noscript><script defer="" noModule="" src="/_next/static/chunks/polyfills-42372ed130431b0a.js"></script><script src="/_next/static/chunks/webpack-8c7966d82a2912f0.js" defer=""></script><script src="/_next/static/chunks/framework-7089c270fe56b51f.js" defer=""></script><script src="/_next/static/chunks/main-7ac7f96d288497aa.js" defer=""></script><script src="/_next/static/chunks/pages/_app-40b8f71fde4e6347.js" defer=""></script><script src="/_next/static/chunks/431-43358ce3c29e5e1b.js" defer=""></script><script src="/_next/static/chunks/673-ed4be46027ae7a37.js" defer=""></script><script src="/_next/static/chunks/pages/%5Bsystem%5D/data-644e4280b4c86fe0.js" defer=""></script><script src="/_next/static/YpQ-I4VL-aEdQrM5uN7_3/_buildManifest.js" defer=""></script><script src="/_next/static/YpQ-I4VL-aEdQrM5uN7_3/_ssgManifest.js" defer=""></script></head><body><link rel="preload" as="image" href="/logo-cream.svg"/><div id="__next"><div style="height:100vh;overflow:auto"><div class="Studio_page__X6enu"><header class="Studio_topBar__OlLt6"><a class="Studio_logoLink__Hv20q" aria-label="Kaizen home" href="/"><img src="/logo-cream.svg" alt="" class="Studio_topLogo__YEKp4"/></a><div class="Studio_systemSlot__5m3MM"><label class="SystemSelector_wrapper__ERtiP"><span class="SystemSelector_label__4i0LZ">System</span><select class="SystemSelector_select__NXXNb"><option value="" disabled="" selected="">Choose</option></select></label></div><nav class="Studio_surfaceNav__RKZjS" aria-label="Kaizen surfaces"><span class="Studio_surfaceLink__ivMXp Studio_surfaceLinkDisabled__gfVYR">Data</span><span class="Studio_surfaceLink__ivMXp Studio_surfaceLinkDisabled__gfVYR">Benchmarks</span><span class="Studio_surfaceLink__ivMXp Studio_surfaceLinkDisabled__gfVYR">Ideas</span><span class="Studio_surfaceLink__ivMXp Studio_surfaceLinkDisabled__gfVYR">Experiments</span></nav><div></div></header><main class="Studio_content__LELHT"><div class="Studio_emptyState__dwICN"><img src="/logo-cream.svg" alt="Kaizen" class="Studio_emptyLogo__ehso4"/><h1 class="Studio_emptyTitle__ByiEP">Kaizen</h1><p class="Studio_emptyCopy__NP7hT">Select a system to inspect its data, benchmarks, ideas, and experiments.</p><span class="Studio_emptyMeta__Bsrtp">0<!-- --> system<!-- -->s</span></div></main></div></div></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{}},"page":"/[system]/data","query":{},"buildId":"YpQ-I4VL-aEdQrM5uN7_3","nextExport":true,"autoExport":true,"isFallback":false,"scriptLoader":[]}</script></body></html>
@@ -1 +0,0 @@
1
- {"version":1,"files":["../../webpack-runtime.js","../../chunks/825.js","../../chunks/916.js","../../chunks/215.js","../../chunks/785.js","../../chunks/946.js","../../chunks/715.js","../../../../../shared/linear-ideas.js","../../../../../package.json","../../../../../../../package.json"]}
@@ -1 +0,0 @@
1
- <!DOCTYPE html><html lang="en"><head><meta charSet="utf-8" data-next-head=""/><meta name="viewport" content="width=device-width" data-next-head=""/><title data-next-head="">Kaizen</title><link rel="icon" type="image/png" sizes="32x32" href="/favicon-32.png"/><link rel="icon" type="image/png" sizes="64x64" href="/favicon-64.png"/><link rel="apple-touch-icon" href="/apple-touch-icon.png"/><link rel="preload" href="/_next/static/css/1224a99c5dfac9b3.css" as="style"/><link rel="preload" href="/_next/static/css/b18a6732b96168e1.css" as="style"/><link rel="stylesheet" href="/_next/static/css/1224a99c5dfac9b3.css" data-n-g=""/><link rel="stylesheet" href="/_next/static/css/b18a6732b96168e1.css" data-n-p=""/><noscript data-n-css=""></noscript><script defer="" noModule="" src="/_next/static/chunks/polyfills-42372ed130431b0a.js"></script><script src="/_next/static/chunks/webpack-8c7966d82a2912f0.js" defer=""></script><script src="/_next/static/chunks/framework-7089c270fe56b51f.js" defer=""></script><script src="/_next/static/chunks/main-7ac7f96d288497aa.js" defer=""></script><script src="/_next/static/chunks/pages/_app-40b8f71fde4e6347.js" defer=""></script><script src="/_next/static/chunks/431-43358ce3c29e5e1b.js" defer=""></script><script src="/_next/static/chunks/673-ed4be46027ae7a37.js" defer=""></script><script src="/_next/static/chunks/pages/%5Bsystem%5D/experiments-42f31600c2bb47ad.js" defer=""></script><script src="/_next/static/YpQ-I4VL-aEdQrM5uN7_3/_buildManifest.js" defer=""></script><script src="/_next/static/YpQ-I4VL-aEdQrM5uN7_3/_ssgManifest.js" defer=""></script></head><body><link rel="preload" as="image" href="/logo-cream.svg"/><div id="__next"><div style="height:100vh;overflow:auto"><div class="Studio_page__X6enu"><header class="Studio_topBar__OlLt6"><a class="Studio_logoLink__Hv20q" aria-label="Kaizen home" href="/"><img src="/logo-cream.svg" alt="" class="Studio_topLogo__YEKp4"/></a><div class="Studio_systemSlot__5m3MM"><label class="SystemSelector_wrapper__ERtiP"><span class="SystemSelector_label__4i0LZ">System</span><select class="SystemSelector_select__NXXNb"><option value="" disabled="" selected="">Choose</option></select></label></div><nav class="Studio_surfaceNav__RKZjS" aria-label="Kaizen surfaces"><span class="Studio_surfaceLink__ivMXp Studio_surfaceLinkDisabled__gfVYR">Data</span><span class="Studio_surfaceLink__ivMXp Studio_surfaceLinkDisabled__gfVYR">Benchmarks</span><span class="Studio_surfaceLink__ivMXp Studio_surfaceLinkDisabled__gfVYR">Ideas</span><span class="Studio_surfaceLink__ivMXp Studio_surfaceLinkDisabled__gfVYR">Experiments</span></nav><div></div></header><main class="Studio_content__LELHT"><div class="Studio_emptyState__dwICN"><img src="/logo-cream.svg" alt="Kaizen" class="Studio_emptyLogo__ehso4"/><h1 class="Studio_emptyTitle__ByiEP">Kaizen</h1><p class="Studio_emptyCopy__NP7hT">Select a system to inspect its data, benchmarks, ideas, and experiments.</p><span class="Studio_emptyMeta__Bsrtp">0<!-- --> system<!-- -->s</span></div></main></div></div></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{}},"page":"/[system]/experiments","query":{},"buildId":"YpQ-I4VL-aEdQrM5uN7_3","nextExport":true,"autoExport":true,"isFallback":false,"scriptLoader":[]}</script></body></html>
@@ -1 +0,0 @@
1
- {"version":1,"files":["../../webpack-runtime.js","../../chunks/825.js","../../chunks/916.js","../../chunks/215.js","../../chunks/785.js","../../chunks/946.js","../../chunks/715.js","../../../../../shared/linear-ideas.js","../../../../../package.json","../../../../../../../package.json"]}
@@ -1 +0,0 @@
1
- self.__BUILD_MANIFEST=function(s,e,t,a,c,r){return{__rewrites:{afterFiles:[],beforeFiles:[],fallback:[]},__routerFilterStatic:{numItems:0,errorRate:1e-4,numBits:0,numHashes:null,bitArray:[]},__routerFilterDynamic:{numItems:0,errorRate:1e-4,numBits:0,numHashes:null,bitArray:[]},"/":[s,e,t,"static/chunks/pages/index-1d8b6719f49e4ae0.js"],"/_error":["static/chunks/pages/_error-b69380d1599ed4ba.js"],"/[system]":["static/chunks/pages/[system]-adf7b3ca903bcc42.js"],"/[system]/benchmarks":[s,e,t,"static/chunks/pages/[system]/benchmarks-559dc9df52db3af4.js"],"/[system]/data":[s,e,t,"static/chunks/pages/[system]/data-644e4280b4c86fe0.js"],"/[system]/eval":[s,e,t,"static/chunks/pages/[system]/eval-3c911ea8744631fd.js"],"/[system]/experiments":[s,e,t,"static/chunks/pages/[system]/experiments-42f31600c2bb47ad.js"],"/[system]/ideas":[s,e,t,"static/chunks/pages/[system]/ideas-6829a271003150a9.js"],sortedPages:["/","/_app","/_error","/[system]","/[system]/benchmarks","/[system]/data","/[system]/eval","/[system]/experiments","/[system]/ideas"]}}("static/chunks/431-43358ce3c29e5e1b.js","static/css/b18a6732b96168e1.css","static/chunks/673-ed4be46027ae7a37.js",0,0,0),self.__BUILD_MANIFEST_CB&&self.__BUILD_MANIFEST_CB();