@goondan/cli 0.0.3-alpha10 → 0.0.3-alpha11

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.
@@ -334,6 +334,36 @@ async function resolveInstanceLocations(stateRoot, instanceKey) {
334
334
  const safeKey = sanitizeInstanceKey(instanceKey);
335
335
  const results = [];
336
336
  const seen = new Set();
337
+ const requestedWorkspaceNames = Array.from(new Set([safeKey, instanceKey]));
338
+ const pushLocatedInstance = (workspaceName, instancePath, source) => {
339
+ if (seen.has(instancePath)) {
340
+ return;
341
+ }
342
+ seen.add(instancePath);
343
+ results.push({
344
+ workspaceName,
345
+ instancePath,
346
+ source,
347
+ });
348
+ };
349
+ const appendWorkspaceInstances = async (workspaceRootPath, workspaceName, source, instancesDirName = 'instances') => {
350
+ const workspacePath = path.join(workspaceRootPath, workspaceName);
351
+ if (!(await exists(workspacePath))) {
352
+ return;
353
+ }
354
+ const instancesRoot = path.join(workspacePath, instancesDirName);
355
+ if (!(await exists(instancesRoot))) {
356
+ return;
357
+ }
358
+ const entries = (await readdir(instancesRoot, { withFileTypes: true })).sort(compareDirentByNameAsc);
359
+ for (const entry of entries) {
360
+ if (!entry.isDirectory()) {
361
+ continue;
362
+ }
363
+ const instancePath = path.join(instancesRoot, entry.name);
364
+ pushLocatedInstance(workspaceName, instancePath, source);
365
+ }
366
+ };
337
367
  const workspacesRoot = path.join(stateRoot, 'workspaces');
338
368
  if (await exists(workspacesRoot)) {
339
369
  const workspaces = (await readdir(workspacesRoot, { withFileTypes: true })).sort(compareDirentByNameAsc);
@@ -350,14 +380,7 @@ async function resolveInstanceLocations(stateRoot, instanceKey) {
350
380
  if (!(await exists(candidate))) {
351
381
  continue;
352
382
  }
353
- if (seen.has(candidate)) {
354
- continue;
355
- }
356
- seen.add(candidate);
357
- results.push({
358
- workspaceName,
359
- instancePath: candidate,
360
- });
383
+ pushLocatedInstance(workspaceName, candidate, 'exact');
361
384
  }
362
385
  }
363
386
  }
@@ -377,17 +400,23 @@ async function resolveInstanceLocations(stateRoot, instanceKey) {
377
400
  if (!(await exists(candidate))) {
378
401
  continue;
379
402
  }
380
- if (seen.has(candidate)) {
381
- continue;
382
- }
383
- seen.add(candidate);
384
- results.push({
385
- workspaceName,
386
- instancePath: candidate,
387
- });
403
+ pushLocatedInstance(workspaceName, candidate, 'exact');
388
404
  }
389
405
  }
390
406
  }
407
+ if (results.length > 0) {
408
+ return results;
409
+ }
410
+ if (await exists(workspacesRoot)) {
411
+ for (const workspaceName of requestedWorkspaceNames) {
412
+ await appendWorkspaceInstances(workspacesRoot, workspaceName, 'workspace');
413
+ }
414
+ }
415
+ if (await exists(legacyRoot)) {
416
+ for (const workspaceName of requestedWorkspaceNames) {
417
+ await appendWorkspaceInstances(legacyRoot, workspaceName, 'workspace', '');
418
+ }
419
+ }
391
420
  return results;
392
421
  }
393
422
  function parseInstanceMetadataAgent(raw) {
@@ -619,7 +648,8 @@ export class DefaultStudioService {
619
648
  sequence += 1;
620
649
  }
621
650
  }
622
- const connectorEvents = await this.readConnectorEventsFromLogs(stateRoot, request.instanceKey);
651
+ const includesWorkspaceFallback = instanceLocations.some((location) => location.source === 'workspace');
652
+ const connectorEvents = await this.readConnectorEventsFromLogs(stateRoot, request.instanceKey, includesWorkspaceFallback);
623
653
  const primaryAgent = knownAgents.values().next().value ?? 'orchestrator';
624
654
  const primaryAgentId = `agent:${primaryAgent}`;
625
655
  for (const event of connectorEvents) {
@@ -746,7 +776,7 @@ export class DefaultStudioService {
746
776
  }
747
777
  notFound(res);
748
778
  }
