+ {/* FULL TITLE — the thing the friend went looking for. Wraps freely. */}
+
+
+
+ Title
+
+
+ {scenario.title}
+
+
+
+ {/* INITIAL PROMPT — already in memory as the first user message. */}
+
+
+
+ Initial prompt
+
+
+ {scenario.initialPrompt}
+
+
+
+ {/* Lineage + profile + agent meta */}
+
+
+ {scenario.lineageText && (
+
+ {scenario.lineageText}
+
+ )}
+
+
+ {scenario.agentType}
+
+
+ {scenario.taskMode === 'conversation' ? : }
+ {scenario.taskMode === 'conversation' ? 'Conversation' : 'Task'}
+
+ {scenario.agentProfileHint && (
+
+ {scenario.agentProfileHint}
+
+ )}
+
+
+ {/* Infra */}
+
+ } label="Workspace" value={scenario.workspaceName} />
+ } label="VM Size" value={scenario.vmSize} />
+ } label="Node" value={scenario.nodeName} />
+ } label="Provider" value={scenario.provider} />
+ {scenario.branch && } label="Branch" value={scenario.branch} mono />}
+
+
+ {/* ALL ports — full list, wraps. This is where "+N" / the strip lands you. */}
+ {sortedPorts.length > 0 && (
+
+
+
+ Ports ({sortedPorts.length})
+
+
+
+ )}
+
+ );
+}
+
+function InfraRow({ icon, label, value, mono }: { icon: React.ReactNode; label: string; value: string; mono?: boolean }) {
+ return (
+