@kb-labs/workflow-entry 2.104.0 → 2.106.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (56) hide show
  1. package/dist/manifest.json +901 -0
  2. package/dist/widgets/117.js +2 -3
  3. package/dist/widgets/165.js +1 -2
  4. package/dist/widgets/326.js +1 -2
  5. package/dist/widgets/370.js +1 -2
  6. package/dist/widgets/405.js +1 -2
  7. package/dist/widgets/46.js +2 -3
  8. package/dist/widgets/50.js +1 -2
  9. package/dist/widgets/546.js +1 -2
  10. package/dist/widgets/62.js +2 -3
  11. package/dist/widgets/648.js +1 -2
  12. package/dist/widgets/669.js +1 -2
  13. package/dist/widgets/707.js +1 -2
  14. package/dist/widgets/716.js +1 -2
  15. package/dist/widgets/733.js +2 -3
  16. package/dist/widgets/775.js +1 -2
  17. package/dist/widgets/78.js +1 -2
  18. package/dist/widgets/945.js +1 -2
  19. package/dist/widgets/968.js +1 -2
  20. package/dist/widgets/__federation_expose_Crons.js +1 -2
  21. package/dist/widgets/__federation_expose_Dashboard.js +1 -2
  22. package/dist/widgets/__federation_expose_DefinitionDetail.js +1 -2
  23. package/dist/widgets/__federation_expose_Definitions.js +1 -2
  24. package/dist/widgets/__federation_expose_Jobs.js +1 -2
  25. package/dist/widgets/__federation_expose_RunDetail.js +2 -3
  26. package/dist/widgets/__federation_expose_Runs.js +1 -2
  27. package/dist/widgets/mf-manifest.json +12 -12
  28. package/dist/widgets/mf-stats.json +19 -18
  29. package/dist/widgets/remoteEntry.js +3 -4
  30. package/package.json +25 -25
  31. package/dist/widgets/117.js.map +0 -1
  32. package/dist/widgets/165.js.map +0 -1
  33. package/dist/widgets/326.js.map +0 -1
  34. package/dist/widgets/370.js.map +0 -1
  35. package/dist/widgets/405.js.map +0 -1
  36. package/dist/widgets/46.js.map +0 -1
  37. package/dist/widgets/50.js.map +0 -1
  38. package/dist/widgets/546.js.map +0 -1
  39. package/dist/widgets/62.js.map +0 -1
  40. package/dist/widgets/648.js.map +0 -1
  41. package/dist/widgets/669.js.map +0 -1
  42. package/dist/widgets/707.js.map +0 -1
  43. package/dist/widgets/716.js.map +0 -1
  44. package/dist/widgets/733.js.map +0 -1
  45. package/dist/widgets/775.js.map +0 -1
  46. package/dist/widgets/78.js.map +0 -1
  47. package/dist/widgets/945.js.map +0 -1
  48. package/dist/widgets/968.js.map +0 -1
  49. package/dist/widgets/__federation_expose_Crons.js.map +0 -1
  50. package/dist/widgets/__federation_expose_Dashboard.js.map +0 -1
  51. package/dist/widgets/__federation_expose_DefinitionDetail.js.map +0 -1
  52. package/dist/widgets/__federation_expose_Definitions.js.map +0 -1
  53. package/dist/widgets/__federation_expose_Jobs.js.map +0 -1
  54. package/dist/widgets/__federation_expose_RunDetail.js.map +0 -1
  55. package/dist/widgets/__federation_expose_Runs.js.map +0 -1
  56. package/dist/widgets/remoteEntry.js.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"file":"__federation_expose_RunDetail.js","sources":["webpack://@kb-labs/workflow-entry/./src/studio/components/artifacts/artifacts.module.css","webpack://@kb-labs/workflow-entry/../../../node_modules/.pnpm/css-loader@7.1.4_@rspack+core@2.1.2_@module-federation+runtime-tools@2.3.3__webpack@5.106.1_@_rf7t5uof7fepbt2hekasvyc2lm/node_modules/css-loader/dist/runtime/api.js","webpack://@kb-labs/workflow-entry/../../../node_modules/.pnpm/css-loader@7.1.4_@rspack+core@2.1.2_@module-federation+runtime-tools@2.3.3__webpack@5.106.1_@_rf7t5uof7fepbt2hekasvyc2lm/node_modules/css-loader/dist/runtime/sourceMaps.js","webpack://@kb-labs/workflow-entry/../../../node_modules/.pnpm/style-loader@4.0.0_webpack@5.106.1_@swc+core@1.15.33_postcss@8.5.15_/node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js","webpack://@kb-labs/workflow-entry/../../../node_modules/.pnpm/style-loader@4.0.0_webpack@5.106.1_@swc+core@1.15.33_postcss@8.5.15_/node_modules/style-loader/dist/runtime/insertBySelector.js","webpack://@kb-labs/workflow-entry/../../../node_modules/.pnpm/style-loader@4.0.0_webpack@5.106.1_@swc+core@1.15.33_postcss@8.5.15_/node_modules/style-loader/dist/runtime/insertStyleElement.js","webpack://@kb-labs/workflow-entry/../../../node_modules/.pnpm/style-loader@4.0.0_webpack@5.106.1_@swc+core@1.15.33_postcss@8.5.15_/node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js","webpack://@kb-labs/workflow-entry/../../../node_modules/.pnpm/style-loader@4.0.0_webpack@5.106.1_@swc+core@1.15.33_postcss@8.5.15_/node_modules/style-loader/dist/runtime/styleDomAPI.js","webpack://@kb-labs/workflow-entry/../../../node_modules/.pnpm/style-loader@4.0.0_webpack@5.106.1_@swc+core@1.15.33_postcss@8.5.15_/node_modules/style-loader/dist/runtime/styleTagTransform.js","webpack://@kb-labs/workflow-entry/./src/studio/components/shared/ConnectionBadge.tsx","webpack://@kb-labs/workflow-entry/./src/studio/components/ApprovalModal.tsx","webpack://@kb-labs/workflow-entry/./src/studio/components/pipeline/StepDetailDrawer.tsx","webpack://@kb-labs/workflow-entry/./src/studio/components/pipeline/PipelineView.tsx","webpack://@kb-labs/workflow-entry/./src/studio/components/artifacts/MarkdownViewer.tsx","webpack://@kb-labs/workflow-entry/./src/studio/components/artifacts/artifacts.module.css?9510","webpack://@kb-labs/workflow-entry/./src/studio/components/artifacts/IssuesViewer.tsx","webpack://@kb-labs/workflow-entry/./src/studio/components/artifacts/TableViewer.tsx","webpack://@kb-labs/workflow-entry/./src/studio/components/artifacts/DiffViewer.tsx","webpack://@kb-labs/workflow-entry/./src/studio/components/artifacts/LogViewer.tsx","webpack://@kb-labs/workflow-entry/./src/studio/components/artifacts/LinkViewer.tsx","webpack://@kb-labs/workflow-entry/./src/studio/components/artifacts/ArtifactViewer.tsx","webpack://@kb-labs/workflow-entry/./src/studio/components/dashboard/DashboardView.tsx","webpack://@kb-labs/workflow-entry/./src/studio/pages/WorkflowRunDetail.tsx"],"sourcesContent":["// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../../../node_modules/.pnpm/css-loader@7.1.4_@rspack+core@2.1.2_@module-federation+runtime-tools@2.3.3__webpack@5.106.1_@_rf7t5uof7fepbt2hekasvyc2lm/node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../../node_modules/.pnpm/css-loader@7.1.4_@rspack+core@2.1.2_@module-federation+runtime-tools@2.3.3__webpack@5.106.1_@_rf7t5uof7fepbt2hekasvyc2lm/node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `/* ── Markdown editor ── */\n.eKkdFRPP08w0ipmt {\n width: 100%;\n min-height: 200px;\n font-family: monospace;\n font-size: 13px;\n padding: 12px;\n border: 1px solid var(--border-primary);\n border-radius: 6px;\n background: var(--bg-primary);\n color: var(--text-primary);\n resize: vertical;\n box-sizing: border-box;\n}\n\n.xlFaIxn8H1U2vmZd {\n display: flex;\n gap: 8px;\n margin-top: 8px;\n}\n\n/* ── Issues ── */\n.EflSZ182vBIy0S2M {\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n.pie3p6utzf8rTfUu {\n padding: 8px 12px;\n background: var(--bg-secondary);\n border: 1px solid var(--border-primary);\n border-radius: 6px;\n}\n\n.Al1WXNwqfC0ju3OY {\n display: flex;\n align-items: center;\n gap: 8px;\n margin-bottom: 4px;\n}\n\n.qUayT4ACFY4Pv93l {\n font-size: 12px;\n color: var(--text-secondary);\n font-family: monospace;\n}\n\n.K5oooXXvNFAN7bDb {\n font-size: 13px;\n color: var(--text-primary);\n}\n\n.tArqFztlCu4cPnh5 {\n font-size: 12px;\n color: var(--text-secondary);\n margin-top: 4px;\n font-style: italic;\n}\n\n/* ── Log ── */\n.xRIfIRB1FQYzXPeI {\n margin: 0;\n padding: 12px;\n border-radius: 6px;\n font-size: 13px;\n line-height: 1.6;\n overflow: auto;\n background: #0d1117;\n color: #c9d1d9;\n font-family: monospace;\n max-height: 400px;\n white-space: pre-wrap;\n word-break: break-word;\n}\n\n/* ── Link ── */\n.Fdjb7OQrUoEC9TE7 {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 5px 12px;\n background: var(--bg-secondary);\n border: 1px solid var(--border-primary);\n border-radius: 6px;\n font-size: 13px;\n color: var(--link);\n text-decoration: none;\n font-weight: 500;\n transition: background 0.15s;\n}\n\n.Fdjb7OQrUoEC9TE7:hover {\n background: var(--bg-tertiary, var(--bg-secondary));\n border-color: var(--link);\n}\n\n.MPGw8m2NoAVGUlis {\n font-size: 11px;\n opacity: 0.6;\n}\n\n/* ── Empty state ── */\n.CQMnm5XuOUksgiz3 {\n color: var(--text-tertiary);\n font-size: 13px;\n padding: 12px;\n}\n`, \"\",{\"version\":3,\"sources\":[\"webpack://./src/studio/components/artifacts/artifacts.module.css\"],\"names\":[],\"mappings\":\"AAAA,0BAA0B;AAC1B;EACE,WAAW;EACX,iBAAiB;EACjB,sBAAsB;EACtB,eAAe;EACf,aAAa;EACb,uCAAuC;EACvC,kBAAkB;EAClB,6BAA6B;EAC7B,0BAA0B;EAC1B,gBAAgB;EAChB,sBAAsB;AACxB;;AAEA;EACE,aAAa;EACb,QAAQ;EACR,eAAe;AACjB;;AAEA,iBAAiB;AACjB;EACE,aAAa;EACb,sBAAsB;EACtB,QAAQ;AACV;;AAEA;EACE,iBAAiB;EACjB,+BAA+B;EAC/B,uCAAuC;EACvC,kBAAkB;AACpB;;AAEA;EACE,aAAa;EACb,mBAAmB;EACnB,QAAQ;EACR,kBAAkB;AACpB;;AAEA;EACE,eAAe;EACf,4BAA4B;EAC5B,sBAAsB;AACxB;;AAEA;EACE,eAAe;EACf,0BAA0B;AAC5B;;AAEA;EACE,eAAe;EACf,4BAA4B;EAC5B,eAAe;EACf,kBAAkB;AACpB;;AAEA,cAAc;AACd;EACE,SAAS;EACT,aAAa;EACb,kBAAkB;EAClB,eAAe;EACf,gBAAgB;EAChB,cAAc;EACd,mBAAmB;EACnB,cAAc;EACd,sBAAsB;EACtB,iBAAiB;EACjB,qBAAqB;EACrB,sBAAsB;AACxB;;AAEA,eAAe;AACf;EACE,oBAAoB;EACpB,mBAAmB;EACnB,QAAQ;EACR,iBAAiB;EACjB,+BAA+B;EAC/B,uCAAuC;EACvC,kBAAkB;EAClB,eAAe;EACf,kBAAkB;EAClB,qBAAqB;EACrB,gBAAgB;EAChB,4BAA4B;AAC9B;;AAEA;EACE,mDAAmD;EACnD,yBAAyB;AAC3B;;AAEA;EACE,eAAe;EACf,YAAY;AACd;;AAEA,sBAAsB;AACtB;EACE,2BAA2B;EAC3B,eAAe;EACf,aAAa;AACf\",\"sourcesContent\":[\"/* ── Markdown editor ── */\\n.textarea {\\n width: 100%;\\n min-height: 200px;\\n font-family: monospace;\\n font-size: 13px;\\n padding: 12px;\\n border: 1px solid var(--border-primary);\\n border-radius: 6px;\\n background: var(--bg-primary);\\n color: var(--text-primary);\\n resize: vertical;\\n box-sizing: border-box;\\n}\\n\\n.editActions {\\n display: flex;\\n gap: 8px;\\n margin-top: 8px;\\n}\\n\\n/* ── Issues ── */\\n.issueList {\\n display: flex;\\n flex-direction: column;\\n gap: 8px;\\n}\\n\\n.issueItem {\\n padding: 8px 12px;\\n background: var(--bg-secondary);\\n border: 1px solid var(--border-primary);\\n border-radius: 6px;\\n}\\n\\n.issueHeader {\\n display: flex;\\n align-items: center;\\n gap: 8px;\\n margin-bottom: 4px;\\n}\\n\\n.issueFile {\\n font-size: 12px;\\n color: var(--text-secondary);\\n font-family: monospace;\\n}\\n\\n.issueMessage {\\n font-size: 13px;\\n color: var(--text-primary);\\n}\\n\\n.issueFix {\\n font-size: 12px;\\n color: var(--text-secondary);\\n margin-top: 4px;\\n font-style: italic;\\n}\\n\\n/* ── Log ── */\\n.logPre {\\n margin: 0;\\n padding: 12px;\\n border-radius: 6px;\\n font-size: 13px;\\n line-height: 1.6;\\n overflow: auto;\\n background: #0d1117;\\n color: #c9d1d9;\\n font-family: monospace;\\n max-height: 400px;\\n white-space: pre-wrap;\\n word-break: break-word;\\n}\\n\\n/* ── Link ── */\\n.link {\\n display: inline-flex;\\n align-items: center;\\n gap: 6px;\\n padding: 5px 12px;\\n background: var(--bg-secondary);\\n border: 1px solid var(--border-primary);\\n border-radius: 6px;\\n font-size: 13px;\\n color: var(--link);\\n text-decoration: none;\\n font-weight: 500;\\n transition: background 0.15s;\\n}\\n\\n.link:hover {\\n background: var(--bg-tertiary, var(--bg-secondary));\\n border-color: var(--link);\\n}\\n\\n.linkArrow {\\n font-size: 11px;\\n opacity: 0.6;\\n}\\n\\n/* ── Empty state ── */\\n.empty {\\n color: var(--text-tertiary);\\n font-size: 13px;\\n padding: 12px;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport var textarea = `eKkdFRPP08w0ipmt`;\nexport var editActions = `xlFaIxn8H1U2vmZd`;\nexport var issueList = `EflSZ182vBIy0S2M`;\nexport var issueItem = `pie3p6utzf8rTfUu`;\nexport var issueHeader = `Al1WXNwqfC0ju3OY`;\nexport var issueFile = `qUayT4ACFY4Pv93l`;\nexport var issueMessage = `K5oooXXvNFAN7bDb`;\nexport var issueFix = `tArqFztlCu4cPnh5`;\nexport var logPre = `xRIfIRB1FQYzXPeI`;\nexport var link = `Fdjb7OQrUoEC9TE7`;\nexport var linkArrow = `MPGw8m2NoAVGUlis`;\nexport var empty = `CQMnm5XuOUksgiz3`;\nexport default ___CSS_LOADER_EXPORT___;\n","\"use strict\";\n\n/*\n MIT License http://www.opensource.org/licenses/mit-license.php\n Author Tobias Koppers @sokra\n*/\nmodule.exports = function (cssWithMappingToString) {\n var list = [];\n\n // return the list of modules as css string\n list.toString = function toString() {\n return this.map(function (item) {\n var content = \"\";\n var needLayer = typeof item[5] !== \"undefined\";\n if (item[4]) {\n content += \"@supports (\".concat(item[4], \") {\");\n }\n if (item[2]) {\n content += \"@media \".concat(item[2], \" {\");\n }\n if (needLayer) {\n content += \"@layer\".concat(item[5].length > 0 ? \" \".concat(item[5]) : \"\", \" {\");\n }\n content += cssWithMappingToString(item);\n if (needLayer) {\n content += \"}\";\n }\n if (item[2]) {\n content += \"}\";\n }\n if (item[4]) {\n content += \"}\";\n }\n return content;\n }).join(\"\");\n };\n\n // import a list of modules into the list\n list.i = function i(modules, media, dedupe, supports, layer) {\n if (typeof modules === \"string\") {\n modules = [[null, modules, undefined]];\n }\n var alreadyImportedModules = {};\n if (dedupe) {\n for (var k = 0; k < this.length; k++) {\n var id = this[k][0];\n if (id != null) {\n alreadyImportedModules[id] = true;\n }\n }\n }\n for (var _k = 0; _k < modules.length; _k++) {\n var item = [].concat(modules[_k]);\n if (dedupe && alreadyImportedModules[item[0]]) {\n continue;\n }\n if (typeof layer !== \"undefined\") {\n if (typeof item[5] === \"undefined\") {\n item[5] = layer;\n } else {\n item[1] = \"@layer\".concat(item[5].length > 0 ? \" \".concat(item[5]) : \"\", \" {\").concat(item[1], \"}\");\n item[5] = layer;\n }\n }\n if (media) {\n if (!item[2]) {\n item[2] = media;\n } else {\n item[1] = \"@media \".concat(item[2], \" {\").concat(item[1], \"}\");\n item[2] = media;\n }\n }\n if (supports) {\n if (!item[4]) {\n item[4] = \"\".concat(supports);\n } else {\n item[1] = \"@supports (\".concat(item[4], \") {\").concat(item[1], \"}\");\n item[4] = supports;\n }\n }\n list.push(item);\n }\n };\n return list;\n};","\"use strict\";\n\nmodule.exports = function (item) {\n var content = item[1];\n var cssMapping = item[3];\n if (!cssMapping) {\n return content;\n }\n if (typeof btoa === \"function\") {\n var base64 = btoa(unescape(encodeURIComponent(JSON.stringify(cssMapping))));\n var data = \"sourceMappingURL=data:application/json;charset=utf-8;base64,\".concat(base64);\n var sourceMapping = \"/*# \".concat(data, \" */\");\n return [content].concat([sourceMapping]).join(\"\\n\");\n }\n return [content].join(\"\\n\");\n};","\"use strict\";\n\nvar stylesInDOM = [];\nfunction getIndexByIdentifier(identifier) {\n var result = -1;\n for (var i = 0; i < stylesInDOM.length; i++) {\n if (stylesInDOM[i].identifier === identifier) {\n result = i;\n break;\n }\n }\n return result;\n}\nfunction modulesToDom(list, options) {\n var idCountMap = {};\n var identifiers = [];\n for (var i = 0; i < list.length; i++) {\n var item = list[i];\n var id = options.base ? item[0] + options.base : item[0];\n var count = idCountMap[id] || 0;\n var identifier = \"\".concat(id, \" \").concat(count);\n idCountMap[id] = count + 1;\n var indexByIdentifier = getIndexByIdentifier(identifier);\n var obj = {\n css: item[1],\n media: item[2],\n sourceMap: item[3],\n supports: item[4],\n layer: item[5]\n };\n if (indexByIdentifier !== -1) {\n stylesInDOM[indexByIdentifier].references++;\n stylesInDOM[indexByIdentifier].updater(obj);\n } else {\n var updater = addElementStyle(obj, options);\n options.byIndex = i;\n stylesInDOM.splice(i, 0, {\n identifier: identifier,\n updater: updater,\n references: 1\n });\n }\n identifiers.push(identifier);\n }\n return identifiers;\n}\nfunction addElementStyle(obj, options) {\n var api = options.domAPI(options);\n api.update(obj);\n var updater = function updater(newObj) {\n if (newObj) {\n if (newObj.css === obj.css && newObj.media === obj.media && newObj.sourceMap === obj.sourceMap && newObj.supports === obj.supports && newObj.layer === obj.layer) {\n return;\n }\n api.update(obj = newObj);\n } else {\n api.remove();\n }\n };\n return updater;\n}\nmodule.exports = function (list, options) {\n options = options || {};\n list = list || [];\n var lastIdentifiers = modulesToDom(list, options);\n return function update(newList) {\n newList = newList || [];\n for (var i = 0; i < lastIdentifiers.length; i++) {\n var identifier = lastIdentifiers[i];\n var index = getIndexByIdentifier(identifier);\n stylesInDOM[index].references--;\n }\n var newLastIdentifiers = modulesToDom(newList, options);\n for (var _i = 0; _i < lastIdentifiers.length; _i++) {\n var _identifier = lastIdentifiers[_i];\n var _index = getIndexByIdentifier(_identifier);\n if (stylesInDOM[_index].references === 0) {\n stylesInDOM[_index].updater();\n stylesInDOM.splice(_index, 1);\n }\n }\n lastIdentifiers = newLastIdentifiers;\n };\n};","\"use strict\";\n\nvar memo = {};\n\n/* istanbul ignore next */\nfunction getTarget(target) {\n if (typeof memo[target] === \"undefined\") {\n var styleTarget = document.querySelector(target);\n\n // Special case to return head of iframe instead of iframe itself\n if (window.HTMLIFrameElement && styleTarget instanceof window.HTMLIFrameElement) {\n try {\n // This will throw an exception if access to iframe is blocked\n // due to cross-origin restrictions\n styleTarget = styleTarget.contentDocument.head;\n } catch (e) {\n // istanbul ignore next\n styleTarget = null;\n }\n }\n memo[target] = styleTarget;\n }\n return memo[target];\n}\n\n/* istanbul ignore next */\nfunction insertBySelector(insert, style) {\n var target = getTarget(insert);\n if (!target) {\n throw new Error(\"Couldn't find a style target. This probably means that the value for the 'insert' parameter is invalid.\");\n }\n target.appendChild(style);\n}\nmodule.exports = insertBySelector;","\"use strict\";\n\n/* istanbul ignore next */\nfunction insertStyleElement(options) {\n var element = document.createElement(\"style\");\n options.setAttributes(element, options.attributes);\n options.insert(element, options.options);\n return element;\n}\nmodule.exports = insertStyleElement;","\"use strict\";\n\n/* istanbul ignore next */\nfunction setAttributesWithoutAttributes(styleElement) {\n var nonce = typeof __webpack_nonce__ !== \"undefined\" ? __webpack_nonce__ : null;\n if (nonce) {\n styleElement.setAttribute(\"nonce\", nonce);\n }\n}\nmodule.exports = setAttributesWithoutAttributes;","\"use strict\";\n\n/* istanbul ignore next */\nfunction apply(styleElement, options, obj) {\n var css = \"\";\n if (obj.supports) {\n css += \"@supports (\".concat(obj.supports, \") {\");\n }\n if (obj.media) {\n css += \"@media \".concat(obj.media, \" {\");\n }\n var needLayer = typeof obj.layer !== \"undefined\";\n if (needLayer) {\n css += \"@layer\".concat(obj.layer.length > 0 ? \" \".concat(obj.layer) : \"\", \" {\");\n }\n css += obj.css;\n if (needLayer) {\n css += \"}\";\n }\n if (obj.media) {\n css += \"}\";\n }\n if (obj.supports) {\n css += \"}\";\n }\n var sourceMap = obj.sourceMap;\n if (sourceMap && typeof btoa !== \"undefined\") {\n css += \"\\n/*# sourceMappingURL=data:application/json;base64,\".concat(btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap)))), \" */\");\n }\n\n // For old IE\n /* istanbul ignore if */\n options.styleTagTransform(css, styleElement, options.options);\n}\nfunction removeStyleElement(styleElement) {\n // istanbul ignore if\n if (styleElement.parentNode === null) {\n return false;\n }\n styleElement.parentNode.removeChild(styleElement);\n}\n\n/* istanbul ignore next */\nfunction domAPI(options) {\n if (typeof document === \"undefined\") {\n return {\n update: function update() {},\n remove: function remove() {}\n };\n }\n var styleElement = options.insertStyleElement(options);\n return {\n update: function update(obj) {\n apply(styleElement, options, obj);\n },\n remove: function remove() {\n removeStyleElement(styleElement);\n }\n };\n}\nmodule.exports = domAPI;","\"use strict\";\n\n/* istanbul ignore next */\nfunction styleTagTransform(css, styleElement) {\n if (styleElement.styleSheet) {\n styleElement.styleSheet.cssText = css;\n } else {\n while (styleElement.firstChild) {\n styleElement.removeChild(styleElement.firstChild);\n }\n styleElement.appendChild(document.createTextNode(css));\n }\n}\nmodule.exports = styleTagTransform;","import type { SSEConnectionStatus } from '@kb-labs/sdk/studio'\n\ninterface ConnectionBadgeProps {\n status: SSEConnectionStatus;\n lastEventAt?: Date;\n}\n\nconst DOT_STYLE: React.CSSProperties = {\n display: 'inline-block',\n width: 7,\n height: 7,\n borderRadius: '50%',\n marginRight: 5,\n flexShrink: 0,\n}\n\nconst CONTAINER: React.CSSProperties = {\n display: 'inline-flex',\n alignItems: 'center',\n fontSize: 12,\n fontWeight: 500,\n cursor: 'default',\n userSelect: 'none',\n}\n\nexport function ConnectionBadge({ status, lastEventAt }: ConnectionBadgeProps) {\n if (status === 'closed') {return null}\n\n const tooltip = lastEventAt\n ? `Last update: ${Math.round((Date.now() - lastEventAt.getTime()) / 1000)}s ago`\n : undefined\n\n if (status === 'live') {\n return (\n <span style={{ ...CONTAINER, color: 'var(--color-success, #3fb950)' }} title={tooltip}>\n <span\n style={{\n ...DOT_STYLE,\n background: 'var(--color-success, #3fb950)',\n boxShadow: '0 0 0 0 rgba(63,185,80,0.4)',\n animation: 'kb-sse-pulse 2s ease-in-out infinite',\n }}\n />\n Live\n <style>{`\n @keyframes kb-sse-pulse {\n 0% { box-shadow: 0 0 0 0 rgba(63,185,80,0.5); }\n 70% { box-shadow: 0 0 0 5px rgba(63,185,80,0); }\n 100% { box-shadow: 0 0 0 0 rgba(63,185,80,0); }\n }\n `}</style>\n </span>\n )\n }\n\n if (status === 'reconnecting') {\n return (\n <span style={{ ...CONTAINER, color: 'var(--color-warning, #d29922)' }} title=\"Reconnecting to event stream…\">\n <span style={{ ...DOT_STYLE, background: 'var(--color-warning, #d29922)', opacity: 0.9 }} />\n Reconnecting…\n </span>\n )\n }\n\n // connecting\n return (\n <span style={{ ...CONTAINER, color: 'var(--text-tertiary, #8b949e)' }} title=\"Connecting to event stream…\">\n <span style={{ ...DOT_STYLE, background: 'var(--text-tertiary, #8b949e)' }} />\n Connecting…\n </span>\n )\n}\n","import { useState } from 'react'\nimport {\n UIModal,\n UIButton,\n UIAlert,\n UITypographyText,\n UITypographyParagraph,\n UITitle,\n UIInputTextArea,\n} from '@kb-labs/sdk/studio'\nimport type { StepRun } from '@kb-labs/workflow-contracts'\n\nconst Text = UITypographyText\nconst Paragraph = UITypographyParagraph\nconst Title = UITitle\nconst TextArea = UIInputTextArea\n\ninterface ApprovalModalProps {\n step: StepRun | null\n runId: string\n open: boolean\n onClose: () => void\n onResolve: (action: 'approve' | 'reject', comment?: string) => Promise<void>\n isLoading?: boolean\n error?: Error | null\n}\n\nexport function ApprovalModal({\n step,\n runId: _runId,\n open,\n onClose,\n onResolve,\n isLoading,\n error,\n}: ApprovalModalProps) {\n const [comment, setComment] = useState('')\n const [pendingAction, setPendingAction] = useState<'approve' | 'reject' | null>(null)\n\n const context = (step?.spec?.with ?? {}) as Record<string, unknown>\n const title = typeof context.title === 'string' ? context.title : step?.name ?? 'Approval Required'\n const instructions = typeof context.instructions === 'string' ? context.instructions : null\n const contextData = typeof context.context === 'object' && context.context !== null\n ? context.context as Record<string, unknown>\n : null\n\n const handleResolve = async (action: 'approve' | 'reject') => {\n setPendingAction(action)\n try {\n await onResolve(action, comment.trim() || undefined)\n setComment('')\n setPendingAction(null)\n } catch {\n setPendingAction(null)\n }\n }\n\n return (\n <UIModal\n open={open}\n title={title}\n width=\"large\"\n maskClosable={false}\n onCancel={onClose}\n footer={null}\n >\n {instructions && (\n <Paragraph style={{ marginBottom: 16 }}>\n <Text type=\"secondary\">{instructions}</Text>\n </Paragraph>\n )}\n\n {contextData && Object.keys(contextData).length > 0 && (\n <div style={{ marginBottom: 16 }}>\n <Title level={5} style={{ marginBottom: 8 }}>Context</Title>\n <div style={{ display: 'flex', flexDirection: 'column', gap: 6 }}>\n {Object.entries(contextData).map(([key, value]) => (\n <div key={key} style={{ display: 'flex', gap: 8 }}>\n <Text strong style={{ minWidth: 100, textTransform: 'capitalize' }}>\n {key.replace(/([A-Z])/g, ' $1').trim()}:\n </Text>\n <Text>{String(value ?? '—')}</Text>\n </div>\n ))}\n </div>\n </div>\n )}\n\n {error && (\n <UIAlert\n variant=\"error\"\n message={error.message}\n style={{ marginBottom: 16 }}\n showIcon\n />\n )}\n\n <div style={{ marginBottom: 16 }}>\n <Title level={5} style={{ marginBottom: 8 }}>Comment (optional)</Title>\n <TextArea\n rows={3}\n placeholder=\"Add a comment for the record...\"\n value={comment}\n onChange={(e) => setComment(e.target.value)}\n disabled={isLoading}\n />\n </div>\n\n <div style={{ display: 'flex', gap: 8, justifyContent: 'flex-end' }}>\n <UIButton\n onClick={onClose}\n disabled={isLoading}\n >\n Cancel\n </UIButton>\n <UIButton\n danger\n onClick={() => void handleResolve('reject')}\n loading={isLoading && pendingAction === 'reject'}\n disabled={isLoading && pendingAction !== 'reject'}\n >\n Reject\n </UIButton>\n <UIButton\n variant=\"primary\"\n onClick={() => void handleResolve('approve')}\n loading={isLoading && pendingAction === 'approve'}\n disabled={isLoading && pendingAction !== 'approve'}\n >\n Approve\n </UIButton>\n </div>\n </UIModal>\n )\n}\n","/**\n * Drawer that shows step details when a node is clicked in PipelineView.\n * Reuses the existing StepPanel logic inline to avoid circular imports.\n */\n\nimport { useMemo, useRef, useEffect } from 'react'\nimport { UIDrawer, UIButton, UITabs, UIJsonViewer, UITypographyText } from '@kb-labs/sdk/studio'\nimport type { UITabItem } from '@kb-labs/sdk/studio'\nimport type { StepRun } from '@kb-labs/workflow-contracts'\nimport type { WorkflowLogEvent } from '@kb-labs/workflow-contracts/rest-api'\n\nconst Text = UITypographyText\n\nconst STATUS_LABEL: Record<string, string> = {\n queued: 'Queued',\n running: 'Running...',\n success: 'Completed',\n failed: 'Failed',\n cancelled: 'Cancelled',\n skipped: 'Skipped',\n waiting_approval: 'Waiting for your decision',\n}\n\nconst STATUS_COLOR: Record<string, string> = {\n queued: 'var(--text-tertiary)',\n running: 'var(--warning)',\n success: 'var(--success)',\n failed: 'var(--error)',\n cancelled: 'var(--text-tertiary)',\n skipped: 'var(--text-tertiary)',\n waiting_approval: 'var(--info)',\n}\n\nfunction formatDuration(ms?: number): string | null {\n if (!ms) {return null}\n if (ms < 1000) {return `${ms}ms`}\n const s = ms / 1000\n if (s < 60) {return `${s.toFixed(1)}s`}\n return `${Math.floor(s / 60)}m ${Math.floor(s % 60)}s`\n}\n\ninterface LogLine { time: string; text: string; stream?: 'stdout' | 'stderr' }\n\n// Strip ANSI escape codes from text\n \nconst ANSI_RE = /\\x1b\\[[0-9;]*[A-Za-z]|\\x1b\\].*?\\x07/g\nfunction stripAnsi(s: string): string { return s.replace(ANSI_RE, '') }\n\nfunction extractLogLines(ev: WorkflowLogEvent): LogLine[] {\n const time = ev.timestamp ? new Date(ev.timestamp).toLocaleTimeString('en-US', { hour12: false }) : ''\n const p = ev.payload as Record<string, unknown> | undefined\n if (!p) {return []}\n\n // Live log.appended events (real-time streaming)\n if (ev.type === 'log.appended') {\n const msg = typeof p.message === 'string' ? stripAnsi(p.message) : ''\n if (!msg) {return []}\n const stream = (p.stream as 'stdout' | 'stderr') ?? 'stdout'\n return [{ time, text: msg, stream }]\n }\n\n const stdout = (p.outputs as Record<string, unknown> | undefined)?.stdout ?? p.stdout\n if (typeof stdout === 'string' && stdout.trim()) {\n return stripAnsi(stdout).trim().split('\\n').map(text => ({ time, text, stream: 'stdout' as const }))\n }\n const stderr = (p.outputs as Record<string, unknown> | undefined)?.stderr ?? p.stderr\n if (typeof stderr === 'string' && stderr.trim()) {\n return stripAnsi(stderr).trim().split('\\n').map(text => ({ time, text, stream: 'stderr' as const }))\n }\n if (typeof p.error === 'string') {return [{ time, text: p.error, stream: 'stderr' }]}\n if (typeof p.message === 'string') {return [{ time, text: p.message }]}\n if (typeof p.line === 'string') {return [{ time, text: p.line }]}\n if (typeof p.text === 'string') {return [{ time, text: p.text }]}\n return []\n}\n\nconst LOG_SKIP_KEYS = new Set(['stdout', 'stderr', 'exitCode', 'ok'])\n\ninterface StepDetailDrawerProps {\n step: StepRun | null\n events: WorkflowLogEvent[]\n open: boolean\n onClose: () => void\n onApprove?: () => void\n}\n\nexport function StepDetailDrawer({ step, events, open, onClose, onApprove }: StepDetailDrawerProps) {\n const sseLines = useMemo(() => events.flatMap(extractLogLines), [events])\n const logRef = useRef<HTMLPreElement>(null)\n\n // Auto-scroll to bottom when new lines arrive\n useEffect(() => {\n const el = logRef.current\n if (!el) {return}\n const isNearBottom = el.scrollHeight - el.scrollTop - el.clientHeight < 80\n if (isNearBottom) {\n el.scrollTop = el.scrollHeight\n }\n }, [sseLines.length])\n\n const pollingLines = useMemo<LogLine[]>(() => {\n if (!step?.outputs || sseLines.length > 0) {return []}\n const lines: LogLine[] = []\n const { stdout, stderr } = step.outputs as { stdout?: unknown; stderr?: unknown }\n if (typeof stdout === 'string' && stdout.trim()) {\n stdout.trim().split('\\n').forEach(text => lines.push({ time: '', text }))\n }\n if (typeof stderr === 'string' && stderr.trim()) {\n stderr.trim().split('\\n').forEach(text => lines.push({ time: '', text }))\n }\n if (lines.length === 0) {\n const keys = Object.keys(step.outputs).filter(k => !LOG_SKIP_KEYS.has(k))\n if (keys.length > 0) {lines.push({ time: '', text: `Output: { ${keys.join(', ')} }` })}\n }\n return lines\n }, [step?.outputs, sseLines.length])\n\n const lines = sseLines.length > 0 ? sseLines : pollingLines\n\n const dataOutputs = useMemo(() => {\n if (!step?.outputs) {return null}\n const filtered: Record<string, unknown> = {}\n for (const [k, v] of Object.entries(step.outputs)) {\n if (!LOG_SKIP_KEYS.has(k)) {filtered[k] = v}\n }\n return Object.keys(filtered).length > 0 ? filtered : null\n }, [step?.outputs])\n\n const hasInputs = step?.spec?.with != null && Object.keys(step.spec.with).length > 0\n const hasError = step?.error != null\n const hasData = dataOutputs !== null\n\n const logContent = (\n <div style={{ fontFamily: 'monospace', fontSize: 12 }}>\n {lines.length > 0 ? (\n <pre ref={logRef} style={{\n margin: 0,\n padding: '8px 12px',\n background: '#0d1117',\n color: '#c9d1d9',\n borderRadius: 4,\n overflow: 'auto',\n maxHeight: 500,\n whiteSpace: 'pre-wrap',\n wordBreak: 'break-word',\n lineHeight: 1.6,\n }}>\n {lines.map((l, i) => (\n <span key={i}>\n {l.time && <span style={{ color: 'var(--text-tertiary)', userSelect: 'none', marginRight: 12 }}>{l.time}</span>}\n <span style={l.stream === 'stderr' ? { color: '#f85149' } : undefined}>{l.text}</span>{'\\n'}\n </span>\n ))}\n </pre>\n ) : (\n <Text type=\"secondary\" style={{ fontSize: 12 }}>\n {step?.status === 'running' ? 'Waiting for output...' :\n step?.status === 'queued' ? 'Not started yet' :\n step?.status === 'waiting_approval' ? 'Waiting for approval' :\n 'No output'}\n </Text>\n )}\n </div>\n )\n\n const tabItems: UITabItem[] = [\n { key: 'log', label: 'Log', children: logContent },\n ]\n if (hasData) {tabItems.push({ key: 'data', label: 'Data', children: <UIJsonViewer data={dataOutputs} /> })}\n if (hasInputs) {tabItems.push({ key: 'inputs', label: 'Inputs', children: <UIJsonViewer data={step!.spec!.with} /> })}\n if (hasError) {tabItems.push({ key: 'error', label: 'Error', children: <UIJsonViewer data={step!.error} /> })}\n\n const statusColor = STATUS_COLOR[step?.status ?? 'queued']\n const duration = formatDuration(step?.durationMs)\n\n return (\n <UIDrawer\n open={open}\n onClose={onClose}\n title={\n <div style={{ display: 'flex', flexDirection: 'column', gap: 2 }}>\n <span style={{ fontSize: 14, fontWeight: 600 }}>{step?.name ?? ''}</span>\n <div style={{ display: 'flex', gap: 12, alignItems: 'center' }}>\n <span style={{ fontSize: 12, color: statusColor, fontWeight: 600 }}>\n {STATUS_LABEL[step?.status ?? 'queued']}\n </span>\n {duration && (\n <span style={{ fontSize: 12, color: 'var(--text-tertiary)' }}>\n {duration}\n </span>\n )}\n </div>\n </div>\n }\n placement=\"right\"\n width={520}\n footer={\n step?.status === 'waiting_approval' && onApprove ? (\n <div style={{ display: 'flex', justifyContent: 'flex-end' }}>\n <UIButton variant=\"primary\" onClick={onApprove}>\n Review &amp; Decide\n </UIButton>\n </div>\n ) : null\n }\n >\n {step && (\n tabItems.length > 1\n ? <UITabs items={tabItems} size=\"small\" defaultActiveKey=\"log\" />\n : logContent\n )}\n </UIDrawer>\n )\n}\n","/**\n * Pipeline visualization.\n * Steps are rows, not cards — clean and scannable.\n * Gate rework: shows decision reason + feedback inline below gate row.\n * Phases collapse when done, animate open/close.\n */\n\nimport { useState, useRef, useEffect, useCallback } from 'react'\nimport type { WorkflowRun, StepRun } from '@kb-labs/workflow-contracts'\nimport type { WorkflowLogEvent } from '@kb-labs/workflow-contracts/rest-api'\nimport { usePipelineModel } from '../../hooks/use-pipeline-graph'\nimport type { PipelineStep, PipelinePhase } from '../../hooks/use-pipeline-graph'\nimport { StepDetailDrawer } from './StepDetailDrawer'\nimport { useElapsedTimer } from '@kb-labs/sdk/studio'\n\n// ─── CSS ──────────────────────────────────────────────────────────────────────\n\nconst ANIM_CSS = `\n@keyframes kb-spin { 0% { transform: rotate(0deg) } 100% { transform: rotate(360deg) } }\n@keyframes kb-shimmer { 0% { left: -60% } 100% { left: 120% } }\n@keyframes kb-step-done { 0% { transform: scale(0.6); opacity: 0 } 60% { transform: scale(1.2) } 100% { transform: scale(1); opacity: 1 } }\n@keyframes kb-step-fail { 0%,100% { transform: translateX(0) } 20%,60% { transform: translateX(-3px) } 40%,80% { transform: translateX(3px) } }\n@keyframes kb-step-in { 0% { opacity: 0; transform: translateY(-4px) } 100% { opacity: 1; transform: translateY(0) } }\n`\nlet injected = false\nfunction injectCss() {\n if (injected || typeof document === 'undefined') {return}\n injected = true\n const s = document.createElement('style')\n s.textContent = ANIM_CSS\n document.head.appendChild(s)\n}\n\n// ─── Reduced motion ───────────────────────────────────────────────────────────\n\nfunction useReducedMotion(): boolean {\n const [reduced, setReduced] = useState(() =>\n typeof window !== 'undefined'\n ? window.matchMedia('(prefers-reduced-motion: reduce)').matches\n : false,\n )\n useEffect(() => {\n const mq = window.matchMedia('(prefers-reduced-motion: reduce)')\n const handler = (e: MediaQueryListEvent) => setReduced(e.matches)\n mq.addEventListener('change', handler)\n return () => mq.removeEventListener('change', handler)\n }, [])\n return reduced\n}\n\n// ─── Status ───────────────────────────────────────────────────────────────────\n\nconst TERMINAL_STATUSES = new Set(['success', 'failed', 'cancelled', 'skipped'])\n\nconst S_COLOR: Record<string, string> = {\n queued: 'var(--text-tertiary)',\n running: 'var(--warning)',\n success: 'var(--success)',\n failed: 'var(--error)',\n cancelled: 'var(--text-tertiary)',\n skipped: 'var(--text-tertiary)',\n waiting_approval: 'var(--info)',\n}\n\nconst S_LABEL: Record<string, string> = {\n queued: 'Queued',\n running: 'Running',\n success: 'Done',\n failed: 'Failed',\n cancelled: 'Cancelled',\n skipped: 'Skipped',\n waiting_approval: 'Review',\n}\n\nfunction StatusDot({ status }: { status: string }) {\n injectCss()\n const color = S_COLOR[status] ?? 'var(--text-tertiary)'\n if (status === 'running') {\n return <span style={{\n display: 'inline-block', width: 8, height: 8, flexShrink: 0,\n border: `2px solid ${color}`, borderTopColor: 'transparent',\n borderRadius: '50%', animation: 'kb-spin 0.8s linear infinite',\n }} />\n }\n const filled = status === 'success' || status === 'failed' || status === 'waiting_approval'\n return <span style={{\n display: 'inline-block', width: 8, height: 8, flexShrink: 0,\n borderRadius: '50%',\n background: filled ? color : 'transparent',\n border: `2px solid ${color}`,\n }} />\n}\n\nfunction formatDuration(ms?: number) {\n if (!ms) {return null}\n if (ms < 1000) {return `${ms}ms`}\n const s = ms / 1000\n if (s < 60) {return `${s.toFixed(1)}s`}\n return `${Math.floor(s / 60)}m ${Math.floor(s % 60)}s`\n}\n\n// ─── Phase colors ─────────────────────────────────────────────────────────────\n\nconst PHASE_COLOR: Record<string, string> = {\n Planning: 'var(--info)',\n Implementation: 'var(--success)',\n Quality: 'var(--warning)',\n Delivery: 'var(--link)',\n}\n\n// ─── Gate decision banner ─────────────────────────────────────────────────────\n\ninterface GateOutputs {\n decisionValue?: unknown\n action?: 'continue' | 'fail' | 'restart'\n restartFrom?: string\n iteration?: number\n maxIterations?: number\n maxIterationsReached?: boolean\n}\n\nfunction GateDecisionBanner({ stepRun, targetStepName }: { stepRun: StepRun; targetStepName?: string }) {\n const outputs = stepRun.outputs as GateOutputs | undefined\n const error = stepRun.error as Record<string, unknown> | undefined | null\n\n // Show banner if: outputs have non-continue action, OR step failed (even without outputs)\n const action = outputs?.action ?? (stepRun.status === 'failed' ? 'fail' : undefined)\n const decision = outputs?.decisionValue\n const iteration = outputs?.iteration\n\n if (!action || action === 'continue') {return null}\n\n const isRestart = action === 'restart'\n\n const color = isRestart ? 'var(--warning)' : 'var(--error)'\n const bgColor = isRestart\n ? 'color-mix(in srgb, var(--warning) 6%, var(--bg-secondary))'\n : 'color-mix(in srgb, var(--error) 6%, var(--bg-secondary))'\n\n const errorMsg = typeof error?.message === 'string' ? error.message : null\n const maxIterReached = outputs?.maxIterationsReached\n ?? (errorMsg?.toLowerCase().includes('max iteration') ?? false)\n\n return (\n <div style={{\n margin: '2px 0 4px 18px',\n padding: '8px 12px',\n background: bgColor,\n border: `1px solid color-mix(in srgb, ${color} 25%, transparent)`,\n borderRadius: 5,\n fontSize: 12,\n lineHeight: 1.6,\n }}>\n {/* Header line */}\n <div style={{ display: 'flex', alignItems: 'center', gap: 6, marginBottom: 4 }}>\n <span style={{ color, fontWeight: 600 }}>\n {isRestart ? '↩ Returned for rework' : '✗ Gate failed'}\n </span>\n {iteration !== undefined && (\n <span style={{\n color: 'var(--text-tertiary)',\n background: 'var(--bg-tertiary)',\n padding: '0 5px', borderRadius: 4, fontSize: 11,\n }}>\n iteration {iteration + 1}\n </span>\n )}\n </div>\n\n {/* Decision value */}\n {decision !== undefined && decision !== null && (\n <div style={{ color: 'var(--text-secondary)' }}>\n <span style={{ color: 'var(--text-tertiary)' }}>Decision: </span>\n <code style={{\n fontSize: 11,\n background: 'var(--bg-tertiary)',\n padding: '0 4px', borderRadius: 3,\n color: color,\n fontFamily: 'monospace',\n }}>\n {String(decision)}\n </code>\n </div>\n )}\n\n {/* Restart target */}\n {isRestart && targetStepName && (\n <div style={{ color: 'var(--text-secondary)', marginTop: 2 }}>\n <span style={{ color: 'var(--text-tertiary)' }}>Restarting from: </span>\n <span style={{ fontWeight: 500 }}>{targetStepName}</span>\n </div>\n )}\n\n {/* Max iterations reached */}\n {maxIterReached && (\n <div style={{ color: 'var(--error)', marginTop: 2 }}>\n Max iterations reached — pipeline stopped\n </div>\n )}\n\n {/* Error message (if not max iter) */}\n {errorMsg && !maxIterReached && (\n <div style={{ color: 'var(--text-secondary)', marginTop: 2, fontStyle: 'italic' }}>\n {errorMsg}\n </div>\n )}\n </div>\n )\n}\n\n// ─── StepRow ─────────────────────────────────────────────────────────────────\n\ninterface StepRowProps {\n step: PipelineStep\n isReworkGate: boolean\n isReworkTarget: boolean\n reworkActive: boolean\n targetStepName?: string\n onClick: () => void\n rowRef?: (el: HTMLDivElement | null) => void\n reducedMotion?: boolean\n}\n\nfunction StepRow({ step, isReworkGate, isReworkTarget, reworkActive, targetStepName, onClick, rowRef, reducedMotion }: StepRowProps) {\n const { stepRun, stepType, iteration } = step\n const status = stepRun.status\n const isWaiting = status === 'waiting_approval'\n const isFailed = status === 'failed'\n const isRunning = status === 'running'\n const isQueued = status === 'queued'\n const isSuccess = status === 'success'\n const isSkipped = status === 'skipped' || status === 'cancelled'\n const isApproval = stepType === 'approval'\n const isGate = stepType === 'gate'\n const elapsed = useElapsedTimer(isRunning ? stepRun.startedAt : undefined)\n\n // Gate outputs for restart detection\n const gateOutputs = isGate ? stepRun.outputs as GateOutputs | undefined : undefined\n const gateAction = gateOutputs?.action\n const showBanner = isGate && (gateAction === 'restart' || gateAction === 'fail' || isFailed)\n\n const highlight = isWaiting\n ? { bg: 'color-mix(in srgb, var(--info) 5%, var(--bg-secondary))', border: 'var(--info)' }\n : isFailed\n ? { bg: 'color-mix(in srgb, var(--error) 5%, var(--bg-secondary))', border: 'var(--error)' }\n : isReworkTarget && reworkActive\n ? { bg: 'color-mix(in srgb, var(--warning) 5%, var(--bg-secondary))', border: 'var(--warning)' }\n : null\n\n return (\n <>\n <div\n ref={rowRef}\n onClick={onClick}\n style={{\n display: 'flex',\n alignItems: 'flex-start',\n gap: 10,\n padding: highlight ? '10px 14px' : '7px 14px',\n marginLeft: isApproval ? 28 : 0,\n borderRadius: 6,\n background: highlight?.bg ?? 'transparent',\n border: highlight ? `1px solid ${highlight.border}` : '1px solid transparent',\n cursor: 'pointer',\n position: 'relative',\n overflow: 'hidden',\n transition: reducedMotion ? undefined : 'background 0.1s',\n animation: reducedMotion ? undefined : 'kb-step-in 180ms ease',\n opacity: isSkipped ? 0.65 : 1,\n }}\n onMouseEnter={e => {\n if (!highlight) {(e.currentTarget as HTMLDivElement).style.background = 'var(--bg-hover)'}\n }}\n onMouseLeave={e => {\n if (!highlight) {(e.currentTarget as HTMLDivElement).style.background = 'transparent'}\n }}\n >\n {isRunning && (\n <div style={{\n position: 'absolute', top: 0, left: 0, height: 2, width: '45%',\n background: 'linear-gradient(90deg, transparent, var(--warning), transparent)',\n animation: 'kb-shimmer 1.4s ease-in-out infinite',\n }} />\n )}\n\n {/* Align dot with first line of text */}\n <div style={{ paddingTop: 3, flexShrink: 0 }}>\n <StatusDot status={status} />\n </div>\n\n {/* Name + optional second line (error preview / skip reason) */}\n <div style={{ flex: 1, minWidth: 0 }}>\n <span style={{\n fontSize: 14,\n color: isQueued || isSkipped ? 'var(--text-tertiary)' : 'var(--text-primary)',\n fontWeight: isWaiting || isFailed ? 500 : 400,\n fontStyle: isGate ? 'italic' : 'normal',\n }}>\n {isApproval && <span style={{ color: 'var(--info)', marginRight: 5, fontStyle: 'normal', fontSize: 12 }}>⏸</span>}\n {stepRun.name}\n </span>\n\n {isFailed && stepRun.error?.message && (\n <span style={{\n display: 'block', fontSize: 11,\n color: 'var(--error)', opacity: 0.85,\n marginTop: 2, lineHeight: 1.4,\n whiteSpace: 'nowrap', overflow: 'hidden', textOverflow: 'ellipsis',\n }}>\n {(stepRun.error?.message?.split('\\n')?.[0] ?? '').slice(0, 90)}\n </span>\n )}\n\n {isSkipped && stepRun.skipReason && (\n <span style={{\n display: 'block', fontSize: 11,\n color: 'var(--text-tertiary)', fontStyle: 'italic',\n marginTop: 2,\n }}>\n {stepRun.skipReason}\n </span>\n )}\n </div>\n\n <div style={{ display: 'flex', alignItems: 'center', gap: 10, flexShrink: 0, paddingTop: 2 }}>\n {isReworkGate && iteration && (\n <span style={{\n fontSize: 11, fontWeight: 600, color: 'var(--warning)',\n background: 'color-mix(in srgb, var(--warning) 12%, transparent)',\n padding: '1px 7px', borderRadius: 8,\n }}>\n ↩ {iteration.current}/{iteration.max}\n </span>\n )}\n {/* Show elapsed timer while running, final duration when done */}\n {(isRunning && elapsed) ? (\n <span style={{ fontSize: 12, color: 'var(--text-tertiary)', fontVariantNumeric: 'tabular-nums', minWidth: 36, textAlign: 'right' }}>\n {elapsed}\n </span>\n ) : formatDuration(stepRun.durationMs) ? (\n <span style={{\n fontSize: 12, color: 'var(--text-tertiary)',\n animation: isSuccess ? 'kb-step-done 0.3s ease-out' : isFailed ? 'kb-step-fail 0.35s ease-out' : undefined,\n }}>\n {formatDuration(stepRun.durationMs)}\n </span>\n ) : null}\n {isWaiting ? (\n <span style={{\n fontSize: 12, fontWeight: 600, color: 'var(--info)',\n background: 'color-mix(in srgb, var(--info) 12%, transparent)',\n padding: '2px 9px', borderRadius: 8,\n }}>\n Review\n </span>\n ) : (\n <span style={{\n fontSize: 12,\n color: S_COLOR[status] ?? 'var(--text-tertiary)',\n minWidth: 44, textAlign: 'right',\n }}>\n {S_LABEL[status] ?? status}\n </span>\n )}\n </div>\n </div>\n\n {/* Gate decision inline — shows why it restarted and where */}\n {showBanner && (\n <GateDecisionBanner stepRun={stepRun} targetStepName={targetStepName} />\n )}\n </>\n )\n}\n\n// ─── ReworkBracket ────────────────────────────────────────────────────────────\n\nfunction ReworkBracket({\n gateEl, targetEl, containerEl, isActive,\n}: {\n gateEl: HTMLDivElement | null\n targetEl: HTMLDivElement | null\n containerEl: HTMLDivElement | null\n isActive: boolean\n}) {\n const [pos, setPos] = useState<{ top: number; height: number } | null>(null)\n useEffect(() => {\n if (!gateEl || !targetEl || !containerEl) {return}\n const measure = () => {\n const cr = containerEl.getBoundingClientRect()\n const gr = gateEl.getBoundingClientRect()\n const tr = targetEl.getBoundingClientRect()\n setPos({\n top: tr.top - cr.top + tr.height / 2,\n height: Math.max(0, gr.top - cr.top + gr.height / 2 - (tr.top - cr.top + tr.height / 2)),\n })\n }\n measure()\n const ro = new ResizeObserver(measure)\n ro.observe(containerEl)\n ro.observe(gateEl)\n ro.observe(targetEl)\n return () => ro.disconnect()\n }, [gateEl, targetEl, containerEl])\n if (!pos || pos.height < 8) {return null}\n const color = isActive ? 'var(--warning)' : 'var(--border-primary)'\n return (\n <div style={{ position: 'absolute', left: 0, top: pos.top, width: 8, height: pos.height, pointerEvents: 'none' }}>\n <svg width={8} height={pos.height} overflow=\"visible\">\n <line x1={5} y1={0} x2={5} y2={pos.height}\n stroke={color} strokeWidth={isActive ? 2 : 1.5}\n strokeDasharray={isActive ? undefined : '3 3'} />\n <polygon points=\"2,6 5,0 8,6\" fill={color} />\n </svg>\n </div>\n )\n}\n\n// ─── PhaseSection ─────────────────────────────────────────────────────────────\n\ninterface PhaseSectionProps {\n phase: PipelinePhase\n flatSteps: PipelineStep[]\n reworkLoop: { gateIndex: number; targetIndex: number; isActive: boolean } | null\n gateStep: PipelineStep | null\n targetStep: PipelineStep | null\n onStepClick: (step: StepRun) => void\n rowRefs: Map<string, HTMLDivElement>\n reducedMotion: boolean\n}\n\nfunction PhaseSection({\n phase,\n flatSteps,\n reworkLoop,\n gateStep,\n targetStep,\n onStepClick,\n rowRefs,\n reducedMotion,\n}: PhaseSectionProps) {\n const color = PHASE_COLOR[phase.label] ?? 'var(--text-tertiary)'\n\n const isAllDone = phase.steps.every(s => TERMINAL_STATUSES.has(s.stepRun.status))\n const isActive = phase.steps.some(s => s.stepRun.status === 'running' || s.stepRun.status === 'waiting_approval')\n const isPending = phase.steps.every(s => s.stepRun.status === 'queued' || (s.stepRun.status as string) === 'pending')\n const failCount = phase.steps.filter(s => s.stepRun.status === 'failed').length\n const doneCount = phase.steps.filter(s => s.stepRun.status === 'success').length\n const totalDuration = phase.steps.reduce((acc, s) => acc + (s.stepRun.durationMs ?? 0), 0)\n\n // Start open if active or not yet done; start collapsed if all done\n const [open, setOpen] = useState(!isAllDone || isActive)\n const [measuredHeight, setMeasuredHeight] = useState(0)\n const bodyRef = useRef<HTMLDivElement>(null)\n const innerRef = useRef<HTMLDivElement>(null)\n const activeRowRef = useRef<HTMLDivElement>(null)\n\n // Auto-collapse when phase finishes (500ms delay so user sees completion)\n useEffect(() => {\n if (!isAllDone) {return}\n const timer = setTimeout(() => setOpen(false), 500)\n return () => clearTimeout(timer)\n }, [isAllDone])\n\n // Keep open while active\n useEffect(() => {\n if (isActive) {setOpen(true)}\n }, [isActive])\n\n // Scroll active step into view\n useEffect(() => {\n if (isActive && activeRowRef.current) {\n activeRowRef.current.scrollIntoView({ behavior: reducedMotion ? 'instant' : 'smooth', block: 'nearest' })\n }\n }, [isActive, reducedMotion])\n\n const toggle = useCallback(() => setOpen(v => !v), [])\n\n // Track natural content height via ResizeObserver on an unconstrained inner div\n useEffect(() => {\n const el = innerRef.current\n if (!el) {return}\n const ro = new ResizeObserver(() => setMeasuredHeight(el.getBoundingClientRect().height))\n ro.observe(el)\n return () => ro.disconnect()\n }, [])\n\n const bodyHeight = measuredHeight || 2000\n const bodyStyle: React.CSSProperties = reducedMotion\n ? { display: open ? 'block' : 'none' }\n : {\n maxHeight: open ? `${bodyHeight}px` : '0px',\n opacity: open ? 1 : 0,\n overflow: 'hidden',\n transition: 'max-height 300ms ease, opacity 200ms ease',\n }\n\n const arrowStyle: React.CSSProperties = {\n fontSize: 10,\n color: 'var(--text-tertiary)',\n transition: reducedMotion ? undefined : 'transform 200ms ease',\n transform: open ? 'rotate(90deg)' : 'rotate(0deg)',\n display: 'inline-block',\n flexShrink: 0,\n }\n\n return (\n <div style={{ marginBottom: 16 }}>\n {/* Phase header — always visible, clickable */}\n <div\n onClick={toggle}\n style={{\n display: 'flex', alignItems: 'center', gap: 8,\n padding: '5px 4px',\n cursor: 'pointer',\n borderRadius: 4,\n userSelect: 'none',\n opacity: isPending ? 0.45 : 1,\n }}\n onMouseEnter={e => { (e.currentTarget as HTMLDivElement).style.background = 'var(--bg-hover)' }}\n onMouseLeave={e => { (e.currentTarget as HTMLDivElement).style.background = 'transparent' }}\n >\n {/* Arrow */}\n <span style={arrowStyle}>▶</span>\n\n {/* Color accent bar */}\n <div style={{ width: 3, height: 12, background: color, borderRadius: 2, flexShrink: 0 }} />\n\n {/* Phase label */}\n <span style={{\n fontSize: 11, fontWeight: 700,\n textTransform: 'uppercase', letterSpacing: '0.09em',\n color,\n }}>\n {phase.label}\n </span>\n\n {/* Step progress */}\n <span style={{ fontSize: 11, color: 'var(--text-tertiary)' }}>\n {doneCount}/{phase.steps.length}\n </span>\n\n {/* Failed badge */}\n {failCount > 0 && (\n <span style={{\n fontSize: 11, fontWeight: 600, color: 'var(--error)',\n background: 'color-mix(in srgb, var(--error) 12%, transparent)',\n padding: '0 5px', borderRadius: 4,\n }}>\n ✗ {failCount}\n </span>\n )}\n\n {/* Duration when all done */}\n {isAllDone && totalDuration > 0 && (\n <span style={{ fontSize: 11, color: 'var(--text-tertiary)', marginLeft: 'auto' }}>\n {formatDuration(totalDuration)}\n </span>\n )}\n\n {/* Running indicator */}\n {isActive && (\n <span style={{\n marginLeft: 'auto',\n display: 'inline-block', width: 6, height: 6, flexShrink: 0,\n border: '2px solid var(--warning)', borderTopColor: 'transparent',\n borderRadius: '50%', animation: 'kb-spin 0.8s linear infinite',\n }} />\n )}\n </div>\n\n {/* Step rows — animated */}\n <div ref={bodyRef} style={bodyStyle}>\n <div ref={innerRef} style={{\n borderLeft: `2px solid color-mix(in srgb, ${color} 25%, var(--border-primary))`,\n marginLeft: 5,\n paddingLeft: 12,\n paddingTop: 2,\n paddingBottom: 2,\n }}>\n {phase.steps.map(step => {\n const flatIdx = flatSteps.indexOf(step)\n const isGateWithLoop = reworkLoop?.gateIndex === flatIdx\n const isActiveStep = step.stepRun.status === 'running' || step.stepRun.status === 'waiting_approval'\n\n return (\n <StepRow\n key={step.stepRun.id}\n step={step}\n isReworkGate={isGateWithLoop ?? false}\n isReworkTarget={reworkLoop?.targetIndex === flatIdx}\n reworkActive={reworkLoop?.isActive ?? false}\n targetStepName={isGateWithLoop ? targetStep?.stepRun.name : undefined}\n onClick={() => onStepClick(step.stepRun)}\n rowRef={el => {\n if (el) {rowRefs.set(step.stepRun.id, el)}\n else {rowRefs.delete(step.stepRun.id)}\n if (isActiveStep) {\n activeRowRef.current = el\n }\n }}\n reducedMotion={reducedMotion}\n />\n )\n })}\n </div>\n </div>\n </div>\n )\n}\n\n// ─── PipelineView ─────────────────────────────────────────────────────────────\n\ninterface PipelineViewProps {\n run: WorkflowRun\n events: WorkflowLogEvent[]\n onApprove?: (step: StepRun) => void\n}\n\nexport function PipelineView({ run, events, onApprove }: PipelineViewProps) {\n const model = usePipelineModel(run)\n const [selected, setSelected] = useState<StepRun | null>(null)\n const containerRef = useRef<HTMLDivElement | null>(null)\n const rowRefs = useRef<Map<string, HTMLDivElement>>(new Map())\n const reducedMotion = useReducedMotion()\n\n if (!model.steps.length) {\n return <div style={{ padding: '24px 0', color: 'var(--text-tertiary)', fontSize: 14 }}>No execution data yet.</div>\n }\n\n const { reworkLoop } = model\n const gateStep = reworkLoop ? (model.steps[reworkLoop.gateIndex] ?? null) : null\n const targetStep = reworkLoop ? (model.steps[reworkLoop.targetIndex] ?? null) : null\n const stepEvents = events.filter(e => e.stepId === selected?.id)\n\n return (\n <div ref={containerRef} style={{ position: 'relative', paddingLeft: 10 }}>\n {reworkLoop && gateStep && targetStep && (\n <ReworkBracket\n gateEl={rowRefs.current.get(gateStep.stepRun.id) ?? null}\n targetEl={rowRefs.current.get(targetStep.stepRun.id) ?? null}\n containerEl={containerRef.current}\n isActive={reworkLoop.isActive}\n />\n )}\n\n {model.phases.map(phase => (\n <PhaseSection\n key={phase.label}\n phase={phase}\n flatSteps={model.steps}\n reworkLoop={reworkLoop}\n gateStep={gateStep}\n targetStep={targetStep}\n onStepClick={step => setSelected(step)}\n rowRefs={rowRefs.current}\n reducedMotion={reducedMotion}\n />\n ))}\n\n <StepDetailDrawer\n step={selected}\n events={stepEvents}\n open={selected !== null}\n onClose={() => setSelected(null)}\n onApprove={\n selected?.status === 'waiting_approval' && onApprove\n ? () => { onApprove(selected); setSelected(null) }\n : undefined\n }\n />\n </div>\n )\n}\n","import { useState } from 'react'\nimport { UIButton } from '@kb-labs/sdk/studio'\n\ninterface Props {\n data: unknown\n editable?: boolean\n onEdit?: (v: unknown) => void\n}\n\n// ── Styles ───────────────────────────────────────────────────────────────────\n\nconst S = {\n pre: 'background:#f6f8fa;border:1px solid #d0d7de;border-radius:6px;padding:12px;overflow:auto;font-size:12px;line-height:1.5;font-family:monospace;margin:8px 0',\n code: 'background:#f0f0f0;border-radius:3px;padding:1px 4px;font-size:0.9em;font-family:monospace',\n link: 'color:var(--link)',\n h1: 'margin:0 0 12px;font-size:17px;font-weight:700;scroll-margin-top:64px',\n h2: 'margin:16px 0 8px;font-size:15px;font-weight:700;scroll-margin-top:64px',\n h3: 'margin:14px 0 6px;font-size:14px;font-weight:600;scroll-margin-top:64px',\n h4: 'margin:12px 0 4px;font-size:13px;font-weight:600;scroll-margin-top:64px',\n ul: 'margin:6px 0;padding-left:20px',\n ol: 'margin:6px 0;padding-left:20px',\n li: 'margin:2px 0',\n hr: 'border:none;border-top:1px solid var(--border-primary);margin:12px 0',\n p: 'margin:6px 0;line-height:1.6',\n}\n\n// ── Helpers ───────────────────────────────────────────────────────────────────\n\nfunction escapeHtml(s: string): string {\n return s.replace(/&/g, '&amp;').replace(/</g, '&lt;').replace(/>/g, '&gt;')\n}\n\nfunction slugify(text: string): string {\n return text.toLowerCase().replace(/[^\\w\\s-]/g, '').trim().replace(/\\s+/g, '-')\n}\n\nfunction anchorLink(id: string, text: string): string {\n return `<a href=\"#${id}\" onclick=\"event.preventDefault();document.getElementById('${id}')?.scrollIntoView({behavior:'smooth'})\" style=\"${S.link};cursor:pointer\">${text}</a>`\n}\n\nfunction externalLink(url: string, text: string): string {\n return `<a href=\"${url}\" target=\"_blank\" rel=\"noopener noreferrer\" style=\"${S.link}\">${text}</a>`\n}\n\nfunction heading(level: 1 | 2 | 3 | 4, text: string): string {\n const id = slugify(text)\n const style = S[`h${level}`]\n return `<h${level} id=\"${id}\" style=\"${style}\">${text}</h${level}>`\n}\n\nfunction listItems(block: string, ordered: boolean): string {\n const itemRe = ordered ? /^[ \\t]*\\d+\\. / : /^[ \\t]*[-*+] /\n const items = block.trim().split('\\n')\n .map(line => `<li style=\"${S.li}\">${line.replace(itemRe, '')}</li>`)\n .join('')\n const tag = ordered ? 'ol' : 'ul'\n return `<${tag} style=\"${S[tag]}\">${items}</${tag}>`\n}\n\n// ── Converter ─────────────────────────────────────────────────────────────────\n\nfunction mdToHtml(md: string): string {\n // 1. Stash fenced code blocks (preserve verbatim, skip further processing)\n const codeBlocks: string[] = []\n let html = md.replace(/```[\\w]*\\n?([\\s\\S]*?)```/g, (_, code) => {\n const idx = codeBlocks.length\n codeBlocks.push(`<pre style=\"${S.pre}\">${escapeHtml(code.replace(/\\n$/, ''))}</pre>`)\n return `\\x00CODE${idx}\\x00`\n })\n\n // 2. Escape remaining HTML\n html = escapeHtml(html)\n\n // 3. Inline code\n html = html.replace(/`([^`]+)`/g, (_, c) => `<code style=\"${S.code}\">${c}</code>`)\n\n // 4. Links (decode &amp; back in href, then route anchor vs external)\n html = html.replace(/\\[([^\\]]+)\\]\\(([^)]+)\\)/g, (_, text, rawHref) => {\n const url = rawHref.replace(/&amp;/g, '&')\n return url.startsWith('#') ? anchorLink(url.slice(1), text) : externalLink(url, text)\n })\n\n // 5. Headings (h4 first to avoid partial matches)\n html = html.replace(/^#### (.+)$/gm, (_, t) => heading(4, t))\n html = html.replace(/^### (.+)$/gm, (_, t) => heading(3, t))\n html = html.replace(/^## (.+)$/gm, (_, t) => heading(2, t))\n html = html.replace(/^# (.+)$/gm, (_, t) => heading(1, t))\n\n // 6. Emphasis\n html = html.replace(/\\*\\*\\*(.+?)\\*\\*\\*/g, '<strong><em>$1</em></strong>')\n html = html.replace(/\\*\\*(.+?)\\*\\*/g, '<strong>$1</strong>')\n html = html.replace(/\\*(.+?)\\*/g, '<em>$1</em>')\n\n // 7. Lists\n html = html.replace(/((?:^[ \\t]*[-*+] .+\\n?)+)/gm, block => listItems(block, false))\n html = html.replace(/((?:^[ \\t]*\\d+\\. .+\\n?)+)/gm, block => listItems(block, true))\n\n // 8. Horizontal rule\n html = html.replace(/^---$/gm, `<hr style=\"${S.hr}\"/>`)\n\n // 9. Paragraphs (skip blocks that are already block-level HTML or code placeholders)\n html = html.replace(/\\n{2,}/g, '\\n\\n')\n html = html.split('\\n\\n').map(block => {\n const trimmed = block.trim()\n if (!trimmed) {return ''}\n if (/^(\\x00CODE\\d+\\x00|<(h[1-6]|ul|ol|pre|hr|blockquote))/.test(trimmed)) {return trimmed}\n return `<p style=\"${S.p}\">${trimmed.replace(/\\n/g, '<br/>')}</p>`\n }).join('\\n')\n\n // 10. Restore code blocks\n html = html.replace(/\\x00CODE(\\d+)\\x00/g, (_, i) => codeBlocks[Number(i)] ?? '')\n\n return html\n}\n\n// ── Component ─────────────────────────────────────────────────────────────────\n\nexport function MarkdownViewer({ data, editable, onEdit }: Props) {\n const text = typeof data === 'string' ? data : data == null ? '' : JSON.stringify(data, null, 2)\n const [editing, setEditing] = useState(false)\n const [editValue, setEditValue] = useState(text)\n\n if (editing && editable) {\n return (\n <div>\n <textarea\n value={editValue}\n onChange={e => setEditValue(e.target.value)}\n style={{\n width: '100%', minHeight: 200, fontFamily: 'monospace', fontSize: 13,\n padding: 12, border: '1px solid var(--border-primary)', borderRadius: 6,\n background: 'var(--bg-primary)', color: 'var(--text-primary)',\n resize: 'vertical', boxSizing: 'border-box',\n }}\n />\n <div style={{ display: 'flex', gap: 8, marginTop: 8 }}>\n <UIButton size=\"small\" variant=\"primary\" onClick={() => { onEdit?.(editValue); setEditing(false) }}>Save</UIButton>\n <UIButton size=\"small\" variant=\"default\" onClick={() => { setEditValue(text); setEditing(false) }}>Cancel</UIButton>\n </div>\n </div>\n )\n }\n\n return (\n <div style={{ position: 'relative' }}>\n {editable && (\n <UIButton size=\"small\" variant=\"text\" style={{ float: 'right' }} onClick={() => setEditing(true)}>\n Edit\n </UIButton>\n )}\n <div\n style={{ fontSize: 13, lineHeight: 1.6, color: 'var(--text-primary)' }}\n dangerouslySetInnerHTML={{ __html: mdToHtml(text) }}\n />\n </div>\n )\n}\n","\n import API from \"!../../../../../../../node_modules/.pnpm/style-loader@4.0.0_webpack@5.106.1_@swc+core@1.15.33_postcss@8.5.15_/node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../../../node_modules/.pnpm/style-loader@4.0.0_webpack@5.106.1_@swc+core@1.15.33_postcss@8.5.15_/node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../../../node_modules/.pnpm/style-loader@4.0.0_webpack@5.106.1_@swc+core@1.15.33_postcss@8.5.15_/node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../../../node_modules/.pnpm/style-loader@4.0.0_webpack@5.106.1_@swc+core@1.15.33_postcss@8.5.15_/node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../../../node_modules/.pnpm/style-loader@4.0.0_webpack@5.106.1_@swc+core@1.15.33_postcss@8.5.15_/node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../../../node_modules/.pnpm/style-loader@4.0.0_webpack@5.106.1_@swc+core@1.15.33_postcss@8.5.15_/node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../../../node_modules/.pnpm/css-loader@7.1.4_@rspack+core@2.1.2_@module-federation+runtime-tools@2.3.3__webpack@5.106.1_@_rf7t5uof7fepbt2hekasvyc2lm/node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[1].use[1]!./artifacts.module.css\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../../../node_modules/.pnpm/css-loader@7.1.4_@rspack+core@2.1.2_@module-federation+runtime-tools@2.3.3__webpack@5.106.1_@_rf7t5uof7fepbt2hekasvyc2lm/node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[1].use[1]!./artifacts.module.css\";\n export default content && content.locals ? content.locals : undefined;\n","import { UITag } from '@kb-labs/sdk/studio'\nimport styles from './artifacts.module.css'\n\ninterface Issue {\n file?: string\n line?: number\n severity?: string\n message?: string\n problem?: string\n fix?: string\n}\n\nconst SEVERITY_COLOR: Record<string, string> = {\n blocker: 'error',\n high: 'error',\n medium: 'warning',\n low: 'default',\n info: 'processing',\n}\n\nexport function IssuesViewer({ data }: { data: unknown }) {\n const issues = Array.isArray(data) ? (data as Issue[]) : []\n\n if (!issues.length) {\n return <div className={styles.empty}>No issues found.</div>\n }\n\n return (\n <div className={styles.issueList}>\n {issues.map((issue, i) => {\n const severity = issue.severity ?? 'info'\n const color = SEVERITY_COLOR[severity] ?? 'default'\n return (\n <div key={i} className={styles.issueItem}>\n <div className={styles.issueHeader}>\n <UITag color={color}>{severity}</UITag>\n {issue.file && (\n <span className={styles.issueFile}>\n {issue.file}{issue.line ? `:${issue.line}` : ''}\n </span>\n )}\n </div>\n <div className={styles.issueMessage}>\n {issue.message ?? issue.problem ?? JSON.stringify(issue)}\n </div>\n {issue.fix && (\n <div className={styles.issueFix}>Fix: {issue.fix}</div>\n )}\n </div>\n )\n })}\n </div>\n )\n}\n","import { UITable } from '@kb-labs/sdk/studio'\nimport styles from './artifacts.module.css'\n\nexport function TableViewer({ data }: { data: unknown }) {\n const rows = Array.isArray(data) ? data as Record<string, unknown>[] : []\n\n if (!rows.length) {\n return <div className={styles.empty}>No data.</div>\n }\n\n const columns = Object.keys(rows[0] ?? {}).map(key => ({\n key,\n dataIndex: key,\n title: key,\n }))\n\n return <UITable columns={columns} dataSource={rows} size=\"small\" pagination={false} />\n}\n","import { UIDiffViewer } from '@kb-labs/sdk/studio'\n\nexport function DiffViewer({ data }: { data: unknown }) {\n const text = typeof data === 'string' ? data : data == null ? '' : (JSON.stringify(data, null, 2) ?? '')\n if (!text) {return null}\n return <UIDiffViewer diff={text} maxHeight={500} />\n}\n","import styles from './artifacts.module.css'\n\nexport function LogViewer({ data }: { data: unknown }) {\n const text = typeof data === 'string' ? data : data == null ? '' : (JSON.stringify(data, null, 2) ?? '')\n if (!text) {return null}\n return <pre className={styles.logPre}>{text}</pre>\n}\n","export function LinkViewer({ data, label }: { data: unknown; label?: string }) {\n const url = typeof data === 'string' ? data : null\n\n if (!url) {\n return (\n <span style={{ color: 'var(--text-tertiary)', fontSize: 13, padding: 12 }}>—</span>\n )\n }\n\n return (\n <a\n href={url}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n style={{\n display: 'inline-flex',\n alignItems: 'center',\n gap: 6,\n padding: '5px 12px',\n background: 'var(--bg-secondary)',\n border: '1px solid var(--border-primary)',\n borderRadius: 6,\n fontSize: 13,\n color: 'var(--link)',\n textDecoration: 'none',\n fontWeight: 500,\n }}\n >\n {label ?? url}\n <span style={{ fontSize: 11, opacity: 0.6 }}>↗</span>\n </a>\n )\n}\n","/**\n * Polymorphic artifact viewer.\n * Routes to the appropriate sub-component based on artifact type.\n * Wrapped in an ErrorBoundary so a broken artifact never crashes the page.\n */\n\nimport { Component } from 'react'\nimport type { ReactNode } from 'react'\nimport { UIJsonViewer } from '@kb-labs/sdk/studio'\nimport { MarkdownViewer } from './MarkdownViewer'\nimport { IssuesViewer } from './IssuesViewer'\nimport { TableViewer } from './TableViewer'\nimport { DiffViewer } from './DiffViewer'\nimport { LogViewer } from './LogViewer'\nimport { LinkViewer } from './LinkViewer'\n\nexport interface ArtifactViewerProps {\n type: 'markdown' | 'issues' | 'table' | 'diff' | 'log' | 'json' | 'link'\n data: unknown\n label?: string\n editable?: boolean\n onEdit?: (newValue: unknown) => void\n}\n\nclass ArtifactErrorBoundary extends Component<{ children: ReactNode; label?: string }, { error: Error | null }> {\n override state = { error: null as Error | null };\n \n static getDerivedStateFromError(error: Error): any { return { error }; }\n override render() {\n if (this.state.error) {\n return (\n <span style={{ color: 'var(--text-tertiary)', fontSize: 12, fontStyle: 'italic' }}>\n {this.props.label ?? 'Artifact'}: render error\n </span>\n )\n }\n return this.props.children\n }\n}\n\nfunction ArtifactViewerInner({ type, data, label, editable, onEdit }: ArtifactViewerProps) {\n if (data == null) {return null}\n if (type === 'link') {return <LinkViewer data={data} label={label} />}\n if (type === 'markdown') {return <MarkdownViewer data={data} editable={editable} onEdit={onEdit} />}\n if (type === 'issues') {return <IssuesViewer data={data} />}\n if (type === 'table') {return <TableViewer data={data} />}\n if (type === 'diff') {return <DiffViewer data={data} />}\n if (type === 'log') {return <LogViewer data={data} />}\n if (type === 'json') {return <UIJsonViewer data={data} />}\n return null\n}\n\nexport function ArtifactViewer(props: ArtifactViewerProps) {\n return (\n <ArtifactErrorBoundary label={props.label}>\n <ArtifactViewerInner {...props} />\n </ArtifactErrorBoundary>\n )\n}\n","/**\n * Dashboard view for a single workflow run.\n * Shows: StatRow → PhaseProgressBar → Hero block (current step) → Completed steps → Skipped steps → Future steps\n */\n\nimport * as React from 'react';\nimport { useState } from 'react';\nimport {\n UITypographyText,\n UISpace,\n UIIcon,\n UITag,\n useElapsedTimer,\n} from '@kb-labs/sdk/studio';\nimport type { WorkflowRun, StepRun, StepArtifact } from '@kb-labs/workflow-contracts';\nimport { PhaseProgressBar, type PhaseStatus } from '../shared/PhaseProgressBar';\nimport { usePipelineModel } from '../../hooks/use-pipeline-graph';\nimport { StatusDot } from '../pipeline/shared';\nimport { ArtifactViewer } from '../artifacts/ArtifactViewer';\n\n// Runtime fields not yet in the schema — accessed via type assertion\ninterface StepRunRuntime extends StepRun {\n progress?: number;\n progressMessage?: string;\n}\n\nfunction flatSteps(run: WorkflowRun): StepRun[] {\n return run.jobs.flatMap((j) => j.steps);\n}\n\nfunction formatDurationMs(ms: number): string {\n if (ms < 1000) { return `${ms}ms`; }\n const s = ms / 1000;\n if (s < 60) { return `${s.toFixed(1)}s`; }\n const m = Math.floor(s / 60);\n const rem = Math.floor(s % 60);\n return `${m}m ${rem}s`;\n}\n\n// ─── Stat row ─────────────────────────────────────────────────────────────────\n\ninterface StatCardProps {\n value: number | string;\n label: string;\n color?: string;\n}\n\nfunction StatCard({ value, label, color = 'var(--text-primary)' }: StatCardProps) {\n return (\n <div style={{\n padding: '10px 14px',\n border: '1px solid var(--border-primary)',\n borderRadius: 8,\n textAlign: 'center',\n background: 'var(--bg-secondary)',\n flex: '1 1 0',\n minWidth: 80,\n }}>\n <div style={{ fontSize: 22, fontWeight: 700, color, lineHeight: 1.2 }}>{value}</div>\n <div style={{ fontSize: 11, color: 'var(--text-tertiary)', marginTop: 3 }}>{label}</div>\n </div>\n );\n}\n\ninterface StatRowProps {\n allSteps: StepRun[];\n run: WorkflowRun;\n isTerminal: boolean;\n}\n\nfunction StatRow({ allSteps, run, isTerminal }: StatRowProps) {\n const total = allSteps.length;\n const doneCount = allSteps.filter(s => s.status === 'success').length;\n const failCount = allSteps.filter(s => s.status === 'failed').length;\n const skipCount = allSteps.filter(s => s.status === 'skipped' || s.status === 'cancelled').length;\n const durationMs = run.durationMs ?? run.result?.metrics?.timeMs;\n\n if (total === 0) { return null; }\n\n return (\n <div style={{ display: 'flex', gap: 10, flexWrap: 'wrap', marginBottom: 'var(--spacing-section)' }}>\n <StatCard value={total} label=\"Total steps\" />\n <StatCard value={doneCount} label=\"Done\" color=\"var(--success)\" />\n {failCount > 0 && (\n <StatCard value={failCount} label=\"Failed\" color=\"var(--error)\" />\n )}\n {skipCount > 0 && (\n <StatCard value={skipCount} label=\"Skipped\" color=\"var(--text-tertiary)\" />\n )}\n {isTerminal && durationMs != null && durationMs > 0 && (\n <StatCard value={formatDurationMs(durationMs)} label=\"Duration\" />\n )}\n </div>\n );\n}\n\n// ─── Hero block ───────────────────────────────────────────────────────────────\n\ninterface HeroBlockProps {\n step: StepRun;\n onApprove?: () => void;\n}\n\nfunction HeroBlock({ step, onApprove }: HeroBlockProps) {\n const rt = step as StepRunRuntime;\n const isWaiting = step.status === 'waiting_approval';\n const isRunning = step.status === 'running';\n const elapsed = useElapsedTimer(isRunning || isWaiting ? step.startedAt : undefined);\n // artifacts is Record<name, StepArtifact> in contracts\n const artifactsMap = step.spec?.artifacts as Record<string, StepArtifact> | undefined;\n const artifacts = artifactsMap ? Object.values(artifactsMap) : [];\n\n return (\n <div style={{\n padding: '20px 24px',\n background: 'var(--bg-secondary)',\n border: '1px solid var(--border-primary)',\n borderRadius: 10,\n marginBottom: 'var(--spacing-section)',\n }}>\n {/* Header */}\n <div style={{ display: 'flex', alignItems: 'center', gap: 10, marginBottom: 10 }}>\n <StatusDot status={step.status} />\n <UITypographyText style={{ fontSize: 15, fontWeight: 600, color: 'var(--text-primary)' }}>\n {step.spec?.summary ?? step.name}\n </UITypographyText>\n <UITypographyText className=\"typo-caption text-tertiary\" style={{ marginLeft: 'auto' }}>\n {step.durationMs ? formatDurationMs(step.durationMs) : elapsed ? elapsed : null}\n </UITypographyText>\n </div>\n\n {/* Progress message */}\n {rt.progressMessage && (\n <UITypographyText className=\"typo-description text-secondary\" style={{ marginBottom: 10, display: 'block' }}>\n {rt.progressMessage}\n </UITypographyText>\n )}\n\n {/* Progress bar */}\n {rt.progress != null && (\n <div style={{ marginBottom: 12 }}>\n <div style={{\n height: 6,\n background: 'var(--border-primary)',\n borderRadius: 3,\n overflow: 'hidden',\n }}>\n <div style={{\n height: '100%',\n width: `${rt.progress}%`,\n background: isWaiting ? 'var(--warning)' : 'var(--link)',\n borderRadius: 3,\n transition: 'width 0.3s ease',\n }} />\n </div>\n <UITypographyText className=\"typo-caption text-tertiary\" style={{ marginTop: 4, display: 'block' }}>\n {rt.progress}%\n </UITypographyText>\n </div>\n )}\n\n {/* Artifacts */}\n {artifacts.length > 0 && step.outputs && (\n <div style={{ display: 'flex', flexDirection: 'column', gap: 12 }}>\n {artifacts.map((artifact, i) => {\n // Resolve dot-path from outputs\n const data = artifact.source.split('.').reduce<unknown>(\n (acc, key) => (acc && typeof acc === 'object' ? (acc as Record<string, unknown>)[key] : undefined),\n step.outputs,\n );\n return (\n <div key={i}>\n <UITypographyText className=\"typo-label text-secondary\" style={{ display: 'block', marginBottom: 6 }}>\n {artifact.label}\n </UITypographyText>\n <ArtifactViewer type={artifact.type} data={data} label={artifact.label} />\n </div>\n );\n })}\n </div>\n )}\n\n {/* Approval CTA */}\n {isWaiting && onApprove && (\n <div style={{ marginTop: 14 }}>\n <button\n onClick={onApprove}\n style={{\n padding: '6px 16px',\n background: 'var(--link)',\n color: 'var(--text-inverse)',\n border: 'none',\n borderRadius: 6,\n fontWeight: 600,\n cursor: 'pointer',\n fontSize: 13,\n }}\n >\n Review &amp; Decide\n </button>\n </div>\n )}\n\n {/* Running indicator with elapsed time */}\n {isRunning && !rt.progressMessage && (\n <UISpace className=\"gap-tight\" style={{ marginTop: 6 }}>\n <UIIcon name=\"LoadingOutlined\" spin style={{ color: 'var(--link)', fontSize: 13 }} />\n <UITypographyText className=\"typo-caption text-secondary\">\n {elapsed ? `Running for ${elapsed}` : 'Running…'}\n </UITypographyText>\n </UISpace>\n )}\n </div>\n );\n}\n\n// ─── Preparing block ──────────────────────────────────────────────\n\nfunction PreparingBlock({ startedAt }: { startedAt?: string }) {\n const elapsed = useElapsedTimer(startedAt);\n return (\n <div style={{\n padding: '20px 24px',\n background: 'var(--bg-secondary)',\n border: '1px solid var(--border-primary)',\n borderRadius: 10,\n marginBottom: 'var(--spacing-section)',\n position: 'relative',\n overflow: 'hidden',\n }}>\n {/* Indeterminate shimmer bar at top */}\n <div style={{\n position: 'absolute', top: 0, left: 0, right: 0, height: 2,\n background: 'var(--border-primary)',\n }}>\n <div style={{\n position: 'absolute', top: 0, height: '100%', width: '40%',\n background: 'linear-gradient(90deg, transparent, var(--link), transparent)',\n animation: 'kb-prep-slide 1.6s ease-in-out infinite',\n }} />\n </div>\n <style>{`\n @keyframes kb-prep-slide {\n 0% { left: -40%; }\n 100% { left: 140%; }\n }\n `}</style>\n\n <div style={{ display: 'flex', alignItems: 'center', gap: 10 }}>\n <UIIcon name=\"LoadingOutlined\" spin style={{ color: 'var(--link)', fontSize: 14, flexShrink: 0 }} />\n <UITypographyText style={{ fontSize: 15, fontWeight: 600, color: 'var(--text-primary)' }}>\n Preparing execution environment\n </UITypographyText>\n {elapsed && (\n <UITypographyText className=\"typo-caption text-tertiary\" style={{ marginLeft: 'auto' }}>\n {elapsed}\n </UITypographyText>\n )}\n </div>\n <UITypographyText className=\"typo-description text-secondary\" style={{ display: 'block', marginTop: 6, marginLeft: 24 }}>\n Provisioning workspace, scheduling steps…\n </UITypographyText>\n </div>\n );\n}\n\n// ─── Skipped section ──────────────────────────────────────────────────────────\n\nconst SKIPPED_COLLAPSE_THRESHOLD = 5;\n\nfunction SkippedSection({ steps }: { steps: StepRun[] }) {\n const [expanded, setExpanded] = useState(steps.length <= SKIPPED_COLLAPSE_THRESHOLD);\n const showToggle = steps.length > SKIPPED_COLLAPSE_THRESHOLD;\n const visibleSteps = expanded ? steps : steps.slice(0, SKIPPED_COLLAPSE_THRESHOLD);\n\n return (\n <div style={{ marginBottom: 'var(--spacing-section)' }}>\n <div\n style={{\n display: 'flex', alignItems: 'center', gap: 6,\n marginBottom: 8, cursor: showToggle ? 'pointer' : 'default',\n }}\n onClick={showToggle ? () => setExpanded(v => !v) : undefined}\n >\n <UITypographyText className=\"typo-label text-secondary\">\n Skipped ({steps.length})\n </UITypographyText>\n {showToggle && (\n <span style={{\n fontSize: 10, color: 'var(--text-tertiary)',\n display: 'inline-block',\n transform: expanded ? 'rotate(90deg)' : 'rotate(0deg)',\n transition: 'transform 200ms ease',\n }}>\n ▶\n </span>\n )}\n </div>\n\n <div style={{ display: 'flex', flexDirection: 'column', gap: 4 }}>\n {visibleSteps.map((step) => (\n <div\n key={step.id}\n style={{\n padding: '7px 12px',\n background: 'transparent',\n border: '1px solid var(--border-primary)',\n borderRadius: 6,\n opacity: 0.65,\n }}\n >\n <div style={{ display: 'flex', alignItems: 'center', gap: 8 }}>\n <UIIcon\n name=\"MinusCircleOutlined\"\n style={{ color: 'var(--text-tertiary)', fontSize: 13, flexShrink: 0 }}\n />\n <UITypographyText className=\"typo-body text-secondary\">\n {step.spec?.summary ?? step.name}\n </UITypographyText>\n {step.status === 'cancelled' && (\n <UITag style={{ marginLeft: 'auto', fontSize: 11, opacity: 0.8 }}>cancelled</UITag>\n )}\n </div>\n {step.skipReason && (\n <UITypographyText\n className=\"typo-caption text-tertiary\"\n style={{ display: 'block', marginTop: 3, marginLeft: 21, fontStyle: 'italic' }}\n >\n {step.skipReason}\n </UITypographyText>\n )}\n </div>\n ))}\n\n {showToggle && !expanded && (\n <div\n onClick={() => setExpanded(true)}\n style={{\n padding: '5px 12px',\n textAlign: 'center',\n cursor: 'pointer',\n fontSize: 12,\n color: 'var(--text-tertiary)',\n borderRadius: 6,\n }}\n onMouseEnter={e => { (e.currentTarget as HTMLDivElement).style.background = 'var(--bg-hover)' }}\n onMouseLeave={e => { (e.currentTarget as HTMLDivElement).style.background = 'transparent' }}\n >\n Show {steps.length - SKIPPED_COLLAPSE_THRESHOLD} more\n </div>\n )}\n </div>\n </div>\n );\n}\n\n// ─── Main view ────────────────────────────────────────────────────\n\ninterface DashboardViewProps {\n run: WorkflowRun;\n onApprove?: (step: StepRun) => void;\n}\n\nexport function DashboardView({ run, onApprove }: DashboardViewProps) {\n const model = usePipelineModel(run);\n const phases: PhaseStatus[] = model.phases.map((phase) => {\n const allDone = phase.steps.every((s) => s.stepRun.status === 'success');\n const anyActive = phase.steps.some(\n (s) => s.stepRun.status === 'running' || s.stepRun.status === 'waiting_approval',\n );\n return { label: phase.label, status: allDone ? 'done' : anyActive ? 'active' : 'pending' };\n });\n\n const allSteps = flatSteps(run);\n\n const isRunActive = run.status === 'running' || run.status === 'queued';\n const isTerminal = !isRunActive;\n\n const currentStep = allSteps.find(\n (s) => s.status === 'running' || s.status === 'waiting_approval',\n );\n const completedSteps = allSteps.filter((s) => s.status === 'success');\n const failedSteps = allSteps.filter((s) => s.status === 'failed');\n const skippedSteps = allSteps.filter((s) => s.status === 'skipped' || s.status === 'cancelled');\n const futureSteps = allSteps.filter(\n (s) => s.status === 'queued' || (s.status as string) === 'pending',\n );\n\n // Show preparing state when run is active but no step has started yet\n const isPreparing = isRunActive && !currentStep && completedSteps.length === 0;\n\n return (\n <div>\n {/* Stat summary */}\n <StatRow allSteps={allSteps} run={run} isTerminal={isTerminal} />\n\n {/* Phase bar */}\n {phases.length > 0 && (\n <div style={{\n padding: '12px 16px',\n background: 'var(--bg-secondary)',\n border: '1px solid var(--border-primary)',\n borderRadius: 8,\n marginBottom: 'var(--spacing-section)',\n }}>\n <PhaseProgressBar phases={phases} />\n </div>\n )}\n\n {/* Preparing: run active but no step started yet */}\n {isPreparing && <PreparingBlock startedAt={run.startedAt} />}\n\n {/* Hero: current step */}\n {currentStep && (\n <HeroBlock\n step={currentStep}\n onApprove={onApprove ? () => onApprove(currentStep) : undefined}\n />\n )}\n\n {/* Completed steps */}\n {completedSteps.length > 0 && (\n <div style={{ marginBottom: 'var(--spacing-section)' }}>\n <UITypographyText className=\"typo-label text-secondary\" style={{ display: 'block', marginBottom: 8 }}>\n Completed ({completedSteps.length})\n </UITypographyText>\n <div style={{ display: 'flex', flexDirection: 'column', gap: 6 }}>\n {completedSteps.map((step) => (\n <div\n key={step.id}\n style={{\n display: 'flex',\n alignItems: 'center',\n gap: 8,\n padding: '8px 12px',\n background: 'var(--bg-secondary)',\n border: '1px solid var(--border-primary)',\n borderRadius: 6,\n }}\n >\n <UIIcon name=\"CheckCircleOutlined\" style={{ color: 'var(--success)', fontSize: 13 }} />\n <UITypographyText className=\"typo-body\">\n {step.spec?.summary ?? step.name}\n </UITypographyText>\n {step.durationMs && (\n <UITypographyText className=\"typo-caption text-tertiary\" style={{ marginLeft: 'auto' }}>\n {formatDurationMs(step.durationMs)}\n </UITypographyText>\n )}\n </div>\n ))}\n </div>\n </div>\n )}\n\n {/* Failed steps */}\n {failedSteps.length > 0 && (\n <div style={{ marginBottom: 'var(--spacing-section)' }}>\n <UITypographyText className=\"typo-label text-secondary\" style={{ display: 'block', marginBottom: 8 }}>\n Failed ({failedSteps.length})\n </UITypographyText>\n <div style={{ display: 'flex', flexDirection: 'column', gap: 6 }}>\n {failedSteps.map((step) => (\n <div\n key={step.id}\n style={{\n display: 'flex',\n alignItems: 'flex-start',\n gap: 8,\n padding: '8px 12px',\n background: 'color-mix(in srgb, var(--error) 5%, var(--bg-secondary))',\n border: '1px solid color-mix(in srgb, var(--error) 25%, transparent)',\n borderRadius: 6,\n }}\n >\n <UIIcon name=\"CloseCircleOutlined\" style={{ color: 'var(--error)', fontSize: 13, flexShrink: 0, paddingTop: 2 }} />\n <div style={{ flex: 1, minWidth: 0 }}>\n <UITypographyText className=\"typo-body\" style={{ fontWeight: 500 }}>\n {step.spec?.summary ?? step.name}\n </UITypographyText>\n {step.error?.message && (\n <UITypographyText\n className=\"typo-caption\"\n style={{\n display: 'block', marginTop: 3,\n color: 'var(--error)', opacity: 0.85,\n whiteSpace: 'nowrap', overflow: 'hidden', textOverflow: 'ellipsis',\n }}\n >\n {(step.error.message.split('\\n')[0] ?? '').slice(0, 120)}\n </UITypographyText>\n )}\n </div>\n {step.durationMs && (\n <UITypographyText className=\"typo-caption text-tertiary\" style={{ marginLeft: 'auto', flexShrink: 0 }}>\n {formatDurationMs(step.durationMs)}\n </UITypographyText>\n )}\n </div>\n ))}\n </div>\n </div>\n )}\n\n {/* Skipped / cancelled steps */}\n {skippedSteps.length > 0 && (\n <SkippedSection steps={skippedSteps} />\n )}\n\n {/* Future steps */}\n {futureSteps.length > 0 && (\n <div>\n <UITypographyText className=\"typo-label text-secondary\" style={{ display: 'block', marginBottom: 8 }}>\n Upcoming ({futureSteps.length})\n </UITypographyText>\n <div style={{ display: 'flex', flexDirection: 'column', gap: 6 }}>\n {futureSteps.map((step) => (\n <div\n key={step.id}\n style={{\n display: 'flex',\n alignItems: 'center',\n gap: 8,\n padding: '8px 12px',\n background: 'transparent',\n border: '1px dashed var(--border-primary)',\n borderRadius: 6,\n opacity: 0.5,\n }}\n >\n <UIIcon name=\"ClockCircleOutlined\" style={{ color: 'var(--text-tertiary)', fontSize: 13 }} />\n <UITypographyText className=\"typo-body text-secondary\">\n {step.spec?.summary ?? step.name}\n </UITypographyText>\n {step.spec?.phase && (\n <UITag style={{ marginLeft: 'auto', opacity: 0.7 }}>{step.spec.phase}</UITag>\n )}\n </div>\n ))}\n </div>\n </div>\n )}\n\n {/* Empty state */}\n {!currentStep && completedSteps.length === 0 && failedSteps.length === 0 && futureSteps.length === 0 && skippedSteps.length === 0 && (\n <div style={{ textAlign: 'center', padding: '40px 0' }}>\n <UITypographyText className=\"typo-description text-secondary\">\n No execution data\n </UITypographyText>\n </div>\n )}\n </div>\n );\n}\n","/**\n * @module @kb-labs/studio-app/modules/workflows/pages/workflow-run-page\n * Workflow run detail page with live SSE logs, jobs/steps accordion, and approval modal\n */\n\nimport React from 'react'\nimport { UIPage, UIPageHeader, UIPageSection } from '@kb-labs/sdk/studio'\nimport { useMemo, useState, useEffect, useRef, useCallback } from 'react'\nimport { useParams, Link } from 'react-router-dom'\nimport {\n UIButton, UITypographyText,\n UITitle, UIAlert, UIList, UIListItem, UIAccordion, UITabs, UIJsonViewer,\n} from '@kb-labs/sdk/studio'\nimport type { UIAccordionItem, UITabItem } from '@kb-labs/sdk/studio'\nimport { useData, useMutateData, useSSE } from '@kb-labs/sdk/studio'\nimport type { WorkflowRun, JobRun, StepRun } from '@kb-labs/workflow-contracts'\nimport type { WorkflowLogEvent } from '@kb-labs/workflow-contracts/rest-api'\nimport { WorkflowStatusBadge } from '../components/shared/WorkflowStatusBadge'\nimport { ConnectionBadge } from '../components/shared/ConnectionBadge'\nimport { ApprovalModal } from '../components/ApprovalModal'\nimport { PipelineView } from '../components/pipeline/PipelineView'\nimport { DashboardView } from '../components/dashboard/DashboardView'\nimport { ViewModeSelector } from '../components/shared/ViewModeSelector'\n\nconst Text = UITypographyText\nconst Title = UITitle\n\n// --- GitHub Actions style execution log ---\n\nconst STATUS_ICON: Record<string, string> = {\n 'queued': '\\u25CB',\n 'running': '\\u25C9',\n 'success': '\\u2713',\n 'failed': '\\u2717',\n 'cancelled': '\\u2298',\n 'skipped': '\\u2014',\n 'waiting_approval': '\\u23F8',\n}\n\nconst STATUS_COLOR: Record<string, string> = {\n 'queued': '#8b949e',\n 'running': '#d29922',\n 'success': '#3fb950',\n 'failed': '#f85149',\n 'cancelled': '#8b949e',\n 'skipped': '#8b949e',\n 'waiting_approval': '#d29922',\n}\n\nfunction eventTypeToStatus(type: string): string {\n if (type.endsWith('.started')) {return 'running'}\n if (type.endsWith('.succeeded') || type.endsWith('.finished')) {return 'success'}\n if (type.endsWith('.failed')) {return 'failed'}\n if (type.endsWith('.cancelled')) {return 'cancelled'}\n if (type.endsWith('.skipped')) {return 'skipped'}\n if (type.endsWith('.waitingApproval')) {return 'waiting_approval'}\n if (type.endsWith('.queued')) {return 'queued'}\n return 'running'\n}\n\nfunction formatDurationMs(ms: number): string {\n if (ms < 1000) {return `${ms}ms`}\n const s = ms / 1000\n if (s < 60) {return `${s.toFixed(1)}s`}\n const m = Math.floor(s / 60)\n const rem = Math.floor(s % 60)\n return `${m}m ${rem}s`\n}\n\nfunction formatTime(ts?: string): string {\n if (!ts) {return ''}\n try {\n return new Date(ts).toLocaleTimeString('en-US', { hour12: false, hour: '2-digit', minute: '2-digit', second: '2-digit' })\n } catch { return '' }\n}\n\ninterface LogLine {\n time: string\n text: string\n stream?: 'stdout' | 'stderr'\n}\n\n// Strip ANSI escape codes from text\n \nconst ANSI_RE = /\\x1b\\[[0-9;]*[A-Za-z]|\\x1b\\].*?\\x07/g\nfunction stripAnsi(s: string): string { return s.replace(ANSI_RE, '') }\n\nfunction extractLogLines(ev: WorkflowLogEvent): LogLine[] {\n const time = formatTime(ev.timestamp)\n const payload = ev.payload as Record<string, unknown> | undefined\n if (!payload) {return []}\n\n // Live log.appended events (real-time streaming)\n if (ev.type === 'log.appended') {\n const msg = typeof payload.message === 'string' ? stripAnsi(payload.message) : ''\n if (!msg) {return []}\n const stream = (payload.stream as 'stdout' | 'stderr') ?? 'stdout'\n return [{ time, text: msg, stream }]\n }\n\n if (payload.outputs && typeof payload.outputs === 'object') {\n const outputs = payload.outputs as Record<string, unknown>\n if (typeof outputs.stdout === 'string' && outputs.stdout.trim()) {\n return stripAnsi(outputs.stdout).trim().split('\\n').map(line => ({ time, text: line, stream: 'stdout' as const }))\n }\n }\n if (typeof payload.stdout === 'string' && payload.stdout.trim()) {\n return stripAnsi(payload.stdout).trim().split('\\n').map(line => ({ time, text: line, stream: 'stdout' as const }))\n }\n if (typeof payload.error === 'string') {\n return [{ time, text: payload.error, stream: 'stderr' }]\n }\n if (typeof payload.message === 'string') {\n return [{ time, text: payload.message }]\n }\n if (typeof payload.line === 'string') {\n return [{ time, text: payload.line }]\n }\n if (typeof payload.text === 'string') {\n return [{ time, text: payload.text }]\n }\n const keys = Object.keys(payload).filter(k => !['status', 'jobName', 'durationMs', 'attempt'].includes(k))\n if (keys.length === 0) {return []}\n return [{ time, text: JSON.stringify(payload, null, 2) }]\n}\n\ninterface StepLogGroup {\n stepId: string\n stepName: string\n status: string\n command?: string\n events: WorkflowLogEvent[]\n outputs?: Record<string, unknown>\n error?: Record<string, unknown> | null\n spec?: { name: string; uses?: string; with?: Record<string, unknown> }\n startedAt?: string\n finishedAt?: string\n durationMs?: number\n}\n\ninterface JobLogGroup {\n jobId: string\n jobName: string\n status: string\n steps: StepLogGroup[]\n events: WorkflowLogEvent[]\n startedAt?: string\n finishedAt?: string\n durationMs?: number\n error?: Record<string, unknown> | null\n}\n\nfunction buildLogGroups(events: WorkflowLogEvent[], run: WorkflowRun): JobLogGroup[] {\n const jobMap = new Map<string, JobLogGroup>()\n\n for (const job of run.jobs) {\n const stepGroups: StepLogGroup[] = job.steps.map(s => ({\n stepId: s.id,\n stepName: s.name,\n status: s.status,\n command: (s as StepRun & { command?: string }).command,\n events: [],\n outputs: s.outputs ?? undefined,\n error: s.error,\n spec: s.spec,\n startedAt: s.startedAt,\n finishedAt: s.finishedAt,\n durationMs: s.durationMs,\n }))\n jobMap.set(job.id, {\n jobId: job.id,\n jobName: job.jobName,\n status: job.status,\n steps: stepGroups,\n events: [],\n startedAt: job.startedAt,\n finishedAt: job.finishedAt,\n durationMs: job.durationMs,\n error: job.error,\n })\n }\n\n for (const ev of events) {\n if (!ev.jobId) {continue}\n let group = jobMap.get(ev.jobId)\n if (!group) {\n group = {\n jobId: ev.jobId,\n jobName: ev.jobId,\n status: eventTypeToStatus(ev.type),\n steps: [],\n events: [],\n }\n jobMap.set(ev.jobId, group)\n }\n\n if (ev.type.startsWith('job.')) {\n group.status = eventTypeToStatus(ev.type)\n if (ev.payload?.jobName) {group.jobName = String(ev.payload.jobName)}\n if (ev.payload?.durationMs) {group.durationMs = Number(ev.payload.durationMs)}\n }\n\n if (ev.stepId) {\n let step = group.steps.find(s => s.stepId === ev.stepId)\n if (!step) {\n step = { stepId: ev.stepId, stepName: ev.stepId, status: 'queued', events: [] }\n group.steps.push(step)\n }\n step.events.push(ev)\n if (ev.type.startsWith('step.')) {\n step.status = eventTypeToStatus(ev.type)\n }\n } else {\n group.events.push(ev)\n }\n }\n\n return Array.from(jobMap.values())\n}\n\nconst LOG_OUTPUT_KEYS = new Set(['stdout', 'stderr', 'exitCode', 'ok'])\n\nfunction StepPanel({ step, onApprove }: { step: StepLogGroup; onApprove?: () => void }) {\n const sseLines: LogLine[] = step.events.flatMap(extractLogLines)\n const logRef = useRef<HTMLPreElement>(null)\n\n // Auto-scroll to bottom when new lines arrive\n useEffect(() => {\n const el = logRef.current\n if (!el) {return}\n const isNearBottom = el.scrollHeight - el.scrollTop - el.clientHeight < 80\n if (isNearBottom) {\n el.scrollTop = el.scrollHeight\n }\n }, [sseLines.length])\n\n const pollingLines: LogLine[] = useMemo(() => {\n if (sseLines.length > 0) {return []}\n const lines: LogLine[] = []\n if (step.outputs) {\n const stdout = step.outputs.stdout\n const stderr = step.outputs.stderr\n if (typeof stdout === 'string' && stdout.trim()) {\n for (const line of stdout.trim().split('\\n')) {\n lines.push({ time: '', text: line })\n }\n }\n if (typeof stderr === 'string' && stderr.trim()) {\n for (const line of stderr.trim().split('\\n')) {\n lines.push({ time: '', text: line })\n }\n }\n // If no stdout/stderr but has structured data — show compact summary\n if (lines.length === 0) {\n const dataKeys = Object.keys(step.outputs).filter(k => !LOG_OUTPUT_KEYS.has(k))\n if (dataKeys.length > 0) {\n lines.push({ time: '', text: `Completed with output: { ${dataKeys.join(', ')} }` })\n }\n }\n }\n if (step.error) {\n const msg = (step.error as Record<string, unknown>).message\n if (typeof msg === 'string') {\n lines.push({ time: '', text: msg })\n }\n }\n return lines\n }, [step.outputs, step.error, sseLines.length])\n\n const lines = sseLines.length > 0 ? sseLines : pollingLines\n const isWaiting = step.status === 'waiting_approval'\n\n const dataOutputs = useMemo(() => {\n if (!step.outputs) {return null}\n const filtered: Record<string, unknown> = {}\n for (const [k, v] of Object.entries(step.outputs)) {\n if (!LOG_OUTPUT_KEYS.has(k)) {filtered[k] = v}\n }\n return Object.keys(filtered).length > 0 ? filtered : null\n }, [step.outputs])\n\n const hasData = dataOutputs !== null\n const hasInputs = step.spec?.with != null && Object.keys(step.spec.with).length > 0\n const hasError = step.error != null\n const hasTabs = hasData || hasInputs || hasError\n\n const logContent = (\n <div style={{ fontFamily: 'monospace', fontSize: 13 }}>\n {step.command && (\n <div style={{ padding: '4px 12px', color: '#8b949e', fontSize: 12 }}>\n $ {step.command}\n </div>\n )}\n {lines.length > 0 ? (\n <pre ref={logRef} style={{\n margin: 0,\n padding: '8px 12px',\n background: '#0d1117',\n color: '#c9d1d9',\n borderRadius: 4,\n overflow: 'auto',\n maxHeight: 400,\n whiteSpace: 'pre-wrap',\n wordBreak: 'break-word',\n lineHeight: 1.6,\n }}>\n {lines.map((l, i) => (\n <span key={i}>\n {l.time && <span style={{ color: '#484f58', userSelect: 'none', marginRight: 12 }}>{l.time}</span>}\n <span style={l.stream === 'stderr' ? { color: '#f85149' } : undefined}>{l.text}</span>\n {'\\n'}\n </span>\n ))}\n </pre>\n ) : (\n <Text type=\"secondary\" style={{ fontSize: 12, padding: '4px 12px', display: 'block' }}>\n {step.status === 'running' ? 'Waiting for output...' :\n step.status === 'queued' ? 'Queued' :\n isWaiting ? 'Waiting for approval' :\n 'No output'}\n </Text>\n )}\n {isWaiting && onApprove && (\n <div style={{ padding: '8px 12px' }}>\n <UIButton size=\"small\" variant=\"primary\" onClick={onApprove}>\n Review &amp; Decide\n </UIButton>\n </div>\n )}\n </div>\n )\n\n if (!hasTabs) {return logContent}\n\n const tabItems: UITabItem[] = [\n { key: 'log', label: 'Log', children: logContent },\n ]\n if (hasData) {\n tabItems.push({ key: 'data', label: 'Data', children: <UIJsonViewer data={dataOutputs} /> })\n }\n if (hasInputs) {\n tabItems.push({ key: 'inputs', label: 'Inputs', children: <UIJsonViewer data={step.spec!.with} /> })\n }\n if (hasError) {\n tabItems.push({ key: 'error', label: 'Error', children: <UIJsonViewer data={step.error} /> })\n }\n\n return <UITabs items={tabItems} size=\"small\" defaultActiveKey=\"log\" />\n}\n\ninterface JobStepLogProps {\n events: WorkflowLogEvent[]\n run: WorkflowRun\n onApprove?: (step: StepRun) => void\n}\n\nfunction JobStepLog({ events, run, onApprove }: JobStepLogProps) {\n const groups = useMemo(() => buildLogGroups(events, run), [events, run])\n\n const stepRunMap = useMemo(() => {\n const map = new Map<string, StepRun>()\n for (const job of run.jobs) {\n for (const step of job.steps) {\n map.set(step.id, step)\n }\n }\n return map\n }, [run])\n\n if (groups.length === 0) {\n return <Text type=\"secondary\">No execution data yet.</Text>\n }\n\n const activeJobKeys = groups\n .filter(g => g.status === 'running' || g.status === 'failed' || g.status === 'waiting_approval')\n .map(g => g.jobId)\n const defaultJobKeys = activeJobKeys.length > 0 ? activeJobKeys : groups.map(g => g.jobId)\n\n const jobItems: UIAccordionItem[] = groups.map(group => {\n const icon = STATUS_ICON[group.status] ?? '?'\n const color = STATUS_COLOR[group.status] ?? '#8b949e'\n const duration = group.durationMs ? formatDurationMs(group.durationMs) : null\n\n const activeStepKeys = group.steps\n .filter(s => s.status === 'running' || s.status === 'failed' || s.status === 'waiting_approval')\n .map(s => s.stepId)\n const defaultStepKeys = activeStepKeys.length > 0\n ? activeStepKeys\n : group.steps.filter(s => s.status !== 'queued').map(s => s.stepId)\n\n const stepItems: UIAccordionItem[] = group.steps.map(step => {\n const sIcon = STATUS_ICON[step.status] ?? '?'\n const sColor = STATUS_COLOR[step.status] ?? '#8b949e'\n const sDuration = step.durationMs ? formatDurationMs(step.durationMs) : null\n return {\n key: step.stepId,\n label: step.stepName,\n extra: (\n <span style={{ display: 'flex', alignItems: 'center', gap: 8, fontSize: 12 }}>\n {sDuration && <span style={{ color: '#8b949e' }}>{sDuration}</span>}\n <span style={{ color: sColor, fontWeight: 600, fontSize: 14 }}>{sIcon}</span>\n </span>\n ),\n children: (\n <StepPanel\n step={step}\n onApprove={\n step.status === 'waiting_approval' && onApprove\n ? () => {\n const sr = stepRunMap.get(step.stepId)\n if (sr) {onApprove(sr)}\n }\n : undefined\n }\n />\n ),\n }\n })\n\n return {\n key: group.jobId,\n label: group.jobName,\n extra: (\n <span style={{ display: 'flex', alignItems: 'center', gap: 8, fontSize: 12 }}>\n {duration && <span style={{ color: '#8b949e' }}>{duration}</span>}\n <span style={{ color, fontWeight: 600, fontSize: 14 }}>{icon}</span>\n </span>\n ),\n children: (\n <>\n {group.error && group.status === 'failed' && (\n <UIAlert\n variant=\"error\"\n message=\"Job failed\"\n description={\n typeof group.error.message === 'string'\n ? group.error.message\n : JSON.stringify(group.error, null, 2)\n }\n showIcon\n style={{ marginBottom: 8 }}\n />\n )}\n {stepItems.length > 0 ? (\n <UIAccordion\n items={stepItems}\n defaultActiveKey={defaultStepKeys}\n size=\"small\"\n ghost\n style={{ background: 'transparent' }}\n />\n ) : (\n <Text type=\"secondary\" style={{ fontSize: 12 }}>No steps.</Text>\n )}\n </>\n ),\n }\n })\n\n return (\n <UIAccordion\n items={jobItems}\n defaultActiveKey={defaultJobKeys}\n size=\"small\"\n style={{ background: 'var(--bg-secondary, #f6f8fa)' }}\n />\n )\n}\n\n// ─── Skeleton ──────────────────────────────────────────────────────\n\nconst SKEL: React.CSSProperties = {\n background: 'var(--border-primary)',\n borderRadius: 4,\n animation: 'kb-skel-pulse 1.5s ease-in-out infinite',\n}\nfunction SkeletonBlock({ width, height, style }: { width: number | string; height: number; style?: React.CSSProperties }) {\n return <div style={{ ...SKEL, width, height, ...style }} />\n}\nfunction RunDetailSkeleton() {\n return (\n <>\n <style>{`@keyframes kb-skel-pulse { 0%,100%{opacity:1} 50%{opacity:0.4} }`}</style>\n <div style={{ display: 'flex', gap: 12, padding: '12px 16px', background: 'var(--bg-secondary)', border: '1px solid var(--border-primary)', borderRadius: 8, marginBottom: 24 }}>\n <SkeletonBlock width={60} height={20} /><SkeletonBlock width={120} height={20} /><SkeletonBlock width={80} height={20} /><SkeletonBlock width={140} height={20} style={{ marginLeft: 'auto' }} />\n </div>\n <SkeletonBlock width=\"100%\" height={32} style={{ marginBottom: 16, borderRadius: 8 }} />\n <div style={{ padding: '20px 24px', background: 'var(--bg-secondary)', border: '1px solid var(--border-primary)', borderRadius: 10, marginBottom: 16 }}>\n <SkeletonBlock width={200} height={16} style={{ marginBottom: 12 }} /><SkeletonBlock width=\"60%\" height={12} />\n </div>\n {[1, 2, 3].map(i => (\n <div key={i} style={{ display: 'flex', gap: 8, padding: '8px 12px', border: '1px solid var(--border-primary)', borderRadius: 6, marginBottom: 6 }}>\n <SkeletonBlock width={14} height={14} style={{ borderRadius: '50%', flexShrink: 0 }} /><SkeletonBlock width={`${50 + i * 15}%`} height={14} />\n </div>\n ))}\n </>\n )\n}\n\n// ─── SSE state patching ────────────────────────────────────────────\n\nfunction applyStateEvent(run: WorkflowRun, ev: WorkflowLogEvent): WorkflowRun {\n const { type, jobId, stepId, payload } = ev\n if (type === 'run.started') {return { ...run, status: 'running', startedAt: (payload?.startedAt as string) ?? run.startedAt }}\n if (type === 'run.finished') {return { ...run, status: 'success' }}\n if (type === 'run.failed') {return { ...run, status: 'failed' }}\n if (type === 'run.cancelled') {return { ...run, status: 'cancelled' }}\n if (!jobId) {return run}\n const jobs = run.jobs.map(j => {\n if (j.id !== jobId) {return j}\n if (type.startsWith('job.')) {return { ...j, status: eventTypeToStatus(type) as JobRun['status'], durationMs: (payload?.durationMs as number) ?? j.durationMs }}\n if (!stepId) {return j}\n const steps = j.steps.map(s => s.id !== stepId || !type.startsWith('step.') ? s : {\n ...s,\n status: eventTypeToStatus(type) as StepRun['status'],\n startedAt: type === 'step.started' ? ((payload?.startedAt as string) ?? s.startedAt) : s.startedAt,\n durationMs: (payload?.durationMs as number) ?? s.durationMs,\n error: (payload?.error as StepRun['error'] | undefined) ?? s.error,\n })\n return { ...j, steps }\n })\n return { ...run, jobs }\n}\n\nconst TERMINAL_STATUSES = new Set(['success', 'failed', 'cancelled', 'skipped', 'dlq'])\nconst STATE_EVENT_PREFIXES = ['run.', 'job.', 'step.']\n\nexport default function WorkflowRunDetail() {\n const params = useParams<{ runId: string }>()\n const runId = params.runId ?? null\n const { data: runData, isLoading, error, refetch } = useData<{ run: WorkflowRun }>(\n runId ? `/exec/api/v1/runs/${runId}` : '/exec/api/v1/runs/__none__',\n { enabled: !!runId, pollingMs: 10_000 },\n )\n\n const [localRun, setLocalRun] = useState<WorkflowRun | null>(null)\n useEffect(() => {\n const fetched = runData?.run ?? (runData as unknown as WorkflowRun | undefined) ?? null\n if (fetched) {setLocalRun(fetched)}\n }, [runData])\n\n const run = localRun\n const cancelMutation = useMutateData<void, void>(`/exec/api/v1/runs/${runId ?? '__none__'}/cancel`)\n const resolveApproval = useMutateData<\n { runId: string; jobId: string; stepId: string; action: string; comment?: string },\n unknown\n >(`/exec/api/v1/runs/${runId ?? '__none__'}/approvals/resolve`)\n const isRunActive = run != null && !TERMINAL_STATUSES.has(run.status)\n\n const [lastEventAt, setLastEventAt] = useState<Date | undefined>(undefined)\n const handleSseEvent = useCallback((ev: WorkflowLogEvent) => {\n const isStateEvent = STATE_EVENT_PREFIXES.some(p => ev.type.startsWith(p)) && ev.type !== 'log.appended'\n if (isStateEvent) {setLocalRun(prev => prev ? applyStateEvent(prev, ev) : prev)}\n setLastEventAt(new Date())\n }, [])\n\n const { events, error: logError, connectionStatus } = useSSE<WorkflowLogEvent>(\n isRunActive && runId && !isLoading ? `/exec/api/v1/runs/${runId}/events` : null,\n { events: 'workflow.event', terminalEvents: ['workflow.done'], params: { follow: 1 }, reconnect: true, onEvent: handleSseEvent },\n )\n\n const [approvalStep, setApprovalStep] = useState<StepRun | null>(null)\n const [viewMode, setViewMode] = useState<'dashboard' | 'pipeline' | 'engineering'>('dashboard')\n\n const VIEW_MODES = {\n dashboard: { label: 'Dashboard' },\n pipeline: { label: 'Pipeline' },\n engineering: { label: 'Engineering' },\n } as const\n\n useEffect(() => {\n if (logError && isRunActive) {void refetch()}\n }, [logError, isRunActive, refetch])\n\n const isTerminal = run != null && !isRunActive\n\n const hasPendingApprovals = run?.jobs.some(j =>\n j.steps.some(s => (s.status as string) === 'waiting_approval')\n )\n\n const handleApprovalResolve = async (action: 'approve' | 'reject', comment?: string) => {\n if (!approvalStep || !runId) {return}\n const job = run?.jobs.find(j => j.steps.some(s => s.id === approvalStep.id))\n if (!job) {return}\n await resolveApproval.mutateAsync({\n runId,\n jobId: job.id,\n stepId: approvalStep.id,\n action,\n comment,\n })\n setApprovalStep(null)\n void refetch()\n }\n\n const shortRunId = runId ? `${runId.slice(0, 12)}...` : ''\n\n return (\n <UIPage>\n <UIPageHeader\n title={run?.name ?? `Workflow Run ${shortRunId}`}\n description={run ? `Run ${shortRunId}` : 'Detailed status of the workflow execution'}\n breadcrumbs={[\n { title: 'Home', href: '/' },\n { title: 'Workflows', href: '/workflows' },\n { title: 'Runs', href: '/p/workflows/runs' },\n { title: shortRunId },\n ]}\n actions={\n <div style={{ display: 'flex', alignItems: 'center', gap: 12 }}>\n <ConnectionBadge status={connectionStatus} lastEventAt={lastEventAt} />\n <UIButton onClick={() => refetch()} disabled={isLoading}>\n Refresh\n </UIButton>\n {run && !isTerminal && (\n <UIButton\n danger\n loading={cancelMutation.isLoading}\n onClick={() => runId && cancelMutation.mutate()}\n >\n Cancel Run\n </UIButton>\n )}\n </div>\n }\n />\n\n {error && <UIAlert variant=\"error\" message=\"Failed to load workflow run\" description={String(error)} showIcon closable />}\n\n {hasPendingApprovals && (\n <UIAlert\n variant=\"warning\"\n message=\"Waiting for your approval\"\n description=\"One or more steps require your decision. Expand the step below to review.\"\n showIcon\n style={{ marginBottom: 16 }}\n />\n )}\n\n {isLoading && (\n <UIPageSection>\n <RunDetailSkeleton />\n </UIPageSection>\n )}\n {!isLoading && !run && !error && <UIPageSection><Text>Workflow run not found.</Text></UIPageSection>}\n {run && (\n <UIPageSection>\n <div style={{\n display: 'flex',\n alignItems: 'center',\n gap: 16,\n padding: '12px 16px',\n background: 'var(--bg-secondary)',\n border: '1px solid var(--border-primary)',\n borderRadius: 8,\n flexWrap: 'wrap',\n }}>\n <WorkflowStatusBadge status={run.status} />\n <Link\n to={`/p/workflows/definitions/${encodeURIComponent(run.name)}`}\n style={{ color: 'var(--link)', fontWeight: 500, fontSize: 14 }}\n >\n {run.name}\n </Link>\n <span style={{ color: 'var(--text-tertiary)', fontSize: 13 }}>\n v{run.version}\n </span>\n <span style={{ color: 'var(--text-tertiary)', fontSize: 13 }}>\n by {run.trigger?.actor ?? 'unknown'}\n </span>\n {run.startedAt && (\n <span style={{ color: 'var(--text-tertiary)', fontSize: 13, marginLeft: 'auto' }}>\n {new Date(run.startedAt).toLocaleString()}\n </span>\n )}\n {run.result?.summary && (\n <span style={{\n fontSize: 13,\n color: 'var(--text-secondary)',\n borderTop: '1px solid var(--border-primary)',\n paddingTop: 8,\n width: '100%',\n }}>\n {run.result.summary}\n </span>\n )}\n </div>\n </UIPageSection>\n )}\n\n {run && (\n <UIPageSection>\n {/* View toggle */}\n <div style={{ display: 'flex', alignItems: 'center', justifyContent: 'space-between', marginBottom: 16 }}>\n <Title level={4} style={{ margin: 0 }}>Execution</Title>\n <ViewModeSelector views={VIEW_MODES} current={viewMode} onChange={setViewMode} />\n </div>\n\n {isRunActive && logError && connectionStatus !== 'reconnecting' && (\n <UIAlert variant=\"warning\" message=\"Reconnecting to event stream…\" description=\"Using polling as fallback\" style={{ marginBottom: 12 }} />\n )}\n\n {viewMode === 'dashboard' && (\n <DashboardView\n run={run}\n onApprove={(step) => setApprovalStep(step)}\n />\n )}\n {viewMode === 'pipeline' && (\n <PipelineView\n run={run}\n events={events}\n onApprove={(step) => setApprovalStep(step)}\n />\n )}\n {viewMode === 'engineering' && (\n <JobStepLog\n events={events}\n run={run}\n onApprove={(step) => setApprovalStep(step)}\n />\n )}\n </UIPageSection>\n )}\n\n {run?.result && (\n <UIPageSection>\n <Title level={4}>Result Metrics</Title>\n {run.result.metrics ? (\n <UIList\n bordered\n size=\"small\"\n dataSource={Object.entries(run.result.metrics).map(([key, value]) => ({\n key,\n value,\n }))}\n renderItem={({ key, value }) => (\n <UIListItem>\n <Text strong>{key}</Text>\n <span style={{ marginLeft: 8 }}>{String(value ?? '-')}</span>\n </UIListItem>\n )}\n />\n ) : (\n <Text type=\"secondary\">No metrics recorded.</Text>\n )}\n {run.result.error && (() => {\n const err = run.result.error\n const stack = typeof err.details?.['stack'] === 'string' ? err.details['stack'] as string : null\n const shortMsg = err.message.split('\\n')[0]\n return (\n <UIAlert\n style={{ marginTop: 16 }}\n variant=\"error\"\n message={shortMsg}\n description={stack ? (\n <pre style={{\n margin: '6px 0 0',\n fontSize: 11,\n lineHeight: 1.5,\n whiteSpace: 'pre-wrap',\n wordBreak: 'break-all',\n maxHeight: 160,\n overflowY: 'auto',\n color: 'inherit',\n opacity: 0.75,\n }}>\n {stack}\n </pre>\n ) : undefined}\n showIcon\n />\n )\n })()}\n </UIPageSection>\n )}\n\n <ApprovalModal\n open={approvalStep !== null}\n step={approvalStep}\n runId={runId ?? ''}\n onClose={() => setApprovalStep(null)}\n onResolve={handleApprovalResolve}\n isLoading={resolveApproval.isLoading}\n error={resolveApproval.error instanceof Error ? resolveApproval.error : null}\n />\n </UIPage>\n )\n}\n"],"names":["n","a","btoa","unescape","encodeURIComponent","JSON","r","i","o","document","window","e","Error","DOT_STYLE","CONTAINER","ConnectionBadge","param","status","lastEventAt","tooltip","Math","Date","undefined","Text","UITypographyText","Paragraph","UITypographyParagraph","Title","UITitle","TextArea","UIInputTextArea","ApprovalModal","_step_spec","step","open","onClose","onResolve","isLoading","error","_useState","comment","setComment","_useState1","pendingAction","setPendingAction","context","title","instructions","contextData","_type_of","handleResolve","action","UIModal","Object","key","value","String","UIAlert","onChange","UIButton","onClick","STATUS_LABEL","STATUS_COLOR","ANSI_RE","stripAnsi","s","extractLogLines","ev","time","p","_p_outputs","_p_outputs1","_p_stream","msg","stream","stdout","text","stderr","LOG_SKIP_KEYS","Set","StepDetailDrawer","events","onApprove","sseLines","useMemo","logRef","useRef","useEffect","el","pollingLines","lines","_step_outputs","keys","k","dataOutputs","filtered","_iteratorError","v","hasInputs","hasError","hasData","logContent","l","tabItems","UIJsonViewer","statusColor","duration","formatDuration","ms","UIDrawer","UITabs","injected","TERMINAL_STATUSES","S_COLOR","S_LABEL","StatusDot","_S_COLOR_status","color","filled","PHASE_COLOR","GateDecisionBanner","stepRun","targetStepName","outputs","decision","iteration","isRestart","errorMsg","maxIterReached","StepRow","_S_LABEL_status","_stepRun_error","_stepRun_error_message_split","isReworkGate","isReworkTarget","reworkActive","rowRef","reducedMotion","stepType","isWaiting","isFailed","isRunning","isQueued","isSuccess","isSkipped","isApproval","isGate","elapsed","useElapsedTimer","gateOutputs","gateAction","showBanner","highlight","onMouseEnter","onMouseLeave","ReworkBracket","gateEl","targetEl","containerEl","isActive","pos","setPos","measure","cr","gr","tr","ro","ResizeObserver","PhaseSection","_PHASE_COLOR_phase_label","phase","flatSteps","reworkLoop","targetStep","gateStep","onStepClick","rowRefs","isAllDone","isPending","failCount","doneCount","totalDuration","acc","_s_stepRun_durationMs","setOpen","measuredHeight","setMeasuredHeight","bodyRef","innerRef","activeRowRef","timer","setTimeout","clearTimeout","toggle","useCallback","flatIdx","isGateWithLoop","isActiveStep","PipelineView","reduced","setReduced","_model_steps_reworkLoop_gateIndex","_model_steps_reworkLoop_targetIndex","_rowRefs_current_get","_rowRefs_current_get1","run","model","usePipelineModel","selected","setSelected","containerRef","Map","mq","handler","stepEvents","S","escapeHtml","heading","level","id","style","listItems","block","ordered","itemRe","items","line","tag","MarkdownViewer","codeBlocks","html","data","editable","onEdit","editing","setEditing","editValue","setEditValue","md","_","code","idx","c","rawHref","url","t","trimmed","_codeBlocks_Number","Number","SEVERITY_COLOR","IssuesViewer","issues","Array","styles","issue","_issue_severity","_SEVERITY_COLOR_severity","_ref","severity","UITag","TableViewer","_rows_","rows","columns","UITable","DiffViewer","_JSON_stringify","UIDiffViewer","LogViewer","LinkViewer","label","ArtifactErrorBoundary","render","_this_props_label","getDerivedStateFromError","Component","ArtifactViewerInner","type","ArtifactViewer","props","formatDurationMs","m","rem","StatCard","StatRow","_run_durationMs","_run_result_metrics","allSteps","isTerminal","total","skipCount","durationMs","HeroBlock","_step_spec1","artifactsMap","artifacts","rt","artifact","UISpace","UIIcon","PreparingBlock","startedAt","SkippedSection","steps","SKIPPED_COLLAPSE_THRESHOLD","expanded","setExpanded","showToggle","visibleSteps","DashboardView","phases","allDone","anyActive","j","isRunActive","currentStep","completedSteps","failedSteps","skippedSteps","futureSteps","isPreparing","PhaseProgressBar","_step_error_message_split_","_step_error","STATUS_ICON","eventTypeToStatus","formatTime","ts","payload","_payload_stream","LOG_OUTPUT_KEYS","StepPanel","_iteratorError1","line1","dataKeys","JobStepLog","groups","buildLogGroups","jobMap","job","stepGroups","_s_outputs","_ev_payload","_ev_payload1","group","stepRunMap","map","activeJobKeys","g","defaultJobKeys","jobItems","_STATUS_ICON_group_status","_STATUS_COLOR_group_status","icon","activeStepKeys","defaultStepKeys","stepItems","_STATUS_ICON_step_status","_STATUS_COLOR_step_status","sIcon","sColor","sDuration","sr","UIAccordion","SKEL","SkeletonBlock","width","height","RunDetailSkeleton","STATE_EVENT_PREFIXES","WorkflowRunDetail","_params_runId","_run_trigger","_run_result","_err_details","err","stack","shortMsg","runId","useParams","_useData","runData","refetch","localRun","setLocalRun","fetched","cancelMutation","useMutateData","resolveApproval","setLastEventAt","handleSseEvent","isStateEvent","prev","applyStateEvent","jobId","stepId","jobs","_useSSE","logError","connectionStatus","_useState2","approvalStep","setApprovalStep","_useState3","viewMode","setViewMode","hasPendingApprovals","shortRunId","UIPage","UIPageHeader","UIPageSection","WorkflowStatusBadge","Link","ViewModeSelector","UIList","renderItem","UIListItem","_instanceof"],"mappings":"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"}