@hotmeshio/long-tail 0.1.5 → 0.1.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +78 -8
- package/build/api/auth.d.ts +5 -0
- package/build/api/auth.js +42 -0
- package/build/api/bot-accounts.d.ts +50 -0
- package/build/api/bot-accounts.js +215 -0
- package/build/api/controlplane.d.ts +20 -0
- package/build/api/controlplane.js +110 -0
- package/build/api/dba.d.ts +15 -0
- package/build/api/dba.js +68 -0
- package/build/api/escalations.d.ts +70 -0
- package/build/api/escalations.js +656 -0
- package/build/api/exports.d.ts +32 -0
- package/build/api/exports.js +146 -0
- package/build/api/index.d.ts +18 -0
- package/build/api/index.js +54 -0
- package/build/api/insight.d.ts +29 -0
- package/build/api/insight.js +90 -0
- package/build/api/maintenance.d.ts +7 -0
- package/build/api/maintenance.js +28 -0
- package/build/api/mcp-runs.d.ts +16 -0
- package/build/api/mcp-runs.js +62 -0
- package/build/api/mcp.d.ts +52 -0
- package/build/api/mcp.js +212 -0
- package/build/api/namespaces.d.ts +7 -0
- package/build/{routes/escalations/helpers.js → api/namespaces.js} +24 -12
- package/build/api/roles.d.ts +25 -0
- package/build/api/roles.js +159 -0
- package/build/api/settings.d.ts +2 -0
- package/build/api/settings.js +35 -0
- package/build/api/tasks.d.ts +27 -0
- package/build/api/tasks.js +96 -0
- package/build/api/users.d.ts +44 -0
- package/build/api/users.js +162 -0
- package/build/api/workflow-sets.d.ts +26 -0
- package/build/api/workflow-sets.js +119 -0
- package/build/api/workflows.d.ts +48 -0
- package/build/api/workflows.js +298 -0
- package/build/api/yaml-workflows.d.ts +87 -0
- package/build/api/yaml-workflows.js +556 -0
- package/build/index.d.ts +4 -0
- package/build/index.js +6 -1
- package/build/lib/db/migrate.js +3 -6
- package/{lib → build/lib}/db/schemas/001_schema.sql +3 -0
- package/build/lib/db/schemas/004_workflow_sets.sql +29 -0
- package/build/lib/db/schemas/005_unique_graph_topic.sql +7 -0
- package/{lib → build/lib}/db/schemas/011_system_workflow_configs.sql +14 -0
- package/build/lib/db/schemas/016_streamable_http.sql +7 -0
- package/build/lib/events/callback.d.ts +41 -0
- package/build/lib/events/callback.js +98 -0
- package/build/modules/config.js +1 -1
- package/build/routes/auth.js +37 -36
- package/build/routes/bot-accounts.js +34 -164
- package/build/routes/controlplane.js +20 -60
- package/build/routes/dba.js +18 -28
- package/build/routes/docs.js +25 -7
- package/build/routes/escalations/bulk.js +17 -192
- package/build/routes/escalations/list.js +29 -75
- package/build/routes/escalations/resolve.js +3 -193
- package/build/routes/escalations/single.js +13 -122
- package/build/routes/exports.js +44 -95
- package/build/routes/index.js +2 -0
- package/build/routes/insight.js +61 -40
- package/build/routes/maintenance.js +41 -17
- package/build/routes/mcp-runs.js +52 -60
- package/build/routes/mcp.js +55 -161
- package/build/routes/namespaces.js +9 -20
- package/build/routes/roles.js +23 -97
- package/build/routes/settings.js +37 -25
- package/build/routes/tasks.js +28 -64
- package/build/routes/users.js +24 -113
- package/build/routes/workflow-sets.d.ts +2 -0
- package/build/routes/workflow-sets.js +98 -0
- package/build/routes/workflows/config.js +23 -57
- package/build/routes/workflows/discovery.js +11 -85
- package/build/routes/workflows/invocation.js +16 -84
- package/build/routes/yaml-workflows/cron.d.ts +2 -0
- package/build/routes/yaml-workflows/cron.js +68 -0
- package/build/routes/yaml-workflows/crud.js +38 -193
- package/build/routes/yaml-workflows/deployment.js +15 -140
- package/build/routes/yaml-workflows/index.js +4 -1
- package/build/routes/yaml-workflows/versions.js +20 -58
- package/build/sdk/index.d.ts +327 -0
- package/build/sdk/index.js +298 -0
- package/build/services/controlplane/index.d.ts +1 -2
- package/build/services/controlplane/index.js +3 -3
- package/build/services/controlplane/sql.d.ts +2 -2
- package/build/services/controlplane/sql.js +4 -5
- package/build/services/controlplane/types.d.ts +1 -0
- package/build/services/cron/index.d.ts +17 -0
- package/build/services/cron/index.js +94 -1
- package/build/services/export/index.js +6 -1
- package/build/services/hotmesh-utils.js +2 -4
- package/build/services/insight/index.d.ts +18 -0
- package/build/services/insight/index.js +60 -0
- package/build/services/mcp/client/connection.d.ts +9 -0
- package/build/services/mcp/client/connection.js +49 -1
- package/build/services/mcp/client/tools.js +13 -1
- package/build/services/mcp/db-server/schemas.d.ts +2 -2
- package/build/services/mcp/db.d.ts +1 -1
- package/build/services/mcp/db.js +10 -0
- package/build/services/mcp/playwright-server/schemas.d.ts +4 -4
- package/build/services/mcp/sql.d.ts +1 -1
- package/build/services/mcp/sql.js +2 -2
- package/build/services/mcp/types.d.ts +3 -1
- package/build/services/mcp-runs/sql.js +1 -1
- package/build/services/workflow-sets/db.d.ts +16 -0
- package/build/services/workflow-sets/db.js +78 -0
- package/build/services/workflow-sets/index.d.ts +1 -0
- package/build/services/workflow-sets/index.js +11 -0
- package/build/services/workflow-sets/sql.d.ts +6 -0
- package/build/services/workflow-sets/sql.js +24 -0
- package/build/services/yaml-workflow/db-utils.d.ts +1 -0
- package/build/services/yaml-workflow/db-utils.js +4 -0
- package/build/services/yaml-workflow/db.d.ts +8 -0
- package/build/services/yaml-workflow/db.js +41 -0
- package/build/services/yaml-workflow/invoke.d.ts +19 -0
- package/build/services/yaml-workflow/invoke.js +80 -0
- package/build/services/yaml-workflow/pipeline/build/dag.js +1 -1
- package/build/services/yaml-workflow/pipeline/build/wiring.d.ts +1 -1
- package/build/services/yaml-workflow/pipeline/build/wiring.js +102 -2
- package/build/services/yaml-workflow/pipeline/prompts.d.ts +1 -1
- package/build/services/yaml-workflow/pipeline/prompts.js +44 -1
- package/build/services/yaml-workflow/sql.d.ts +5 -1
- package/build/services/yaml-workflow/sql.js +23 -3
- package/build/services/yaml-workflow/types.d.ts +16 -1
- package/build/services/yaml-workflow/workers/callbacks.js +16 -2
- package/build/services/yaml-workflow/workers/register.js +36 -1
- package/build/start/adapters.js +4 -0
- package/build/system/index.js +12 -0
- package/build/system/mcp-servers/admin/schemas.d.ts +12 -12
- package/build/system/mcp-servers/db-query/schemas.d.ts +2 -2
- package/build/system/mcp-servers/knowledge.js +1 -1
- package/build/system/mcp-servers/playwright/schemas.d.ts +18 -18
- package/build/system/mcp-servers/playwright-cli/schemas.d.ts +34 -34
- package/build/system/mcp-servers/playwright-cli/tools-capture.js +5 -1
- package/build/system/mcp-servers/vision.js +54 -17
- package/build/system/seed/server-definitions.d.ts +7 -0
- package/build/system/seed/server-definitions.js +6 -2
- package/build/system/seed/tool-manifests-workflows.d.ts +7 -0
- package/build/system/seed/tool-manifests-workflows.js +10 -3
- package/build/system/workflows/mcp-workflow-builder/activities/caches.d.ts +5 -0
- package/build/system/workflows/mcp-workflow-builder/activities/caches.js +8 -0
- package/build/system/workflows/mcp-workflow-builder/activities/index.d.ts +2 -0
- package/build/system/workflows/mcp-workflow-builder/activities/index.js +8 -0
- package/build/system/workflows/mcp-workflow-builder/activities/llm.d.ts +2 -0
- package/build/system/workflows/mcp-workflow-builder/activities/llm.js +25 -0
- package/build/system/workflows/mcp-workflow-builder/activities/tool-loader.d.ts +11 -0
- package/build/system/workflows/mcp-workflow-builder/activities/tool-loader.js +34 -0
- package/build/system/workflows/mcp-workflow-builder/index.d.ts +16 -0
- package/build/system/workflows/mcp-workflow-builder/index.js +253 -0
- package/build/system/workflows/mcp-workflow-builder/prompts.d.ts +8 -0
- package/build/system/workflows/mcp-workflow-builder/prompts.js +316 -0
- package/build/system/workflows/mcp-workflow-planner/activities/analyze.d.ts +11 -0
- package/build/system/workflows/mcp-workflow-planner/activities/analyze.js +36 -0
- package/build/system/workflows/mcp-workflow-planner/activities/index.d.ts +3 -0
- package/build/system/workflows/mcp-workflow-planner/activities/index.js +12 -0
- package/build/system/workflows/mcp-workflow-planner/activities/persist.d.ts +19 -0
- package/build/system/workflows/mcp-workflow-planner/activities/persist.js +55 -0
- package/build/system/workflows/mcp-workflow-planner/activities/plan.d.ts +10 -0
- package/build/system/workflows/mcp-workflow-planner/activities/plan.js +43 -0
- package/build/system/workflows/mcp-workflow-planner/index.d.ts +7 -0
- package/build/system/workflows/mcp-workflow-planner/index.js +152 -0
- package/build/system/workflows/mcp-workflow-planner/prompts.d.ts +7 -0
- package/build/system/workflows/mcp-workflow-planner/prompts.js +77 -0
- package/build/system/workflows/shared/tool-loader.js +3 -0
- package/build/tsconfig.tsbuildinfo +1 -1
- package/build/types/index.d.ts +1 -0
- package/build/types/mcp.d.ts +4 -3
- package/build/types/sdk.d.ts +27 -0
- package/build/types/sdk.js +2 -0
- package/build/types/workflow-set.d.ts +44 -0
- package/build/types/workflow-set.js +5 -0
- package/build/types/yaml-workflow.d.ts +6 -2
- package/dashboard/dist/assets/AdminDashboard-DRjkRSjJ.js +2 -0
- package/dashboard/dist/assets/{AdminDashboard-CTyAMUJR.js.map → AdminDashboard-DRjkRSjJ.js.map} +1 -1
- package/dashboard/dist/assets/AvailableEscalationsPage-CnivX4Tz.js +2 -0
- package/dashboard/dist/assets/AvailableEscalationsPage-CnivX4Tz.js.map +1 -0
- package/dashboard/dist/assets/BotPicker-DwwaBhTH.js +2 -0
- package/dashboard/dist/assets/{BotPicker-C51nKFEu.js.map → BotPicker-DwwaBhTH.js.map} +1 -1
- package/dashboard/dist/assets/{CollapsibleSection-BSyfd8uL.js → CollapsibleSection-DQpaVA0M.js} +2 -2
- package/dashboard/dist/assets/{CollapsibleSection-BSyfd8uL.js.map → CollapsibleSection-DQpaVA0M.js.map} +1 -1
- package/dashboard/dist/assets/{ConfirmDeleteModal-CBdhia5T.js → ConfirmDeleteModal-B7JoDNvt.js} +2 -2
- package/dashboard/dist/assets/{ConfirmDeleteModal-CBdhia5T.js.map → ConfirmDeleteModal-B7JoDNvt.js.map} +1 -1
- package/dashboard/dist/assets/{CopyableId-dGlewBCS.js → CopyableId-AqoZayBG.js} +2 -2
- package/dashboard/dist/assets/{CopyableId-dGlewBCS.js.map → CopyableId-AqoZayBG.js.map} +1 -1
- package/dashboard/dist/assets/CredentialsPage-qGw1kQzi.js +2 -0
- package/dashboard/dist/assets/CredentialsPage-qGw1kQzi.js.map +1 -0
- package/dashboard/dist/assets/{CustomDurationPicker-BataWFj8.js → CustomDurationPicker-D1HUQcd0.js} +2 -2
- package/dashboard/dist/assets/{CustomDurationPicker-BataWFj8.js.map → CustomDurationPicker-D1HUQcd0.js.map} +1 -1
- package/dashboard/dist/assets/{DataTable-B3uf5CCo.js → DataTable-DKvSKoVG.js} +2 -2
- package/dashboard/dist/assets/{DataTable-B3uf5CCo.js.map → DataTable-DKvSKoVG.js.map} +1 -1
- package/dashboard/dist/assets/{ElapsedCell-G5oSwTpT.js → ElapsedCell-B0yrReGQ.js} +2 -2
- package/dashboard/dist/assets/{ElapsedCell-G5oSwTpT.js.map → ElapsedCell-B0yrReGQ.js.map} +1 -1
- package/dashboard/dist/assets/{EmptyState-BChBJNGS.js → EmptyState-X0fIzYID.js} +2 -2
- package/dashboard/dist/assets/{EmptyState-BChBJNGS.js.map → EmptyState-X0fIzYID.js.map} +1 -1
- package/dashboard/dist/assets/{EscalationsOverview-CxUv8xjG.js → EscalationsOverview-BQAT9W7r.js} +2 -2
- package/dashboard/dist/assets/{EscalationsOverview-CxUv8xjG.js.map → EscalationsOverview-BQAT9W7r.js.map} +1 -1
- package/dashboard/dist/assets/{EventTable-CVt8B0BZ.js → EventTable-CX1KNLhZ.js} +2 -2
- package/dashboard/dist/assets/{EventTable-CVt8B0BZ.js.map → EventTable-CX1KNLhZ.js.map} +1 -1
- package/dashboard/dist/assets/{FilterBar-CShf0oe7.js → FilterBar-DMTvuQy-.js} +2 -2
- package/dashboard/dist/assets/{FilterBar-CShf0oe7.js.map → FilterBar-DMTvuQy-.js.map} +1 -1
- package/dashboard/dist/assets/ListToolbar-DTOSxoEy.js +2 -0
- package/dashboard/dist/assets/ListToolbar-DTOSxoEy.js.map +1 -0
- package/dashboard/dist/assets/{McpOverview-CbaZRnJl.js → McpOverview-BaKTIWrG.js} +2 -2
- package/dashboard/dist/assets/{McpOverview-CbaZRnJl.js.map → McpOverview-BaKTIWrG.js.map} +1 -1
- package/dashboard/dist/assets/McpQueryDetailPage-CC08T5k8.js +5 -0
- package/dashboard/dist/assets/McpQueryDetailPage-CC08T5k8.js.map +1 -0
- package/dashboard/dist/assets/McpQueryPage-CVfF9dYg.js +2 -0
- package/dashboard/dist/assets/McpQueryPage-CVfF9dYg.js.map +1 -0
- package/dashboard/dist/assets/McpRunDetailPage-CKs1RWeV.js +2 -0
- package/dashboard/dist/assets/McpRunDetailPage-CKs1RWeV.js.map +1 -0
- package/dashboard/dist/assets/McpRunsPage-CcPD_tY1.js +2 -0
- package/dashboard/dist/assets/McpRunsPage-CcPD_tY1.js.map +1 -0
- package/dashboard/dist/assets/{Modal-CI5RBPOQ.js → Modal-_2AbWxJT.js} +2 -2
- package/dashboard/dist/assets/{Modal-CI5RBPOQ.js.map → Modal-_2AbWxJT.js.map} +1 -1
- package/dashboard/dist/assets/OperatorDashboard-BGiRaRDr.js +2 -0
- package/dashboard/dist/assets/OperatorDashboard-BGiRaRDr.js.map +1 -0
- package/dashboard/dist/assets/{PageHeader-SMD9qtOO.js → PageHeader-DVr5Qyzm.js} +2 -2
- package/dashboard/dist/assets/{PageHeader-SMD9qtOO.js.map → PageHeader-DVr5Qyzm.js.map} +1 -1
- package/dashboard/dist/assets/{PageHeaderWithStats-TikLQsTp.js → PageHeaderWithStats-D0KRASML.js} +2 -2
- package/dashboard/dist/assets/{PageHeaderWithStats-TikLQsTp.js.map → PageHeaderWithStats-D0KRASML.js.map} +1 -1
- package/dashboard/dist/assets/{PriorityBadge-CQ0EsLTA.js → PriorityBadge-Bx2559OU.js} +2 -2
- package/dashboard/dist/assets/{PriorityBadge-CQ0EsLTA.js.map → PriorityBadge-Bx2559OU.js.map} +1 -1
- package/dashboard/dist/assets/ProcessDetailPage-69I--sry.js +2 -0
- package/dashboard/dist/assets/ProcessDetailPage-69I--sry.js.map +1 -0
- package/dashboard/dist/assets/ProcessesListPage-BDpUbua2.js +2 -0
- package/dashboard/dist/assets/ProcessesListPage-BDpUbua2.js.map +1 -0
- package/dashboard/dist/assets/{RolePill-Crj4TH5p.js → RolePill-CcAqEaSt.js} +2 -2
- package/dashboard/dist/assets/{RolePill-Crj4TH5p.js.map → RolePill-CcAqEaSt.js.map} +1 -1
- package/dashboard/dist/assets/{RolesPage-C_RInUwS.js → RolesPage-Cl23Hjet.js} +2 -2
- package/dashboard/dist/assets/{RolesPage-C_RInUwS.js.map → RolesPage-Cl23Hjet.js.map} +1 -1
- package/dashboard/dist/assets/{RowActions-Cp5HyK_w.js → RowActions-B4mqIt3Z.js} +2 -2
- package/dashboard/dist/assets/{RowActions-Cp5HyK_w.js.map → RowActions-B4mqIt3Z.js.map} +1 -1
- package/dashboard/dist/assets/{StatCard-BKZLSgNV.js → StatCard-Cz_2OjAZ.js} +2 -2
- package/dashboard/dist/assets/{StatCard-BKZLSgNV.js.map → StatCard-Cz_2OjAZ.js.map} +1 -1
- package/dashboard/dist/assets/{StatusBadge-BYNGGZK5.js → StatusBadge-Wi2FJZsn.js} +2 -2
- package/dashboard/dist/assets/{StatusBadge-BYNGGZK5.js.map → StatusBadge-Wi2FJZsn.js.map} +1 -1
- package/dashboard/dist/assets/StepIndicator-PW5NRDMb.js +2 -0
- package/dashboard/dist/assets/StepIndicator-PW5NRDMb.js.map +1 -0
- package/dashboard/dist/assets/{StickyPagination-CTosgiU2.js → StickyPagination-Bl2Uzz65.js} +2 -2
- package/dashboard/dist/assets/{StickyPagination-CTosgiU2.js.map → StickyPagination-Bl2Uzz65.js.map} +1 -1
- package/dashboard/dist/assets/{SwimlaneTimeline-ylG5Ps1s.js → SwimlaneTimeline-CUPqMd0z.js} +2 -2
- package/dashboard/dist/assets/{SwimlaneTimeline-ylG5Ps1s.js.map → SwimlaneTimeline-CUPqMd0z.js.map} +1 -1
- package/dashboard/dist/assets/TagInput-BLtf86Ly.js +2 -0
- package/dashboard/dist/assets/TagInput-BLtf86Ly.js.map +1 -0
- package/dashboard/dist/assets/{TaskDetailPage-C9pDGdD2.js → TaskDetailPage-BXJFX74D.js} +2 -2
- package/dashboard/dist/assets/{TaskDetailPage-C9pDGdD2.js.map → TaskDetailPage-BXJFX74D.js.map} +1 -1
- package/dashboard/dist/assets/{TaskQueuePill-BtJbZTT0.js → TaskQueuePill-CWYj3xKe.js} +2 -2
- package/dashboard/dist/assets/{TaskQueuePill-BtJbZTT0.js.map → TaskQueuePill-CWYj3xKe.js.map} +1 -1
- package/dashboard/dist/assets/{TasksListPage-DtFLUEhg.js → TasksListPage-C3cX94Mw.js} +2 -2
- package/dashboard/dist/assets/{TasksListPage-DtFLUEhg.js.map → TasksListPage-C3cX94Mw.js.map} +1 -1
- package/dashboard/dist/assets/{TimeAgo-WuM6xImZ.js → TimeAgo-B_5yDDHV.js} +2 -2
- package/dashboard/dist/assets/{TimeAgo-WuM6xImZ.js.map → TimeAgo-B_5yDDHV.js.map} +1 -1
- package/dashboard/dist/assets/{TimestampCell-IVL_-Upy.js → TimestampCell-DRX724uU.js} +2 -2
- package/dashboard/dist/assets/{TimestampCell-IVL_-Upy.js.map → TimestampCell-DRX724uU.js.map} +1 -1
- package/dashboard/dist/assets/{UserName-DU9qeg13.js → UserName-Ca8FA469.js} +2 -2
- package/dashboard/dist/assets/{UserName-DU9qeg13.js.map → UserName-Ca8FA469.js.map} +1 -1
- package/dashboard/dist/assets/WorkflowExecutionPage-BBYWEV2P.js +2 -0
- package/dashboard/dist/assets/WorkflowExecutionPage-BBYWEV2P.js.map +1 -0
- package/dashboard/dist/assets/WorkflowPill-BXifAuLi.js +2 -0
- package/dashboard/dist/assets/{WorkflowPill-Diw8iWBP.js.map → WorkflowPill-BXifAuLi.js.map} +1 -1
- package/dashboard/dist/assets/WorkflowsDashboard-Drl3juz9.js +2 -0
- package/dashboard/dist/assets/WorkflowsDashboard-Drl3juz9.js.map +1 -0
- package/dashboard/dist/assets/{WorkflowsOverview-CPuvA4t3.js → WorkflowsOverview-03IRrDLg.js} +2 -2
- package/dashboard/dist/assets/{WorkflowsOverview-CPuvA4t3.js.map → WorkflowsOverview-03IRrDLg.js.map} +1 -1
- package/dashboard/dist/assets/YamlWorkflowsPage-DC2cLxVi.js +2 -0
- package/dashboard/dist/assets/YamlWorkflowsPage-DC2cLxVi.js.map +1 -0
- package/dashboard/dist/assets/{bots-BPiZXf2h.js → bots-DZEXcgiJ.js} +2 -2
- package/dashboard/dist/assets/{bots-BPiZXf2h.js.map → bots-DZEXcgiJ.js.map} +1 -1
- package/dashboard/dist/assets/{escalation-DTY_OKRh.js → escalation-Cw48lNaF.js} +2 -2
- package/dashboard/dist/assets/{escalation-DTY_OKRh.js.map → escalation-Cw48lNaF.js.map} +1 -1
- package/dashboard/dist/assets/{escalation-columns-C91fHSkp.js → escalation-columns-NINpo3qf.js} +2 -2
- package/dashboard/dist/assets/{escalation-columns-C91fHSkp.js.map → escalation-columns-NINpo3qf.js.map} +1 -1
- package/dashboard/dist/assets/helpers-Cuu3xKfr.js +2 -0
- package/dashboard/dist/assets/helpers-Cuu3xKfr.js.map +1 -0
- package/dashboard/dist/assets/helpers-fk_qr729.js +2 -0
- package/dashboard/dist/assets/helpers-fk_qr729.js.map +1 -0
- package/dashboard/dist/assets/index-B98ipWxE.js +2 -0
- package/dashboard/dist/assets/{index-CDWOfCmi.js.map → index-B98ipWxE.js.map} +1 -1
- package/dashboard/dist/assets/{index-D_qEAYrg.js → index-BIG3KooI.js} +2 -2
- package/dashboard/dist/assets/{index-D_qEAYrg.js.map → index-BIG3KooI.js.map} +1 -1
- package/dashboard/dist/assets/{index-DSzSoku1.js → index-BwN3KP_L.js} +91 -93
- package/dashboard/dist/assets/index-BwN3KP_L.js.map +1 -0
- package/dashboard/dist/assets/index-Bxe8h1x4.js +17 -0
- package/dashboard/dist/assets/index-Bxe8h1x4.js.map +1 -0
- package/dashboard/dist/assets/index-CNI7k7oB.js +6 -0
- package/dashboard/dist/assets/index-CNI7k7oB.js.map +1 -0
- package/dashboard/dist/assets/index-CORHB0WC.js +2 -0
- package/dashboard/dist/assets/index-CORHB0WC.js.map +1 -0
- package/dashboard/dist/assets/index-DcIKW-cZ.css +1 -0
- package/dashboard/dist/assets/index-Dj-z-x8M.js +2 -0
- package/dashboard/dist/assets/index-Dj-z-x8M.js.map +1 -0
- package/dashboard/dist/assets/index-DwRytW9O.js +5 -0
- package/dashboard/dist/assets/index-DwRytW9O.js.map +1 -0
- package/dashboard/dist/assets/index-aRvL-dXp.js +2 -0
- package/dashboard/dist/assets/index-aRvL-dXp.js.map +1 -0
- package/dashboard/dist/assets/index-b03HlbnH.js +2 -0
- package/dashboard/dist/assets/{index-BtOwLI0K.js.map → index-b03HlbnH.js.map} +1 -1
- package/dashboard/dist/assets/mcp-BZoFryNc.js +2 -0
- package/dashboard/dist/assets/mcp-BZoFryNc.js.map +1 -0
- package/dashboard/dist/assets/mcp-query-wiw1kwm8.js +2 -0
- package/dashboard/dist/assets/mcp-query-wiw1kwm8.js.map +1 -0
- package/dashboard/dist/assets/{mcp-runs-DmXYJD19.js → mcp-runs-BaEKnf5v.js} +2 -2
- package/dashboard/dist/assets/{mcp-runs-DmXYJD19.js.map → mcp-runs-BaEKnf5v.js.map} +1 -1
- package/dashboard/dist/assets/{namespaces-DoGa7jc7.js → namespaces-BwnZI4_A.js} +2 -2
- package/dashboard/dist/assets/{namespaces-DoGa7jc7.js.map → namespaces-BwnZI4_A.js.map} +1 -1
- package/dashboard/dist/assets/{roles-wCdQ2Z7k.js → roles-Bgn1K8zU.js} +2 -2
- package/dashboard/dist/assets/{roles-wCdQ2Z7k.js.map → roles-Bgn1K8zU.js.map} +1 -1
- package/dashboard/dist/assets/{settings-DDe_L7JT.js → settings-CizYiutL.js} +2 -2
- package/dashboard/dist/assets/{settings-DDe_L7JT.js.map → settings-CizYiutL.js.map} +1 -1
- package/dashboard/dist/assets/{tasks-3Hih8Bt7.js → tasks-Bmte_hc4.js} +2 -2
- package/dashboard/dist/assets/{tasks-3Hih8Bt7.js.map → tasks-Bmte_hc4.js.map} +1 -1
- package/dashboard/dist/assets/useEventHooks-CUCxpiI2.js +2 -0
- package/dashboard/dist/assets/useEventHooks-CUCxpiI2.js.map +1 -0
- package/dashboard/dist/assets/useExpandedRows-Cg9iq6Vy.js +2 -0
- package/dashboard/dist/assets/useExpandedRows-Cg9iq6Vy.js.map +1 -0
- package/dashboard/dist/assets/{useYamlActivityEvents-B5dHec6Y.js → useYamlActivityEvents-Cum02Ej9.js} +2 -2
- package/dashboard/dist/assets/useYamlActivityEvents-Cum02Ej9.js.map +1 -0
- package/dashboard/dist/assets/{users-BTagPmGW.js → users-NSDgTt-z.js} +2 -2
- package/dashboard/dist/assets/{users-BTagPmGW.js.map → users-NSDgTt-z.js.map} +1 -1
- package/dashboard/dist/assets/{vendor-icons-DCLlGYO9.js → vendor-icons-D1DdudfH.js} +141 -66
- package/dashboard/dist/assets/vendor-icons-D1DdudfH.js.map +1 -0
- package/dashboard/dist/assets/{workflows-B20dR3NE.js → workflows-k0XRdGXx.js} +2 -2
- package/dashboard/dist/assets/{workflows-B20dR3NE.js.map → workflows-k0XRdGXx.js.map} +1 -1
- package/dashboard/dist/assets/yaml-workflows-DAre8I78.js +2 -0
- package/dashboard/dist/assets/yaml-workflows-DAre8I78.js.map +1 -0
- package/dashboard/dist/index.html +3 -3
- package/docs/api/mcp-servers.md +60 -2
- package/docs/architecture.md +3 -3
- package/docs/dashboard.md +1 -1
- package/docs/epic-integration.md +224 -0
- package/docs/escalation-strategies.md +2 -3
- package/docs/events.md +28 -0
- package/docs/mcp.md +301 -31
- package/docs/sdk.md +177 -0
- package/docs/story.md +157 -0
- package/docs/workflow-builder.md +371 -0
- package/package.json +5 -4
- package/build/routes/escalations/helpers.d.ts +0 -5
- package/build/routes/resolve.d.ts +0 -9
- package/build/routes/resolve.js +0 -19
- package/build/routes/yaml-workflows/helpers.d.ts +0 -2
- package/build/routes/yaml-workflows/helpers.js +0 -8
- package/dashboard/dist/assets/AdminDashboard-CTyAMUJR.js +0 -2
- package/dashboard/dist/assets/AvailableEscalationsPage-BMXV3Q4l.js +0 -2
- package/dashboard/dist/assets/AvailableEscalationsPage-BMXV3Q4l.js.map +0 -1
- package/dashboard/dist/assets/BotPicker-C51nKFEu.js +0 -2
- package/dashboard/dist/assets/CredentialsPage-CoBNFSAu.js +0 -2
- package/dashboard/dist/assets/CredentialsPage-CoBNFSAu.js.map +0 -1
- package/dashboard/dist/assets/McpQueryDetailPage-CGoR9XK6.js +0 -5
- package/dashboard/dist/assets/McpQueryDetailPage-CGoR9XK6.js.map +0 -1
- package/dashboard/dist/assets/McpQueryPage-BjXoYQuU.js +0 -2
- package/dashboard/dist/assets/McpQueryPage-BjXoYQuU.js.map +0 -1
- package/dashboard/dist/assets/McpRunDetailPage-DLkA5Aar.js +0 -2
- package/dashboard/dist/assets/McpRunDetailPage-DLkA5Aar.js.map +0 -1
- package/dashboard/dist/assets/McpRunsPage-DCh9n11D.js +0 -2
- package/dashboard/dist/assets/McpRunsPage-DCh9n11D.js.map +0 -1
- package/dashboard/dist/assets/OperatorDashboard-Dc80suXd.js +0 -2
- package/dashboard/dist/assets/OperatorDashboard-Dc80suXd.js.map +0 -1
- package/dashboard/dist/assets/ProcessDetailPage-B2GKuGzk.js +0 -2
- package/dashboard/dist/assets/ProcessDetailPage-B2GKuGzk.js.map +0 -1
- package/dashboard/dist/assets/ProcessesListPage-CTjI3Wn6.js +0 -2
- package/dashboard/dist/assets/ProcessesListPage-CTjI3Wn6.js.map +0 -1
- package/dashboard/dist/assets/RefreshButton-BcQDObrv.js +0 -2
- package/dashboard/dist/assets/RefreshButton-BcQDObrv.js.map +0 -1
- package/dashboard/dist/assets/RunAsSelector-BhyWtofX.js +0 -2
- package/dashboard/dist/assets/RunAsSelector-BhyWtofX.js.map +0 -1
- package/dashboard/dist/assets/WorkflowExecutionPage-DOocX81f.js +0 -2
- package/dashboard/dist/assets/WorkflowExecutionPage-DOocX81f.js.map +0 -1
- package/dashboard/dist/assets/WorkflowPill-Diw8iWBP.js +0 -2
- package/dashboard/dist/assets/WorkflowsDashboard-DDtUIrTy.js +0 -2
- package/dashboard/dist/assets/WorkflowsDashboard-DDtUIrTy.js.map +0 -1
- package/dashboard/dist/assets/YamlWorkflowsPage-DlwwkluN.js +0 -2
- package/dashboard/dist/assets/YamlWorkflowsPage-DlwwkluN.js.map +0 -1
- package/dashboard/dist/assets/helpers-DBUZ9pnG.js +0 -2
- package/dashboard/dist/assets/helpers-DBUZ9pnG.js.map +0 -1
- package/dashboard/dist/assets/index-BOeA-gfK.js +0 -17
- package/dashboard/dist/assets/index-BOeA-gfK.js.map +0 -1
- package/dashboard/dist/assets/index-BZ6K_kmL.js +0 -3
- package/dashboard/dist/assets/index-BZ6K_kmL.js.map +0 -1
- package/dashboard/dist/assets/index-Bpm0yeoi.js +0 -2
- package/dashboard/dist/assets/index-Bpm0yeoi.js.map +0 -1
- package/dashboard/dist/assets/index-BtOwLI0K.js +0 -2
- package/dashboard/dist/assets/index-CBF3ZvRZ.js +0 -6
- package/dashboard/dist/assets/index-CBF3ZvRZ.js.map +0 -1
- package/dashboard/dist/assets/index-CDWOfCmi.js +0 -2
- package/dashboard/dist/assets/index-Ce6sL__n.js +0 -2
- package/dashboard/dist/assets/index-Ce6sL__n.js.map +0 -1
- package/dashboard/dist/assets/index-DSzSoku1.js.map +0 -1
- package/dashboard/dist/assets/index-gCy9XX3W.css +0 -1
- package/dashboard/dist/assets/mcp-BzVpaaKF.js +0 -2
- package/dashboard/dist/assets/mcp-BzVpaaKF.js.map +0 -1
- package/dashboard/dist/assets/mcp-query-wTuxTTCV.js +0 -2
- package/dashboard/dist/assets/mcp-query-wTuxTTCV.js.map +0 -1
- package/dashboard/dist/assets/useNatsEvents-DeGKHFTX.js +0 -2
- package/dashboard/dist/assets/useNatsEvents-DeGKHFTX.js.map +0 -1
- package/dashboard/dist/assets/useYamlActivityEvents-B5dHec6Y.js.map +0 -1
- package/dashboard/dist/assets/vendor-icons-DCLlGYO9.js.map +0 -1
- package/dashboard/dist/assets/yaml-workflows-CaLPMQha.js +0 -2
- package/dashboard/dist/assets/yaml-workflows-CaLPMQha.js.map +0 -1
- package/docs/img/01-login.png +0 -0
- package/docs/img/02-dashboard-home.png +0 -0
- package/docs/img/03-processes-list.png +0 -0
- package/docs/img/04-escalations-list.png +0 -0
- package/docs/img/05-mcp-servers.png +0 -0
- package/docs/img/06-mcp-pipelines.png +0 -0
- package/docs/img/07-workflows-list.png +0 -0
- package/docs/img/compilation/01-query-submit.png +0 -0
- package/docs/img/compilation/02-mcp-servers.png +0 -0
- package/docs/img/compilation/03-query-completed.png +0 -0
- package/docs/img/compilation/04-wizard-original.png +0 -0
- package/docs/img/compilation/05-wizard-timeline.png +0 -0
- package/docs/img/compilation/06-wizard-profile.png +0 -0
- package/docs/img/compilation/07-wizard-deploy.png +0 -0
- package/docs/img/compilation/08-wizard-test-modal.png +0 -0
- package/docs/img/compilation/09-wizard-test-compare.png +0 -0
- package/docs/img/compilation/10-wizard-verify.png +0 -0
- package/lib/db/README.md +0 -8
- /package/{lib → build/lib}/db/schemas/002_seed.sql +0 -0
- /package/{lib → build/lib}/db/schemas/003_workflow_discovery.sql +0 -0
- /package/{lib → build/lib}/db/schemas/004_query_router.sql +0 -0
- /package/{lib → build/lib}/db/schemas/005_triage_router.sql +0 -0
- /package/{lib → build/lib}/db/schemas/006_oauth.sql +0 -0
- /package/{lib → build/lib}/db/schemas/007_security.sql +0 -0
- /package/{lib → build/lib}/db/schemas/008_bot_accounts.sql +0 -0
- /package/{lib → build/lib}/db/schemas/009_audit_trail.sql +0 -0
- /package/{lib → build/lib}/db/schemas/010_credential_providers.sql +0 -0
- /package/{lib → build/lib}/db/schemas/012_drop_modality.sql +0 -0
- /package/{lib → build/lib}/db/schemas/013_execute_as.sql +0 -0
- /package/{lib → build/lib}/db/schemas/014_ephemeral_credentials.sql +0 -0
- /package/{lib → build/lib}/db/schemas/015_knowledge.sql +0 -0
package/dashboard/dist/assets/{StickyPagination-CTosgiU2.js.map → StickyPagination-Bl2Uzz65.js.map}
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"StickyPagination-
|
|
1
|
+
{"version":3,"file":"StickyPagination-Bl2Uzz65.js","sources":["../../src/components/common/data/Pagination.tsx","../../src/components/common/data/StickyPagination.tsx"],"sourcesContent":["const PAGE_SIZE_OPTIONS = [10, 25, 50, 100];\n\ninterface PaginationProps {\n page: number;\n totalPages: number;\n onPageChange: (page: number) => void;\n total: number;\n pageSize: number;\n onPageSizeChange?: (size: number) => void;\n}\n\nexport function Pagination({\n page,\n totalPages,\n onPageChange,\n total,\n pageSize,\n onPageSizeChange,\n}: PaginationProps) {\n if (total === 0) return null;\n\n const start = (page - 1) * pageSize + 1;\n const end = Math.min(page * pageSize, total);\n\n return (\n <div className=\"flex items-center justify-between pt-4\">\n <div className=\"flex items-center gap-4\">\n <p className=\"text-xs text-text-tertiary\">\n {start}–{end} of {total}\n </p>\n {onPageSizeChange && (\n <select\n value={pageSize}\n onChange={(e) => onPageSizeChange(parseInt(e.target.value))}\n className=\"select text-xs py-1\"\n >\n {PAGE_SIZE_OPTIONS.map((size) => (\n <option key={size} value={size}>\n {size} / page\n </option>\n ))}\n </select>\n )}\n </div>\n {totalPages > 1 && (\n <div className=\"flex items-center gap-1\">\n <button\n onClick={() => onPageChange(page - 1)}\n disabled={page <= 1}\n className=\"btn-ghost text-xs disabled:opacity-30 disabled:cursor-not-allowed\"\n >\n Previous\n </button>\n <span className=\"px-3 text-xs text-text-secondary\">\n {page} / {totalPages}\n </span>\n <button\n onClick={() => onPageChange(page + 1)}\n disabled={page >= totalPages}\n className=\"btn-ghost text-xs disabled:opacity-30 disabled:cursor-not-allowed\"\n >\n Next\n </button>\n </div>\n )}\n </div>\n );\n}\n","import { Pagination } from './Pagination';\n\ninterface StickyPaginationProps {\n page: number;\n totalPages: number;\n onPageChange: (page: number) => void;\n total: number;\n pageSize: number;\n onPageSizeChange?: (size: number) => void;\n}\n\nexport function StickyPagination(props: StickyPaginationProps) {\n if (props.total === 0) return null;\n\n return (\n <div className=\"sticky bg-surface/95 backdrop-blur-sm border-t border-surface-border -mx-10 px-10 pt-2 pb-4\" style={{ bottom: 'calc(var(--feed-height, 0px) - 8px)' }}>\n <Pagination {...props} />\n </div>\n );\n}\n"],"names":["PAGE_SIZE_OPTIONS","Pagination","page","totalPages","onPageChange","total","pageSize","onPageSizeChange","start","end","jsxDEV","e","size","StickyPagination","props"],"mappings":"wCAAA,MAAMA,EAAoB,CAAC,GAAI,GAAI,GAAI,GAAG,EAWnC,SAASC,EAAW,CACzB,KAAAC,EACA,WAAAC,EACA,aAAAC,EACA,MAAAC,EACA,SAAAC,EACA,iBAAAC,CACF,EAAoB,CAClB,GAAIF,IAAU,EAAG,OAAO,KAExB,MAAMG,GAASN,EAAO,GAAKI,EAAW,EAChCG,EAAM,KAAK,IAAIP,EAAOI,EAAUD,CAAK,EAE3C,OACEK,EAAAA,OAAC,MAAA,CAAI,UAAU,yCACb,SAAA,CAAAA,EAAAA,OAAC,MAAA,CAAI,UAAU,0BACb,SAAA,CAAAA,EAAAA,OAAC,IAAA,CAAE,UAAU,6BACV,SAAA,CAAAF,EAAM,IAAQC,EAAI,OAAKJ,CAAA,CAAA,EAD1B,OAAA,GAAA,CAAA,SAAA,2DAAA,WAAA,GAAA,aAAA,CAAA,EAAA,IAEA,EACCE,GACCG,EAAAA,OAAC,SAAA,CACC,MAAOJ,EACP,SAAWK,GAAMJ,EAAiB,SAASI,EAAE,OAAO,KAAK,CAAC,EAC1D,UAAU,sBAET,WAAkB,IAAKC,GACtBF,SAAC,SAAA,CAAkB,MAAOE,EACvB,SAAA,CAAAA,EAAK,SAAA,CAAA,EADKA,EAAb,GAAA,CAAA,SAAA,2DAAA,WAAA,GAAA,aAAA,EAAA,EAAA,IAEA,CACD,CAAA,EATH,OAAA,GAAA,CAAA,SAAA,2DAAA,WAAA,GAAA,aAAA,EAAA,EAAA,IAAA,CAUA,CAAA,EAfJ,OAAA,GAAA,CAAA,SAAA,2DAAA,WAAA,GAAA,aAAA,CAAA,EAAA,IAiBA,EACCT,EAAa,GACZO,SAAC,MAAA,CAAI,UAAU,0BACb,SAAA,CAAAA,EAAAA,OAAC,SAAA,CACC,QAAS,IAAMN,EAAaF,EAAO,CAAC,EACpC,SAAUA,GAAQ,EAClB,UAAU,oEACX,SAAA,UAAA,EAJD,OAAA,GAAA,CAAA,SAAA,2DAAA,WAAA,GAAA,aAAA,EAAA,EAAA,IAAA,EAOAQ,EAAAA,OAAC,OAAA,CAAK,UAAU,mCACb,SAAA,CAAAR,EAAK,MAAIC,CAAA,CAAA,EADZ,OAAA,GAAA,CAAA,SAAA,2DAAA,WAAA,GAAA,aAAA,EAAA,EAAA,IAEA,EACAO,EAAAA,OAAC,SAAA,CACC,QAAS,IAAMN,EAAaF,EAAO,CAAC,EACpC,SAAUA,GAAQC,EAClB,UAAU,oEACX,SAAA,MAAA,EAJD,OAAA,GAAA,CAAA,SAAA,2DAAA,WAAA,GAAA,aAAA,EAAA,EAAA,IAAA,CAMA,CAAA,EAjBF,OAAA,GAAA,CAAA,SAAA,2DAAA,WAAA,GAAA,aAAA,CAAA,EAAA,IAkBA,CAAA,CAAA,EAtCJ,OAAA,GAAA,CAAA,SAAA,2DAAA,WAAA,GAAA,aAAA,CAAA,EAAA,IAwCA,CAEJ,CCxDO,SAASU,EAAiBC,EAA8B,CAC7D,OAAIA,EAAM,QAAU,EAAU,KAG5BJ,EAAAA,OAAC,MAAA,CAAI,UAAU,8FAA8F,MAAO,CAAE,OAAQ,qCAAA,EAC5H,SAAAA,EAAAA,OAACT,EAAA,CAAY,GAAGa,CAAA,EAAhB,OAAA,GAAA,CAAA,SAAA,iEAAA,WAAA,GAAA,aAAA,CAAA,EAAA,IAAuB,CAAA,EADzB,OAAA,GAAA,CAAA,SAAA,iEAAA,WAAA,GAAA,aAAA,CAAA,EAAA,IAEA,CAEJ"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{j as e,D as L,c as C,J as v,f as S,C as R}from"./index-DSzSoku1.js";import{a as W}from"./vendor-query-DLp59M9_.js";import{S as K}from"./StatusBadge-BYNGGZK5.js";import{L as $}from"./vendor-react-Co3Y8ikm.js";function I(a){if(!a)return null;try{return JSON.parse(a)}catch{return a}}function J({event:a,childTask:o,pending:m=!1,onClose:w}){const d=o?I(o.envelope):null,c=o?I(o.data):null;return e.jsxDEV("div",{className:"p-4 bg-surface-sunken rounded-md space-y-4",children:[e.jsxDEV("div",{className:"flex items-center justify-between gap-2",children:[e.jsxDEV("div",{className:"flex items-center gap-2",children:[e.jsxDEV("p",{className:"font-mono font-medium text-sm text-text-primary",children:a.attributes.activity_type??a.attributes.signal_name??a.attributes.child_workflow_id??a.event_type},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/EventDetailPanel.tsx",lineNumber:45,columnNumber:11},this),m&&e.jsxDEV("span",{className:"inline-flex items-center gap-1 px-1.5 py-0.5 rounded text-[10px] font-medium bg-status-warning/15 text-status-warning",children:[e.jsxDEV("span",{className:"w-1.5 h-1.5 rounded-full bg-status-warning animate-pulse"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/EventDetailPanel.tsx",lineNumber:53,columnNumber:15},this),"Pending"]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/EventDetailPanel.tsx",lineNumber:52,columnNumber:13},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/EventDetailPanel.tsx",lineNumber:44,columnNumber:9},this),w&&e.jsxDEV("button",{onClick:w,className:"text-text-tertiary hover:text-text-primary text-xs",children:"Close"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/EventDetailPanel.tsx",lineNumber:59,columnNumber:11},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/EventDetailPanel.tsx",lineNumber:43,columnNumber:7},this),e.jsxDEV("div",{className:"grid grid-cols-2 sm:grid-cols-4 gap-3",children:[a.attributes.activity_type&&e.jsxDEV("div",{children:[e.jsxDEV("p",{className:"text-[10px] font-semibold uppercase tracking-widest text-text-tertiary",children:"Activity"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/EventDetailPanel.tsx",lineNumber:72,columnNumber:13},this),e.jsxDEV("p",{className:"text-xs font-mono text-text-primary",children:a.attributes.activity_type},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/EventDetailPanel.tsx",lineNumber:75,columnNumber:13},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/EventDetailPanel.tsx",lineNumber:71,columnNumber:11},this),e.jsxDEV("div",{children:[e.jsxDEV("p",{className:"text-[10px] font-semibold uppercase tracking-widest text-text-tertiary",children:"Kind"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/EventDetailPanel.tsx",lineNumber:81,columnNumber:11},this),e.jsxDEV("p",{className:"text-xs font-mono text-text-primary",children:a.attributes.kind},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/EventDetailPanel.tsx",lineNumber:84,columnNumber:11},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/EventDetailPanel.tsx",lineNumber:80,columnNumber:9},this),a.duration_ms!==null&&e.jsxDEV("div",{children:[e.jsxDEV("p",{className:"text-[10px] font-semibold uppercase tracking-widest text-text-tertiary",children:"Duration"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/EventDetailPanel.tsx",lineNumber:90,columnNumber:13},this),e.jsxDEV(L,{ms:a.duration_ms,className:"font-mono text-text-primary"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/EventDetailPanel.tsx",lineNumber:93,columnNumber:13},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/EventDetailPanel.tsx",lineNumber:89,columnNumber:11},this),e.jsxDEV("div",{children:[e.jsxDEV("p",{className:"text-[10px] font-semibold uppercase tracking-widest text-text-tertiary",children:"Time"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/EventDetailPanel.tsx",lineNumber:97,columnNumber:11},this),e.jsxDEV(C,{date:a.event_time,format:"datetime",className:"font-mono text-text-primary"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/EventDetailPanel.tsx",lineNumber:100,columnNumber:11},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/EventDetailPanel.tsx",lineNumber:96,columnNumber:9},this),a.attributes.signal_name&&e.jsxDEV("div",{children:[e.jsxDEV("p",{className:"text-[10px] font-semibold uppercase tracking-widest text-text-tertiary",children:"Signal"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/EventDetailPanel.tsx",lineNumber:106,columnNumber:13},this),e.jsxDEV("p",{className:"text-xs font-mono text-text-primary",children:a.attributes.signal_name},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/EventDetailPanel.tsx",lineNumber:109,columnNumber:13},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/EventDetailPanel.tsx",lineNumber:105,columnNumber:11},this),a.attributes.awaited!==void 0&&e.jsxDEV("div",{children:[e.jsxDEV("p",{className:"text-[10px] font-semibold uppercase tracking-widest text-text-tertiary",children:"Awaited"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/EventDetailPanel.tsx",lineNumber:118,columnNumber:13},this),e.jsxDEV("p",{className:"text-xs font-mono text-text-primary",children:a.attributes.awaited?"Yes":"No (fire-and-forget)"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/EventDetailPanel.tsx",lineNumber:121,columnNumber:13},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/EventDetailPanel.tsx",lineNumber:117,columnNumber:11},this),a.attributes.timeline_key&&e.jsxDEV("div",{className:"col-span-2",children:[e.jsxDEV("p",{className:"text-[10px] font-semibold uppercase tracking-widest text-text-tertiary",children:"Timeline Key"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/EventDetailPanel.tsx",lineNumber:130,columnNumber:13},this),e.jsxDEV("p",{className:"text-xs font-mono text-text-primary truncate",title:a.attributes.timeline_key,children:a.attributes.timeline_key},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/EventDetailPanel.tsx",lineNumber:133,columnNumber:13},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/EventDetailPanel.tsx",lineNumber:129,columnNumber:11},this),a.attributes.execution_index!==void 0&&e.jsxDEV("div",{children:[e.jsxDEV("p",{className:"text-[10px] font-semibold uppercase tracking-widest text-text-tertiary",children:"Exec Index"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/EventDetailPanel.tsx",lineNumber:142,columnNumber:13},this),e.jsxDEV("p",{className:"text-xs font-mono text-text-primary",children:a.attributes.execution_index},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/EventDetailPanel.tsx",lineNumber:145,columnNumber:13},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/EventDetailPanel.tsx",lineNumber:141,columnNumber:11},this),a.attributes.scheduled_event_id!=null&&e.jsxDEV("div",{children:[e.jsxDEV("p",{className:"text-[10px] font-semibold uppercase tracking-widest text-text-tertiary",children:"Scheduled Event"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/EventDetailPanel.tsx",lineNumber:154,columnNumber:13},this),e.jsxDEV("p",{className:"text-xs font-mono text-text-primary",children:["#",a.attributes.scheduled_event_id]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/EventDetailPanel.tsx",lineNumber:157,columnNumber:13},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/EventDetailPanel.tsx",lineNumber:153,columnNumber:11},this),a.attributes.wait_event_id!=null&&e.jsxDEV("div",{children:[e.jsxDEV("p",{className:"text-[10px] font-semibold uppercase tracking-widest text-text-tertiary",children:"Wait Started"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/EventDetailPanel.tsx",lineNumber:164,columnNumber:13},this),e.jsxDEV("p",{className:"text-xs font-mono text-text-primary",children:["Event #",a.attributes.wait_event_id]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/EventDetailPanel.tsx",lineNumber:167,columnNumber:13},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/EventDetailPanel.tsx",lineNumber:163,columnNumber:11},this),a.attributes.initiated_event_id!=null&&e.jsxDEV("div",{children:[e.jsxDEV("p",{className:"text-[10px] font-semibold uppercase tracking-widest text-text-tertiary",children:"Initiated Event"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/EventDetailPanel.tsx",lineNumber:174,columnNumber:13},this),e.jsxDEV("p",{className:"text-xs font-mono text-text-primary",children:["#",a.attributes.initiated_event_id]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/EventDetailPanel.tsx",lineNumber:177,columnNumber:13},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/EventDetailPanel.tsx",lineNumber:173,columnNumber:11},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/EventDetailPanel.tsx",lineNumber:69,columnNumber:7},this),!o&&a.attributes.child_workflow_id&&e.jsxDEV("div",{className:"border-t border-surface-border pt-3",children:e.jsxDEV("div",{className:"flex items-center gap-3 flex-wrap",children:[e.jsxDEV("span",{className:"text-[10px] font-semibold uppercase tracking-widest text-text-tertiary",children:"Child Workflow"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/EventDetailPanel.tsx",lineNumber:188,columnNumber:13},this),e.jsxDEV($,{to:`/workflows/executions/${a.attributes.child_workflow_id}`,className:"text-xs font-mono text-accent hover:underline",onClick:l=>l.stopPropagation(),children:a.attributes.child_workflow_id},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/EventDetailPanel.tsx",lineNumber:191,columnNumber:13},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/EventDetailPanel.tsx",lineNumber:187,columnNumber:11},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/EventDetailPanel.tsx",lineNumber:186,columnNumber:9},this),o&&e.jsxDEV("div",{className:"space-y-3 border-t border-surface-border pt-3",children:[e.jsxDEV("div",{className:"flex items-center gap-3 flex-wrap",children:[e.jsxDEV("span",{className:"text-[10px] font-semibold uppercase tracking-widest text-text-tertiary",children:"Child Workflow"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/EventDetailPanel.tsx",lineNumber:207,columnNumber:13},this),e.jsxDEV($,{to:`/workflows/executions/${o.workflow_id}`,className:"text-xs font-mono text-accent hover:underline",onClick:l=>l.stopPropagation(),children:o.workflow_id},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/EventDetailPanel.tsx",lineNumber:210,columnNumber:13},this),e.jsxDEV(K,{status:o.status},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/EventDetailPanel.tsx",lineNumber:217,columnNumber:13},this),o.completed_at&&e.jsxDEV("span",{className:"text-[10px] text-text-tertiary",children:["Completed ",e.jsxDEV(C,{date:o.completed_at,format:"relative"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/EventDetailPanel.tsx",lineNumber:220,columnNumber:27},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/EventDetailPanel.tsx",lineNumber:219,columnNumber:15},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/EventDetailPanel.tsx",lineNumber:206,columnNumber:11},this),(d!=null||c!=null)&&e.jsxDEV("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-4",children:[d!=null?e.jsxDEV(v,{data:d,label:"Input (Envelope)",variant:"panel"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/EventDetailPanel.tsx",lineNumber:229,columnNumber:17},this):e.jsxDEV("div",{},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/EventDetailPanel.tsx",lineNumber:230,columnNumber:19},this),c!=null?e.jsxDEV(v,{data:c,label:"Output (Result)",variant:"panel"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/EventDetailPanel.tsx",lineNumber:232,columnNumber:17},this):e.jsxDEV("div",{},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/EventDetailPanel.tsx",lineNumber:233,columnNumber:19},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/EventDetailPanel.tsx",lineNumber:227,columnNumber:13},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/EventDetailPanel.tsx",lineNumber:204,columnNumber:9},this),(()=>{const l=a.attributes.input,r=a.attributes.result,b=a.category==="signal",n=a.category==="activity",p=a.category==="child_workflow",g=l!==void 0&&(n||p),f=!o&&r!==void 0&&(n||p),u=a.attributes.activity_type==="ltSignalParent"?"Signal Payload":"Result";return g||f?e.jsxDEV("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-4",children:[g?e.jsxDEV(v,{data:l,label:"Input",variant:"panel"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/EventDetailPanel.tsx",lineNumber:254,columnNumber:17},this):e.jsxDEV("div",{},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/EventDetailPanel.tsx",lineNumber:255,columnNumber:19},this),f?e.jsxDEV(v,{data:r,label:u,variant:"panel"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/EventDetailPanel.tsx",lineNumber:257,columnNumber:17},this):e.jsxDEV("div",{},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/EventDetailPanel.tsx",lineNumber:258,columnNumber:19},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/EventDetailPanel.tsx",lineNumber:252,columnNumber:13},this):b&&l!==void 0?e.jsxDEV(v,{data:l,label:"Signal Payload",variant:"panel"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/EventDetailPanel.tsx",lineNumber:265,columnNumber:18},this):null})(),a.attributes.failure!==void 0&&e.jsxDEV(v,{data:a.attributes.failure,label:"Failure"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/EventDetailPanel.tsx",lineNumber:273,columnNumber:9},this),(()=>{const{kind:l,activity_type:r,result:b,timeline_key:n,execution_index:p,signal_name:g,input:f,child_workflow_id:u,awaited:E,wait_event_id:x,scheduled_event_id:N,initiated_event_id:y,failure:T,trace_id:_,span_id:j,...V}=a.attributes;return Object.keys(V).length>0?e.jsxDEV(v,{data:V,label:"Attributes"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/EventDetailPanel.tsx",lineNumber:297,columnNumber:11},this):null})()]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/EventDetailPanel.tsx",lineNumber:41,columnNumber:5},this)}const k={activity:{bar:"bg-blue-500",outline:"border-blue-500 bg-transparent",text:"text-blue-500",label:"Activities"},signal:{bar:"bg-emerald-500",outline:"border-emerald-500 bg-transparent",text:"text-emerald-500",label:"Signals"},timer:{bar:"bg-status-warning",outline:"border-status-warning bg-transparent",text:"text-status-warning",label:"Timers"},child_workflow:{bar:"bg-violet-500",outline:"border-violet-500 bg-transparent",text:"text-violet-500",label:"Child Workflows"}},B="bg-stripes animate-pulse opacity-70",Y=new Set(["callLLM","callDbTool","callVisionTool","callMcpTool","getDBTools","getVisionTools"]);function G(a,o){if(a.length<=o)return a;const m=Math.floor((o-1)/2);return`${a.slice(0,m)}…${a.slice(a.length-m)}`}function z(a){const o=[],m=new Map,w=new Map;for(const c of a){const l=c.attributes.timeline_key;if(!l)continue;const r=c.event_type;r==="activity_task_scheduled"||r==="timer_started"||r==="child_workflow_execution_started"||r==="signal_wait_started"?m.set(l,c):w.set(l,c)}const d=new Set;for(const c of a){const l=c.attributes.timeline_key;if(l&&d.has(l))continue;l&&d.add(l);const r=l?m.get(l):void 0,b=l?w.get(l):void 0,n=b||r||c,p=n.category,g=n.attributes.activity_type||n.attributes.signal_name||n.attributes.child_workflow_id||n.event_type,f=r||n,u=b,E=new Date(f.event_time).getTime();let x=null,N=null,y=!1;u?(x=new Date(u.event_time).getTime(),N=u.duration_ms??x-E):n.duration_ms!==null?(N=n.duration_ms,x=E+N):y=!0,o.push({category:p,name:g||n.event_type,startTime:E,endTime:x,duration:N,eventId:n.event_id,pending:y})}return o}function U({events:a,childTasks:o,outline:m}){const[w,d]=W.useState(new Set),l=a.filter(t=>t.category!=="workflow");if(l.length===0)return null;const r=z(l);if(r.length===0)return null;const b=Date.now(),n=r.flatMap(t=>{const i=[t.startTime];return t.endTime?i.push(t.endTime):i.push(b),i}),p=Math.min(...n),f=Math.max(...n)-p||1,u=new Map;for(const t of r){const i=`${t.category}:${t.name}`,s=t.startTime-p,D=(t.endTime?t.endTime-p:b-p)-s,P={eventId:t.eventId,startPct:s/f*100,widthPct:Math.max(D/f*100,.5),duration:t.duration,label:`${t.name} — ${t.duration!==null?S(t.duration):"pending"} — ${new Date(t.startTime).toLocaleTimeString()}`,eventTime:new Date(t.startTime).toISOString(),pending:t.pending};u.has(i)||u.set(i,{name:t.name,category:t.category,segments:[]}),u.get(i).segments.push(P)}const E=Array.from(u.values()),x=5,N=Array.from({length:x+1},(t,i)=>({pct:i/x*100,label:S(Math.round(i/x*f))})),y=[...new Set(r.map(t=>t.category))],T=t=>{if(!(o!=null&&o.length))return;const i=t.attributes.activity_type;if(i)return o.find(s=>s.workflow_type===i)},_=t=>{d(i=>{const s=new Set(i);return s.has(t)?s.delete(t):s.add(t),s})},j=r.map(t=>t.eventId),V=j.length>0&&j.every(t=>w.has(t)),A=()=>{d(V?new Set:new Set(j))},M=(t,i)=>{var s,h;return i?B:m?((s=k[t])==null?void 0:s.outline)??"border-text-tertiary bg-transparent":((h=k[t])==null?void 0:h.bar)??"bg-text-tertiary"},O=t=>{var i;return m?((i=k[t])==null?void 0:i.text)??"text-text-tertiary":"text-white"};return e.jsxDEV("div",{className:"px-6 py-6 mb-6",children:[e.jsxDEV("div",{className:"flex items-center gap-4 mb-4 flex-wrap",children:[e.jsxDEV("p",{className:"text-[10px] font-semibold uppercase tracking-widest text-text-tertiary",children:"Execution Timeline"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/SwimlaneTimeline.tsx",lineNumber:133,columnNumber:9},this),e.jsxDEV("button",{onClick:A,className:"text-[10px] text-accent hover:underline",children:V?"Collapse all":"Expand all"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/SwimlaneTimeline.tsx",lineNumber:136,columnNumber:9},this),e.jsxDEV("div",{className:"flex items-center gap-3 ml-auto",children:[y.map(t=>{var i,s,h;return e.jsxDEV("div",{className:"flex items-center gap-1",children:[e.jsxDEV("span",{className:`w-2 h-2 rounded-full ${m?`border ${((i=k[t])==null?void 0:i.outline)??"border-text-tertiary"}`:((s=k[t])==null?void 0:s.bar)??"bg-text-tertiary"}`},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/SwimlaneTimeline.tsx",lineNumber:144,columnNumber:15},this),e.jsxDEV("span",{className:"text-[9px] text-text-tertiary",children:((h=k[t])==null?void 0:h.label)??t},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/SwimlaneTimeline.tsx",lineNumber:145,columnNumber:15},this)]},t,!0,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/SwimlaneTimeline.tsx",lineNumber:143,columnNumber:13},this)}),r.some(t=>t.pending)&&e.jsxDEV("div",{className:"flex items-center gap-1",children:[e.jsxDEV("span",{className:"w-2 h-2 rounded-full bg-status-warning animate-pulse"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/SwimlaneTimeline.tsx",lineNumber:152,columnNumber:15},this),e.jsxDEV("span",{className:"text-[9px] text-text-tertiary",children:"Pending"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/SwimlaneTimeline.tsx",lineNumber:153,columnNumber:15},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/SwimlaneTimeline.tsx",lineNumber:151,columnNumber:13},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/SwimlaneTimeline.tsx",lineNumber:141,columnNumber:9},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/SwimlaneTimeline.tsx",lineNumber:132,columnNumber:7},this),e.jsxDEV("div",{className:"flex",children:[e.jsxDEV("div",{className:"w-56 shrink-0"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/SwimlaneTimeline.tsx",lineNumber:161,columnNumber:9},this),e.jsxDEV("div",{className:"flex-1 relative h-6 border-b border-surface-border",children:N.map(t=>e.jsxDEV("span",{className:"absolute text-[9px] font-mono text-text-tertiary -translate-x-1/2 bottom-1",style:{left:`${t.pct}%`},children:t.label},t.pct,!1,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/SwimlaneTimeline.tsx",lineNumber:164,columnNumber:13},this))},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/SwimlaneTimeline.tsx",lineNumber:162,columnNumber:9},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/SwimlaneTimeline.tsx",lineNumber:160,columnNumber:7},this),E.map(t=>{const i=k[t.category];return e.jsxDEV("div",{children:[e.jsxDEV("div",{className:"flex items-center border-b border-surface-border",children:[e.jsxDEV("div",{className:"w-56 shrink-0 py-3 pr-4 flex items-center gap-2",children:[e.jsxDEV("span",{className:`w-1.5 h-1.5 rounded-full shrink-0 ${(i==null?void 0:i.bar)??"bg-text-tertiary"}`},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/SwimlaneTimeline.tsx",lineNumber:184,columnNumber:17},this),e.jsxDEV("p",{className:"text-xs font-mono text-text-secondary whitespace-nowrap overflow-hidden",title:t.name,children:G(t.name,28)},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/SwimlaneTimeline.tsx",lineNumber:185,columnNumber:17},this),Y.has(t.name)&&e.jsxDEV("span",{className:"shrink-0 text-accent/60",title:"MCP tool interaction",children:e.jsxDEV("svg",{className:"w-3 h-3",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:2,children:e.jsxDEV("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M9.663 17h4.674M12 3v1m6.364 1.636l-.707.707M21 12h-1M4 12H3m3.343-5.657l-.707-.707m2.828 9.9a5 5 0 117.072 0l-.548.547A3.374 3.374 0 0014 18.469V19a2 2 0 11-4 0v-.531c0-.895-.356-1.754-.988-2.386l-.548-.547z"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/SwimlaneTimeline.tsx",lineNumber:194,columnNumber:23},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/SwimlaneTimeline.tsx",lineNumber:193,columnNumber:21},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/SwimlaneTimeline.tsx",lineNumber:192,columnNumber:19},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/SwimlaneTimeline.tsx",lineNumber:183,columnNumber:15},this),e.jsxDEV("div",{className:"flex-1 relative h-10",children:[N.map(s=>e.jsxDEV("div",{className:"absolute top-0 bottom-0 w-px bg-surface-border opacity-30",style:{left:`${s.pct}%`}},s.pct,!1,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/SwimlaneTimeline.tsx",lineNumber:202,columnNumber:19},this)),t.segments.map(s=>e.jsxDEV("div",{className:`absolute top-2 h-6 rounded-sm cursor-pointer transition-all duration-200 ${m?"border-2":""} ${w.has(s.eventId)?`${M(t.category,s.pending)} ring-2 ring-accent ring-offset-1`:`${M(t.category,s.pending)} hover:opacity-80`}`,style:{left:`${s.startPct}%`,width:`${s.widthPct}%`,minWidth:"4px"},title:s.label,onClick:()=>_(s.eventId),children:s.widthPct>8&&e.jsxDEV("span",{className:`absolute inset-0 flex items-center px-1.5 text-[9px] font-mono ${O(t.category)} truncate`,children:s.duration!==null?S(s.duration):"pending"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/SwimlaneTimeline.tsx",lineNumber:226,columnNumber:23},this)},s.eventId,!1,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/SwimlaneTimeline.tsx",lineNumber:210,columnNumber:19},this))]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/SwimlaneTimeline.tsx",lineNumber:200,columnNumber:15},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/SwimlaneTimeline.tsx",lineNumber:182,columnNumber:13},this),t.segments.map(s=>{const h=w.has(s.eventId),D=l.find(P=>P.event_id===s.eventId);return e.jsxDEV(R,{open:h,children:D&&e.jsxDEV("div",{className:"py-3",children:e.jsxDEV(J,{event:D,childTask:T(D),pending:s.pending,onClose:()=>_(D.event_id)},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/SwimlaneTimeline.tsx",lineNumber:243,columnNumber:23},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/SwimlaneTimeline.tsx",lineNumber:242,columnNumber:21},this)},s.eventId,!1,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/SwimlaneTimeline.tsx",lineNumber:240,columnNumber:17},this)})]},`${t.category}:${t.name}`,!0,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/SwimlaneTimeline.tsx",lineNumber:180,columnNumber:11},this)})]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/SwimlaneTimeline.tsx",lineNumber:131,columnNumber:5},this)}export{J as E,U as S};
|
|
2
|
-
//# sourceMappingURL=SwimlaneTimeline-
|
|
1
|
+
import{j as e,D as L,c as C,J as v,f as S,C as R}from"./index-BwN3KP_L.js";import{a as W}from"./vendor-query-DLp59M9_.js";import{S as K}from"./StatusBadge-Wi2FJZsn.js";import{L as $}from"./vendor-react-Co3Y8ikm.js";function I(a){if(!a)return null;try{return JSON.parse(a)}catch{return a}}function J({event:a,childTask:o,pending:m=!1,onClose:w}){const d=o?I(o.envelope):null,c=o?I(o.data):null;return e.jsxDEV("div",{className:"p-4 bg-surface-sunken rounded-md space-y-4",children:[e.jsxDEV("div",{className:"flex items-center justify-between gap-2",children:[e.jsxDEV("div",{className:"flex items-center gap-2",children:[e.jsxDEV("p",{className:"font-mono font-medium text-sm text-text-primary",children:a.attributes.activity_type??a.attributes.signal_name??a.attributes.child_workflow_id??a.event_type},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/EventDetailPanel.tsx",lineNumber:45,columnNumber:11},this),m&&e.jsxDEV("span",{className:"inline-flex items-center gap-1 px-1.5 py-0.5 rounded text-[10px] font-medium bg-status-warning/15 text-status-warning",children:[e.jsxDEV("span",{className:"w-1.5 h-1.5 rounded-full bg-status-warning animate-pulse"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/EventDetailPanel.tsx",lineNumber:53,columnNumber:15},this),"Pending"]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/EventDetailPanel.tsx",lineNumber:52,columnNumber:13},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/EventDetailPanel.tsx",lineNumber:44,columnNumber:9},this),w&&e.jsxDEV("button",{onClick:w,className:"text-text-tertiary hover:text-text-primary text-xs",children:"Close"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/EventDetailPanel.tsx",lineNumber:59,columnNumber:11},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/EventDetailPanel.tsx",lineNumber:43,columnNumber:7},this),e.jsxDEV("div",{className:"grid grid-cols-2 sm:grid-cols-4 gap-3",children:[a.attributes.activity_type&&e.jsxDEV("div",{children:[e.jsxDEV("p",{className:"text-[10px] font-semibold uppercase tracking-widest text-text-tertiary",children:"Activity"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/EventDetailPanel.tsx",lineNumber:72,columnNumber:13},this),e.jsxDEV("p",{className:"text-xs font-mono text-text-primary",children:a.attributes.activity_type},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/EventDetailPanel.tsx",lineNumber:75,columnNumber:13},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/EventDetailPanel.tsx",lineNumber:71,columnNumber:11},this),e.jsxDEV("div",{children:[e.jsxDEV("p",{className:"text-[10px] font-semibold uppercase tracking-widest text-text-tertiary",children:"Kind"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/EventDetailPanel.tsx",lineNumber:81,columnNumber:11},this),e.jsxDEV("p",{className:"text-xs font-mono text-text-primary",children:a.attributes.kind},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/EventDetailPanel.tsx",lineNumber:84,columnNumber:11},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/EventDetailPanel.tsx",lineNumber:80,columnNumber:9},this),a.duration_ms!==null&&e.jsxDEV("div",{children:[e.jsxDEV("p",{className:"text-[10px] font-semibold uppercase tracking-widest text-text-tertiary",children:"Duration"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/EventDetailPanel.tsx",lineNumber:90,columnNumber:13},this),e.jsxDEV(L,{ms:a.duration_ms,className:"font-mono text-text-primary"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/EventDetailPanel.tsx",lineNumber:93,columnNumber:13},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/EventDetailPanel.tsx",lineNumber:89,columnNumber:11},this),e.jsxDEV("div",{children:[e.jsxDEV("p",{className:"text-[10px] font-semibold uppercase tracking-widest text-text-tertiary",children:"Time"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/EventDetailPanel.tsx",lineNumber:97,columnNumber:11},this),e.jsxDEV(C,{date:a.event_time,format:"datetime",className:"font-mono text-text-primary"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/EventDetailPanel.tsx",lineNumber:100,columnNumber:11},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/EventDetailPanel.tsx",lineNumber:96,columnNumber:9},this),a.attributes.signal_name&&e.jsxDEV("div",{children:[e.jsxDEV("p",{className:"text-[10px] font-semibold uppercase tracking-widest text-text-tertiary",children:"Signal"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/EventDetailPanel.tsx",lineNumber:106,columnNumber:13},this),e.jsxDEV("p",{className:"text-xs font-mono text-text-primary",children:a.attributes.signal_name},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/EventDetailPanel.tsx",lineNumber:109,columnNumber:13},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/EventDetailPanel.tsx",lineNumber:105,columnNumber:11},this),a.attributes.awaited!==void 0&&e.jsxDEV("div",{children:[e.jsxDEV("p",{className:"text-[10px] font-semibold uppercase tracking-widest text-text-tertiary",children:"Awaited"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/EventDetailPanel.tsx",lineNumber:118,columnNumber:13},this),e.jsxDEV("p",{className:"text-xs font-mono text-text-primary",children:a.attributes.awaited?"Yes":"No (fire-and-forget)"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/EventDetailPanel.tsx",lineNumber:121,columnNumber:13},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/EventDetailPanel.tsx",lineNumber:117,columnNumber:11},this),a.attributes.timeline_key&&e.jsxDEV("div",{className:"col-span-2",children:[e.jsxDEV("p",{className:"text-[10px] font-semibold uppercase tracking-widest text-text-tertiary",children:"Timeline Key"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/EventDetailPanel.tsx",lineNumber:130,columnNumber:13},this),e.jsxDEV("p",{className:"text-xs font-mono text-text-primary truncate",title:a.attributes.timeline_key,children:a.attributes.timeline_key},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/EventDetailPanel.tsx",lineNumber:133,columnNumber:13},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/EventDetailPanel.tsx",lineNumber:129,columnNumber:11},this),a.attributes.execution_index!==void 0&&e.jsxDEV("div",{children:[e.jsxDEV("p",{className:"text-[10px] font-semibold uppercase tracking-widest text-text-tertiary",children:"Exec Index"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/EventDetailPanel.tsx",lineNumber:142,columnNumber:13},this),e.jsxDEV("p",{className:"text-xs font-mono text-text-primary",children:a.attributes.execution_index},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/EventDetailPanel.tsx",lineNumber:145,columnNumber:13},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/EventDetailPanel.tsx",lineNumber:141,columnNumber:11},this),a.attributes.scheduled_event_id!=null&&e.jsxDEV("div",{children:[e.jsxDEV("p",{className:"text-[10px] font-semibold uppercase tracking-widest text-text-tertiary",children:"Scheduled Event"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/EventDetailPanel.tsx",lineNumber:154,columnNumber:13},this),e.jsxDEV("p",{className:"text-xs font-mono text-text-primary",children:["#",a.attributes.scheduled_event_id]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/EventDetailPanel.tsx",lineNumber:157,columnNumber:13},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/EventDetailPanel.tsx",lineNumber:153,columnNumber:11},this),a.attributes.wait_event_id!=null&&e.jsxDEV("div",{children:[e.jsxDEV("p",{className:"text-[10px] font-semibold uppercase tracking-widest text-text-tertiary",children:"Wait Started"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/EventDetailPanel.tsx",lineNumber:164,columnNumber:13},this),e.jsxDEV("p",{className:"text-xs font-mono text-text-primary",children:["Event #",a.attributes.wait_event_id]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/EventDetailPanel.tsx",lineNumber:167,columnNumber:13},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/EventDetailPanel.tsx",lineNumber:163,columnNumber:11},this),a.attributes.initiated_event_id!=null&&e.jsxDEV("div",{children:[e.jsxDEV("p",{className:"text-[10px] font-semibold uppercase tracking-widest text-text-tertiary",children:"Initiated Event"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/EventDetailPanel.tsx",lineNumber:174,columnNumber:13},this),e.jsxDEV("p",{className:"text-xs font-mono text-text-primary",children:["#",a.attributes.initiated_event_id]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/EventDetailPanel.tsx",lineNumber:177,columnNumber:13},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/EventDetailPanel.tsx",lineNumber:173,columnNumber:11},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/EventDetailPanel.tsx",lineNumber:69,columnNumber:7},this),!o&&a.attributes.child_workflow_id&&e.jsxDEV("div",{className:"border-t border-surface-border pt-3",children:e.jsxDEV("div",{className:"flex items-center gap-3 flex-wrap",children:[e.jsxDEV("span",{className:"text-[10px] font-semibold uppercase tracking-widest text-text-tertiary",children:"Child Workflow"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/EventDetailPanel.tsx",lineNumber:188,columnNumber:13},this),e.jsxDEV($,{to:`/workflows/executions/${a.attributes.child_workflow_id}`,className:"text-xs font-mono text-accent hover:underline",onClick:l=>l.stopPropagation(),children:a.attributes.child_workflow_id},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/EventDetailPanel.tsx",lineNumber:191,columnNumber:13},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/EventDetailPanel.tsx",lineNumber:187,columnNumber:11},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/EventDetailPanel.tsx",lineNumber:186,columnNumber:9},this),o&&e.jsxDEV("div",{className:"space-y-3 border-t border-surface-border pt-3",children:[e.jsxDEV("div",{className:"flex items-center gap-3 flex-wrap",children:[e.jsxDEV("span",{className:"text-[10px] font-semibold uppercase tracking-widest text-text-tertiary",children:"Child Workflow"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/EventDetailPanel.tsx",lineNumber:207,columnNumber:13},this),e.jsxDEV($,{to:`/workflows/executions/${o.workflow_id}`,className:"text-xs font-mono text-accent hover:underline",onClick:l=>l.stopPropagation(),children:o.workflow_id},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/EventDetailPanel.tsx",lineNumber:210,columnNumber:13},this),e.jsxDEV(K,{status:o.status},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/EventDetailPanel.tsx",lineNumber:217,columnNumber:13},this),o.completed_at&&e.jsxDEV("span",{className:"text-[10px] text-text-tertiary",children:["Completed ",e.jsxDEV(C,{date:o.completed_at,format:"relative"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/EventDetailPanel.tsx",lineNumber:220,columnNumber:27},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/EventDetailPanel.tsx",lineNumber:219,columnNumber:15},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/EventDetailPanel.tsx",lineNumber:206,columnNumber:11},this),(d!=null||c!=null)&&e.jsxDEV("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-4",children:[d!=null?e.jsxDEV(v,{data:d,label:"Input (Envelope)",variant:"panel"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/EventDetailPanel.tsx",lineNumber:229,columnNumber:17},this):e.jsxDEV("div",{},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/EventDetailPanel.tsx",lineNumber:230,columnNumber:19},this),c!=null?e.jsxDEV(v,{data:c,label:"Output (Result)",variant:"panel"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/EventDetailPanel.tsx",lineNumber:232,columnNumber:17},this):e.jsxDEV("div",{},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/EventDetailPanel.tsx",lineNumber:233,columnNumber:19},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/EventDetailPanel.tsx",lineNumber:227,columnNumber:13},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/EventDetailPanel.tsx",lineNumber:204,columnNumber:9},this),(()=>{const l=a.attributes.input,r=a.attributes.result,b=a.category==="signal",n=a.category==="activity",p=a.category==="child_workflow",g=l!==void 0&&(n||p),f=!o&&r!==void 0&&(n||p),u=a.attributes.activity_type==="ltSignalParent"?"Signal Payload":"Result";return g||f?e.jsxDEV("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-4",children:[g?e.jsxDEV(v,{data:l,label:"Input",variant:"panel"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/EventDetailPanel.tsx",lineNumber:254,columnNumber:17},this):e.jsxDEV("div",{},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/EventDetailPanel.tsx",lineNumber:255,columnNumber:19},this),f?e.jsxDEV(v,{data:r,label:u,variant:"panel"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/EventDetailPanel.tsx",lineNumber:257,columnNumber:17},this):e.jsxDEV("div",{},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/EventDetailPanel.tsx",lineNumber:258,columnNumber:19},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/EventDetailPanel.tsx",lineNumber:252,columnNumber:13},this):b&&l!==void 0?e.jsxDEV(v,{data:l,label:"Signal Payload",variant:"panel"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/EventDetailPanel.tsx",lineNumber:265,columnNumber:18},this):null})(),a.attributes.failure!==void 0&&e.jsxDEV(v,{data:a.attributes.failure,label:"Failure"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/EventDetailPanel.tsx",lineNumber:273,columnNumber:9},this),(()=>{const{kind:l,activity_type:r,result:b,timeline_key:n,execution_index:p,signal_name:g,input:f,child_workflow_id:u,awaited:E,wait_event_id:x,scheduled_event_id:N,initiated_event_id:y,failure:T,trace_id:_,span_id:j,...V}=a.attributes;return Object.keys(V).length>0?e.jsxDEV(v,{data:V,label:"Attributes"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/EventDetailPanel.tsx",lineNumber:297,columnNumber:11},this):null})()]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/EventDetailPanel.tsx",lineNumber:41,columnNumber:5},this)}const k={activity:{bar:"bg-blue-500",outline:"border-blue-500 bg-transparent",text:"text-blue-500",label:"Activities"},signal:{bar:"bg-emerald-500",outline:"border-emerald-500 bg-transparent",text:"text-emerald-500",label:"Signals"},timer:{bar:"bg-status-warning",outline:"border-status-warning bg-transparent",text:"text-status-warning",label:"Timers"},child_workflow:{bar:"bg-violet-500",outline:"border-violet-500 bg-transparent",text:"text-violet-500",label:"Child Workflows"}},B="bg-stripes animate-pulse opacity-70",Y=new Set(["callLLM","callDbTool","callVisionTool","callMcpTool","getDBTools","getVisionTools"]);function G(a,o){if(a.length<=o)return a;const m=Math.floor((o-1)/2);return`${a.slice(0,m)}…${a.slice(a.length-m)}`}function z(a){const o=[],m=new Map,w=new Map;for(const c of a){const l=c.attributes.timeline_key;if(!l)continue;const r=c.event_type;r==="activity_task_scheduled"||r==="timer_started"||r==="child_workflow_execution_started"||r==="signal_wait_started"?m.set(l,c):w.set(l,c)}const d=new Set;for(const c of a){const l=c.attributes.timeline_key;if(l&&d.has(l))continue;l&&d.add(l);const r=l?m.get(l):void 0,b=l?w.get(l):void 0,n=b||r||c,p=n.category,g=n.attributes.activity_type||n.attributes.signal_name||n.attributes.child_workflow_id||n.event_type,f=r||n,u=b,E=new Date(f.event_time).getTime();let x=null,N=null,y=!1;u?(x=new Date(u.event_time).getTime(),N=u.duration_ms??x-E):n.duration_ms!==null?(N=n.duration_ms,x=E+N):y=!0,o.push({category:p,name:g||n.event_type,startTime:E,endTime:x,duration:N,eventId:n.event_id,pending:y})}return o}function U({events:a,childTasks:o,outline:m}){const[w,d]=W.useState(new Set),l=a.filter(t=>t.category!=="workflow");if(l.length===0)return null;const r=z(l);if(r.length===0)return null;const b=Date.now(),n=r.flatMap(t=>{const i=[t.startTime];return t.endTime?i.push(t.endTime):i.push(b),i}),p=Math.min(...n),f=Math.max(...n)-p||1,u=new Map;for(const t of r){const i=`${t.category}:${t.name}`,s=t.startTime-p,D=(t.endTime?t.endTime-p:b-p)-s,P={eventId:t.eventId,startPct:s/f*100,widthPct:Math.max(D/f*100,.5),duration:t.duration,label:`${t.name} — ${t.duration!==null?S(t.duration):"pending"} — ${new Date(t.startTime).toLocaleTimeString()}`,eventTime:new Date(t.startTime).toISOString(),pending:t.pending};u.has(i)||u.set(i,{name:t.name,category:t.category,segments:[]}),u.get(i).segments.push(P)}const E=Array.from(u.values()),x=5,N=Array.from({length:x+1},(t,i)=>({pct:i/x*100,label:S(Math.round(i/x*f))})),y=[...new Set(r.map(t=>t.category))],T=t=>{if(!(o!=null&&o.length))return;const i=t.attributes.activity_type;if(i)return o.find(s=>s.workflow_type===i)},_=t=>{d(i=>{const s=new Set(i);return s.has(t)?s.delete(t):s.add(t),s})},j=r.map(t=>t.eventId),V=j.length>0&&j.every(t=>w.has(t)),A=()=>{d(V?new Set:new Set(j))},M=(t,i)=>{var s,h;return i?B:m?((s=k[t])==null?void 0:s.outline)??"border-text-tertiary bg-transparent":((h=k[t])==null?void 0:h.bar)??"bg-text-tertiary"},O=t=>{var i;return m?((i=k[t])==null?void 0:i.text)??"text-text-tertiary":"text-white"};return e.jsxDEV("div",{className:"px-6 py-6 mb-6",children:[e.jsxDEV("div",{className:"flex items-center gap-4 mb-4 flex-wrap",children:[e.jsxDEV("p",{className:"text-[10px] font-semibold uppercase tracking-widest text-text-tertiary",children:"Execution Timeline"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/SwimlaneTimeline.tsx",lineNumber:133,columnNumber:9},this),e.jsxDEV("button",{onClick:A,className:"text-[10px] text-accent hover:underline",children:V?"Collapse all":"Expand all"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/SwimlaneTimeline.tsx",lineNumber:136,columnNumber:9},this),e.jsxDEV("div",{className:"flex items-center gap-3 ml-auto",children:[y.map(t=>{var i,s,h;return e.jsxDEV("div",{className:"flex items-center gap-1",children:[e.jsxDEV("span",{className:`w-2 h-2 rounded-full ${m?`border ${((i=k[t])==null?void 0:i.outline)??"border-text-tertiary"}`:((s=k[t])==null?void 0:s.bar)??"bg-text-tertiary"}`},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/SwimlaneTimeline.tsx",lineNumber:144,columnNumber:15},this),e.jsxDEV("span",{className:"text-[9px] text-text-tertiary",children:((h=k[t])==null?void 0:h.label)??t},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/SwimlaneTimeline.tsx",lineNumber:145,columnNumber:15},this)]},t,!0,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/SwimlaneTimeline.tsx",lineNumber:143,columnNumber:13},this)}),r.some(t=>t.pending)&&e.jsxDEV("div",{className:"flex items-center gap-1",children:[e.jsxDEV("span",{className:"w-2 h-2 rounded-full bg-status-warning animate-pulse"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/SwimlaneTimeline.tsx",lineNumber:152,columnNumber:15},this),e.jsxDEV("span",{className:"text-[9px] text-text-tertiary",children:"Pending"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/SwimlaneTimeline.tsx",lineNumber:153,columnNumber:15},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/SwimlaneTimeline.tsx",lineNumber:151,columnNumber:13},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/SwimlaneTimeline.tsx",lineNumber:141,columnNumber:9},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/SwimlaneTimeline.tsx",lineNumber:132,columnNumber:7},this),e.jsxDEV("div",{className:"flex",children:[e.jsxDEV("div",{className:"w-56 shrink-0"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/SwimlaneTimeline.tsx",lineNumber:161,columnNumber:9},this),e.jsxDEV("div",{className:"flex-1 relative h-6 border-b border-surface-border",children:N.map(t=>e.jsxDEV("span",{className:"absolute text-[9px] font-mono text-text-tertiary -translate-x-1/2 bottom-1",style:{left:`${t.pct}%`},children:t.label},t.pct,!1,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/SwimlaneTimeline.tsx",lineNumber:164,columnNumber:13},this))},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/SwimlaneTimeline.tsx",lineNumber:162,columnNumber:9},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/SwimlaneTimeline.tsx",lineNumber:160,columnNumber:7},this),E.map(t=>{const i=k[t.category];return e.jsxDEV("div",{children:[e.jsxDEV("div",{className:"flex items-center border-b border-surface-border",children:[e.jsxDEV("div",{className:"w-56 shrink-0 py-3 pr-4 flex items-center gap-2",children:[e.jsxDEV("span",{className:`w-1.5 h-1.5 rounded-full shrink-0 ${(i==null?void 0:i.bar)??"bg-text-tertiary"}`},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/SwimlaneTimeline.tsx",lineNumber:184,columnNumber:17},this),e.jsxDEV("p",{className:"text-xs font-mono text-text-secondary whitespace-nowrap overflow-hidden",title:t.name,children:G(t.name,28)},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/SwimlaneTimeline.tsx",lineNumber:185,columnNumber:17},this),Y.has(t.name)&&e.jsxDEV("span",{className:"shrink-0 text-accent/60",title:"MCP tool interaction",children:e.jsxDEV("svg",{className:"w-3 h-3",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:2,children:e.jsxDEV("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M9.663 17h4.674M12 3v1m6.364 1.636l-.707.707M21 12h-1M4 12H3m3.343-5.657l-.707-.707m2.828 9.9a5 5 0 117.072 0l-.548.547A3.374 3.374 0 0014 18.469V19a2 2 0 11-4 0v-.531c0-.895-.356-1.754-.988-2.386l-.548-.547z"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/SwimlaneTimeline.tsx",lineNumber:194,columnNumber:23},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/SwimlaneTimeline.tsx",lineNumber:193,columnNumber:21},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/SwimlaneTimeline.tsx",lineNumber:192,columnNumber:19},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/SwimlaneTimeline.tsx",lineNumber:183,columnNumber:15},this),e.jsxDEV("div",{className:"flex-1 relative h-10",children:[N.map(s=>e.jsxDEV("div",{className:"absolute top-0 bottom-0 w-px bg-surface-border opacity-30",style:{left:`${s.pct}%`}},s.pct,!1,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/SwimlaneTimeline.tsx",lineNumber:202,columnNumber:19},this)),t.segments.map(s=>e.jsxDEV("div",{className:`absolute top-2 h-6 rounded-sm cursor-pointer transition-all duration-200 ${m?"border-2":""} ${w.has(s.eventId)?`${M(t.category,s.pending)} ring-2 ring-accent ring-offset-1`:`${M(t.category,s.pending)} hover:opacity-80`}`,style:{left:`${s.startPct}%`,width:`${s.widthPct}%`,minWidth:"4px"},title:s.label,onClick:()=>_(s.eventId),children:s.widthPct>8&&e.jsxDEV("span",{className:`absolute inset-0 flex items-center px-1.5 text-[9px] font-mono ${O(t.category)} truncate`,children:s.duration!==null?S(s.duration):"pending"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/SwimlaneTimeline.tsx",lineNumber:226,columnNumber:23},this)},s.eventId,!1,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/SwimlaneTimeline.tsx",lineNumber:210,columnNumber:19},this))]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/SwimlaneTimeline.tsx",lineNumber:200,columnNumber:15},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/SwimlaneTimeline.tsx",lineNumber:182,columnNumber:13},this),t.segments.map(s=>{const h=w.has(s.eventId),D=l.find(P=>P.event_id===s.eventId);return e.jsxDEV(R,{open:h,children:D&&e.jsxDEV("div",{className:"py-3",children:e.jsxDEV(J,{event:D,childTask:T(D),pending:s.pending,onClose:()=>_(D.event_id)},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/SwimlaneTimeline.tsx",lineNumber:243,columnNumber:23},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/SwimlaneTimeline.tsx",lineNumber:242,columnNumber:21},this)},s.eventId,!1,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/SwimlaneTimeline.tsx",lineNumber:240,columnNumber:17},this)})]},`${t.category}:${t.name}`,!0,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/SwimlaneTimeline.tsx",lineNumber:180,columnNumber:11},this)})]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/SwimlaneTimeline.tsx",lineNumber:131,columnNumber:5},this)}export{J as E,U as S};
|
|
2
|
+
//# sourceMappingURL=SwimlaneTimeline-CUPqMd0z.js.map
|
package/dashboard/dist/assets/{SwimlaneTimeline-ylG5Ps1s.js.map → SwimlaneTimeline-CUPqMd0z.js.map}
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SwimlaneTimeline-ylG5Ps1s.js","sources":["../../src/pages/workflows/workflow-execution/EventDetailPanel.tsx","../../src/pages/workflows/workflow-execution/utils.ts","../../src/pages/workflows/workflow-execution/SwimlaneTimeline.tsx"],"sourcesContent":["import { Link } from 'react-router-dom';\nimport { JsonViewer } from '../../../components/common/data/JsonViewer';\nimport { StatusBadge } from '../../../components/common/display/StatusBadge';\nimport type { WorkflowExecutionEvent, LTTaskRecord } from '../../../api/types';\nimport { DateValue } from '../../../components/common/display/DateValue';\nimport { DurationValue } from '../../../components/common/display/DurationValue';\n\ninterface EventDetailPanelProps {\n event: WorkflowExecutionEvent;\n childTask?: LTTaskRecord;\n /** When true, show a \"Pending\" badge. Caller determines this from the full event list. */\n pending?: boolean;\n onClose?: () => void;\n}\n\nfunction safeParseJson(raw: string | null | undefined): unknown {\n if (!raw) return null;\n try {\n return JSON.parse(raw);\n } catch {\n return raw;\n }\n}\n\n/**\n * Reusable detail panel for a workflow execution event.\n * Renders inline wherever placed — used by both SwimlaneTimeline\n * (below the lane row) and EventTable (below the event row).\n *\n * Shows rich detail for all event categories:\n * - Activities: activity_type, result, scheduled_event_id\n * - Signals: signal_name, payload, wait_event_id\n * - Timers: duration\n * - Child workflows: child_workflow_id link, awaited badge, result\n */\nexport function EventDetailPanel({ event, childTask, pending = false, onClose }: EventDetailPanelProps) {\n const childInput = childTask ? safeParseJson(childTask.envelope) : null;\n const childOutput = childTask ? safeParseJson(childTask.data) : null;\n\n return (\n <div className=\"p-4 bg-surface-sunken rounded-md space-y-4\">\n {/* Header */}\n <div className=\"flex items-center justify-between gap-2\">\n <div className=\"flex items-center gap-2\">\n <p className=\"font-mono font-medium text-sm text-text-primary\">\n {event.attributes.activity_type\n ?? event.attributes.signal_name\n ?? event.attributes.child_workflow_id\n ?? event.event_type}\n </p>\n {pending && (\n <span className=\"inline-flex items-center gap-1 px-1.5 py-0.5 rounded text-[10px] font-medium bg-status-warning/15 text-status-warning\">\n <span className=\"w-1.5 h-1.5 rounded-full bg-status-warning animate-pulse\" />\n Pending\n </span>\n )}\n </div>\n {onClose && (\n <button\n onClick={onClose}\n className=\"text-text-tertiary hover:text-text-primary text-xs\"\n >\n Close\n </button>\n )}\n </div>\n\n {/* Metadata grid */}\n <div className=\"grid grid-cols-2 sm:grid-cols-4 gap-3\">\n {event.attributes.activity_type && (\n <div>\n <p className=\"text-[10px] font-semibold uppercase tracking-widest text-text-tertiary\">\n Activity\n </p>\n <p className=\"text-xs font-mono text-text-primary\">\n {event.attributes.activity_type}\n </p>\n </div>\n )}\n <div>\n <p className=\"text-[10px] font-semibold uppercase tracking-widest text-text-tertiary\">\n Kind\n </p>\n <p className=\"text-xs font-mono text-text-primary\">\n {event.attributes.kind}\n </p>\n </div>\n {event.duration_ms !== null && (\n <div>\n <p className=\"text-[10px] font-semibold uppercase tracking-widest text-text-tertiary\">\n Duration\n </p>\n <DurationValue ms={event.duration_ms} className=\"font-mono text-text-primary\" />\n </div>\n )}\n <div>\n <p className=\"text-[10px] font-semibold uppercase tracking-widest text-text-tertiary\">\n Time\n </p>\n <DateValue date={event.event_time} format=\"datetime\" className=\"font-mono text-text-primary\" />\n </div>\n\n {/* Signal-specific: signal name */}\n {event.attributes.signal_name && (\n <div>\n <p className=\"text-[10px] font-semibold uppercase tracking-widest text-text-tertiary\">\n Signal\n </p>\n <p className=\"text-xs font-mono text-text-primary\">\n {event.attributes.signal_name}\n </p>\n </div>\n )}\n\n {/* Child workflow: awaited badge */}\n {event.attributes.awaited !== undefined && (\n <div>\n <p className=\"text-[10px] font-semibold uppercase tracking-widest text-text-tertiary\">\n Awaited\n </p>\n <p className=\"text-xs font-mono text-text-primary\">\n {event.attributes.awaited ? 'Yes' : 'No (fire-and-forget)'}\n </p>\n </div>\n )}\n\n {/* Timeline key */}\n {event.attributes.timeline_key && (\n <div className=\"col-span-2\">\n <p className=\"text-[10px] font-semibold uppercase tracking-widest text-text-tertiary\">\n Timeline Key\n </p>\n <p className=\"text-xs font-mono text-text-primary truncate\" title={event.attributes.timeline_key}>\n {event.attributes.timeline_key}\n </p>\n </div>\n )}\n\n {/* Execution index */}\n {event.attributes.execution_index !== undefined && (\n <div>\n <p className=\"text-[10px] font-semibold uppercase tracking-widest text-text-tertiary\">\n Exec Index\n </p>\n <p className=\"text-xs font-mono text-text-primary\">\n {event.attributes.execution_index}\n </p>\n </div>\n )}\n\n {/* Back-references */}\n {event.attributes.scheduled_event_id != null && (\n <div>\n <p className=\"text-[10px] font-semibold uppercase tracking-widest text-text-tertiary\">\n Scheduled Event\n </p>\n <p className=\"text-xs font-mono text-text-primary\">\n #{event.attributes.scheduled_event_id}\n </p>\n </div>\n )}\n {event.attributes.wait_event_id != null && (\n <div>\n <p className=\"text-[10px] font-semibold uppercase tracking-widest text-text-tertiary\">\n Wait Started\n </p>\n <p className=\"text-xs font-mono text-text-primary\">\n Event #{event.attributes.wait_event_id}\n </p>\n </div>\n )}\n {event.attributes.initiated_event_id != null && (\n <div>\n <p className=\"text-[10px] font-semibold uppercase tracking-widest text-text-tertiary\">\n Initiated Event\n </p>\n <p className=\"text-xs font-mono text-text-primary\">\n #{event.attributes.initiated_event_id}\n </p>\n </div>\n )}\n </div>\n\n {/* Child workflow link — from event attributes (no matching task record) */}\n {!childTask && event.attributes.child_workflow_id && (\n <div className=\"border-t border-surface-border pt-3\">\n <div className=\"flex items-center gap-3 flex-wrap\">\n <span className=\"text-[10px] font-semibold uppercase tracking-widest text-text-tertiary\">\n Child Workflow\n </span>\n <Link\n to={`/workflows/executions/${event.attributes.child_workflow_id}`}\n className=\"text-xs font-mono text-accent hover:underline\"\n onClick={(e) => e.stopPropagation()}\n >\n {event.attributes.child_workflow_id}\n </Link>\n </div>\n </div>\n )}\n\n {/* Child workflow section — from matched task record */}\n {childTask && (\n <div className=\"space-y-3 border-t border-surface-border pt-3\">\n {/* Child link + status */}\n <div className=\"flex items-center gap-3 flex-wrap\">\n <span className=\"text-[10px] font-semibold uppercase tracking-widest text-text-tertiary\">\n Child Workflow\n </span>\n <Link\n to={`/workflows/executions/${childTask.workflow_id}`}\n className=\"text-xs font-mono text-accent hover:underline\"\n onClick={(e) => e.stopPropagation()}\n >\n {childTask.workflow_id}\n </Link>\n <StatusBadge status={childTask.status} />\n {childTask.completed_at && (\n <span className=\"text-[10px] text-text-tertiary\">\n Completed <DateValue date={childTask.completed_at} format=\"relative\" />\n </span>\n )}\n </div>\n\n {/* Input / Output side-by-side */}\n {(childInput != null || childOutput != null) && (\n <div className=\"grid grid-cols-1 md:grid-cols-2 gap-4\">\n {childInput != null ? (\n <JsonViewer data={childInput} label=\"Input (Envelope)\" variant=\"panel\" />\n ) : <div />}\n {childOutput != null ? (\n <JsonViewer data={childOutput} label=\"Output (Result)\" variant=\"panel\" />\n ) : <div />}\n </div>\n )}\n </div>\n )}\n\n {/* Input / Result side-by-side for activities and child workflows */}\n {(() => {\n const input = event.attributes.input;\n const result = event.attributes.result;\n const isSignal = event.category === 'signal';\n const isActivity = event.category === 'activity';\n const isChild = event.category === 'child_workflow';\n const hasInput = input !== undefined && (isActivity || isChild);\n const hasResult = !childTask && result !== undefined && (isActivity || isChild);\n const resultLabel = event.attributes.activity_type === 'ltSignalParent' ? 'Signal Payload' : 'Result';\n\n if (hasInput || hasResult) {\n return (\n <div className=\"grid grid-cols-1 md:grid-cols-2 gap-4\">\n {hasInput ? (\n <JsonViewer data={input} label=\"Input\" variant=\"panel\" />\n ) : <div />}\n {hasResult ? (\n <JsonViewer data={result} label={resultLabel} variant=\"panel\" />\n ) : <div />}\n </div>\n );\n }\n\n // Signal payload — standalone (no result pairing)\n if (isSignal && input !== undefined) {\n return <JsonViewer data={input} label=\"Signal Payload\" variant=\"panel\" />;\n }\n\n return null;\n })()}\n\n {/* Failure detail */}\n {event.attributes.failure !== undefined && (\n <JsonViewer data={event.attributes.failure} label=\"Failure\" />\n )}\n\n {/* Remaining attributes (exclude the fields shown above) */}\n {(() => {\n const {\n kind,\n activity_type,\n result,\n timeline_key,\n execution_index,\n signal_name,\n input,\n child_workflow_id,\n awaited,\n wait_event_id,\n scheduled_event_id,\n initiated_event_id,\n failure,\n trace_id,\n span_id,\n ...rest\n } = event.attributes;\n return Object.keys(rest).length > 0 ? (\n <JsonViewer data={rest} label=\"Attributes\" />\n ) : null;\n })()}\n </div>\n );\n}\n","export { formatDuration, formatDateTime } from '../../../lib/format';\n\nimport type { WorkflowExecutionEvent } from '../../../api/types';\n\n// ── Types ────────────────────────────────────────────────────────────────────\n\nexport interface Segment {\n eventId: number;\n startPct: number;\n widthPct: number;\n duration: number | null;\n label: string;\n eventTime: string;\n pending: boolean;\n}\n\nexport interface Lane {\n name: string;\n category: string;\n segments: Segment[];\n}\n\n// ── Constants ────────────────────────────────────────────────────────────────\n\nexport const CATEGORY_COLORS: Record<string, { bar: string; outline: string; text: string; label: string }> = {\n activity: { bar: 'bg-blue-500', outline: 'border-blue-500 bg-transparent', text: 'text-blue-500', label: 'Activities' },\n signal: { bar: 'bg-emerald-500', outline: 'border-emerald-500 bg-transparent', text: 'text-emerald-500', label: 'Signals' },\n timer: { bar: 'bg-status-warning', outline: 'border-status-warning bg-transparent', text: 'text-status-warning', label: 'Timers' },\n child_workflow: { bar: 'bg-violet-500', outline: 'border-violet-500 bg-transparent', text: 'text-violet-500', label: 'Child Workflows' },\n};\n\nexport const PENDING_CLASS = 'bg-stripes animate-pulse opacity-70';\n\n/** Activity names that indicate LLM/MCP tool interaction */\nexport const MCP_ACTIVITY_NAMES = new Set([\n 'callLLM', 'callDbTool', 'callVisionTool', 'callMcpTool', 'getDBTools', 'getVisionTools',\n]);\n\n// ── Helpers ──────────────────────────────────────────────────────────────────\n\n/** Truncate a string in the middle, keeping the start and end visible. */\nexport function middleTruncate(str: string, maxLen: number): string {\n if (str.length <= maxLen) return str;\n const keep = Math.floor((maxLen - 1) / 2);\n return `${str.slice(0, keep)}…${str.slice(str.length - keep)}`;\n}\n\nexport interface TimelineSpan {\n category: string;\n name: string;\n startTime: number;\n endTime: number | null;\n duration: number | null;\n eventId: number;\n pending: boolean;\n}\n\n/**\n * Group paired events (scheduled→completed, started→fired, wait→signaled)\n * into a single span using timeline_key, or treat standalone events as points.\n */\nexport function buildTimelineSpans(events: WorkflowExecutionEvent[]): TimelineSpan[] {\n const spans: TimelineSpan[] = [];\n\n // Index scheduled/started events by timeline_key for pairing\n const startedMap = new Map<string, WorkflowExecutionEvent>();\n const completedMap = new Map<string, WorkflowExecutionEvent>();\n\n for (const evt of events) {\n const tlKey = evt.attributes.timeline_key;\n if (!tlKey) continue;\n const type = evt.event_type;\n\n if (type === 'activity_task_scheduled'\n || type === 'timer_started'\n || type === 'child_workflow_execution_started'\n || type === 'signal_wait_started') {\n startedMap.set(tlKey, evt);\n } else {\n completedMap.set(tlKey, evt);\n }\n }\n\n // Build spans from pairs\n const seen = new Set<string>();\n\n for (const evt of events) {\n const tlKey = evt.attributes.timeline_key;\n\n // Skip if no timeline_key or already processed\n if (tlKey && seen.has(tlKey)) continue;\n if (tlKey) seen.add(tlKey);\n\n const started = tlKey ? startedMap.get(tlKey) : undefined;\n const completed = tlKey ? completedMap.get(tlKey) : undefined;\n\n // Determine the representative event for this span\n const primary = completed || started || evt;\n const cat = primary.category;\n const name = primary.attributes.activity_type\n || primary.attributes.signal_name\n || primary.attributes.child_workflow_id\n || primary.event_type;\n\n const startEvt = started || primary;\n const endEvt = completed;\n\n const startMs = new Date(startEvt.event_time).getTime();\n let endMs: number | null = null;\n let dur: number | null = null;\n let pending = false;\n\n if (endEvt) {\n endMs = new Date(endEvt.event_time).getTime();\n dur = endEvt.duration_ms ?? (endMs - startMs);\n } else if (primary.duration_ms !== null) {\n dur = primary.duration_ms;\n endMs = startMs + dur;\n } else {\n // Pending — no completion event\n pending = true;\n }\n\n spans.push({\n category: cat,\n name: name || primary.event_type,\n startTime: startMs,\n endTime: endMs,\n duration: dur,\n eventId: primary.event_id,\n pending,\n });\n }\n\n return spans;\n}\n","import { useState } from 'react';\nimport { Collapsible } from '../../../components/common/layout/Collapsible';\nimport type { WorkflowExecutionEvent, LTTaskRecord } from '../../../api/types';\nimport { EventDetailPanel } from './EventDetailPanel';\nimport {\n formatDuration,\n middleTruncate,\n buildTimelineSpans,\n CATEGORY_COLORS,\n PENDING_CLASS,\n MCP_ACTIVITY_NAMES,\n} from './utils';\nimport type { Segment, Lane } from './utils';\n\ninterface SwimlaneTimelineProps {\n events: WorkflowExecutionEvent[];\n childTasks?: LTTaskRecord[];\n /** Use outline-style bars (border + transparent fill) instead of solid fills */\n outline?: boolean;\n}\n\n// ── Component ────────────────────────────────────────────────────────────────\n\nexport function SwimlaneTimeline({ events, childTasks, outline }: SwimlaneTimelineProps) {\n const [selectedEvents, setSelectedEvents] = useState<Set<number>>(new Set());\n\n // Filter out workflow-level events (started/completed) — they aren't operations\n const timelineEvents = events.filter(\n (e) => e.category !== 'workflow',\n );\n\n // Show all activities (user + system), signals, timers, and child workflows.\n const displayEvents = timelineEvents;\n\n if (displayEvents.length === 0) return null;\n\n const spans = buildTimelineSpans(displayEvents);\n if (spans.length === 0) return null;\n\n // Compute time axis bounds\n const now = Date.now();\n const allTimes = spans.flatMap((s) => {\n const times = [s.startTime];\n if (s.endTime) times.push(s.endTime);\n else times.push(now); // pending extends to now\n return times;\n });\n const timeMin = Math.min(...allTimes);\n const timeMax = Math.max(...allTimes);\n const totalSpan = timeMax - timeMin || 1;\n\n // Group spans into lanes by \"category:name\"\n const laneMap = new Map<string, { name: string; category: string; segments: Segment[] }>();\n\n for (const span of spans) {\n const laneKey = `${span.category}:${span.name}`;\n const startOffset = span.startTime - timeMin;\n const endOffset = span.endTime ? span.endTime - timeMin : (now - timeMin);\n const widthMs = endOffset - startOffset;\n\n const segment: Segment = {\n eventId: span.eventId,\n startPct: (startOffset / totalSpan) * 100,\n widthPct: Math.max((widthMs / totalSpan) * 100, 0.5),\n duration: span.duration,\n label: `${span.name} — ${span.duration !== null ? formatDuration(span.duration) : 'pending'} — ${new Date(span.startTime).toLocaleTimeString()}`,\n eventTime: new Date(span.startTime).toISOString(),\n pending: span.pending,\n };\n\n if (!laneMap.has(laneKey)) {\n laneMap.set(laneKey, { name: span.name, category: span.category, segments: [] });\n }\n laneMap.get(laneKey)!.segments.push(segment);\n }\n\n const lanes: Lane[] = Array.from(laneMap.values());\n\n // Time axis ticks\n const tickCount = 5;\n const ticks = Array.from({ length: tickCount + 1 }, (_, i) => ({\n pct: (i / tickCount) * 100,\n label: formatDuration(Math.round((i / tickCount) * totalSpan)),\n }));\n\n // Active categories for legend\n const activeCategories = [...new Set(spans.map((s) => s.category))];\n\n /** Find a matching child task for an event */\n const findChildTask = (evt: WorkflowExecutionEvent): LTTaskRecord | undefined => {\n if (!childTasks?.length) return undefined;\n const activityType = evt.attributes.activity_type;\n if (!activityType) return undefined;\n return childTasks.find((t) => t.workflow_type === activityType);\n };\n\n const toggleEvent = (id: number) => {\n setSelectedEvents((prev) => {\n const next = new Set(prev);\n if (next.has(id)) next.delete(id);\n else next.add(id);\n return next;\n });\n };\n\n const allEventIds = spans.map((s) => s.eventId);\n const allExpanded = allEventIds.length > 0 && allEventIds.every((id) => selectedEvents.has(id));\n\n const toggleAll = () => {\n if (allExpanded) {\n setSelectedEvents(new Set());\n } else {\n setSelectedEvents(new Set(allEventIds));\n }\n };\n\n\n\n const barColor = (cat: string, pending: boolean) => {\n if (pending) return PENDING_CLASS;\n if (outline) return CATEGORY_COLORS[cat]?.outline ?? 'border-text-tertiary bg-transparent';\n return CATEGORY_COLORS[cat]?.bar ?? 'bg-text-tertiary';\n };\n\n const textColor = (cat: string) => {\n if (outline) return CATEGORY_COLORS[cat]?.text ?? 'text-text-tertiary';\n return 'text-white';\n };\n\n return (\n <div className=\"px-6 py-6 mb-6\">\n <div className=\"flex items-center gap-4 mb-4 flex-wrap\">\n <p className=\"text-[10px] font-semibold uppercase tracking-widest text-text-tertiary\">\n Execution Timeline\n </p>\n <button onClick={toggleAll} className=\"text-[10px] text-accent hover:underline\">\n {allExpanded ? 'Collapse all' : 'Expand all'}\n </button>\n\n {/* Legend */}\n <div className=\"flex items-center gap-3 ml-auto\">\n {activeCategories.map((cat) => (\n <div key={cat} className=\"flex items-center gap-1\">\n <span className={`w-2 h-2 rounded-full ${outline ? `border ${CATEGORY_COLORS[cat]?.outline ?? 'border-text-tertiary'}` : CATEGORY_COLORS[cat]?.bar ?? 'bg-text-tertiary'}`} />\n <span className=\"text-[9px] text-text-tertiary\">\n {CATEGORY_COLORS[cat]?.label ?? cat}\n </span>\n </div>\n ))}\n {spans.some((s) => s.pending) && (\n <div className=\"flex items-center gap-1\">\n <span className=\"w-2 h-2 rounded-full bg-status-warning animate-pulse\" />\n <span className=\"text-[9px] text-text-tertiary\">Pending</span>\n </div>\n )}\n </div>\n </div>\n\n {/* Time axis */}\n <div className=\"flex\">\n <div className=\"w-56 shrink-0\" />\n <div className=\"flex-1 relative h-6 border-b border-surface-border\">\n {ticks.map((tick) => (\n <span\n key={tick.pct}\n className=\"absolute text-[9px] font-mono text-text-tertiary -translate-x-1/2 bottom-1\"\n style={{ left: `${tick.pct}%` }}\n >\n {tick.label}\n </span>\n ))}\n </div>\n </div>\n\n {/* Lanes */}\n {lanes.map((lane) => {\n const catColor = CATEGORY_COLORS[lane.category];\n\n return (\n <div key={`${lane.category}:${lane.name}`}>\n {/* Lane row */}\n <div className=\"flex items-center border-b border-surface-border\">\n <div className=\"w-56 shrink-0 py-3 pr-4 flex items-center gap-2\">\n <span className={`w-1.5 h-1.5 rounded-full shrink-0 ${catColor?.bar ?? 'bg-text-tertiary'}`} />\n <p\n className=\"text-xs font-mono text-text-secondary whitespace-nowrap overflow-hidden\"\n title={lane.name}\n >\n {middleTruncate(lane.name, 28)}\n </p>\n {MCP_ACTIVITY_NAMES.has(lane.name) && (\n <span className=\"shrink-0 text-accent/60\" title=\"MCP tool interaction\">\n <svg className=\"w-3 h-3\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" strokeWidth={2}>\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" d=\"M9.663 17h4.674M12 3v1m6.364 1.636l-.707.707M21 12h-1M4 12H3m3.343-5.657l-.707-.707m2.828 9.9a5 5 0 117.072 0l-.548.547A3.374 3.374 0 0014 18.469V19a2 2 0 11-4 0v-.531c0-.895-.356-1.754-.988-2.386l-.548-.547z\" />\n </svg>\n </span>\n )}\n </div>\n\n <div className=\"flex-1 relative h-10\">\n {ticks.map((tick) => (\n <div\n key={tick.pct}\n className=\"absolute top-0 bottom-0 w-px bg-surface-border opacity-30\"\n style={{ left: `${tick.pct}%` }}\n />\n ))}\n\n {lane.segments.map((seg) => (\n <div\n key={seg.eventId}\n className={`absolute top-2 h-6 rounded-sm cursor-pointer transition-all duration-200 ${outline ? 'border-2' : ''} ${\n selectedEvents.has(seg.eventId)\n ? `${barColor(lane.category, seg.pending)} ring-2 ring-accent ring-offset-1`\n : `${barColor(lane.category, seg.pending)} hover:opacity-80`\n }`}\n style={{\n left: `${seg.startPct}%`,\n width: `${seg.widthPct}%`,\n minWidth: '4px',\n }}\n title={seg.label}\n onClick={() => toggleEvent(seg.eventId)}\n >\n {seg.widthPct > 8 && (\n <span className={`absolute inset-0 flex items-center px-1.5 text-[9px] font-mono ${textColor(lane.category)} truncate`}>\n {seg.duration !== null ? formatDuration(seg.duration) : 'pending'}\n </span>\n )}\n </div>\n ))}\n </div>\n </div>\n\n {/* Inline detail panels */}\n {lane.segments.map((seg) => {\n const isOpen = selectedEvents.has(seg.eventId);\n const evt = displayEvents.find((e) => e.event_id === seg.eventId);\n return (\n <Collapsible key={seg.eventId} open={isOpen}>\n {evt && (\n <div className=\"py-3\">\n <EventDetailPanel\n event={evt}\n childTask={findChildTask(evt)}\n pending={seg.pending}\n onClose={() => toggleEvent(evt.event_id)}\n />\n </div>\n )}\n </Collapsible>\n );\n })}\n </div>\n );\n })}\n </div>\n );\n}\n"],"names":["safeParseJson","raw","EventDetailPanel","event","childTask","pending","onClose","childInput","childOutput","jsxDEV","DurationValue","DateValue","Link","e","StatusBadge","JsonViewer","input","result","isSignal","isActivity","isChild","hasInput","hasResult","resultLabel","kind","activity_type","timeline_key","execution_index","signal_name","child_workflow_id","awaited","wait_event_id","scheduled_event_id","initiated_event_id","failure","trace_id","span_id","rest","CATEGORY_COLORS","PENDING_CLASS","MCP_ACTIVITY_NAMES","middleTruncate","str","maxLen","keep","buildTimelineSpans","events","spans","startedMap","completedMap","evt","tlKey","type","seen","started","completed","primary","cat","name","startEvt","endEvt","startMs","endMs","dur","SwimlaneTimeline","childTasks","outline","selectedEvents","setSelectedEvents","useState","displayEvents","now","allTimes","s","times","timeMin","totalSpan","laneMap","span","laneKey","startOffset","widthMs","segment","formatDuration","lanes","tickCount","ticks","_","activeCategories","findChildTask","activityType","t","toggleEvent","id","prev","next","allEventIds","allExpanded","toggleAll","barColor","_a","_b","textColor","tick","lane","catColor","seg","isOpen","Collapsible"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"SwimlaneTimeline-CUPqMd0z.js","sources":["../../src/pages/workflows/workflow-execution/EventDetailPanel.tsx","../../src/pages/workflows/workflow-execution/utils.ts","../../src/pages/workflows/workflow-execution/SwimlaneTimeline.tsx"],"sourcesContent":["import { Link } from 'react-router-dom';\nimport { JsonViewer } from '../../../components/common/data/JsonViewer';\nimport { StatusBadge } from '../../../components/common/display/StatusBadge';\nimport type { WorkflowExecutionEvent, LTTaskRecord } from '../../../api/types';\nimport { DateValue } from '../../../components/common/display/DateValue';\nimport { DurationValue } from '../../../components/common/display/DurationValue';\n\ninterface EventDetailPanelProps {\n event: WorkflowExecutionEvent;\n childTask?: LTTaskRecord;\n /** When true, show a \"Pending\" badge. Caller determines this from the full event list. */\n pending?: boolean;\n onClose?: () => void;\n}\n\nfunction safeParseJson(raw: string | null | undefined): unknown {\n if (!raw) return null;\n try {\n return JSON.parse(raw);\n } catch {\n return raw;\n }\n}\n\n/**\n * Reusable detail panel for a workflow execution event.\n * Renders inline wherever placed — used by both SwimlaneTimeline\n * (below the lane row) and EventTable (below the event row).\n *\n * Shows rich detail for all event categories:\n * - Activities: activity_type, result, scheduled_event_id\n * - Signals: signal_name, payload, wait_event_id\n * - Timers: duration\n * - Child workflows: child_workflow_id link, awaited badge, result\n */\nexport function EventDetailPanel({ event, childTask, pending = false, onClose }: EventDetailPanelProps) {\n const childInput = childTask ? safeParseJson(childTask.envelope) : null;\n const childOutput = childTask ? safeParseJson(childTask.data) : null;\n\n return (\n <div className=\"p-4 bg-surface-sunken rounded-md space-y-4\">\n {/* Header */}\n <div className=\"flex items-center justify-between gap-2\">\n <div className=\"flex items-center gap-2\">\n <p className=\"font-mono font-medium text-sm text-text-primary\">\n {event.attributes.activity_type\n ?? event.attributes.signal_name\n ?? event.attributes.child_workflow_id\n ?? event.event_type}\n </p>\n {pending && (\n <span className=\"inline-flex items-center gap-1 px-1.5 py-0.5 rounded text-[10px] font-medium bg-status-warning/15 text-status-warning\">\n <span className=\"w-1.5 h-1.5 rounded-full bg-status-warning animate-pulse\" />\n Pending\n </span>\n )}\n </div>\n {onClose && (\n <button\n onClick={onClose}\n className=\"text-text-tertiary hover:text-text-primary text-xs\"\n >\n Close\n </button>\n )}\n </div>\n\n {/* Metadata grid */}\n <div className=\"grid grid-cols-2 sm:grid-cols-4 gap-3\">\n {event.attributes.activity_type && (\n <div>\n <p className=\"text-[10px] font-semibold uppercase tracking-widest text-text-tertiary\">\n Activity\n </p>\n <p className=\"text-xs font-mono text-text-primary\">\n {event.attributes.activity_type}\n </p>\n </div>\n )}\n <div>\n <p className=\"text-[10px] font-semibold uppercase tracking-widest text-text-tertiary\">\n Kind\n </p>\n <p className=\"text-xs font-mono text-text-primary\">\n {event.attributes.kind}\n </p>\n </div>\n {event.duration_ms !== null && (\n <div>\n <p className=\"text-[10px] font-semibold uppercase tracking-widest text-text-tertiary\">\n Duration\n </p>\n <DurationValue ms={event.duration_ms} className=\"font-mono text-text-primary\" />\n </div>\n )}\n <div>\n <p className=\"text-[10px] font-semibold uppercase tracking-widest text-text-tertiary\">\n Time\n </p>\n <DateValue date={event.event_time} format=\"datetime\" className=\"font-mono text-text-primary\" />\n </div>\n\n {/* Signal-specific: signal name */}\n {event.attributes.signal_name && (\n <div>\n <p className=\"text-[10px] font-semibold uppercase tracking-widest text-text-tertiary\">\n Signal\n </p>\n <p className=\"text-xs font-mono text-text-primary\">\n {event.attributes.signal_name}\n </p>\n </div>\n )}\n\n {/* Child workflow: awaited badge */}\n {event.attributes.awaited !== undefined && (\n <div>\n <p className=\"text-[10px] font-semibold uppercase tracking-widest text-text-tertiary\">\n Awaited\n </p>\n <p className=\"text-xs font-mono text-text-primary\">\n {event.attributes.awaited ? 'Yes' : 'No (fire-and-forget)'}\n </p>\n </div>\n )}\n\n {/* Timeline key */}\n {event.attributes.timeline_key && (\n <div className=\"col-span-2\">\n <p className=\"text-[10px] font-semibold uppercase tracking-widest text-text-tertiary\">\n Timeline Key\n </p>\n <p className=\"text-xs font-mono text-text-primary truncate\" title={event.attributes.timeline_key}>\n {event.attributes.timeline_key}\n </p>\n </div>\n )}\n\n {/* Execution index */}\n {event.attributes.execution_index !== undefined && (\n <div>\n <p className=\"text-[10px] font-semibold uppercase tracking-widest text-text-tertiary\">\n Exec Index\n </p>\n <p className=\"text-xs font-mono text-text-primary\">\n {event.attributes.execution_index}\n </p>\n </div>\n )}\n\n {/* Back-references */}\n {event.attributes.scheduled_event_id != null && (\n <div>\n <p className=\"text-[10px] font-semibold uppercase tracking-widest text-text-tertiary\">\n Scheduled Event\n </p>\n <p className=\"text-xs font-mono text-text-primary\">\n #{event.attributes.scheduled_event_id}\n </p>\n </div>\n )}\n {event.attributes.wait_event_id != null && (\n <div>\n <p className=\"text-[10px] font-semibold uppercase tracking-widest text-text-tertiary\">\n Wait Started\n </p>\n <p className=\"text-xs font-mono text-text-primary\">\n Event #{event.attributes.wait_event_id}\n </p>\n </div>\n )}\n {event.attributes.initiated_event_id != null && (\n <div>\n <p className=\"text-[10px] font-semibold uppercase tracking-widest text-text-tertiary\">\n Initiated Event\n </p>\n <p className=\"text-xs font-mono text-text-primary\">\n #{event.attributes.initiated_event_id}\n </p>\n </div>\n )}\n </div>\n\n {/* Child workflow link — from event attributes (no matching task record) */}\n {!childTask && event.attributes.child_workflow_id && (\n <div className=\"border-t border-surface-border pt-3\">\n <div className=\"flex items-center gap-3 flex-wrap\">\n <span className=\"text-[10px] font-semibold uppercase tracking-widest text-text-tertiary\">\n Child Workflow\n </span>\n <Link\n to={`/workflows/executions/${event.attributes.child_workflow_id}`}\n className=\"text-xs font-mono text-accent hover:underline\"\n onClick={(e) => e.stopPropagation()}\n >\n {event.attributes.child_workflow_id}\n </Link>\n </div>\n </div>\n )}\n\n {/* Child workflow section — from matched task record */}\n {childTask && (\n <div className=\"space-y-3 border-t border-surface-border pt-3\">\n {/* Child link + status */}\n <div className=\"flex items-center gap-3 flex-wrap\">\n <span className=\"text-[10px] font-semibold uppercase tracking-widest text-text-tertiary\">\n Child Workflow\n </span>\n <Link\n to={`/workflows/executions/${childTask.workflow_id}`}\n className=\"text-xs font-mono text-accent hover:underline\"\n onClick={(e) => e.stopPropagation()}\n >\n {childTask.workflow_id}\n </Link>\n <StatusBadge status={childTask.status} />\n {childTask.completed_at && (\n <span className=\"text-[10px] text-text-tertiary\">\n Completed <DateValue date={childTask.completed_at} format=\"relative\" />\n </span>\n )}\n </div>\n\n {/* Input / Output side-by-side */}\n {(childInput != null || childOutput != null) && (\n <div className=\"grid grid-cols-1 md:grid-cols-2 gap-4\">\n {childInput != null ? (\n <JsonViewer data={childInput} label=\"Input (Envelope)\" variant=\"panel\" />\n ) : <div />}\n {childOutput != null ? (\n <JsonViewer data={childOutput} label=\"Output (Result)\" variant=\"panel\" />\n ) : <div />}\n </div>\n )}\n </div>\n )}\n\n {/* Input / Result side-by-side for activities and child workflows */}\n {(() => {\n const input = event.attributes.input;\n const result = event.attributes.result;\n const isSignal = event.category === 'signal';\n const isActivity = event.category === 'activity';\n const isChild = event.category === 'child_workflow';\n const hasInput = input !== undefined && (isActivity || isChild);\n const hasResult = !childTask && result !== undefined && (isActivity || isChild);\n const resultLabel = event.attributes.activity_type === 'ltSignalParent' ? 'Signal Payload' : 'Result';\n\n if (hasInput || hasResult) {\n return (\n <div className=\"grid grid-cols-1 md:grid-cols-2 gap-4\">\n {hasInput ? (\n <JsonViewer data={input} label=\"Input\" variant=\"panel\" />\n ) : <div />}\n {hasResult ? (\n <JsonViewer data={result} label={resultLabel} variant=\"panel\" />\n ) : <div />}\n </div>\n );\n }\n\n // Signal payload — standalone (no result pairing)\n if (isSignal && input !== undefined) {\n return <JsonViewer data={input} label=\"Signal Payload\" variant=\"panel\" />;\n }\n\n return null;\n })()}\n\n {/* Failure detail */}\n {event.attributes.failure !== undefined && (\n <JsonViewer data={event.attributes.failure} label=\"Failure\" />\n )}\n\n {/* Remaining attributes (exclude the fields shown above) */}\n {(() => {\n const {\n kind,\n activity_type,\n result,\n timeline_key,\n execution_index,\n signal_name,\n input,\n child_workflow_id,\n awaited,\n wait_event_id,\n scheduled_event_id,\n initiated_event_id,\n failure,\n trace_id,\n span_id,\n ...rest\n } = event.attributes;\n return Object.keys(rest).length > 0 ? (\n <JsonViewer data={rest} label=\"Attributes\" />\n ) : null;\n })()}\n </div>\n );\n}\n","export { formatDuration, formatDateTime } from '../../../lib/format';\n\nimport type { WorkflowExecutionEvent } from '../../../api/types';\n\n// ── Types ────────────────────────────────────────────────────────────────────\n\nexport interface Segment {\n eventId: number;\n startPct: number;\n widthPct: number;\n duration: number | null;\n label: string;\n eventTime: string;\n pending: boolean;\n}\n\nexport interface Lane {\n name: string;\n category: string;\n segments: Segment[];\n}\n\n// ── Constants ────────────────────────────────────────────────────────────────\n\nexport const CATEGORY_COLORS: Record<string, { bar: string; outline: string; text: string; label: string }> = {\n activity: { bar: 'bg-blue-500', outline: 'border-blue-500 bg-transparent', text: 'text-blue-500', label: 'Activities' },\n signal: { bar: 'bg-emerald-500', outline: 'border-emerald-500 bg-transparent', text: 'text-emerald-500', label: 'Signals' },\n timer: { bar: 'bg-status-warning', outline: 'border-status-warning bg-transparent', text: 'text-status-warning', label: 'Timers' },\n child_workflow: { bar: 'bg-violet-500', outline: 'border-violet-500 bg-transparent', text: 'text-violet-500', label: 'Child Workflows' },\n};\n\nexport const PENDING_CLASS = 'bg-stripes animate-pulse opacity-70';\n\n/** Activity names that indicate LLM/MCP tool interaction */\nexport const MCP_ACTIVITY_NAMES = new Set([\n 'callLLM', 'callDbTool', 'callVisionTool', 'callMcpTool', 'getDBTools', 'getVisionTools',\n]);\n\n// ── Helpers ──────────────────────────────────────────────────────────────────\n\n/** Truncate a string in the middle, keeping the start and end visible. */\nexport function middleTruncate(str: string, maxLen: number): string {\n if (str.length <= maxLen) return str;\n const keep = Math.floor((maxLen - 1) / 2);\n return `${str.slice(0, keep)}…${str.slice(str.length - keep)}`;\n}\n\nexport interface TimelineSpan {\n category: string;\n name: string;\n startTime: number;\n endTime: number | null;\n duration: number | null;\n eventId: number;\n pending: boolean;\n}\n\n/**\n * Group paired events (scheduled→completed, started→fired, wait→signaled)\n * into a single span using timeline_key, or treat standalone events as points.\n */\nexport function buildTimelineSpans(events: WorkflowExecutionEvent[]): TimelineSpan[] {\n const spans: TimelineSpan[] = [];\n\n // Index scheduled/started events by timeline_key for pairing\n const startedMap = new Map<string, WorkflowExecutionEvent>();\n const completedMap = new Map<string, WorkflowExecutionEvent>();\n\n for (const evt of events) {\n const tlKey = evt.attributes.timeline_key;\n if (!tlKey) continue;\n const type = evt.event_type;\n\n if (type === 'activity_task_scheduled'\n || type === 'timer_started'\n || type === 'child_workflow_execution_started'\n || type === 'signal_wait_started') {\n startedMap.set(tlKey, evt);\n } else {\n completedMap.set(tlKey, evt);\n }\n }\n\n // Build spans from pairs\n const seen = new Set<string>();\n\n for (const evt of events) {\n const tlKey = evt.attributes.timeline_key;\n\n // Skip if no timeline_key or already processed\n if (tlKey && seen.has(tlKey)) continue;\n if (tlKey) seen.add(tlKey);\n\n const started = tlKey ? startedMap.get(tlKey) : undefined;\n const completed = tlKey ? completedMap.get(tlKey) : undefined;\n\n // Determine the representative event for this span\n const primary = completed || started || evt;\n const cat = primary.category;\n const name = primary.attributes.activity_type\n || primary.attributes.signal_name\n || primary.attributes.child_workflow_id\n || primary.event_type;\n\n const startEvt = started || primary;\n const endEvt = completed;\n\n const startMs = new Date(startEvt.event_time).getTime();\n let endMs: number | null = null;\n let dur: number | null = null;\n let pending = false;\n\n if (endEvt) {\n endMs = new Date(endEvt.event_time).getTime();\n dur = endEvt.duration_ms ?? (endMs - startMs);\n } else if (primary.duration_ms !== null) {\n dur = primary.duration_ms;\n endMs = startMs + dur;\n } else {\n // Pending — no completion event\n pending = true;\n }\n\n spans.push({\n category: cat,\n name: name || primary.event_type,\n startTime: startMs,\n endTime: endMs,\n duration: dur,\n eventId: primary.event_id,\n pending,\n });\n }\n\n return spans;\n}\n","import { useState } from 'react';\nimport { Collapsible } from '../../../components/common/layout/Collapsible';\nimport type { WorkflowExecutionEvent, LTTaskRecord } from '../../../api/types';\nimport { EventDetailPanel } from './EventDetailPanel';\nimport {\n formatDuration,\n middleTruncate,\n buildTimelineSpans,\n CATEGORY_COLORS,\n PENDING_CLASS,\n MCP_ACTIVITY_NAMES,\n} from './utils';\nimport type { Segment, Lane } from './utils';\n\ninterface SwimlaneTimelineProps {\n events: WorkflowExecutionEvent[];\n childTasks?: LTTaskRecord[];\n /** Use outline-style bars (border + transparent fill) instead of solid fills */\n outline?: boolean;\n}\n\n// ── Component ────────────────────────────────────────────────────────────────\n\nexport function SwimlaneTimeline({ events, childTasks, outline }: SwimlaneTimelineProps) {\n const [selectedEvents, setSelectedEvents] = useState<Set<number>>(new Set());\n\n // Filter out workflow-level events (started/completed) — they aren't operations\n const timelineEvents = events.filter(\n (e) => e.category !== 'workflow',\n );\n\n // Show all activities (user + system), signals, timers, and child workflows.\n const displayEvents = timelineEvents;\n\n if (displayEvents.length === 0) return null;\n\n const spans = buildTimelineSpans(displayEvents);\n if (spans.length === 0) return null;\n\n // Compute time axis bounds\n const now = Date.now();\n const allTimes = spans.flatMap((s) => {\n const times = [s.startTime];\n if (s.endTime) times.push(s.endTime);\n else times.push(now); // pending extends to now\n return times;\n });\n const timeMin = Math.min(...allTimes);\n const timeMax = Math.max(...allTimes);\n const totalSpan = timeMax - timeMin || 1;\n\n // Group spans into lanes by \"category:name\"\n const laneMap = new Map<string, { name: string; category: string; segments: Segment[] }>();\n\n for (const span of spans) {\n const laneKey = `${span.category}:${span.name}`;\n const startOffset = span.startTime - timeMin;\n const endOffset = span.endTime ? span.endTime - timeMin : (now - timeMin);\n const widthMs = endOffset - startOffset;\n\n const segment: Segment = {\n eventId: span.eventId,\n startPct: (startOffset / totalSpan) * 100,\n widthPct: Math.max((widthMs / totalSpan) * 100, 0.5),\n duration: span.duration,\n label: `${span.name} — ${span.duration !== null ? formatDuration(span.duration) : 'pending'} — ${new Date(span.startTime).toLocaleTimeString()}`,\n eventTime: new Date(span.startTime).toISOString(),\n pending: span.pending,\n };\n\n if (!laneMap.has(laneKey)) {\n laneMap.set(laneKey, { name: span.name, category: span.category, segments: [] });\n }\n laneMap.get(laneKey)!.segments.push(segment);\n }\n\n const lanes: Lane[] = Array.from(laneMap.values());\n\n // Time axis ticks\n const tickCount = 5;\n const ticks = Array.from({ length: tickCount + 1 }, (_, i) => ({\n pct: (i / tickCount) * 100,\n label: formatDuration(Math.round((i / tickCount) * totalSpan)),\n }));\n\n // Active categories for legend\n const activeCategories = [...new Set(spans.map((s) => s.category))];\n\n /** Find a matching child task for an event */\n const findChildTask = (evt: WorkflowExecutionEvent): LTTaskRecord | undefined => {\n if (!childTasks?.length) return undefined;\n const activityType = evt.attributes.activity_type;\n if (!activityType) return undefined;\n return childTasks.find((t) => t.workflow_type === activityType);\n };\n\n const toggleEvent = (id: number) => {\n setSelectedEvents((prev) => {\n const next = new Set(prev);\n if (next.has(id)) next.delete(id);\n else next.add(id);\n return next;\n });\n };\n\n const allEventIds = spans.map((s) => s.eventId);\n const allExpanded = allEventIds.length > 0 && allEventIds.every((id) => selectedEvents.has(id));\n\n const toggleAll = () => {\n if (allExpanded) {\n setSelectedEvents(new Set());\n } else {\n setSelectedEvents(new Set(allEventIds));\n }\n };\n\n\n\n const barColor = (cat: string, pending: boolean) => {\n if (pending) return PENDING_CLASS;\n if (outline) return CATEGORY_COLORS[cat]?.outline ?? 'border-text-tertiary bg-transparent';\n return CATEGORY_COLORS[cat]?.bar ?? 'bg-text-tertiary';\n };\n\n const textColor = (cat: string) => {\n if (outline) return CATEGORY_COLORS[cat]?.text ?? 'text-text-tertiary';\n return 'text-white';\n };\n\n return (\n <div className=\"px-6 py-6 mb-6\">\n <div className=\"flex items-center gap-4 mb-4 flex-wrap\">\n <p className=\"text-[10px] font-semibold uppercase tracking-widest text-text-tertiary\">\n Execution Timeline\n </p>\n <button onClick={toggleAll} className=\"text-[10px] text-accent hover:underline\">\n {allExpanded ? 'Collapse all' : 'Expand all'}\n </button>\n\n {/* Legend */}\n <div className=\"flex items-center gap-3 ml-auto\">\n {activeCategories.map((cat) => (\n <div key={cat} className=\"flex items-center gap-1\">\n <span className={`w-2 h-2 rounded-full ${outline ? `border ${CATEGORY_COLORS[cat]?.outline ?? 'border-text-tertiary'}` : CATEGORY_COLORS[cat]?.bar ?? 'bg-text-tertiary'}`} />\n <span className=\"text-[9px] text-text-tertiary\">\n {CATEGORY_COLORS[cat]?.label ?? cat}\n </span>\n </div>\n ))}\n {spans.some((s) => s.pending) && (\n <div className=\"flex items-center gap-1\">\n <span className=\"w-2 h-2 rounded-full bg-status-warning animate-pulse\" />\n <span className=\"text-[9px] text-text-tertiary\">Pending</span>\n </div>\n )}\n </div>\n </div>\n\n {/* Time axis */}\n <div className=\"flex\">\n <div className=\"w-56 shrink-0\" />\n <div className=\"flex-1 relative h-6 border-b border-surface-border\">\n {ticks.map((tick) => (\n <span\n key={tick.pct}\n className=\"absolute text-[9px] font-mono text-text-tertiary -translate-x-1/2 bottom-1\"\n style={{ left: `${tick.pct}%` }}\n >\n {tick.label}\n </span>\n ))}\n </div>\n </div>\n\n {/* Lanes */}\n {lanes.map((lane) => {\n const catColor = CATEGORY_COLORS[lane.category];\n\n return (\n <div key={`${lane.category}:${lane.name}`}>\n {/* Lane row */}\n <div className=\"flex items-center border-b border-surface-border\">\n <div className=\"w-56 shrink-0 py-3 pr-4 flex items-center gap-2\">\n <span className={`w-1.5 h-1.5 rounded-full shrink-0 ${catColor?.bar ?? 'bg-text-tertiary'}`} />\n <p\n className=\"text-xs font-mono text-text-secondary whitespace-nowrap overflow-hidden\"\n title={lane.name}\n >\n {middleTruncate(lane.name, 28)}\n </p>\n {MCP_ACTIVITY_NAMES.has(lane.name) && (\n <span className=\"shrink-0 text-accent/60\" title=\"MCP tool interaction\">\n <svg className=\"w-3 h-3\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" strokeWidth={2}>\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" d=\"M9.663 17h4.674M12 3v1m6.364 1.636l-.707.707M21 12h-1M4 12H3m3.343-5.657l-.707-.707m2.828 9.9a5 5 0 117.072 0l-.548.547A3.374 3.374 0 0014 18.469V19a2 2 0 11-4 0v-.531c0-.895-.356-1.754-.988-2.386l-.548-.547z\" />\n </svg>\n </span>\n )}\n </div>\n\n <div className=\"flex-1 relative h-10\">\n {ticks.map((tick) => (\n <div\n key={tick.pct}\n className=\"absolute top-0 bottom-0 w-px bg-surface-border opacity-30\"\n style={{ left: `${tick.pct}%` }}\n />\n ))}\n\n {lane.segments.map((seg) => (\n <div\n key={seg.eventId}\n className={`absolute top-2 h-6 rounded-sm cursor-pointer transition-all duration-200 ${outline ? 'border-2' : ''} ${\n selectedEvents.has(seg.eventId)\n ? `${barColor(lane.category, seg.pending)} ring-2 ring-accent ring-offset-1`\n : `${barColor(lane.category, seg.pending)} hover:opacity-80`\n }`}\n style={{\n left: `${seg.startPct}%`,\n width: `${seg.widthPct}%`,\n minWidth: '4px',\n }}\n title={seg.label}\n onClick={() => toggleEvent(seg.eventId)}\n >\n {seg.widthPct > 8 && (\n <span className={`absolute inset-0 flex items-center px-1.5 text-[9px] font-mono ${textColor(lane.category)} truncate`}>\n {seg.duration !== null ? formatDuration(seg.duration) : 'pending'}\n </span>\n )}\n </div>\n ))}\n </div>\n </div>\n\n {/* Inline detail panels */}\n {lane.segments.map((seg) => {\n const isOpen = selectedEvents.has(seg.eventId);\n const evt = displayEvents.find((e) => e.event_id === seg.eventId);\n return (\n <Collapsible key={seg.eventId} open={isOpen}>\n {evt && (\n <div className=\"py-3\">\n <EventDetailPanel\n event={evt}\n childTask={findChildTask(evt)}\n pending={seg.pending}\n onClose={() => toggleEvent(evt.event_id)}\n />\n </div>\n )}\n </Collapsible>\n );\n })}\n </div>\n );\n })}\n </div>\n );\n}\n"],"names":["safeParseJson","raw","EventDetailPanel","event","childTask","pending","onClose","childInput","childOutput","jsxDEV","DurationValue","DateValue","Link","e","StatusBadge","JsonViewer","input","result","isSignal","isActivity","isChild","hasInput","hasResult","resultLabel","kind","activity_type","timeline_key","execution_index","signal_name","child_workflow_id","awaited","wait_event_id","scheduled_event_id","initiated_event_id","failure","trace_id","span_id","rest","CATEGORY_COLORS","PENDING_CLASS","MCP_ACTIVITY_NAMES","middleTruncate","str","maxLen","keep","buildTimelineSpans","events","spans","startedMap","completedMap","evt","tlKey","type","seen","started","completed","primary","cat","name","startEvt","endEvt","startMs","endMs","dur","SwimlaneTimeline","childTasks","outline","selectedEvents","setSelectedEvents","useState","displayEvents","now","allTimes","s","times","timeMin","totalSpan","laneMap","span","laneKey","startOffset","widthMs","segment","formatDuration","lanes","tickCount","ticks","_","activeCategories","findChildTask","activityType","t","toggleEvent","id","prev","next","allEventIds","allExpanded","toggleAll","barColor","_a","_b","textColor","tick","lane","catColor","seg","isOpen","Collapsible"],"mappings":"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"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{j as o}from"./index-BwN3KP_L.js";import{a as l}from"./vendor-query-DLp59M9_.js";import{X as d}from"./vendor-icons-D1DdudfH.js";function x(t){return t.toLowerCase().replace(/[^a-z0-9-]/g,"").replace(/^-|-$/g,"")}function g({tags:t,onChange:a,placeholder:p="Add tag...",compact:u}){const[r,s]=l.useState(""),m=l.useRef(null),c=e=>{const n=x(e);n&&!t.includes(n)&&a([...t,n]),s("")},i=e=>{a(t.filter(n=>n!==e))},f=e=>{e.key==="Enter"||e.key===","?(e.preventDefault(),c(r)):e.key==="Backspace"&&!r&&t.length>0&&i(t[t.length-1])};return o.jsxDEV("div",{className:u?"flex flex-wrap items-center gap-1.5":"flex flex-wrap items-center gap-1.5 bg-surface-sunken border border-surface-border rounded-md px-2 py-1.5 focus-within:ring-1 focus-within:ring-accent-primary cursor-text",onClick:()=>{var e;return(e=m.current)==null?void 0:e.focus()},children:[t.map(e=>o.jsxDEV("span",{className:"inline-flex items-center gap-1 px-2 py-0.5 rounded-full bg-accent/10 text-accent text-[11px] font-medium",children:[e,o.jsxDEV("button",{type:"button",onClick:n=>{n.stopPropagation(),i(e)},className:"hover:text-status-error transition-colors",children:o.jsxDEV(d,{className:"w-2.5 h-2.5"},void 0,!1,{fileName:"/app/dashboard/src/components/common/form/TagInput.tsx",lineNumber:61,columnNumber:13},this)},void 0,!1,{fileName:"/app/dashboard/src/components/common/form/TagInput.tsx",lineNumber:56,columnNumber:11},this)]},e,!0,{fileName:"/app/dashboard/src/components/common/form/TagInput.tsx",lineNumber:51,columnNumber:9},this)),o.jsxDEV("input",{ref:m,type:"text",value:r,onChange:e=>s(e.target.value),onKeyDown:f,onBlur:()=>{r.trim()&&c(r)},placeholder:t.length===0?p:"",className:"flex-1 min-w-[80px] bg-transparent text-xs text-text-primary outline-none placeholder:text-text-tertiary"},void 0,!1,{fileName:"/app/dashboard/src/components/common/form/TagInput.tsx",lineNumber:65,columnNumber:7},this)]},void 0,!0,{fileName:"/app/dashboard/src/components/common/form/TagInput.tsx",lineNumber:42,columnNumber:5},this)}export{g as T};
|
|
2
|
+
//# sourceMappingURL=TagInput-BLtf86Ly.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TagInput-BLtf86Ly.js","sources":["../../src/components/common/form/TagInput.tsx"],"sourcesContent":["import { useState, useRef, type KeyboardEvent } from 'react';\nimport { X } from 'lucide-react';\n\ninterface TagInputProps {\n tags: string[];\n onChange: (tags: string[]) => void;\n placeholder?: string;\n /** Show as compact inline pills (no border wrapper) */\n compact?: boolean;\n}\n\nfunction sanitizeTag(raw: string): string {\n return raw.toLowerCase().replace(/[^a-z0-9-]/g, '').replace(/^-|-$/g, '');\n}\n\nexport function TagInput({ tags, onChange, placeholder = 'Add tag...', compact }: TagInputProps) {\n const [input, setInput] = useState('');\n const inputRef = useRef<HTMLInputElement>(null);\n\n const addTag = (raw: string) => {\n const tag = sanitizeTag(raw);\n if (tag && !tags.includes(tag)) {\n onChange([...tags, tag]);\n }\n setInput('');\n };\n\n const removeTag = (tag: string) => {\n onChange(tags.filter((t) => t !== tag));\n };\n\n const handleKeyDown = (e: KeyboardEvent<HTMLInputElement>) => {\n if (e.key === 'Enter' || e.key === ',') {\n e.preventDefault();\n addTag(input);\n } else if (e.key === 'Backspace' && !input && tags.length > 0) {\n removeTag(tags[tags.length - 1]);\n }\n };\n\n return (\n <div\n className={\n compact\n ? 'flex flex-wrap items-center gap-1.5'\n : 'flex flex-wrap items-center gap-1.5 bg-surface-sunken border border-surface-border rounded-md px-2 py-1.5 focus-within:ring-1 focus-within:ring-accent-primary cursor-text'\n }\n onClick={() => inputRef.current?.focus()}\n >\n {tags.map((tag) => (\n <span\n key={tag}\n className=\"inline-flex items-center gap-1 px-2 py-0.5 rounded-full bg-accent/10 text-accent text-[11px] font-medium\"\n >\n {tag}\n <button\n type=\"button\"\n onClick={(e) => { e.stopPropagation(); removeTag(tag); }}\n className=\"hover:text-status-error transition-colors\"\n >\n <X className=\"w-2.5 h-2.5\" />\n </button>\n </span>\n ))}\n <input\n ref={inputRef}\n type=\"text\"\n value={input}\n onChange={(e) => setInput(e.target.value)}\n onKeyDown={handleKeyDown}\n onBlur={() => { if (input.trim()) addTag(input); }}\n placeholder={tags.length === 0 ? placeholder : ''}\n className=\"flex-1 min-w-[80px] bg-transparent text-xs text-text-primary outline-none placeholder:text-text-tertiary\"\n />\n </div>\n );\n}\n"],"names":["sanitizeTag","raw","TagInput","tags","onChange","placeholder","compact","input","setInput","useState","inputRef","useRef","addTag","tag","removeTag","t","handleKeyDown","jsxDEV","_a","e","X"],"mappings":"sIAWA,SAASA,EAAYC,EAAqB,CACxC,OAAOA,EAAI,cAAc,QAAQ,cAAe,EAAE,EAAE,QAAQ,SAAU,EAAE,CAC1E,CAEO,SAASC,EAAS,CAAE,KAAAC,EAAM,SAAAC,EAAU,YAAAC,EAAc,aAAc,QAAAC,GAA0B,CAC/F,KAAM,CAACC,EAAOC,CAAQ,EAAIC,EAAAA,SAAS,EAAE,EAC/BC,EAAWC,EAAAA,OAAyB,IAAI,EAExCC,EAAUX,GAAgB,CAC9B,MAAMY,EAAMb,EAAYC,CAAG,EACvBY,GAAO,CAACV,EAAK,SAASU,CAAG,GAC3BT,EAAS,CAAC,GAAGD,EAAMU,CAAG,CAAC,EAEzBL,EAAS,EAAE,CACb,EAEMM,EAAaD,GAAgB,CACjCT,EAASD,EAAK,OAAQY,GAAMA,IAAMF,CAAG,CAAC,CACxC,EAEMG,EAAiB,GAAuC,CACxD,EAAE,MAAQ,SAAW,EAAE,MAAQ,KACjC,EAAE,eAAA,EACFJ,EAAOL,CAAK,GACH,EAAE,MAAQ,aAAe,CAACA,GAASJ,EAAK,OAAS,GAC1DW,EAAUX,EAAKA,EAAK,OAAS,CAAC,CAAC,CAEnC,EAEA,OACEc,EAAAA,OAAC,MAAA,CACC,UACEX,EACI,sCACA,6KAEN,QAAS,IAAA,OAAM,OAAAY,EAAAR,EAAS,UAAT,YAAAQ,EAAkB,SAEhC,SAAA,CAAAf,EAAK,IAAKU,GACTI,EAAAA,OAAC,OAAA,CAEC,UAAU,2GAET,SAAA,CAAAJ,EACDI,EAAAA,OAAC,SAAA,CACC,KAAK,SACL,QAAUE,GAAM,CAAEA,EAAE,gBAAA,EAAmBL,EAAUD,CAAG,CAAG,EACvD,UAAU,4CAEV,SAAAI,EAAAA,OAACG,EAAA,CAAE,UAAU,aAAA,EAAb,OAAA,GAAA,CAAA,SAAA,yDAAA,WAAA,GAAA,aAAA,EAAA,EAAA,IAA2B,CAAA,EAL7B,OAAA,GAAA,CAAA,SAAA,yDAAA,WAAA,GAAA,aAAA,EAAA,EAAA,IAAA,CAMA,CAAA,EAVKP,EADP,GAAA,CAAA,SAAA,yDAAA,WAAA,GAAA,aAAA,CAAA,EAAA,IAAA,CAaD,EACDI,EAAAA,OAAC,QAAA,CACC,IAAKP,EACL,KAAK,OACL,MAAOH,EACP,SAAW,GAAMC,EAAS,EAAE,OAAO,KAAK,EACxC,UAAWQ,EACX,OAAQ,IAAM,CAAMT,EAAM,QAAQK,EAAOL,CAAK,CAAG,EACjD,YAAaJ,EAAK,SAAW,EAAIE,EAAc,GAC/C,UAAU,0GAAA,EARZ,OAAA,GAAA,CAAA,SAAA,yDAAA,WAAA,GAAA,aAAA,CAAA,EAAA,IAAA,CASA,CAAA,EAhCF,OAAA,GAAA,CAAA,SAAA,yDAAA,WAAA,GAAA,aAAA,CAAA,EAAA,IAAA,CAmCJ"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{j as e,S as r,J as o}from"./index-
|
|
2
|
-
//# sourceMappingURL=TaskDetailPage-
|
|
1
|
+
import{j as e,S as r,J as o}from"./index-BwN3KP_L.js";import{d as n}from"./tasks-Bmte_hc4.js";import{S as c}from"./StatusBadge-Wi2FJZsn.js";import{P as p}from"./PriorityBadge-Bx2559OU.js";import{P as u}from"./PageHeader-DVr5Qyzm.js";import{e as b,L as N}from"./vendor-react-Co3Y8ikm.js";import"./vendor-query-DLp59M9_.js";import"./vendor-icons-D1DdudfH.js";function s({label:l,value:a}){return e.jsxDEV("div",{children:[e.jsxDEV(r,{className:"mb-1",children:l},void 0,!1,{fileName:"/app/dashboard/src/components/common/data/Field.tsx",lineNumber:12,columnNumber:7},this),e.jsxDEV("div",{className:"text-sm text-text-primary",children:a??"—"},void 0,!1,{fileName:"/app/dashboard/src/components/common/data/Field.tsx",lineNumber:13,columnNumber:7},this)]},void 0,!0,{fileName:"/app/dashboard/src/components/common/data/Field.tsx",lineNumber:11,columnNumber:5},this)}function f({items:l}){return l.length===0?null:e.jsxDEV("div",{className:"relative",children:[e.jsxDEV("div",{className:"absolute left-[7px] top-3 bottom-3 w-px bg-surface-border"},void 0,!1,{fileName:"/app/dashboard/src/components/common/display/Timeline.tsx",lineNumber:17,columnNumber:7},this),e.jsxDEV("div",{className:"space-y-0",children:l.map(a=>e.jsxDEV("div",{className:"relative flex gap-4 py-3",children:[e.jsxDEV("div",{className:"relative z-10 mt-1",children:e.jsxDEV("div",{className:`w-[15px] h-[15px] rounded-full border-2 ${a.category==="system"?"border-accent-muted bg-surface-raised":"border-accent bg-accent"}`},void 0,!1,{fileName:"/app/dashboard/src/components/common/display/Timeline.tsx",lineNumber:24,columnNumber:15},this)},void 0,!1,{fileName:"/app/dashboard/src/components/common/display/Timeline.tsx",lineNumber:23,columnNumber:13},this),e.jsxDEV("div",{className:"flex-1 min-w-0",children:[e.jsxDEV("div",{className:"flex items-baseline gap-3",children:[e.jsxDEV("p",{className:"text-sm text-text-primary",children:a.label},void 0,!1,{fileName:"/app/dashboard/src/components/common/display/Timeline.tsx",lineNumber:36,columnNumber:17},this),a.timestamp&&e.jsxDEV("time",{className:"text-[10px] text-text-tertiary font-mono shrink-0",children:new Date(a.timestamp).toLocaleTimeString()},void 0,!1,{fileName:"/app/dashboard/src/components/common/display/Timeline.tsx",lineNumber:38,columnNumber:19},this)]},void 0,!0,{fileName:"/app/dashboard/src/components/common/display/Timeline.tsx",lineNumber:35,columnNumber:15},this),a.detail&&e.jsxDEV("div",{className:"mt-1",children:a.detail},void 0,!1,{fileName:"/app/dashboard/src/components/common/display/Timeline.tsx",lineNumber:43,columnNumber:31},this)]},void 0,!0,{fileName:"/app/dashboard/src/components/common/display/Timeline.tsx",lineNumber:34,columnNumber:13},this)]},a.id,!0,{fileName:"/app/dashboard/src/components/common/display/Timeline.tsx",lineNumber:21,columnNumber:11},this))},void 0,!1,{fileName:"/app/dashboard/src/components/common/display/Timeline.tsx",lineNumber:19,columnNumber:7},this)]},void 0,!0,{fileName:"/app/dashboard/src/components/common/display/Timeline.tsx",lineNumber:15,columnNumber:5},this)}function E(){const{id:l}=b(),{data:a,isLoading:m}=n(l);if(m)return e.jsxDEV("div",{className:"animate-pulse space-y-4",children:[e.jsxDEV("div",{className:"h-8 bg-surface-sunken rounded w-48"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/TaskDetailPage.tsx",lineNumber:18,columnNumber:9},this),e.jsxDEV("div",{className:"h-40 bg-surface-sunken rounded"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/TaskDetailPage.tsx",lineNumber:19,columnNumber:9},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/TaskDetailPage.tsx",lineNumber:17,columnNumber:7},this);if(!a)return e.jsxDEV("p",{className:"text-sm text-text-secondary",children:"Task not found."},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/TaskDetailPage.tsx",lineNumber:25,columnNumber:12},this);const t=(a.milestones??[]).map((i,d)=>({id:d,label:i.name,timestamp:i.created_at,detail:e.jsxDEV("span",{className:"text-xs text-text-secondary font-mono",children:typeof i.value=="object"?JSON.stringify(i.value):String(i.value)},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/TaskDetailPage.tsx",lineNumber:33,columnNumber:7},this),category:"user"}));return e.jsxDEV("div",{children:[e.jsxDEV(u,{title:"Task Detail"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/TaskDetailPage.tsx",lineNumber:42,columnNumber:7},this),e.jsxDEV("div",{className:"grid grid-cols-1 lg:grid-cols-3 gap-12",children:[e.jsxDEV("div",{className:"lg:col-span-2 space-y-10",children:[e.jsxDEV("div",{className:"grid grid-cols-2 sm:grid-cols-3 gap-6",children:[e.jsxDEV(s,{label:"Status",value:e.jsxDEV(c,{status:a.status},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/TaskDetailPage.tsx",lineNumber:48,columnNumber:42},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/TaskDetailPage.tsx",lineNumber:48,columnNumber:13},this),e.jsxDEV(s,{label:"Priority",value:e.jsxDEV(p,{priority:a.priority},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/TaskDetailPage.tsx",lineNumber:49,columnNumber:44},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/TaskDetailPage.tsx",lineNumber:49,columnNumber:13},this),e.jsxDEV(s,{label:"Workflow Type",value:e.jsxDEV("span",{className:"font-mono text-xs",children:a.workflow_type},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/TaskDetailPage.tsx",lineNumber:50,columnNumber:49},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/TaskDetailPage.tsx",lineNumber:50,columnNumber:13},this),e.jsxDEV(s,{label:"LT Type",value:e.jsxDEV("span",{className:"font-mono text-xs",children:a.lt_type},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/TaskDetailPage.tsx",lineNumber:51,columnNumber:43},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/TaskDetailPage.tsx",lineNumber:51,columnNumber:13},this),e.jsxDEV(s,{label:"Task Queue",value:e.jsxDEV("span",{className:"font-mono text-xs",children:a.task_queue},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/TaskDetailPage.tsx",lineNumber:52,columnNumber:46},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/TaskDetailPage.tsx",lineNumber:52,columnNumber:13},this),e.jsxDEV(s,{label:"Workflow ID",value:e.jsxDEV("span",{className:"font-mono text-xs break-all",children:a.workflow_id},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/TaskDetailPage.tsx",lineNumber:53,columnNumber:47},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/TaskDetailPage.tsx",lineNumber:53,columnNumber:13},this),e.jsxDEV(s,{label:"Started",value:a.started_at?new Date(a.started_at).toLocaleString():"—"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/TaskDetailPage.tsx",lineNumber:54,columnNumber:13},this),e.jsxDEV(s,{label:"Completed",value:a.completed_at?new Date(a.completed_at).toLocaleString():"—"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/TaskDetailPage.tsx",lineNumber:55,columnNumber:13},this),e.jsxDEV(s,{label:"Signal ID",value:e.jsxDEV("span",{className:"font-mono text-xs break-all",children:a.signal_id},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/TaskDetailPage.tsx",lineNumber:56,columnNumber:45},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/TaskDetailPage.tsx",lineNumber:56,columnNumber:13},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/TaskDetailPage.tsx",lineNumber:47,columnNumber:11},this),a.error&&e.jsxDEV("div",{children:[e.jsxDEV(r,{className:"mb-2 text-status-error",children:"Error"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/TaskDetailPage.tsx",lineNumber:61,columnNumber:15},this),e.jsxDEV("p",{className:"text-sm text-text-primary font-mono",children:a.error},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/TaskDetailPage.tsx",lineNumber:62,columnNumber:15},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/TaskDetailPage.tsx",lineNumber:60,columnNumber:13},this),t.length>0&&e.jsxDEV("div",{children:[e.jsxDEV(r,{className:"mb-4",children:"Milestones"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/TaskDetailPage.tsx",lineNumber:68,columnNumber:15},this),e.jsxDEV(f,{items:t},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/TaskDetailPage.tsx",lineNumber:69,columnNumber:15},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/TaskDetailPage.tsx",lineNumber:67,columnNumber:13},this),e.jsxDEV(N,{to:`/workflows/executions/${a.workflow_id}`,className:"btn-secondary inline-block text-xs",children:"View Workflow Execution"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/TaskDetailPage.tsx",lineNumber:73,columnNumber:11},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/TaskDetailPage.tsx",lineNumber:46,columnNumber:9},this),e.jsxDEV("div",{className:"space-y-8",children:[e.jsxDEV(o,{data:a.envelope,label:"Envelope"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/TaskDetailPage.tsx",lineNumber:83,columnNumber:11},this),a.metadata&&e.jsxDEV(o,{data:a.metadata,label:"Metadata"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/TaskDetailPage.tsx",lineNumber:84,columnNumber:29},this),a.data&&e.jsxDEV(o,{data:a.data,label:"Result Data"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/TaskDetailPage.tsx",lineNumber:85,columnNumber:25},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/TaskDetailPage.tsx",lineNumber:82,columnNumber:9},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/TaskDetailPage.tsx",lineNumber:44,columnNumber:7},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/TaskDetailPage.tsx",lineNumber:41,columnNumber:5},this)}export{E as TaskDetailPage};
|
|
2
|
+
//# sourceMappingURL=TaskDetailPage-BXJFX74D.js.map
|
package/dashboard/dist/assets/{TaskDetailPage-C9pDGdD2.js.map → TaskDetailPage-BXJFX74D.js.map}
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TaskDetailPage-C9pDGdD2.js","sources":["../../src/components/common/data/Field.tsx","../../src/components/common/display/Timeline.tsx","../../src/pages/workflows/TaskDetailPage.tsx"],"sourcesContent":["import type { ReactNode } from 'react';\nimport { SectionLabel } from '../layout/SectionLabel';\n\ninterface FieldProps {\n label: string;\n value: ReactNode;\n}\n\nexport function Field({ label, value }: FieldProps) {\n return (\n <div>\n <SectionLabel className=\"mb-1\">{label}</SectionLabel>\n <div className=\"text-sm text-text-primary\">{value ?? '—'}</div>\n </div>\n );\n}\n","import type { ReactNode } from 'react';\n\nexport interface TimelineItem {\n id: string | number;\n label: string;\n timestamp?: string;\n detail?: ReactNode;\n category?: 'system' | 'user';\n}\n\nexport function Timeline({ items }: { items: TimelineItem[] }) {\n if (items.length === 0) return null;\n\n return (\n <div className=\"relative\">\n {/* Vertical line */}\n <div className=\"absolute left-[7px] top-3 bottom-3 w-px bg-surface-border\" />\n\n <div className=\"space-y-0\">\n {items.map((item) => (\n <div key={item.id} className=\"relative flex gap-4 py-3\">\n {/* Dot */}\n <div className=\"relative z-10 mt-1\">\n <div\n className={`w-[15px] h-[15px] rounded-full border-2 ${\n item.category === 'system'\n ? 'border-accent-muted bg-surface-raised'\n : 'border-accent bg-accent'\n }`}\n />\n </div>\n\n {/* Content */}\n <div className=\"flex-1 min-w-0\">\n <div className=\"flex items-baseline gap-3\">\n <p className=\"text-sm text-text-primary\">{item.label}</p>\n {item.timestamp && (\n <time className=\"text-[10px] text-text-tertiary font-mono shrink-0\">\n {new Date(item.timestamp).toLocaleTimeString()}\n </time>\n )}\n </div>\n {item.detail && <div className=\"mt-1\">{item.detail}</div>}\n </div>\n </div>\n ))}\n </div>\n </div>\n );\n}\n","import { useParams, Link } from 'react-router-dom';\nimport { useTask } from '../../api/tasks';\nimport { StatusBadge } from '../../components/common/display/StatusBadge';\nimport { PriorityBadge } from '../../components/common/display/PriorityBadge';\nimport { Field } from '../../components/common/data/Field';\nimport { JsonViewer } from '../../components/common/data/JsonViewer';\nimport { PageHeader } from '../../components/common/layout/PageHeader';\nimport { SectionLabel } from '../../components/common/layout/SectionLabel';\nimport { Timeline, type TimelineItem } from '../../components/common/display/Timeline';\n\nexport function TaskDetailPage() {\n const { id } = useParams<{ id: string }>();\n const { data: task, isLoading } = useTask(id!);\n\n if (isLoading) {\n return (\n <div className=\"animate-pulse space-y-4\">\n <div className=\"h-8 bg-surface-sunken rounded w-48\" />\n <div className=\"h-40 bg-surface-sunken rounded\" />\n </div>\n );\n }\n\n if (!task) {\n return <p className=\"text-sm text-text-secondary\">Task not found.</p>;\n }\n\n const milestoneItems: TimelineItem[] = (task.milestones ?? []).map((m, i) => ({\n id: i,\n label: m.name,\n timestamp: m.created_at,\n detail: (\n <span className=\"text-xs text-text-secondary font-mono\">\n {typeof m.value === 'object' ? JSON.stringify(m.value) : String(m.value)}\n </span>\n ),\n category: 'user' as const,\n }));\n\n return (\n <div>\n <PageHeader title=\"Task Detail\" />\n\n <div className=\"grid grid-cols-1 lg:grid-cols-3 gap-12\">\n {/* Left column — metadata */}\n <div className=\"lg:col-span-2 space-y-10\">\n <div className=\"grid grid-cols-2 sm:grid-cols-3 gap-6\">\n <Field label=\"Status\" value={<StatusBadge status={task.status} />} />\n <Field label=\"Priority\" value={<PriorityBadge priority={task.priority} />} />\n <Field label=\"Workflow Type\" value={<span className=\"font-mono text-xs\">{task.workflow_type}</span>} />\n <Field label=\"LT Type\" value={<span className=\"font-mono text-xs\">{task.lt_type}</span>} />\n <Field label=\"Task Queue\" value={<span className=\"font-mono text-xs\">{task.task_queue}</span>} />\n <Field label=\"Workflow ID\" value={<span className=\"font-mono text-xs break-all\">{task.workflow_id}</span>} />\n <Field label=\"Started\" value={task.started_at ? new Date(task.started_at).toLocaleString() : '—'} />\n <Field label=\"Completed\" value={task.completed_at ? new Date(task.completed_at).toLocaleString() : '—'} />\n <Field label=\"Signal ID\" value={<span className=\"font-mono text-xs break-all\">{task.signal_id}</span>} />\n </div>\n\n {task.error && (\n <div>\n <SectionLabel className=\"mb-2 text-status-error\">Error</SectionLabel>\n <p className=\"text-sm text-text-primary font-mono\">{task.error}</p>\n </div>\n )}\n\n {milestoneItems.length > 0 && (\n <div>\n <SectionLabel className=\"mb-4\">Milestones</SectionLabel>\n <Timeline items={milestoneItems} />\n </div>\n )}\n\n <Link\n to={`/workflows/executions/${task.workflow_id}`}\n className=\"btn-secondary inline-block text-xs\"\n >\n View Workflow Execution\n </Link>\n </div>\n\n {/* Right column — payloads */}\n <div className=\"space-y-8\">\n <JsonViewer data={task.envelope} label=\"Envelope\" />\n {task.metadata && <JsonViewer data={task.metadata} label=\"Metadata\" />}\n {task.data && <JsonViewer data={task.data} label=\"Result Data\" />}\n </div>\n </div>\n </div>\n );\n}\n"],"names":["Field","label","value","jsxDEV","SectionLabel","Timeline","items","item","TaskDetailPage","id","useParams","task","isLoading","useTask","milestoneItems","m","i","PageHeader","StatusBadge","PriorityBadge","Link","JsonViewer"],"mappings":"qWAQO,SAASA,EAAM,CAAE,MAAAC,EAAO,MAAAC,GAAqB,CAClD,gBACG,MAAA,CACC,SAAA,CAAAC,SAACC,EAAA,CAAa,UAAU,OAAQ,SAAAH,CAAA,EAAhC,OAAA,GAAA,CAAA,SAAA,sDAAA,WAAA,GAAA,aAAA,CAAA,EAAA,IAAsC,EACtCE,SAAC,MAAA,CAAI,UAAU,4BAA6B,YAAS,GAAA,EAArD,OAAA,GAAA,CAAA,SAAA,sDAAA,WAAA,GAAA,aAAA,CAAA,EAAA,IAAyD,CAAA,CAAA,EAF3D,OAAA,GAAA,CAAA,SAAA,sDAAA,WAAA,GAAA,aAAA,CAAA,EAAA,IAGA,CAEJ,CCLO,SAASE,EAAS,CAAE,MAAAC,GAAoC,CAC7D,OAAIA,EAAM,SAAW,EAAU,KAG7BH,EAAAA,OAAC,MAAA,CAAI,UAAU,WAEb,SAAA,CAAAA,EAAAA,OAAC,MAAA,CAAI,UAAU,2DAAA,EAAf,OAAA,GAAA,CAAA,SAAA,4DAAA,WAAA,GAAA,aAAA,CAAA,EAAA,IAA2E,EAE3EA,EAAAA,OAAC,MAAA,CAAI,UAAU,YACZ,SAAAG,EAAM,IAAKC,GACVJ,EAAAA,OAAC,MAAA,CAAkB,UAAU,2BAE3B,SAAA,CAAAA,EAAAA,OAAC,MAAA,CAAI,UAAU,qBACb,SAAAA,EAAAA,OAAC,MAAA,CACC,UAAW,2CACTI,EAAK,WAAa,SACd,wCACA,yBACN,EAAA,EALF,OAAA,GAAA,CAAA,SAAA,4DAAA,WAAA,GAAA,aAAA,EAAA,EAAA,IAAA,CAMA,EAPF,OAAA,GAAA,CAAA,SAAA,4DAAA,WAAA,GAAA,aAAA,EAAA,EAAA,IAQA,EAGAJ,EAAAA,OAAC,MAAA,CAAI,UAAU,iBACb,SAAA,CAAAA,EAAAA,OAAC,MAAA,CAAI,UAAU,4BACb,SAAA,CAAAA,SAAC,IAAA,CAAE,UAAU,4BAA6B,SAAAI,EAAK,KAAA,EAA/C,OAAA,GAAA,CAAA,SAAA,4DAAA,WAAA,GAAA,aAAA,EAAA,EAAA,IAAqD,EACpDA,EAAK,WACJJ,EAAAA,OAAC,OAAA,CAAK,UAAU,oDACb,SAAA,IAAI,KAAKI,EAAK,SAAS,EAAE,mBAAA,CAAmB,EAD/C,OAAA,GAAA,CAAA,SAAA,4DAAA,WAAA,GAAA,aAAA,EAAA,EAAA,IAEA,CAAA,CAAA,EALJ,OAAA,GAAA,CAAA,SAAA,4DAAA,WAAA,GAAA,aAAA,EAAA,EAAA,IAOA,EACCA,EAAK,QAAUJ,SAAC,OAAI,UAAU,OAAQ,WAAK,QAA5B,OAAA,GAAA,CAAA,SAAA,4DAAA,WAAA,GAAA,aAAA,EAAA,EAAA,IAAmC,CAAA,CAAA,EATrD,OAAA,GAAA,CAAA,SAAA,4DAAA,WAAA,GAAA,aAAA,EAAA,EAAA,IAUA,CAAA,GAvBQI,EAAK,GAAf,GAAA,CAAA,SAAA,4DAAA,WAAA,GAAA,aAAA,EAAA,EAAA,IAwBA,CACD,GA3BH,OAAA,GAAA,CAAA,SAAA,4DAAA,WAAA,GAAA,aAAA,CAAA,EAAA,IA4BA,CAAA,CAAA,EAhCF,OAAA,GAAA,CAAA,SAAA,4DAAA,WAAA,GAAA,aAAA,CAAA,EAAA,IAiCA,CAEJ,CCvCO,SAASC,GAAiB,CAC/B,KAAM,CAAE,GAAAC,CAAA,EAAOC,EAAA,EACT,CAAE,KAAMC,EAAM,UAAAC,CAAA,EAAcC,EAAQJ,CAAG,EAE7C,GAAIG,EACF,OACET,EAAAA,OAAC,MAAA,CAAI,UAAU,0BACb,SAAA,CAAAA,EAAAA,OAAC,MAAA,CAAI,UAAU,oCAAA,EAAf,OAAA,GAAA,CAAA,SAAA,wDAAA,WAAA,GAAA,aAAA,CAAA,EAAA,IAAoD,EACpDA,EAAAA,OAAC,MAAA,CAAI,UAAU,gCAAA,EAAf,OAAA,GAAA,CAAA,SAAA,wDAAA,WAAA,GAAA,aAAA,CAAA,EAAA,IAAgD,CAAA,CAAA,EAFlD,OAAA,GAAA,CAAA,SAAA,wDAAA,WAAA,GAAA,aAAA,CAAA,EAAA,IAGA,EAIJ,GAAI,CAACQ,EACH,OAAOR,EAAAA,OAAC,IAAA,CAAE,UAAU,8BAA8B,SAAA,iBAAA,EAA3C,OAAA,GAAA,CAAA,SAAA,wDAAA,WAAA,GAAA,aAAA,EAAA,EAAA,IAA0D,EAGnE,MAAMW,GAAkCH,EAAK,YAAc,CAAA,GAAI,IAAI,CAACI,EAAGC,KAAO,CAC5E,GAAIA,EACJ,MAAOD,EAAE,KACT,UAAWA,EAAE,WACb,OACEZ,EAAAA,OAAC,OAAA,CAAK,UAAU,wCACb,gBAAOY,EAAE,OAAU,SAAW,KAAK,UAAUA,EAAE,KAAK,EAAI,OAAOA,EAAE,KAAK,CAAA,EADzE,OAAA,GAAA,CAAA,SAAA,wDAAA,WAAA,GAAA,aAAA,CAAA,EAAA,IAEA,EAEF,SAAU,MAAA,EACV,EAEF,gBACG,MAAA,CACC,SAAA,CAAAZ,EAAAA,OAACc,EAAA,CAAW,MAAM,aAAA,EAAlB,OAAA,GAAA,CAAA,SAAA,wDAAA,WAAA,GAAA,aAAA,CAAA,EAAA,IAAgC,EAEhCd,EAAAA,OAAC,MAAA,CAAI,UAAU,yCAEb,SAAA,CAAAA,EAAAA,OAAC,MAAA,CAAI,UAAU,2BACb,SAAA,CAAAA,EAAAA,OAAC,MAAA,CAAI,UAAU,wCACb,SAAA,CAAAA,EAAAA,OAACH,EAAA,CAAM,MAAM,SAAS,eAAQkB,EAAA,CAAY,OAAQP,EAAK,MAAA,EAA1B,OAAA,GAAA,CAAA,SAAA,wDAAA,WAAA,GAAA,aAAA,EAAA,EAAA,IAAkC,CAAA,EAA/D,OAAA,GAAA,CAAA,SAAA,wDAAA,WAAA,GAAA,aAAA,EAAA,EAAA,IAAmE,EACnER,EAAAA,OAACH,GAAM,MAAM,WAAW,MAAOG,EAAAA,OAACgB,EAAA,CAAc,SAAUR,EAAK,QAAA,EAA9B,OAAA,GAAA,CAAA,SAAA,wDAAA,WAAA,GAAA,aAAA,EAAA,EAAA,IAAwC,CAAA,EAAvE,OAAA,GAAA,CAAA,SAAA,wDAAA,WAAA,GAAA,aAAA,EAAA,EAAA,IAA2E,EAC3ER,EAAAA,OAACH,EAAA,CAAM,MAAM,gBAAgB,eAAQ,OAAA,CAAK,UAAU,oBAAqB,SAAAW,EAAK,aAAA,EAA1C,OAAA,GAAA,CAAA,SAAA,wDAAA,WAAA,GAAA,aAAA,EAAA,EAAA,IAAwD,CAAA,EAA5F,OAAA,GAAA,CAAA,SAAA,wDAAA,WAAA,GAAA,aAAA,EAAA,EAAA,IAAqG,EACrGR,EAAAA,OAACH,EAAA,CAAM,MAAM,UAAU,eAAQ,OAAA,CAAK,UAAU,oBAAqB,SAAAW,EAAK,OAAA,EAA1C,OAAA,GAAA,CAAA,SAAA,wDAAA,WAAA,GAAA,aAAA,EAAA,EAAA,IAAkD,CAAA,EAAhF,OAAA,GAAA,CAAA,SAAA,wDAAA,WAAA,GAAA,aAAA,EAAA,EAAA,IAAyF,EACzFR,EAAAA,OAACH,EAAA,CAAM,MAAM,aAAa,eAAQ,OAAA,CAAK,UAAU,oBAAqB,SAAAW,EAAK,UAAA,EAA1C,OAAA,GAAA,CAAA,SAAA,wDAAA,WAAA,GAAA,aAAA,EAAA,EAAA,IAAqD,CAAA,EAAtF,OAAA,GAAA,CAAA,SAAA,wDAAA,WAAA,GAAA,aAAA,EAAA,EAAA,IAA+F,EAC/FR,EAAAA,OAACH,EAAA,CAAM,MAAM,cAAc,eAAQ,OAAA,CAAK,UAAU,8BAA+B,SAAAW,EAAK,WAAA,EAApD,OAAA,GAAA,CAAA,SAAA,wDAAA,WAAA,GAAA,aAAA,EAAA,EAAA,IAAgE,CAAA,EAAlG,OAAA,GAAA,CAAA,SAAA,wDAAA,WAAA,GAAA,aAAA,EAAA,EAAA,IAA2G,EAC3GR,EAAAA,OAACH,EAAA,CAAM,MAAM,UAAU,MAAOW,EAAK,WAAa,IAAI,KAAKA,EAAK,UAAU,EAAE,eAAA,EAAmB,GAAA,EAA7F,OAAA,GAAA,CAAA,SAAA,wDAAA,WAAA,GAAA,aAAA,EAAA,EAAA,IAAkG,EAClGR,EAAAA,OAACH,EAAA,CAAM,MAAM,YAAY,MAAOW,EAAK,aAAe,IAAI,KAAKA,EAAK,YAAY,EAAE,eAAA,EAAmB,GAAA,EAAnG,OAAA,GAAA,CAAA,SAAA,wDAAA,WAAA,GAAA,aAAA,EAAA,EAAA,IAAwG,EACxGR,EAAAA,OAACH,EAAA,CAAM,MAAM,YAAY,eAAQ,OAAA,CAAK,UAAU,8BAA+B,SAAAW,EAAK,SAAA,EAApD,OAAA,GAAA,CAAA,SAAA,wDAAA,WAAA,GAAA,aAAA,EAAA,EAAA,IAA8D,CAAA,EAA9F,OAAA,GAAA,CAAA,SAAA,wDAAA,WAAA,GAAA,aAAA,EAAA,EAAA,IAAuG,CAAA,CAAA,EATzG,OAAA,GAAA,CAAA,SAAA,wDAAA,WAAA,GAAA,aAAA,EAAA,EAAA,IAUA,EAECA,EAAK,OACJR,EAAAA,OAAC,MAAA,CACC,SAAA,CAAAA,SAACC,EAAA,CAAa,UAAU,yBAAyB,SAAA,OAAA,EAAjD,OAAA,GAAA,CAAA,SAAA,wDAAA,WAAA,GAAA,aAAA,EAAA,EAAA,IAAsD,EACtDD,SAAC,IAAA,CAAE,UAAU,sCAAuC,WAAK,KAAA,EAAzD,OAAA,GAAA,CAAA,SAAA,wDAAA,WAAA,GAAA,aAAA,EAAA,EAAA,IAA+D,CAAA,CAAA,EAFjE,OAAA,GAAA,CAAA,SAAA,wDAAA,WAAA,GAAA,aAAA,EAAA,EAAA,IAGA,EAGDW,EAAe,OAAS,GACvBX,EAAAA,OAAC,MAAA,CACC,SAAA,CAAAA,SAACC,EAAA,CAAa,UAAU,OAAO,SAAA,YAAA,EAA/B,OAAA,GAAA,CAAA,SAAA,wDAAA,WAAA,GAAA,aAAA,EAAA,EAAA,IAAyC,EACzCD,EAAAA,OAACE,EAAA,CAAS,MAAOS,CAAA,EAAjB,OAAA,GAAA,CAAA,SAAA,wDAAA,WAAA,GAAA,aAAA,EAAA,EAAA,IAAiC,CAAA,CAAA,EAFnC,OAAA,GAAA,CAAA,SAAA,wDAAA,WAAA,GAAA,aAAA,EAAA,EAAA,IAGA,EAGFX,EAAAA,OAACiB,EAAA,CACC,GAAI,yBAAyBT,EAAK,WAAW,GAC7C,UAAU,qCACX,SAAA,yBAAA,EAHD,OAAA,GAAA,CAAA,SAAA,wDAAA,WAAA,GAAA,aAAA,EAAA,EAAA,IAAA,CAKA,CAAA,EAhCF,OAAA,GAAA,CAAA,SAAA,wDAAA,WAAA,GAAA,aAAA,CAAA,EAAA,IAiCA,EAGAR,EAAAA,OAAC,MAAA,CAAI,UAAU,YACb,SAAA,CAAAA,SAACkB,EAAA,CAAW,KAAMV,EAAK,SAAU,MAAM,UAAA,EAAvC,OAAA,GAAA,CAAA,SAAA,wDAAA,WAAA,GAAA,aAAA,EAAA,EAAA,IAAkD,EACjDA,EAAK,UAAYR,SAACkB,EAAA,CAAW,KAAMV,EAAK,SAAU,MAAM,YAAvC,OAAA,GAAA,CAAA,SAAA,wDAAA,WAAA,GAAA,aAAA,EAAA,EAAA,IAAkD,EACnEA,EAAK,MAAQR,SAACkB,EAAA,CAAW,KAAMV,EAAK,KAAM,MAAM,eAAnC,OAAA,GAAA,CAAA,SAAA,wDAAA,WAAA,GAAA,aAAA,EAAA,EAAA,IAAiD,CAAA,CAAA,EAHjE,OAAA,GAAA,CAAA,SAAA,wDAAA,WAAA,GAAA,aAAA,CAAA,EAAA,IAIA,CAAA,CAAA,EA1CF,OAAA,GAAA,CAAA,SAAA,wDAAA,WAAA,GAAA,aAAA,CAAA,EAAA,IA2CA,CAAA,CAAA,EA9CF,OAAA,GAAA,CAAA,SAAA,wDAAA,WAAA,GAAA,aAAA,CAAA,EAAA,IA+CA,CAEJ"}
|
|
1
|
+
{"version":3,"file":"TaskDetailPage-BXJFX74D.js","sources":["../../src/components/common/data/Field.tsx","../../src/components/common/display/Timeline.tsx","../../src/pages/workflows/TaskDetailPage.tsx"],"sourcesContent":["import type { ReactNode } from 'react';\nimport { SectionLabel } from '../layout/SectionLabel';\n\ninterface FieldProps {\n label: string;\n value: ReactNode;\n}\n\nexport function Field({ label, value }: FieldProps) {\n return (\n <div>\n <SectionLabel className=\"mb-1\">{label}</SectionLabel>\n <div className=\"text-sm text-text-primary\">{value ?? '—'}</div>\n </div>\n );\n}\n","import type { ReactNode } from 'react';\n\nexport interface TimelineItem {\n id: string | number;\n label: string;\n timestamp?: string;\n detail?: ReactNode;\n category?: 'system' | 'user';\n}\n\nexport function Timeline({ items }: { items: TimelineItem[] }) {\n if (items.length === 0) return null;\n\n return (\n <div className=\"relative\">\n {/* Vertical line */}\n <div className=\"absolute left-[7px] top-3 bottom-3 w-px bg-surface-border\" />\n\n <div className=\"space-y-0\">\n {items.map((item) => (\n <div key={item.id} className=\"relative flex gap-4 py-3\">\n {/* Dot */}\n <div className=\"relative z-10 mt-1\">\n <div\n className={`w-[15px] h-[15px] rounded-full border-2 ${\n item.category === 'system'\n ? 'border-accent-muted bg-surface-raised'\n : 'border-accent bg-accent'\n }`}\n />\n </div>\n\n {/* Content */}\n <div className=\"flex-1 min-w-0\">\n <div className=\"flex items-baseline gap-3\">\n <p className=\"text-sm text-text-primary\">{item.label}</p>\n {item.timestamp && (\n <time className=\"text-[10px] text-text-tertiary font-mono shrink-0\">\n {new Date(item.timestamp).toLocaleTimeString()}\n </time>\n )}\n </div>\n {item.detail && <div className=\"mt-1\">{item.detail}</div>}\n </div>\n </div>\n ))}\n </div>\n </div>\n );\n}\n","import { useParams, Link } from 'react-router-dom';\nimport { useTask } from '../../api/tasks';\nimport { StatusBadge } from '../../components/common/display/StatusBadge';\nimport { PriorityBadge } from '../../components/common/display/PriorityBadge';\nimport { Field } from '../../components/common/data/Field';\nimport { JsonViewer } from '../../components/common/data/JsonViewer';\nimport { PageHeader } from '../../components/common/layout/PageHeader';\nimport { SectionLabel } from '../../components/common/layout/SectionLabel';\nimport { Timeline, type TimelineItem } from '../../components/common/display/Timeline';\n\nexport function TaskDetailPage() {\n const { id } = useParams<{ id: string }>();\n const { data: task, isLoading } = useTask(id!);\n\n if (isLoading) {\n return (\n <div className=\"animate-pulse space-y-4\">\n <div className=\"h-8 bg-surface-sunken rounded w-48\" />\n <div className=\"h-40 bg-surface-sunken rounded\" />\n </div>\n );\n }\n\n if (!task) {\n return <p className=\"text-sm text-text-secondary\">Task not found.</p>;\n }\n\n const milestoneItems: TimelineItem[] = (task.milestones ?? []).map((m, i) => ({\n id: i,\n label: m.name,\n timestamp: m.created_at,\n detail: (\n <span className=\"text-xs text-text-secondary font-mono\">\n {typeof m.value === 'object' ? JSON.stringify(m.value) : String(m.value)}\n </span>\n ),\n category: 'user' as const,\n }));\n\n return (\n <div>\n <PageHeader title=\"Task Detail\" />\n\n <div className=\"grid grid-cols-1 lg:grid-cols-3 gap-12\">\n {/* Left column — metadata */}\n <div className=\"lg:col-span-2 space-y-10\">\n <div className=\"grid grid-cols-2 sm:grid-cols-3 gap-6\">\n <Field label=\"Status\" value={<StatusBadge status={task.status} />} />\n <Field label=\"Priority\" value={<PriorityBadge priority={task.priority} />} />\n <Field label=\"Workflow Type\" value={<span className=\"font-mono text-xs\">{task.workflow_type}</span>} />\n <Field label=\"LT Type\" value={<span className=\"font-mono text-xs\">{task.lt_type}</span>} />\n <Field label=\"Task Queue\" value={<span className=\"font-mono text-xs\">{task.task_queue}</span>} />\n <Field label=\"Workflow ID\" value={<span className=\"font-mono text-xs break-all\">{task.workflow_id}</span>} />\n <Field label=\"Started\" value={task.started_at ? new Date(task.started_at).toLocaleString() : '—'} />\n <Field label=\"Completed\" value={task.completed_at ? new Date(task.completed_at).toLocaleString() : '—'} />\n <Field label=\"Signal ID\" value={<span className=\"font-mono text-xs break-all\">{task.signal_id}</span>} />\n </div>\n\n {task.error && (\n <div>\n <SectionLabel className=\"mb-2 text-status-error\">Error</SectionLabel>\n <p className=\"text-sm text-text-primary font-mono\">{task.error}</p>\n </div>\n )}\n\n {milestoneItems.length > 0 && (\n <div>\n <SectionLabel className=\"mb-4\">Milestones</SectionLabel>\n <Timeline items={milestoneItems} />\n </div>\n )}\n\n <Link\n to={`/workflows/executions/${task.workflow_id}`}\n className=\"btn-secondary inline-block text-xs\"\n >\n View Workflow Execution\n </Link>\n </div>\n\n {/* Right column — payloads */}\n <div className=\"space-y-8\">\n <JsonViewer data={task.envelope} label=\"Envelope\" />\n {task.metadata && <JsonViewer data={task.metadata} label=\"Metadata\" />}\n {task.data && <JsonViewer data={task.data} label=\"Result Data\" />}\n </div>\n </div>\n </div>\n );\n}\n"],"names":["Field","label","value","jsxDEV","SectionLabel","Timeline","items","item","TaskDetailPage","id","useParams","task","isLoading","useTask","milestoneItems","m","i","PageHeader","StatusBadge","PriorityBadge","Link","JsonViewer"],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{j as s}from"./index-
|
|
2
|
-
//# sourceMappingURL=TaskQueuePill-
|
|
1
|
+
import{j as s}from"./index-BwN3KP_L.js";import{R as n}from"./vendor-icons-D1DdudfH.js";function l({queue:t,size:e="sm"}){const a=e==="md"?"px-2.5 py-0.5 text-[11px] gap-1.5":"px-2 py-0.5 text-[10px] gap-1",o=e==="md"?"w-3 h-3":"w-2.5 h-2.5";return s.jsxDEV("span",{className:`inline-flex items-center ${a} font-mono bg-accent/[0.06] text-text-secondary rounded-lg`,children:[s.jsxDEV(n,{className:`${o} shrink-0 text-accent/75`},void 0,!1,{fileName:"/app/dashboard/src/components/common/display/TaskQueuePill.tsx",lineNumber:16,columnNumber:7},this),t]},void 0,!0,{fileName:"/app/dashboard/src/components/common/display/TaskQueuePill.tsx",lineNumber:15,columnNumber:5},this)}export{l as T};
|
|
2
|
+
//# sourceMappingURL=TaskQueuePill-CWYj3xKe.js.map
|