749
- async readConnectorEventsFromLogs(stateRoot, instanceKey) {
779
+ async readConnectorEventsFromLogs(stateRoot, instanceKey, includeAllInstanceKeys = false) {
750
780
  const events = [];
751
781
  const logDir = path.join(stateRoot, 'runtime', 'logs', instanceKey);
752
782
  if (!(await exists(logDir))) {
@@ -772,7 +802,7 @@ export class DefaultStudioService {
772
802
  sequence += 1;
773
803
  continue;
774
804
  }
775
- if (parsed.instanceKey !== instanceKey) {
805
+ if (!includeAllInstanceKeys && parsed.instanceKey !== instanceKey) {
776
806
  sequence += 1;
777
807
  continue;
778
808
  }
@@ -1 +1 @@
1
- {"version":3,"file":"studio.js","sourceRoot":"","sources":["../../src/services/studio.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"studio.js","sourceRoot":"","sources":["../../src/services/studio.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,3 @@
1
1
  export declare const STUDIO_HTML = "<!doctype html>\n<html lang=\"ko\">\n <head>\n <meta charset=\"utf-8\" />\n <meta name=\"viewport\" content=\"width=device-width,initial-scale=1\" />\n <title>Goondan Studio</title>\n <link rel=\"stylesheet\" href=\"/studio.css\" />\n </head>\n <body>\n <div class=\"studio-shell\">\n <aside class=\"left-panel\">\n <div class=\"brand\">\n <div class=\"brand-kicker\">GOONDAN</div>\n <h1>Studio</h1>\n </div>\n <div id=\"instance-list\" class=\"instance-list\"></div>\n </aside>\n <main class=\"main-panel\">\n <header class=\"top-bar\">\n <div class=\"title-wrap\">\n <h2 id=\"instance-title\">\uC778\uC2A4\uD134\uC2A4\uB97C \uC120\uD0DD\uD558\uC138\uC694</h2>\n <p id=\"instance-subtitle\">runtime event stream</p>\n </div>\n <div class=\"mode-toggle\">\n <button id=\"mode-graph\" class=\"mode-btn is-active\" type=\"button\">Graph</button>\n <button id=\"mode-flow\" class=\"mode-btn\" type=\"button\">Flow</button>\n </div>\n </header>\n <section class=\"visual-stage\">\n <div id=\"graph-view\" class=\"view is-active\"></div>\n <div id=\"flow-view\" class=\"view\"></div>\n </section>\n <section class=\"detail-panel\">\n <h3>Edge History</h3>\n <div id=\"edge-history\" class=\"edge-history\"></div>\n </section>\n </main>\n </div>\n <script type=\"module\" src=\"/studio.js\"></script>\n </body>\n</html>\n";
2
- export declare const STUDIO_CSS = ":root {\n --bg-0: #0b1326;\n --bg-1: #101c3f;\n --bg-2: #13295b;\n --panel: rgba(7, 14, 33, 0.78);\n --panel-strong: rgba(9, 20, 46, 0.94);\n --text: #e7edff;\n --muted: #9fb0dc;\n --line: rgba(145, 167, 226, 0.28);\n --line-active: #73f0d6;\n --node-agent: #ffce6e;\n --node-connector: #8eb8ff;\n --node-default: #b7c9ff;\n --accent: #7cf5de;\n --warn: #ff9f6e;\n --radius: 14px;\n}\n\n* {\n box-sizing: border-box;\n}\n\nhtml,\nbody {\n margin: 0;\n min-height: 100%;\n font-family: \"Space Grotesk\", \"IBM Plex Sans KR\", \"Noto Sans KR\", sans-serif;\n color: var(--text);\n background:\n radial-gradient(circle at 10% 0%, rgba(124, 245, 222, 0.16), transparent 36%),\n radial-gradient(circle at 95% 20%, rgba(142, 184, 255, 0.22), transparent 42%),\n linear-gradient(132deg, var(--bg-0), var(--bg-1) 48%, var(--bg-2));\n}\n\nbody::before {\n content: \"\";\n position: fixed;\n inset: 0;\n pointer-events: none;\n opacity: 0.18;\n background-image:\n linear-gradient(0deg, transparent 24%, rgba(255, 255, 255, 0.22) 25%, transparent 26%),\n linear-gradient(90deg, transparent 24%, rgba(255, 255, 255, 0.22) 25%, transparent 26%);\n background-size: 28px 28px;\n}\n\n.studio-shell {\n position: relative;\n z-index: 1;\n display: grid;\n grid-template-columns: minmax(220px, 320px) 1fr;\n min-height: 100vh;\n}\n\n.left-panel {\n border-right: 1px solid var(--line);\n background: linear-gradient(180deg, rgba(8, 17, 38, 0.94), rgba(8, 17, 38, 0.72));\n backdrop-filter: blur(10px);\n padding: 20px 16px;\n overflow-y: auto;\n}\n\n.brand-kicker {\n letter-spacing: 0.24em;\n font-size: 11px;\n color: var(--accent);\n}\n\n.brand h1 {\n margin: 6px 0 18px;\n font-size: 30px;\n line-height: 1;\n}\n\n.instance-list {\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n.instance-btn {\n border: 1px solid var(--line);\n background: rgba(18, 33, 68, 0.55);\n color: var(--text);\n text-align: left;\n padding: 11px 12px;\n border-radius: 10px;\n cursor: pointer;\n transition: border-color 0.25s ease, transform 0.2s ease, background 0.2s ease;\n}\n\n.instance-btn .status {\n font-size: 12px;\n color: var(--muted);\n}\n\n.instance-btn:hover {\n transform: translateX(2px);\n border-color: rgba(124, 245, 222, 0.62);\n}\n\n.instance-btn.is-active {\n border-color: var(--accent);\n background: rgba(26, 56, 110, 0.75);\n box-shadow: 0 0 0 1px rgba(124, 245, 222, 0.18) inset;\n}\n\n.main-panel {\n padding: 16px;\n display: grid;\n grid-template-rows: auto 1fr 170px;\n gap: 12px;\n min-width: 0;\n}\n\n.top-bar {\n border: 1px solid var(--line);\n border-radius: var(--radius);\n background: var(--panel);\n backdrop-filter: blur(10px);\n padding: 12px 14px;\n display: flex;\n justify-content: space-between;\n align-items: center;\n gap: 10px;\n}\n\n.title-wrap h2 {\n margin: 0;\n font-size: 19px;\n}\n\n.title-wrap p {\n margin: 2px 0 0;\n color: var(--muted);\n font-size: 13px;\n}\n\n.mode-toggle {\n display: inline-flex;\n border: 1px solid var(--line);\n border-radius: 999px;\n overflow: hidden;\n}\n\n.mode-btn {\n border: 0;\n background: rgba(22, 41, 82, 0.62);\n color: var(--muted);\n padding: 7px 15px;\n cursor: pointer;\n font-weight: 600;\n}\n\n.mode-btn.is-active {\n background: rgba(124, 245, 222, 0.22);\n color: var(--text);\n}\n\n.visual-stage {\n border: 1px solid var(--line);\n border-radius: var(--radius);\n background: var(--panel-strong);\n overflow: hidden;\n position: relative;\n}\n\n.view {\n display: none;\n width: 100%;\n height: 100%;\n min-height: 320px;\n}\n\n.view.is-active {\n display: block;\n}\n\n.detail-panel {\n border: 1px solid var(--line);\n border-radius: var(--radius);\n background: var(--panel);\n padding: 10px 12px;\n overflow: hidden;\n}\n\n.detail-panel h3 {\n margin: 0 0 8px;\n font-size: 14px;\n color: var(--accent);\n}\n\n.edge-history {\n overflow: auto;\n max-height: 118px;\n font-size: 12px;\n line-height: 1.45;\n}\n\n.history-item {\n border-bottom: 1px dashed rgba(159, 176, 220, 0.25);\n padding: 5px 0;\n}\n\n.history-item:last-child {\n border-bottom: none;\n}\n\n.empty {\n color: var(--muted);\n padding: 12px;\n}\n\n.graph-wrap,\n.flow-wrap {\n width: 100%;\n height: 100%;\n}\n\n.graph-svg,\n.flow-svg {\n width: 100%;\n height: 100%;\n}\n\n.edge {\n stroke: var(--line);\n stroke-width: 2;\n cursor: pointer;\n transition: stroke 0.2s ease, stroke-width 0.2s ease, opacity 0.2s ease;\n opacity: 0.72;\n}\n\n.edge.is-active {\n stroke: var(--line-active);\n stroke-width: 3;\n opacity: 1;\n}\n\n.edge.is-selected {\n stroke: var(--warn);\n}\n\n.node circle {\n stroke: rgba(240, 248, 255, 0.84);\n stroke-width: 1.5;\n}\n\n.node text {\n fill: var(--text);\n font-size: 12px;\n text-anchor: middle;\n}\n\n.node.kind-agent circle {\n fill: var(--node-agent);\n}\n\n.node.kind-connector circle {\n fill: var(--node-connector);\n}\n\n.node.kind-other circle {\n fill: var(--node-default);\n}\n\n.node.is-active circle {\n filter: drop-shadow(0 0 6px rgba(124, 245, 222, 0.78));\n}\n\n.flow-wrap {\n overflow: auto;\n}\n\n.flow-label {\n fill: var(--muted);\n font-size: 11px;\n}\n\n.flow-event {\n fill: var(--text);\n font-size: 11px;\n}\n\n.flow-lane {\n stroke: rgba(142, 184, 255, 0.25);\n stroke-width: 1;\n}\n\n.flow-arc {\n stroke: rgba(115, 240, 214, 0.85);\n stroke-width: 2;\n fill: none;\n}\n\n.event-particle {\n fill: #ffffff;\n filter: drop-shadow(0 0 6px rgba(124, 245, 222, 0.9));\n}\n\n@media (max-width: 920px) {\n .studio-shell {\n grid-template-columns: 1fr;\n grid-template-rows: auto 1fr;\n }\n\n .left-panel {\n border-right: 0;\n border-bottom: 1px solid var(--line);\n max-height: 210px;\n }\n\n .main-panel {\n grid-template-rows: auto 1fr 180px;\n }\n}\n";
3
- export declare const STUDIO_JS = "const state = {\n mode: \"graph\",\n instances: [],\n selectedInstanceKey: null,\n visualization: null,\n selectedEdgeKey: null,\n pollTimer: null,\n seenRecentEventKeys: new Set(),\n recentEventKeyQueue: [],\n recentPulseEvents: [],\n hasHydratedRecentEvents: false,\n};\n\nconst els = {\n list: document.getElementById(\"instance-list\"),\n title: document.getElementById(\"instance-title\"),\n subtitle: document.getElementById(\"instance-subtitle\"),\n graphView: document.getElementById(\"graph-view\"),\n flowView: document.getElementById(\"flow-view\"),\n edgeHistory: document.getElementById(\"edge-history\"),\n modeGraph: document.getElementById(\"mode-graph\"),\n modeFlow: document.getElementById(\"mode-flow\"),\n};\n\nfunction createSvgEl(tag) {\n return document.createElementNS(\"http://www.w3.org/2000/svg\", tag);\n}\n\nfunction setMode(next) {\n state.mode = next;\n const isGraph = next === \"graph\";\n els.graphView.classList.toggle(\"is-active\", isGraph);\n els.flowView.classList.toggle(\"is-active\", !isGraph);\n els.modeGraph.classList.toggle(\"is-active\", isGraph);\n els.modeFlow.classList.toggle(\"is-active\", !isGraph);\n renderVisualization();\n}\n\nfunction formatTs(iso) {\n if (!iso) {\n return \"-\";\n }\n const date = new Date(iso);\n if (Number.isNaN(date.getTime())) {\n return iso;\n }\n return date.toLocaleString();\n}\n\nfunction eventKey(event) {\n return [event.at, event.source, event.target || \"\", event.subtype, event.detail].join(\"|\");\n}\n\nfunction resetRecentEventTracking() {\n state.seenRecentEventKeys = new Set();\n state.recentEventKeyQueue = [];\n state.recentPulseEvents = [];\n state.hasHydratedRecentEvents = false;\n}\n\nfunction trackRecentEventKey(key) {\n if (state.seenRecentEventKeys.has(key)) {\n return false;\n }\n state.seenRecentEventKeys.add(key);\n state.recentEventKeyQueue.push(key);\n\n while (state.recentEventKeyQueue.length > 2000) {\n const oldest = state.recentEventKeyQueue.shift();\n if (oldest) {\n state.seenRecentEventKeys.delete(oldest);\n }\n }\n return true;\n}\n\nasync function fetchJson(url) {\n const res = await fetch(url, { cache: \"no-store\" });\n if (!res.ok) {\n throw new Error(\"request failed: \" + res.status);\n }\n return await res.json();\n}\n\nasync function refreshInstances() {\n const previousSelected = state.selectedInstanceKey;\n const payload = await fetchJson(\"/api/instances\");\n state.instances = Array.isArray(payload.items) ? payload.items : [];\n if (!state.selectedInstanceKey && state.instances.length > 0) {\n state.selectedInstanceKey = state.instances[0].key;\n }\n if (\n state.selectedInstanceKey &&\n !state.instances.some((item) => item.key === state.selectedInstanceKey)\n ) {\n state.selectedInstanceKey = state.instances.length > 0 ? state.instances[0].key : null;\n }\n\n if (previousSelected !== state.selectedInstanceKey) {\n resetRecentEventTracking();\n }\n\n renderInstanceList();\n}\n\nasync function refreshVisualization() {\n if (!state.selectedInstanceKey) {\n state.visualization = null;\n resetRecentEventTracking();\n renderVisualization();\n return;\n }\n\n const key = encodeURIComponent(state.selectedInstanceKey);\n const payload = await fetchJson(\"/api/instances/\" + key + \"/visualization\");\n const recentEvents = Array.isArray(payload.recentEvents) ? payload.recentEvents : [];\n if (!state.hasHydratedRecentEvents) {\n for (const event of recentEvents) {\n trackRecentEventKey(eventKey(event));\n }\n state.recentPulseEvents = [];\n state.hasHydratedRecentEvents = true;\n } else {\n const pulseEvents = [];\n for (const event of recentEvents) {\n const keyForEvent = eventKey(event);\n if (trackRecentEventKey(keyForEvent)) {\n pulseEvents.push(event);\n }\n }\n state.recentPulseEvents = pulseEvents;\n }\n state.visualization = payload;\n renderVisualization();\n}\n\nfunction renderInstanceList() {\n els.list.innerHTML = \"\";\n if (state.instances.length === 0) {\n const empty = document.createElement(\"div\");\n empty.className = \"empty\";\n empty.textContent = \"\uC2E4\uD589 \uC911\uC778 \uC778\uC2A4\uD134\uC2A4\uAC00 \uC5C6\uC2B5\uB2C8\uB2E4.\";\n els.list.appendChild(empty);\n return;\n }\n\n for (const item of state.instances) {\n const button = document.createElement(\"button\");\n button.type = \"button\";\n button.className = \"instance-btn\";\n if (item.key === state.selectedInstanceKey) {\n button.classList.add(\"is-active\");\n }\n\n const title = document.createElement(\"div\");\n title.textContent = item.key;\n const meta = document.createElement(\"div\");\n meta.className = \"status\";\n meta.textContent = (item.status || \"unknown\") + \" / \" + (item.agent || \"orchestrator\");\n\n button.appendChild(title);\n button.appendChild(meta);\n button.addEventListener(\"click\", () => {\n state.selectedInstanceKey = item.key;\n state.selectedEdgeKey = null;\n resetRecentEventTracking();\n renderInstanceList();\n void refreshVisualization();\n });\n els.list.appendChild(button);\n }\n}\n\nfunction renderEdgeHistory() {\n els.edgeHistory.innerHTML = \"\";\n const viz = state.visualization;\n if (!viz || !state.selectedEdgeKey) {\n const empty = document.createElement(\"div\");\n empty.className = \"empty\";\n empty.textContent = \"\uAC04\uC120\uC744 \uC120\uD0DD\uD558\uBA74 \uC774\uBCA4\uD2B8 \uC774\uB825\uC774 \uD45C\uC2DC\uB429\uB2C8\uB2E4.\";\n els.edgeHistory.appendChild(empty);\n return;\n }\n\n const target = (viz.interactions || []).find((edge) => edge.key === state.selectedEdgeKey);\n if (!target || !Array.isArray(target.history) || target.history.length === 0) {\n const empty = document.createElement(\"div\");\n empty.className = \"empty\";\n empty.textContent = \"\uC774\uB825 \uB370\uC774\uD130\uAC00 \uC5C6\uC2B5\uB2C8\uB2E4.\";\n els.edgeHistory.appendChild(empty);\n return;\n }\n\n for (const item of target.history) {\n const row = document.createElement(\"div\");\n row.className = \"history-item\";\n row.textContent =\n formatTs(item.at) +\n \" \" +\n item.direction +\n \" \" +\n item.kind +\n \" \" +\n (item.detail || \"\");\n els.edgeHistory.appendChild(row);\n }\n}\n\nfunction renderVisualization() {\n const viz = state.visualization;\n if (!viz) {\n els.title.textContent = \"\uC778\uC2A4\uD134\uC2A4\uB97C \uC120\uD0DD\uD558\uC138\uC694\";\n els.subtitle.textContent = \"runtime event stream\";\n els.graphView.innerHTML = \"<div class='empty'>\uB370\uC774\uD130\uAC00 \uC5C6\uC2B5\uB2C8\uB2E4.</div>\";\n els.flowView.innerHTML = \"<div class='empty'>\uB370\uC774\uD130\uAC00 \uC5C6\uC2B5\uB2C8\uB2E4.</div>\";\n renderEdgeHistory();\n return;\n }\n\n els.title.textContent = viz.instanceKey || \"instance\";\n const participantCount = Array.isArray(viz.participants) ? viz.participants.length : 0;\n const eventCount = Array.isArray(viz.timeline) ? viz.timeline.length : 0;\n els.subtitle.textContent = \"participants \" + participantCount + \" / events \" + eventCount;\n\n if (state.mode === \"graph\") {\n renderGraph(viz);\n } else {\n renderFlow(viz);\n }\n renderEdgeHistory();\n}\n\nfunction pickGraphParticipants(participants) {\n const list = participants.filter((item) => item.kind === \"agent\" || item.kind === \"connector\");\n if (list.length > 0) {\n return list;\n }\n return participants;\n}\n\nfunction renderGraph(viz) {\n const participants = Array.isArray(viz.participants) ? pickGraphParticipants(viz.participants) : [];\n const interactions = Array.isArray(viz.interactions) ? viz.interactions : [];\n const pulseEvents = Array.isArray(state.recentPulseEvents) ? state.recentPulseEvents : [];\n\n if (participants.length === 0) {\n els.graphView.innerHTML = \"<div class='empty'>\uD45C\uC2DC\uD560 participant\uAC00 \uC5C6\uC2B5\uB2C8\uB2E4.</div>\";\n return;\n }\n\n const wrap = document.createElement(\"div\");\n wrap.className = \"graph-wrap\";\n const svg = createSvgEl(\"svg\");\n svg.setAttribute(\"class\", \"graph-svg\");\n svg.setAttribute(\"viewBox\", \"0 0 1000 600\");\n\n const centerX = 500;\n const centerY = 300;\n const radius = Math.max(170, Math.min(250, 70 + participants.length * 18));\n const positions = new Map();\n\n participants.forEach((node, index) => {\n const ratio = (Math.PI * 2 * index) / participants.length;\n const x = centerX + Math.cos(ratio) * radius;\n const y = centerY + Math.sin(ratio) * radius;\n positions.set(node.id, { x, y, item: node });\n });\n\n const edgeLayer = createSvgEl(\"g\");\n const nodeLayer = createSvgEl(\"g\");\n const fxLayer = createSvgEl(\"g\");\n svg.appendChild(edgeLayer);\n svg.appendChild(nodeLayer);\n svg.appendChild(fxLayer);\n\n const edgePathByKey = new Map();\n for (const edge of interactions) {\n const from = positions.get(edge.a);\n const to = positions.get(edge.b);\n if (!from || !to) {\n continue;\n }\n const line = createSvgEl(\"line\");\n line.setAttribute(\"x1\", String(from.x));\n line.setAttribute(\"y1\", String(from.y));\n line.setAttribute(\"x2\", String(to.x));\n line.setAttribute(\"y2\", String(to.y));\n line.setAttribute(\"class\", \"edge\");\n if (state.selectedEdgeKey === edge.key) {\n line.classList.add(\"is-selected\");\n }\n line.addEventListener(\"click\", () => {\n state.selectedEdgeKey = edge.key;\n renderVisualization();\n });\n edgeLayer.appendChild(line);\n edgePathByKey.set(edge.key, {\n path: \"M \" + from.x + \" \" + from.y + \" L \" + to.x + \" \" + to.y,\n line,\n from: edge.a,\n to: edge.b,\n });\n }\n\n const activeNodes = new Set();\n const activeEdges = new Set();\n for (const event of pulseEvents) {\n const source = event.source;\n const target = event.target || \"\";\n activeNodes.add(source);\n if (target) {\n activeNodes.add(target);\n for (const edge of interactions) {\n if (\n (edge.a === source && edge.b === target) ||\n (edge.a === target && edge.b === source)\n ) {\n activeEdges.add(edge.key);\n }\n }\n }\n }\n\n for (const edge of interactions) {\n const edgeInfo = edgePathByKey.get(edge.key);\n if (!edgeInfo) {\n continue;\n }\n if (activeEdges.has(edge.key)) {\n edgeInfo.line.classList.add(\"is-active\");\n }\n }\n\n for (const node of participants) {\n const point = positions.get(node.id);\n if (!point) {\n continue;\n }\n const g = createSvgEl(\"g\");\n g.setAttribute(\"class\", \"node\");\n if (node.kind === \"agent\") {\n g.classList.add(\"kind-agent\");\n } else if (node.kind === \"connector\") {\n g.classList.add(\"kind-connector\");\n } else {\n g.classList.add(\"kind-other\");\n }\n if (activeNodes.has(node.id)) {\n g.classList.add(\"is-active\");\n }\n\n const circle = createSvgEl(\"circle\");\n circle.setAttribute(\"cx\", String(point.x));\n circle.setAttribute(\"cy\", String(point.y));\n circle.setAttribute(\"r\", \"28\");\n const text = createSvgEl(\"text\");\n text.setAttribute(\"x\", String(point.x));\n text.setAttribute(\"y\", String(point.y + 4));\n text.textContent = node.label.length > 16 ? node.label.slice(0, 16) + \"\u2026\" : node.label;\n\n g.appendChild(circle);\n g.appendChild(text);\n nodeLayer.appendChild(g);\n }\n\n for (const event of pulseEvents) {\n if (!event.target) {\n continue;\n }\n let hit = null;\n for (const edge of interactions) {\n if (\n (edge.a === event.source && edge.b === event.target) ||\n (edge.a === event.target && edge.b === event.source)\n ) {\n hit = edgePathByKey.get(edge.key) || null;\n break;\n }\n }\n if (!hit) {\n continue;\n }\n\n const dot = createSvgEl(\"circle\");\n dot.setAttribute(\"r\", \"4\");\n dot.setAttribute(\"class\", \"event-particle\");\n const motion = createSvgEl(\"animateMotion\");\n motion.setAttribute(\"dur\", \"1.1s\");\n motion.setAttribute(\"repeatCount\", \"1\");\n motion.setAttribute(\"path\", hit.path);\n dot.appendChild(motion);\n fxLayer.appendChild(dot);\n }\n\n svg.appendChild(edgeLayer);\n svg.appendChild(nodeLayer);\n svg.appendChild(fxLayer);\n wrap.appendChild(svg);\n els.graphView.innerHTML = \"\";\n els.graphView.appendChild(wrap);\n}\n\nfunction renderFlow(viz) {\n const timeline = Array.isArray(viz.timeline) ? viz.timeline : [];\n const participants = Array.isArray(viz.participants) ? viz.participants : [];\n if (participants.length === 0) {\n els.flowView.innerHTML = \"<div class='empty'>\uD45C\uC2DC\uD560 participant\uAC00 \uC5C6\uC2B5\uB2C8\uB2E4.</div>\";\n return;\n }\n\n const laneWidth = 180;\n const topPad = 42;\n const rowGap = 62;\n const lanes = participants.slice(0, 10);\n const width = Math.max(760, laneWidth * lanes.length);\n const height = Math.max(280, topPad + timeline.length * rowGap + 40);\n const laneById = new Map(lanes.map((item, index) => [item.id, index]));\n\n const wrap = document.createElement(\"div\");\n wrap.className = \"flow-wrap\";\n const svg = createSvgEl(\"svg\");\n svg.setAttribute(\"class\", \"flow-svg\");\n svg.setAttribute(\"viewBox\", \"0 0 \" + width + \" \" + height);\n svg.setAttribute(\"preserveAspectRatio\", \"xMinYMin meet\");\n\n const defs = createSvgEl(\"defs\");\n const marker = createSvgEl(\"marker\");\n marker.setAttribute(\"id\", \"arrowHead\");\n marker.setAttribute(\"markerWidth\", \"8\");\n marker.setAttribute(\"markerHeight\", \"8\");\n marker.setAttribute(\"refX\", \"7\");\n marker.setAttribute(\"refY\", \"4\");\n marker.setAttribute(\"orient\", \"auto\");\n const arrowPath = createSvgEl(\"path\");\n arrowPath.setAttribute(\"d\", \"M 0 0 L 8 4 L 0 8 z\");\n arrowPath.setAttribute(\"fill\", \"#73f0d6\");\n marker.appendChild(arrowPath);\n defs.appendChild(marker);\n svg.appendChild(defs);\n\n lanes.forEach((lane, index) => {\n const x = laneWidth * index + laneWidth / 2;\n const label = createSvgEl(\"text\");\n label.setAttribute(\"x\", String(x));\n label.setAttribute(\"y\", \"22\");\n label.setAttribute(\"text-anchor\", \"middle\");\n label.setAttribute(\"class\", \"flow-label\");\n label.textContent = lane.label;\n svg.appendChild(label);\n\n const laneLine = createSvgEl(\"line\");\n laneLine.setAttribute(\"x1\", String(x));\n laneLine.setAttribute(\"y1\", \"28\");\n laneLine.setAttribute(\"x2\", String(x));\n laneLine.setAttribute(\"y2\", String(height - 12));\n laneLine.setAttribute(\"class\", \"flow-lane\");\n svg.appendChild(laneLine);\n });\n\n timeline.slice(-120).forEach((event, index) => {\n const y = topPad + index * rowGap;\n const sourceIndex = laneById.has(event.source) ? laneById.get(event.source) : 0;\n const targetIndex = laneById.has(event.target) ? laneById.get(event.target) : sourceIndex;\n const sx = laneWidth * sourceIndex + laneWidth / 2;\n const tx = laneWidth * targetIndex + laneWidth / 2;\n\n const arc = createSvgEl(\"path\");\n const midY = y - 18;\n arc.setAttribute(\"d\", \"M \" + sx + \" \" + y + \" Q \" + (sx + tx) / 2 + \" \" + midY + \" \" + tx + \" \" + y);\n arc.setAttribute(\"class\", \"flow-arc\");\n arc.setAttribute(\"marker-end\", \"url(#arrowHead)\");\n svg.appendChild(arc);\n\n const label = createSvgEl(\"text\");\n label.setAttribute(\"x\", String((sx + tx) / 2));\n label.setAttribute(\"y\", String(y - 6));\n label.setAttribute(\"text-anchor\", \"middle\");\n label.setAttribute(\"class\", \"flow-event\");\n const detail = event.detail || \"\";\n const text = formatTs(event.at) + \" \u00B7 \" + event.subtype + \" \u00B7 \" + detail;\n label.textContent = text.length > 80 ? text.slice(0, 80) + \"\u2026\" : text;\n svg.appendChild(label);\n });\n\n wrap.appendChild(svg);\n els.flowView.innerHTML = \"\";\n els.flowView.appendChild(wrap);\n}\n\nasync function tick() {\n try {\n await refreshInstances();\n await refreshVisualization();\n } catch (error) {\n const message = error instanceof Error ? error.message : String(error);\n els.subtitle.textContent = \"polling failed: \" + message;\n }\n}\n\nfunction startPolling() {\n if (state.pollTimer) {\n clearInterval(state.pollTimer);\n }\n state.pollTimer = setInterval(() => {\n void tick();\n }, 1000);\n}\n\nels.modeGraph.addEventListener(\"click\", () => setMode(\"graph\"));\nels.modeFlow.addEventListener(\"click\", () => setMode(\"flow\"));\n\nvoid tick();\nstartPolling();\n";
2
+ export declare const STUDIO_CSS = ":root {\n --bg-0: #0b1326;\n --bg-1: #101c3f;\n --bg-2: #13295b;\n --panel: rgba(7, 14, 33, 0.78);\n --panel-strong: rgba(9, 20, 46, 0.94);\n --text: #e7edff;\n --muted: #9fb0dc;\n --line: rgba(145, 167, 226, 0.28);\n --line-active: #73f0d6;\n --node-agent: #ffce6e;\n --node-connector: #8eb8ff;\n --node-default: #b7c9ff;\n --accent: #7cf5de;\n --warn: #ff9f6e;\n --radius: 14px;\n}\n\n* {\n box-sizing: border-box;\n}\n\nhtml,\nbody {\n margin: 0;\n min-height: 100%;\n font-family: \"Space Grotesk\", \"IBM Plex Sans KR\", \"Noto Sans KR\", sans-serif;\n color: var(--text);\n background:\n radial-gradient(circle at 10% 0%, rgba(124, 245, 222, 0.16), transparent 36%),\n radial-gradient(circle at 95% 20%, rgba(142, 184, 255, 0.22), transparent 42%),\n linear-gradient(132deg, var(--bg-0), var(--bg-1) 48%, var(--bg-2));\n}\n\nbody::before {\n content: \"\";\n position: fixed;\n inset: 0;\n pointer-events: none;\n opacity: 0.18;\n background-image:\n linear-gradient(0deg, transparent 24%, rgba(255, 255, 255, 0.22) 25%, transparent 26%),\n linear-gradient(90deg, transparent 24%, rgba(255, 255, 255, 0.22) 25%, transparent 26%);\n background-size: 28px 28px;\n}\n\n.studio-shell {\n position: relative;\n z-index: 1;\n display: grid;\n grid-template-columns: minmax(220px, 320px) 1fr;\n min-height: 100vh;\n}\n\n.left-panel {\n border-right: 1px solid var(--line);\n background: linear-gradient(180deg, rgba(8, 17, 38, 0.94), rgba(8, 17, 38, 0.72));\n backdrop-filter: blur(10px);\n padding: 20px 16px;\n overflow-y: auto;\n}\n\n.brand-kicker {\n letter-spacing: 0.24em;\n font-size: 11px;\n color: var(--accent);\n}\n\n.brand h1 {\n margin: 6px 0 18px;\n font-size: 30px;\n line-height: 1;\n}\n\n.instance-list {\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n.instance-btn {\n border: 1px solid var(--line);\n background: rgba(18, 33, 68, 0.55);\n color: var(--text);\n text-align: left;\n padding: 11px 12px;\n border-radius: 10px;\n cursor: pointer;\n transition: border-color 0.25s ease, transform 0.2s ease, background 0.2s ease;\n}\n\n.instance-btn .status {\n font-size: 12px;\n color: var(--muted);\n}\n\n.instance-btn:hover {\n transform: translateX(2px);\n border-color: rgba(124, 245, 222, 0.62);\n}\n\n.instance-btn.is-active {\n border-color: var(--accent);\n background: rgba(26, 56, 110, 0.75);\n box-shadow: 0 0 0 1px rgba(124, 245, 222, 0.18) inset;\n}\n\n.main-panel {\n padding: 16px;\n display: grid;\n grid-template-rows: auto 1fr 170px;\n gap: 12px;\n min-width: 0;\n}\n\n.top-bar {\n border: 1px solid var(--line);\n border-radius: var(--radius);\n background: var(--panel);\n backdrop-filter: blur(10px);\n padding: 12px 14px;\n display: flex;\n justify-content: space-between;\n align-items: center;\n gap: 10px;\n}\n\n.title-wrap h2 {\n margin: 0;\n font-size: 19px;\n}\n\n.title-wrap p {\n margin: 2px 0 0;\n color: var(--muted);\n font-size: 13px;\n}\n\n.mode-toggle {\n display: inline-flex;\n border: 1px solid var(--line);\n border-radius: 999px;\n overflow: hidden;\n}\n\n.mode-btn {\n border: 0;\n background: rgba(22, 41, 82, 0.62);\n color: var(--muted);\n padding: 7px 15px;\n cursor: pointer;\n font-weight: 600;\n}\n\n.mode-btn.is-active {\n background: rgba(124, 245, 222, 0.22);\n color: var(--text);\n}\n\n.visual-stage {\n border: 1px solid var(--line);\n border-radius: var(--radius);\n background: var(--panel-strong);\n overflow: hidden;\n position: relative;\n}\n\n.view {\n display: none;\n width: 100%;\n height: 100%;\n min-height: 320px;\n}\n\n.view.is-active {\n display: block;\n}\n\n.detail-panel {\n border: 1px solid var(--line);\n border-radius: var(--radius);\n background: var(--panel);\n padding: 10px 12px;\n overflow: hidden;\n}\n\n.detail-panel h3 {\n margin: 0 0 8px;\n font-size: 14px;\n color: var(--accent);\n}\n\n.edge-history {\n overflow: auto;\n max-height: 118px;\n font-size: 12px;\n line-height: 1.45;\n}\n\n.history-item {\n border-bottom: 1px dashed rgba(159, 176, 220, 0.25);\n padding: 5px 0;\n}\n\n.history-item:last-child {\n border-bottom: none;\n}\n\n.empty {\n color: var(--muted);\n padding: 12px;\n}\n\n.graph-wrap,\n.flow-wrap {\n width: 100%;\n height: 100%;\n}\n\n.graph-svg,\n.flow-svg {\n width: 100%;\n height: 100%;\n}\n\n.edge {\n stroke: var(--line);\n stroke-width: 2;\n cursor: pointer;\n transition: stroke 0.2s ease, stroke-width 0.2s ease, opacity 0.2s ease;\n opacity: 0.72;\n}\n\n.edge.is-active {\n stroke: var(--line-active);\n stroke-width: 3;\n opacity: 1;\n}\n\n.edge.is-selected {\n stroke: var(--warn);\n}\n\n.node circle {\n stroke: rgba(240, 248, 255, 0.84);\n stroke-width: 1.5;\n}\n\n.node text {\n fill: var(--text);\n font-size: 12px;\n text-anchor: middle;\n}\n\n.node.kind-agent circle {\n fill: var(--node-agent);\n}\n\n.node.kind-connector circle {\n fill: var(--node-connector);\n}\n\n.node.kind-other circle {\n fill: var(--node-default);\n}\n\n.node.is-active circle {\n filter: drop-shadow(0 0 6px rgba(124, 245, 222, 0.78));\n}\n\n.flow-wrap {\n overflow: auto;\n}\n\n.flow-label {\n fill: var(--muted);\n font-size: 11px;\n}\n\n.flow-event {\n fill: var(--text);\n font-size: 11px;\n}\n\n.flow-lane {\n stroke: rgba(142, 184, 255, 0.25);\n stroke-width: 1;\n}\n\n.flow-arc {\n stroke: rgba(115, 240, 214, 0.85);\n stroke-width: 2;\n fill: none;\n}\n\n.flow-step {\n fill: rgba(142, 184, 255, 0.2);\n stroke: rgba(142, 184, 255, 0.62);\n stroke-width: 1.2;\n rx: 8;\n ry: 8;\n}\n\n.flow-step.called {\n fill: rgba(142, 184, 255, 0.24);\n stroke: rgba(142, 184, 255, 0.78);\n}\n\n.flow-step.done {\n fill: rgba(124, 245, 222, 0.22);\n stroke: rgba(124, 245, 222, 0.78);\n}\n\n.flow-step.failed {\n fill: rgba(255, 159, 110, 0.2);\n stroke: rgba(255, 159, 110, 0.78);\n}\n\n.flow-dot {\n fill: #73f0d6;\n stroke: rgba(8, 17, 38, 0.8);\n stroke-width: 1;\n}\n\n.event-particle {\n fill: #ffffff;\n filter: drop-shadow(0 0 6px rgba(124, 245, 222, 0.9));\n}\n\n@media (max-width: 920px) {\n .studio-shell {\n grid-template-columns: 1fr;\n grid-template-rows: auto 1fr;\n }\n\n .left-panel {\n border-right: 0;\n border-bottom: 1px solid var(--line);\n max-height: 210px;\n }\n\n .main-panel {\n grid-template-rows: auto 1fr 180px;\n }\n}\n";
3
+ export declare const STUDIO_JS = "const state = {\n mode: \"graph\",\n instances: [],\n instancesDigest: \"\",\n selectedInstanceKey: null,\n visualization: null,\n visualizationDigest: \"\",\n selectedEdgeKey: null,\n pollTimer: null,\n seenRecentEventKeys: new Set(),\n recentEventKeyQueue: [],\n recentPulseEvents: [],\n hasHydratedRecentEvents: false,\n};\n\nconst els = {\n list: document.getElementById(\"instance-list\"),\n title: document.getElementById(\"instance-title\"),\n subtitle: document.getElementById(\"instance-subtitle\"),\n graphView: document.getElementById(\"graph-view\"),\n flowView: document.getElementById(\"flow-view\"),\n edgeHistory: document.getElementById(\"edge-history\"),\n modeGraph: document.getElementById(\"mode-graph\"),\n modeFlow: document.getElementById(\"mode-flow\"),\n};\n\nfunction createSvgEl(tag) {\n return document.createElementNS(\"http://www.w3.org/2000/svg\", tag);\n}\n\nfunction setMode(next) {\n state.mode = next;\n const isGraph = next === \"graph\";\n els.graphView.classList.toggle(\"is-active\", isGraph);\n els.flowView.classList.toggle(\"is-active\", !isGraph);\n els.modeGraph.classList.toggle(\"is-active\", isGraph);\n els.modeFlow.classList.toggle(\"is-active\", !isGraph);\n renderVisualization();\n}\n\nfunction formatTs(iso) {\n if (!iso) {\n return \"-\";\n }\n const date = new Date(iso);\n if (Number.isNaN(date.getTime())) {\n return iso;\n }\n return date.toLocaleString();\n}\n\nfunction eventKey(event) {\n return [event.at, event.source, event.target || \"\", event.subtype, event.detail].join(\"|\");\n}\n\nfunction computeInstancesDigest(items, selectedInstanceKey) {\n const normalized = Array.isArray(items) ? items : [];\n const rows = normalized.map((item) =>\n [\n item && typeof item.key === \"string\" ? item.key : \"\",\n item && typeof item.status === \"string\" ? item.status : \"\",\n item && typeof item.agent === \"string\" ? item.agent : \"\",\n item && typeof item.updatedAt === \"string\" ? item.updatedAt : \"\",\n ].join(\":\"),\n );\n return selectedInstanceKey + \"|\" + rows.join(\"||\");\n}\n\nfunction computeVisualizationDigest(payload) {\n if (!payload) {\n return \"\";\n }\n\n const participants = Array.isArray(payload.participants) ? payload.participants : [];\n const interactions = Array.isArray(payload.interactions) ? payload.interactions : [];\n const timeline = Array.isArray(payload.timeline) ? payload.timeline : [];\n const recent = Array.isArray(payload.recentEvents) ? payload.recentEvents : [];\n\n const timelineTail = timeline.length > 0 ? eventKey(timeline[timeline.length - 1]) : \"\";\n const recentTail = recent.length > 0 ? eventKey(recent[recent.length - 1]) : \"\";\n return [\n payload.instanceKey || \"\",\n String(participants.length),\n String(interactions.length),\n String(timeline.length),\n timelineTail,\n recentTail,\n ].join(\"|\");\n}\n\nfunction resetRecentEventTracking() {\n state.seenRecentEventKeys = new Set();\n state.recentEventKeyQueue = [];\n state.recentPulseEvents = [];\n state.hasHydratedRecentEvents = false;\n state.visualizationDigest = \"\";\n}\n\nfunction trackRecentEventKey(key) {\n if (state.seenRecentEventKeys.has(key)) {\n return false;\n }\n state.seenRecentEventKeys.add(key);\n state.recentEventKeyQueue.push(key);\n\n while (state.recentEventKeyQueue.length > 2000) {\n const oldest = state.recentEventKeyQueue.shift();\n if (oldest) {\n state.seenRecentEventKeys.delete(oldest);\n }\n }\n return true;\n}\n\nasync function fetchJson(url) {\n const res = await fetch(url, { cache: \"no-store\" });\n if (!res.ok) {\n throw new Error(\"request failed: \" + res.status);\n }\n return await res.json();\n}\n\nasync function refreshInstances() {\n const previousSelected = state.selectedInstanceKey;\n const payload = await fetchJson(\"/api/instances\");\n state.instances = Array.isArray(payload.items) ? payload.items : [];\n if (!state.selectedInstanceKey && state.instances.length > 0) {\n state.selectedInstanceKey = state.instances[0].key;\n }\n if (\n state.selectedInstanceKey &&\n !state.instances.some((item) => item.key === state.selectedInstanceKey)\n ) {\n state.selectedInstanceKey = state.instances.length > 0 ? state.instances[0].key : null;\n }\n\n if (previousSelected !== state.selectedInstanceKey) {\n resetRecentEventTracking();\n }\n\n const digest = computeInstancesDigest(state.instances, state.selectedInstanceKey);\n if (digest !== state.instancesDigest) {\n state.instancesDigest = digest;\n renderInstanceList();\n }\n}\n\nasync function refreshVisualization() {\n if (!state.selectedInstanceKey) {\n const hadVisualization = state.visualization !== null;\n state.visualization = null;\n state.visualizationDigest = \"\";\n if (hadVisualization) {\n resetRecentEventTracking();\n renderVisualization();\n }\n return;\n }\n\n const key = encodeURIComponent(state.selectedInstanceKey);\n const payload = await fetchJson(\"/api/instances/\" + key + \"/visualization\");\n const recentEvents = Array.isArray(payload.recentEvents) ? payload.recentEvents : [];\n if (!state.hasHydratedRecentEvents) {\n for (const event of recentEvents) {\n trackRecentEventKey(eventKey(event));\n }\n state.recentPulseEvents = [];\n state.hasHydratedRecentEvents = true;\n } else {\n const pulseEvents = [];\n for (const event of recentEvents) {\n const keyForEvent = eventKey(event);\n if (trackRecentEventKey(keyForEvent)) {\n pulseEvents.push(event);\n }\n }\n state.recentPulseEvents = pulseEvents;\n }\n\n const nextDigest = computeVisualizationDigest(payload);\n const hasPulse = Array.isArray(state.recentPulseEvents) && state.recentPulseEvents.length > 0;\n if (nextDigest !== state.visualizationDigest || hasPulse) {\n state.visualization = payload;\n state.visualizationDigest = nextDigest;\n renderVisualization();\n } else {\n state.visualization = payload;\n }\n}\n\nfunction renderInstanceList() {\n els.list.innerHTML = \"\";\n if (state.instances.length === 0) {\n const empty = document.createElement(\"div\");\n empty.className = \"empty\";\n empty.textContent = \"\uC2E4\uD589 \uC911\uC778 \uC778\uC2A4\uD134\uC2A4\uAC00 \uC5C6\uC2B5\uB2C8\uB2E4.\";\n els.list.appendChild(empty);\n return;\n }\n\n for (const item of state.instances) {\n const button = document.createElement(\"button\");\n button.type = \"button\";\n button.className = \"instance-btn\";\n if (item.key === state.selectedInstanceKey) {\n button.classList.add(\"is-active\");\n }\n\n const title = document.createElement(\"div\");\n title.textContent = item.key;\n const meta = document.createElement(\"div\");\n meta.className = \"status\";\n meta.textContent = (item.status || \"unknown\") + \" / \" + (item.agent || \"orchestrator\");\n\n button.appendChild(title);\n button.appendChild(meta);\n button.addEventListener(\"click\", () => {\n state.selectedInstanceKey = item.key;\n state.selectedEdgeKey = null;\n resetRecentEventTracking();\n state.instancesDigest = \"\";\n renderInstanceList();\n void refreshVisualization();\n });\n els.list.appendChild(button);\n }\n}\n\nfunction renderEdgeHistory() {\n els.edgeHistory.innerHTML = \"\";\n const viz = state.visualization;\n if (!viz || !state.selectedEdgeKey) {\n const empty = document.createElement(\"div\");\n empty.className = \"empty\";\n empty.textContent = \"\uAC04\uC120\uC744 \uC120\uD0DD\uD558\uBA74 \uC774\uBCA4\uD2B8 \uC774\uB825\uC774 \uD45C\uC2DC\uB429\uB2C8\uB2E4.\";\n els.edgeHistory.appendChild(empty);\n return;\n }\n\n const target = (viz.interactions || []).find((edge) => edge.key === state.selectedEdgeKey);\n if (!target || !Array.isArray(target.history) || target.history.length === 0) {\n const empty = document.createElement(\"div\");\n empty.className = \"empty\";\n empty.textContent = \"\uC774\uB825 \uB370\uC774\uD130\uAC00 \uC5C6\uC2B5\uB2C8\uB2E4.\";\n els.edgeHistory.appendChild(empty);\n return;\n }\n\n for (const item of target.history) {\n const row = document.createElement(\"div\");\n row.className = \"history-item\";\n row.textContent =\n formatTs(item.at) +\n \" \" +\n item.direction +\n \" \" +\n item.kind +\n \" \" +\n (item.detail || \"\");\n els.edgeHistory.appendChild(row);\n }\n}\n\nfunction renderVisualization() {\n const viz = state.visualization;\n if (!viz) {\n els.title.textContent = \"\uC778\uC2A4\uD134\uC2A4\uB97C \uC120\uD0DD\uD558\uC138\uC694\";\n els.subtitle.textContent = \"runtime event stream\";\n els.graphView.innerHTML = \"<div class='empty'>\uB370\uC774\uD130\uAC00 \uC5C6\uC2B5\uB2C8\uB2E4.</div>\";\n els.flowView.innerHTML = \"<div class='empty'>\uB370\uC774\uD130\uAC00 \uC5C6\uC2B5\uB2C8\uB2E4.</div>\";\n renderEdgeHistory();\n return;\n }\n\n els.title.textContent = viz.instanceKey || \"instance\";\n const participantCount = Array.isArray(viz.participants) ? viz.participants.length : 0;\n const eventCount = Array.isArray(viz.timeline) ? viz.timeline.length : 0;\n els.subtitle.textContent = \"participants \" + participantCount + \" / events \" + eventCount;\n\n if (state.mode === \"graph\") {\n renderGraph(viz);\n } else {\n renderFlow(viz);\n }\n renderEdgeHistory();\n}\n\nfunction pickGraphParticipants(participants) {\n const list = participants.filter((item) => item.kind === \"agent\" || item.kind === \"connector\");\n if (list.length > 0) {\n return list;\n }\n return participants;\n}\n\nfunction renderGraph(viz) {\n const participants = Array.isArray(viz.participants) ? pickGraphParticipants(viz.participants) : [];\n const interactions = Array.isArray(viz.interactions) ? viz.interactions : [];\n const pulseEvents = Array.isArray(state.recentPulseEvents) ? state.recentPulseEvents : [];\n\n if (participants.length === 0) {\n els.graphView.innerHTML = \"<div class='empty'>\uD45C\uC2DC\uD560 participant\uAC00 \uC5C6\uC2B5\uB2C8\uB2E4.</div>\";\n return;\n }\n\n const wrap = document.createElement(\"div\");\n wrap.className = \"graph-wrap\";\n const svg = createSvgEl(\"svg\");\n svg.setAttribute(\"class\", \"graph-svg\");\n svg.setAttribute(\"viewBox\", \"0 0 1000 600\");\n\n const centerX = 500;\n const centerY = 300;\n const radius = Math.max(170, Math.min(250, 70 + participants.length * 18));\n const positions = new Map();\n\n participants.forEach((node, index) => {\n const ratio = (Math.PI * 2 * index) / participants.length;\n const x = centerX + Math.cos(ratio) * radius;\n const y = centerY + Math.sin(ratio) * radius;\n positions.set(node.id, { x, y, item: node });\n });\n\n const edgeLayer = createSvgEl(\"g\");\n const nodeLayer = createSvgEl(\"g\");\n const fxLayer = createSvgEl(\"g\");\n svg.appendChild(edgeLayer);\n svg.appendChild(nodeLayer);\n svg.appendChild(fxLayer);\n\n const edgePathByKey = new Map();\n for (const edge of interactions) {\n const from = positions.get(edge.a);\n const to = positions.get(edge.b);\n if (!from || !to) {\n continue;\n }\n const line = createSvgEl(\"line\");\n line.setAttribute(\"x1\", String(from.x));\n line.setAttribute(\"y1\", String(from.y));\n line.setAttribute(\"x2\", String(to.x));\n line.setAttribute(\"y2\", String(to.y));\n line.setAttribute(\"class\", \"edge\");\n if (state.selectedEdgeKey === edge.key) {\n line.classList.add(\"is-selected\");\n }\n line.addEventListener(\"click\", () => {\n state.selectedEdgeKey = edge.key;\n renderVisualization();\n });\n edgeLayer.appendChild(line);\n edgePathByKey.set(edge.key, {\n path: \"M \" + from.x + \" \" + from.y + \" L \" + to.x + \" \" + to.y,\n line,\n from: edge.a,\n to: edge.b,\n });\n }\n\n const activeNodes = new Set();\n const activeEdges = new Set();\n for (const event of pulseEvents) {\n const source = event.source;\n const target = event.target || \"\";\n activeNodes.add(source);\n if (target) {\n activeNodes.add(target);\n for (const edge of interactions) {\n if (\n (edge.a === source && edge.b === target) ||\n (edge.a === target && edge.b === source)\n ) {\n activeEdges.add(edge.key);\n }\n }\n }\n }\n\n for (const edge of interactions) {\n const edgeInfo = edgePathByKey.get(edge.key);\n if (!edgeInfo) {\n continue;\n }\n if (activeEdges.has(edge.key)) {\n edgeInfo.line.classList.add(\"is-active\");\n }\n }\n\n for (const node of participants) {\n const point = positions.get(node.id);\n if (!point) {\n continue;\n }\n const g = createSvgEl(\"g\");\n g.setAttribute(\"class\", \"node\");\n if (node.kind === \"agent\") {\n g.classList.add(\"kind-agent\");\n } else if (node.kind === \"connector\") {\n g.classList.add(\"kind-connector\");\n } else {\n g.classList.add(\"kind-other\");\n }\n if (activeNodes.has(node.id)) {\n g.classList.add(\"is-active\");\n }\n\n const circle = createSvgEl(\"circle\");\n circle.setAttribute(\"cx\", String(point.x));\n circle.setAttribute(\"cy\", String(point.y));\n circle.setAttribute(\"r\", \"28\");\n const text = createSvgEl(\"text\");\n text.setAttribute(\"x\", String(point.x));\n text.setAttribute(\"y\", String(point.y + 4));\n text.textContent = node.label.length > 16 ? node.label.slice(0, 16) + \"\u2026\" : node.label;\n\n g.appendChild(circle);\n g.appendChild(text);\n nodeLayer.appendChild(g);\n }\n\n for (const event of pulseEvents) {\n if (!event.target) {\n continue;\n }\n let hit = null;\n for (const edge of interactions) {\n if (\n (edge.a === event.source && edge.b === event.target) ||\n (edge.a === event.target && edge.b === event.source)\n ) {\n hit = edgePathByKey.get(edge.key) || null;\n break;\n }\n }\n if (!hit) {\n continue;\n }\n\n const dot = createSvgEl(\"circle\");\n dot.setAttribute(\"r\", \"4\");\n dot.setAttribute(\"class\", \"event-particle\");\n const motion = createSvgEl(\"animateMotion\");\n motion.setAttribute(\"dur\", \"1.1s\");\n motion.setAttribute(\"repeatCount\", \"1\");\n motion.setAttribute(\"path\", hit.path);\n dot.appendChild(motion);\n fxLayer.appendChild(dot);\n }\n\n wrap.appendChild(svg);\n els.graphView.innerHTML = \"\";\n els.graphView.appendChild(wrap);\n}\n\nfunction pickFlowParticipants(participants) {\n const prioritized = participants.filter((item) => item.kind === \"agent\" || item.kind === \"connector\");\n if (prioritized.length > 0) {\n return prioritized;\n }\n\n const fallback = participants.filter((item) => item.kind !== \"tool\" && item.kind !== \"extension\");\n if (fallback.length > 0) {\n return fallback;\n }\n\n return participants;\n}\n\nfunction isToolStepEvent(event) {\n return (\n event &&\n event.kind === \"runtime-event\" &&\n (event.subtype === \"tool.called\" || event.subtype === \"tool.completed\" || event.subtype === \"tool.failed\")\n );\n}\n\nfunction truncateFlowText(text, limit) {\n if (typeof text !== \"string\") {\n return \"\";\n }\n if (text.length <= limit) {\n return text;\n }\n return text.slice(0, limit) + \"\u2026\";\n}\n\nfunction summarizeFlowEvent(event, maxLength) {\n const detail = event.detail || \"\";\n const text = formatTs(event.at) + \" \u00B7 \" + event.subtype + (detail ? \" \u00B7 \" + detail : \"\");\n return truncateFlowText(text, maxLength);\n}\n\nfunction resolveToolStepLaneIndex(event, laneById) {\n const sourceIndex = laneById.has(event.source) ? laneById.get(event.source) : undefined;\n const targetIndex = laneById.has(event.target) ? laneById.get(event.target) : undefined;\n if (event.subtype === \"tool.called\") {\n if (typeof sourceIndex === \"number\") {\n return sourceIndex;\n }\n if (typeof targetIndex === \"number\") {\n return targetIndex;\n }\n return 0;\n }\n\n if (typeof targetIndex === \"number\") {\n return targetIndex;\n }\n if (typeof sourceIndex === \"number\") {\n return sourceIndex;\n }\n return 0;\n}\n\nfunction renderFlow(viz) {\n const timeline = Array.isArray(viz.timeline) ? viz.timeline : [];\n const participants = Array.isArray(viz.participants) ? viz.participants : [];\n if (participants.length === 0) {\n els.flowView.innerHTML = \"<div class='empty'>\uD45C\uC2DC\uD560 participant\uAC00 \uC5C6\uC2B5\uB2C8\uB2E4.</div>\";\n return;\n }\n\n const laneWidth = 220;\n const topPad = 42;\n const rowGap = 64;\n const lanes = pickFlowParticipants(participants).slice(0, 10);\n const visibleTimeline = timeline.slice(-160);\n const width = Math.max(760, laneWidth * lanes.length);\n const height = Math.max(280, topPad + visibleTimeline.length * rowGap + 40);\n const laneById = new Map(lanes.map((item, index) => [item.id, index]));\n\n const wrap = document.createElement(\"div\");\n wrap.className = \"flow-wrap\";\n const svg = createSvgEl(\"svg\");\n svg.setAttribute(\"class\", \"flow-svg\");\n svg.setAttribute(\"viewBox\", \"0 0 \" + width + \" \" + height);\n svg.setAttribute(\"preserveAspectRatio\", \"xMinYMin meet\");\n\n const defs = createSvgEl(\"defs\");\n const marker = createSvgEl(\"marker\");\n marker.setAttribute(\"id\", \"arrowHead\");\n marker.setAttribute(\"markerWidth\", \"8\");\n marker.setAttribute(\"markerHeight\", \"8\");\n marker.setAttribute(\"refX\", \"7\");\n marker.setAttribute(\"refY\", \"4\");\n marker.setAttribute(\"orient\", \"auto\");\n const arrowPath = createSvgEl(\"path\");\n arrowPath.setAttribute(\"d\", \"M 0 0 L 8 4 L 0 8 z\");\n arrowPath.setAttribute(\"fill\", \"#73f0d6\");\n marker.appendChild(arrowPath);\n defs.appendChild(marker);\n svg.appendChild(defs);\n\n lanes.forEach((lane, index) => {\n const x = laneWidth * index + laneWidth / 2;\n const label = createSvgEl(\"text\");\n label.setAttribute(\"x\", String(x));\n label.setAttribute(\"y\", \"22\");\n label.setAttribute(\"text-anchor\", \"middle\");\n label.setAttribute(\"class\", \"flow-label\");\n label.textContent = lane.label;\n svg.appendChild(label);\n\n const laneLine = createSvgEl(\"line\");\n laneLine.setAttribute(\"x1\", String(x));\n laneLine.setAttribute(\"y1\", \"28\");\n laneLine.setAttribute(\"x2\", String(x));\n laneLine.setAttribute(\"y2\", String(height - 12));\n laneLine.setAttribute(\"class\", \"flow-lane\");\n svg.appendChild(laneLine);\n });\n\n visibleTimeline.forEach((event, index) => {\n const y = topPad + index * rowGap;\n if (isToolStepEvent(event)) {\n const laneIndex = resolveToolStepLaneIndex(event, laneById);\n const laneCenter = laneWidth * laneIndex + laneWidth / 2;\n const stepWidth = Math.max(140, laneWidth - 30);\n const stepHeight = 28;\n const stepX = laneCenter - stepWidth / 2;\n const stepY = y - stepHeight / 2;\n const step = createSvgEl(\"rect\");\n const stepClass =\n event.subtype === \"tool.called\"\n ? \"flow-step called\"\n : event.subtype === \"tool.failed\"\n ? \"flow-step failed\"\n : \"flow-step done\";\n step.setAttribute(\"x\", String(stepX));\n step.setAttribute(\"y\", String(stepY));\n step.setAttribute(\"width\", String(stepWidth));\n step.setAttribute(\"height\", String(stepHeight));\n step.setAttribute(\"class\", stepClass);\n svg.appendChild(step);\n\n const stepText = createSvgEl(\"text\");\n stepText.setAttribute(\"x\", String(laneCenter));\n stepText.setAttribute(\"y\", String(y + 4));\n stepText.setAttribute(\"text-anchor\", \"middle\");\n stepText.setAttribute(\"class\", \"flow-event\");\n stepText.textContent = summarizeFlowEvent(event, 88);\n svg.appendChild(stepText);\n return;\n }\n\n const sourceIndex = laneById.has(event.source) ? laneById.get(event.source) : undefined;\n const targetIndex = laneById.has(event.target) ? laneById.get(event.target) : undefined;\n const anchorIndex =\n typeof sourceIndex === \"number\"\n ? sourceIndex\n : typeof targetIndex === \"number\"\n ? targetIndex\n : 0;\n\n if (typeof sourceIndex !== \"number\" || typeof targetIndex !== \"number\" || sourceIndex === targetIndex) {\n const x = laneWidth * anchorIndex + laneWidth / 2;\n const dot = createSvgEl(\"circle\");\n dot.setAttribute(\"cx\", String(x));\n dot.setAttribute(\"cy\", String(y));\n dot.setAttribute(\"r\", \"4\");\n dot.setAttribute(\"class\", \"flow-dot\");\n svg.appendChild(dot);\n\n const label = createSvgEl(\"text\");\n label.setAttribute(\"x\", String(x + 10));\n label.setAttribute(\"y\", String(y - 6));\n label.setAttribute(\"text-anchor\", \"start\");\n label.setAttribute(\"class\", \"flow-event\");\n label.textContent = summarizeFlowEvent(event, 88);\n svg.appendChild(label);\n return;\n }\n\n const sx = laneWidth * sourceIndex + laneWidth / 2;\n const tx = laneWidth * targetIndex + laneWidth / 2;\n const arc = createSvgEl(\"path\");\n const midY = y - 18;\n arc.setAttribute(\"d\", \"M \" + sx + \" \" + y + \" Q \" + (sx + tx) / 2 + \" \" + midY + \" \" + tx + \" \" + y);\n arc.setAttribute(\"class\", \"flow-arc\");\n arc.setAttribute(\"marker-end\", \"url(#arrowHead)\");\n svg.appendChild(arc);\n\n const label = createSvgEl(\"text\");\n label.setAttribute(\"x\", String((sx + tx) / 2));\n label.setAttribute(\"y\", String(y - 6));\n label.setAttribute(\"text-anchor\", \"middle\");\n label.setAttribute(\"class\", \"flow-event\");\n label.textContent = summarizeFlowEvent(event, 92);\n svg.appendChild(label);\n });\n\n wrap.appendChild(svg);\n els.flowView.innerHTML = \"\";\n els.flowView.appendChild(wrap);\n}\n\nasync function tick() {\n try {\n await refreshInstances();\n await refreshVisualization();\n } catch (error) {\n const message = error instanceof Error ? error.message : String(error);\n els.subtitle.textContent = \"polling failed: \" + message;\n }\n}\n\nfunction startPolling() {\n if (state.pollTimer) {\n clearInterval(state.pollTimer);\n }\n state.pollTimer = setInterval(() => {\n void tick();\n }, 1000);\n}\n\nels.modeGraph.addEventListener(\"click\", () => setMode(\"graph\"));\nels.modeFlow.addEventListener(\"click\", () => setMode(\"flow\"));\n\nvoid tick();\nstartPolling();\n";
@@ -335,6 +335,35 @@ body::before {
335
335
  fill: none;
336
336
  }
337
337
 
338
+ .flow-step {
339
+ fill: rgba(142, 184, 255, 0.2);
340
+ stroke: rgba(142, 184, 255, 0.62);
341
+ stroke-width: 1.2;
342
+ rx: 8;
343
+ ry: 8;
344
+ }
345
+
346
+ .flow-step.called {
347
+ fill: rgba(142, 184, 255, 0.24);
348
+ stroke: rgba(142, 184, 255, 0.78);
349
+ }
350
+
351
+ .flow-step.done {
352
+ fill: rgba(124, 245, 222, 0.22);
353
+ stroke: rgba(124, 245, 222, 0.78);
354
+ }
355
+
356
+ .flow-step.failed {
357
+ fill: rgba(255, 159, 110, 0.2);
358
+ stroke: rgba(255, 159, 110, 0.78);
359
+ }
360
+
361
+ .flow-dot {
362
+ fill: #73f0d6;
363
+ stroke: rgba(8, 17, 38, 0.8);
364
+ stroke-width: 1;
365
+ }
366
+
338
367
  .event-particle {
339
368
  fill: #ffffff;
340
369
  filter: drop-shadow(0 0 6px rgba(124, 245, 222, 0.9));
@@ -360,8 +389,10 @@ body::before {
360
389
  export const STUDIO_JS = `const state = {
361
390
  mode: "graph",
362
391
  instances: [],
392
+ instancesDigest: "",
363
393
  selectedInstanceKey: null,
364
394
  visualization: null,
395
+ visualizationDigest: "",
365
396
  selectedEdgeKey: null,
366
397
  pollTimer: null,
367
398
  seenRecentEventKeys: new Set(),
@@ -410,11 +441,47 @@ function eventKey(event) {
410
441
  return [event.at, event.source, event.target || "", event.subtype, event.detail].join("|");
411
442
  }
412
443
 
444
+ function computeInstancesDigest(items, selectedInstanceKey) {
445
+ const normalized = Array.isArray(items) ? items : [];
446
+ const rows = normalized.map((item) =>
447
+ [
448
+ item && typeof item.key === "string" ? item.key : "",
449
+ item && typeof item.status === "string" ? item.status : "",
450
+ item && typeof item.agent === "string" ? item.agent : "",
451
+ item && typeof item.updatedAt === "string" ? item.updatedAt : "",
452
+ ].join(":"),
453
+ );
454
+ return selectedInstanceKey + "|" + rows.join("||");
455
+ }
456
+
457
+ function computeVisualizationDigest(payload) {
458
+ if (!payload) {
459
+ return "";
460
+ }
461
+
462
+ const participants = Array.isArray(payload.participants) ? payload.participants : [];
463
+ const interactions = Array.isArray(payload.interactions) ? payload.interactions : [];
464
+ const timeline = Array.isArray(payload.timeline) ? payload.timeline : [];
465
+ const recent = Array.isArray(payload.recentEvents) ? payload.recentEvents : [];
466
+
467
+ const timelineTail = timeline.length > 0 ? eventKey(timeline[timeline.length - 1]) : "";
468
+ const recentTail = recent.length > 0 ? eventKey(recent[recent.length - 1]) : "";
469
+ return [
470
+ payload.instanceKey || "",
471
+ String(participants.length),
472
+ String(interactions.length),
473
+ String(timeline.length),
474
+ timelineTail,
475
+ recentTail,
476
+ ].join("|");
477
+ }
478
+
413
479
  function resetRecentEventTracking() {
414
480
  state.seenRecentEventKeys = new Set();
415
481
  state.recentEventKeyQueue = [];
416
482
  state.recentPulseEvents = [];
417
483
  state.hasHydratedRecentEvents = false;
484
+ state.visualizationDigest = "";
418
485
  }
419
486
 
420
487
  function trackRecentEventKey(key) {
@@ -459,14 +526,22 @@ async function refreshInstances() {
459
526
  resetRecentEventTracking();
460
527
  }
461
528
 
462
- renderInstanceList();
529
+ const digest = computeInstancesDigest(state.instances, state.selectedInstanceKey);
530
+ if (digest !== state.instancesDigest) {
531
+ state.instancesDigest = digest;
532
+ renderInstanceList();
533
+ }
463
534
  }
464
535
 
465
536
  async function refreshVisualization() {
466
537
  if (!state.selectedInstanceKey) {
538
+ const hadVisualization = state.visualization !== null;
467
539
  state.visualization = null;
468
- resetRecentEventTracking();
469
- renderVisualization();
540
+ state.visualizationDigest = "";
541
+ if (hadVisualization) {
542
+ resetRecentEventTracking();
543
+ renderVisualization();
544
+ }
470
545
  return;
471
546
  }
472
547
 
@@ -489,8 +564,16 @@ async function refreshVisualization() {
489
564
  }
490
565
  state.recentPulseEvents = pulseEvents;
491
566
  }
492
- state.visualization = payload;
493
- renderVisualization();
567
+
568
+ const nextDigest = computeVisualizationDigest(payload);
569
+ const hasPulse = Array.isArray(state.recentPulseEvents) && state.recentPulseEvents.length > 0;
570
+ if (nextDigest !== state.visualizationDigest || hasPulse) {
571
+ state.visualization = payload;
572
+ state.visualizationDigest = nextDigest;
573
+ renderVisualization();
574
+ } else {
575
+ state.visualization = payload;
576
+ }
494
577
  }
495
578
 
496
579
  function renderInstanceList() {
@@ -519,10 +602,11 @@ function renderInstanceList() {
519
602
 
520
603
  button.appendChild(title);
521
604
  button.appendChild(meta);
522
- button.addEventListener("click", () => {
605
+ button.addEventListener("click", () => {
523
606
  state.selectedInstanceKey = item.key;
524
607
  state.selectedEdgeKey = null;
525
608
  resetRecentEventTracking();
609
+ state.instancesDigest = "";
526
610
  renderInstanceList();
527
611
  void refreshVisualization();
528
612
  });
@@ -751,14 +835,71 @@ function renderGraph(viz) {
751
835
  fxLayer.appendChild(dot);
752
836
  }
753
837
 
754
- svg.appendChild(edgeLayer);
755
- svg.appendChild(nodeLayer);
756
- svg.appendChild(fxLayer);
757
838
  wrap.appendChild(svg);
758
839
  els.graphView.innerHTML = "";
759
840
  els.graphView.appendChild(wrap);
760
841
  }
761
842
 
843
+ function pickFlowParticipants(participants) {
844
+ const prioritized = participants.filter((item) => item.kind === "agent" || item.kind === "connector");
845
+ if (prioritized.length > 0) {
846
+ return prioritized;
847
+ }
848
+
849
+ const fallback = participants.filter((item) => item.kind !== "tool" && item.kind !== "extension");
850
+ if (fallback.length > 0) {
851
+ return fallback;
852
+ }
853
+
854
+ return participants;
855
+ }
856
+
857
+ function isToolStepEvent(event) {
858
+ return (
859
+ event &&
860
+ event.kind === "runtime-event" &&
861
+ (event.subtype === "tool.called" || event.subtype === "tool.completed" || event.subtype === "tool.failed")
862
+ );
863
+ }
864
+
865
+ function truncateFlowText(text, limit) {
866
+ if (typeof text !== "string") {
867
+ return "";
868
+ }
869
+ if (text.length <= limit) {
870
+ return text;
871
+ }
872
+ return text.slice(0, limit) + "…";
873
+ }
874
+
875
+ function summarizeFlowEvent(event, maxLength) {
876
+ const detail = event.detail || "";
877
+ const text = formatTs(event.at) + " · " + event.subtype + (detail ? " · " + detail : "");
878
+ return truncateFlowText(text, maxLength);
879
+ }
880
+
881
+ function resolveToolStepLaneIndex(event, laneById) {
882
+ const sourceIndex = laneById.has(event.source) ? laneById.get(event.source) : undefined;
883
+ const targetIndex = laneById.has(event.target) ? laneById.get(event.target) : undefined;
884
+ if (event.subtype === "tool.called") {
885
+ if (typeof sourceIndex === "number") {
886
+ return sourceIndex;
887
+ }
888
+ if (typeof targetIndex === "number") {
889
+ return targetIndex;
890
+ }
891
+ return 0;
892
+ }
893
+
894
+ if (typeof targetIndex === "number") {
895
+ return targetIndex;
896
+ }
897
+ if (typeof sourceIndex === "number") {
898
+ return sourceIndex;
899
+ }
900
+ return 0;
901
+ }
902
+
762
903
  function renderFlow(viz) {
763
904
  const timeline = Array.isArray(viz.timeline) ? viz.timeline : [];
764
905
  const participants = Array.isArray(viz.participants) ? viz.participants : [];
@@ -767,12 +908,13 @@ function renderFlow(viz) {
767
908
  return;
768
909
  }
769
910
 
770
- const laneWidth = 180;
911
+ const laneWidth = 220;
771
912
  const topPad = 42;
772
- const rowGap = 62;
773
- const lanes = participants.slice(0, 10);
913
+ const rowGap = 64;
914
+ const lanes = pickFlowParticipants(participants).slice(0, 10);
915
+ const visibleTimeline = timeline.slice(-160);
774
916
  const width = Math.max(760, laneWidth * lanes.length);
775
- const height = Math.max(280, topPad + timeline.length * rowGap + 40);
917
+ const height = Math.max(280, topPad + visibleTimeline.length * rowGap + 40);
776
918
  const laneById = new Map(lanes.map((item, index) => [item.id, index]));
777
919
 
778
920
  const wrap = document.createElement("div");
@@ -816,13 +958,69 @@ function renderFlow(viz) {
816
958
  svg.appendChild(laneLine);
817
959
  });
818
960
 
819
- timeline.slice(-120).forEach((event, index) => {
961
+ visibleTimeline.forEach((event, index) => {
820
962
  const y = topPad + index * rowGap;
821
- const sourceIndex = laneById.has(event.source) ? laneById.get(event.source) : 0;
822
- const targetIndex = laneById.has(event.target) ? laneById.get(event.target) : sourceIndex;
963
+ if (isToolStepEvent(event)) {
964
+ const laneIndex = resolveToolStepLaneIndex(event, laneById);
965
+ const laneCenter = laneWidth * laneIndex + laneWidth / 2;
966
+ const stepWidth = Math.max(140, laneWidth - 30);
967
+ const stepHeight = 28;
968
+ const stepX = laneCenter - stepWidth / 2;
969
+ const stepY = y - stepHeight / 2;
970
+ const step = createSvgEl("rect");
971
+ const stepClass =
972
+ event.subtype === "tool.called"
973
+ ? "flow-step called"
974
+ : event.subtype === "tool.failed"
975
+ ? "flow-step failed"
976
+ : "flow-step done";
977
+ step.setAttribute("x", String(stepX));
978
+ step.setAttribute("y", String(stepY));
979
+ step.setAttribute("width", String(stepWidth));
980
+ step.setAttribute("height", String(stepHeight));
981
+ step.setAttribute("class", stepClass);
982
+ svg.appendChild(step);
983
+
984
+ const stepText = createSvgEl("text");
985
+ stepText.setAttribute("x", String(laneCenter));
986
+ stepText.setAttribute("y", String(y + 4));
987
+ stepText.setAttribute("text-anchor", "middle");
988
+ stepText.setAttribute("class", "flow-event");
989
+ stepText.textContent = summarizeFlowEvent(event, 88);
990
+ svg.appendChild(stepText);
991
+ return;
992
+ }
993
+
994
+ const sourceIndex = laneById.has(event.source) ? laneById.get(event.source) : undefined;
995
+ const targetIndex = laneById.has(event.target) ? laneById.get(event.target) : undefined;
996
+ const anchorIndex =
997
+ typeof sourceIndex === "number"
998
+ ? sourceIndex
999
+ : typeof targetIndex === "number"
1000
+ ? targetIndex
1001
+ : 0;
1002
+
1003
+ if (typeof sourceIndex !== "number" || typeof targetIndex !== "number" || sourceIndex === targetIndex) {
1004
+ const x = laneWidth * anchorIndex + laneWidth / 2;
1005
+ const dot = createSvgEl("circle");
1006
+ dot.setAttribute("cx", String(x));
1007
+ dot.setAttribute("cy", String(y));
1008
+ dot.setAttribute("r", "4");
1009
+ dot.setAttribute("class", "flow-dot");
1010
+ svg.appendChild(dot);
1011
+
1012
+ const label = createSvgEl("text");
1013
+ label.setAttribute("x", String(x + 10));
1014
+ label.setAttribute("y", String(y - 6));
1015
+ label.setAttribute("text-anchor", "start");
1016
+ label.setAttribute("class", "flow-event");
1017
+ label.textContent = summarizeFlowEvent(event, 88);
1018
+ svg.appendChild(label);
1019
+ return;
1020
+ }
1021
+
823
1022
  const sx = laneWidth * sourceIndex + laneWidth / 2;
824
1023
  const tx = laneWidth * targetIndex + laneWidth / 2;
825
-
826
1024
  const arc = createSvgEl("path");
827
1025
  const midY = y - 18;
828
1026
  arc.setAttribute("d", "M " + sx + " " + y + " Q " + (sx + tx) / 2 + " " + midY + " " + tx + " " + y);
@@ -835,9 +1033,7 @@ function renderFlow(viz) {
835
1033
  label.setAttribute("y", String(y - 6));
836
1034
  label.setAttribute("text-anchor", "middle");
837
1035
  label.setAttribute("class", "flow-event");
838
- const detail = event.detail || "";
839
- const text = formatTs(event.at) + " · " + event.subtype + " · " + detail;
840
- label.textContent = text.length > 80 ? text.slice(0, 80) + "…" : text;
1036
+ label.textContent = summarizeFlowEvent(event, 92);
841
1037
  svg.appendChild(label);
842
1038
  });
843
1039
 
@@ -1 +1 @@
1
- {"version":3,"file":"assets.js","sourceRoot":"","sources":["../../src/studio/assets.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,WAAW,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAyC1B,CAAC;AAEF,MAAM,CAAC,MAAM,UAAU,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA4TzB,CAAC;AAEF,MAAM,CAAC,MAAM,SAAS,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAigBxB,CAAC"}
1
+ {"version":3,"file":"assets.js","sourceRoot":"","sources":["../../src/studio/assets.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,WAAW,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAyC1B,CAAC;AAEF,MAAM,CAAC,MAAM,UAAU,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAyVzB,CAAC;AAEF,MAAM,CAAC,MAAM,SAAS,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAwqBxB,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@goondan/cli",
3
- "version": "0.0.3-alpha10",
3
+ "version": "0.0.3-alpha11",
4
4
  "description": "Goondan CLI (gdn)",
5
5
  "type": "module",
6
6
  "bin": {
@@ -17,7 +17,7 @@
17
17
  "dependencies": {
18
18
  "@optique/core": "^0.9.0",
19
19
  "@optique/run": "^0.9.0",
20
- "@goondan/runtime": "0.0.3-alpha10"
20
+ "@goondan/runtime": "0.0.3-alpha11"
21
21
  },
22
22
  "devDependencies": {
23
23
  "@types/node": "^22.19.7",