niceeval 0.14.2 → 0.14.3-canary.53
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/INDEX.md +13 -6
- package/dist/agents/sdk-streams.cjs +6 -1
- package/dist/agents/sdk-streams.cjs.map +1 -1
- package/dist/agents/sdk-streams.d.cts +3 -2
- package/dist/agents/sdk-streams.d.mts +3 -2
- package/dist/agents/sdk-streams.d.ts +3 -2
- package/dist/agents/ui-message-stream.cjs +3 -1
- package/dist/agents/ui-message-stream.cjs.map +1 -1
- package/dist/experiment/host/cli/debug-protocol.cjs +257 -0
- package/dist/experiment/host/cli/debug-protocol.cjs.map +1 -0
- package/dist/experiment/host/cli/debug-protocol.d.cts +13 -0
- package/dist/experiment/host/cli/debug-protocol.d.mts +13 -0
- package/dist/experiment/host/cli/debug-protocol.d.ts +13 -0
- package/dist/experiment/host/cli/debug-protocol.js +8 -0
- package/dist/experiment/host/cli/debug-protocol.js.map +1 -0
- package/dist/experiment/host/cli/session-protocol.cjs +78 -0
- package/dist/experiment/host/cli/session-protocol.cjs.map +1 -0
- package/dist/experiment/host/cli/session-protocol.d.cts +10 -0
- package/dist/experiment/host/cli/session-protocol.d.mts +10 -0
- package/dist/experiment/host/cli/session-protocol.d.ts +10 -0
- package/dist/experiment/host/cli/session-protocol.js +12 -0
- package/dist/experiment/host/cli/session-protocol.js.map +1 -0
- package/dist/experiment/host/index.cjs +9 -1
- package/dist/experiment/host/index.cjs.map +1 -1
- package/dist/experiment/host/index.d.cts +2 -0
- package/dist/experiment/host/index.d.mts +2 -0
- package/dist/experiment/host/index.d.ts +2 -0
- package/dist/experiment/host/index.js +28 -16
- package/dist/experiment/host/index.mjs +28 -16
- package/dist/run/cli/contribution.cjs +5 -5
- package/dist/run/cli/contribution.cjs.map +1 -1
- package/dist/run/host/index.cjs +14 -3
- package/dist/run/host/index.cjs.map +1 -1
- package/dist/run/host/index.d.cts +2 -2
- package/dist/run/host/index.d.mts +2 -2
- package/dist/run/host/index.d.ts +2 -2
- package/dist/run/host/lifecycle-adapter.cjs +12 -12
- package/dist/run/host/lifecycle-adapter.cjs.map +1 -1
- package/dist/run/host/runtime.cjs +22 -22
- package/dist/run/host/runtime.cjs.map +1 -1
- package/dist/run/host/runtime.d.cts +11 -2
- package/dist/run/host/runtime.d.mts +11 -2
- package/dist/run/host/runtime.d.ts +11 -2
- package/dist/run/host/runtime.js +2 -2
- package/dist/run/host/types.cjs.map +1 -1
- package/dist/run/host/types.d.cts +4 -5
- package/dist/run/host/types.d.mts +4 -5
- package/dist/run/host/types.d.ts +4 -5
- package/dist/runner/assert-first-bridge.cjs +78 -3
- package/dist/runner/assert-first-bridge.cjs.map +1 -1
- package/dist/runner/assert-first-bridge.d.cts +11 -1
- package/dist/runner/assert-first-bridge.d.mts +11 -1
- package/dist/runner/assert-first-bridge.d.ts +11 -1
- package/dist/runner/attempt.cjs +77 -67
- package/dist/runner/attempt.cjs.map +1 -1
- package/dist/sandbox/backend.cjs.map +1 -1
- package/dist/sandbox/backend.d.cts +2 -2
- package/dist/sandbox/backend.d.mts +2 -2
- package/dist/sandbox/backend.d.ts +2 -2
- package/dist/sandbox/index.cjs.map +1 -1
- package/dist/sandbox/index.d.cts +1 -0
- package/dist/sandbox/index.d.mts +1 -0
- package/dist/sandbox/index.d.ts +1 -0
- package/dist/sandbox/layer.cjs.map +1 -1
- package/dist/sandbox/layer.d.cts +3 -3
- package/dist/sandbox/layer.d.mts +3 -3
- package/dist/sandbox/layer.d.ts +3 -3
- package/dist/sandbox/runtime.cjs.map +1 -1
- package/dist/sandbox/types.cjs.map +1 -1
- package/dist/sandbox/types.d.cts +2 -0
- package/dist/sandbox/types.d.mts +2 -0
- package/dist/sandbox/types.d.ts +2 -0
- package/dist/show/render.cjs +1 -0
- package/dist/show/render.cjs.map +1 -1
- package/dist/terminal/blocks.cjs +3 -5
- package/dist/terminal/blocks.cjs.map +1 -1
- package/dist/view/app-dist/.vite/manifest.json +3 -76
- package/dist/view/app-dist/assets/index-C6GQwHEF.js +63 -0
- package/dist/view/app-dist/assets/{quality-cost-scatter-B5wDa_F1.js → quality-cost-scatter-CSiMLelf.js} +5 -5
- package/dist/view/app-dist/index.html +1 -2
- package/dist/view/server.cjs +4 -3
- package/dist/view/server.cjs.map +1 -1
- package/docs-site/zh/README.md +2 -2
- package/docs-site/zh/tutorials/agent-feedback-loop.mdx +8 -5
- package/docs-site/zh/tutorials/agent-onboarding.mdx +5 -3
- package/package.json +1 -1
- package/dist/view/app-dist/assets/AttemptDialog-76dX1VQq.js +0 -41
- package/dist/view/app-dist/assets/AttemptRoute-DRHVh2JA.js +0 -4
- package/dist/view/app-dist/assets/ResultsPage-9CSI8dvZ.js +0 -2
- package/dist/view/app-dist/assets/RunPage-BUF0REv7.js +0 -1
- package/dist/view/app-dist/assets/TableContentView-_Sbg5wDr.js +0 -3
- package/dist/view/app-dist/assets/index-BGr_6pGY.js +0 -19
- package/dist/view/app-dist/assets/jsx-runtime-BnHLaUks.js +0 -1
- package/dist/view/app-dist/assets/useSuspenseQuery-D3W8Uy33.js +0 -1
package/dist/terminal/blocks.cjs
CHANGED
|
@@ -126,11 +126,9 @@ function renderPanelBlock(block, options) {
|
|
|
126
126
|
block.blocks.forEach((child, index) => {
|
|
127
127
|
const previous = block.blocks[index - 1];
|
|
128
128
|
if (index > 0) {
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
else if (child.kind !== "divider" &&
|
|
133
|
-
!(previous?.kind === "divider" && previous.attachNext === true)) {
|
|
129
|
+
const attachedToPrevious = previous?.kind === "divider" && previous.attachNext === true;
|
|
130
|
+
if (!attachedToPrevious &&
|
|
131
|
+
(child.kind !== "divider" || child.attachNext === true)) {
|
|
134
132
|
rows.push({ kind: "line", text: "" });
|
|
135
133
|
}
|
|
136
134
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"blocks.js","sourceRoot":"","sources":["blocks.ts"],"names":[],"mappings":"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","sourcesContent":["import { effectivePanelMode, panelContentWidth, renderPanel, type PanelMode, type PanelRow, } from \"./panel.ts\";\nimport { charDisplayWidth, padDisplay, stringWidth, wrapDisplay, } from \"./text-layout.ts\";\nexport interface TerminalRenderOptions {\n readonly width: number;\n readonly mode: PanelMode;\n}\nexport interface TerminalDividerBlock {\n readonly kind: \"divider\";\n readonly title: string;\n readonly meta?: string;\n readonly attachNext?: boolean;\n}\nexport interface TerminalKeyValueBlock {\n readonly kind: \"keyValue\";\n readonly entries: readonly {\n readonly key: string;\n readonly value: string;\n }[];\n}\nexport interface TerminalTableColumn {\n readonly header: string;\n readonly maxWidth?: number;\n}\nexport interface TerminalTableBlock {\n readonly kind: \"table\";\n readonly columns: readonly TerminalTableColumn[];\n readonly rows: readonly (readonly string[])[];\n readonly overflow?: \"truncate\" | \"wrap\";\n}\nexport interface TerminalTreeNode {\n readonly label: string;\n readonly children?: readonly TerminalTreeNode[];\n}\nexport interface TerminalTreeBlock {\n readonly kind: \"tree\";\n readonly nodes: readonly TerminalTreeNode[];\n}\nexport interface TerminalRawBlock {\n readonly kind: \"raw\";\n readonly text: string;\n}\nexport interface TerminalCodeBlock {\n readonly kind: \"code\";\n readonly text: string;\n readonly language?: string;\n}\nexport interface TerminalCommandBlock {\n readonly kind: \"command\";\n readonly command: string;\n}\nexport type TerminalContentBlock = TerminalDividerBlock | TerminalKeyValueBlock | TerminalTableBlock | TerminalTreeBlock | TerminalRawBlock | TerminalCodeBlock | TerminalCommandBlock;\nexport type TerminalPanelContentBlock = Exclude<TerminalContentBlock, TerminalRawBlock | TerminalCodeBlock>;\nexport interface TerminalPanelBlock {\n readonly kind: \"panel\";\n readonly title?: string;\n readonly meta?: string;\n readonly footerCommand?: string;\n readonly blocks: readonly TerminalPanelContentBlock[];\n readonly capWidth?: boolean;\n}\nexport type TerminalBlock = TerminalPanelBlock | TerminalContentBlock;\nconst COLUMN_GAP = 2;\nconst DEFAULT_MAX_COLUMN_WIDTH = 40;\nconst ELLIPSIS = \"…\";\nfunction takeDisplay(text: string, width: number): string {\n let output = \"\";\n let observed = 0;\n for (const character of text) {\n const next = charDisplayWidth(character.codePointAt(0)!);\n if (observed + next > width)\n break;\n output += character;\n observed += next;\n }\n return output;\n}\nfunction truncateDisplay(text: string, width: number): string {\n if (stringWidth(text) <= width)\n return text;\n if (width <= 0)\n return \"\";\n if (width === 1)\n return ELLIPSIS;\n return `${takeDisplay(text, width - 1)}${ELLIPSIS}`;\n}\nfunction tableWidths(block: TerminalTableBlock, width: number): number[] {\n const widths = block.columns.map((column, index) => {\n const observed = Math.max(stringWidth(column.header), ...block.rows.flatMap((row) => (row[index] ?? \"\").split(\"\\n\").map(stringWidth)));\n return Math.max(1, Math.min(column.maxWidth ?? DEFAULT_MAX_COLUMN_WIDTH, observed));\n });\n const available = Math.max(widths.length, Math.floor(width) - Math.max(0, widths.length - 1) * COLUMN_GAP);\n while (widths.reduce((sum, value) => sum + value, 0) > available) {\n const widest = Math.max(...widths);\n const index = widths.findIndex((value) => value === widest);\n if (index < 0 || widths[index] === 1)\n break;\n widths[index] -= 1;\n }\n return widths;\n}\nfunction renderTable(block: TerminalTableBlock, width: number, mode: PanelMode): string[] {\n if (block.columns.length === 0)\n return [];\n const widths = tableWidths(block, width);\n const separator = mode === \"boxed\" ? \"─\" : \"-\";\n const renderRow = (cells: readonly string[], wrap: boolean): string[] => {\n const physical = widths.map((columnWidth, index) => {\n const value = cells[index] ?? \"\";\n return wrap && columnWidth >= 4\n ? wrapDisplay(value, columnWidth)\n : value.split(\"\\n\").map((line) => truncateDisplay(line, columnWidth));\n });\n const height = Math.max(...physical.map((cell) => cell.length), 1);\n return Array.from({ length: height }, (_, line) => physical\n .map((cell, index) => padDisplay(cell[line] ?? \"\", widths[index]!))\n .join(\" \".repeat(COLUMN_GAP))\n .trimEnd());\n };\n return [\n ...renderRow(block.columns.map((column) => column.header), false),\n widths.map((columnWidth) => separator.repeat(columnWidth)).join(\" \".repeat(COLUMN_GAP)),\n ...block.rows.flatMap((row) => renderRow(row, block.overflow === \"wrap\")),\n ];\n}\nfunction renderKeyValue(block: TerminalKeyValueBlock, width: number): string[] {\n if (block.entries.length === 0)\n return [];\n const keyWidth = Math.min(Math.max(...block.entries.map((entry) => stringWidth(entry.key))), Math.max(1, Math.floor(width / 2)));\n const valueWidth = Math.max(4, width - keyWidth - COLUMN_GAP);\n return block.entries.flatMap((entry) => {\n const key = truncateDisplay(entry.key, keyWidth);\n const values = wrapDisplay(entry.value, valueWidth);\n return values.map((value, index) => `${index === 0 ? padDisplay(key, keyWidth) : \" \".repeat(keyWidth)} ${value}`.trimEnd());\n });\n}\nfunction renderTree(block: TerminalTreeBlock, width: number, mode: PanelMode): string[] {\n const lines: string[] = [];\n const visit = (nodes: readonly TerminalTreeNode[], ancestors: readonly boolean[]): void => {\n nodes.forEach((node, index) => {\n const last = index === nodes.length - 1;\n const indent = ancestors\n .map((ancestorLast) => (ancestorLast ? \" \" : mode === \"boxed\" ? \"│ \" : \"| \"))\n .join(\"\");\n const branch = mode === \"boxed\" ? (last ? \"└─ \" : \"├─ \") : \"- \";\n const prefix = `${indent}${branch}`;\n const labelWidth = Math.max(4, width - stringWidth(prefix));\n const labels = wrapDisplay(node.label, labelWidth);\n lines.push(...labels.map((label, line) => `${line === 0 ? prefix : \" \".repeat(stringWidth(prefix))}${label}`));\n if (node.children?.length)\n visit(node.children, [...ancestors, last]);\n });\n };\n visit(block.nodes, []);\n return lines;\n}\nfunction renderContent(block: TerminalContentBlock, options: TerminalRenderOptions): string[] {\n switch (block.kind) {\n case \"divider\": {\n const meta = block.meta === undefined ? \"\" : ` ${block.meta}`;\n if (options.mode === \"plain\")\n return [`${block.title}${meta}`];\n const heading = `─ ${block.title}${meta} `;\n return [`${heading}${\"─\".repeat(Math.max(0, options.width - stringWidth(heading)))}`];\n }\n case \"keyValue\":\n return renderKeyValue(block, options.width);\n case \"table\":\n return renderTable(block, options.width, options.mode);\n case \"tree\":\n return renderTree(block, options.width, options.mode);\n case \"raw\":\n case \"code\":\n return block.text.split(\"\\n\");\n case \"command\":\n return [block.command];\n }\n}\nfunction renderPanelBlock(block: TerminalPanelBlock, options: TerminalRenderOptions): string[] {\n const contentWidth = panelContentWidth(options.width, options.mode, block.capWidth);\n const rows: PanelRow[] = [];\n block.blocks.forEach((child, index) => {\n const previous = block.blocks[index - 1];\n if (index > 0) {\n if (child.kind === \"divider\" && child.attachNext === true) {\n rows.push({ kind: \"line\", text: \"\" });\n }\n else if (child.kind !== \"divider\" &&\n !(previous?.kind === \"divider\" && previous.attachNext === true)) {\n rows.push({ kind: \"line\", text: \"\" });\n }\n }\n if (child.kind === \"divider\") {\n rows.push({ kind: \"divider\", title: child.title, meta: child.meta });\n return;\n }\n rows.push(...renderContent(child, { ...options, width: contentWidth }).map((text) => ({\n kind: \"line\" as const,\n text,\n })));\n });\n return renderPanel({\n title: block.title,\n meta: block.meta,\n footerCommand: block.footerCommand,\n rows,\n width: options.width,\n mode: options.mode,\n capWidth: block.capWidth,\n });\n}\nexport function renderBlocks(blocks: readonly TerminalBlock[], options: TerminalRenderOptions): string[] {\n const effectiveOptions = {\n ...options,\n mode: effectivePanelMode(options.mode, options.width),\n };\n return blocks.flatMap((block, index) => [\n ...(index === 0 ? [] : [\"\"]),\n ...(block.kind === \"panel\"\n ? renderPanelBlock(block, effectiveOptions)\n : renderContent(block, effectiveOptions)),\n ]);\n}\nexport function renderTerminal(blocks: readonly TerminalBlock[], options: TerminalRenderOptions): string {\n const lines = renderBlocks(blocks, options);\n if (lines.length === 0)\n return \"\";\n const output = lines.join(\"\\n\");\n return output.endsWith(\"\\n\") ? output : `${output}\\n`;\n}\n"]}
|
|
1
|
+
{"version":3,"file":"blocks.js","sourceRoot":"","sources":["blocks.ts"],"names":[],"mappings":"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","sourcesContent":["import { effectivePanelMode, panelContentWidth, renderPanel, type PanelMode, type PanelRow, } from \"./panel.ts\";\nimport { charDisplayWidth, padDisplay, stringWidth, wrapDisplay, } from \"./text-layout.ts\";\nexport interface TerminalRenderOptions {\n readonly width: number;\n readonly mode: PanelMode;\n}\nexport interface TerminalDividerBlock {\n readonly kind: \"divider\";\n readonly title: string;\n readonly meta?: string;\n readonly attachNext?: boolean;\n}\nexport interface TerminalKeyValueBlock {\n readonly kind: \"keyValue\";\n readonly entries: readonly {\n readonly key: string;\n readonly value: string;\n }[];\n}\nexport interface TerminalTableColumn {\n readonly header: string;\n readonly maxWidth?: number;\n}\nexport interface TerminalTableBlock {\n readonly kind: \"table\";\n readonly columns: readonly TerminalTableColumn[];\n readonly rows: readonly (readonly string[])[];\n readonly overflow?: \"truncate\" | \"wrap\";\n}\nexport interface TerminalTreeNode {\n readonly label: string;\n readonly children?: readonly TerminalTreeNode[];\n}\nexport interface TerminalTreeBlock {\n readonly kind: \"tree\";\n readonly nodes: readonly TerminalTreeNode[];\n}\nexport interface TerminalRawBlock {\n readonly kind: \"raw\";\n readonly text: string;\n}\nexport interface TerminalCodeBlock {\n readonly kind: \"code\";\n readonly text: string;\n readonly language?: string;\n}\nexport interface TerminalCommandBlock {\n readonly kind: \"command\";\n readonly command: string;\n}\nexport type TerminalContentBlock = TerminalDividerBlock | TerminalKeyValueBlock | TerminalTableBlock | TerminalTreeBlock | TerminalRawBlock | TerminalCodeBlock | TerminalCommandBlock;\nexport type TerminalPanelContentBlock = Exclude<TerminalContentBlock, TerminalRawBlock | TerminalCodeBlock>;\nexport interface TerminalPanelBlock {\n readonly kind: \"panel\";\n readonly title?: string;\n readonly meta?: string;\n readonly footerCommand?: string;\n readonly blocks: readonly TerminalPanelContentBlock[];\n readonly capWidth?: boolean;\n}\nexport type TerminalBlock = TerminalPanelBlock | TerminalContentBlock;\nconst COLUMN_GAP = 2;\nconst DEFAULT_MAX_COLUMN_WIDTH = 40;\nconst ELLIPSIS = \"…\";\nfunction takeDisplay(text: string, width: number): string {\n let output = \"\";\n let observed = 0;\n for (const character of text) {\n const next = charDisplayWidth(character.codePointAt(0)!);\n if (observed + next > width)\n break;\n output += character;\n observed += next;\n }\n return output;\n}\nfunction truncateDisplay(text: string, width: number): string {\n if (stringWidth(text) <= width)\n return text;\n if (width <= 0)\n return \"\";\n if (width === 1)\n return ELLIPSIS;\n return `${takeDisplay(text, width - 1)}${ELLIPSIS}`;\n}\nfunction tableWidths(block: TerminalTableBlock, width: number): number[] {\n const widths = block.columns.map((column, index) => {\n const observed = Math.max(stringWidth(column.header), ...block.rows.flatMap((row) => (row[index] ?? \"\").split(\"\\n\").map(stringWidth)));\n return Math.max(1, Math.min(column.maxWidth ?? DEFAULT_MAX_COLUMN_WIDTH, observed));\n });\n const available = Math.max(widths.length, Math.floor(width) - Math.max(0, widths.length - 1) * COLUMN_GAP);\n while (widths.reduce((sum, value) => sum + value, 0) > available) {\n const widest = Math.max(...widths);\n const index = widths.findIndex((value) => value === widest);\n if (index < 0 || widths[index] === 1)\n break;\n widths[index] -= 1;\n }\n return widths;\n}\nfunction renderTable(block: TerminalTableBlock, width: number, mode: PanelMode): string[] {\n if (block.columns.length === 0)\n return [];\n const widths = tableWidths(block, width);\n const separator = mode === \"boxed\" ? \"─\" : \"-\";\n const renderRow = (cells: readonly string[], wrap: boolean): string[] => {\n const physical = widths.map((columnWidth, index) => {\n const value = cells[index] ?? \"\";\n return wrap && columnWidth >= 4\n ? wrapDisplay(value, columnWidth)\n : value.split(\"\\n\").map((line) => truncateDisplay(line, columnWidth));\n });\n const height = Math.max(...physical.map((cell) => cell.length), 1);\n return Array.from({ length: height }, (_, line) => physical\n .map((cell, index) => padDisplay(cell[line] ?? \"\", widths[index]!))\n .join(\" \".repeat(COLUMN_GAP))\n .trimEnd());\n };\n return [\n ...renderRow(block.columns.map((column) => column.header), false),\n widths.map((columnWidth) => separator.repeat(columnWidth)).join(\" \".repeat(COLUMN_GAP)),\n ...block.rows.flatMap((row) => renderRow(row, block.overflow === \"wrap\")),\n ];\n}\nfunction renderKeyValue(block: TerminalKeyValueBlock, width: number): string[] {\n if (block.entries.length === 0)\n return [];\n const keyWidth = Math.min(Math.max(...block.entries.map((entry) => stringWidth(entry.key))), Math.max(1, Math.floor(width / 2)));\n const valueWidth = Math.max(4, width - keyWidth - COLUMN_GAP);\n return block.entries.flatMap((entry) => {\n const key = truncateDisplay(entry.key, keyWidth);\n const values = wrapDisplay(entry.value, valueWidth);\n return values.map((value, index) => `${index === 0 ? padDisplay(key, keyWidth) : \" \".repeat(keyWidth)} ${value}`.trimEnd());\n });\n}\nfunction renderTree(block: TerminalTreeBlock, width: number, mode: PanelMode): string[] {\n const lines: string[] = [];\n const visit = (nodes: readonly TerminalTreeNode[], ancestors: readonly boolean[]): void => {\n nodes.forEach((node, index) => {\n const last = index === nodes.length - 1;\n const indent = ancestors\n .map((ancestorLast) => (ancestorLast ? \" \" : mode === \"boxed\" ? \"│ \" : \"| \"))\n .join(\"\");\n const branch = mode === \"boxed\" ? (last ? \"└─ \" : \"├─ \") : \"- \";\n const prefix = `${indent}${branch}`;\n const labelWidth = Math.max(4, width - stringWidth(prefix));\n const labels = wrapDisplay(node.label, labelWidth);\n lines.push(...labels.map((label, line) => `${line === 0 ? prefix : \" \".repeat(stringWidth(prefix))}${label}`));\n if (node.children?.length)\n visit(node.children, [...ancestors, last]);\n });\n };\n visit(block.nodes, []);\n return lines;\n}\nfunction renderContent(block: TerminalContentBlock, options: TerminalRenderOptions): string[] {\n switch (block.kind) {\n case \"divider\": {\n const meta = block.meta === undefined ? \"\" : ` ${block.meta}`;\n if (options.mode === \"plain\")\n return [`${block.title}${meta}`];\n const heading = `─ ${block.title}${meta} `;\n return [`${heading}${\"─\".repeat(Math.max(0, options.width - stringWidth(heading)))}`];\n }\n case \"keyValue\":\n return renderKeyValue(block, options.width);\n case \"table\":\n return renderTable(block, options.width, options.mode);\n case \"tree\":\n return renderTree(block, options.width, options.mode);\n case \"raw\":\n case \"code\":\n return block.text.split(\"\\n\");\n case \"command\":\n return [block.command];\n }\n}\nfunction renderPanelBlock(block: TerminalPanelBlock, options: TerminalRenderOptions): string[] {\n const contentWidth = panelContentWidth(options.width, options.mode, block.capWidth);\n const rows: PanelRow[] = [];\n block.blocks.forEach((child, index) => {\n const previous = block.blocks[index - 1];\n if (index > 0) {\n const attachedToPrevious = previous?.kind === \"divider\" && previous.attachNext === true;\n if (!attachedToPrevious &&\n (child.kind !== \"divider\" || child.attachNext === true)) {\n rows.push({ kind: \"line\", text: \"\" });\n }\n }\n if (child.kind === \"divider\") {\n rows.push({ kind: \"divider\", title: child.title, meta: child.meta });\n return;\n }\n rows.push(...renderContent(child, { ...options, width: contentWidth }).map((text) => ({\n kind: \"line\" as const,\n text,\n })));\n });\n return renderPanel({\n title: block.title,\n meta: block.meta,\n footerCommand: block.footerCommand,\n rows,\n width: options.width,\n mode: options.mode,\n capWidth: block.capWidth,\n });\n}\nexport function renderBlocks(blocks: readonly TerminalBlock[], options: TerminalRenderOptions): string[] {\n const effectiveOptions = {\n ...options,\n mode: effectivePanelMode(options.mode, options.width),\n };\n return blocks.flatMap((block, index) => [\n ...(index === 0 ? [] : [\"\"]),\n ...(block.kind === \"panel\"\n ? renderPanelBlock(block, effectiveOptions)\n : renderContent(block, effectiveOptions)),\n ]);\n}\nexport function renderTerminal(blocks: readonly TerminalBlock[], options: TerminalRenderOptions): string {\n const lines = renderBlocks(blocks, options);\n if (lines.length === 0)\n return \"\";\n const output = lines.join(\"\\n\");\n return output.endsWith(\"\\n\") ? output : `${output}\\n`;\n}\n"]}
|
|
@@ -1,93 +1,20 @@
|
|
|
1
1
|
{
|
|
2
|
-
"_AttemptDialog-76dX1VQq.js": {
|
|
3
|
-
"file": "assets/AttemptDialog-76dX1VQq.js",
|
|
4
|
-
"name": "AttemptDialog",
|
|
5
|
-
"imports": [
|
|
6
|
-
"_jsx-runtime-BnHLaUks.js",
|
|
7
|
-
"index.html"
|
|
8
|
-
]
|
|
9
|
-
},
|
|
10
|
-
"_TableContentView-_Sbg5wDr.js": {
|
|
11
|
-
"file": "assets/TableContentView-_Sbg5wDr.js",
|
|
12
|
-
"name": "TableContentView",
|
|
13
|
-
"imports": [
|
|
14
|
-
"_jsx-runtime-BnHLaUks.js",
|
|
15
|
-
"index.html"
|
|
16
|
-
]
|
|
17
|
-
},
|
|
18
|
-
"_jsx-runtime-BnHLaUks.js": {
|
|
19
|
-
"file": "assets/jsx-runtime-BnHLaUks.js",
|
|
20
|
-
"name": "jsx-runtime"
|
|
21
|
-
},
|
|
22
|
-
"_useSuspenseQuery-D3W8Uy33.js": {
|
|
23
|
-
"file": "assets/useSuspenseQuery-D3W8Uy33.js",
|
|
24
|
-
"name": "useSuspenseQuery",
|
|
25
|
-
"imports": [
|
|
26
|
-
"index.html"
|
|
27
|
-
]
|
|
28
|
-
},
|
|
29
|
-
"features/insight/attempt/AttemptRoute.tsx": {
|
|
30
|
-
"file": "assets/AttemptRoute-DRHVh2JA.js",
|
|
31
|
-
"name": "AttemptRoute",
|
|
32
|
-
"src": "features/insight/attempt/AttemptRoute.tsx",
|
|
33
|
-
"isDynamicEntry": true,
|
|
34
|
-
"imports": [
|
|
35
|
-
"_jsx-runtime-BnHLaUks.js",
|
|
36
|
-
"_useSuspenseQuery-D3W8Uy33.js",
|
|
37
|
-
"index.html",
|
|
38
|
-
"_AttemptDialog-76dX1VQq.js"
|
|
39
|
-
]
|
|
40
|
-
},
|
|
41
|
-
"features/insight/results/ResultsPage.tsx": {
|
|
42
|
-
"file": "assets/ResultsPage-9CSI8dvZ.js",
|
|
43
|
-
"name": "ResultsPage",
|
|
44
|
-
"src": "features/insight/results/ResultsPage.tsx",
|
|
45
|
-
"isDynamicEntry": true,
|
|
46
|
-
"imports": [
|
|
47
|
-
"_jsx-runtime-BnHLaUks.js",
|
|
48
|
-
"_useSuspenseQuery-D3W8Uy33.js",
|
|
49
|
-
"index.html",
|
|
50
|
-
"_TableContentView-_Sbg5wDr.js"
|
|
51
|
-
],
|
|
52
|
-
"dynamicImports": [
|
|
53
|
-
"features/insight/results/experiment-table/quality-cost-scatter.tsx"
|
|
54
|
-
]
|
|
55
|
-
},
|
|
56
2
|
"features/insight/results/experiment-table/quality-cost-scatter.tsx": {
|
|
57
|
-
"file": "assets/quality-cost-scatter-
|
|
3
|
+
"file": "assets/quality-cost-scatter-CSiMLelf.js",
|
|
58
4
|
"name": "quality-cost-scatter",
|
|
59
5
|
"src": "features/insight/results/experiment-table/quality-cost-scatter.tsx",
|
|
60
6
|
"isDynamicEntry": true,
|
|
61
7
|
"imports": [
|
|
62
|
-
"_jsx-runtime-BnHLaUks.js",
|
|
63
8
|
"index.html"
|
|
64
9
|
]
|
|
65
10
|
},
|
|
66
|
-
"features/insight/run/RunPage.tsx": {
|
|
67
|
-
"file": "assets/RunPage-BUF0REv7.js",
|
|
68
|
-
"name": "RunPage",
|
|
69
|
-
"src": "features/insight/run/RunPage.tsx",
|
|
70
|
-
"isDynamicEntry": true,
|
|
71
|
-
"imports": [
|
|
72
|
-
"_jsx-runtime-BnHLaUks.js",
|
|
73
|
-
"_useSuspenseQuery-D3W8Uy33.js",
|
|
74
|
-
"index.html",
|
|
75
|
-
"_AttemptDialog-76dX1VQq.js",
|
|
76
|
-
"_TableContentView-_Sbg5wDr.js"
|
|
77
|
-
]
|
|
78
|
-
},
|
|
79
11
|
"index.html": {
|
|
80
|
-
"file": "assets/index-
|
|
12
|
+
"file": "assets/index-C6GQwHEF.js",
|
|
81
13
|
"name": "index",
|
|
82
14
|
"src": "index.html",
|
|
83
15
|
"isEntry": true,
|
|
84
|
-
"imports": [
|
|
85
|
-
"_jsx-runtime-BnHLaUks.js"
|
|
86
|
-
],
|
|
87
16
|
"dynamicImports": [
|
|
88
|
-
"features/insight/results/
|
|
89
|
-
"features/insight/run/RunPage.tsx",
|
|
90
|
-
"features/insight/attempt/AttemptRoute.tsx"
|
|
17
|
+
"features/insight/results/experiment-table/quality-cost-scatter.tsx"
|
|
91
18
|
],
|
|
92
19
|
"css": [
|
|
93
20
|
"assets/index-pLVwj9I4.css"
|