@kb-labs/workflow-entry 2.31.0 → 2.33.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 (55) hide show
  1. package/dist/widgets/117.js +2 -0
  2. package/dist/widgets/117.js.map +1 -0
  3. package/dist/widgets/297.js +2 -0
  4. package/dist/widgets/297.js.map +1 -0
  5. package/dist/widgets/338.js +2 -0
  6. package/dist/widgets/338.js.map +1 -0
  7. package/dist/widgets/370.js +2 -0
  8. package/dist/widgets/370.js.map +1 -0
  9. package/dist/widgets/451.js +2 -0
  10. package/dist/widgets/451.js.map +1 -0
  11. package/dist/widgets/50.js +2 -0
  12. package/dist/widgets/50.js.map +1 -0
  13. package/dist/widgets/586.js +39 -0
  14. package/dist/widgets/586.js.map +1 -0
  15. package/dist/widgets/59.js +2 -0
  16. package/dist/widgets/59.js.map +1 -0
  17. package/dist/widgets/607.js +2 -0
  18. package/dist/widgets/607.js.map +1 -0
  19. package/dist/widgets/626.js +2 -0
  20. package/dist/widgets/626.js.map +1 -0
  21. package/dist/widgets/669.js +2 -0
  22. package/dist/widgets/669.js.map +1 -0
  23. package/dist/widgets/678.js +2 -0
  24. package/dist/widgets/678.js.map +1 -0
  25. package/dist/widgets/716.js +2 -0
  26. package/dist/widgets/716.js.map +1 -0
  27. package/dist/widgets/781.js +2 -0
  28. package/dist/widgets/781.js.map +1 -0
  29. package/dist/widgets/842.js +446 -0
  30. package/dist/widgets/842.js.map +1 -0
  31. package/dist/widgets/968.js +10 -0
  32. package/dist/widgets/968.js.map +1 -0
  33. package/dist/widgets/997.js +35 -0
  34. package/dist/widgets/997.js.map +1 -0
  35. package/dist/widgets/@mf-types.d.ts +3 -0
  36. package/dist/widgets/@mf-types.zip +0 -0
  37. package/dist/widgets/__federation_expose_Crons.js +2 -0
  38. package/dist/widgets/__federation_expose_Crons.js.map +1 -0
  39. package/dist/widgets/__federation_expose_Dashboard.js +2 -0
  40. package/dist/widgets/__federation_expose_Dashboard.js.map +1 -0
  41. package/dist/widgets/__federation_expose_DefinitionDetail.js +2 -0
  42. package/dist/widgets/__federation_expose_DefinitionDetail.js.map +1 -0
  43. package/dist/widgets/__federation_expose_Definitions.js +2 -0
  44. package/dist/widgets/__federation_expose_Definitions.js.map +1 -0
  45. package/dist/widgets/__federation_expose_Jobs.js +2 -0
  46. package/dist/widgets/__federation_expose_Jobs.js.map +1 -0
  47. package/dist/widgets/__federation_expose_RunDetail.js +110 -0
  48. package/dist/widgets/__federation_expose_RunDetail.js.map +1 -0
  49. package/dist/widgets/__federation_expose_Runs.js +2 -0
  50. package/dist/widgets/__federation_expose_Runs.js.map +1 -0
  51. package/dist/widgets/mf-manifest.json +456 -0
  52. package/dist/widgets/mf-stats.json +560 -0
  53. package/dist/widgets/remoteEntry.js +7 -0
  54. package/dist/widgets/remoteEntry.js.map +1 -0
  55. package/package.json +5 -5
@@ -0,0 +1,3 @@
1
+
2
+ export type RemoteKeys = 'REMOTE_ALIAS_IDENTIFIER/Dashboard' | 'REMOTE_ALIAS_IDENTIFIER/Runs' | 'REMOTE_ALIAS_IDENTIFIER/RunDetail' | 'REMOTE_ALIAS_IDENTIFIER/Definitions' | 'REMOTE_ALIAS_IDENTIFIER/DefinitionDetail' | 'REMOTE_ALIAS_IDENTIFIER/Jobs' | 'REMOTE_ALIAS_IDENTIFIER/Crons';
3
+ type PackageType<T> = T extends 'REMOTE_ALIAS_IDENTIFIER/Crons' ? typeof import('REMOTE_ALIAS_IDENTIFIER/Crons') :T extends 'REMOTE_ALIAS_IDENTIFIER/Jobs' ? typeof import('REMOTE_ALIAS_IDENTIFIER/Jobs') :T extends 'REMOTE_ALIAS_IDENTIFIER/DefinitionDetail' ? typeof import('REMOTE_ALIAS_IDENTIFIER/DefinitionDetail') :T extends 'REMOTE_ALIAS_IDENTIFIER/Definitions' ? typeof import('REMOTE_ALIAS_IDENTIFIER/Definitions') :T extends 'REMOTE_ALIAS_IDENTIFIER/RunDetail' ? typeof import('REMOTE_ALIAS_IDENTIFIER/RunDetail') :T extends 'REMOTE_ALIAS_IDENTIFIER/Runs' ? typeof import('REMOTE_ALIAS_IDENTIFIER/Runs') :T extends 'REMOTE_ALIAS_IDENTIFIER/Dashboard' ? typeof import('REMOTE_ALIAS_IDENTIFIER/Dashboard') :any;
Binary file
@@ -0,0 +1,2 @@
1
+ "use strict";(self.webpackChunk_kb_labs_workflow_entry=self.webpackChunk_kb_labs_workflow_entry||[]).push([["772"],{572(e,t,n){var r=n(5259),a=Symbol.for("react.element"),l=Symbol.for("react.fragment"),s=Object.prototype.hasOwnProperty,o=r.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,i={key:!0,ref:!0,__self:!0,__source:!0};function c(e,t,n){var r,l={},c=null,d=null;for(r in void 0!==n&&(c=""+n),void 0!==t.key&&(c=""+t.key),void 0!==t.ref&&(d=t.ref),t)s.call(t,r)&&!i.hasOwnProperty(r)&&(l[r]=t[r]);if(e&&e.defaultProps)for(r in t=e.defaultProps)void 0===l[r]&&(l[r]=t[r]);return{$$typeof:a,type:e,key:c,ref:d,props:l,_owner:o.current}}t.Fragment=l,t.jsx=c,t.jsxs=c},8048(e,t,n){e.exports=n(572)},1597(e,t,n){n.r(t),n.d(t,{default:()=>s});var r=n(8048);n(5259);var a=n(1349),l=n(2383);function s(){var e,t,n,s=(0,l.useData)("/exec/api/v1/crons"),o=s.data,i=s.isLoading,c=function(e){return e?new Date(e).toLocaleString():"-"},d=[{title:"Cron ID",dataIndex:"id",key:"id",render:function(e){return(0,r.jsx)(a.UITypographyText,{className:"typo-body",strong:!0,children:e})}},{title:"Schedule",dataIndex:"schedule",key:"schedule",render:function(e){return(0,r.jsxs)(a.UISpace,{className:"gap-tight",children:[(0,r.jsx)(a.UIIcon,{name:"ClockCircleOutlined",className:"text-secondary"}),(0,r.jsx)(a.UITypographyText,{className:"typo-caption",code:!0,children:e})]})}},{title:"Job Type",dataIndex:"jobType",key:"jobType",render:function(e){return(0,r.jsx)(a.UITypographyText,{className:"typo-body",children:e})}},{title:"Timezone",dataIndex:"timezone",key:"timezone",render:function(e){return(0,r.jsx)(a.UITypographyText,{className:"typo-caption",children:e||"UTC"})}},{title:"Status",dataIndex:"enabled",key:"enabled",render:function(e){return(0,r.jsx)(a.UIBadge,{variant:e?"success":"default",children:e?"Enabled":"Disabled"})}},{title:"Last Run",dataIndex:"lastRun",key:"lastRun",render:function(e){return(0,r.jsxs)(a.UISpace,{className:"gap-tight",children:[(0,r.jsx)(a.UIIcon,{name:"CalendarOutlined",className:"text-secondary"}),(0,r.jsx)(a.UITypographyText,{className:"typo-caption",children:c(e)})]})}},{title:"Next Run",dataIndex:"nextRun",key:"nextRun",render:function(e){return e?(0,r.jsxs)(a.UISpace,{className:"gap-tight",children:[(0,r.jsx)(a.UIIcon,{name:"CalendarOutlined",className:"text-info"}),(0,r.jsx)(a.UITypographyText,{className:"typo-caption",children:c(e)})]}):(0,r.jsx)(a.UITypographyText,{className:"typo-caption text-tertiary",children:"-"})}},{title:"Plugin",dataIndex:"pluginId",key:"pluginId",render:function(e){return e?(0,r.jsx)(a.UITag,{color:"blue",children:e}):(0,r.jsx)(a.UITypographyText,{className:"typo-caption text-tertiary",children:"-"})}}],p=(null==o||null==(e=o.crons)?void 0:e.filter(function(e){return e.enabled}).length)||0,y=(null==o||null==(t=o.crons)?void 0:t.filter(function(e){return!e.enabled}).length)||0;return(0,r.jsxs)(a.UIPage,{width:"full",children:[(0,r.jsx)(a.UIPageHeader,{title:"Cron Jobs",description:"Scheduled recurring tasks",breadcrumbs:[{title:"Home",href:"/"},{title:"Workflows",href:"/workflows"},{title:"Crons"}]}),(0,r.jsx)(a.UICard,{style:{marginBottom:"var(--spacing-section)"},children:(0,r.jsxs)(a.UISpace,{className:"gap-section",children:[(0,r.jsxs)("div",{children:[(0,r.jsx)(a.UITypographyText,{className:"typo-label text-secondary",children:"Total Cron Jobs"}),(0,r.jsx)("div",{children:(0,r.jsx)(a.UITypographyText,{className:"typo-section-title",children:(null==o||null==(n=o.crons)?void 0:n.length)||0})})]}),(0,r.jsxs)("div",{children:[(0,r.jsx)(a.UITypographyText,{className:"typo-label text-secondary",children:"Enabled"}),(0,r.jsx)("div",{children:(0,r.jsx)(a.UITypographyText,{className:"typo-section-title text-success",children:p})})]}),(0,r.jsxs)("div",{children:[(0,r.jsx)(a.UITypographyText,{className:"typo-label text-secondary",children:"Disabled"}),(0,r.jsx)("div",{children:(0,r.jsx)(a.UITypographyText,{className:"typo-section-title",children:y})})]})]})}),(0,r.jsx)(a.UICard,{children:(0,r.jsx)(a.UITable,{dataSource:(null==o?void 0:o.crons)||[],columns:d,loading:i,rowKey:"id",pagination:{pageSize:20}})})]})}}}]);
2
+ //# sourceMappingURL=__federation_expose_Crons.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"__federation_expose_Crons.js","sources":["webpack://@kb-labs/workflow-entry/../../../node_modules/.pnpm/react@18.3.1/node_modules/react/cjs/react-jsx-runtime.production.min.js","webpack://@kb-labs/workflow-entry/../../../node_modules/.pnpm/react@18.3.1/node_modules/react/jsx-runtime.js","webpack://@kb-labs/workflow-entry/./src/studio/pages/WorkflowsCrons.tsx"],"sourcesContent":["/**\n * @license React\n * react-jsx-runtime.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';var f=require(\"react\"),k=Symbol.for(\"react.element\"),l=Symbol.for(\"react.fragment\"),m=Object.prototype.hasOwnProperty,n=f.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,p={key:!0,ref:!0,__self:!0,__source:!0};\nfunction q(c,a,g){var b,d={},e=null,h=null;void 0!==g&&(e=\"\"+g);void 0!==a.key&&(e=\"\"+a.key);void 0!==a.ref&&(h=a.ref);for(b in a)m.call(a,b)&&!p.hasOwnProperty(b)&&(d[b]=a[b]);if(c&&c.defaultProps)for(b in a=c.defaultProps,a)void 0===d[b]&&(d[b]=a[b]);return{$$typeof:k,type:c,key:e,ref:h,props:d,_owner:n.current}}exports.Fragment=l;exports.jsx=q;exports.jsxs=q;\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-jsx-runtime.production.min.js');\n} else {\n module.exports = require('./cjs/react-jsx-runtime.development.js');\n}\n","/**\n * @module @kb-labs/studio-app/modules/workflows/pages/workflows-crons-page\n * Cron jobs list - standalone page\n */\n\nimport * as React from 'react';\nimport {\n UITable,\n UITag,\n UISpace,\n UITypographyText,\n UIBadge,\n UIIcon,\n} from '@kb-labs/sdk/studio';\nimport { useData } from '@kb-labs/sdk/studio';\nimport { UICard } from '@kb-labs/sdk/studio';\nimport { UIPage, UIPageHeader } from '@kb-labs/sdk/studio';\n\nexport default function WorkflowsCrons() {\n const { data: cronsData, isLoading } = useData<{ crons: Array<Record<string, unknown>> }>('/exec/api/v1/crons');\n\n const formatDate = (date?: Date | string) => {\n if (!date) {return '-';}\n return new Date(date).toLocaleString();\n };\n\n const columns = [\n {\n title: 'Cron ID',\n dataIndex: 'id',\n key: 'id',\n render: (id: string) => (\n <UITypographyText className=\"typo-body\" strong>{id}</UITypographyText>\n ),\n },\n {\n title: 'Schedule',\n dataIndex: 'schedule',\n key: 'schedule',\n render: (schedule: string) => (\n <UISpace className=\"gap-tight\">\n <UIIcon name=\"ClockCircleOutlined\" className=\"text-secondary\" />\n <UITypographyText className=\"typo-caption\" code>{schedule}</UITypographyText>\n </UISpace>\n ),\n },\n {\n title: 'Job Type',\n dataIndex: 'jobType',\n key: 'jobType',\n render: (jobType: string) => (\n <UITypographyText className=\"typo-body\">{jobType}</UITypographyText>\n ),\n },\n {\n title: 'Timezone',\n dataIndex: 'timezone',\n key: 'timezone',\n render: (timezone?: string) => (\n <UITypographyText className=\"typo-caption\">{timezone || 'UTC'}</UITypographyText>\n ),\n },\n {\n title: 'Status',\n dataIndex: 'enabled',\n key: 'enabled',\n render: (enabled: boolean) => (\n <UIBadge variant={enabled ? 'success' : 'default'}>\n {enabled ? 'Enabled' : 'Disabled'}\n </UIBadge>\n ),\n },\n {\n title: 'Last Run',\n dataIndex: 'lastRun',\n key: 'lastRun',\n render: (date?: Date | string) => (\n <UISpace className=\"gap-tight\">\n <UIIcon name=\"CalendarOutlined\" className=\"text-secondary\" />\n <UITypographyText className=\"typo-caption\">{formatDate(date)}</UITypographyText>\n </UISpace>\n ),\n },\n {\n title: 'Next Run',\n dataIndex: 'nextRun',\n key: 'nextRun',\n render: (date?: Date | string) => (\n date ? (\n <UISpace className=\"gap-tight\">\n <UIIcon name=\"CalendarOutlined\" className=\"text-info\" />\n <UITypographyText className=\"typo-caption\">{formatDate(date)}</UITypographyText>\n </UISpace>\n ) : (\n <UITypographyText className=\"typo-caption text-tertiary\">-</UITypographyText>\n )\n ),\n },\n {\n title: 'Plugin',\n dataIndex: 'pluginId',\n key: 'pluginId',\n render: (pluginId?: string) => (\n pluginId ? (\n <UITag color=\"blue\">{pluginId}</UITag>\n ) : (\n <UITypographyText className=\"typo-caption text-tertiary\">-</UITypographyText>\n )\n ),\n },\n ];\n\n const enabledCount = cronsData?.crons?.filter((c) => c.enabled).length || 0;\n const disabledCount = cronsData?.crons?.filter((c) => !c.enabled).length || 0;\n\n return (\n <UIPage width=\"full\">\n <UIPageHeader\n title=\"Cron Jobs\"\n description=\"Scheduled recurring tasks\"\n breadcrumbs={[\n { title: 'Home', href: '/' },\n { title: 'Workflows', href: '/workflows' },\n { title: 'Crons' },\n ]}\n />\n\n <UICard style={{ marginBottom: 'var(--spacing-section)' }}>\n <UISpace className=\"gap-section\">\n <div>\n <UITypographyText className=\"typo-label text-secondary\">Total Cron Jobs</UITypographyText>\n <div>\n <UITypographyText className=\"typo-section-title\">{cronsData?.crons?.length || 0}</UITypographyText>\n </div>\n </div>\n <div>\n <UITypographyText className=\"typo-label text-secondary\">Enabled</UITypographyText>\n <div>\n <UITypographyText className=\"typo-section-title text-success\">{enabledCount}</UITypographyText>\n </div>\n </div>\n <div>\n <UITypographyText className=\"typo-label text-secondary\">Disabled</UITypographyText>\n <div>\n <UITypographyText className=\"typo-section-title\">{disabledCount}</UITypographyText>\n </div>\n </div>\n </UISpace>\n </UICard>\n\n <UICard>\n <UITable\n dataSource={cronsData?.crons || []}\n columns={columns}\n loading={isLoading}\n rowKey=\"id\"\n pagination={{ pageSize: 20 }}\n />\n </UICard>\n </UIPage>\n );\n}\n"],"names":["Symbol","l","Object","WorkflowsCrons","_cronsData_crons","_cronsData_crons1","_cronsData_crons2","_useData","cronsData","isLoading","formatDate","date","Date","columns","render","id","UITypographyText","schedule","UISpace","UIIcon","jobType","timezone","enabled","UIBadge","pluginId","UITag","enabledCount","c","disabledCount","UIPage","UIPageHeader","UICard","UITable"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ "use strict";(self.webpackChunk_kb_labs_workflow_entry=self.webpackChunk_kb_labs_workflow_entry||[]).push([["685"],{572(e,t,r){var n=r(5259),o=Symbol.for("react.element"),a=Symbol.for("react.fragment"),l=Object.prototype.hasOwnProperty,i=n.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,s={key:!0,ref:!0,__self:!0,__source:!0};function c(e,t,r){var n,a={},c=null,u=null;for(n in void 0!==r&&(c=""+r),void 0!==t.key&&(c=""+t.key),void 0!==t.ref&&(u=t.ref),t)l.call(t,n)&&!s.hasOwnProperty(n)&&(a[n]=t[n]);if(e&&e.defaultProps)for(n in t=e.defaultProps)void 0===a[n]&&(a[n]=t[n]);return{$$typeof:o,type:e,key:c,ref:u,props:a,_owner:i.current}}t.Fragment=a,t.jsx=c,t.jsxs=c},8048(e,t,r){e.exports=r(572)},6631(e,t,r){r.d(t,{y:()=>u});var n=r(8048),o=r(5259),a=r(1349);function l(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=Array(t);r<t;r++)n[r]=e[r];return n}function i(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function s(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var r,n,o=null==e?null:"u">typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=o){var a=[],l=!0,i=!1;try{for(o=o.call(e);!(l=(r=o.next()).done)&&(a.push(r.value),!t||a.length!==t);l=!0);}catch(e){i=!0,n=e}finally{try{l||null==o.return||o.return()}finally{if(i)throw n}}return a}}(e,t)||function(e,t){if(e){if("string"==typeof e)return l(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);if("Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r)return Array.from(r);if("Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return l(e,t)}}(e,t)||function(){throw TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function c(e){var t,r=e.name,o=e.schema,l=e.value,i=e.onChange,s=(0,n.jsxs)(a.UISpace,{className:"gap-tight",style:{marginBottom:4},children:[(0,n.jsxs)(a.UITypographyText,{className:"typo-label",children:[r,o.required&&(0,n.jsx)("span",{style:{color:"var(--color-error)",marginLeft:2},children:"*"})]}),o.description&&(0,n.jsxs)(a.UITypographyText,{className:"typo-caption text-tertiary",children:["— ",o.description]})]});return"boolean"===o.type?(0,n.jsxs)("div",{style:{marginBottom:16},children:[s,(0,n.jsx)("div",{children:(0,n.jsx)(a.UISwitch,{checked:void 0!==l?!!l:null!=(t=o.default)&&t,onChange:i})})]}):"number"===o.type?(0,n.jsxs)("div",{style:{marginBottom:16},children:[s,(0,n.jsx)(a.UIInputNumber,{style:{width:"100%"},value:l,placeholder:void 0!==o.default?String(o.default):void 0,onChange:i})]}):(0,n.jsxs)("div",{style:{marginBottom:16},children:[s,(0,n.jsx)(a.UIInput,{value:l,placeholder:void 0!==o.default?String(o.default):void 0,onChange:function(e){return i(e)}})]})}function u(e){var t,r,l=e.open,u=e.onClose,p=e.onRun,d=e.loading,y="workflows"in e&&Array.isArray(e.workflows),f=y?e.workflows:[],h=s(o.useState(void 0),2),m=h[0],x=h[1],g=s(o.useState("{}"),2),v=g[0],j=g[1],I=s(o.useState(null),2),b=I[0],w=I[1],U=s(o.useState({}),2),T=U[0],k=U[1],S=y?null!=(t=f.find(function(e){return e.id===m}))?t:null:null!=(r=e.workflow)?r:null,N=null==S?void 0:S.inputs,O=!!N&&Object.keys(N).length>0;o.useEffect(function(){if(l)if(j("{}"),w(null),y||x(void 0),N){var e={},t=!0,r=!1,n=void 0;try{for(var o,a=Object.entries(N)[Symbol.iterator]();!(t=(o=a.next()).done);t=!0){var i=s(o.value,2),c=i[0],u=i[1];void 0!==u.default&&(e[c]=u.default)}}catch(e){r=!0,n=e}finally{try{t||null==a.return||a.return()}finally{if(r)throw n}}k(e)}else k({})},[l,null==S?void 0:S.id,N,y]),o.useEffect(function(){if(y&&m)if(j("{}"),w(null),N){var e={},t=!0,r=!1,n=void 0;try{for(var o,a=Object.entries(N)[Symbol.iterator]();!(t=(o=a.next()).done);t=!0){var l=s(o.value,2),i=l[0],c=l[1];void 0!==c.default&&(e[i]=c.default)}}catch(e){r=!0,n=e}finally{try{t||null==a.return||a.return()}finally{if(r)throw n}}k(e)}else k({})},[m,N,y]);var C=(0,n.jsxs)(a.UISpace,{style:{justifyContent:"flex-end"},children:[(0,n.jsx)(a.UIButton,{onClick:u,disabled:d,children:"Cancel"}),(0,n.jsx)(a.UIButton,{variant:"primary",icon:(0,n.jsx)(a.UIIcon,{name:"PlayCircleOutlined"}),loading:d,disabled:!S||!O&&!!b,onClick:function(){if(S)if(O)p(S.id,T);else{var e=v.trim();if(!e||"{}"===e)return void p(S.id,{});try{var t=JSON.parse(e);p(S.id,t)}catch(e){w("Invalid JSON")}}},children:"Run"})]}),A=S?"Run Workflow: ".concat(S.name):"Run Workflow";return(0,n.jsxs)(a.UIModal,{open:l,title:(0,n.jsxs)(a.UISpace,{className:"gap-item",children:[(0,n.jsx)(a.UIIcon,{name:"ThunderboltOutlined"}),(0,n.jsx)("span",{children:A})]}),onCancel:u,footer:C,maskClosable:!d,children:[y&&(0,n.jsxs)("div",{style:{marginTop:16},children:[(0,n.jsx)(a.UITypographyText,{className:"typo-label",style:{display:"block",marginBottom:8},children:"Select Workflow"}),(0,n.jsx)(a.UISelect,{style:{width:"100%"},placeholder:"Choose a workflow...",value:m,onChange:function(e){return x(e)},showSearch:!0,options:f.map(function(e){return{label:e.name,value:e.id,description:e.description}})})]}),S&&O&&(0,n.jsx)("div",{style:{marginTop:16},children:Object.entries(N).map(function(e){var t=s(e,2),r=t[0],o=t[1];return(0,n.jsx)(c,{name:r,schema:o,value:T[r],onChange:function(e){return k(function(t){var n,o;return n=function(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{},n=Object.keys(r);"function"==typeof Object.getOwnPropertySymbols&&(n=n.concat(Object.getOwnPropertySymbols(r).filter(function(e){return Object.getOwnPropertyDescriptor(r,e).enumerable}))),n.forEach(function(t){i(e,t,r[t])})}return e}({},t),o=null!=(o=i({},r,e))?o:{},Object.getOwnPropertyDescriptors?Object.defineProperties(n,Object.getOwnPropertyDescriptors(o)):(function(e){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t.push.apply(t,r)}return t})(Object(o)).forEach(function(e){Object.defineProperty(n,e,Object.getOwnPropertyDescriptor(o,e))}),n})}},r)})}),S&&!O&&(0,n.jsxs)("div",{style:{marginTop:16},children:[(0,n.jsx)(a.UITypographyText,{className:"typo-label",style:{display:"block",marginBottom:8},children:"Input payload (JSON)"}),(0,n.jsx)(a.UIInputTextArea,{value:v,onChange:function(e){var t=e.target.value;if(j(t),!t.trim()||"{}"===t.trim())return void w(null);try{JSON.parse(t),w(null)}catch(e){w("Invalid JSON")}},rows:6,placeholder:"{}",style:{fontFamily:"var(--font-mono, monospace)",fontSize:13},status:b?"error":void 0}),b&&(0,n.jsx)(a.UITypographyText,{className:"typo-caption text-error",style:{display:"block",marginTop:4},children:b}),(0,n.jsxs)(a.UITypographyText,{className:"typo-caption text-tertiary",style:{display:"block",marginTop:8},children:["Leave empty or ",(0,n.jsx)("code",{children:"{}"})," to run without parameters"]})]})]})}},7007(e,t,r){r.r(t),r.d(t,{default:()=>g});var n=r(8048),o=r(5259),a=r(4391),l=r(1349),i=r(2383);function s(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=Array(t);r<t;r++)n[r]=e[r];return n}function c(e,t,r,n,o,a,l){try{var i=e[a](l),s=i.value}catch(e){r(e);return}i.done?t(s):Promise.resolve(s).then(n,o)}function u(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var r,n,o=null==e?null:"u">typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=o){var a=[],l=!0,i=!1;try{for(o=o.call(e);!(l=(r=o.next()).done)&&(a.push(r.value),!t||a.length!==t);l=!0);}catch(e){i=!0,n=e}finally{try{l||null==o.return||o.return()}finally{if(i)throw n}}return a}}(e,t)||function(e,t){if(e){if("string"==typeof e)return s(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);if("Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r)return Array.from(r);if("Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return s(e,t)}}(e,t)||function(){throw TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function p(e){var t=e.runId,r=e.onSuccess,o=u((0,l.useUIMessage)(),2),a=o[0],s=o[1],p=(0,i.useMutateData)("/exec/api/v1/runs/".concat(t,"/cancel"));return(0,n.jsxs)(n.Fragment,{children:[s,(0,n.jsx)(l.UIButton,{variant:"text",size:"small",danger:!0,icon:(0,n.jsx)(l.UIIcon,{name:"StopOutlined"}),loading:p.isLoading,onClick:function(e){var n;return(n=function(){var n;return function(e,t){var r,n,o,a={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]},l=Object.create(("function"==typeof Iterator?Iterator:Object).prototype),i=Object.defineProperty;return i(l,"next",{value:s(0)}),i(l,"throw",{value:s(1)}),i(l,"return",{value:s(2)}),"function"==typeof Symbol&&i(l,Symbol.iterator,{value:function(){return this}}),l;function s(i){return function(s){var c=[i,s];if(r)throw TypeError("Generator is already executing.");for(;l&&(l=0,c[0]&&(a=0)),a;)try{if(r=1,n&&(o=2&c[0]?n.return:c[0]?n.throw||((o=n.return)&&o.call(n),0):n.next)&&!(o=o.call(n,c[1])).done)return o;switch(n=0,o&&(c=[2&c[0],o.value]),c[0]){case 0:case 1:o=c;break;case 4:return a.label++,{value:c[1],done:!1};case 5:a.label++,n=c[1],c=[0];continue;case 7:c=a.ops.pop(),a.trys.pop();continue;default:if(!(o=(o=a.trys).length>0&&o[o.length-1])&&(6===c[0]||2===c[0])){a=0;continue}if(3===c[0]&&(!o||c[1]>o[0]&&c[1]<o[3])){a.label=c[1];break}if(6===c[0]&&a.label<o[1]){a.label=o[1],o=c;break}if(o&&a.label<o[2]){a.label=o[2],a.ops.push(c);break}o[2]&&a.ops.pop(),a.trys.pop();continue}c=t.call(e,a)}catch(e){c=[6,e],n=0}finally{r=o=0}if(5&c[0])throw c[1];return{value:c[0]?c[1]:void 0,done:!0}}}}(this,function(o){switch(o.label){case 0:e.preventDefault(),e.stopPropagation(),o.label=1;case 1:return o.trys.push([1,3,,4]),[4,p.mutateAsync()];case 2:return o.sent(),a.success("Run ".concat(t.slice(0,8)," cancelled")),r(),[3,4];case 3:return n=o.sent(),a.error("Failed to cancel: ".concat(n.message)),[3,4];case 4:return[2]}})},function(){var e=this,t=arguments;return new Promise(function(r,o){var a=n.apply(e,t);function l(e){c(a,r,o,l,i,"next",e)}function i(e){c(a,r,o,l,i,"throw",e)}l(void 0)})})()},children:"Cancel"})]})}function d(){var e=u((0,l.useUIMessage)(),2),t=(e[0],e[1]),r=(0,i.useData)("/exec/api/v1/stats",{pollingMs:3e3}),o=r.data,s=r.isLoading,c=r.refetch,d=(null==o?void 0:o.activeExecutions)||[],y=d.length>0,f=d.some(function(e){return"waiting_approval"===e.status}),h=function(e){if(!e)return"-";var t=Math.floor(e/1e3);if(t<60)return"".concat(t,"s");var r=Math.floor(t/60);if(r<60)return"".concat(r,"m ").concat(t%60,"s");var n=Math.floor(r/60);return"".concat(n,"h ").concat(r%60,"m")};return(0,n.jsxs)(n.Fragment,{children:[t,f&&(0,n.jsx)(l.UIAlert,{variant:"warning",message:"Waiting for your approval",description:"One or more workflow steps require your decision.",showIcon:!0,style:{marginBottom:"var(--spacing-card)"}}),(0,n.jsx)(l.UICard,{title:(0,n.jsxs)(l.UISpace,{className:"gap-item",children:[(0,n.jsxs)(l.UITypographyText,{className:"typo-card-title",children:["Active Runs (",d.length,")"]}),(0,n.jsx)(l.UIButton,{variant:"text",size:"small",icon:(0,n.jsx)(l.UIIcon,{name:"ReloadOutlined",spin:s}),onClick:function(){return c()}})]}),style:{marginBottom:"var(--spacing-section)"},children:y?(0,n.jsx)(l.UIList,{dataSource:d,renderItem:function(e){return(0,n.jsxs)(l.UIListItem,{actions:[(0,n.jsx)(p,{runId:e.id,onSuccess:function(){return c()}},"cancel")],children:[(0,n.jsx)(l.UIListItemMeta,{title:(0,n.jsx)(a.Link,{to:"/p/workflows/runs/".concat(e.id),style:{color:"inherit",textDecoration:"none"},children:(0,n.jsxs)(l.UISpace,{children:[(0,n.jsx)(l.UITypographyText,{className:"typo-body",style:{color:"var(--color-link)"},children:e.workflowName||e.type}),void 0!==e.progress&&(0,n.jsxs)(l.UITypographyText,{className:"typo-caption text-secondary",children:[e.progress,"%"]})]})}),description:(0,n.jsxs)(l.UISpace,{direction:"vertical",className:"gap-tight",style:{width:"100%"},children:[e.progressMessage&&(0,n.jsx)(l.UITypographyText,{className:"typo-description",children:e.progressMessage}),(0,n.jsxs)(l.UISpace,{className:"gap-item",children:[(0,n.jsx)(l.UIIcon,{name:"ClockCircleOutlined",className:"text-secondary"}),(0,n.jsx)(l.UITypographyText,{className:"typo-caption text-secondary",children:h(e.durationMs)}),(0,n.jsxs)(l.UITypographyText,{className:"typo-caption text-tertiary",children:["ID: ",e.id.slice(0,8)]})]})]})}),void 0!==e.progress&&(0,n.jsx)(l.UIProgress,{percent:e.progress,size:"small",status:"active",style:{width:120}})]})}}):(0,n.jsx)(l.UITypographyText,{className:"typo-description text-secondary",children:"No active runs"})})]})}var y=r(6631);function f(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=Array(t);r<t;r++)n[r]=e[r];return n}function h(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var r,n,o=null==e?null:"u">typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=o){var a=[],l=!0,i=!1;try{for(o=o.call(e);!(l=(r=o.next()).done)&&(a.push(r.value),!t||a.length!==t);l=!0);}catch(e){i=!0,n=e}finally{try{l||null==o.return||o.return()}finally{if(i)throw n}}return a}}(e,t)||function(e,t){if(e){if("string"==typeof e)return f(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);if("Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r)return Array.from(r);if("Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return f(e,t)}}(e,t)||function(){throw TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}var m={completed:(0,n.jsx)(l.UIIcon,{name:"CheckCircleOutlined",className:"text-success"}),failed:(0,n.jsx)(l.UIIcon,{name:"CloseCircleOutlined",className:"text-error"}),cancelled:(0,n.jsx)(l.UIIcon,{name:"StopOutlined",className:"text-warning"})},x={completed:"success",failed:"error",cancelled:"warning"};function g(){var e,t=(0,a.useNavigate)(),r=h((0,l.useUIMessage)(),2),s=r[0],c=r[1],u=h(o.useState(!1),2),p=u[0],f=u[1],g=(0,i.useData)("/exec/api/v1/stats",{pollingMs:3e3}).data,v=(0,i.useData)("/exec/api/v1/workflows",{params:{limit:100}}).data,j=(0,i.useMutateData)(function(e){return"/exec/api/v1/workflows/".concat(encodeURIComponent(e.workflowId),"/runs")},{mapBody:function(e){return e.input}}),I=(null==g?void 0:g.recentActivity)||[],b=[{title:"Time",dataIndex:"finishedAt",key:"finishedAt",width:100,render:function(e){return(0,n.jsx)(l.UITypographyText,{className:"typo-caption",style:{whiteSpace:"nowrap"},children:function(e){var t=new Date(e),r=Math.floor((new Date().getTime()-t.getTime())/6e4);if(r<1)return"Just now";if(r<60)return"".concat(r,"m ago");var n=Math.floor(r/60);if(n<24)return"".concat(n,"h ago");var o=Math.floor(n/24);return"".concat(o,"d ago")}(e)})}},{title:"Workflow / Job",dataIndex:"workflowName",key:"workflowName",width:280,render:function(e,t){return(0,n.jsxs)("div",{style:{overflow:"hidden"},children:[(0,n.jsx)(l.UITypographyText,{className:"typo-body",ellipsis:{tooltip:e||t.type},style:{display:"block"},children:e||t.type}),(0,n.jsxs)(l.UITypographyText,{className:"typo-caption text-tertiary",code:!0,ellipsis:{tooltip:t.id},style:{display:"block"},children:[t.id.slice(0,16),"..."]})]})}},{title:"Status",dataIndex:"status",key:"status",width:140,render:function(e){return(0,n.jsx)(l.UITag,{icon:m[e],color:x[e],children:e.toUpperCase()})}},{title:"Duration",dataIndex:"durationMs",key:"durationMs",width:100,render:function(e){return(0,n.jsx)(l.UITypographyText,{className:"typo-caption",children:function(e){if(!e)return"-";var t=Math.floor(e/1e3);if(t<60)return"".concat(t,"s");var r=Math.floor(t/60);if(r<60)return"".concat(r,"m ").concat(t%60,"s");var n=Math.floor(r/60);return"".concat(n,"h ").concat(r%60,"m")}(e)})}},{title:"Error",dataIndex:"error",key:"error",render:function(e){return e?(0,n.jsx)(l.UITypographyText,{className:"typo-caption text-error",ellipsis:{tooltip:e},style:{display:"block"},children:e}):(0,n.jsx)(l.UITypographyText,{className:"typo-caption text-tertiary",children:"-"})}}];return(0,n.jsxs)(l.UIPage,{width:"full",children:[c,(0,n.jsx)(l.UIPageHeader,{title:"Workflows",description:"Monitor workflows, jobs, and scheduled tasks",breadcrumbs:[{title:"Home",href:"/"},{title:"Workflows"}],actions:(0,n.jsx)(l.UIButton,{variant:"primary",icon:(0,n.jsx)(l.UIIcon,{name:"PlayCircleOutlined"}),onClick:function(){f(!0)},children:"Run Workflow"})}),(0,n.jsx)(d,{}),(0,n.jsx)(l.UICard,{style:{marginBottom:"var(--spacing-section)"},children:(0,n.jsxs)(l.UIRow,{gutter:16,children:[(0,n.jsx)(l.UICol,{span:6,children:(0,n.jsxs)(l.UISpace,{direction:"vertical",className:"gap-tight",children:[(0,n.jsx)(l.UITypographyText,{className:"typo-label text-secondary",children:"Total Workflows"}),(0,n.jsx)(l.UITypographyText,{className:"typo-section-title",children:(null==g?void 0:g.workflows.total)||0}),(0,n.jsxs)(l.UISpace,{className:"gap-tight",children:[(0,n.jsxs)(l.UITypographyText,{className:"typo-caption text-success",children:[(null==g?void 0:g.workflows.active)||0," active"]}),(0,n.jsxs)(l.UITypographyText,{className:"typo-caption text-secondary",children:[(null==g?void 0:g.workflows.inactive)||0," inactive"]})]})]})}),(0,n.jsx)(l.UICol,{span:6,children:(0,n.jsxs)(l.UISpace,{direction:"vertical",className:"gap-tight",children:[(0,n.jsx)(l.UITypographyText,{className:"typo-label text-secondary",children:"Jobs Running"}),(0,n.jsx)(l.UITypographyText,{className:"typo-section-title text-info",children:(null==g?void 0:g.jobs.running)||0}),(0,n.jsx)(l.UISpace,{className:"gap-tight",children:(0,n.jsxs)(l.UITypographyText,{className:"typo-caption text-secondary",children:[(null==g?void 0:g.jobs.pending)||0," pending"]})})]})}),(0,n.jsx)(l.UICol,{span:6,children:(0,n.jsxs)(l.UISpace,{direction:"vertical",className:"gap-tight",children:[(0,n.jsx)(l.UITypographyText,{className:"typo-label text-secondary",children:"Jobs Completed"}),(0,n.jsx)(l.UITypographyText,{className:"typo-section-title text-success",children:(null==g?void 0:g.jobs.completed)||0}),(0,n.jsx)(l.UISpace,{className:"gap-tight",children:(0,n.jsxs)(l.UITypographyText,{className:"typo-caption text-error",children:[(null==g?void 0:g.jobs.failed)||0," failed"]})})]})}),(0,n.jsx)(l.UICol,{span:6,children:(0,n.jsxs)(l.UISpace,{direction:"vertical",className:"gap-tight",children:[(0,n.jsx)(l.UITypographyText,{className:"typo-label text-secondary",children:"Cron Jobs"}),(0,n.jsx)(l.UITypographyText,{className:"typo-section-title",children:(null==g?void 0:g.crons.total)||0}),(0,n.jsxs)(l.UISpace,{className:"gap-tight",children:[(0,n.jsxs)(l.UITypographyText,{className:"typo-caption text-success",children:[(null==g?void 0:g.crons.enabled)||0," enabled"]}),(0,n.jsxs)(l.UITypographyText,{className:"typo-caption text-secondary",children:[(null==g?void 0:g.crons.disabled)||0," disabled"]})]})]})})]})}),(0,n.jsx)(l.UICard,{title:(0,n.jsx)(l.UITypographyText,{className:"typo-card-title",children:"Recent Activity"}),style:{marginBottom:"var(--spacing-section)"},children:(0,n.jsx)(l.UITable,{dataSource:I,columns:b,rowKey:"id",scroll:{x:760},pagination:{pageSize:20},onRow:function(e){return{style:{cursor:"pointer"},onClick:function(){return t("/p/workflows/runs/".concat(e.id))}}}})}),(0,n.jsx)(y.y,{open:p,workflows:null!=(e=null==v?void 0:v.workflows)?e:[],loading:j.isLoading,onClose:function(){return f(!1)},onRun:function(e,r){j.mutate({workflowId:e,input:r},{onSuccess:function(e){f(!1),t("/p/workflows/runs/".concat(e.runId))},onError:function(t){s.error('Failed to start workflow "'.concat(e,'": ').concat(t.message))}})}})]})}}}]);
2
+ //# sourceMappingURL=__federation_expose_Dashboard.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"__federation_expose_Dashboard.js","sources":["webpack://@kb-labs/workflow-entry/../../../node_modules/.pnpm/react@18.3.1/node_modules/react/cjs/react-jsx-runtime.production.min.js","webpack://@kb-labs/workflow-entry/../../../node_modules/.pnpm/react@18.3.1/node_modules/react/jsx-runtime.js","webpack://@kb-labs/workflow-entry/./src/studio/components/RunWorkflowModal.tsx","webpack://@kb-labs/workflow-entry/./src/studio/components/ActiveRunsPanel.tsx","webpack://@kb-labs/workflow-entry/./src/studio/pages/WorkflowsDashboard.tsx"],"sourcesContent":["/**\n * @license React\n * react-jsx-runtime.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';var f=require(\"react\"),k=Symbol.for(\"react.element\"),l=Symbol.for(\"react.fragment\"),m=Object.prototype.hasOwnProperty,n=f.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,p={key:!0,ref:!0,__self:!0,__source:!0};\nfunction q(c,a,g){var b,d={},e=null,h=null;void 0!==g&&(e=\"\"+g);void 0!==a.key&&(e=\"\"+a.key);void 0!==a.ref&&(h=a.ref);for(b in a)m.call(a,b)&&!p.hasOwnProperty(b)&&(d[b]=a[b]);if(c&&c.defaultProps)for(b in a=c.defaultProps,a)void 0===d[b]&&(d[b]=a[b]);return{$$typeof:k,type:c,key:e,ref:h,props:d,_owner:n.current}}exports.Fragment=l;exports.jsx=q;exports.jsxs=q;\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-jsx-runtime.production.min.js');\n} else {\n module.exports = require('./cjs/react-jsx-runtime.development.js');\n}\n","/**\n * @module @kb-labs/studio-app/modules/workflows/components/run-workflow-modal\n * Modal dialog for running a workflow with optional input parameters.\n * Supports two modes:\n * 1. Single workflow (workflow prop) — used from definition page\n * 2. Workflow picker (workflows prop) — used from dashboard\n */\n\nimport * as React from 'react';\nimport {\n UIModal,\n UIButton,\n UISpace,\n UITypographyText,\n UIInput,\n UIInputTextArea,\n UIInputNumber,\n UISwitch,\n UISelect,\n UIIcon,\n} from '@kb-labs/sdk/studio';\nimport type { WorkflowInfo } from '@kb-labs/workflow-contracts';\n\ntype InputField = NonNullable<WorkflowInfo['inputs']>[string];\n\ninterface RunWorkflowModalBaseProps {\n open: boolean;\n onClose: () => void;\n onRun: (workflowId: string, input: Record<string, unknown>) => void;\n loading?: boolean;\n}\n\ninterface SingleWorkflowProps extends RunWorkflowModalBaseProps {\n workflow: WorkflowInfo | null;\n workflows?: never;\n}\n\ninterface MultiWorkflowProps extends RunWorkflowModalBaseProps {\n workflow?: never;\n workflows: WorkflowInfo[];\n}\n\nexport type RunWorkflowModalProps = SingleWorkflowProps | MultiWorkflowProps;\n\nfunction DynamicField({\n name,\n schema,\n value,\n onChange,\n}: {\n name: string;\n schema: InputField;\n value: unknown;\n onChange: (val: unknown) => void;\n}) {\n const label = (\n <UISpace className=\"gap-tight\" style={{ marginBottom: 4 }}>\n <UITypographyText className=\"typo-label\">\n {name}\n {schema.required && (\n <span style={{ color: 'var(--color-error)', marginLeft: 2 }}>*</span>\n )}\n </UITypographyText>\n {schema.description && (\n <UITypographyText className=\"typo-caption text-tertiary\">\n — {schema.description}\n </UITypographyText>\n )}\n </UISpace>\n );\n\n if (schema.type === 'boolean') {\n return (\n <div style={{ marginBottom: 16 }}>\n {label}\n <div>\n <UISwitch\n checked={value !== undefined ? Boolean(value) : (schema.default as boolean ?? false)}\n onChange={onChange}\n />\n </div>\n </div>\n );\n }\n\n if (schema.type === 'number') {\n return (\n <div style={{ marginBottom: 16 }}>\n {label}\n <UIInputNumber\n style={{ width: '100%' }}\n value={value as number | undefined}\n placeholder={schema.default !== undefined ? String(schema.default) : undefined}\n onChange={onChange}\n />\n </div>\n );\n }\n\n return (\n <div style={{ marginBottom: 16 }}>\n {label}\n <UIInput\n value={value as string | undefined}\n placeholder={schema.default !== undefined ? String(schema.default) : undefined}\n onChange={(val) => onChange(val)}\n />\n </div>\n );\n}\n\nexport function RunWorkflowModal(props: RunWorkflowModalProps) {\n const { open, onClose, onRun, loading } = props;\n\n const isMulti = 'workflows' in props && Array.isArray(props.workflows);\n const workflowList: WorkflowInfo[] = isMulti ? (props as MultiWorkflowProps).workflows : [];\n\n const [selectedId, setSelectedId] = React.useState<string | undefined>(undefined);\n const [jsonValue, setJsonValue] = React.useState('{}');\n const [jsonError, setJsonError] = React.useState<string | null>(null);\n const [fieldValues, setFieldValues] = React.useState<Record<string, unknown>>({});\n\n // Resolve the active workflow\n const activeWorkflow: WorkflowInfo | null = isMulti\n ? workflowList.find((w) => w.id === selectedId) ?? null\n : (props as SingleWorkflowProps).workflow ?? null;\n\n const inputs = activeWorkflow?.inputs;\n const hasSchema = !!inputs && Object.keys(inputs).length > 0;\n\n // Reset form when modal opens or workflow changes\n React.useEffect(() => {\n if (open) {\n setJsonValue('{}');\n setJsonError(null);\n if (!isMulti) {\n setSelectedId(undefined);\n }\n if (inputs) {\n const defaults: Record<string, unknown> = {};\n for (const [key, schema] of Object.entries(inputs)) {\n if (schema.default !== undefined) {\n defaults[key] = schema.default;\n }\n }\n setFieldValues(defaults);\n } else {\n setFieldValues({});\n }\n }\n }, [open, activeWorkflow?.id, inputs, isMulti]);\n\n // Reset fields when selected workflow changes in multi mode\n React.useEffect(() => {\n if (!isMulti || !selectedId) {return;}\n setJsonValue('{}');\n setJsonError(null);\n if (inputs) {\n const defaults: Record<string, unknown> = {};\n for (const [key, schema] of Object.entries(inputs)) {\n if (schema.default !== undefined) {\n defaults[key] = schema.default;\n }\n }\n setFieldValues(defaults);\n } else {\n setFieldValues({});\n }\n }, [selectedId, inputs, isMulti]);\n\n const handleJsonChange = (e: React.ChangeEvent<HTMLTextAreaElement>) => {\n const val = e.target.value;\n setJsonValue(val);\n if (!val.trim() || val.trim() === '{}') {\n setJsonError(null);\n return;\n }\n try {\n JSON.parse(val);\n setJsonError(null);\n } catch {\n setJsonError('Invalid JSON');\n }\n };\n\n const handleRun = () => {\n if (!activeWorkflow) {return;}\n if (hasSchema) {\n onRun(activeWorkflow.id, fieldValues);\n } else {\n const trimmed = jsonValue.trim();\n if (!trimmed || trimmed === '{}') {\n onRun(activeWorkflow.id, {});\n return;\n }\n try {\n const parsed = JSON.parse(trimmed) as Record<string, unknown>;\n onRun(activeWorkflow.id, parsed);\n } catch {\n setJsonError('Invalid JSON');\n }\n }\n };\n\n const footer = (\n <UISpace style={{ justifyContent: 'flex-end' }}>\n <UIButton onClick={onClose} disabled={loading}>\n Cancel\n </UIButton>\n <UIButton\n variant=\"primary\"\n icon={<UIIcon name=\"PlayCircleOutlined\" />}\n loading={loading}\n disabled={!activeWorkflow || (!hasSchema && !!jsonError)}\n onClick={handleRun}\n >\n Run\n </UIButton>\n </UISpace>\n );\n\n const title = activeWorkflow\n ? `Run Workflow: ${activeWorkflow.name}`\n : 'Run Workflow';\n\n return (\n <UIModal\n open={open}\n title={\n <UISpace className=\"gap-item\">\n <UIIcon name=\"ThunderboltOutlined\" />\n <span>{title}</span>\n </UISpace>\n }\n onCancel={onClose}\n footer={footer}\n maskClosable={!loading}\n >\n {/* Workflow picker (multi mode only) */}\n {isMulti && (\n <div style={{ marginTop: 16 }}>\n <UITypographyText className=\"typo-label\" style={{ display: 'block', marginBottom: 8 }}>\n Select Workflow\n </UITypographyText>\n <UISelect\n style={{ width: '100%' }}\n placeholder=\"Choose a workflow...\"\n value={selectedId}\n onChange={(val) => setSelectedId(val as string)}\n showSearch\n options={workflowList.map((w) => ({\n label: w.name,\n value: w.id,\n description: w.description,\n }))}\n />\n </div>\n )}\n\n {/* Input form (shown when workflow is selected) */}\n {activeWorkflow && hasSchema && (\n <div style={{ marginTop: 16 }}>\n {Object.entries(inputs!).map(([key, schema]) => (\n <DynamicField\n key={key}\n name={key}\n schema={schema}\n value={fieldValues[key]}\n onChange={(val) => setFieldValues((prev) => ({ ...prev, [key]: val }))}\n />\n ))}\n </div>\n )}\n\n {activeWorkflow && !hasSchema && (\n <div style={{ marginTop: 16 }}>\n <UITypographyText className=\"typo-label\" style={{ display: 'block', marginBottom: 8 }}>\n Input payload (JSON)\n </UITypographyText>\n <UIInputTextArea\n value={jsonValue}\n onChange={handleJsonChange}\n rows={6}\n placeholder=\"{}\"\n style={{ fontFamily: 'var(--font-mono, monospace)', fontSize: 13 }}\n status={jsonError ? 'error' : undefined}\n />\n {jsonError && (\n <UITypographyText className=\"typo-caption text-error\" style={{ display: 'block', marginTop: 4 }}>\n {jsonError}\n </UITypographyText>\n )}\n <UITypographyText className=\"typo-caption text-tertiary\" style={{ display: 'block', marginTop: 8 }}>\n Leave empty or <code>{'{}'}</code> to run without parameters\n </UITypographyText>\n </div>\n )}\n </UIModal>\n );\n}\n","/**\n * @module @kb-labs/studio-app/modules/workflows/components/active-runs-panel\n * Always-visible panel showing actively running workflows with clickable links\n */\n\nimport * as React from 'react';\nimport { Link } from 'react-router-dom';\nimport {\n UIList,\n UIListItem,\n UIListItemMeta,\n UIProgress,\n UISpace,\n UITypographyText,\n UIButton,\n UIIcon,\n UIAlert,\n UICard,\n} from '@kb-labs/sdk/studio';\nimport { useData, useMutateData } from '@kb-labs/sdk/studio';\nimport { useUIMessage } from '@kb-labs/sdk/studio';\nimport type { DashboardStatsResponse } from '@kb-labs/workflow-contracts';\n\nfunction CancelRunButton({ runId, onSuccess }: { runId: string; onSuccess: () => void }) {\n const [messageApi, contextHolder] = useUIMessage();\n const cancel = useMutateData<void, void>(`/exec/api/v1/runs/${runId}/cancel`);\n return (\n <>\n {contextHolder}\n <UIButton\n variant=\"text\"\n size=\"small\"\n danger\n icon={<UIIcon name=\"StopOutlined\" />}\n loading={cancel.isLoading}\n onClick={async (e) => {\n e.preventDefault();\n e.stopPropagation();\n try {\n await cancel.mutateAsync();\n messageApi.success(`Run ${runId.slice(0, 8)} cancelled`);\n onSuccess();\n } catch (error) {\n messageApi.error(`Failed to cancel: ${(error as Error).message}`);\n }\n }}\n >\n Cancel\n </UIButton>\n </>\n );\n}\n\nexport function ActiveRunsPanel() {\n const [messageApi, contextHolder] = useUIMessage();\n\n const { data: stats, isLoading, refetch } = useData<DashboardStatsResponse>('/exec/api/v1/stats', {\n pollingMs: 3000,\n });\n\n const activeExecutions = stats?.activeExecutions || [];\n const hasRunningJobs = activeExecutions.length > 0;\n\n const hasPendingApprovals = activeExecutions.some(\n (ex) => (ex as { status: string }).status === 'waiting_approval'\n );\n\n\n const formatDuration = (ms?: number) => {\n if (!ms) {return '-';}\n const seconds = Math.floor(ms / 1000);\n if (seconds < 60) {return `${seconds}s`;}\n const minutes = Math.floor(seconds / 60);\n if (minutes < 60) {return `${minutes}m ${seconds % 60}s`;}\n const hours = Math.floor(minutes / 60);\n return `${hours}h ${minutes % 60}m`;\n };\n\n return (\n <>\n {contextHolder}\n\n {hasPendingApprovals && (\n <UIAlert\n variant=\"warning\"\n message=\"Waiting for your approval\"\n description=\"One or more workflow steps require your decision.\"\n showIcon\n style={{ marginBottom: 'var(--spacing-card)' }}\n />\n )}\n\n <UICard\n title={\n <UISpace className=\"gap-item\">\n <UITypographyText className=\"typo-card-title\">\n Active Runs ({activeExecutions.length})\n </UITypographyText>\n <UIButton\n variant=\"text\"\n size=\"small\"\n icon={<UIIcon name=\"ReloadOutlined\" spin={isLoading} />}\n onClick={() => refetch()}\n />\n </UISpace>\n }\n style={{ marginBottom: 'var(--spacing-section)' }}\n >\n {hasRunningJobs ? (\n <UIList\n dataSource={activeExecutions}\n renderItem={(execution) => (\n <UIListItem\n actions={[\n <CancelRunButton key=\"cancel\" runId={execution.id} onSuccess={() => refetch()} />,\n ]}\n >\n <UIListItemMeta\n title={\n <Link\n to={`/p/workflows/runs/${execution.id}`}\n style={{ color: 'inherit', textDecoration: 'none' }}\n >\n <UISpace>\n <UITypographyText className=\"typo-body\" style={{ color: 'var(--color-link)' }}>\n {execution.workflowName || execution.type}\n </UITypographyText>\n {execution.progress !== undefined && (\n <UITypographyText className=\"typo-caption text-secondary\">\n {execution.progress}%\n </UITypographyText>\n )}\n </UISpace>\n </Link>\n }\n description={\n <UISpace direction=\"vertical\" className=\"gap-tight\" style={{ width: '100%' }}>\n {execution.progressMessage && (\n <UITypographyText className=\"typo-description\">{execution.progressMessage}</UITypographyText>\n )}\n <UISpace className=\"gap-item\">\n <UIIcon name=\"ClockCircleOutlined\" className=\"text-secondary\" />\n <UITypographyText className=\"typo-caption text-secondary\">\n {formatDuration(execution.durationMs)}\n </UITypographyText>\n <UITypographyText className=\"typo-caption text-tertiary\">\n ID: {execution.id.slice(0, 8)}\n </UITypographyText>\n </UISpace>\n </UISpace>\n }\n />\n {execution.progress !== undefined && (\n <UIProgress\n percent={execution.progress}\n size=\"small\"\n status=\"active\"\n style={{ width: 120 }}\n />\n )}\n </UIListItem>\n )}\n />\n ) : (\n <UITypographyText className=\"typo-description text-secondary\">\n No active runs\n </UITypographyText>\n )}\n </UICard>\n </>\n );\n}\n","/**\n * @module @kb-labs/studio-app/modules/workflows/pages/workflows-dashboard-page\n * Main Workflow Dashboard - Activity-first view with active runs, stats, and recent history\n */\n\nimport * as React from 'react';\nimport { useNavigate } from 'react-router-dom';\nimport {\n UIRow,\n UICol,\n UISpace,\n UITypographyText,\n UIIcon,\n UICard,\n UITable,\n UITag,\n UIButton,\n useUIMessage,\n} from '@kb-labs/sdk/studio';\nimport { useData, useMutateData } from '@kb-labs/sdk/studio';\nimport type { DashboardStatsResponse, WorkflowInfo } from '@kb-labs/workflow-contracts';\nimport { ActiveRunsPanel } from '../components/ActiveRunsPanel';\nimport { RunWorkflowModal } from '../components/RunWorkflowModal';\nimport { UIPage, UIPageHeader } from '@kb-labs/sdk/studio';\n\nconst STATUS_ICONS: Record<string, React.ReactNode> = {\n completed: <UIIcon name=\"CheckCircleOutlined\" className=\"text-success\" />,\n failed: <UIIcon name=\"CloseCircleOutlined\" className=\"text-error\" />,\n cancelled: <UIIcon name=\"StopOutlined\" className=\"text-warning\" />,\n};\n\nconst STATUS_COLORS: Record<string, string> = {\n completed: 'success',\n failed: 'error',\n cancelled: 'warning',\n};\n\nfunction formatRelativeDate(dateStr: string) {\n const date = new Date(dateStr);\n const now = new Date();\n const diffMs = now.getTime() - date.getTime();\n const diffMins = Math.floor(diffMs / 60000);\n\n if (diffMins < 1) {return 'Just now';}\n if (diffMins < 60) {return `${diffMins}m ago`;}\n const diffHours = Math.floor(diffMins / 60);\n if (diffHours < 24) {return `${diffHours}h ago`;}\n const diffDays = Math.floor(diffHours / 24);\n return `${diffDays}d ago`;\n}\n\nfunction formatDuration(ms?: number) {\n if (!ms) {return '-';}\n const seconds = Math.floor(ms / 1000);\n if (seconds < 60) {return `${seconds}s`;}\n const minutes = Math.floor(seconds / 60);\n if (minutes < 60) {return `${minutes}m ${seconds % 60}s`;}\n const hours = Math.floor(minutes / 60);\n return `${hours}h ${minutes % 60}m`;\n}\n\nexport default function WorkflowsDashboard() {\n const navigate = useNavigate();\n const [messageApi, contextHolder] = useUIMessage();\n const [runModalOpen, setRunModalOpen] = React.useState(false);\n\n const { data: stats } = useData<DashboardStatsResponse>('/exec/api/v1/stats', { pollingMs: 3000 });\n const { data: workflowsData } = useData<{ workflows: WorkflowInfo[] }>('/exec/api/v1/workflows', { params: { limit: 100 } });\n\n const runWorkflowMutation = useMutateData<\n { workflowId: string; input: Record<string, unknown> },\n { runId: string; status: string }\n >(\n (p) => `/exec/api/v1/workflows/${encodeURIComponent(p.workflowId)}/runs`,\n { mapBody: (p) => p.input },\n );\n\n const recentActivity = stats?.recentActivity || [];\n\n const recentColumns = [\n {\n title: 'Time',\n dataIndex: 'finishedAt',\n key: 'finishedAt',\n width: 100,\n render: (date: string) => (\n <UITypographyText className=\"typo-caption\" style={{ whiteSpace: 'nowrap' }}>\n {formatRelativeDate(date)}\n </UITypographyText>\n ),\n },\n {\n title: 'Workflow / Job',\n dataIndex: 'workflowName',\n key: 'workflowName',\n width: 280,\n render: (name: string | undefined, record: typeof recentActivity[0]) => (\n <div style={{ overflow: 'hidden' }}>\n <UITypographyText\n className=\"typo-body\"\n ellipsis={{ tooltip: name || record.type }}\n style={{ display: 'block' }}\n >\n {name || record.type}\n </UITypographyText>\n <UITypographyText\n className=\"typo-caption text-tertiary\"\n code\n ellipsis={{ tooltip: record.id }}\n style={{ display: 'block' }}\n >\n {record.id.slice(0, 16)}...\n </UITypographyText>\n </div>\n ),\n },\n {\n title: 'Status',\n dataIndex: 'status',\n key: 'status',\n width: 140,\n render: (status: 'completed' | 'failed' | 'cancelled') => (\n <UITag icon={STATUS_ICONS[status]} color={STATUS_COLORS[status]}>\n {status.toUpperCase()}\n </UITag>\n ),\n },\n {\n title: 'Duration',\n dataIndex: 'durationMs',\n key: 'durationMs',\n width: 100,\n render: (ms?: number) => (\n <UITypographyText className=\"typo-caption\">{formatDuration(ms)}</UITypographyText>\n ),\n },\n {\n title: 'Error',\n dataIndex: 'error',\n key: 'error',\n render: (error?: string) =>\n error ? (\n <UITypographyText\n className=\"typo-caption text-error\"\n ellipsis={{ tooltip: error }}\n style={{ display: 'block' }}\n >\n {error}\n </UITypographyText>\n ) : (\n <UITypographyText className=\"typo-caption text-tertiary\">-</UITypographyText>\n ),\n },\n ];\n\n const handleOpenRunModal = () => {\n setRunModalOpen(true);\n };\n\n return (\n <UIPage width=\"full\">\n {contextHolder}\n <UIPageHeader\n title=\"Workflows\"\n description=\"Monitor workflows, jobs, and scheduled tasks\"\n breadcrumbs={[{ title: 'Home', href: '/' }, { title: 'Workflows' }]}\n actions={\n <UIButton\n variant=\"primary\"\n icon={<UIIcon name=\"PlayCircleOutlined\" />}\n onClick={handleOpenRunModal}\n >\n Run Workflow\n </UIButton>\n }\n />\n\n {/* Active Runs - always visible */}\n <ActiveRunsPanel />\n\n {/* Stats Row */}\n <UICard style={{ marginBottom: 'var(--spacing-section)' }}>\n <UIRow gutter={16}>\n <UICol span={6}>\n <UISpace direction=\"vertical\" className=\"gap-tight\">\n <UITypographyText className=\"typo-label text-secondary\">Total Workflows</UITypographyText>\n <UITypographyText className=\"typo-section-title\">{stats?.workflows.total || 0}</UITypographyText>\n <UISpace className=\"gap-tight\">\n <UITypographyText className=\"typo-caption text-success\">\n {stats?.workflows.active || 0} active\n </UITypographyText>\n <UITypographyText className=\"typo-caption text-secondary\">\n {stats?.workflows.inactive || 0} inactive\n </UITypographyText>\n </UISpace>\n </UISpace>\n </UICol>\n <UICol span={6}>\n <UISpace direction=\"vertical\" className=\"gap-tight\">\n <UITypographyText className=\"typo-label text-secondary\">Jobs Running</UITypographyText>\n <UITypographyText className=\"typo-section-title text-info\">\n {stats?.jobs.running || 0}\n </UITypographyText>\n <UISpace className=\"gap-tight\">\n <UITypographyText className=\"typo-caption text-secondary\">\n {stats?.jobs.pending || 0} pending\n </UITypographyText>\n </UISpace>\n </UISpace>\n </UICol>\n <UICol span={6}>\n <UISpace direction=\"vertical\" className=\"gap-tight\">\n <UITypographyText className=\"typo-label text-secondary\">Jobs Completed</UITypographyText>\n <UITypographyText className=\"typo-section-title text-success\">\n {stats?.jobs.completed || 0}\n </UITypographyText>\n <UISpace className=\"gap-tight\">\n <UITypographyText className=\"typo-caption text-error\">\n {stats?.jobs.failed || 0} failed\n </UITypographyText>\n </UISpace>\n </UISpace>\n </UICol>\n <UICol span={6}>\n <UISpace direction=\"vertical\" className=\"gap-tight\">\n <UITypographyText className=\"typo-label text-secondary\">Cron Jobs</UITypographyText>\n <UITypographyText className=\"typo-section-title\">{stats?.crons.total || 0}</UITypographyText>\n <UISpace className=\"gap-tight\">\n <UITypographyText className=\"typo-caption text-success\">\n {stats?.crons.enabled || 0} enabled\n </UITypographyText>\n <UITypographyText className=\"typo-caption text-secondary\">\n {stats?.crons.disabled || 0} disabled\n </UITypographyText>\n </UISpace>\n </UISpace>\n </UICol>\n </UIRow>\n </UICard>\n\n {/* Recent Activity */}\n <UICard\n title={<UITypographyText className=\"typo-card-title\">Recent Activity</UITypographyText>}\n style={{ marginBottom: 'var(--spacing-section)' }}\n >\n <UITable\n dataSource={recentActivity}\n columns={recentColumns}\n rowKey=\"id\"\n scroll={{ x: 760 }}\n pagination={{ pageSize: 20 }}\n onRow={(record: typeof recentActivity[0]) => ({\n style: { cursor: 'pointer' },\n onClick: () => navigate(`/p/workflows/runs/${record.id}`),\n })}\n />\n </UICard>\n\n <RunWorkflowModal\n open={runModalOpen}\n workflows={workflowsData?.workflows ?? []}\n loading={runWorkflowMutation.isLoading}\n onClose={() => setRunModalOpen(false)}\n onRun={(workflowId, input) => {\n runWorkflowMutation.mutate({ workflowId, input }, {\n onSuccess: (data) => {\n setRunModalOpen(false);\n navigate(`/p/workflows/runs/${data.runId}`);\n },\n onError: (err) => {\n messageApi.error(`Failed to start workflow \"${workflowId}\": ${err.message}`);\n },\n });\n }}\n />\n </UIPage>\n );\n}\n"],"names":["r","Symbol","Object","DynamicField","param","_schema_default","name","schema","value","onChange","label","UISpace","UITypographyText","UISwitch","undefined","Boolean","UIInputNumber","String","UIInput","onChange1","val","RunWorkflowModal","props","_workflowList_find","_props_workflow","open","onClose","onRun","loading","isMulti","Array","workflowList","_React_useState","selectedId","setSelectedId","_React_useState1","jsonValue","setJsonValue","_React_useState2","jsonError","setJsonError","_React_useState3","fieldValues","setFieldValues","activeWorkflow","w","inputs","hasSchema","React","defaults","_iteratorError","key","footer","UIButton","UIIcon","trimmed","parsed","JSON","title","UIModal","UISelect","prev","UIInputTextArea","e","CancelRunButton","runId","onSuccess","_useUIMessage","messageApi","contextHolder","cancel","useMutateData","onClick","error","ActiveRunsPanel","_useData","stats","isLoading","refetch","activeExecutions","hasRunningJobs","hasPendingApprovals","ex","formatDuration","ms","seconds","Math","minutes","hours","UIAlert","UICard","UIList","renderItem","execution","UIListItem","UIListItemMeta","Link","UIProgress","STATUS_ICONS","STATUS_COLORS","WorkflowsDashboard","navigate","useNavigate","runModalOpen","setRunModalOpen","workflowsData","_useData1","runWorkflowMutation","p","encodeURIComponent","mapBody","recentActivity","recentColumns","render","date","formatRelativeDate","dateStr","Date","diffMins","diffMs","now","diffHours","diffDays","record","status","UITag","UIPage","UIPageHeader","UIRow","UICol","UITable","onRow","workflowId","input","data","onError","err"],"mappings":"+HASa,IAAI,EAAEA,EAAQ,MAAS,EAAEC,OAAO,GAAG,CAAC,iBAAiB,EAAEA,OAAO,GAAG,CAAC,kBAAkB,EAAEC,OAAO,SAAS,CAAC,cAAc,CAAC,EAAE,EAAE,kDAAkD,CAAC,iBAAiB,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,OAAO,CAAC,EAAE,SAAS,CAAC,CAAC,EAClP,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,CAAC,EAAE,EAAE,KAAK,EAAE,KAAiF,IAAI,KAAhF,KAAK,IAAI,GAAI,GAAE,GAAG,GAAG,KAAK,IAAI,EAAE,GAAG,EAAG,GAAE,GAAG,EAAE,GAAG,AAAD,EAAG,KAAK,IAAI,EAAE,GAAG,EAAG,GAAE,EAAE,GAAG,AAAD,EAAY,EAAE,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,cAAc,CAAC,IAAK,EAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,AAAD,EAAG,GAAG,GAAG,EAAE,YAAY,CAAC,IAAI,KAAK,EAAE,EAAE,YAAY,CAAG,KAAK,IAAI,CAAC,CAAC,EAAE,EAAG,EAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,AAAD,EAAG,MAAM,CAAC,SAAS,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,EAAQ,QAAQ,CAAC,EAAE,EAAQ,GAAG,CAAC,EAAE,EAAQ,IAAI,CAAC,C,cCPxW,EAAO,OAAO,CAAGF,EAAjB,I,8mCCyCF,SAASG,EAAaC,CAUrB,E,IAuB4DC,EAhC3DC,EADoBF,EACpBE,IAAI,CACJC,EAFoBH,EAEpBG,MAAM,CACNC,EAHoBJ,EAGpBI,KAAK,CACLC,EAJoBL,EAIpBK,QAAQ,CAOFC,EACJ,WAACC,EAAAA,OAAOA,CAAAA,CAAC,UAAU,YAAY,MAAO,CAAE,aAAc,CAAE,E,UACtD,WAACC,EAAAA,gBAAgBA,CAAAA,CAAC,UAAU,a,UACzBN,EACAC,EAAO,QAAQ,EACd,UAAC,QAAK,MAAO,CAAE,MAAO,qBAAsB,WAAY,CAAE,E,SAAG,G,MAGhEA,EAAO,WAAW,EACjB,WAACK,EAAAA,gBAAgBA,CAAAA,CAAC,UAAU,6B,UAA6B,KACpDL,EAAO,WAAW,C,YAM7B,AAAIA,AAAgB,YAAhBA,EAAO,IAAI,CAEX,WAAC,OAAI,MAAO,CAAE,aAAc,EAAG,E,UAC5BG,EACD,UAAC,O,SACC,UAACG,EAAAA,QAAQA,CAAAA,CACP,QAASL,AAAUM,SAAVN,EAAsBO,EAAQP,EAAS,MAACH,CAAAA,EAAAA,EAAO,OAAO,AAAD,GAAbA,EACjD,SAAUI,C,QAOhBF,AAAgB,WAAhBA,EAAO,IAAI,CAEX,WAAC,OAAI,MAAO,CAAE,aAAc,EAAG,E,UAC5BG,EACD,UAACM,EAAAA,aAAaA,CAAAA,CACZ,MAAO,CAAE,MAAO,MAAO,EACvB,MAAOR,EACP,YAAaD,AAAmBO,SAAnBP,EAAO,OAAO,CAAiBU,OAAOV,EAAO,OAAO,EAAIO,OACrE,SAAUL,C,MAOhB,WAAC,OAAI,MAAO,CAAE,aAAc,EAAG,E,UAC5BC,EACD,UAACQ,EAAAA,OAAOA,CAAAA,CACN,MAAOV,EACP,YAAaD,AAAmBO,SAAnBP,EAAO,OAAO,CAAiBU,OAAOV,EAAO,OAAO,EAAIO,OACrEK,SAAU,SAACC,CAAG,E,OAAKX,EAASW,E,MAIpC,CAEO,SAASC,EAAiBC,CAA4B,EAC3D,IAYIC,EACAC,EAbIC,EAAkCH,EAAlCG,IAAI,CAAEC,EAA4BJ,EAA5BI,OAAO,CAAEC,EAAmBL,EAAnBK,KAAK,CAAEC,EAAYN,EAAZM,OAAO,CAE/BC,EAAU,cAAeP,GAASQ,MAAM,OAAO,CAACR,EAAM,SAAS,EAC/DS,EAA+BF,EAAWP,EAA6B,SAAS,CAAG,EAAE,CAEvDU,EAAAA,EAAAA,EAAAA,QAAc,CAAqBlB,QAAAA,GAAhEmB,EAA6BD,CAAAA,CAAAA,EAAAA,CAAjBE,EAAiBF,CAAAA,CAAAA,EAAAA,CACFG,EAAAA,EAAAA,EAAAA,QAAc,CAAC,SAA1CC,EAA2BD,CAAAA,CAAAA,EAAAA,CAAhBE,EAAgBF,CAAAA,CAAAA,EAAAA,CACAG,EAAAA,EAAAA,EAAAA,QAAc,CAAgB,SAAzDC,EAA2BD,CAAAA,CAAAA,EAAAA,CAAhBE,EAAgBF,CAAAA,CAAAA,EAAAA,CACIG,EAAAA,EAAAA,EAAAA,QAAc,CAA0B,CAAC,MAAxEC,EAA+BD,CAAAA,CAAAA,EAAAA,CAAlBE,EAAkBF,CAAAA,CAAAA,EAAAA,CAGhCG,EAAsCf,EAAAA,MACxCN,CAAAA,EAAAA,EAAa,IAAI,CAAC,SAACsB,CAAC,E,OAAKA,EAAE,EAAE,GAAKZ,C,IAAlCV,EAAiD,WACjDC,CAAAA,EAACF,EAA8B,QAAQ,AAAD,EAAtCE,EAA2C,KAEzCsB,EAASF,MAAAA,EAAAA,KAAAA,EAAAA,EAAgB,MAAM,CAC/BG,EAAY,CAAC,CAACD,GAAU5C,OAAO,IAAI,CAAC4C,GAAQ,MAAM,CAAG,EAG3DE,EAAAA,SAAe,CAAC,WACd,GAAIvB,EAMF,GALAY,EAAa,MACbG,EAAa,MACT,AAACX,GACHK,EAAcpB,QAEZgC,EAAQ,CACV,IAAMG,EAAoC,CAAC,EACtCC,EAAAA,GAAAA,EAAAA,GAAAA,EAAAA,O,IAAL,QAAKA,EAAAA,EAAuBhD,OAAO,OAAO,CAAC4C,EAAO,CAAPA,OAAAA,QAAAA,CAAAA,GAAtCI,CAAAA,CAAAA,EAAAA,AAAAA,CAAAA,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,IAAAA,AAAAA,EAAAA,EAAAA,GAA+C,CAA/CA,IAAAA,EAAAA,EAAAA,EAAAA,KAAAA,CAAAA,GAAOC,EAAAA,CAAAA,CAAAA,EAAAA,CAAK5C,EAAAA,CAAAA,CAAAA,EAAAA,AACXA,AAAmBO,UAAnBP,EAAO,OAAO,EAChB0C,CAAAA,CAAQ,CAACE,EAAI,CAAG5C,EAAO,OAAO,AAAD,CAEjC,C,UAJK2C,EAAAA,GAAAA,EAAAA,C,aAAAA,GAAAA,AAAAA,MAAAA,EAAAA,MAAAA,EAAAA,EAAAA,MAAAA,E,YAAAA,E,MAAAA,C,EAKLP,EAAeM,EACjB,MACEN,EAAe,CAAC,EAGtB,EAAG,CAAClB,EAAMmB,MAAAA,EAAAA,KAAAA,EAAAA,EAAgB,EAAE,CAAEE,EAAQjB,EAAQ,EAG9CmB,EAAAA,SAAe,CAAC,WACd,GAAI,AAACnB,GAAYI,EAGjB,GAFAI,EAAa,MACbG,EAAa,MACTM,EAAQ,CACV,IAAMG,EAAoC,CAAC,EACtCC,EAAAA,GAAAA,EAAAA,GAAAA,EAAAA,O,IAAL,QAAKA,EAAAA,EAAuBhD,OAAO,OAAO,CAAC4C,EAAO,CAAPA,OAAAA,QAAAA,CAAAA,GAAtCI,CAAAA,CAAAA,EAAAA,AAAAA,CAAAA,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,IAAAA,AAAAA,EAAAA,EAAAA,GAA+C,CAA/CA,IAAAA,EAAAA,EAAAA,EAAAA,KAAAA,CAAAA,GAAOC,EAAAA,CAAAA,CAAAA,EAAAA,CAAK5C,EAAAA,CAAAA,CAAAA,EAAAA,AACXA,AAAmBO,UAAnBP,EAAO,OAAO,EAChB0C,CAAAA,CAAQ,CAACE,EAAI,CAAG5C,EAAO,OAAO,AAAD,CAEjC,C,UAJK2C,EAAAA,GAAAA,EAAAA,C,aAAAA,GAAAA,AAAAA,MAAAA,EAAAA,MAAAA,EAAAA,EAAAA,MAAAA,E,YAAAA,E,MAAAA,C,EAKLP,EAAeM,EACjB,MACEN,EAAe,CAAC,EAEpB,EAAG,CAACV,EAAYa,EAAQjB,EAAQ,EAoChC,IAAMuB,EACJ,WAACzC,EAAAA,OAAOA,CAAAA,CAAC,MAAO,CAAE,eAAgB,UAAW,E,UAC3C,UAAC0C,EAAAA,QAAQA,CAAAA,CAAC,QAAS3B,EAAS,SAAUE,E,SAAS,Q,GAG/C,UAACyB,EAAAA,QAAQA,CAAAA,CACP,QAAQ,UACR,KAAM,UAACC,EAAAA,MAAMA,CAAAA,CAAC,KAAK,oB,GACnB,QAAS1B,EACT,SAAU,CAACgB,GAAmB,CAACG,GAAa,CAAC,CAACR,EAC9C,QA7BY,WAChB,GAAKK,EACL,GAAIG,EACFpB,EAAMiB,EAAe,EAAE,CAAEF,OACpB,CACL,IAAMa,EAAUnB,EAAU,IAAI,GAC9B,GAAI,CAACmB,GAAWA,AAAY,OAAZA,EAAkB,YAChC5B,EAAMiB,EAAe,EAAE,CAAE,CAAC,GAG5B,GAAI,CACF,IAAMY,EAASC,KAAK,KAAK,CAACF,GAC1B5B,EAAMiB,EAAe,EAAE,CAAEY,EAC3B,CAAE,QAAM,CACNhB,EAAa,eACf,CACF,CACF,E,SAaK,K,MAMCkB,EAAQd,EACT,iBAAoC,OAApBA,EAAe,IAAI,EACpC,eAEJ,MACE,WAACe,EAAAA,OAAOA,CAAAA,CACN,KAAMlC,EACN,MACE,WAACd,EAAAA,OAAOA,CAAAA,CAAC,UAAU,W,UACjB,UAAC2C,EAAAA,MAAMA,CAAAA,CAAC,KAAK,qB,GACb,UAAC,Q,SAAMI,C,MAGX,SAAUhC,EACV,OAAQ0B,EACR,aAAc,CAACxB,E,UAGdC,GACC,WAAC,OAAI,MAAO,CAAE,UAAW,EAAG,E,UAC1B,UAACjB,EAAAA,gBAAgBA,CAAAA,CAAC,UAAU,aAAa,MAAO,CAAE,QAAS,QAAS,aAAc,CAAE,E,SAAG,iB,GAGvF,UAACgD,EAAAA,QAAQA,CAAAA,CACP,MAAO,CAAE,MAAO,MAAO,EACvB,YAAY,uBACZ,MAAO3B,EACPxB,SAAU,SAACW,CAAG,E,OAAKc,EAAcd,E,EACjC,WAAU,GACV,QAASW,EAAa,GAAG,CAAC,SAACc,CAAC,E,MAAM,CAChC,MAAOA,EAAE,IAAI,CACb,MAAOA,EAAE,EAAE,CACX,YAAaA,EAAE,WAAW,AAC5B,C,QAMLD,GAAkBG,GACjB,UAAC,OAAI,MAAO,CAAE,UAAW,EAAG,E,SACzB7C,OAAO,OAAO,CAAC4C,GAAS,GAAG,CAAC,Y,aAAEK,EAAAA,CAAAA,CAAAA,EAAAA,CAAK5C,EAAAA,CAAAA,CAAAA,EAAAA,C,MAClC,UAACJ,EAAAA,CAEC,KAAMgD,EACN,OAAQ5C,EACR,MAAOmC,CAAW,CAACS,EAAI,CACvB1C,SAAU,SAACW,CAAG,E,OAAKuB,EAAe,SAACkB,CAAI,M,aAAM,A,mUAAA,GAAKA,G,WAAM,KAACV,EAAM/B,I,kVAJ1D+B,E,KAUZP,GAAkB,CAACG,GAClB,WAAC,OAAI,MAAO,CAAE,UAAW,EAAG,E,UAC1B,UAACnC,EAAAA,gBAAgBA,CAAAA,CAAC,UAAU,aAAa,MAAO,CAAE,QAAS,QAAS,aAAc,CAAE,E,SAAG,sB,GAGvF,UAACkD,EAAAA,eAAeA,CAAAA,CACd,MAAO1B,EACP,SA/Ge,SAAC2B,CAAC,EACzB,IAAM3C,EAAM2C,EAAE,MAAM,CAAC,KAAK,CAE1B,GADA1B,EAAajB,GACT,CAACA,EAAI,IAAI,IAAMA,AAAe,OAAfA,EAAI,IAAI,GAAa,YACtCoB,EAAa,MAGf,GAAI,CACFiB,KAAK,KAAK,CAACrC,GACXoB,EAAa,KACf,CAAE,QAAM,CACNA,EAAa,eACf,CACF,EAmGU,KAAM,EACN,YAAY,KACZ,MAAO,CAAE,WAAY,8BAA+B,SAAU,EAAG,EACjE,OAAQD,EAAY,QAAUzB,M,GAE/ByB,GACC,UAAC3B,EAAAA,gBAAgBA,CAAAA,CAAC,UAAU,0BAA0B,MAAO,CAAE,QAAS,QAAS,UAAW,CAAE,E,SAC3F2B,C,GAGL,WAAC3B,EAAAA,gBAAgBA,CAAAA,CAAC,UAAU,6BAA6B,MAAO,CAAE,QAAS,QAAS,UAAW,CAAE,E,UAAG,kBACnF,UAAC,Q,SAAM,I,GAAY,6B,QAM9C,C,2oCCpRA,SAASoD,EAAgB5D,CAA8D,E,IAA5D6D,EAAF7D,EAAE6D,KAAK,CAAEC,EAAT9D,EAAS8D,SAAS,CACLC,EAAAA,EAAAA,AAAAA,GAAAA,EAAAA,YAAAA,AAAAA,IAAYA,GAAzCC,EAA6BD,CAAAA,CAAAA,EAAAA,CAAjBE,EAAiBF,CAAAA,CAAAA,EAAAA,CAC9BG,EAASC,AAAAA,GAAAA,EAAAA,aAAAA,AAAAA,EAA2B,qBAA0B,OAANN,EAAM,YACpE,MACE,uB,UACGI,EACD,UAAChB,EAAAA,QAAQA,CAAAA,CACP,QAAQ,OACR,KAAK,QACL,OAAM,GACN,KAAM,UAACC,EAAAA,MAAMA,CAAAA,CAAC,KAAK,c,GACnB,QAASgB,EAAO,SAAS,CACzBE,QAAS,SAAOT,CAAC,M,0BAONU,E,suCANTV,EAAE,cAAc,GAChBA,EAAE,eAAe,G,iBAEf,O,sBAAA,C,EAAMO,EAAO,WAAW,G,eAAxB,SACAF,EAAW,OAAO,CAAE,OAAwB,OAAlBH,EAAM,KAAK,CAAC,EAAG,GAAG,eAC5CC,I,oBACOO,EAAAA,EAAAA,IAAAA,GACPL,EAAW,KAAK,CAAE,qBAA6C,OAAxBK,EAAgB,OAAO,G,yBAElE,E,yLACD,Q,KAKP,CAEO,SAASC,IACd,IAAoCP,EAAAA,EAAAA,AAAAA,GAAAA,EAAAA,YAAAA,AAAAA,IAAYA,GAA7BE,GAAiBF,CAAAA,CAAAA,EAAAA,CAAAA,CAAAA,CAAAA,EAAAA,EAEQQ,EAAAA,AAAAA,GAAAA,EAAAA,OAAAA,AAAAA,EAAgC,qBAAsB,CAChG,UAAW,GACb,GAFcC,EAA8BD,EAApC,IAAI,CAASE,EAAuBF,EAAvBE,SAAS,CAAEC,EAAYH,EAAZG,OAAO,CAIjCC,EAAmBH,AAAAA,CAAAA,MAAAA,EAAAA,KAAAA,EAAAA,EAAO,gBAAgB,AAAD,GAAK,EAAE,CAChDI,EAAiBD,EAAiB,MAAM,CAAG,EAE3CE,EAAsBF,EAAiB,IAAI,CAC/C,SAACG,CAAE,E,MAAMA,AAAqC,qBAArCA,EAA0B,MAAM,A,GAIrCC,EAAiB,SAACC,CAAE,EACxB,GAAI,CAACA,EAAK,MAAO,IACjB,IAAMC,EAAUC,KAAK,KAAK,CAACF,EAAK,KAChC,GAAIC,EAAU,GAAK,MAAQ,GAAU,OAARA,EAAQ,KACrC,IAAME,EAAUD,KAAK,KAAK,CAACD,EAAU,IACrC,GAAIE,EAAU,GAAK,MAAQ,GAAcF,MAAAA,CAAZE,EAAQ,MAAiB,OAAbF,EAAU,GAAG,KACtD,IAAMG,EAAQF,KAAK,KAAK,CAACC,EAAU,IACnC,MAAQ,GAAYA,MAAAA,CAAVC,EAAM,MAAiB,OAAbD,EAAU,GAAG,IACnC,EAEA,MACE,uB,UACGlB,EAEAY,GACC,UAACQ,EAAAA,OAAOA,CAAAA,CACN,QAAQ,UACR,QAAQ,4BACR,YAAY,oDACZ,SAAQ,GACR,MAAO,CAAE,aAAc,qBAAsB,C,GAIjD,UAACC,EAAAA,MAAMA,CAAAA,CACL,MACE,WAAC/E,EAAAA,OAAOA,CAAAA,CAAC,UAAU,W,UACjB,WAACC,EAAAA,gBAAgBA,CAAAA,CAAC,UAAU,kB,UAAkB,gBAC9BmE,EAAiB,MAAM,CAAC,I,GAExC,UAAC1B,EAAAA,QAAQA,CAAAA,CACP,QAAQ,OACR,KAAK,QACL,KAAM,UAACC,EAAAA,MAAMA,CAAAA,CAAC,KAAK,iBAAiB,KAAMuB,C,GAC1CL,QAAS,W,OAAMM,G,OAIrB,MAAO,CAAE,aAAc,wBAAyB,E,SAE/CE,EACC,UAACW,EAAAA,MAAMA,CAAAA,CACL,WAAYZ,EACZa,WAAY,SAACC,CAAS,E,MACpB,WAACC,EAAAA,UAAUA,CAAAA,CACT,QAAS,CACP,UAAC9B,EAAAA,CAA6B,MAAO6B,EAAU,EAAE,CAAE3B,UAAW,W,OAAMY,G,GAA/C,UACtB,C,UAED,UAACiB,EAAAA,cAAcA,CAAAA,CACb,MACE,UAACC,EAAAA,IAAIA,CAAAA,CACH,GAAK,qBAAiC,OAAbH,EAAU,EAAE,EACrC,MAAO,CAAE,MAAO,UAAW,eAAgB,MAAO,E,SAElD,WAAClF,EAAAA,OAAOA,CAAAA,C,UACN,UAACC,EAAAA,gBAAgBA,CAAAA,CAAC,UAAU,YAAY,MAAO,CAAE,MAAO,mBAAoB,E,SACzEiF,EAAU,YAAY,EAAIA,EAAU,IAAI,A,GAE1CA,AAAuB/E,SAAvB+E,EAAU,QAAQ,EACjB,WAACjF,EAAAA,gBAAgBA,CAAAA,CAAC,UAAU,8B,UACzBiF,EAAU,QAAQ,CAAC,I,QAM9B,YACE,WAAClF,EAAAA,OAAOA,CAAAA,CAAC,UAAU,WAAW,UAAU,YAAY,MAAO,CAAE,MAAO,MAAO,E,UACxEkF,EAAU,eAAe,EACxB,UAACjF,EAAAA,gBAAgBA,CAAAA,CAAC,UAAU,mB,SAAoBiF,EAAU,eAAe,A,GAE3E,WAAClF,EAAAA,OAAOA,CAAAA,CAAC,UAAU,W,UACjB,UAAC2C,EAAAA,MAAMA,CAAAA,CAAC,KAAK,sBAAsB,UAAU,gB,GAC7C,UAAC1C,EAAAA,gBAAgBA,CAAAA,CAAC,UAAU,8B,SACzBuE,EAAeU,EAAU,UAAU,C,GAEtC,WAACjF,EAAAA,gBAAgBA,CAAAA,CAAC,UAAU,6B,UAA6B,OAClDiF,EAAU,EAAE,CAAC,KAAK,CAAC,EAAG,G,WAMpCA,AAAuB/E,SAAvB+E,EAAU,QAAQ,EACjB,UAACI,EAAAA,UAAUA,CAAAA,CACT,QAASJ,EAAU,QAAQ,CAC3B,KAAK,QACL,OAAO,SACP,MAAO,CAAE,MAAO,GAAI,C,SAO9B,UAACjF,EAAAA,gBAAgBA,CAAAA,CAAC,UAAU,kC,SAAkC,gB,OAOxE,C,m8BClJA,IAAMsF,EAAgD,CACpD,UAAW,UAAC5C,EAAAA,MAAMA,CAAAA,CAAC,KAAK,sBAAsB,UAAU,c,GACxD,OAAQ,UAACA,EAAAA,MAAMA,CAAAA,CAAC,KAAK,sBAAsB,UAAU,Y,GACrD,UAAW,UAACA,EAAAA,MAAMA,CAAAA,CAAC,KAAK,eAAe,UAAU,c,EACnD,EAEM6C,EAAwC,CAC5C,UAAW,UACX,OAAQ,QACR,UAAW,SACb,EA0Be,SAASC,IACtB,I,EAAMC,EAAWC,AAAAA,GAAAA,EAAAA,WAAAA,AAAAA,IACmBnC,EAAAA,EAAAA,AAAAA,GAAAA,EAAAA,YAAAA,AAAAA,IAAYA,GAAzCC,EAA6BD,CAAAA,CAAAA,EAAAA,CAAjBE,EAAiBF,CAAAA,CAAAA,EAAAA,CACInC,EAAAA,EAAAA,EAAAA,QAAc,CAAC,OAAhDuE,EAAiCvE,CAAAA,CAAAA,EAAAA,CAAnBwE,EAAmBxE,CAAAA,CAAAA,EAAAA,CAE1B4C,EAAUD,AAAAA,AAAAA,GAAAA,EAAAA,OAAAA,AAAAA,EAAgC,qBAAsB,CAAE,UAAW,GAAK,GAAxF,IAAI,CACE8B,EAAkBC,AAAAA,AAAAA,GAAAA,EAAAA,OAAAA,AAAAA,EAAuC,yBAA0B,CAAE,OAAQ,CAAE,MAAO,GAAI,CAAE,GAAlH,IAAI,CAENC,EAAsBpC,AAAAA,GAAAA,EAAAA,aAAAA,AAAAA,EAI1B,SAACqC,CAAC,E,MAAM,0BAA0D,OAAjCC,mBAAmBD,EAAE,UAAU,EAAE,Q,EAClE,CAAEE,QAAS,SAACF,CAAC,E,OAAKA,EAAE,KAAK,A,CAAC,GAGtBG,EAAiBnC,AAAAA,CAAAA,MAAAA,EAAAA,KAAAA,EAAAA,EAAO,cAAc,AAAD,GAAK,EAAE,CAE5CoC,EAAgB,CACpB,CACE,MAAO,OACP,UAAW,aACX,IAAK,aACL,MAAO,IACPC,OAAQ,SAACC,CAAI,E,MACX,UAACtG,EAAAA,gBAAgBA,CAAAA,CAAC,UAAU,eAAe,MAAO,CAAE,WAAY,QAAS,E,SACtEuG,AAlDX,SAA4BC,CAAe,EACzC,IAAMF,EAAO,IAAIG,KAAKD,GAGhBE,EAAWhC,KAAK,KAAK,CAACiC,AADbC,CADH,IAAIH,OACG,OAAO,GAAKH,EAAK,OAAO,EAAC,EACP,KAErC,GAAII,EAAW,EAAI,MAAO,WAC1B,GAAIA,EAAW,GAAK,MAAQ,GAAW,OAATA,EAAS,SACvC,IAAMG,EAAYnC,KAAK,KAAK,CAACgC,EAAW,IACxC,GAAIG,EAAY,GAAK,MAAQ,GAAY,OAAVA,EAAU,SACzC,IAAMC,EAAWpC,KAAK,KAAK,CAACmC,EAAY,IACxC,MAAQ,GAAW,OAATC,EAAS,QACrB,EAsC8BR,E,GAG1B,EACA,CACE,MAAO,iBACP,UAAW,eACX,IAAK,eACL,MAAO,IACPD,OAAQ,SAAC3G,CAAI,CAAsBqH,CAAM,E,MACvC,WAAC,OAAI,MAAO,CAAE,SAAU,QAAS,E,UAC/B,UAAC/G,EAAAA,gBAAgBA,CAAAA,CACf,UAAU,YACV,SAAU,CAAE,QAASN,GAAQqH,EAAO,IAAI,AAAC,EACzC,MAAO,CAAE,QAAS,OAAQ,E,SAEzBrH,GAAQqH,EAAO,IAAI,A,GAEtB,WAAC/G,EAAAA,gBAAgBA,CAAAA,CACf,UAAU,6BACV,KAAI,GACJ,SAAU,CAAE,QAAS+G,EAAO,EAAE,AAAC,EAC/B,MAAO,CAAE,QAAS,OAAQ,E,UAEzBA,EAAO,EAAE,CAAC,KAAK,CAAC,EAAG,IAAI,M,MAIhC,EACA,CACE,MAAO,SACP,UAAW,SACX,IAAK,SACL,MAAO,IACPV,OAAQ,SAACW,CAAM,E,MACb,UAACC,EAAAA,KAAKA,CAAAA,CAAC,KAAM3B,CAAY,CAAC0B,EAAO,CAAE,MAAOzB,CAAa,CAACyB,EAAO,C,SAC5DA,EAAO,WAAW,E,GAGzB,EACA,CACE,MAAO,WACP,UAAW,aACX,IAAK,aACL,MAAO,IACPX,OAAQ,SAAC7B,CAAE,E,MACT,UAACxE,EAAAA,gBAAgBA,CAAAA,CAAC,UAAU,e,SAAgBuE,AAlFpD,SAAwBC,CAAW,EACjC,GAAI,CAACA,EAAK,MAAO,IACjB,IAAMC,EAAUC,KAAK,KAAK,CAACF,EAAK,KAChC,GAAIC,EAAU,GAAK,MAAQ,GAAU,OAARA,EAAQ,KACrC,IAAME,EAAUD,KAAK,KAAK,CAACD,EAAU,IACrC,GAAIE,EAAU,GAAK,MAAQ,GAAcF,MAAAA,CAAZE,EAAQ,MAAiB,OAAbF,EAAU,GAAG,KACtD,IAAMG,EAAQF,KAAK,KAAK,CAACC,EAAU,IACnC,MAAQ,GAAYA,MAAAA,CAAVC,EAAM,MAAiB,OAAbD,EAAU,GAAG,IACnC,EA0EmEH,E,GAE/D,EACA,CACE,MAAO,QACP,UAAW,QACX,IAAK,QACL6B,OAAQ,SAACxC,CAAK,E,OACZA,EACE,UAAC7D,EAAAA,gBAAgBA,CAAAA,CACf,UAAU,0BACV,SAAU,CAAE,QAAS6D,CAAM,EAC3B,MAAO,CAAE,QAAS,OAAQ,E,SAEzBA,C,GAGH,UAAC7D,EAAAA,gBAAgBA,CAAAA,CAAC,UAAU,6B,SAA6B,G,GAE/D,EACD,CAMD,MACE,WAACkH,EAAAA,MAAMA,CAAAA,CAAC,MAAM,O,UACXzD,EACD,UAAC0D,EAAAA,YAAYA,CAAAA,CACX,MAAM,YACN,YAAY,+CACZ,YAAa,CAAC,CAAE,MAAO,OAAQ,KAAM,GAAI,EAAG,CAAE,MAAO,WAAY,EAAE,CACnE,QACE,UAAC1E,EAAAA,QAAQA,CAAAA,CACP,QAAQ,UACR,KAAM,UAACC,EAAAA,MAAMA,CAAAA,CAAC,KAAK,oB,GACnB,QAfiB,WACzBkD,EAAgB,GAClB,E,SAcS,c,KAOL,UAAC9B,EAAeA,CAAAA,GAGhB,UAACgB,EAAAA,MAAMA,CAAAA,CAAC,MAAO,CAAE,aAAc,wBAAyB,E,SACtD,WAACsC,EAAAA,KAAKA,CAAAA,CAAC,OAAQ,G,UACb,UAACC,EAAAA,KAAKA,CAAAA,CAAC,KAAM,E,SACX,WAACtH,EAAAA,OAAOA,CAAAA,CAAC,UAAU,WAAW,UAAU,Y,UACtC,UAACC,EAAAA,gBAAgBA,CAAAA,CAAC,UAAU,4B,SAA4B,iB,GACxD,UAACA,EAAAA,gBAAgBA,CAAAA,CAAC,UAAU,qB,SAAsBgE,AAAAA,CAAAA,MAAAA,EAAAA,KAAAA,EAAAA,EAAO,SAAS,CAAC,KAAK,AAAD,GAAK,C,GAC5E,WAACjE,EAAAA,OAAOA,CAAAA,CAAC,UAAU,Y,UACjB,WAACC,EAAAA,gBAAgBA,CAAAA,CAAC,UAAU,4B,UACzBgE,AAAAA,CAAAA,MAAAA,EAAAA,KAAAA,EAAAA,EAAO,SAAS,CAAC,MAAM,AAAD,GAAK,EAAE,U,GAEhC,WAAChE,EAAAA,gBAAgBA,CAAAA,CAAC,UAAU,8B,UACzBgE,AAAAA,CAAAA,MAAAA,EAAAA,KAAAA,EAAAA,EAAO,SAAS,CAAC,QAAQ,AAAD,GAAK,EAAE,Y,WAKxC,UAACqD,EAAAA,KAAKA,CAAAA,CAAC,KAAM,E,SACX,WAACtH,EAAAA,OAAOA,CAAAA,CAAC,UAAU,WAAW,UAAU,Y,UACtC,UAACC,EAAAA,gBAAgBA,CAAAA,CAAC,UAAU,4B,SAA4B,c,GACxD,UAACA,EAAAA,gBAAgBA,CAAAA,CAAC,UAAU,+B,SACzBgE,AAAAA,CAAAA,MAAAA,EAAAA,KAAAA,EAAAA,EAAO,IAAI,CAAC,OAAO,AAAD,GAAK,C,GAE1B,UAACjE,EAAAA,OAAOA,CAAAA,CAAC,UAAU,Y,SACjB,WAACC,EAAAA,gBAAgBA,CAAAA,CAAC,UAAU,8B,UACzBgE,AAAAA,CAAAA,MAAAA,EAAAA,KAAAA,EAAAA,EAAO,IAAI,CAAC,OAAO,AAAD,GAAK,EAAE,W,UAKlC,UAACqD,EAAAA,KAAKA,CAAAA,CAAC,KAAM,E,SACX,WAACtH,EAAAA,OAAOA,CAAAA,CAAC,UAAU,WAAW,UAAU,Y,UACtC,UAACC,EAAAA,gBAAgBA,CAAAA,CAAC,UAAU,4B,SAA4B,gB,GACxD,UAACA,EAAAA,gBAAgBA,CAAAA,CAAC,UAAU,kC,SACzBgE,AAAAA,CAAAA,MAAAA,EAAAA,KAAAA,EAAAA,EAAO,IAAI,CAAC,SAAS,AAAD,GAAK,C,GAE5B,UAACjE,EAAAA,OAAOA,CAAAA,CAAC,UAAU,Y,SACjB,WAACC,EAAAA,gBAAgBA,CAAAA,CAAC,UAAU,0B,UACzBgE,AAAAA,CAAAA,MAAAA,EAAAA,KAAAA,EAAAA,EAAO,IAAI,CAAC,MAAM,AAAD,GAAK,EAAE,U,UAKjC,UAACqD,EAAAA,KAAKA,CAAAA,CAAC,KAAM,E,SACX,WAACtH,EAAAA,OAAOA,CAAAA,CAAC,UAAU,WAAW,UAAU,Y,UACtC,UAACC,EAAAA,gBAAgBA,CAAAA,CAAC,UAAU,4B,SAA4B,W,GACxD,UAACA,EAAAA,gBAAgBA,CAAAA,CAAC,UAAU,qB,SAAsBgE,AAAAA,CAAAA,MAAAA,EAAAA,KAAAA,EAAAA,EAAO,KAAK,CAAC,KAAK,AAAD,GAAK,C,GACxE,WAACjE,EAAAA,OAAOA,CAAAA,CAAC,UAAU,Y,UACjB,WAACC,EAAAA,gBAAgBA,CAAAA,CAAC,UAAU,4B,UACzBgE,AAAAA,CAAAA,MAAAA,EAAAA,KAAAA,EAAAA,EAAO,KAAK,CAAC,OAAO,AAAD,GAAK,EAAE,W,GAE7B,WAAChE,EAAAA,gBAAgBA,CAAAA,CAAC,UAAU,8B,UACzBgE,AAAAA,CAAAA,MAAAA,EAAAA,KAAAA,EAAAA,EAAO,KAAK,CAAC,QAAQ,AAAD,GAAK,EAAE,Y,gBASxC,UAACc,EAAAA,MAAMA,CAAAA,CACL,MAAO,UAAC9E,EAAAA,gBAAgBA,CAAAA,CAAC,UAAU,kB,SAAkB,iB,GACrD,MAAO,CAAE,aAAc,wBAAyB,E,SAEhD,UAACsH,EAAAA,OAAOA,CAAAA,CACN,WAAYnB,EACZ,QAASC,EACT,OAAO,KACP,OAAQ,CAAE,EAAG,GAAI,EACjB,WAAY,CAAE,SAAU,EAAG,EAC3BmB,MAAO,SAACR,CAAM,E,MAAgC,CAC5C,MAAO,CAAE,OAAQ,SAAU,EAC3BnD,QAAS,W,OAAM6B,EAAU,qBAA8B,OAAVsB,EAAO,EAAE,E,CACxD,C,MAIJ,UAACtG,EAAAA,CAAgBA,CAAAA,CACf,KAAMkF,EACN,UAAS,SAAEE,MAAAA,EAAAA,KAAAA,EAAAA,EAAe,SAAS,AAAD,EAAC,EAAI,EAAE,CACzC,QAASE,EAAoB,SAAS,CACtCjF,QAAS,W,OAAM8E,EAAgB,G,EAC/B7E,MAAO,SAACyG,CAAU,CAAEC,CAAK,EACvB1B,EAAoB,MAAM,CAAC,CAAEyB,WAAAA,EAAYC,MAAAA,CAAM,EAAG,CAChDnE,UAAW,SAACoE,CAAI,EACd9B,EAAgB,IAChBH,EAAU,qBAA+B,OAAXiC,EAAK,KAAK,EAC1C,EACAC,QAAS,SAACC,CAAG,EACXpE,EAAW,KAAK,CAAE,6BAA4CoE,MAAAA,CAAhBJ,EAAW,OAAiB,OAAZI,EAAI,OAAO,EAC3E,CACF,EACF,C,KAIR,C"}
@@ -0,0 +1,2 @@
1
+ "use strict";(self.webpackChunk_kb_labs_workflow_entry=self.webpackChunk_kb_labs_workflow_entry||[]).push([["777"],{572(e,t,n){var r=n(5259),o=Symbol.for("react.element"),a=Symbol.for("react.fragment"),i=Object.prototype.hasOwnProperty,l=r.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,s={key:!0,ref:!0,__self:!0,__source:!0};function c(e,t,n){var r,a={},c=null,u=null;for(r in void 0!==n&&(c=""+n),void 0!==t.key&&(c=""+t.key),void 0!==t.ref&&(u=t.ref),t)i.call(t,r)&&!s.hasOwnProperty(r)&&(a[r]=t[r]);if(e&&e.defaultProps)for(r in t=e.defaultProps)void 0===a[r]&&(a[r]=t[r]);return{$$typeof:o,type:e,key:c,ref:u,props:a,_owner:l.current}}t.Fragment=a,t.jsx=c,t.jsxs=c},8048(e,t,n){e.exports=n(572)},6631(e,t,n){n.d(t,{y:()=>u});var r=n(8048),o=n(5259),a=n(1349);function i(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}function l(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function s(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n,r,o=null==e?null:"u">typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=o){var a=[],i=!0,l=!1;try{for(o=o.call(e);!(i=(n=o.next()).done)&&(a.push(n.value),!t||a.length!==t);i=!0);}catch(e){l=!0,r=e}finally{try{i||null==o.return||o.return()}finally{if(l)throw r}}return a}}(e,t)||function(e,t){if(e){if("string"==typeof e)return i(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);if("Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n)return Array.from(n);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return i(e,t)}}(e,t)||function(){throw TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function c(e){var t,n=e.name,o=e.schema,i=e.value,l=e.onChange,s=(0,r.jsxs)(a.UISpace,{className:"gap-tight",style:{marginBottom:4},children:[(0,r.jsxs)(a.UITypographyText,{className:"typo-label",children:[n,o.required&&(0,r.jsx)("span",{style:{color:"var(--color-error)",marginLeft:2},children:"*"})]}),o.description&&(0,r.jsxs)(a.UITypographyText,{className:"typo-caption text-tertiary",children:["— ",o.description]})]});return"boolean"===o.type?(0,r.jsxs)("div",{style:{marginBottom:16},children:[s,(0,r.jsx)("div",{children:(0,r.jsx)(a.UISwitch,{checked:void 0!==i?!!i:null!=(t=o.default)&&t,onChange:l})})]}):"number"===o.type?(0,r.jsxs)("div",{style:{marginBottom:16},children:[s,(0,r.jsx)(a.UIInputNumber,{style:{width:"100%"},value:i,placeholder:void 0!==o.default?String(o.default):void 0,onChange:l})]}):(0,r.jsxs)("div",{style:{marginBottom:16},children:[s,(0,r.jsx)(a.UIInput,{value:i,placeholder:void 0!==o.default?String(o.default):void 0,onChange:function(e){return l(e)}})]})}function u(e){var t,n,i=e.open,u=e.onClose,d=e.onRun,p=e.loading,f="workflows"in e&&Array.isArray(e.workflows),y=f?e.workflows:[],h=s(o.useState(void 0),2),g=h[0],m=h[1],v=s(o.useState("{}"),2),x=v[0],j=v[1],w=s(o.useState(null),2),I=w[0],b=w[1],k=s(o.useState({}),2),U=k[0],S=k[1],O=f?null!=(t=y.find(function(e){return e.id===g}))?t:null:null!=(n=e.workflow)?n:null,T=null==O?void 0:O.inputs,C=!!T&&Object.keys(T).length>0;o.useEffect(function(){if(i)if(j("{}"),b(null),f||m(void 0),T){var e={},t=!0,n=!1,r=void 0;try{for(var o,a=Object.entries(T)[Symbol.iterator]();!(t=(o=a.next()).done);t=!0){var l=s(o.value,2),c=l[0],u=l[1];void 0!==u.default&&(e[c]=u.default)}}catch(e){n=!0,r=e}finally{try{t||null==a.return||a.return()}finally{if(n)throw r}}S(e)}else S({})},[i,null==O?void 0:O.id,T,f]),o.useEffect(function(){if(f&&g)if(j("{}"),b(null),T){var e={},t=!0,n=!1,r=void 0;try{for(var o,a=Object.entries(T)[Symbol.iterator]();!(t=(o=a.next()).done);t=!0){var i=s(o.value,2),l=i[0],c=i[1];void 0!==c.default&&(e[l]=c.default)}}catch(e){n=!0,r=e}finally{try{t||null==a.return||a.return()}finally{if(n)throw r}}S(e)}else S({})},[g,T,f]);var _=(0,r.jsxs)(a.UISpace,{style:{justifyContent:"flex-end"},children:[(0,r.jsx)(a.UIButton,{onClick:u,disabled:p,children:"Cancel"}),(0,r.jsx)(a.UIButton,{variant:"primary",icon:(0,r.jsx)(a.UIIcon,{name:"PlayCircleOutlined"}),loading:p,disabled:!O||!C&&!!I,onClick:function(){if(O)if(C)d(O.id,U);else{var e=x.trim();if(!e||"{}"===e)return void d(O.id,{});try{var t=JSON.parse(e);d(O.id,t)}catch(e){b("Invalid JSON")}}},children:"Run"})]}),N=O?"Run Workflow: ".concat(O.name):"Run Workflow";return(0,r.jsxs)(a.UIModal,{open:i,title:(0,r.jsxs)(a.UISpace,{className:"gap-item",children:[(0,r.jsx)(a.UIIcon,{name:"ThunderboltOutlined"}),(0,r.jsx)("span",{children:N})]}),onCancel:u,footer:_,maskClosable:!p,children:[f&&(0,r.jsxs)("div",{style:{marginTop:16},children:[(0,r.jsx)(a.UITypographyText,{className:"typo-label",style:{display:"block",marginBottom:8},children:"Select Workflow"}),(0,r.jsx)(a.UISelect,{style:{width:"100%"},placeholder:"Choose a workflow...",value:g,onChange:function(e){return m(e)},showSearch:!0,options:y.map(function(e){return{label:e.name,value:e.id,description:e.description}})})]}),O&&C&&(0,r.jsx)("div",{style:{marginTop:16},children:Object.entries(T).map(function(e){var t=s(e,2),n=t[0],o=t[1];return(0,r.jsx)(c,{name:n,schema:o,value:U[n],onChange:function(e){return S(function(t){var r,o;return r=function(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{},r=Object.keys(n);"function"==typeof Object.getOwnPropertySymbols&&(r=r.concat(Object.getOwnPropertySymbols(n).filter(function(e){return Object.getOwnPropertyDescriptor(n,e).enumerable}))),r.forEach(function(t){l(e,t,n[t])})}return e}({},t),o=null!=(o=l({},n,e))?o:{},Object.getOwnPropertyDescriptors?Object.defineProperties(r,Object.getOwnPropertyDescriptors(o)):(function(e){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t.push.apply(t,n)}return t})(Object(o)).forEach(function(e){Object.defineProperty(r,e,Object.getOwnPropertyDescriptor(o,e))}),r})}},n)})}),O&&!C&&(0,r.jsxs)("div",{style:{marginTop:16},children:[(0,r.jsx)(a.UITypographyText,{className:"typo-label",style:{display:"block",marginBottom:8},children:"Input payload (JSON)"}),(0,r.jsx)(a.UIInputTextArea,{value:x,onChange:function(e){var t=e.target.value;if(j(t),!t.trim()||"{}"===t.trim())return void b(null);try{JSON.parse(t),b(null)}catch(e){b("Invalid JSON")}},rows:6,placeholder:"{}",style:{fontFamily:"var(--font-mono, monospace)",fontSize:13},status:I?"error":void 0}),I&&(0,r.jsx)(a.UITypographyText,{className:"typo-caption text-error",style:{display:"block",marginTop:4},children:I}),(0,r.jsxs)(a.UITypographyText,{className:"typo-caption text-tertiary",style:{display:"block",marginTop:8},children:["Leave empty or ",(0,r.jsx)("code",{children:"{}"})," to run without parameters"]})]})]})}},3887(e,t,n){n.r(t),n.d(t,{default:()=>f});var r=n(8048),o=n(5259),a=n(4391),i=n(1349),l=n(2383),s=n(6631);function c(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}function u(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n,r,o=null==e?null:"u">typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=o){var a=[],i=!0,l=!1;try{for(o=o.call(e);!(i=(n=o.next()).done)&&(a.push(n.value),!t||a.length!==t);i=!0);}catch(e){l=!0,r=e}finally{try{i||null==o.return||o.return()}finally{if(l)throw r}}return a}}(e,t)||function(e,t){if(e){if("string"==typeof e)return c(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);if("Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n)return Array.from(n);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return c(e,t)}}(e,t)||function(){throw TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}var d={queued:"default",running:"processing",success:"success",failed:"error",cancelled:"warning",skipped:"default",waiting_approval:"gold"};function p(e){var t=e.runId,n=e.onSuccess,o=(0,l.useMutateData)("/exec/api/v1/runs/".concat(t,"/cancel"));return(0,r.jsx)(i.UIButton,{variant:"link",size:"small",danger:!0,icon:(0,r.jsx)(i.UIIcon,{name:"StopOutlined"}),loading:o.isLoading,onClick:function(e){e.stopPropagation(),o.mutateAsync().then(n).catch(function(){})},children:"Cancel"})}function f(){var e,t,n=(0,a.useParams)().workflowId,c=(0,a.useNavigate)(),f=u((0,i.useUIMessage)(),2),y=f[0],h=f[1],g=n?decodeURIComponent(n):"",m=u(o.useState(!1),2),v=m[0],x=m[1],j=(0,l.useData)(g?"/exec/api/v1/workflows/".concat(encodeURIComponent(g)):"/exec/api/v1/workflows/__none__",{enabled:!!g}),w=j.data,I=j.isLoading,b=(0,l.useData)(g?"/exec/api/v1/workflows/".concat(encodeURIComponent(g),"/runs"):"/exec/api/v1/workflows/__none__/runs",{enabled:!!g,pollingMs:5e3,params:{limit:50}}),k=b.data,U=b.isLoading,S=b.refetch,O=(0,l.useMutateData)("/exec/api/v1/workflows/".concat(encodeURIComponent(g),"/runs")),T=[{title:"Run ID",dataIndex:"id",key:"id",width:200,render:function(e){return(0,r.jsxs)(i.UITypographyText,{className:"typo-caption",code:!0,ellipsis:{tooltip:e},style:{cursor:"pointer",color:"var(--color-link)"},onClick:function(t){t.stopPropagation(),c("/p/workflows/runs/".concat(e))},children:[e.slice(0,16),"..."]})}},{title:"Status",dataIndex:"status",key:"status",width:140,render:function(e){var t;return(0,r.jsx)(i.UITag,{color:null!=(t=d[e])?t:"default",children:e.toUpperCase()})}},{title:"Triggered By",dataIndex:"trigger",key:"user",width:160,render:function(e){var t;return(0,r.jsx)(i.UITypographyText,{className:"typo-caption text-secondary",children:null!=(t=null==e?void 0:e.user)?t:"-"})}},{title:"Started At",dataIndex:"startedAt",key:"startedAt",width:180,render:function(e){return(0,r.jsx)(i.UITypographyText,{className:"typo-caption",children:e?new Date(e).toLocaleString():"-"})}},{title:"Duration",dataIndex:"durationMs",key:"durationMs",width:100,render:function(e){return(0,r.jsx)(i.UITypographyText,{className:"typo-caption",children:function(e){if(!e)return"-";var t=Math.floor(e/1e3);if(t<60)return"".concat(t,"s");var n=Math.floor(t/60);if(n<60)return"".concat(n,"m ").concat(t%60,"s");var r=Math.floor(n/60);return"".concat(r,"h ").concat(n%60,"m")}(e)})}},{title:"Actions",key:"actions",width:100,fixed:"right",render:function(e,t){return"running"!==t.status&&"pending"!==t.status?null:(0,r.jsx)(p,{runId:t.id,onSuccess:function(){S()}})}}];return I?(0,r.jsx)(i.UIPage,{children:(0,r.jsx)("div",{style:{textAlign:"center",padding:"80px 0"},children:(0,r.jsx)(i.UISpin,{size:"large"})})}):w?(0,r.jsxs)(i.UIPage,{children:[h,(0,r.jsx)(i.UIPageHeader,{title:w.name,description:w.description,breadcrumbs:[{title:"Home",href:"/"},{title:"Workflows",href:"/workflows"},{title:"Definitions",href:"/p/workflows/definitions"},{title:w.name}],actions:(0,r.jsx)(i.UIButton,{variant:"primary",icon:(0,r.jsx)(i.UIIcon,{name:"PlayCircleOutlined"}),onClick:function(){return x(!0)},children:"Run"})}),(0,r.jsx)(i.UICard,{style:{marginBottom:"var(--spacing-section)"},children:(0,r.jsx)(i.UIDescriptions,{column:3,items:[{key:"id",label:"ID",children:(0,r.jsx)(i.UITypographyText,{code:!0,className:"typo-caption",children:w.id})},{key:"source",label:"Source",children:(0,r.jsx)(i.UITag,{color:"manifest"===w.source?"blue":"green",children:"manifest"===w.source?"Plugin":"Standalone"})},{key:"status",label:"Status",children:w.status?(0,r.jsx)(i.UITag,{color:"active"===w.status?"success":"default",children:w.status.toUpperCase()}):"-"},{key:"plugin",label:"Plugin",children:(0,r.jsx)(i.UITypographyText,{className:"typo-caption",children:null!=(e=w.pluginId)?e:"-"})},{key:"tags",label:"Tags",span:2,children:w.tags&&w.tags.length>0?(0,r.jsx)(i.UISpace,{className:"gap-tight",children:w.tags.map(function(e){return(0,r.jsx)(i.UITag,{children:e},e)})}):"-"}]})}),(0,r.jsx)(i.UICard,{title:(0,r.jsx)(i.UITypographyText,{className:"typo-card-title",children:"Recent Runs"}),children:(0,r.jsx)(i.UITable,{dataSource:null!=(t=null==k?void 0:k.runs)?t:[],columns:T,loading:U,rowKey:"id",scroll:{x:900},pagination:{pageSize:20},onRow:function(e){return{style:{cursor:"pointer"},onClick:function(){return c("/p/workflows/runs/".concat(e.id))}}}})}),(0,r.jsx)(s.y,{open:v,workflow:w,loading:O.isLoading,onClose:function(){return x(!1)},onRun:function(e,t){O.mutate(t,{onSuccess:function(e){x(!1),c("/p/workflows/runs/".concat(e.runId))},onError:function(e){y.error('Failed to start workflow "'.concat(g,'": ').concat(e.message))}})}})]}):(0,r.jsx)(i.UIPage,{children:(0,r.jsx)(i.UIEmptyState,{description:'Workflow "'.concat(g,'" not found'),action:(0,r.jsx)(i.UIButton,{onClick:function(){return c("/p/workflows/definitions")},children:"Back to Definitions"})})})}}}]);
2
+ //# sourceMappingURL=__federation_expose_DefinitionDetail.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"__federation_expose_DefinitionDetail.js","sources":["webpack://@kb-labs/workflow-entry/../../../node_modules/.pnpm/react@18.3.1/node_modules/react/cjs/react-jsx-runtime.production.min.js","webpack://@kb-labs/workflow-entry/../../../node_modules/.pnpm/react@18.3.1/node_modules/react/jsx-runtime.js","webpack://@kb-labs/workflow-entry/./src/studio/components/RunWorkflowModal.tsx","webpack://@kb-labs/workflow-entry/./src/studio/pages/WorkflowDefinitionDetail.tsx"],"sourcesContent":["/**\n * @license React\n * react-jsx-runtime.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';var f=require(\"react\"),k=Symbol.for(\"react.element\"),l=Symbol.for(\"react.fragment\"),m=Object.prototype.hasOwnProperty,n=f.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,p={key:!0,ref:!0,__self:!0,__source:!0};\nfunction q(c,a,g){var b,d={},e=null,h=null;void 0!==g&&(e=\"\"+g);void 0!==a.key&&(e=\"\"+a.key);void 0!==a.ref&&(h=a.ref);for(b in a)m.call(a,b)&&!p.hasOwnProperty(b)&&(d[b]=a[b]);if(c&&c.defaultProps)for(b in a=c.defaultProps,a)void 0===d[b]&&(d[b]=a[b]);return{$$typeof:k,type:c,key:e,ref:h,props:d,_owner:n.current}}exports.Fragment=l;exports.jsx=q;exports.jsxs=q;\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-jsx-runtime.production.min.js');\n} else {\n module.exports = require('./cjs/react-jsx-runtime.development.js');\n}\n","/**\n * @module @kb-labs/studio-app/modules/workflows/components/run-workflow-modal\n * Modal dialog for running a workflow with optional input parameters.\n * Supports two modes:\n * 1. Single workflow (workflow prop) — used from definition page\n * 2. Workflow picker (workflows prop) — used from dashboard\n */\n\nimport * as React from 'react';\nimport {\n UIModal,\n UIButton,\n UISpace,\n UITypographyText,\n UIInput,\n UIInputTextArea,\n UIInputNumber,\n UISwitch,\n UISelect,\n UIIcon,\n} from '@kb-labs/sdk/studio';\nimport type { WorkflowInfo } from '@kb-labs/workflow-contracts';\n\ntype InputField = NonNullable<WorkflowInfo['inputs']>[string];\n\ninterface RunWorkflowModalBaseProps {\n open: boolean;\n onClose: () => void;\n onRun: (workflowId: string, input: Record<string, unknown>) => void;\n loading?: boolean;\n}\n\ninterface SingleWorkflowProps extends RunWorkflowModalBaseProps {\n workflow: WorkflowInfo | null;\n workflows?: never;\n}\n\ninterface MultiWorkflowProps extends RunWorkflowModalBaseProps {\n workflow?: never;\n workflows: WorkflowInfo[];\n}\n\nexport type RunWorkflowModalProps = SingleWorkflowProps | MultiWorkflowProps;\n\nfunction DynamicField({\n name,\n schema,\n value,\n onChange,\n}: {\n name: string;\n schema: InputField;\n value: unknown;\n onChange: (val: unknown) => void;\n}) {\n const label = (\n <UISpace className=\"gap-tight\" style={{ marginBottom: 4 }}>\n <UITypographyText className=\"typo-label\">\n {name}\n {schema.required && (\n <span style={{ color: 'var(--color-error)', marginLeft: 2 }}>*</span>\n )}\n </UITypographyText>\n {schema.description && (\n <UITypographyText className=\"typo-caption text-tertiary\">\n — {schema.description}\n </UITypographyText>\n )}\n </UISpace>\n );\n\n if (schema.type === 'boolean') {\n return (\n <div style={{ marginBottom: 16 }}>\n {label}\n <div>\n <UISwitch\n checked={value !== undefined ? Boolean(value) : (schema.default as boolean ?? false)}\n onChange={onChange}\n />\n </div>\n </div>\n );\n }\n\n if (schema.type === 'number') {\n return (\n <div style={{ marginBottom: 16 }}>\n {label}\n <UIInputNumber\n style={{ width: '100%' }}\n value={value as number | undefined}\n placeholder={schema.default !== undefined ? String(schema.default) : undefined}\n onChange={onChange}\n />\n </div>\n );\n }\n\n return (\n <div style={{ marginBottom: 16 }}>\n {label}\n <UIInput\n value={value as string | undefined}\n placeholder={schema.default !== undefined ? String(schema.default) : undefined}\n onChange={(val) => onChange(val)}\n />\n </div>\n );\n}\n\nexport function RunWorkflowModal(props: RunWorkflowModalProps) {\n const { open, onClose, onRun, loading } = props;\n\n const isMulti = 'workflows' in props && Array.isArray(props.workflows);\n const workflowList: WorkflowInfo[] = isMulti ? (props as MultiWorkflowProps).workflows : [];\n\n const [selectedId, setSelectedId] = React.useState<string | undefined>(undefined);\n const [jsonValue, setJsonValue] = React.useState('{}');\n const [jsonError, setJsonError] = React.useState<string | null>(null);\n const [fieldValues, setFieldValues] = React.useState<Record<string, unknown>>({});\n\n // Resolve the active workflow\n const activeWorkflow: WorkflowInfo | null = isMulti\n ? workflowList.find((w) => w.id === selectedId) ?? null\n : (props as SingleWorkflowProps).workflow ?? null;\n\n const inputs = activeWorkflow?.inputs;\n const hasSchema = !!inputs && Object.keys(inputs).length > 0;\n\n // Reset form when modal opens or workflow changes\n React.useEffect(() => {\n if (open) {\n setJsonValue('{}');\n setJsonError(null);\n if (!isMulti) {\n setSelectedId(undefined);\n }\n if (inputs) {\n const defaults: Record<string, unknown> = {};\n for (const [key, schema] of Object.entries(inputs)) {\n if (schema.default !== undefined) {\n defaults[key] = schema.default;\n }\n }\n setFieldValues(defaults);\n } else {\n setFieldValues({});\n }\n }\n }, [open, activeWorkflow?.id, inputs, isMulti]);\n\n // Reset fields when selected workflow changes in multi mode\n React.useEffect(() => {\n if (!isMulti || !selectedId) {return;}\n setJsonValue('{}');\n setJsonError(null);\n if (inputs) {\n const defaults: Record<string, unknown> = {};\n for (const [key, schema] of Object.entries(inputs)) {\n if (schema.default !== undefined) {\n defaults[key] = schema.default;\n }\n }\n setFieldValues(defaults);\n } else {\n setFieldValues({});\n }\n }, [selectedId, inputs, isMulti]);\n\n const handleJsonChange = (e: React.ChangeEvent<HTMLTextAreaElement>) => {\n const val = e.target.value;\n setJsonValue(val);\n if (!val.trim() || val.trim() === '{}') {\n setJsonError(null);\n return;\n }\n try {\n JSON.parse(val);\n setJsonError(null);\n } catch {\n setJsonError('Invalid JSON');\n }\n };\n\n const handleRun = () => {\n if (!activeWorkflow) {return;}\n if (hasSchema) {\n onRun(activeWorkflow.id, fieldValues);\n } else {\n const trimmed = jsonValue.trim();\n if (!trimmed || trimmed === '{}') {\n onRun(activeWorkflow.id, {});\n return;\n }\n try {\n const parsed = JSON.parse(trimmed) as Record<string, unknown>;\n onRun(activeWorkflow.id, parsed);\n } catch {\n setJsonError('Invalid JSON');\n }\n }\n };\n\n const footer = (\n <UISpace style={{ justifyContent: 'flex-end' }}>\n <UIButton onClick={onClose} disabled={loading}>\n Cancel\n </UIButton>\n <UIButton\n variant=\"primary\"\n icon={<UIIcon name=\"PlayCircleOutlined\" />}\n loading={loading}\n disabled={!activeWorkflow || (!hasSchema && !!jsonError)}\n onClick={handleRun}\n >\n Run\n </UIButton>\n </UISpace>\n );\n\n const title = activeWorkflow\n ? `Run Workflow: ${activeWorkflow.name}`\n : 'Run Workflow';\n\n return (\n <UIModal\n open={open}\n title={\n <UISpace className=\"gap-item\">\n <UIIcon name=\"ThunderboltOutlined\" />\n <span>{title}</span>\n </UISpace>\n }\n onCancel={onClose}\n footer={footer}\n maskClosable={!loading}\n >\n {/* Workflow picker (multi mode only) */}\n {isMulti && (\n <div style={{ marginTop: 16 }}>\n <UITypographyText className=\"typo-label\" style={{ display: 'block', marginBottom: 8 }}>\n Select Workflow\n </UITypographyText>\n <UISelect\n style={{ width: '100%' }}\n placeholder=\"Choose a workflow...\"\n value={selectedId}\n onChange={(val) => setSelectedId(val as string)}\n showSearch\n options={workflowList.map((w) => ({\n label: w.name,\n value: w.id,\n description: w.description,\n }))}\n />\n </div>\n )}\n\n {/* Input form (shown when workflow is selected) */}\n {activeWorkflow && hasSchema && (\n <div style={{ marginTop: 16 }}>\n {Object.entries(inputs!).map(([key, schema]) => (\n <DynamicField\n key={key}\n name={key}\n schema={schema}\n value={fieldValues[key]}\n onChange={(val) => setFieldValues((prev) => ({ ...prev, [key]: val }))}\n />\n ))}\n </div>\n )}\n\n {activeWorkflow && !hasSchema && (\n <div style={{ marginTop: 16 }}>\n <UITypographyText className=\"typo-label\" style={{ display: 'block', marginBottom: 8 }}>\n Input payload (JSON)\n </UITypographyText>\n <UIInputTextArea\n value={jsonValue}\n onChange={handleJsonChange}\n rows={6}\n placeholder=\"{}\"\n style={{ fontFamily: 'var(--font-mono, monospace)', fontSize: 13 }}\n status={jsonError ? 'error' : undefined}\n />\n {jsonError && (\n <UITypographyText className=\"typo-caption text-error\" style={{ display: 'block', marginTop: 4 }}>\n {jsonError}\n </UITypographyText>\n )}\n <UITypographyText className=\"typo-caption text-tertiary\" style={{ display: 'block', marginTop: 8 }}>\n Leave empty or <code>{'{}'}</code> to run without parameters\n </UITypographyText>\n </div>\n )}\n </UIModal>\n );\n}\n","/**\n * @module @kb-labs/studio-app/modules/workflows/pages/workflow-definition-page\n * Workflow definition detail page with recent runs\n */\n\nimport * as React from 'react';\nimport { useParams, useNavigate } from 'react-router-dom';\nimport {\n UISpin,\n UITag,\n UISpace,\n UITypographyText,\n UICard,\n UITable,\n UIButton,\n UIIcon,\n UIDescriptions,\n UIEmptyState,\n useUIMessage,\n} from '@kb-labs/sdk/studio';\nimport { useData, useMutateData } from '@kb-labs/sdk/studio';\nimport { UIPage, UIPageHeader } from '@kb-labs/sdk/studio';\nimport type { WorkflowRunInfo, WorkflowInfo } from '@kb-labs/workflow-contracts';\nimport { RunWorkflowModal } from '../components/RunWorkflowModal';\n\nconst STATUS_COLORS: Record<string, string> = {\n queued: 'default',\n running: 'processing',\n success: 'success',\n failed: 'error',\n cancelled: 'warning',\n skipped: 'default',\n waiting_approval: 'gold',\n};\n\nfunction formatDate(dateStr?: string) {\n if (!dateStr) {return '-';}\n return new Date(dateStr).toLocaleString();\n}\n\nfunction formatDuration(ms?: number) {\n if (!ms) {return '-';}\n const seconds = Math.floor(ms / 1000);\n if (seconds < 60) {return `${seconds}s`;}\n const minutes = Math.floor(seconds / 60);\n if (minutes < 60) {return `${minutes}m ${seconds % 60}s`;}\n const hours = Math.floor(minutes / 60);\n return `${hours}h ${minutes % 60}m`;\n}\n\nfunction CancelRunButton({ runId, onSuccess }: { runId: string; onSuccess: () => void }) {\n const cancel = useMutateData<void, void>(`/exec/api/v1/runs/${runId}/cancel`);\n return (\n <UIButton\n variant=\"link\"\n size=\"small\"\n danger\n icon={<UIIcon name=\"StopOutlined\" />}\n loading={cancel.isLoading}\n onClick={(e) => {\n e.stopPropagation();\n cancel.mutateAsync().then(onSuccess).catch(() => {});\n }}\n >\n Cancel\n </UIButton>\n );\n}\n\nexport default function WorkflowDefinitionDetail() {\n const { workflowId: encodedId } = useParams<{ workflowId: string }>();\n const navigate = useNavigate();\n const [messageApi, contextHolder] = useUIMessage();\n\n const workflowId = encodedId ? decodeURIComponent(encodedId) : '';\n const [runModalOpen, setRunModalOpen] = React.useState(false);\n\n const { data: workflowDef, isLoading: workflowLoading } = useData<WorkflowInfo>(\n workflowId ? `/exec/api/v1/workflows/${encodeURIComponent(workflowId)}` : '/exec/api/v1/workflows/__none__',\n { enabled: !!workflowId },\n );\n\n const { data: runsData, isLoading: runsLoading, refetch } = useData<{ runs: WorkflowRunInfo[] }>(\n workflowId ? `/exec/api/v1/workflows/${encodeURIComponent(workflowId)}/runs` : '/exec/api/v1/workflows/__none__/runs',\n { enabled: !!workflowId, pollingMs: 5000, params: { limit: 50 } },\n );\n\n const runWorkflowMutation = useMutateData<Record<string, unknown>, { runId: string }>(\n `/exec/api/v1/workflows/${encodeURIComponent(workflowId)}/runs`,\n );\n\n const runsColumns = [\n {\n title: 'Run ID',\n dataIndex: 'id',\n key: 'id',\n width: 200,\n render: (id: string) => (\n <UITypographyText\n className=\"typo-caption\"\n code\n ellipsis={{ tooltip: id }}\n style={{ cursor: 'pointer', color: 'var(--color-link)' }}\n onClick={(e: React.MouseEvent) => {\n e.stopPropagation();\n navigate(`/p/workflows/runs/${id}`);\n }}\n >\n {id.slice(0, 16)}...\n </UITypographyText>\n ),\n },\n {\n title: 'Status',\n dataIndex: 'status',\n key: 'status',\n width: 140,\n render: (status: string) => (\n <UITag color={STATUS_COLORS[status] ?? 'default'}>{status.toUpperCase()}</UITag>\n ),\n },\n {\n title: 'Triggered By',\n dataIndex: 'trigger',\n key: 'user',\n width: 160,\n render: (trigger?: { user?: string }) => (\n <UITypographyText className=\"typo-caption text-secondary\">{trigger?.user ?? '-'}</UITypographyText>\n ),\n },\n {\n title: 'Started At',\n dataIndex: 'startedAt',\n key: 'startedAt',\n width: 180,\n render: (date?: string) => (\n <UITypographyText className=\"typo-caption\">{formatDate(date)}</UITypographyText>\n ),\n },\n {\n title: 'Duration',\n dataIndex: 'durationMs',\n key: 'durationMs',\n width: 100,\n render: (ms?: number) => (\n <UITypographyText className=\"typo-caption\">{formatDuration(ms)}</UITypographyText>\n ),\n },\n {\n title: 'Actions',\n key: 'actions',\n width: 100,\n fixed: 'right' as const,\n render: (_: unknown, record: WorkflowRunInfo) => {\n const canCancel = record.status === 'running' || record.status === 'pending';\n if (!canCancel) {return null;}\n return <CancelRunButton runId={record.id} onSuccess={() => void refetch()} />;\n },\n },\n ];\n\n if (workflowLoading) {\n return (\n <UIPage>\n <div style={{ textAlign: 'center', padding: '80px 0' }}>\n <UISpin size=\"large\" />\n </div>\n </UIPage>\n );\n }\n\n if (!workflowDef) {\n return (\n <UIPage>\n <UIEmptyState\n description={`Workflow \"${workflowId}\" not found`}\n action={\n <UIButton onClick={() => navigate('/p/workflows/definitions')}>Back to Definitions</UIButton>\n }\n />\n </UIPage>\n );\n }\n\n return (\n <UIPage>\n {contextHolder}\n <UIPageHeader\n title={workflowDef.name}\n description={workflowDef.description}\n breadcrumbs={[\n { title: 'Home', href: '/' },\n { title: 'Workflows', href: '/workflows' },\n { title: 'Definitions', href: '/p/workflows/definitions' },\n { title: workflowDef.name },\n ]}\n actions={\n <UIButton\n variant=\"primary\"\n icon={<UIIcon name=\"PlayCircleOutlined\" />}\n onClick={() => setRunModalOpen(true)}\n >\n Run\n </UIButton>\n }\n />\n\n <UICard style={{ marginBottom: 'var(--spacing-section)' }}>\n <UIDescriptions\n column={3}\n items={[\n {\n key: 'id',\n label: 'ID',\n children: (\n <UITypographyText code className=\"typo-caption\">{workflowDef.id}</UITypographyText>\n ),\n },\n {\n key: 'source',\n label: 'Source',\n children: (\n <UITag color={workflowDef.source === 'manifest' ? 'blue' : 'green'}>\n {workflowDef.source === 'manifest' ? 'Plugin' : 'Standalone'}\n </UITag>\n ),\n },\n {\n key: 'status',\n label: 'Status',\n children: workflowDef.status ? (\n <UITag color={workflowDef.status === 'active' ? 'success' : 'default'}>\n {workflowDef.status.toUpperCase()}\n </UITag>\n ) : '-',\n },\n {\n key: 'plugin',\n label: 'Plugin',\n children: (\n <UITypographyText className=\"typo-caption\">\n {workflowDef.pluginId ?? '-'}\n </UITypographyText>\n ),\n },\n {\n key: 'tags',\n label: 'Tags',\n span: 2,\n children: workflowDef.tags && workflowDef.tags.length > 0 ? (\n <UISpace className=\"gap-tight\">\n {workflowDef.tags.map((tag) => (\n <UITag key={tag}>{tag}</UITag>\n ))}\n </UISpace>\n ) : '-',\n },\n ]}\n />\n </UICard>\n\n <UICard\n title={\n <UITypographyText className=\"typo-card-title\">Recent Runs</UITypographyText>\n }\n >\n <UITable\n dataSource={runsData?.runs ?? []}\n columns={runsColumns}\n loading={runsLoading}\n rowKey=\"id\"\n scroll={{ x: 900 }}\n pagination={{ pageSize: 20 }}\n onRow={(record: WorkflowRunInfo) => ({\n style: { cursor: 'pointer' },\n onClick: () => navigate(`/p/workflows/runs/${record.id}`),\n })}\n />\n </UICard>\n\n <RunWorkflowModal\n open={runModalOpen}\n workflow={workflowDef}\n loading={runWorkflowMutation.isLoading}\n onClose={() => setRunModalOpen(false)}\n onRun={(_workflowId, input) => {\n runWorkflowMutation.mutate(input, {\n onSuccess: (data) => {\n setRunModalOpen(false);\n navigate(`/p/workflows/runs/${data.runId}`);\n },\n onError: (err) => {\n messageApi.error(`Failed to start workflow \"${workflowId}\": ${err.message}`);\n },\n });\n }}\n />\n </UIPage>\n );\n}\n"],"names":["Symbol","Object","DynamicField","param","_schema_default","name","schema","value","onChange","label","UISpace","UITypographyText","UISwitch","undefined","Boolean","UIInputNumber","String","UIInput","onChange1","val","RunWorkflowModal","props","_workflowList_find","_props_workflow","open","onClose","onRun","loading","isMulti","Array","workflowList","_React_useState","selectedId","setSelectedId","_React_useState1","jsonValue","setJsonValue","_React_useState2","jsonError","setJsonError","_React_useState3","fieldValues","setFieldValues","activeWorkflow","w","inputs","hasSchema","React","defaults","_iteratorError","key","footer","UIButton","UIIcon","trimmed","parsed","JSON","title","UIModal","UISelect","prev","UIInputTextArea","e","STATUS_COLORS","CancelRunButton","runId","onSuccess","cancel","useMutateData","onClick","WorkflowDefinitionDetail","_workflowDef_pluginId","encodedId","_useParams","navigate","useNavigate","_useUIMessage","messageApi","contextHolder","workflowId","decodeURIComponent","runModalOpen","setRunModalOpen","_useData","encodeURIComponent","workflowDef","workflowLoading","_useData1","runsData","runsLoading","refetch","runWorkflowMutation","runsColumns","render","id","status","_STATUS_COLORS_status","UITag","trigger","date","Date","ms","formatDuration","seconds","Math","minutes","hours","_","record","UIPage","UISpin","UIPageHeader","UICard","UIDescriptions","tag","UITable","onRow","_workflowId","input","data","onError","err","UIEmptyState"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ "use strict";(self.webpackChunk_kb_labs_workflow_entry=self.webpackChunk_kb_labs_workflow_entry||[]).push([["55"],{572(e,t,r){var n=r(5259),o=Symbol.for("react.element"),i=Symbol.for("react.fragment"),a=Object.prototype.hasOwnProperty,l=n.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,s={key:!0,ref:!0,__self:!0,__source:!0};function c(e,t,r){var n,i={},c=null,u=null;for(n in void 0!==r&&(c=""+r),void 0!==t.key&&(c=""+t.key),void 0!==t.ref&&(u=t.ref),t)a.call(t,n)&&!s.hasOwnProperty(n)&&(i[n]=t[n]);if(e&&e.defaultProps)for(n in t=e.defaultProps)void 0===i[n]&&(i[n]=t[n]);return{$$typeof:o,type:e,key:c,ref:u,props:i,_owner:l.current}}t.Fragment=i,t.jsx=c,t.jsxs=c},8048(e,t,r){e.exports=r(572)},6631(e,t,r){r.d(t,{y:()=>u});var n=r(8048),o=r(5259),i=r(1349);function a(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=Array(t);r<t;r++)n[r]=e[r];return n}function l(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function s(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var r,n,o=null==e?null:"u">typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=o){var i=[],a=!0,l=!1;try{for(o=o.call(e);!(a=(r=o.next()).done)&&(i.push(r.value),!t||i.length!==t);a=!0);}catch(e){l=!0,n=e}finally{try{a||null==o.return||o.return()}finally{if(l)throw n}}return i}}(e,t)||function(e,t){if(e){if("string"==typeof e)return a(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);if("Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r)return Array.from(r);if("Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return a(e,t)}}(e,t)||function(){throw TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function c(e){var t,r=e.name,o=e.schema,a=e.value,l=e.onChange,s=(0,n.jsxs)(i.UISpace,{className:"gap-tight",style:{marginBottom:4},children:[(0,n.jsxs)(i.UITypographyText,{className:"typo-label",children:[r,o.required&&(0,n.jsx)("span",{style:{color:"var(--color-error)",marginLeft:2},children:"*"})]}),o.description&&(0,n.jsxs)(i.UITypographyText,{className:"typo-caption text-tertiary",children:["— ",o.description]})]});return"boolean"===o.type?(0,n.jsxs)("div",{style:{marginBottom:16},children:[s,(0,n.jsx)("div",{children:(0,n.jsx)(i.UISwitch,{checked:void 0!==a?!!a:null!=(t=o.default)&&t,onChange:l})})]}):"number"===o.type?(0,n.jsxs)("div",{style:{marginBottom:16},children:[s,(0,n.jsx)(i.UIInputNumber,{style:{width:"100%"},value:a,placeholder:void 0!==o.default?String(o.default):void 0,onChange:l})]}):(0,n.jsxs)("div",{style:{marginBottom:16},children:[s,(0,n.jsx)(i.UIInput,{value:a,placeholder:void 0!==o.default?String(o.default):void 0,onChange:function(e){return l(e)}})]})}function u(e){var t,r,a=e.open,u=e.onClose,d=e.onRun,f=e.loading,p="workflows"in e&&Array.isArray(e.workflows),y=p?e.workflows:[],h=s(o.useState(void 0),2),m=h[0],g=h[1],x=s(o.useState("{}"),2),v=x[0],w=x[1],j=s(o.useState(null),2),b=j[0],I=j[1],k=s(o.useState({}),2),S=k[0],U=k[1],O=p?null!=(t=y.find(function(e){return e.id===m}))?t:null:null!=(r=e.workflow)?r:null,T=null==O?void 0:O.inputs,C=!!T&&Object.keys(T).length>0;o.useEffect(function(){if(a)if(w("{}"),I(null),p||g(void 0),T){var e={},t=!0,r=!1,n=void 0;try{for(var o,i=Object.entries(T)[Symbol.iterator]();!(t=(o=i.next()).done);t=!0){var l=s(o.value,2),c=l[0],u=l[1];void 0!==u.default&&(e[c]=u.default)}}catch(e){r=!0,n=e}finally{try{t||null==i.return||i.return()}finally{if(r)throw n}}U(e)}else U({})},[a,null==O?void 0:O.id,T,p]),o.useEffect(function(){if(p&&m)if(w("{}"),I(null),T){var e={},t=!0,r=!1,n=void 0;try{for(var o,i=Object.entries(T)[Symbol.iterator]();!(t=(o=i.next()).done);t=!0){var a=s(o.value,2),l=a[0],c=a[1];void 0!==c.default&&(e[l]=c.default)}}catch(e){r=!0,n=e}finally{try{t||null==i.return||i.return()}finally{if(r)throw n}}U(e)}else U({})},[m,T,p]);var N=(0,n.jsxs)(i.UISpace,{style:{justifyContent:"flex-end"},children:[(0,n.jsx)(i.UIButton,{onClick:u,disabled:f,children:"Cancel"}),(0,n.jsx)(i.UIButton,{variant:"primary",icon:(0,n.jsx)(i.UIIcon,{name:"PlayCircleOutlined"}),loading:f,disabled:!O||!C&&!!b,onClick:function(){if(O)if(C)d(O.id,S);else{var e=v.trim();if(!e||"{}"===e)return void d(O.id,{});try{var t=JSON.parse(e);d(O.id,t)}catch(e){I("Invalid JSON")}}},children:"Run"})]}),_=O?"Run Workflow: ".concat(O.name):"Run Workflow";return(0,n.jsxs)(i.UIModal,{open:a,title:(0,n.jsxs)(i.UISpace,{className:"gap-item",children:[(0,n.jsx)(i.UIIcon,{name:"ThunderboltOutlined"}),(0,n.jsx)("span",{children:_})]}),onCancel:u,footer:N,maskClosable:!f,children:[p&&(0,n.jsxs)("div",{style:{marginTop:16},children:[(0,n.jsx)(i.UITypographyText,{className:"typo-label",style:{display:"block",marginBottom:8},children:"Select Workflow"}),(0,n.jsx)(i.UISelect,{style:{width:"100%"},placeholder:"Choose a workflow...",value:m,onChange:function(e){return g(e)},showSearch:!0,options:y.map(function(e){return{label:e.name,value:e.id,description:e.description}})})]}),O&&C&&(0,n.jsx)("div",{style:{marginTop:16},children:Object.entries(T).map(function(e){var t=s(e,2),r=t[0],o=t[1];return(0,n.jsx)(c,{name:r,schema:o,value:S[r],onChange:function(e){return U(function(t){var n,o;return n=function(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{},n=Object.keys(r);"function"==typeof Object.getOwnPropertySymbols&&(n=n.concat(Object.getOwnPropertySymbols(r).filter(function(e){return Object.getOwnPropertyDescriptor(r,e).enumerable}))),n.forEach(function(t){l(e,t,r[t])})}return e}({},t),o=null!=(o=l({},r,e))?o:{},Object.getOwnPropertyDescriptors?Object.defineProperties(n,Object.getOwnPropertyDescriptors(o)):(function(e){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t.push.apply(t,r)}return t})(Object(o)).forEach(function(e){Object.defineProperty(n,e,Object.getOwnPropertyDescriptor(o,e))}),n})}},r)})}),O&&!C&&(0,n.jsxs)("div",{style:{marginTop:16},children:[(0,n.jsx)(i.UITypographyText,{className:"typo-label",style:{display:"block",marginBottom:8},children:"Input payload (JSON)"}),(0,n.jsx)(i.UIInputTextArea,{value:v,onChange:function(e){var t=e.target.value;if(w(t),!t.trim()||"{}"===t.trim())return void I(null);try{JSON.parse(t),I(null)}catch(e){I("Invalid JSON")}},rows:6,placeholder:"{}",style:{fontFamily:"var(--font-mono, monospace)",fontSize:13},status:b?"error":void 0}),b&&(0,n.jsx)(i.UITypographyText,{className:"typo-caption text-error",style:{display:"block",marginTop:4},children:b}),(0,n.jsxs)(i.UITypographyText,{className:"typo-caption text-tertiary",style:{display:"block",marginTop:8},children:["Leave empty or ",(0,n.jsx)("code",{children:"{}"})," to run without parameters"]})]})]})}},8792(e,t,r){r.r(t),r.d(t,{default:()=>d});var n=r(8048),o=r(5259),i=r(4391),a=r(1349),l=r(2383),s=r(6631);function c(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=Array(t);r<t;r++)n[r]=e[r];return n}function u(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var r,n,o=null==e?null:"u">typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=o){var i=[],a=!0,l=!1;try{for(o=o.call(e);!(a=(r=o.next()).done)&&(i.push(r.value),!t||i.length!==t);a=!0);}catch(e){l=!0,n=e}finally{try{a||null==o.return||o.return()}finally{if(l)throw n}}return i}}(e,t)||function(e,t){if(e){if("string"==typeof e)return c(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);if("Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r)return Array.from(r);if("Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return c(e,t)}}(e,t)||function(){throw TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function d(){var e=(0,i.useNavigate)(),t=u((0,a.useUIMessage)(),2),r=t[0],c=t[1],d=u(o.useState(null),2),f=d[0],p=d[1],y=(0,l.useData)("/exec/api/v1/workflows",{params:{limit:100}}),h=y.data,m=y.isLoading,g=(0,l.useMutateData)(function(e){return"/exec/api/v1/workflows/".concat(encodeURIComponent(e.workflowId),"/runs")},{mapBody:function(e){return e.input}}),x=[{title:"Workflow",dataIndex:"name",key:"name",width:280,render:function(e,t){return(0,n.jsxs)("div",{style:{width:"100%",overflow:"hidden"},children:[(0,n.jsx)(a.UITypographyText,{className:"typo-body",strong:!0,style:{display:"block"},children:e}),t.description&&(0,n.jsx)(a.UITypographyText,{className:"typo-description text-secondary",ellipsis:{tooltip:t.description},style:{display:"block"},children:t.description})]})}},{title:"ID",dataIndex:"id",key:"id",width:220,render:function(e){return(0,n.jsx)(a.UITypographyText,{className:"typo-caption text-tertiary",code:!0,ellipsis:{tooltip:e},children:e})}},{title:"Source",dataIndex:"source",key:"source",width:120,render:function(e){return(0,n.jsx)(a.UITag,{color:"manifest"===e?"blue":"green",children:"manifest"===e?"Plugin":"Standalone"})}},{title:"Plugin",dataIndex:"pluginId",key:"pluginId",width:200,render:function(e){return e?(0,n.jsx)(a.UITypographyText,{className:"typo-caption",children:e}):(0,n.jsx)(a.UITypographyText,{className:"typo-caption text-tertiary",children:"-"})}},{title:"Status",dataIndex:"status",key:"status",width:110,render:function(e){return e?(0,n.jsx)(a.UITag,{color:"active"===e?"success":"default",children:e.toUpperCase()}):(0,n.jsx)(a.UITypographyText,{className:"typo-caption text-tertiary",children:"-"})}},{title:"Tags",dataIndex:"tags",key:"tags",width:180,render:function(e){return(0,n.jsx)(a.UISpace,{className:"gap-tight",children:e&&e.length>0?e.map(function(e){return(0,n.jsx)(a.UITag,{style:{borderColor:"var(--border-primary)"},children:e},e)}):(0,n.jsx)(a.UITypographyText,{className:"typo-caption text-tertiary",children:"-"})})}},{title:"Actions",key:"actions",width:160,fixed:"right",render:function(t,r){return(0,n.jsxs)(a.UISpace,{className:"gap-tight",children:[(0,n.jsx)(a.UIButton,{variant:"link",size:"small",icon:(0,n.jsx)(a.UIIcon,{name:"EyeOutlined"}),onClick:function(t){t.stopPropagation(),e("/p/workflows/definitions/".concat(encodeURIComponent(r.id)))},children:"View"}),(0,n.jsx)(a.UIButton,{variant:"link",size:"small",icon:(0,n.jsx)(a.UIIcon,{name:"PlayCircleOutlined"}),onClick:function(e){e.stopPropagation(),p(r)},children:"Run"})]})}}];return(0,n.jsxs)(a.UIPage,{width:"full",children:[c,(0,n.jsx)(a.UIPageHeader,{title:"Workflow Definitions",description:"All registered workflow definitions",breadcrumbs:[{title:"Home",href:"/"},{title:"Workflows",href:"/workflows"},{title:"Definitions"}]}),(0,n.jsx)(a.UICard,{children:(0,n.jsx)(a.UITable,{dataSource:(null==h?void 0:h.workflows)||[],columns:x,loading:m,rowKey:"id",scroll:{x:1270},pagination:{pageSize:20},onRow:function(t){return{style:{cursor:"pointer"},onClick:function(){return e("/p/workflows/definitions/".concat(encodeURIComponent(t.id)))}}}})}),(0,n.jsx)(s.y,{open:!!f,workflow:f,loading:g.isLoading,onClose:function(){return p(null)},onRun:function(t,n){g.mutate({workflowId:t,input:n},{onSuccess:function(t){p(null),e("/p/workflows/runs/".concat(t.runId))},onError:function(e){r.error('Failed to start workflow "'.concat(t,'": ').concat(e.message))}})}})]})}}}]);
2
+ //# sourceMappingURL=__federation_expose_Definitions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"__federation_expose_Definitions.js","sources":["webpack://@kb-labs/workflow-entry/../../../node_modules/.pnpm/react@18.3.1/node_modules/react/cjs/react-jsx-runtime.production.min.js","webpack://@kb-labs/workflow-entry/../../../node_modules/.pnpm/react@18.3.1/node_modules/react/jsx-runtime.js","webpack://@kb-labs/workflow-entry/./src/studio/components/RunWorkflowModal.tsx","webpack://@kb-labs/workflow-entry/./src/studio/pages/WorkflowsDefinitions.tsx"],"sourcesContent":["/**\n * @license React\n * react-jsx-runtime.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';var f=require(\"react\"),k=Symbol.for(\"react.element\"),l=Symbol.for(\"react.fragment\"),m=Object.prototype.hasOwnProperty,n=f.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,p={key:!0,ref:!0,__self:!0,__source:!0};\nfunction q(c,a,g){var b,d={},e=null,h=null;void 0!==g&&(e=\"\"+g);void 0!==a.key&&(e=\"\"+a.key);void 0!==a.ref&&(h=a.ref);for(b in a)m.call(a,b)&&!p.hasOwnProperty(b)&&(d[b]=a[b]);if(c&&c.defaultProps)for(b in a=c.defaultProps,a)void 0===d[b]&&(d[b]=a[b]);return{$$typeof:k,type:c,key:e,ref:h,props:d,_owner:n.current}}exports.Fragment=l;exports.jsx=q;exports.jsxs=q;\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-jsx-runtime.production.min.js');\n} else {\n module.exports = require('./cjs/react-jsx-runtime.development.js');\n}\n","/**\n * @module @kb-labs/studio-app/modules/workflows/components/run-workflow-modal\n * Modal dialog for running a workflow with optional input parameters.\n * Supports two modes:\n * 1. Single workflow (workflow prop) — used from definition page\n * 2. Workflow picker (workflows prop) — used from dashboard\n */\n\nimport * as React from 'react';\nimport {\n UIModal,\n UIButton,\n UISpace,\n UITypographyText,\n UIInput,\n UIInputTextArea,\n UIInputNumber,\n UISwitch,\n UISelect,\n UIIcon,\n} from '@kb-labs/sdk/studio';\nimport type { WorkflowInfo } from '@kb-labs/workflow-contracts';\n\ntype InputField = NonNullable<WorkflowInfo['inputs']>[string];\n\ninterface RunWorkflowModalBaseProps {\n open: boolean;\n onClose: () => void;\n onRun: (workflowId: string, input: Record<string, unknown>) => void;\n loading?: boolean;\n}\n\ninterface SingleWorkflowProps extends RunWorkflowModalBaseProps {\n workflow: WorkflowInfo | null;\n workflows?: never;\n}\n\ninterface MultiWorkflowProps extends RunWorkflowModalBaseProps {\n workflow?: never;\n workflows: WorkflowInfo[];\n}\n\nexport type RunWorkflowModalProps = SingleWorkflowProps | MultiWorkflowProps;\n\nfunction DynamicField({\n name,\n schema,\n value,\n onChange,\n}: {\n name: string;\n schema: InputField;\n value: unknown;\n onChange: (val: unknown) => void;\n}) {\n const label = (\n <UISpace className=\"gap-tight\" style={{ marginBottom: 4 }}>\n <UITypographyText className=\"typo-label\">\n {name}\n {schema.required && (\n <span style={{ color: 'var(--color-error)', marginLeft: 2 }}>*</span>\n )}\n </UITypographyText>\n {schema.description && (\n <UITypographyText className=\"typo-caption text-tertiary\">\n — {schema.description}\n </UITypographyText>\n )}\n </UISpace>\n );\n\n if (schema.type === 'boolean') {\n return (\n <div style={{ marginBottom: 16 }}>\n {label}\n <div>\n <UISwitch\n checked={value !== undefined ? Boolean(value) : (schema.default as boolean ?? false)}\n onChange={onChange}\n />\n </div>\n </div>\n );\n }\n\n if (schema.type === 'number') {\n return (\n <div style={{ marginBottom: 16 }}>\n {label}\n <UIInputNumber\n style={{ width: '100%' }}\n value={value as number | undefined}\n placeholder={schema.default !== undefined ? String(schema.default) : undefined}\n onChange={onChange}\n />\n </div>\n );\n }\n\n return (\n <div style={{ marginBottom: 16 }}>\n {label}\n <UIInput\n value={value as string | undefined}\n placeholder={schema.default !== undefined ? String(schema.default) : undefined}\n onChange={(val) => onChange(val)}\n />\n </div>\n );\n}\n\nexport function RunWorkflowModal(props: RunWorkflowModalProps) {\n const { open, onClose, onRun, loading } = props;\n\n const isMulti = 'workflows' in props && Array.isArray(props.workflows);\n const workflowList: WorkflowInfo[] = isMulti ? (props as MultiWorkflowProps).workflows : [];\n\n const [selectedId, setSelectedId] = React.useState<string | undefined>(undefined);\n const [jsonValue, setJsonValue] = React.useState('{}');\n const [jsonError, setJsonError] = React.useState<string | null>(null);\n const [fieldValues, setFieldValues] = React.useState<Record<string, unknown>>({});\n\n // Resolve the active workflow\n const activeWorkflow: WorkflowInfo | null = isMulti\n ? workflowList.find((w) => w.id === selectedId) ?? null\n : (props as SingleWorkflowProps).workflow ?? null;\n\n const inputs = activeWorkflow?.inputs;\n const hasSchema = !!inputs && Object.keys(inputs).length > 0;\n\n // Reset form when modal opens or workflow changes\n React.useEffect(() => {\n if (open) {\n setJsonValue('{}');\n setJsonError(null);\n if (!isMulti) {\n setSelectedId(undefined);\n }\n if (inputs) {\n const defaults: Record<string, unknown> = {};\n for (const [key, schema] of Object.entries(inputs)) {\n if (schema.default !== undefined) {\n defaults[key] = schema.default;\n }\n }\n setFieldValues(defaults);\n } else {\n setFieldValues({});\n }\n }\n }, [open, activeWorkflow?.id, inputs, isMulti]);\n\n // Reset fields when selected workflow changes in multi mode\n React.useEffect(() => {\n if (!isMulti || !selectedId) {return;}\n setJsonValue('{}');\n setJsonError(null);\n if (inputs) {\n const defaults: Record<string, unknown> = {};\n for (const [key, schema] of Object.entries(inputs)) {\n if (schema.default !== undefined) {\n defaults[key] = schema.default;\n }\n }\n setFieldValues(defaults);\n } else {\n setFieldValues({});\n }\n }, [selectedId, inputs, isMulti]);\n\n const handleJsonChange = (e: React.ChangeEvent<HTMLTextAreaElement>) => {\n const val = e.target.value;\n setJsonValue(val);\n if (!val.trim() || val.trim() === '{}') {\n setJsonError(null);\n return;\n }\n try {\n JSON.parse(val);\n setJsonError(null);\n } catch {\n setJsonError('Invalid JSON');\n }\n };\n\n const handleRun = () => {\n if (!activeWorkflow) {return;}\n if (hasSchema) {\n onRun(activeWorkflow.id, fieldValues);\n } else {\n const trimmed = jsonValue.trim();\n if (!trimmed || trimmed === '{}') {\n onRun(activeWorkflow.id, {});\n return;\n }\n try {\n const parsed = JSON.parse(trimmed) as Record<string, unknown>;\n onRun(activeWorkflow.id, parsed);\n } catch {\n setJsonError('Invalid JSON');\n }\n }\n };\n\n const footer = (\n <UISpace style={{ justifyContent: 'flex-end' }}>\n <UIButton onClick={onClose} disabled={loading}>\n Cancel\n </UIButton>\n <UIButton\n variant=\"primary\"\n icon={<UIIcon name=\"PlayCircleOutlined\" />}\n loading={loading}\n disabled={!activeWorkflow || (!hasSchema && !!jsonError)}\n onClick={handleRun}\n >\n Run\n </UIButton>\n </UISpace>\n );\n\n const title = activeWorkflow\n ? `Run Workflow: ${activeWorkflow.name}`\n : 'Run Workflow';\n\n return (\n <UIModal\n open={open}\n title={\n <UISpace className=\"gap-item\">\n <UIIcon name=\"ThunderboltOutlined\" />\n <span>{title}</span>\n </UISpace>\n }\n onCancel={onClose}\n footer={footer}\n maskClosable={!loading}\n >\n {/* Workflow picker (multi mode only) */}\n {isMulti && (\n <div style={{ marginTop: 16 }}>\n <UITypographyText className=\"typo-label\" style={{ display: 'block', marginBottom: 8 }}>\n Select Workflow\n </UITypographyText>\n <UISelect\n style={{ width: '100%' }}\n placeholder=\"Choose a workflow...\"\n value={selectedId}\n onChange={(val) => setSelectedId(val as string)}\n showSearch\n options={workflowList.map((w) => ({\n label: w.name,\n value: w.id,\n description: w.description,\n }))}\n />\n </div>\n )}\n\n {/* Input form (shown when workflow is selected) */}\n {activeWorkflow && hasSchema && (\n <div style={{ marginTop: 16 }}>\n {Object.entries(inputs!).map(([key, schema]) => (\n <DynamicField\n key={key}\n name={key}\n schema={schema}\n value={fieldValues[key]}\n onChange={(val) => setFieldValues((prev) => ({ ...prev, [key]: val }))}\n />\n ))}\n </div>\n )}\n\n {activeWorkflow && !hasSchema && (\n <div style={{ marginTop: 16 }}>\n <UITypographyText className=\"typo-label\" style={{ display: 'block', marginBottom: 8 }}>\n Input payload (JSON)\n </UITypographyText>\n <UIInputTextArea\n value={jsonValue}\n onChange={handleJsonChange}\n rows={6}\n placeholder=\"{}\"\n style={{ fontFamily: 'var(--font-mono, monospace)', fontSize: 13 }}\n status={jsonError ? 'error' : undefined}\n />\n {jsonError && (\n <UITypographyText className=\"typo-caption text-error\" style={{ display: 'block', marginTop: 4 }}>\n {jsonError}\n </UITypographyText>\n )}\n <UITypographyText className=\"typo-caption text-tertiary\" style={{ display: 'block', marginTop: 8 }}>\n Leave empty or <code>{'{}'}</code> to run without parameters\n </UITypographyText>\n </div>\n )}\n </UIModal>\n );\n}\n","/**\n * @module @kb-labs/studio-app/modules/workflows/pages/workflows-definitions-page\n * Workflow definitions list - standalone page\n */\n\nimport * as React from 'react';\nimport { useNavigate } from 'react-router-dom';\nimport {\n UITable,\n UITag,\n UISpace,\n UITypographyText,\n UIButton,\n UIIcon,\n useUIMessage,\n} from '@kb-labs/sdk/studio';\nimport { useData, useMutateData } from '@kb-labs/sdk/studio';\nimport type { WorkflowInfo } from '@kb-labs/workflow-contracts';\nimport { UICard } from '@kb-labs/sdk/studio';\nimport { RunWorkflowModal } from '../components/RunWorkflowModal';\nimport { UIPage, UIPageHeader } from '@kb-labs/sdk/studio';\n\nexport default function WorkflowsDefinitions() {\n const navigate = useNavigate();\n const [messageApi, contextHolder] = useUIMessage();\n const [runModalWorkflow, setRunModalWorkflow] = React.useState<WorkflowInfo | null>(null);\n\n const { data: workflowsData, isLoading } = useData<{ workflows: WorkflowInfo[] }>('/exec/api/v1/workflows', {\n params: { limit: 100 },\n });\n\n const runWorkflowMutation = useMutateData<\n { workflowId: string; input: Record<string, unknown> },\n { runId: string; status: string }\n >(\n (p) => `/exec/api/v1/workflows/${encodeURIComponent(p.workflowId)}/runs`,\n { mapBody: (p) => p.input },\n );\n\n const columns = [\n {\n title: 'Workflow',\n dataIndex: 'name',\n key: 'name',\n width: 280,\n render: (name: string, record: WorkflowInfo) => (\n <div style={{ width: '100%', overflow: 'hidden' }}>\n <UITypographyText className=\"typo-body\" strong style={{ display: 'block' }}>{name}</UITypographyText>\n {record.description && (\n <UITypographyText\n className=\"typo-description text-secondary\"\n ellipsis={{ tooltip: record.description }}\n style={{ display: 'block' }}\n >\n {record.description}\n </UITypographyText>\n )}\n </div>\n ),\n },\n {\n title: 'ID',\n dataIndex: 'id',\n key: 'id',\n width: 220,\n render: (id: string) => (\n <UITypographyText className=\"typo-caption text-tertiary\" code ellipsis={{ tooltip: id }}>{id}</UITypographyText>\n ),\n },\n {\n title: 'Source',\n dataIndex: 'source',\n key: 'source',\n width: 120,\n render: (source: 'manifest' | 'standalone') => (\n <UITag color={source === 'manifest' ? 'blue' : 'green'}>\n {source === 'manifest' ? 'Plugin' : 'Standalone'}\n </UITag>\n ),\n },\n {\n title: 'Plugin',\n dataIndex: 'pluginId',\n key: 'pluginId',\n width: 200,\n render: (pluginId?: string) => (\n pluginId ? (\n <UITypographyText className=\"typo-caption\">{pluginId}</UITypographyText>\n ) : (\n <UITypographyText className=\"typo-caption text-tertiary\">-</UITypographyText>\n )\n ),\n },\n {\n title: 'Status',\n dataIndex: 'status',\n key: 'status',\n width: 110,\n render: (status?: 'active' | 'inactive') => {\n if (!status) {return <UITypographyText className=\"typo-caption text-tertiary\">-</UITypographyText>;}\n return (\n <UITag color={status === 'active' ? 'success' : 'default'}>\n {status.toUpperCase()}\n </UITag>\n );\n },\n },\n {\n title: 'Tags',\n dataIndex: 'tags',\n key: 'tags',\n width: 180,\n render: (tags?: string[]) => (\n <UISpace className=\"gap-tight\">\n {tags && tags.length > 0 ? (\n tags.map((tag) => (\n <UITag key={tag} style={{ borderColor: 'var(--border-primary)' }}>\n {tag}\n </UITag>\n ))\n ) : (\n <UITypographyText className=\"typo-caption text-tertiary\">-</UITypographyText>\n )}\n </UISpace>\n ),\n },\n {\n title: 'Actions',\n key: 'actions',\n width: 160,\n fixed: 'right' as const,\n render: (_: unknown, record: WorkflowInfo) => (\n <UISpace className=\"gap-tight\">\n <UIButton\n variant=\"link\"\n size=\"small\"\n icon={<UIIcon name=\"EyeOutlined\" />}\n onClick={(e) => {\n e.stopPropagation();\n navigate(`/p/workflows/definitions/${encodeURIComponent(record.id)}`);\n }}\n >\n View\n </UIButton>\n <UIButton\n variant=\"link\"\n size=\"small\"\n icon={<UIIcon name=\"PlayCircleOutlined\" />}\n onClick={(e) => {\n e.stopPropagation();\n setRunModalWorkflow(record);\n }}\n >\n Run\n </UIButton>\n </UISpace>\n ),\n },\n ];\n\n return (\n <UIPage width=\"full\">\n {contextHolder}\n <UIPageHeader\n title=\"Workflow Definitions\"\n description=\"All registered workflow definitions\"\n breadcrumbs={[\n { title: 'Home', href: '/' },\n { title: 'Workflows', href: '/workflows' },\n { title: 'Definitions' },\n ]}\n />\n\n <UICard>\n <UITable\n dataSource={workflowsData?.workflows || []}\n columns={columns}\n loading={isLoading}\n rowKey=\"id\"\n scroll={{ x: 1270 }}\n pagination={{ pageSize: 20 }}\n onRow={(record: WorkflowInfo) => ({\n style: { cursor: 'pointer' },\n onClick: () => navigate(`/p/workflows/definitions/${encodeURIComponent(record.id)}`),\n })}\n />\n </UICard>\n\n <RunWorkflowModal\n open={!!runModalWorkflow}\n workflow={runModalWorkflow}\n loading={runWorkflowMutation.isLoading}\n onClose={() => setRunModalWorkflow(null)}\n onRun={(workflowId, input) => {\n runWorkflowMutation.mutate({ workflowId, input }, {\n onSuccess: (data) => {\n setRunModalWorkflow(null);\n navigate(`/p/workflows/runs/${data.runId}`);\n },\n onError: (err) => {\n messageApi.error(`Failed to start workflow \"${workflowId}\": ${err.message}`);\n },\n });\n }}\n />\n </UIPage>\n );\n}\n"],"names":["r","Symbol","Object","DynamicField","param","_schema_default","name","schema","value","onChange","label","UISpace","UITypographyText","UISwitch","undefined","Boolean","UIInputNumber","String","UIInput","onChange1","val","RunWorkflowModal","props","_workflowList_find","_props_workflow","open","onClose","onRun","loading","isMulti","Array","workflowList","_React_useState","selectedId","setSelectedId","_React_useState1","jsonValue","setJsonValue","_React_useState2","jsonError","setJsonError","_React_useState3","fieldValues","setFieldValues","activeWorkflow","w","inputs","hasSchema","React","defaults","_iteratorError","key","footer","UIButton","UIIcon","trimmed","parsed","JSON","title","UIModal","UISelect","prev","UIInputTextArea","e","WorkflowsDefinitions","navigate","useNavigate","_useUIMessage","messageApi","contextHolder","runModalWorkflow","setRunModalWorkflow","_useData","workflowsData","isLoading","runWorkflowMutation","useMutateData","p","encodeURIComponent","mapBody","columns","render","record","id","source","UITag","pluginId","status","tags","tag","_","onClick","UIPage","UIPageHeader","UICard","UITable","onRow","workflowId","input","onSuccess","data","onError","err"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ "use strict";(self.webpackChunk_kb_labs_workflow_entry=self.webpackChunk_kb_labs_workflow_entry||[]).push([["97"],{572(e,t,r){var n=r(5259),a=Symbol.for("react.element"),o=Symbol.for("react.fragment"),l=Object.prototype.hasOwnProperty,i=n.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,s={key:!0,ref:!0,__self:!0,__source:!0};function c(e,t,r){var n,o={},c=null,p=null;for(n in void 0!==r&&(c=""+r),void 0!==t.key&&(c=""+t.key),void 0!==t.ref&&(p=t.ref),t)l.call(t,n)&&!s.hasOwnProperty(n)&&(o[n]=t[n]);if(e&&e.defaultProps)for(n in t=e.defaultProps)void 0===o[n]&&(o[n]=t[n]);return{$$typeof:a,type:e,key:c,ref:p,props:o,_owner:i.current}}t.Fragment=o,t.jsx=c,t.jsxs=c},8048(e,t,r){e.exports=r(572)},9012(e,t,r){r.r(t),r.d(t,{default:()=>u});var n=r(8048),a=r(5259),o=r(1349),l=r(2383);function i(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=Array(t);r<t;r++)n[r]=e[r];return n}function s(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{},n=Object.keys(r);"function"==typeof Object.getOwnPropertySymbols&&(n=n.concat(Object.getOwnPropertySymbols(r).filter(function(e){return Object.getOwnPropertyDescriptor(r,e).enumerable}))),n.forEach(function(t){var n;n=r[t],t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n})}return e}function c(e,t){return t=null!=t?t:{},Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):(function(e){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t.push.apply(t,r)}return t})(Object(t)).forEach(function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(t,r))}),e}var p={pending:"default",running:"processing",completed:"success",failed:"error",cancelled:"warning"};function u(){var e,t=function(e){if(Array.isArray(e))return e}(e=a.useState({limit:50}))||function(e){var t,r,n=null==e?null:"u">typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var a=[],o=!0,l=!1;try{for(n=n.call(e);!(o=(t=n.next()).done)&&(a.push(t.value),2!==a.length);o=!0);}catch(e){l=!0,r=e}finally{try{o||null==n.return||n.return()}finally{if(l)throw r}}return a}}(e)||function(e){if(e){if("string"==typeof e)return i(e,2);var t=Object.prototype.toString.call(e).slice(8,-1);if("Object"===t&&e.constructor&&(t=e.constructor.name),"Map"===t||"Set"===t)return Array.from(t);if("Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t))return i(e,2)}}(e)||function(){throw TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}(),r=t[0],u=t[1],y=(0,l.useData)("/exec/api/v1/jobs",{params:r}),d=y.data,f=y.isLoading,h=function(e,t){if(!e)return"-";var r=new Date(e).getTime(),n=Math.floor(((t?new Date(t).getTime():Date.now())-r)/1e3);if(n<60)return"".concat(n,"s");var a=Math.floor(n/60);if(a<60)return"".concat(a,"m ").concat(n%60,"s");var o=Math.floor(a/60);return"".concat(o,"h ").concat(a%60,"m")},b=[{title:"Job ID",dataIndex:"id",key:"id",width:180,render:function(e){return(0,n.jsxs)(o.UITypographyText,{className:"typo-caption",code:!0,ellipsis:{tooltip:e},style:{whiteSpace:"nowrap"},children:[e.slice(0,16),"..."]})}},{title:"Type",dataIndex:"type",key:"type",width:260,render:function(e){return(0,n.jsx)(o.UITypographyText,{className:"typo-body",ellipsis:{tooltip:e},style:{display:"block"},children:e})}},{title:"Status",dataIndex:"status",key:"status",width:130,render:function(e,t){return(0,n.jsxs)(o.UISpace,{direction:"vertical",className:"gap-tight",children:[(0,n.jsx)(o.UITag,{color:p[e]||"default",children:e.toUpperCase()}),void 0!==t.progress&&"running"===e&&(0,n.jsxs)(o.UITypographyText,{className:"typo-caption text-secondary",children:[t.progress,"%",t.progressMessage&&" \xb7 ".concat(t.progressMessage)]})]})}},{title:"Created",dataIndex:"createdAt",key:"createdAt",width:220,render:function(e){return(0,n.jsx)(o.UITypographyText,{className:"typo-caption",style:{whiteSpace:"nowrap"},children:e?new Date(e).toLocaleString():"-"})}},{title:"Duration",key:"duration",width:100,render:function(e,t){return(0,n.jsx)(o.UITypographyText,{className:"typo-caption",children:h(t.startedAt,t.finishedAt)})}},{title:"Attempts",key:"attempts",width:90,render:function(e,t){return(0,n.jsxs)(o.UITypographyText,{className:"typo-caption",children:[t.attempt||0," / ",t.maxRetries||3]})}},{title:"Error",dataIndex:"error",key:"error",width:260,render:function(e){return e?(0,n.jsx)(o.UITypographyText,{className:"typo-caption text-error",ellipsis:{tooltip:e},style:{display:"block"},children:e}):(0,n.jsx)(o.UITypographyText,{className:"typo-caption text-tertiary",children:"-"})}}];return(0,n.jsxs)(o.UIPage,{width:"full",children:[(0,n.jsx)(o.UIPageHeader,{title:"Background Jobs",description:"Monitor background job execution and status",breadcrumbs:[{title:"Home",href:"/"},{title:"Workflows",href:"/workflows"},{title:"Jobs"}]}),(0,n.jsx)(o.UICard,{style:{marginBottom:"var(--spacing-section)"},children:(0,n.jsxs)(o.UIRow,{gutter:16,children:[(0,n.jsxs)(o.UICol,{span:8,children:[(0,n.jsx)(o.UITypographyText,{className:"typo-label",children:"Filter by Status"}),(0,n.jsx)(o.UISelect,{style:{width:"100%",marginTop:8},placeholder:"All statuses",allowClear:!0,value:r.status,onChange:function(e){return u(c(s({},r),{status:e}))},options:[{label:"Pending",value:"pending"},{label:"Running",value:"running"},{label:"Completed",value:"completed"},{label:"Failed",value:"failed"},{label:"Cancelled",value:"cancelled"}]})]}),(0,n.jsxs)(o.UICol,{span:8,children:[(0,n.jsx)(o.UITypographyText,{className:"typo-label",children:"Filter by Type"}),(0,n.jsx)(o.UISelect,{style:{width:"100%",marginTop:8},placeholder:"All types",allowClear:!0,showSearch:!0,value:r.type,onChange:function(e){return u(c(s({},r),{type:e}))},options:[]})]}),(0,n.jsxs)(o.UICol,{span:8,children:[(0,n.jsx)(o.UITypographyText,{className:"typo-label",children:"Limit"}),(0,n.jsx)(o.UISelect,{style:{width:"100%",marginTop:8},value:r.limit||50,onChange:function(e){return u(c(s({},r),{limit:e}))},options:[{label:"25",value:25},{label:"50",value:50},{label:"100",value:100},{label:"200",value:200}]})]})]})}),(0,n.jsx)(o.UICard,{children:(0,n.jsx)(o.UITable,{dataSource:(null==d?void 0:d.jobs)||[],columns:b,loading:f,rowKey:"id",scroll:{x:1240},pagination:{pageSize:20}})})]})}}}]);
2
+ //# sourceMappingURL=__federation_expose_Jobs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"__federation_expose_Jobs.js","sources":["webpack://@kb-labs/workflow-entry/../../../node_modules/.pnpm/react@18.3.1/node_modules/react/cjs/react-jsx-runtime.production.min.js","webpack://@kb-labs/workflow-entry/../../../node_modules/.pnpm/react@18.3.1/node_modules/react/jsx-runtime.js","webpack://@kb-labs/workflow-entry/./src/studio/pages/WorkflowsJobs.tsx"],"sourcesContent":["/**\n * @license React\n * react-jsx-runtime.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';var f=require(\"react\"),k=Symbol.for(\"react.element\"),l=Symbol.for(\"react.fragment\"),m=Object.prototype.hasOwnProperty,n=f.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,p={key:!0,ref:!0,__self:!0,__source:!0};\nfunction q(c,a,g){var b,d={},e=null,h=null;void 0!==g&&(e=\"\"+g);void 0!==a.key&&(e=\"\"+a.key);void 0!==a.ref&&(h=a.ref);for(b in a)m.call(a,b)&&!p.hasOwnProperty(b)&&(d[b]=a[b]);if(c&&c.defaultProps)for(b in a=c.defaultProps,a)void 0===d[b]&&(d[b]=a[b]);return{$$typeof:k,type:c,key:e,ref:h,props:d,_owner:n.current}}exports.Fragment=l;exports.jsx=q;exports.jsxs=q;\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-jsx-runtime.production.min.js');\n} else {\n module.exports = require('./cjs/react-jsx-runtime.development.js');\n}\n","/**\n * @module @kb-labs/studio-app/modules/workflows/pages/workflows-jobs-page\n * Background jobs list - standalone page\n */\n\nimport * as React from 'react';\nimport {\n UITable,\n UITag,\n UISpace,\n UITypographyText,\n UISelect,\n UIRow,\n UICol,\n} from '@kb-labs/sdk/studio';\nimport { useData } from '@kb-labs/sdk/studio';\nimport type { JobStatusInfo, JobListFilter } from '@kb-labs/workflow-contracts';\nimport { UICard } from '@kb-labs/sdk/studio';\nimport { UIPage, UIPageHeader } from '@kb-labs/sdk/studio';\n\nconst STATUS_COLORS: Record<string, string> = {\n pending: 'default',\n running: 'processing',\n completed: 'success',\n failed: 'error',\n cancelled: 'warning',\n};\n\nexport default function WorkflowsJobs() {\n const [filters, setFilters] = React.useState<JobListFilter>({ limit: 50 });\n\n const { data: jobsData, isLoading } = useData<{ jobs: JobStatusInfo[] }>('/exec/api/v1/jobs', {\n params: filters as Record<string, string | number | boolean>,\n });\n\n const formatDate = (date?: Date | string) => {\n if (!date) {return '-';}\n return new Date(date).toLocaleString();\n };\n\n const formatDuration = (start?: Date | string, end?: Date | string) => {\n if (!start) {return '-';}\n const startMs = new Date(start).getTime();\n const endMs = end ? new Date(end).getTime() : Date.now();\n const durationMs = endMs - startMs;\n const seconds = Math.floor(durationMs / 1000);\n if (seconds < 60) {return `${seconds}s`;}\n const minutes = Math.floor(seconds / 60);\n if (minutes < 60) {return `${minutes}m ${seconds % 60}s`;}\n const hours = Math.floor(minutes / 60);\n return `${hours}h ${minutes % 60}m`;\n };\n\n const columns = [\n {\n title: 'Job ID',\n dataIndex: 'id',\n key: 'id',\n width: 180,\n render: (id: string) => (\n <UITypographyText className=\"typo-caption\" code ellipsis={{ tooltip: id }} style={{ whiteSpace: 'nowrap' }}>{id.slice(0, 16)}...</UITypographyText>\n ),\n },\n {\n title: 'Type',\n dataIndex: 'type',\n key: 'type',\n width: 260,\n render: (type: string) => (\n <UITypographyText className=\"typo-body\" ellipsis={{ tooltip: type }} style={{ display: 'block' }}>{type}</UITypographyText>\n ),\n },\n {\n title: 'Status',\n dataIndex: 'status',\n key: 'status',\n width: 130,\n render: (status: string, record: JobStatusInfo) => (\n <UISpace direction=\"vertical\" className=\"gap-tight\">\n <UITag color={STATUS_COLORS[status] || 'default'}>\n {status.toUpperCase()}\n </UITag>\n {record.progress !== undefined && status === 'running' && (\n <UITypographyText className=\"typo-caption text-secondary\">\n {record.progress}%{record.progressMessage && ` · ${record.progressMessage}`}\n </UITypographyText>\n )}\n </UISpace>\n ),\n },\n {\n title: 'Created',\n dataIndex: 'createdAt',\n key: 'createdAt',\n width: 220,\n render: (date: Date | string | undefined) => (\n <UITypographyText className=\"typo-caption\" style={{ whiteSpace: 'nowrap' }}>{formatDate(date)}</UITypographyText>\n ),\n },\n {\n title: 'Duration',\n key: 'duration',\n width: 100,\n render: (_: unknown, record: JobStatusInfo) => (\n <UITypographyText className=\"typo-caption\">\n {formatDuration(record.startedAt, record.finishedAt)}\n </UITypographyText>\n ),\n },\n {\n title: 'Attempts',\n key: 'attempts',\n width: 90,\n render: (_: unknown, record: JobStatusInfo) => (\n <UITypographyText className=\"typo-caption\">\n {record.attempt || 0} / {record.maxRetries || 3}\n </UITypographyText>\n ),\n },\n {\n title: 'Error',\n dataIndex: 'error',\n key: 'error',\n width: 260,\n render: (error?: string) => (\n error ? (\n <UITypographyText className=\"typo-caption text-error\" ellipsis={{ tooltip: error }} style={{ display: 'block' }}>\n {error}\n </UITypographyText>\n ) : (\n <UITypographyText className=\"typo-caption text-tertiary\">-</UITypographyText>\n )\n ),\n },\n ];\n\n return (\n <UIPage width=\"full\">\n <UIPageHeader\n title=\"Background Jobs\"\n description=\"Monitor background job execution and status\"\n breadcrumbs={[\n { title: 'Home', href: '/' },\n { title: 'Workflows', href: '/workflows' },\n { title: 'Jobs' },\n ]}\n />\n\n <UICard style={{ marginBottom: 'var(--spacing-section)' }}>\n <UIRow gutter={16}>\n <UICol span={8}>\n <UITypographyText className=\"typo-label\">Filter by Status</UITypographyText>\n <UISelect\n style={{ width: '100%', marginTop: 8 }}\n placeholder=\"All statuses\"\n allowClear\n value={filters.status}\n onChange={(status) => setFilters({ ...filters, status: status as typeof filters.status })}\n options={[\n { label: 'Pending', value: 'pending' },\n { label: 'Running', value: 'running' },\n { label: 'Completed', value: 'completed' },\n { label: 'Failed', value: 'failed' },\n { label: 'Cancelled', value: 'cancelled' },\n ]}\n />\n </UICol>\n <UICol span={8}>\n <UITypographyText className=\"typo-label\">Filter by Type</UITypographyText>\n <UISelect\n style={{ width: '100%', marginTop: 8 }}\n placeholder=\"All types\"\n allowClear\n showSearch\n value={filters.type}\n onChange={(type) => setFilters({ ...filters, type: type as string | undefined })}\n options={[]}\n />\n </UICol>\n <UICol span={8}>\n <UITypographyText className=\"typo-label\">Limit</UITypographyText>\n <UISelect\n style={{ width: '100%', marginTop: 8 }}\n value={filters.limit || 50}\n onChange={(limit) => setFilters({ ...filters, limit: limit as number })}\n options={[\n { label: '25', value: 25 },\n { label: '50', value: 50 },\n { label: '100', value: 100 },\n { label: '200', value: 200 },\n ]}\n />\n </UICol>\n </UIRow>\n </UICard>\n\n <UICard>\n <UITable\n dataSource={jobsData?.jobs || []}\n columns={columns}\n loading={isLoading}\n rowKey=\"id\"\n scroll={{ x: 1240 }}\n pagination={{ pageSize: 20 }}\n />\n </UICard>\n </UIPage>\n );\n}\n"],"names":["r","Symbol","Object","STATUS_COLORS","WorkflowsJobs","_React_useState","filters","setFilters","_useData","jobsData","isLoading","formatDuration","start","end","startMs","Date","seconds","Math","durationMs","endMs","minutes","hours","columns","render","id","UITypographyText","type","status","record","UISpace","UITag","undefined","date","_","error","UIPage","UIPageHeader","UICard","UIRow","UICol","UISelect","onChange","limit","UITable"],"mappings":"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"}