@hotmeshio/long-tail 0.1.14 → 0.1.16
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 +15 -0
- package/build/api/escalations/bulk.d.ts +78 -0
- package/build/api/escalations/bulk.js +279 -0
- package/build/api/escalations/claim.d.ts +30 -0
- package/build/api/escalations/claim.js +121 -0
- package/build/api/escalations/create.d.ts +29 -0
- package/build/api/escalations/create.js +101 -0
- package/build/api/escalations/helpers.d.ts +10 -0
- package/build/api/escalations/helpers.js +80 -0
- package/build/api/escalations/index.d.ts +6 -0
- package/build/api/escalations/index.js +26 -0
- package/build/api/escalations/list.d.ts +75 -0
- package/build/api/escalations/list.js +170 -0
- package/build/api/escalations/resolve.d.ts +18 -0
- package/build/api/escalations/resolve.js +243 -0
- package/build/api/escalations/single.d.ts +37 -0
- package/build/api/escalations/single.js +123 -0
- package/build/api/files.d.ts +3 -0
- package/build/api/files.js +18 -1
- package/build/api/knowledge.d.ts +36 -0
- package/build/api/knowledge.js +112 -0
- package/build/api/mcp/index.d.ts +2 -0
- package/build/api/mcp/index.js +16 -0
- package/build/api/{mcp.d.ts → mcp/servers.d.ts} +1 -33
- package/build/api/{mcp.js → mcp/servers.js} +4 -65
- package/build/api/mcp/tools.d.ts +33 -0
- package/build/api/mcp/tools.js +64 -0
- package/build/api/settings.js +6 -1
- package/build/api/workflows/config.d.ts +64 -0
- package/build/api/workflows/config.js +142 -0
- package/build/api/workflows/discovery.d.ts +29 -0
- package/build/api/workflows/discovery.js +153 -0
- package/build/api/workflows/index.d.ts +3 -0
- package/build/api/workflows/index.js +18 -0
- package/build/api/workflows/invocation.d.ts +67 -0
- package/build/api/workflows/invocation.js +188 -0
- package/build/api/yaml-workflows/cron.d.ts +39 -0
- package/build/api/yaml-workflows/cron.js +127 -0
- package/build/api/{yaml-workflows.d.ts → yaml-workflows/crud.d.ts} +22 -146
- package/build/api/{yaml-workflows.js → yaml-workflows/crud.js} +99 -380
- package/build/api/yaml-workflows/deploy.d.ts +71 -0
- package/build/api/yaml-workflows/deploy.js +223 -0
- package/build/api/yaml-workflows/helpers.d.ts +2 -0
- package/build/api/yaml-workflows/helpers.js +8 -0
- package/build/api/yaml-workflows/index.d.ts +4 -0
- package/build/api/yaml-workflows/index.js +27 -0
- package/build/api/yaml-workflows/versions.d.ts +43 -0
- package/build/api/yaml-workflows/versions.js +124 -0
- package/build/bin/ltc.d.ts +2 -0
- package/build/bin/ltc.js +220 -0
- package/build/examples/seed-data.d.ts +55 -0
- package/build/examples/seed-data.js +161 -0
- package/build/examples/seed.js +7 -164
- package/build/index.d.ts +1 -1
- package/build/lib/cli/auth.d.ts +23 -0
- package/build/lib/cli/auth.js +167 -0
- package/build/lib/cli/client.d.ts +6 -0
- package/build/lib/cli/client.js +31 -0
- package/build/lib/cli/commands/escalations.d.ts +19 -0
- package/build/lib/cli/commands/escalations.js +69 -0
- package/build/lib/cli/commands/knowledge.d.ts +18 -0
- package/build/lib/cli/commands/knowledge.js +87 -0
- package/build/lib/cli/commands/mcp.d.ts +8 -0
- package/build/lib/cli/commands/mcp.js +33 -0
- package/build/lib/cli/commands/pipelines.d.ts +16 -0
- package/build/lib/cli/commands/pipelines.js +67 -0
- package/build/lib/cli/commands/status.d.ts +1 -0
- package/build/lib/cli/commands/status.js +28 -0
- package/build/lib/cli/commands/users.d.ts +7 -0
- package/build/lib/cli/commands/users.js +25 -0
- package/build/lib/cli/commands/workflows.d.ts +16 -0
- package/build/lib/cli/commands/workflows.js +104 -0
- package/build/lib/cli/compile.d.ts +2 -0
- package/build/lib/cli/compile.js +165 -0
- package/build/lib/cli/format.d.ts +23 -0
- package/build/lib/cli/format.js +94 -0
- package/build/lib/cli/init.d.ts +1 -0
- package/build/lib/cli/init.js +61 -0
- package/build/lib/cli/output.d.ts +27 -0
- package/build/lib/cli/output.js +126 -0
- package/build/lib/cli/scanner.d.ts +10 -0
- package/build/lib/cli/scanner.js +164 -0
- package/build/lib/cli/types.d.ts +16 -0
- package/build/lib/cli/types.js +2 -0
- package/build/lib/db/schemas/schemas/001_schema.sql +485 -0
- package/build/lib/db/schemas/schemas/002_seed.sql +92 -0
- package/build/lib/events/socketio.d.ts +12 -0
- package/build/lib/events/socketio.js +24 -1
- package/build/lib/logger/index.d.ts +0 -9
- package/build/lib/logger/index.js +9 -4
- package/build/lib/storage/index.js +2 -2
- package/build/routes/file-browser.js +14 -0
- package/build/routes/index.js +4 -0
- package/build/routes/knowledge.d.ts +2 -0
- package/build/routes/knowledge.js +141 -0
- package/build/routes/nats-credentials.d.ts +2 -0
- package/build/routes/nats-credentials.js +22 -0
- package/build/routes/yaml-workflows/crud.js +9 -0
- package/build/sdk/index.d.ts +17 -0
- package/build/sdk/index.js +19 -0
- package/build/services/mcp/client/connection-dispatch.d.ts +18 -0
- package/build/services/mcp/client/connection-dispatch.js +78 -0
- package/build/services/mcp/client/connection-lifecycle.d.ts +48 -0
- package/build/services/mcp/client/connection-lifecycle.js +296 -0
- package/build/services/mcp/client/connection-test.d.ts +10 -0
- package/build/services/mcp/client/connection-test.js +49 -0
- package/build/services/mcp/client/connection.d.ts +3 -68
- package/build/services/mcp/client/connection.js +15 -393
- package/build/services/mcp/server-lifecycle.d.ts +27 -0
- package/build/services/mcp/server-lifecycle.js +49 -0
- package/build/services/mcp/server-tools.d.ts +13 -0
- package/build/services/mcp/server-tools.js +287 -0
- package/build/services/mcp/server.d.ts +2 -26
- package/build/services/mcp/server.js +7 -315
- package/build/services/yaml-workflow/builder-regenerate.d.ts +25 -0
- package/build/services/yaml-workflow/builder-regenerate.js +111 -0
- package/build/services/yaml-workflow/db-versions.d.ts +17 -0
- package/build/services/yaml-workflow/db-versions.js +76 -0
- package/build/services/yaml-workflow/db.d.ts +3 -13
- package/build/services/yaml-workflow/db.js +15 -71
- package/build/services/yaml-workflow/deployer-helpers.js +48 -17
- package/build/services/yaml-workflow/durable-compiler/index.d.ts +22 -0
- package/build/services/yaml-workflow/durable-compiler/index.js +168 -0
- package/build/services/yaml-workflow/durable-compiler/parser.d.ts +12 -0
- package/build/services/yaml-workflow/durable-compiler/parser.js +110 -0
- package/build/services/yaml-workflow/durable-compiler/prompts.d.ts +18 -0
- package/build/services/yaml-workflow/durable-compiler/prompts.js +570 -0
- package/build/services/yaml-workflow/durable-compiler/types.d.ts +51 -0
- package/build/services/yaml-workflow/durable-compiler/types.js +5 -0
- package/build/services/yaml-workflow/pipeline/build/dag-assembly.d.ts +17 -0
- package/build/services/yaml-workflow/pipeline/build/dag-assembly.js +192 -0
- package/build/services/yaml-workflow/pipeline/build/dag.d.ts +4 -13
- package/build/services/yaml-workflow/pipeline/build/dag.js +9 -185
- package/build/services/yaml-workflow/pipeline/prompt-templates.d.ts +10 -0
- package/build/services/yaml-workflow/pipeline/prompt-templates.js +270 -0
- package/build/services/yaml-workflow/pipeline/prompts.d.ts +3 -6
- package/build/services/yaml-workflow/pipeline/prompts.js +8 -263
- package/build/services/yaml-workflow/workers/register.js +4 -2
- package/build/start/adapters.js +4 -1
- package/build/start/socket-auth.d.ts +13 -0
- package/build/start/socket-auth.js +32 -0
- package/build/start/workers.js +6 -5
- package/build/system/activities/file-storage.d.ts +4 -0
- package/build/system/activities/file-storage.js +7 -1
- package/build/system/activities/knowledge.d.ts +23 -0
- package/build/system/activities/knowledge.js +50 -10
- package/build/system/activities/sql.d.ts +3 -0
- package/build/system/activities/sql.js +25 -1
- package/build/system/mcp-servers/file-storage.js +3 -1
- package/build/system/mcp-servers/human-queue-schemas.d.ts +91 -0
- package/build/system/mcp-servers/human-queue-schemas.js +42 -0
- package/build/system/mcp-servers/human-queue.d.ts +2 -6
- package/build/system/mcp-servers/human-queue.js +9 -51
- package/build/system/mcp-servers/knowledge.js +43 -9
- package/build/system/mcp-servers/workflow-compiler.js +54 -0
- package/build/system/workflows/mcp-triage/activities-proxy.d.ts +21 -0
- package/build/system/workflows/mcp-triage/activities-proxy.js +70 -0
- package/build/system/workflows/mcp-triage/index.js +17 -75
- package/build/system/workflows/mcp-workflow-planner/activities/persist.d.ts +1 -0
- package/build/system/workflows/mcp-workflow-planner/activities/persist.js +1 -0
- package/build/system/workflows/mcp-workflow-planner/index.js +2 -0
- package/build/tsconfig.tsbuildinfo +1 -1
- package/dashboard/dist/assets/{AdminDashboard-Cngijp4Q.js → AdminDashboard-Bprul9Eb.js} +2 -2
- package/dashboard/dist/assets/{AdminDashboard-Cngijp4Q.js.map → AdminDashboard-Bprul9Eb.js.map} +1 -1
- package/dashboard/dist/assets/AvailableEscalationsPage-H_z5mC10.js +2 -0
- package/dashboard/dist/assets/AvailableEscalationsPage-H_z5mC10.js.map +1 -0
- package/dashboard/dist/assets/{BotPicker-B8Uvw9Si.js → BotPicker-DcvILNUf.js} +2 -2
- package/dashboard/dist/assets/{BotPicker-B8Uvw9Si.js.map → BotPicker-DcvILNUf.js.map} +1 -1
- package/dashboard/dist/assets/{CollapsibleSection-DiFPuWOY.js → CollapsibleSection-BWPbzgEe.js} +2 -2
- package/dashboard/dist/assets/{CollapsibleSection-DiFPuWOY.js.map → CollapsibleSection-BWPbzgEe.js.map} +1 -1
- package/dashboard/dist/assets/{ConfirmDeleteModal-CpXG9uyu.js → ConfirmDeleteModal-Cy6KVLfC.js} +2 -2
- package/dashboard/dist/assets/{ConfirmDeleteModal-CpXG9uyu.js.map → ConfirmDeleteModal-Cy6KVLfC.js.map} +1 -1
- package/dashboard/dist/assets/{CopyableId-DKsTR9lK.js → CopyableId-CRED8hvk.js} +2 -2
- package/dashboard/dist/assets/{CopyableId-DKsTR9lK.js.map → CopyableId-CRED8hvk.js.map} +1 -1
- package/dashboard/dist/assets/{CredentialsPage-DlS7Kf40.js → CredentialsPage-BUdvxiE3.js} +2 -2
- package/dashboard/dist/assets/{CredentialsPage-DlS7Kf40.js.map → CredentialsPage-BUdvxiE3.js.map} +1 -1
- package/dashboard/dist/assets/{CustomDurationPicker-B-9eW3pm.js → CustomDurationPicker-eOk2EqQ5.js} +2 -2
- package/dashboard/dist/assets/{CustomDurationPicker-B-9eW3pm.js.map → CustomDurationPicker-eOk2EqQ5.js.map} +1 -1
- package/dashboard/dist/assets/{DataTable-DkOokbtL.js → DataTable-bd2PTBJd.js} +2 -2
- package/dashboard/dist/assets/{DataTable-DkOokbtL.js.map → DataTable-bd2PTBJd.js.map} +1 -1
- package/dashboard/dist/assets/{ElapsedCell-DVtHqM-5.js → ElapsedCell-BGo8vyus.js} +2 -2
- package/dashboard/dist/assets/{ElapsedCell-DVtHqM-5.js.map → ElapsedCell-BGo8vyus.js.map} +1 -1
- package/dashboard/dist/assets/{EmptyState-C7KIMIbE.js → EmptyState-BygtU-Rh.js} +2 -2
- package/dashboard/dist/assets/{EmptyState-C7KIMIbE.js.map → EmptyState-BygtU-Rh.js.map} +1 -1
- package/dashboard/dist/assets/{EscalationsOverview-BMKBlkPx.js → EscalationsOverview-DUEcN5MP.js} +2 -2
- package/dashboard/dist/assets/{EscalationsOverview-BMKBlkPx.js.map → EscalationsOverview-DUEcN5MP.js.map} +1 -1
- package/dashboard/dist/assets/{EventTable-BYZ5OVdQ.js → EventTable-CmFhswLW.js} +2 -2
- package/dashboard/dist/assets/{EventTable-BYZ5OVdQ.js.map → EventTable-CmFhswLW.js.map} +1 -1
- package/dashboard/dist/assets/{FilterBar-C5r3n6YO.js → FilterBar-BQNzsd3A.js} +2 -2
- package/dashboard/dist/assets/{FilterBar-C5r3n6YO.js.map → FilterBar-BQNzsd3A.js.map} +1 -1
- package/dashboard/dist/assets/{ListToolbar-BGUajIsW.js → ListToolbar-OWOn-HiC.js} +2 -2
- package/dashboard/dist/assets/{ListToolbar-BGUajIsW.js.map → ListToolbar-OWOn-HiC.js.map} +1 -1
- package/dashboard/dist/assets/{McpOverview-B_kJYHea.js → McpOverview-OkEzvClD.js} +2 -2
- package/dashboard/dist/assets/{McpOverview-B_kJYHea.js.map → McpOverview-OkEzvClD.js.map} +1 -1
- package/dashboard/dist/assets/McpQueryDetailPage-C6Ih5sC_.js +5 -0
- package/dashboard/dist/assets/McpQueryDetailPage-C6Ih5sC_.js.map +1 -0
- package/dashboard/dist/assets/{McpQueryPage-BgAq_bQg.js → McpQueryPage-BAuOf5TL.js} +2 -2
- package/dashboard/dist/assets/{McpQueryPage-BgAq_bQg.js.map → McpQueryPage-BAuOf5TL.js.map} +1 -1
- package/dashboard/dist/assets/{McpRunDetailPage-B8c0OszR.js → McpRunDetailPage-DMeiG4i_.js} +2 -2
- package/dashboard/dist/assets/{McpRunDetailPage-B8c0OszR.js.map → McpRunDetailPage-DMeiG4i_.js.map} +1 -1
- package/dashboard/dist/assets/{McpRunsPage-BY8C6k78.js → McpRunsPage-CG3cNJh8.js} +2 -2
- package/dashboard/dist/assets/{McpRunsPage-BY8C6k78.js.map → McpRunsPage-CG3cNJh8.js.map} +1 -1
- package/dashboard/dist/assets/{Modal-E1yRnCeW.js → Modal-Dir9Rlnx.js} +2 -2
- package/dashboard/dist/assets/{Modal-E1yRnCeW.js.map → Modal-Dir9Rlnx.js.map} +1 -1
- package/dashboard/dist/assets/{OperatorDashboard-C8MSTzey.js → OperatorDashboard-OqWC6Azy.js} +2 -2
- package/dashboard/dist/assets/{OperatorDashboard-C8MSTzey.js.map → OperatorDashboard-OqWC6Azy.js.map} +1 -1
- package/dashboard/dist/assets/{PageHeader-Cm5HBQF_.js → PageHeader-FJIemmrC.js} +2 -2
- package/dashboard/dist/assets/{PageHeader-Cm5HBQF_.js.map → PageHeader-FJIemmrC.js.map} +1 -1
- package/dashboard/dist/assets/{PageHeaderWithStats-CNmWJFSN.js → PageHeaderWithStats-Br5y9qNO.js} +2 -2
- package/dashboard/dist/assets/{PageHeaderWithStats-CNmWJFSN.js.map → PageHeaderWithStats-Br5y9qNO.js.map} +1 -1
- package/dashboard/dist/assets/{PriorityBadge-HSI4RVhs.js → PriorityBadge-C7D5d_HY.js} +2 -2
- package/dashboard/dist/assets/{PriorityBadge-HSI4RVhs.js.map → PriorityBadge-C7D5d_HY.js.map} +1 -1
- package/dashboard/dist/assets/{ProcessDetailPage-Dln8622H.js → ProcessDetailPage-DZIP6grw.js} +2 -2
- package/dashboard/dist/assets/{ProcessDetailPage-Dln8622H.js.map → ProcessDetailPage-DZIP6grw.js.map} +1 -1
- package/dashboard/dist/assets/{ProcessesListPage-bIsd9N_h.js → ProcessesListPage-BQoPYkeB.js} +2 -2
- package/dashboard/dist/assets/{ProcessesListPage-bIsd9N_h.js.map → ProcessesListPage-BQoPYkeB.js.map} +1 -1
- package/dashboard/dist/assets/{RolePill-BVUp2bF0.js → RolePill-D6nMxMvp.js} +2 -2
- package/dashboard/dist/assets/{RolePill-BVUp2bF0.js.map → RolePill-D6nMxMvp.js.map} +1 -1
- package/dashboard/dist/assets/RolesPage-CwLnJFhy.js +2 -0
- package/dashboard/dist/assets/{RolesPage-kH-Njt25.js.map → RolesPage-CwLnJFhy.js.map} +1 -1
- package/dashboard/dist/assets/{RowActions-DbUJPfaW.js → RowActions-JqgAB0p3.js} +2 -2
- package/dashboard/dist/assets/{RowActions-DbUJPfaW.js.map → RowActions-JqgAB0p3.js.map} +1 -1
- package/dashboard/dist/assets/RunAsSelector-KAlKtitB.js +2 -0
- package/dashboard/dist/assets/RunAsSelector-KAlKtitB.js.map +1 -0
- package/dashboard/dist/assets/{StatCard-Bs3JbyAz.js → StatCard-B-WLhOaH.js} +2 -2
- package/dashboard/dist/assets/{StatCard-Bs3JbyAz.js.map → StatCard-B-WLhOaH.js.map} +1 -1
- package/dashboard/dist/assets/{StatusBadge-CakDdsCw.js → StatusBadge-DVCf2ncM.js} +2 -2
- package/dashboard/dist/assets/{StatusBadge-CakDdsCw.js.map → StatusBadge-DVCf2ncM.js.map} +1 -1
- package/dashboard/dist/assets/{StepIndicator-Cd_SG_yA.js → StepIndicator-D9Xvdf18.js} +2 -2
- package/dashboard/dist/assets/{StepIndicator-Cd_SG_yA.js.map → StepIndicator-D9Xvdf18.js.map} +1 -1
- package/dashboard/dist/assets/{StickyPagination-Bz0C18nC.js → StickyPagination-CJHMzYJj.js} +2 -2
- package/dashboard/dist/assets/{StickyPagination-Bz0C18nC.js.map → StickyPagination-CJHMzYJj.js.map} +1 -1
- package/dashboard/dist/assets/SwimlaneTimeline-YiXPDyEL.js +2 -0
- package/dashboard/dist/assets/SwimlaneTimeline-YiXPDyEL.js.map +1 -0
- package/dashboard/dist/assets/{TagInput-ClFhXG-U.js → TagInput-DcPnUnSJ.js} +2 -2
- package/dashboard/dist/assets/{TagInput-ClFhXG-U.js.map → TagInput-DcPnUnSJ.js.map} +1 -1
- package/dashboard/dist/assets/{TaskDetailPage-SuMBdARt.js → TaskDetailPage-DftmYWD7.js} +2 -2
- package/dashboard/dist/assets/{TaskDetailPage-SuMBdARt.js.map → TaskDetailPage-DftmYWD7.js.map} +1 -1
- package/dashboard/dist/assets/{TaskQueuePill-lJR1JW_W.js → TaskQueuePill-BzduBqwy.js} +2 -2
- package/dashboard/dist/assets/{TaskQueuePill-lJR1JW_W.js.map → TaskQueuePill-BzduBqwy.js.map} +1 -1
- package/dashboard/dist/assets/{TasksListPage-Dkq1Vtbt.js → TasksListPage-DeewV4Gp.js} +2 -2
- package/dashboard/dist/assets/{TasksListPage-Dkq1Vtbt.js.map → TasksListPage-DeewV4Gp.js.map} +1 -1
- package/dashboard/dist/assets/{TimeAgo-DgfDZ1pl.js → TimeAgo-DJZq-e4R.js} +2 -2
- package/dashboard/dist/assets/{TimeAgo-DgfDZ1pl.js.map → TimeAgo-DJZq-e4R.js.map} +1 -1
- package/dashboard/dist/assets/{TimestampCell-MpHZ1hMD.js → TimestampCell-Dx5uwGfS.js} +2 -2
- package/dashboard/dist/assets/{TimestampCell-MpHZ1hMD.js.map → TimestampCell-Dx5uwGfS.js.map} +1 -1
- package/dashboard/dist/assets/{UserName-DqsosA4B.js → UserName-CnGk7MgL.js} +2 -2
- package/dashboard/dist/assets/{UserName-DqsosA4B.js.map → UserName-CnGk7MgL.js.map} +1 -1
- package/dashboard/dist/assets/{WorkflowExecutionPage-CVlg38C3.js → WorkflowExecutionPage-CPQ0fIwf.js} +2 -2
- package/dashboard/dist/assets/{WorkflowExecutionPage-CVlg38C3.js.map → WorkflowExecutionPage-CPQ0fIwf.js.map} +1 -1
- package/dashboard/dist/assets/{WorkflowPill-CRpZhjGR.js → WorkflowPill-BrD5d1AG.js} +2 -2
- package/dashboard/dist/assets/{WorkflowPill-CRpZhjGR.js.map → WorkflowPill-BrD5d1AG.js.map} +1 -1
- package/dashboard/dist/assets/{WorkflowsDashboard-Ugzbs8mV.js → WorkflowsDashboard-BzjhABZP.js} +2 -2
- package/dashboard/dist/assets/{WorkflowsDashboard-Ugzbs8mV.js.map → WorkflowsDashboard-BzjhABZP.js.map} +1 -1
- package/dashboard/dist/assets/{WorkflowsOverview-CIp_lTNl.js → WorkflowsOverview-lBp2E6rN.js} +2 -2
- package/dashboard/dist/assets/{WorkflowsOverview-CIp_lTNl.js.map → WorkflowsOverview-lBp2E6rN.js.map} +1 -1
- package/dashboard/dist/assets/YamlWorkflowsPage-C_MkAp2i.js +2 -0
- package/dashboard/dist/assets/YamlWorkflowsPage-C_MkAp2i.js.map +1 -0
- package/dashboard/dist/assets/{bots-DPfUpVqI.js → bots-fc_O_YIq.js} +2 -2
- package/dashboard/dist/assets/{bots-DPfUpVqI.js.map → bots-fc_O_YIq.js.map} +1 -1
- package/dashboard/dist/assets/{escalation-RrCDbMC3.js → escalation-BYhLYHBz.js} +2 -2
- package/dashboard/dist/assets/{escalation-RrCDbMC3.js.map → escalation-BYhLYHBz.js.map} +1 -1
- package/dashboard/dist/assets/{escalation-columns-CDGa9wsD.js → escalation-columns-DjJyuC1g.js} +2 -2
- package/dashboard/dist/assets/{escalation-columns-CDGa9wsD.js.map → escalation-columns-DjJyuC1g.js.map} +1 -1
- package/dashboard/dist/assets/{helpers-ZSKqdkdS.js → helpers-CQG3Rh2y.js} +2 -2
- package/dashboard/dist/assets/{helpers-ZSKqdkdS.js.map → helpers-CQG3Rh2y.js.map} +1 -1
- package/dashboard/dist/assets/{index-DX6zxr6t.js → index-2nBhR7Dg.js} +2 -2
- package/dashboard/dist/assets/{index-DX6zxr6t.js.map → index-2nBhR7Dg.js.map} +1 -1
- package/dashboard/dist/assets/index-4IUoh_hd.js +2 -0
- package/dashboard/dist/assets/{index-K40Qw1tk.js.map → index-4IUoh_hd.js.map} +1 -1
- package/dashboard/dist/assets/index-B2CqPzLK.js +2 -0
- package/dashboard/dist/assets/index-B2CqPzLK.js.map +1 -0
- package/dashboard/dist/assets/index-B78xalb4.js +2 -0
- package/dashboard/dist/assets/index-B78xalb4.js.map +1 -0
- package/dashboard/dist/assets/index-BI8r69O_.js +2 -0
- package/dashboard/dist/assets/{index-C90ZPzXk.js.map → index-BI8r69O_.js.map} +1 -1
- package/dashboard/dist/assets/index-C5TUqJu0.css +1 -0
- package/dashboard/dist/assets/{index-BmVCyB6C.js → index-CUqCBBZG.js} +2 -2
- package/dashboard/dist/assets/{index-BmVCyB6C.js.map → index-CUqCBBZG.js.map} +1 -1
- package/dashboard/dist/assets/index-D51PaQZY.js +2 -0
- package/dashboard/dist/assets/index-D51PaQZY.js.map +1 -0
- package/dashboard/dist/assets/{index-BbI2dzhJ.js → index-DNtXXy1o.js} +2 -2
- package/dashboard/dist/assets/{index-BbI2dzhJ.js.map → index-DNtXXy1o.js.map} +1 -1
- package/dashboard/dist/assets/{index-DNytWfSZ.js → index-DR4qQvlW.js} +2 -2
- package/dashboard/dist/assets/{index-DNytWfSZ.js.map → index-DR4qQvlW.js.map} +1 -1
- package/dashboard/dist/assets/index-Dh0PCbR-.js +15 -0
- package/dashboard/dist/assets/index-Dh0PCbR-.js.map +1 -0
- package/dashboard/dist/assets/index-KYpLvJKB.js +5 -0
- package/dashboard/dist/assets/index-KYpLvJKB.js.map +1 -0
- package/dashboard/dist/assets/{index-Cmgrk7PQ.js → index-sNrqYt0Q.js} +73 -73
- package/dashboard/dist/assets/index-sNrqYt0Q.js.map +1 -0
- package/dashboard/dist/assets/{mcp-CNE44TSp.js → mcp-D2XfRh8v.js} +2 -2
- package/dashboard/dist/assets/{mcp-CNE44TSp.js.map → mcp-D2XfRh8v.js.map} +1 -1
- package/dashboard/dist/assets/{mcp-query-RQX0uN-5.js → mcp-query-CIx_mIC7.js} +2 -2
- package/dashboard/dist/assets/{mcp-query-RQX0uN-5.js.map → mcp-query-CIx_mIC7.js.map} +1 -1
- package/dashboard/dist/assets/{mcp-runs-0w40bdz-.js → mcp-runs-C9_J4LIH.js} +2 -2
- package/dashboard/dist/assets/{mcp-runs-0w40bdz-.js.map → mcp-runs-C9_J4LIH.js.map} +1 -1
- package/dashboard/dist/assets/{namespaces-BbmdXuPp.js → namespaces-BwMljx6f.js} +2 -2
- package/dashboard/dist/assets/{namespaces-BbmdXuPp.js.map → namespaces-BwMljx6f.js.map} +1 -1
- package/dashboard/dist/assets/{roles-DoHYlhWH.js → roles-Bd_sTV6I.js} +2 -2
- package/dashboard/dist/assets/{roles-DoHYlhWH.js.map → roles-Bd_sTV6I.js.map} +1 -1
- package/dashboard/dist/assets/{settings-BAiJiCHS.js → settings-BCb8eFyA.js} +2 -2
- package/dashboard/dist/assets/{settings-BAiJiCHS.js.map → settings-BCb8eFyA.js.map} +1 -1
- package/dashboard/dist/assets/{tasks-CvroqHtm.js → tasks-Bq54qGGq.js} +2 -2
- package/dashboard/dist/assets/{tasks-CvroqHtm.js.map → tasks-Bq54qGGq.js.map} +1 -1
- package/dashboard/dist/assets/useEventHooks-BTbGf536.js +2 -0
- package/dashboard/dist/assets/{useEventHooks-BHMbzR_y.js.map → useEventHooks-BTbGf536.js.map} +1 -1
- package/dashboard/dist/assets/useYamlActivityEvents-CsYP09W5.js +2 -0
- package/dashboard/dist/assets/{useYamlActivityEvents-D56KV14X.js.map → useYamlActivityEvents-CsYP09W5.js.map} +1 -1
- package/dashboard/dist/assets/{users-CxIMy_xw.js → users-BTBhafGc.js} +2 -2
- package/dashboard/dist/assets/{users-CxIMy_xw.js.map → users-BTBhafGc.js.map} +1 -1
- package/dashboard/dist/assets/{vendor-icons-AFGxSeQS.js → vendor-icons-CWl44VA6.js} +77 -77
- package/dashboard/dist/assets/vendor-icons-CWl44VA6.js.map +1 -0
- package/dashboard/dist/assets/{workflows-yR9yais7.js → workflows-BkzA4ahe.js} +2 -2
- package/dashboard/dist/assets/{workflows-yR9yais7.js.map → workflows-BkzA4ahe.js.map} +1 -1
- package/dashboard/dist/assets/{yaml-workflows-QVF2MZ0l.js → yaml-workflows-Cs0EYp0F.js} +2 -2
- package/dashboard/dist/assets/{yaml-workflows-QVF2MZ0l.js.map → yaml-workflows-Cs0EYp0F.js.map} +1 -1
- package/dashboard/dist/index.html +3 -3
- package/docs/api/http/file-browser.md +101 -0
- package/docs/api/http/knowledge.md +203 -0
- package/docs/api/http/settings.md +6 -4
- package/docs/api/sdk/files.md +68 -0
- package/docs/api/sdk/knowledge.md +126 -0
- package/docs/api/sdk/settings.md +3 -2
- package/docs/cli.md +171 -0
- package/docs/compilation.md +16 -0
- package/docs/compiler.md +311 -0
- package/docs/events.md +19 -0
- package/docs/workflows.md +19 -0
- package/package.json +13 -2
- package/build/api/escalations.d.ts +0 -271
- package/build/api/escalations.js +0 -932
- package/build/api/workflows.d.ts +0 -158
- package/build/api/workflows.js +0 -414
- package/dashboard/dist/assets/AvailableEscalationsPage-CpBfGV1h.js +0 -2
- package/dashboard/dist/assets/AvailableEscalationsPage-CpBfGV1h.js.map +0 -1
- package/dashboard/dist/assets/McpQueryDetailPage-Czsmovqw.js +0 -5
- package/dashboard/dist/assets/McpQueryDetailPage-Czsmovqw.js.map +0 -1
- package/dashboard/dist/assets/RolesPage-kH-Njt25.js +0 -2
- package/dashboard/dist/assets/SwimlaneTimeline-Cfe-xQRX.js +0 -2
- package/dashboard/dist/assets/SwimlaneTimeline-Cfe-xQRX.js.map +0 -1
- package/dashboard/dist/assets/YamlWorkflowsPage-BICF0fRO.js +0 -2
- package/dashboard/dist/assets/YamlWorkflowsPage-BICF0fRO.js.map +0 -1
- package/dashboard/dist/assets/helpers-rMEcLwKs.js +0 -2
- package/dashboard/dist/assets/helpers-rMEcLwKs.js.map +0 -1
- package/dashboard/dist/assets/index-ABcJHHlN.js +0 -5
- package/dashboard/dist/assets/index-ABcJHHlN.js.map +0 -1
- package/dashboard/dist/assets/index-B91h_jZ0.js +0 -15
- package/dashboard/dist/assets/index-B91h_jZ0.js.map +0 -1
- package/dashboard/dist/assets/index-C1E5GTs9.js +0 -2
- package/dashboard/dist/assets/index-C1E5GTs9.js.map +0 -1
- package/dashboard/dist/assets/index-C90ZPzXk.js +0 -2
- package/dashboard/dist/assets/index-Cmgrk7PQ.js.map +0 -1
- package/dashboard/dist/assets/index-DeX-ezqf.css +0 -1
- package/dashboard/dist/assets/index-K40Qw1tk.js +0 -2
- package/dashboard/dist/assets/index-lCyNr5Xk.js +0 -2
- package/dashboard/dist/assets/index-lCyNr5Xk.js.map +0 -1
- package/dashboard/dist/assets/useEventHooks-BHMbzR_y.js +0 -2
- package/dashboard/dist/assets/useYamlActivityEvents-D56KV14X.js +0 -2
- package/dashboard/dist/assets/vendor-icons-AFGxSeQS.js.map +0 -1
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import{j as e,c as X,C as be,J as O,i as Ne,s as he,e as fe,g as ve,t as ge}from"./index-sNrqYt0Q.js";import{a as b}from"./vendor-query-DLp59M9_.js";import{a as Ee}from"./roles-Bd_sTV6I.js";import{P as De}from"./PageHeader-FJIemmrC.js";import{C as se,i as je,a as Ve}from"./escalation-BYhLYHBz.js";import{u as ye}from"./workflows-BkzA4ahe.js";import{u as Ce}from"./settings-BCb8eFyA.js";import{g as we}from"./useEventHooks-BTbGf536.js";import{U as te}from"./UserName-CnGk7MgL.js";import{u as Re,C as ke}from"./CustomDurationPicker-eOk2EqQ5.js";import{S as Se}from"./StatusBadge-DVCf2ncM.js";import{R as _e}from"./RolePill-D6nMxMvp.js";import{C as k}from"./CopyableId-CRED8hvk.js";import{a0 as Ae,U as Te,a2 as Z}from"./vendor-icons-CWl44VA6.js";import{C as K}from"./CollapsibleSection-BWPbzgEe.js";import{L as oe,e as Be,c as Fe}from"./vendor-react-Co3Y8ikm.js";import"./users-BTBhafGc.js";import"./constants-BHkpVaqx.js";function He(a){const{mode:t,activeView:i,onActiveViewChange:s,onClaim:r,claimPending:o,workflowType:d,json:m,onResolve:l,resolvePending:c,resolveError:n,requestTriage:h,triageNotes:v,currentRole:x,escalationTargets:N,onEscalate:f,escalatePending:g,escalateError:C,onRelease:S,releasePending:I,assignedTo:F,assignedUntil:L}=a,W=Re(),[H,D]=b.useState("30"),[j,_]=b.useState(0),[P,A]=b.useState(""),[T,$]=b.useState(""),E=H==="custom",U=b.useCallback(u=>_(u),[]);if(t==="terminal")return null;const B=()=>{const u=E?j:parseInt(H);!u||u<=0||r(u)},w=()=>{if(A(""),h){const J={_lt:{needsTriage:!0}};v.trim()&&(J.notes=v.trim()),l(J);return}let u;try{u=JSON.parse(m)}catch{A("Invalid JSON");return}l(u)},R=u=>`text-xs transition-colors ${u?"text-accent font-medium":"text-text-tertiary hover:text-accent"}`;return e.jsxDEV("div",{className:"sticky h-[80px] bg-surface/95 backdrop-blur-sm border-t border-surface-border -mx-10 px-10 pt-3 pb-5 z-10",style:{bottom:"calc(var(--feed-height, 0px) - 8px)"},"data-testid":"escalation-action-bar",children:[t==="available"&&e.jsxDEV("div",{"data-testid":"claim-bar",children:[e.jsxDEV("div",{className:"flex items-center gap-4 mb-2",children:[W.map(u=>e.jsxDEV("button",{onClick:()=>{D(u.value),_(0)},className:R(!E&&H===u.value),children:u.label},u.value,!1,{fileName:"/app/dashboard/src/pages/operator/escalation-detail/EscalationActionBar.tsx",lineNumber:120,columnNumber:17},this)),e.jsxDEV("button",{onClick:()=>D("custom"),className:R(E),children:"Other"},void 0,!1,{fileName:"/app/dashboard/src/pages/operator/escalation-detail/EscalationActionBar.tsx",lineNumber:128,columnNumber:15},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/operator/escalation-detail/EscalationActionBar.tsx",lineNumber:118,columnNumber:13},this),e.jsxDEV("div",{className:"flex items-center gap-3",children:[e.jsxDEV("div",{className:"flex-1"},void 0,!1,{fileName:"/app/dashboard/src/pages/operator/escalation-detail/EscalationActionBar.tsx",lineNumber:137,columnNumber:15},this),E&&e.jsxDEV(ke,{onChange:U,compact:!0,autoFocus:!0},void 0,!1,{fileName:"/app/dashboard/src/pages/operator/escalation-detail/EscalationActionBar.tsx",lineNumber:139,columnNumber:17},this),e.jsxDEV("button",{onClick:B,disabled:o||E&&j<=0,className:"btn-primary text-xs",children:o?"Claiming...":"Claim"},void 0,!1,{fileName:"/app/dashboard/src/pages/operator/escalation-detail/EscalationActionBar.tsx",lineNumber:141,columnNumber:15},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/operator/escalation-detail/EscalationActionBar.tsx",lineNumber:136,columnNumber:13},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/operator/escalation-detail/EscalationActionBar.tsx",lineNumber:116,columnNumber:11},this),t==="claimed_by_other"&&e.jsxDEV("div",{className:"flex items-center gap-4","data-testid":"claimed-other-bar",children:[e.jsxDEV("p",{className:"text-sm text-text-secondary",children:["Claimed by ",e.jsxDEV("span",{className:"font-medium text-text-primary",children:F?e.jsxDEV(te,{userId:F},void 0,!1,{fileName:"/app/dashboard/src/pages/operator/escalation-detail/EscalationActionBar.tsx",lineNumber:156,columnNumber:88},this):"unknown"},void 0,!1,{fileName:"/app/dashboard/src/pages/operator/escalation-detail/EscalationActionBar.tsx",lineNumber:156,columnNumber:26},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/operator/escalation-detail/EscalationActionBar.tsx",lineNumber:155,columnNumber:13},this),L&&e.jsxDEV(se,{until:L},void 0,!1,{fileName:"/app/dashboard/src/pages/operator/escalation-detail/EscalationActionBar.tsx",lineNumber:158,columnNumber:31},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/operator/escalation-detail/EscalationActionBar.tsx",lineNumber:154,columnNumber:11},this),t==="claimed_by_me"&&e.jsxDEV("div",{"data-testid":"action-bar",children:[e.jsxDEV("div",{className:"flex items-center gap-4 mb-2",children:[e.jsxDEV("button",{onClick:()=>s("resolve"),className:R(i==="resolve"),children:d?"Resolve":"Acknowledge"},void 0,!1,{fileName:"/app/dashboard/src/pages/operator/escalation-detail/EscalationActionBar.tsx",lineNumber:167,columnNumber:15},this),N.length>0&&e.jsxDEV("button",{onClick:()=>s("escalate"),className:R(i==="escalate"),children:"Escalate"},void 0,!1,{fileName:"/app/dashboard/src/pages/operator/escalation-detail/EscalationActionBar.tsx",lineNumber:174,columnNumber:17},this),e.jsxDEV("button",{onClick:()=>s("release"),className:`text-xs transition-colors ${i==="release"?"text-status-error font-medium":"text-text-tertiary hover:text-status-error"}`,children:"Release"},void 0,!1,{fileName:"/app/dashboard/src/pages/operator/escalation-detail/EscalationActionBar.tsx",lineNumber:181,columnNumber:15},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/operator/escalation-detail/EscalationActionBar.tsx",lineNumber:166,columnNumber:13},this),i==="resolve"&&(d?e.jsxDEV("div",{className:"flex items-center gap-4",children:[e.jsxDEV("div",{className:"flex-1"},void 0,!1,{fileName:"/app/dashboard/src/pages/operator/escalation-detail/EscalationActionBar.tsx",lineNumber:193,columnNumber:19},this),P&&e.jsxDEV("span",{className:"text-xs text-status-error",children:P},void 0,!1,{fileName:"/app/dashboard/src/pages/operator/escalation-detail/EscalationActionBar.tsx",lineNumber:195,columnNumber:34},this),n&&e.jsxDEV("span",{className:"text-xs text-status-error",children:n.message},void 0,!1,{fileName:"/app/dashboard/src/pages/operator/escalation-detail/EscalationActionBar.tsx",lineNumber:196,columnNumber:36},this),e.jsxDEV("button",{onClick:w,disabled:c,className:"btn-primary text-xs",children:c?"Submitting...":h?"Send to Triage":"Submit"},void 0,!1,{fileName:"/app/dashboard/src/pages/operator/escalation-detail/EscalationActionBar.tsx",lineNumber:198,columnNumber:19},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/operator/escalation-detail/EscalationActionBar.tsx",lineNumber:192,columnNumber:17},this):e.jsxDEV("div",{className:"flex items-center",children:[e.jsxDEV("span",{className:"text-xs text-text-secondary",children:"Notification — acknowledge to resolve"},void 0,!1,{fileName:"/app/dashboard/src/pages/operator/escalation-detail/EscalationActionBar.tsx",lineNumber:208,columnNumber:19},this),e.jsxDEV("div",{className:"flex-1"},void 0,!1,{fileName:"/app/dashboard/src/pages/operator/escalation-detail/EscalationActionBar.tsx",lineNumber:209,columnNumber:19},this),n&&e.jsxDEV("span",{className:"text-xs text-status-error mr-3",children:n.message},void 0,!1,{fileName:"/app/dashboard/src/pages/operator/escalation-detail/EscalationActionBar.tsx",lineNumber:210,columnNumber:36},this),e.jsxDEV("button",{onClick:()=>l({acknowledged:!0}),disabled:c,className:"btn-primary text-xs",children:c?"Acknowledging...":"Acknowledge"},void 0,!1,{fileName:"/app/dashboard/src/pages/operator/escalation-detail/EscalationActionBar.tsx",lineNumber:211,columnNumber:19},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/operator/escalation-detail/EscalationActionBar.tsx",lineNumber:207,columnNumber:17},this)),i==="escalate"&&e.jsxDEV("div",{className:"flex items-center gap-3",children:[e.jsxDEV("span",{className:"text-xs text-text-secondary",children:["From ",e.jsxDEV("span",{className:"font-medium text-text-primary",children:x},void 0,!1,{fileName:"/app/dashboard/src/pages/operator/escalation-detail/EscalationActionBar.tsx",lineNumber:226,columnNumber:24},this)," to"]},void 0,!0,{fileName:"/app/dashboard/src/pages/operator/escalation-detail/EscalationActionBar.tsx",lineNumber:225,columnNumber:17},this),e.jsxDEV("select",{value:T,onChange:u=>$(u.target.value),className:"select text-xs","data-testid":"escalate-select",children:[e.jsxDEV("option",{value:"",children:"Select role..."},void 0,!1,{fileName:"/app/dashboard/src/pages/operator/escalation-detail/EscalationActionBar.tsx",lineNumber:234,columnNumber:19},this),N.map(u=>e.jsxDEV("option",{value:u,children:u},u,!1,{fileName:"/app/dashboard/src/pages/operator/escalation-detail/EscalationActionBar.tsx",lineNumber:236,columnNumber:21},this))]},void 0,!0,{fileName:"/app/dashboard/src/pages/operator/escalation-detail/EscalationActionBar.tsx",lineNumber:228,columnNumber:17},this),e.jsxDEV("div",{className:"flex-1"},void 0,!1,{fileName:"/app/dashboard/src/pages/operator/escalation-detail/EscalationActionBar.tsx",lineNumber:239,columnNumber:17},this),C&&e.jsxDEV("span",{className:"text-xs text-status-error",children:C.message},void 0,!1,{fileName:"/app/dashboard/src/pages/operator/escalation-detail/EscalationActionBar.tsx",lineNumber:240,columnNumber:35},this),e.jsxDEV("button",{onClick:()=>f(T),disabled:!T||g,className:"btn-primary text-xs",children:g?"Escalating...":"Escalate"},void 0,!1,{fileName:"/app/dashboard/src/pages/operator/escalation-detail/EscalationActionBar.tsx",lineNumber:241,columnNumber:17},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/operator/escalation-detail/EscalationActionBar.tsx",lineNumber:224,columnNumber:15},this),i==="release"&&e.jsxDEV("div",{className:"flex items-center gap-3",children:[e.jsxDEV("span",{className:"text-xs text-text-secondary",children:"Release back to pool?"},void 0,!1,{fileName:"/app/dashboard/src/pages/operator/escalation-detail/EscalationActionBar.tsx",lineNumber:254,columnNumber:17},this),e.jsxDEV("div",{className:"flex-1"},void 0,!1,{fileName:"/app/dashboard/src/pages/operator/escalation-detail/EscalationActionBar.tsx",lineNumber:255,columnNumber:17},this),e.jsxDEV("button",{onClick:()=>s("resolve"),className:"btn-secondary text-xs",children:"Cancel"},void 0,!1,{fileName:"/app/dashboard/src/pages/operator/escalation-detail/EscalationActionBar.tsx",lineNumber:256,columnNumber:17},this),e.jsxDEV("button",{onClick:S,disabled:I,className:"btn-primary text-xs bg-status-error hover:bg-status-error/80",children:I?"Releasing...":"Yes, Release"},void 0,!1,{fileName:"/app/dashboard/src/pages/operator/escalation-detail/EscalationActionBar.tsx",lineNumber:259,columnNumber:17},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/operator/escalation-detail/EscalationActionBar.tsx",lineNumber:253,columnNumber:15},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/operator/escalation-detail/EscalationActionBar.tsx",lineNumber:164,columnNumber:11},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/operator/escalation-detail/EscalationActionBar.tsx",lineNumber:112,columnNumber:5},this)}function Pe({esc:a,claimedByMe:t,claimed:i,isTerminal:s,traceUrl:r}){const[o,d]=b.useState(!1),m=je(a);return e.jsxDEV(e.Fragment,{children:[e.jsxDEV("div",{className:"flex items-center gap-3 mb-2",children:[m&&e.jsxDEV(Ae,{className:"w-5 h-5 text-text-tertiary shrink-0"},void 0,!1,{fileName:"/app/dashboard/src/pages/operator/escalation-detail/EscalationHero.tsx",lineNumber:33,columnNumber:19},this),e.jsxDEV("p",{className:"text-[1.5rem] leading-snug font-light text-text-secondary",children:[a.type,a.subtype?` / ${a.subtype}`:""]},void 0,!0,{fileName:"/app/dashboard/src/pages/operator/escalation-detail/EscalationHero.tsx",lineNumber:34,columnNumber:9},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/operator/escalation-detail/EscalationHero.tsx",lineNumber:32,columnNumber:7},this),a.description&&e.jsxDEV("p",{className:"text-sm leading-relaxed text-text-tertiary mb-4",children:a.description},void 0,!1,{fileName:"/app/dashboard/src/pages/operator/escalation-detail/EscalationHero.tsx",lineNumber:41,columnNumber:9},this),e.jsxDEV("div",{className:"flex flex-wrap items-end gap-x-6 gap-y-3 mt-4 mb-2",children:[e.jsxDEV("div",{children:[e.jsxDEV("p",{className:"text-[9px] font-semibold uppercase tracking-widest text-text-tertiary mb-1.5",children:"Status"},void 0,!1,{fileName:"/app/dashboard/src/pages/operator/escalation-detail/EscalationHero.tsx",lineNumber:50,columnNumber:11},this),e.jsxDEV("span",{className:"mb-1 inline-block",children:e.jsxDEV(Se,{status:a.status},void 0,!1,{fileName:"/app/dashboard/src/pages/operator/escalation-detail/EscalationHero.tsx",lineNumber:51,columnNumber:47},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/operator/escalation-detail/EscalationHero.tsx",lineNumber:51,columnNumber:11},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/operator/escalation-detail/EscalationHero.tsx",lineNumber:49,columnNumber:9},this),e.jsxDEV("div",{children:[e.jsxDEV("p",{className:"text-[9px] font-semibold uppercase tracking-widest text-text-tertiary mb-1.5",children:"Role"},void 0,!1,{fileName:"/app/dashboard/src/pages/operator/escalation-detail/EscalationHero.tsx",lineNumber:56,columnNumber:11},this),e.jsxDEV(_e,{role:a.role,size:"md"},void 0,!1,{fileName:"/app/dashboard/src/pages/operator/escalation-detail/EscalationHero.tsx",lineNumber:57,columnNumber:11},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/operator/escalation-detail/EscalationHero.tsx",lineNumber:55,columnNumber:9},this),e.jsxDEV("div",{children:[e.jsxDEV("p",{className:"text-[9px] font-semibold uppercase tracking-widest text-text-tertiary mb-1.5",children:"Created"},void 0,!1,{fileName:"/app/dashboard/src/pages/operator/escalation-detail/EscalationHero.tsx",lineNumber:62,columnNumber:11},this),e.jsxDEV("span",{className:"inline-flex items-center mb-1 text-xs text-text-secondary",children:e.jsxDEV(X,{date:a.created_at},void 0,!1,{fileName:"/app/dashboard/src/pages/operator/escalation-detail/EscalationHero.tsx",lineNumber:64,columnNumber:13},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/operator/escalation-detail/EscalationHero.tsx",lineNumber:63,columnNumber:11},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/operator/escalation-detail/EscalationHero.tsx",lineNumber:61,columnNumber:9},this),a.assigned_to&&e.jsxDEV("div",{children:[e.jsxDEV("p",{className:"text-[9px] font-semibold uppercase tracking-widest text-text-tertiary mb-1.5",children:"Claimed by"},void 0,!1,{fileName:"/app/dashboard/src/pages/operator/escalation-detail/EscalationHero.tsx",lineNumber:71,columnNumber:13},this),e.jsxDEV("span",{className:"inline-flex items-center gap-1.5 text-xs font-medium text-text-primary",children:[e.jsxDEV(Te,{className:"w-3 h-3 shrink-0 text-accent/75"},void 0,!1,{fileName:"/app/dashboard/src/pages/operator/escalation-detail/EscalationHero.tsx",lineNumber:73,columnNumber:15},this),e.jsxDEV(te,{userId:a.assigned_to},void 0,!1,{fileName:"/app/dashboard/src/pages/operator/escalation-detail/EscalationHero.tsx",lineNumber:74,columnNumber:15},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/operator/escalation-detail/EscalationHero.tsx",lineNumber:72,columnNumber:13},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/operator/escalation-detail/EscalationHero.tsx",lineNumber:70,columnNumber:11},this),i&&!s&&a.assigned_until&&e.jsxDEV("div",{children:[e.jsxDEV("p",{className:"text-[9px] font-semibold uppercase tracking-widest text-text-tertiary mb-1.5",children:"Time left"},void 0,!1,{fileName:"/app/dashboard/src/pages/operator/escalation-detail/EscalationHero.tsx",lineNumber:82,columnNumber:13},this),e.jsxDEV("span",{className:"inline-flex items-center h-5",children:e.jsxDEV(se,{until:a.assigned_until},void 0,!1,{fileName:"/app/dashboard/src/pages/operator/escalation-detail/EscalationHero.tsx",lineNumber:83,columnNumber:60},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/operator/escalation-detail/EscalationHero.tsx",lineNumber:83,columnNumber:13},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/operator/escalation-detail/EscalationHero.tsx",lineNumber:81,columnNumber:11},this),a.resolved_at&&e.jsxDEV("div",{children:[e.jsxDEV("p",{className:"text-[9px] font-semibold uppercase tracking-widest text-text-tertiary mb-1.5",children:"Resolved"},void 0,!1,{fileName:"/app/dashboard/src/pages/operator/escalation-detail/EscalationHero.tsx",lineNumber:90,columnNumber:13},this),e.jsxDEV("span",{className:"inline-flex items-center h-5 text-xs text-text-secondary",children:e.jsxDEV(X,{date:a.resolved_at},void 0,!1,{fileName:"/app/dashboard/src/pages/operator/escalation-detail/EscalationHero.tsx",lineNumber:92,columnNumber:15},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/operator/escalation-detail/EscalationHero.tsx",lineNumber:91,columnNumber:13},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/operator/escalation-detail/EscalationHero.tsx",lineNumber:89,columnNumber:11},this),e.jsxDEV("div",{children:e.jsxDEV("button",{onClick:()=>d(!o),className:"inline-flex items-center gap-1 h-5 text-xs text-text-tertiary hover:text-accent transition-colors",children:["Details",e.jsxDEV("svg",{className:`w-3 h-3 transition-transform duration-200 ${o?"rotate-180":""}`,fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:2,children:e.jsxDEV("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M19 9l-7 7-7-7"},void 0,!1,{fileName:"/app/dashboard/src/pages/operator/escalation-detail/EscalationHero.tsx",lineNumber:108,columnNumber:15},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/operator/escalation-detail/EscalationHero.tsx",lineNumber:104,columnNumber:13},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/operator/escalation-detail/EscalationHero.tsx",lineNumber:99,columnNumber:11},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/operator/escalation-detail/EscalationHero.tsx",lineNumber:98,columnNumber:9},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/operator/escalation-detail/EscalationHero.tsx",lineNumber:47,columnNumber:7},this),e.jsxDEV(be,{open:o,children:e.jsxDEV("div",{className:"mt-4 bg-surface-raised border border-surface-border rounded-md p-4 flex flex-wrap gap-x-8 gap-y-4",children:[e.jsxDEV("div",{className:"text-left",children:[e.jsxDEV("span",{className:"text-[11px] font-medium text-text-secondary uppercase tracking-wide",children:"Priority"},void 0,!1,{fileName:"/app/dashboard/src/pages/operator/escalation-detail/EscalationHero.tsx",lineNumber:117,columnNumber:13},this),e.jsxDEV("p",{className:"text-[12px] text-text-primary mt-0.5",children:["P",a.priority]},void 0,!0,{fileName:"/app/dashboard/src/pages/operator/escalation-detail/EscalationHero.tsx",lineNumber:118,columnNumber:13},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/operator/escalation-detail/EscalationHero.tsx",lineNumber:116,columnNumber:11},this),e.jsxDEV(k,{label:"Escalation ID",value:a.id},void 0,!1,{fileName:"/app/dashboard/src/pages/operator/escalation-detail/EscalationHero.tsx",lineNumber:120,columnNumber:11},this),a.task_id&&e.jsxDEV(k,{label:"Task",value:a.task_id,href:`/workflows/tasks/detail/${a.task_id}`},void 0,!1,{fileName:"/app/dashboard/src/pages/operator/escalation-detail/EscalationHero.tsx",lineNumber:122,columnNumber:13},this),e.jsxDEV(k,{label:"Workflow",value:a.workflow_type},void 0,!1,{fileName:"/app/dashboard/src/pages/operator/escalation-detail/EscalationHero.tsx",lineNumber:124,columnNumber:11},this),e.jsxDEV(k,{label:"Workflow ID",value:a.workflow_id},void 0,!1,{fileName:"/app/dashboard/src/pages/operator/escalation-detail/EscalationHero.tsx",lineNumber:125,columnNumber:11},this),e.jsxDEV(k,{label:"Task Queue",value:a.task_queue},void 0,!1,{fileName:"/app/dashboard/src/pages/operator/escalation-detail/EscalationHero.tsx",lineNumber:126,columnNumber:11},this),a.origin_id&&a.origin_id!==a.workflow_id&&e.jsxDEV(k,{label:"Origin",value:a.origin_id},void 0,!1,{fileName:"/app/dashboard/src/pages/operator/escalation-detail/EscalationHero.tsx",lineNumber:128,columnNumber:13},this),a.trace_id&&e.jsxDEV(k,{label:"Trace",value:a.trace_id,href:r?r.replace("{traceId}",a.trace_id):void 0,external:!0},void 0,!1,{fileName:"/app/dashboard/src/pages/operator/escalation-detail/EscalationHero.tsx",lineNumber:131,columnNumber:13},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/operator/escalation-detail/EscalationHero.tsx",lineNumber:115,columnNumber:9},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/operator/escalation-detail/EscalationHero.tsx",lineNumber:114,columnNumber:7},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/operator/escalation-detail/EscalationHero.tsx",lineNumber:30,columnNumber:5},this)}function V(a){return a.replace(/`([^`]+)`/g,'<code class="px-1 py-0.5 bg-surface-sunken rounded text-xs font-mono">$1</code>').replace(/\*\*\*(.+?)\*\*\*/g,"<strong><em>$1</em></strong>").replace(/\*\*(.+?)\*\*/g,"<strong>$1</strong>").replace(/\*(.+?)\*/g,"<em>$1</em>").replace(/\[([^\]]+)\]\(([^)]+)\)/g,'<a href="$2" class="text-accent-primary hover:underline" target="_blank" rel="noopener noreferrer">$1</a>')}function q({content:a,compact:t}){const i=[],s=/^```(\w*)\n([\s\S]*?)^```$/gm;let r=0,o;for(;(o=s.exec(a))!==null;)o.index>r&&i.push({type:"text",text:a.slice(r,o.index)}),i.push({type:"code",lang:o[1],code:o[2].replace(/\n$/,"")}),r=o.index+o[0].length;r<a.length&&i.push({type:"text",text:a.slice(r)});const d=t?{text:"text-xs",heading:"text-xs",list:"text-xs",code:"text-[11px]"}:{text:"text-sm",heading:"text-sm",list:"text-sm",code:"text-xs"},m=[];for(const l of i){if(l.type==="code"){const c=l.code.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">");m.push(`<pre class="my-2 p-2.5 bg-surface-sunken rounded-md overflow-x-auto"><code class="${d.code} font-mono text-text-secondary leading-relaxed">${c}</code></pre>`);continue}m.push(...$e(l.text,d))}return e.jsxDEV("div",{className:"prose-sm",dangerouslySetInnerHTML:{__html:m.join(`
|
|
2
|
+
`)}},void 0,!1,{fileName:"/app/dashboard/src/components/common/display/SimpleMarkdown.tsx",lineNumber:54,columnNumber:5},this)}function $e(a,t){const i=a.split(`
|
|
3
|
+
`),s=[];let r=!1,o=!1,d=[];for(const m of i){const l=m.trim();if(l.startsWith("|")&&l.endsWith("|")){const c=l.slice(1,-1).split("|").map(n=>n.trim());if(c.every(n=>/^[-:]+$/.test(n)))continue;o||(o=!0,d=[]),d.push(c);continue}if(o){o=!1;const[c,...n]=d;s.push('<div class="overflow-x-auto my-2"><table class="text-xs w-full"><thead><tr>');for(const h of c)s.push(`<th class="text-left py-1 px-2 border-b border-border text-text-secondary font-medium">${V(h)}</th>`);s.push("</tr></thead><tbody>");for(const h of n){s.push("<tr>");for(const v of h)s.push(`<td class="py-1 px-2 border-b border-border/50">${V(v)}</td>`);s.push("</tr>")}s.push("</tbody></table></div>"),d=[]}if(!l){r&&(s.push("</ul>"),r=!1);continue}if(l.startsWith("### ")){r&&(s.push("</ul>"),r=!1),s.push(`<h4 class="${t.heading} font-semibold text-text-primary mt-3 mb-1">${V(l.slice(4))}</h4>`);continue}if(l.startsWith("## ")){r&&(s.push("</ul>"),r=!1),s.push(`<h3 class="${t.heading} font-semibold text-text-primary mt-3 mb-1">${V(l.slice(3))}</h3>`);continue}if(/^[-*_]{3,}$/.test(l)){r&&(s.push("</ul>"),r=!1),s.push('<hr class="border-border my-3" />');continue}if(/^[-*] /.test(l)){r||(s.push('<ul class="space-y-1 my-1">'),r=!0),s.push(`<li class="${t.list} text-text-secondary flex gap-2"><span class="text-text-tertiary shrink-0">-</span><span>${V(l.slice(2))}</span></li>`);continue}r&&(s.push("</ul>"),r=!1),s.push(`<p class="${t.text} text-text-secondary my-1">${V(l)}</p>`)}if(o&&d.length){const[m,...l]=d;s.push('<div class="overflow-x-auto my-2"><table class="text-xs w-full"><thead><tr>');for(const c of m)s.push(`<th class="text-left py-1 px-2 border-b border-border text-text-secondary font-medium">${V(c)}</th>`);s.push("</tr></thead><tbody>");for(const c of l){s.push("<tr>");for(const n of c)s.push(`<td class="py-1 px-2 border-b border-border/50">${V(n)}</td>`);s.push("</tr>")}s.push("</tbody></table></div>")}return r&&s.push("</ul>"),s}function Y({children:a}){return e.jsxDEV("p",{className:"text-[10px] font-semibold uppercase tracking-widest text-text-tertiary mb-1.5",children:a},void 0,!1,{fileName:"/app/dashboard/src/components/escalation/RoundsExhaustedContext.tsx",lineNumber:17,columnNumber:5},this)}function Me({payload:a,isTerminal:t,resolverPayload:i,onRetryTriage:s,isRetrying:r}){const o=a.title,d=a.summary,m=a.diagnosis,l=a.tool_calls_made,c=a.result,n=i==null?void 0:i._lt,h=(n==null?void 0:n.triaged)===!0,v=n==null?void 0:n.triageWorkflowId,x=t&&h,[N,f]=b.useState(!1);return x?e.jsxDEV("div",{className:"rounded-md border border-status-success/30 bg-surface-raised",children:[e.jsxDEV("div",{className:"flex items-center justify-between px-4 py-3 border-b border-surface-border",children:[e.jsxDEV("div",{className:"flex items-center gap-2",children:[e.jsxDEV("svg",{className:"w-4 h-4 text-status-success shrink-0",viewBox:"0 0 16 16",fill:"currentColor",children:e.jsxDEV("path",{d:"M8 1a7 7 0 110 14A7 7 0 018 1zm3.36 4.65a.5.5 0 00-.72 0L7 9.29 5.36 7.65a.5.5 0 10-.72.7l2 2a.5.5 0 00.72 0l4-4a.5.5 0 000-.7z"},void 0,!1,{fileName:"/app/dashboard/src/components/escalation/RoundsExhaustedContext.tsx",lineNumber:44,columnNumber:15},this)},void 0,!1,{fileName:"/app/dashboard/src/components/escalation/RoundsExhaustedContext.tsx",lineNumber:43,columnNumber:13},this),e.jsxDEV("span",{className:"text-xs font-medium text-status-success",children:"Resolved by AI Triage"},void 0,!1,{fileName:"/app/dashboard/src/components/escalation/RoundsExhaustedContext.tsx",lineNumber:46,columnNumber:13},this)]},void 0,!0,{fileName:"/app/dashboard/src/components/escalation/RoundsExhaustedContext.tsx",lineNumber:42,columnNumber:11},this),typeof l=="number"&&e.jsxDEV("span",{className:"text-[10px] font-mono px-2 py-0.5 rounded-full bg-status-success/10 text-status-success",children:[l," tool calls used"]},void 0,!0,{fileName:"/app/dashboard/src/components/escalation/RoundsExhaustedContext.tsx",lineNumber:49,columnNumber:13},this)]},void 0,!0,{fileName:"/app/dashboard/src/components/escalation/RoundsExhaustedContext.tsx",lineNumber:41,columnNumber:9},this),e.jsxDEV("div",{className:"px-4 py-4 space-y-4",children:[o&&e.jsxDEV("p",{className:"text-sm font-medium text-text-primary",children:o},void 0,!1,{fileName:"/app/dashboard/src/components/escalation/RoundsExhaustedContext.tsx",lineNumber:58,columnNumber:13},this),m&&e.jsxDEV("div",{children:[e.jsxDEV(Y,{children:"Triage diagnosis"},void 0,!1,{fileName:"/app/dashboard/src/components/escalation/RoundsExhaustedContext.tsx",lineNumber:63,columnNumber:15},this),e.jsxDEV("div",{className:"text-xs text-text-primary leading-relaxed",children:e.jsxDEV(q,{content:m},void 0,!1,{fileName:"/app/dashboard/src/components/escalation/RoundsExhaustedContext.tsx",lineNumber:65,columnNumber:17},this)},void 0,!1,{fileName:"/app/dashboard/src/components/escalation/RoundsExhaustedContext.tsx",lineNumber:64,columnNumber:15},this)]},void 0,!0,{fileName:"/app/dashboard/src/components/escalation/RoundsExhaustedContext.tsx",lineNumber:62,columnNumber:13},this),e.jsxDEV("div",{className:"flex items-center gap-3",children:v&&e.jsxDEV(oe,{to:`/workflows/executions/${v}`,className:"text-[10px] text-accent hover:underline",children:"View triage execution"},void 0,!1,{fileName:"/app/dashboard/src/components/escalation/RoundsExhaustedContext.tsx",lineNumber:72,columnNumber:15},this)},void 0,!1,{fileName:"/app/dashboard/src/components/escalation/RoundsExhaustedContext.tsx",lineNumber:70,columnNumber:11},this)]},void 0,!0,{fileName:"/app/dashboard/src/components/escalation/RoundsExhaustedContext.tsx",lineNumber:56,columnNumber:9},this)]},void 0,!0,{fileName:"/app/dashboard/src/components/escalation/RoundsExhaustedContext.tsx",lineNumber:39,columnNumber:7},this):e.jsxDEV("div",{className:"rounded-md border border-status-warning/30 bg-surface-raised",children:[e.jsxDEV("div",{className:"flex items-center justify-between px-4 py-3 border-b border-surface-border",children:[e.jsxDEV("div",{className:"flex items-center gap-2",children:[e.jsxDEV("svg",{className:"w-4 h-4 text-status-warning shrink-0",viewBox:"0 0 16 16",fill:"currentColor",children:e.jsxDEV("path",{d:"M8 1a7 7 0 110 14A7 7 0 018 1zm0 3a.75.75 0 00-.75.75v3.5a.75.75 0 001.5 0v-3.5A.75.75 0 008 4zm0 7a.75.75 0 100-1.5.75.75 0 000 1.5z"},void 0,!1,{fileName:"/app/dashboard/src/components/escalation/RoundsExhaustedContext.tsx",lineNumber:92,columnNumber:13},this)},void 0,!1,{fileName:"/app/dashboard/src/components/escalation/RoundsExhaustedContext.tsx",lineNumber:91,columnNumber:11},this),e.jsxDEV("span",{className:"text-xs font-medium text-status-warning",children:"Tool Rounds Exhausted"},void 0,!1,{fileName:"/app/dashboard/src/components/escalation/RoundsExhaustedContext.tsx",lineNumber:94,columnNumber:11},this)]},void 0,!0,{fileName:"/app/dashboard/src/components/escalation/RoundsExhaustedContext.tsx",lineNumber:90,columnNumber:9},this),typeof l=="number"&&e.jsxDEV("span",{className:"text-[10px] font-mono px-2 py-0.5 rounded-full bg-status-warning/10 text-status-warning",children:[l," tool calls used"]},void 0,!0,{fileName:"/app/dashboard/src/components/escalation/RoundsExhaustedContext.tsx",lineNumber:97,columnNumber:11},this)]},void 0,!0,{fileName:"/app/dashboard/src/components/escalation/RoundsExhaustedContext.tsx",lineNumber:89,columnNumber:7},this),e.jsxDEV("div",{className:"px-4 py-4 space-y-4",children:[o&&e.jsxDEV("p",{className:"text-sm font-medium text-text-primary",children:o},void 0,!1,{fileName:"/app/dashboard/src/components/escalation/RoundsExhaustedContext.tsx",lineNumber:106,columnNumber:11},this),d&&e.jsxDEV("div",{children:[e.jsxDEV(Y,{children:"What happened"},void 0,!1,{fileName:"/app/dashboard/src/components/escalation/RoundsExhaustedContext.tsx",lineNumber:111,columnNumber:13},this),e.jsxDEV("div",{className:"text-xs text-text-secondary leading-relaxed",children:e.jsxDEV(q,{content:d},void 0,!1,{fileName:"/app/dashboard/src/components/escalation/RoundsExhaustedContext.tsx",lineNumber:113,columnNumber:15},this)},void 0,!1,{fileName:"/app/dashboard/src/components/escalation/RoundsExhaustedContext.tsx",lineNumber:112,columnNumber:13},this)]},void 0,!0,{fileName:"/app/dashboard/src/components/escalation/RoundsExhaustedContext.tsx",lineNumber:110,columnNumber:11},this),m&&e.jsxDEV("div",{children:[e.jsxDEV(Y,{children:"What went wrong"},void 0,!1,{fileName:"/app/dashboard/src/components/escalation/RoundsExhaustedContext.tsx",lineNumber:120,columnNumber:13},this),e.jsxDEV("div",{className:"text-xs text-text-primary leading-relaxed",children:e.jsxDEV(q,{content:m},void 0,!1,{fileName:"/app/dashboard/src/components/escalation/RoundsExhaustedContext.tsx",lineNumber:122,columnNumber:15},this)},void 0,!1,{fileName:"/app/dashboard/src/components/escalation/RoundsExhaustedContext.tsx",lineNumber:121,columnNumber:13},this)]},void 0,!0,{fileName:"/app/dashboard/src/components/escalation/RoundsExhaustedContext.tsx",lineNumber:119,columnNumber:11},this),c!=null&&e.jsxDEV("div",{children:[e.jsxDEV("button",{onClick:()=>f(!N),className:"flex items-center gap-1 text-[10px] font-semibold uppercase tracking-widest text-text-tertiary hover:text-text-secondary transition-colors",children:[e.jsxDEV("svg",{className:`w-3 h-3 transition-transform ${N?"rotate-90":""}`,viewBox:"0 0 12 12",fill:"currentColor",children:e.jsxDEV("path",{d:"M4.5 2l4 4-4 4"},void 0,!1,{fileName:"/app/dashboard/src/components/escalation/RoundsExhaustedContext.tsx",lineNumber:134,columnNumber:17},this)},void 0,!1,{fileName:"/app/dashboard/src/components/escalation/RoundsExhaustedContext.tsx",lineNumber:133,columnNumber:15},this),"Partial results"]},void 0,!0,{fileName:"/app/dashboard/src/components/escalation/RoundsExhaustedContext.tsx",lineNumber:129,columnNumber:13},this),N&&e.jsxDEV("div",{className:"mt-2",children:e.jsxDEV(O,{data:c,defaultMode:"tree"},void 0,!1,{fileName:"/app/dashboard/src/components/escalation/RoundsExhaustedContext.tsx",lineNumber:140,columnNumber:17},this)},void 0,!1,{fileName:"/app/dashboard/src/components/escalation/RoundsExhaustedContext.tsx",lineNumber:139,columnNumber:15},this)]},void 0,!0,{fileName:"/app/dashboard/src/components/escalation/RoundsExhaustedContext.tsx",lineNumber:128,columnNumber:11},this),s&&!t&&e.jsxDEV("div",{className:"pt-2",children:e.jsxDEV("button",{onClick:s,disabled:r,className:"inline-flex items-center gap-2 px-4 py-2 text-xs font-medium bg-accent text-text-inverse rounded-md hover:bg-accent/90 disabled:opacity-50 disabled:cursor-not-allowed transition-colors",children:[e.jsxDEV("svg",{className:"w-3.5 h-3.5",viewBox:"0 0 14 14",fill:"currentColor",children:e.jsxDEV("path",{d:"M7 1a6 6 0 100 12A6 6 0 007 1zm2.5 6.5l-3.5 2V5.5l3.5 2z"},void 0,!1,{fileName:"/app/dashboard/src/components/escalation/RoundsExhaustedContext.tsx",lineNumber:154,columnNumber:17},this)},void 0,!1,{fileName:"/app/dashboard/src/components/escalation/RoundsExhaustedContext.tsx",lineNumber:153,columnNumber:15},this),r?"Sending to triage...":"Retry with AI Triage"]},void 0,!0,{fileName:"/app/dashboard/src/components/escalation/RoundsExhaustedContext.tsx",lineNumber:148,columnNumber:13},this)},void 0,!1,{fileName:"/app/dashboard/src/components/escalation/RoundsExhaustedContext.tsx",lineNumber:147,columnNumber:11},this)]},void 0,!0,{fileName:"/app/dashboard/src/components/escalation/RoundsExhaustedContext.tsx",lineNumber:104,columnNumber:7},this)]},void 0,!0,{fileName:"/app/dashboard/src/components/escalation/RoundsExhaustedContext.tsx",lineNumber:87,columnNumber:5},this)}function Ie({triage:a,payload:t}){const i=a.confidence??0,s=i>=.8?"text-status-success":i>=.5?"text-status-pending":"text-status-error",r=Le(a.originalData,t);return e.jsxDEV("div",{className:"space-y-5",children:[a.diagnosis&&e.jsxDEV("p",{className:"text-sm text-text-primary leading-relaxed",children:a.diagnosis},void 0,!1,{fileName:"/app/dashboard/src/components/escalation/TriageContext.tsx",lineNumber:37,columnNumber:9},this),e.jsxDEV("div",{className:"flex flex-wrap items-center gap-3 text-xs text-text-tertiary",children:[a.tool_calls_made!=null&&e.jsxDEV("span",{children:[a.tool_calls_made," tool call",a.tool_calls_made!==1?"s":""]},void 0,!0,{fileName:"/app/dashboard/src/components/escalation/TriageContext.tsx",lineNumber:44,columnNumber:11},this),a.tool_calls_made!=null&&e.jsxDEV("span",{className:"text-text-quaternary",children:"·"},void 0,!1,{fileName:"/app/dashboard/src/components/escalation/TriageContext.tsx",lineNumber:46,columnNumber:44},this),e.jsxDEV("span",{className:`font-medium ${s}`,children:[Math.round(i*100),"% confidence"]},void 0,!0,{fileName:"/app/dashboard/src/components/escalation/TriageContext.tsx",lineNumber:47,columnNumber:9},this)]},void 0,!0,{fileName:"/app/dashboard/src/components/escalation/TriageContext.tsx",lineNumber:42,columnNumber:7},this),a.actions_taken&&a.actions_taken.length>0&&e.jsxDEV("div",{className:"flex flex-wrap gap-1.5",children:a.actions_taken.map((o,d)=>e.jsxDEV("span",{className:`inline-flex items-center gap-1.5 px-2 py-0.5 text-[11px]
|
|
4
|
+
text-text-secondary`,children:[e.jsxDEV("svg",{className:"w-3 h-3 text-status-success shrink-0",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:2.5,children:e.jsxDEV("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M5 13l4 4L19 7"},void 0,!1,{fileName:"/app/dashboard/src/components/escalation/TriageContext.tsx",lineNumber:61,columnNumber:17},this)},void 0,!1,{fileName:"/app/dashboard/src/components/escalation/TriageContext.tsx",lineNumber:60,columnNumber:15},this),o]},d,!0,{fileName:"/app/dashboard/src/components/escalation/TriageContext.tsx",lineNumber:55,columnNumber:13},this))},void 0,!1,{fileName:"/app/dashboard/src/components/escalation/TriageContext.tsx",lineNumber:53,columnNumber:9},this),a.recommendation&&e.jsxDEV("p",{className:"text-[11px] text-text-tertiary italic",children:a.recommendation},void 0,!1,{fileName:"/app/dashboard/src/components/escalation/TriageContext.tsx",lineNumber:70,columnNumber:9},this),r.length>0&&e.jsxDEV("div",{className:"space-y-4 pt-2",children:r.map(o=>e.jsxDEV(We,{diff:o},o.key,!1,{fileName:"/app/dashboard/src/components/escalation/TriageContext.tsx",lineNumber:79,columnNumber:13},this))},void 0,!1,{fileName:"/app/dashboard/src/components/escalation/TriageContext.tsx",lineNumber:77,columnNumber:9},this)]},void 0,!0,{fileName:"/app/dashboard/src/components/escalation/TriageContext.tsx",lineNumber:34,columnNumber:5},this)}function Le(a,t){if(!a)return[];const i=[];for(const s of Object.keys(a)){if(s.startsWith("_"))continue;const r=a[s],o=t[s];o!==void 0&&JSON.stringify(r)!==JSON.stringify(o)&&i.push({key:s,label:s.replace(/[_-]/g," "),original:r,corrected:o})}return i}function We({diff:a}){const t=ee(a.original),i=ee(a.corrected);return t!==null&&i!==null?e.jsxDEV("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-x-8 gap-y-3",children:[e.jsxDEV("div",{children:[e.jsxDEV("p",{className:"text-[10px] font-semibold uppercase tracking-widest text-text-tertiary mb-1",children:[a.label," ",e.jsxDEV("span",{className:"normal-case font-normal",children:"(original)"},void 0,!1,{fileName:"/app/dashboard/src/components/escalation/TriageContext.tsx",lineNumber:130,columnNumber:26},this)]},void 0,!0,{fileName:"/app/dashboard/src/components/escalation/TriageContext.tsx",lineNumber:129,columnNumber:11},this),e.jsxDEV("p",{className:"text-sm text-text-tertiary leading-relaxed line-through decoration-text-tertiary/30",children:t},void 0,!1,{fileName:"/app/dashboard/src/components/escalation/TriageContext.tsx",lineNumber:132,columnNumber:11},this)]},void 0,!0,{fileName:"/app/dashboard/src/components/escalation/TriageContext.tsx",lineNumber:128,columnNumber:9},this),e.jsxDEV("div",{children:[e.jsxDEV("p",{className:"text-[10px] font-semibold uppercase tracking-widest text-text-tertiary mb-1",children:[a.label," ",e.jsxDEV("span",{className:"normal-case font-normal text-status-success",children:"(corrected)"},void 0,!1,{fileName:"/app/dashboard/src/components/escalation/TriageContext.tsx",lineNumber:138,columnNumber:26},this)]},void 0,!0,{fileName:"/app/dashboard/src/components/escalation/TriageContext.tsx",lineNumber:137,columnNumber:11},this),e.jsxDEV("p",{className:"text-sm text-text-primary leading-relaxed",children:i},void 0,!1,{fileName:"/app/dashboard/src/components/escalation/TriageContext.tsx",lineNumber:140,columnNumber:11},this)]},void 0,!0,{fileName:"/app/dashboard/src/components/escalation/TriageContext.tsx",lineNumber:136,columnNumber:9},this)]},void 0,!0,{fileName:"/app/dashboard/src/components/escalation/TriageContext.tsx",lineNumber:127,columnNumber:7},this):e.jsxDEV("div",{className:"space-y-3",children:[e.jsxDEV("div",{children:[e.jsxDEV("p",{className:"text-[10px] font-semibold uppercase tracking-widest text-text-tertiary mb-1",children:[a.label," ",e.jsxDEV("span",{className:"normal-case font-normal",children:"(original)"},void 0,!1,{fileName:"/app/dashboard/src/components/escalation/TriageContext.tsx",lineNumber:153,columnNumber:24},this)]},void 0,!0,{fileName:"/app/dashboard/src/components/escalation/TriageContext.tsx",lineNumber:152,columnNumber:9},this),e.jsxDEV("pre",{className:"text-xs text-text-tertiary font-mono whitespace-pre-wrap leading-relaxed",children:typeof a.original=="object"?JSON.stringify(a.original,null,2):String(a.original)},void 0,!1,{fileName:"/app/dashboard/src/components/escalation/TriageContext.tsx",lineNumber:155,columnNumber:9},this)]},void 0,!0,{fileName:"/app/dashboard/src/components/escalation/TriageContext.tsx",lineNumber:151,columnNumber:7},this),e.jsxDEV("div",{children:[e.jsxDEV("p",{className:"text-[10px] font-semibold uppercase tracking-widest text-text-tertiary mb-1",children:[a.label," ",e.jsxDEV("span",{className:"normal-case font-normal text-status-success",children:"(corrected)"},void 0,!1,{fileName:"/app/dashboard/src/components/escalation/TriageContext.tsx",lineNumber:161,columnNumber:24},this)]},void 0,!0,{fileName:"/app/dashboard/src/components/escalation/TriageContext.tsx",lineNumber:160,columnNumber:9},this),e.jsxDEV("pre",{className:"text-xs text-text-primary font-mono whitespace-pre-wrap leading-relaxed",children:typeof a.corrected=="object"?JSON.stringify(a.corrected,null,2):String(a.corrected)},void 0,!1,{fileName:"/app/dashboard/src/components/escalation/TriageContext.tsx",lineNumber:163,columnNumber:9},this)]},void 0,!0,{fileName:"/app/dashboard/src/components/escalation/TriageContext.tsx",lineNumber:159,columnNumber:7},this)]},void 0,!0,{fileName:"/app/dashboard/src/components/escalation/TriageContext.tsx",lineNumber:150,columnNumber:5},this)}function ee(a){return a==null?"null":typeof a=="string"?a:typeof a=="number"||typeof a=="boolean"?String(a):null}function Je({value:a,onChange:t}){const[i,s]=b.useState({}),[r,o]=b.useState({}),[d,m]=b.useState(null),[l,c]=b.useState(!1);b.useEffect(()=>{try{const x=JSON.parse(a);if(typeof x=="object"&&x!==null&&!Array.isArray(x)){const N={},f={};for(const[g,C]of Object.entries(x))g.startsWith("_")?f[g]=C:N[g]=C;s(N),o(f),m(f._form_schema&&typeof f._form_schema=="object"?f._form_schema:null),c(!1)}}catch{c(!0)}},[a]);const n=b.useCallback(x=>{s(x),t(JSON.stringify({...x,...r},null,2))},[r,t]),h=b.useCallback((x,N)=>{n({...i,[x]:N})},[i,n]);if(l)return e.jsxDEV("p",{className:"text-xs text-status-error",children:"Unable to parse resolver data as form. Use the JSON editor below."},void 0,!1,{fileName:"/app/dashboard/src/components/escalation/ResolverForm.tsx",lineNumber:66,columnNumber:7},this);const v=Object.entries(i);return v.length===0?e.jsxDEV("p",{className:"text-xs text-text-tertiary italic",children:"No resolver fields defined."},void 0,!1,{fileName:"/app/dashboard/src/components/escalation/ResolverForm.tsx",lineNumber:75,columnNumber:7},this):e.jsxDEV("div",{className:"space-y-4",children:v.map(([x,N])=>e.jsxDEV(re,{fieldKey:x,value:N,onChange:f=>h(x,f),schema:d},x,!1,{fileName:"/app/dashboard/src/components/escalation/ResolverForm.tsx",lineNumber:84,columnNumber:9},this))},void 0,!1,{fileName:"/app/dashboard/src/components/escalation/ResolverForm.tsx",lineNumber:82,columnNumber:5},this)}function re({fieldKey:a,value:t,onChange:i,schema:s}){var d;const r=a.replace(/[_-]/g," "),o=(d=s==null?void 0:s.properties)==null?void 0:d[a];if(typeof t=="boolean")return e.jsxDEV("label",{className:"flex items-center gap-2 cursor-pointer",children:[e.jsxDEV("input",{type:"checkbox",checked:t,onChange:m=>i(m.target.checked),className:"w-3.5 h-3.5 rounded accent-accent"},void 0,!1,{fileName:"/app/dashboard/src/components/escalation/ResolverForm.tsx",lineNumber:113,columnNumber:9},this),e.jsxDEV("span",{className:"text-[10px] font-semibold uppercase tracking-widest text-text-tertiary",children:r},void 0,!1,{fileName:"/app/dashboard/src/components/escalation/ResolverForm.tsx",lineNumber:119,columnNumber:9},this)]},void 0,!0,{fileName:"/app/dashboard/src/components/escalation/ResolverForm.tsx",lineNumber:112,columnNumber:7},this);if(typeof t=="number")return e.jsxDEV("div",{children:[e.jsxDEV(y,{children:r},void 0,!1,{fileName:"/app/dashboard/src/components/escalation/ResolverForm.tsx",lineNumber:130,columnNumber:9},this),e.jsxDEV("input",{type:"number",value:t,onChange:m=>i(parseFloat(m.target.value)||0),step:"any",className:"input text-sm w-full mt-1"},void 0,!1,{fileName:"/app/dashboard/src/components/escalation/ResolverForm.tsx",lineNumber:131,columnNumber:9},this)]},void 0,!0,{fileName:"/app/dashboard/src/components/escalation/ResolverForm.tsx",lineNumber:129,columnNumber:7},this);if(typeof t=="string"){const m=(o==null?void 0:o.format)==="password",l=o==null?void 0:o.enum,c=o==null?void 0:o.description;return l!=null&&l.length?e.jsxDEV("div",{children:[e.jsxDEV(y,{children:r},void 0,!1,{fileName:"/app/dashboard/src/components/escalation/ResolverForm.tsx",lineNumber:151,columnNumber:11},this),c&&e.jsxDEV("p",{className:"text-[10px] text-text-tertiary mt-0.5",children:c},void 0,!1,{fileName:"/app/dashboard/src/components/escalation/ResolverForm.tsx",lineNumber:152,columnNumber:26},this),e.jsxDEV("select",{value:t,onChange:n=>i(n.target.value),className:"input text-sm w-full mt-1",children:l.map(n=>e.jsxDEV("option",{value:n,children:n},n,!1,{fileName:"/app/dashboard/src/components/escalation/ResolverForm.tsx",lineNumber:159,columnNumber:15},this))},void 0,!1,{fileName:"/app/dashboard/src/components/escalation/ResolverForm.tsx",lineNumber:153,columnNumber:11},this)]},void 0,!0,{fileName:"/app/dashboard/src/components/escalation/ResolverForm.tsx",lineNumber:150,columnNumber:9},this):m?e.jsxDEV("div",{children:[e.jsxDEV(y,{children:r},void 0,!1,{fileName:"/app/dashboard/src/components/escalation/ResolverForm.tsx",lineNumber:169,columnNumber:11},this),c&&e.jsxDEV("p",{className:"text-[10px] text-text-tertiary mt-0.5",children:c},void 0,!1,{fileName:"/app/dashboard/src/components/escalation/ResolverForm.tsx",lineNumber:170,columnNumber:26},this),e.jsxDEV("input",{type:"password",value:t,onChange:n=>i(n.target.value),className:"input text-sm w-full mt-1",autoComplete:"off"},void 0,!1,{fileName:"/app/dashboard/src/components/escalation/ResolverForm.tsx",lineNumber:171,columnNumber:11},this)]},void 0,!0,{fileName:"/app/dashboard/src/components/escalation/ResolverForm.tsx",lineNumber:168,columnNumber:9},this):t.length>80?e.jsxDEV("div",{children:[e.jsxDEV(y,{children:r},void 0,!1,{fileName:"/app/dashboard/src/components/escalation/ResolverForm.tsx",lineNumber:185,columnNumber:11},this),c&&e.jsxDEV("p",{className:"text-[10px] text-text-tertiary mt-0.5",children:c},void 0,!1,{fileName:"/app/dashboard/src/components/escalation/ResolverForm.tsx",lineNumber:186,columnNumber:26},this),e.jsxDEV("textarea",{value:t,onChange:n=>i(n.target.value),className:"input text-sm w-full mt-1 leading-relaxed",rows:Math.min(6,Math.ceil(t.length/60))},void 0,!1,{fileName:"/app/dashboard/src/components/escalation/ResolverForm.tsx",lineNumber:187,columnNumber:11},this)]},void 0,!0,{fileName:"/app/dashboard/src/components/escalation/ResolverForm.tsx",lineNumber:184,columnNumber:9},this):e.jsxDEV("div",{children:[e.jsxDEV(y,{children:r},void 0,!1,{fileName:"/app/dashboard/src/components/escalation/ResolverForm.tsx",lineNumber:198,columnNumber:9},this),c&&e.jsxDEV("p",{className:"text-[10px] text-text-tertiary mt-0.5",children:c},void 0,!1,{fileName:"/app/dashboard/src/components/escalation/ResolverForm.tsx",lineNumber:199,columnNumber:24},this),e.jsxDEV("input",{type:"text",value:t,onChange:n=>i(n.target.value),className:"input text-sm w-full mt-1"},void 0,!1,{fileName:"/app/dashboard/src/components/escalation/ResolverForm.tsx",lineNumber:200,columnNumber:9},this)]},void 0,!0,{fileName:"/app/dashboard/src/components/escalation/ResolverForm.tsx",lineNumber:197,columnNumber:7},this)}if(t===null)return e.jsxDEV("div",{children:[e.jsxDEV(y,{children:r},void 0,!1,{fileName:"/app/dashboard/src/components/escalation/ResolverForm.tsx",lineNumber:214,columnNumber:9},this),e.jsxDEV("p",{className:"text-xs text-text-tertiary italic mt-1",children:"null"},void 0,!1,{fileName:"/app/dashboard/src/components/escalation/ResolverForm.tsx",lineNumber:215,columnNumber:9},this)]},void 0,!0,{fileName:"/app/dashboard/src/components/escalation/ResolverForm.tsx",lineNumber:213,columnNumber:7},this);if(Array.isArray(t))return e.jsxDEV("div",{children:[e.jsxDEV(y,{children:r},void 0,!1,{fileName:"/app/dashboard/src/components/escalation/ResolverForm.tsx",lineNumber:224,columnNumber:9},this),e.jsxDEV("div",{className:"flex flex-wrap gap-1.5 mt-1",children:t.map((m,l)=>e.jsxDEV("span",{className:"px-2 py-0.5 text-[11px] font-mono bg-surface-sunken rounded text-text-secondary",children:String(m)},l,!1,{fileName:"/app/dashboard/src/components/escalation/ResolverForm.tsx",lineNumber:227,columnNumber:13},this))},void 0,!1,{fileName:"/app/dashboard/src/components/escalation/ResolverForm.tsx",lineNumber:225,columnNumber:9},this)]},void 0,!0,{fileName:"/app/dashboard/src/components/escalation/ResolverForm.tsx",lineNumber:223,columnNumber:7},this);if(typeof t=="object"){const m=Object.entries(t);return e.jsxDEV("div",{children:[e.jsxDEV(y,{children:r},void 0,!1,{fileName:"/app/dashboard/src/components/escalation/ResolverForm.tsx",lineNumber:244,columnNumber:9},this),e.jsxDEV("div",{className:"ml-4 mt-2 pl-4 border-l border-accent-faint space-y-3",children:m.map(([l,c])=>e.jsxDEV(re,{fieldKey:l,value:c,onChange:n=>i({...t,[l]:n})},l,!1,{fileName:"/app/dashboard/src/components/escalation/ResolverForm.tsx",lineNumber:247,columnNumber:13},this))},void 0,!1,{fileName:"/app/dashboard/src/components/escalation/ResolverForm.tsx",lineNumber:245,columnNumber:9},this)]},void 0,!0,{fileName:"/app/dashboard/src/components/escalation/ResolverForm.tsx",lineNumber:243,columnNumber:7},this)}return null}function y({children:a}){return e.jsxDEV("label",{className:"text-[10px] font-semibold uppercase tracking-widest text-text-tertiary",children:a},void 0,!1,{fileName:"/app/dashboard/src/components/escalation/ResolverForm.tsx",lineNumber:264,columnNumber:5},this)}function ze({json:a,onJsonChange:t,requestTriage:i,onRequestTriageChange:s,triageNotes:r,onTriageNotesChange:o}){const[d,m]=b.useState("form");return e.jsxDEV(e.Fragment,{children:[e.jsxDEV("div",{className:"flex items-center justify-between mb-3",children:[i?e.jsxDEV("button",{onClick:()=>s(!1),className:"group flex items-center gap-2 text-left","data-testid":"triage-cancel",children:[e.jsxDEV("span",{className:"flex items-center justify-center w-5 h-5 rounded-full bg-accent/10 text-accent shrink-0",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:"M6 18L18 6M6 6l12 12"},void 0,!1,{fileName:"/app/dashboard/src/pages/operator/escalation-detail/ResolverSection.tsx",lineNumber:33,columnNumber:17},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/operator/escalation-detail/ResolverSection.tsx",lineNumber:32,columnNumber:15},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/operator/escalation-detail/ResolverSection.tsx",lineNumber:31,columnNumber:13},this),e.jsxDEV("span",{className:"text-xs text-text-secondary group-hover:text-text-primary transition-colors",children:["AI Triage active."," ",e.jsxDEV("span",{className:"text-accent group-hover:underline",children:"Cancel"},void 0,!1,{fileName:"/app/dashboard/src/pages/operator/escalation-detail/ResolverSection.tsx",lineNumber:38,columnNumber:15},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/operator/escalation-detail/ResolverSection.tsx",lineNumber:36,columnNumber:13},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/operator/escalation-detail/ResolverSection.tsx",lineNumber:26,columnNumber:11},this):e.jsxDEV("button",{onClick:()=>s(!0),className:"group flex items-center gap-2.5 text-left my-4","data-testid":"triage-callout",children:[e.jsxDEV("span",{className:"flex items-center justify-center w-6 h-6 rounded-full bg-accent/10 text-accent shrink-0 animate-[triage-glow_6s_ease-in-out_infinite]",children:e.jsxDEV("svg",{className:"w-3.5 h-3.5",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/operator/escalation-detail/ResolverSection.tsx",lineNumber:49,columnNumber:17},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/operator/escalation-detail/ResolverSection.tsx",lineNumber:48,columnNumber:15},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/operator/escalation-detail/ResolverSection.tsx",lineNumber:47,columnNumber:13},this),e.jsxDEV("span",{className:"text-[13px] text-text-secondary group-hover:text-text-primary transition-colors",children:["This form doesn't capture the issue?"," ",e.jsxDEV("span",{className:"text-accent group-hover:underline",children:"Request AI Triage"},void 0,!1,{fileName:"/app/dashboard/src/pages/operator/escalation-detail/ResolverSection.tsx",lineNumber:54,columnNumber:15},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/operator/escalation-detail/ResolverSection.tsx",lineNumber:52,columnNumber:13},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/operator/escalation-detail/ResolverSection.tsx",lineNumber:42,columnNumber:11},this),!i&&e.jsxDEV("button",{onClick:()=>m(d==="form"?"json":"form"),className:"text-[10px] text-text-tertiary hover:text-accent transition-colors",children:d==="form"?"Raw JSON":"Form"},void 0,!1,{fileName:"/app/dashboard/src/pages/operator/escalation-detail/ResolverSection.tsx",lineNumber:60,columnNumber:11},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/operator/escalation-detail/ResolverSection.tsx",lineNumber:24,columnNumber:7},this),e.jsxDEV("div",{className:"relative min-h-[200px]",children:[e.jsxDEV("div",{className:i?"pointer-events-none select-none":"",children:d==="form"?e.jsxDEV(Je,{value:a,onChange:t},void 0,!1,{fileName:"/app/dashboard/src/pages/operator/escalation-detail/ResolverSection.tsx",lineNumber:73,columnNumber:13},this):e.jsxDEV("textarea",{value:a,onChange:l=>t(l.target.value),className:"input font-mono text-xs w-full",rows:8,spellCheck:!1,"data-testid":"resolve-json"},void 0,!1,{fileName:"/app/dashboard/src/pages/operator/escalation-detail/ResolverSection.tsx",lineNumber:75,columnNumber:13},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/operator/escalation-detail/ResolverSection.tsx",lineNumber:71,columnNumber:9},this),i&&e.jsxDEV("div",{className:"absolute inset-0 z-10 flex flex-col bg-surface/90 backdrop-blur-[2px] rounded-md border border-accent/20 p-5","data-testid":"triage-overlay",children:[e.jsxDEV("p",{className:"text-xs text-text-secondary mb-3 leading-relaxed",children:"The resolution form will not be submitted. Describe the issue so AI triage can diagnose and fix it using available tools. The corrected result will come back as a new escalation for your review."},void 0,!1,{fileName:"/app/dashboard/src/pages/operator/escalation-detail/ResolverSection.tsx",lineNumber:92,columnNumber:13},this),e.jsxDEV("textarea",{value:r,onChange:l=>o(l.target.value),placeholder:"e.g. Content is in Spanish — needs translation to English before review...",className:"input text-xs w-full flex-1 min-h-[80px] resize-none",autoFocus:!0,"data-testid":"triage-notes"},void 0,!1,{fileName:"/app/dashboard/src/pages/operator/escalation-detail/ResolverSection.tsx",lineNumber:98,columnNumber:13},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/operator/escalation-detail/ResolverSection.tsx",lineNumber:88,columnNumber:11},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/operator/escalation-detail/ResolverSection.tsx",lineNumber:69,columnNumber:7},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/operator/escalation-detail/ResolverSection.tsx",lineNumber:22,columnNumber:5},this)}function Oe({isRoundsExhausted:a,payloadObj:t,isTerminal:i,resolverPayload:s,onRetryTriage:r,isRetrying:o}){return e.jsxDEV(e.Fragment,{children:[a&&t&&e.jsxDEV("div",{className:"mt-8",children:e.jsxDEV(Me,{payload:t,isTerminal:i,resolverPayload:s,onRetryTriage:r,isRetrying:o},void 0,!1,{fileName:"/app/dashboard/src/pages/operator/escalation-detail/EscalationDetailSections.tsx",lineNumber:32,columnNumber:11},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/operator/escalation-detail/EscalationDetailSections.tsx",lineNumber:31,columnNumber:9},this),(t==null?void 0:t.category)==="missing_credential"&&e.jsxDEV("div",{className:"mt-8 bg-status-warning/10 border border-status-warning/30 rounded-md px-5 py-4 flex items-start gap-3",children:[e.jsxDEV(Z,{size:20,className:"text-status-warning mt-0.5 shrink-0"},void 0,!1,{fileName:"/app/dashboard/src/pages/operator/escalation-detail/EscalationDetailSections.tsx",lineNumber:45,columnNumber:11},this),e.jsxDEV("div",{children:[e.jsxDEV("p",{className:"text-sm font-medium text-text-primary mb-1",children:"Missing Credential"},void 0,!1,{fileName:"/app/dashboard/src/pages/operator/escalation-detail/EscalationDetailSections.tsx",lineNumber:47,columnNumber:13},this),e.jsxDEV("p",{className:"text-xs text-text-secondary mb-3",children:["This workflow requires a ",e.jsxDEV("span",{className:"font-medium capitalize",children:String(t.provider)},void 0,!1,{fileName:"/app/dashboard/src/pages/operator/escalation-detail/EscalationDetailSections.tsx",lineNumber:49,columnNumber:40},this)," credential to continue. Register one and then resolve this escalation to retry."]},void 0,!0,{fileName:"/app/dashboard/src/pages/operator/escalation-detail/EscalationDetailSections.tsx",lineNumber:48,columnNumber:13},this),e.jsxDEV(oe,{to:"/credentials",className:"btn-primary text-xs inline-flex items-center gap-1.5",children:[e.jsxDEV(Z,{size:12},void 0,!1,{fileName:"/app/dashboard/src/pages/operator/escalation-detail/EscalationDetailSections.tsx",lineNumber:56,columnNumber:15},this),"Go to Credentials"]},void 0,!0,{fileName:"/app/dashboard/src/pages/operator/escalation-detail/EscalationDetailSections.tsx",lineNumber:52,columnNumber:13},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/operator/escalation-detail/EscalationDetailSections.tsx",lineNumber:46,columnNumber:11},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/operator/escalation-detail/EscalationDetailSections.tsx",lineNumber:44,columnNumber:9},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/operator/escalation-detail/EscalationDetailSections.tsx",lineNumber:28,columnNumber:5},this)}function Ue({collapsed:a,toggleSection:t,esc:i,escalationPayload:s,resolverPayload:r,triageData:o,payloadObj:d,isTerminal:m,claimedByMe:l,activeView:c,metadataFormSchema:n,json:h,onJsonChange:v,requestTriage:x,onRequestTriageChange:N,triageNotes:f,onTriageNotesChange:g}){return e.jsxDEV("div",{className:"mt-8 space-y-6",children:[e.jsxDEV(K,{title:"Input / Output",sectionKey:"context",isCollapsed:a.context??!0,onToggle:t,contentClassName:"mt-4 ml-9",children:e.jsxDEV("div",{className:"space-y-6",children:[e.jsxDEV("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-4",children:[!!i.envelope&&e.jsxDEV("div",{children:e.jsxDEV(O,{data:i.envelope,label:"Input Envelope"},void 0,!1,{fileName:"/app/dashboard/src/pages/operator/escalation-detail/EscalationDetailSections.tsx",lineNumber:123,columnNumber:17},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/operator/escalation-detail/EscalationDetailSections.tsx",lineNumber:122,columnNumber:15},this),s!=null&&e.jsxDEV("div",{children:e.jsxDEV(O,{data:s,label:"Escalation Context"},void 0,!1,{fileName:"/app/dashboard/src/pages/operator/escalation-detail/EscalationDetailSections.tsx",lineNumber:128,columnNumber:17},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/operator/escalation-detail/EscalationDetailSections.tsx",lineNumber:127,columnNumber:15},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/operator/escalation-detail/EscalationDetailSections.tsx",lineNumber:120,columnNumber:11},this),r!=null&&e.jsxDEV("div",{className:"max-w-xl",children:e.jsxDEV(O,{data:r,label:"Resolver Payload"},void 0,!1,{fileName:"/app/dashboard/src/pages/operator/escalation-detail/EscalationDetailSections.tsx",lineNumber:135,columnNumber:15},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/operator/escalation-detail/EscalationDetailSections.tsx",lineNumber:134,columnNumber:13},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/operator/escalation-detail/EscalationDetailSections.tsx",lineNumber:119,columnNumber:9},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/operator/escalation-detail/EscalationDetailSections.tsx",lineNumber:112,columnNumber:7},this),o&&d&&e.jsxDEV(K,{title:"AI Triage",sectionKey:"triage",isCollapsed:!!a.triage,onToggle:t,contentClassName:"mt-4 ml-9",children:e.jsxDEV(Ie,{triage:o,payload:d},void 0,!1,{fileName:"/app/dashboard/src/pages/operator/escalation-detail/EscalationDetailSections.tsx",lineNumber:150,columnNumber:11},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/operator/escalation-detail/EscalationDetailSections.tsx",lineNumber:143,columnNumber:9},this),!m&&l&&c==="resolve"&&!!(i.workflow_type||n)&&e.jsxDEV(K,{title:"Submit Your Resolution",sectionKey:"resolver",isCollapsed:!!a.resolver,onToggle:t,contentClassName:"mt-4 ml-9",children:e.jsxDEV(ze,{json:h,onJsonChange:v,requestTriage:x,onRequestTriageChange:N,triageNotes:f,onTriageNotesChange:g},void 0,!1,{fileName:"/app/dashboard/src/pages/operator/escalation-detail/EscalationDetailSections.tsx",lineNumber:163,columnNumber:11},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/operator/escalation-detail/EscalationDetailSections.tsx",lineNumber:156,columnNumber:9},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/operator/escalation-detail/EscalationDetailSections.tsx",lineNumber:110,columnNumber:5},this)}function ae(a){if(!a)return null;try{return JSON.parse(a)}catch{return a}}function Ke(a){if(!a)return!1;try{const t=JSON.parse(a);return!!(t&&typeof t=="object"&&t._triage)}catch{return!1}}function ua(){var G,Q;const{id:a}=Be(),{user:t}=Ne(),i=Fe(),{data:s,isLoading:r}=he(a);we(a);const o=fe(),d=ve(),m=ge(),{data:l}=Ee((s==null?void 0:s.role)??""),{data:c}=ye(),{data:n}=Ce(),h=c==null?void 0:c.find(p=>p.workflow_type===(s==null?void 0:s.workflow_type)),v=((G=n==null?void 0:n.telemetry)==null?void 0:G.traceUrl)??null,[x,N]=b.useState("resolve"),[f,g]=b.useState("{}"),[C,S]=b.useState({context:!1}),I=p=>S(M=>({...M,[p]:!M[p]})),[F,L]=b.useState(!1),[W,H]=b.useState(""),D=(h==null?void 0:h.resolver_schema)??null,j=((Q=s==null?void 0:s.metadata)==null?void 0:Q.form_schema)??null,_=j??D;b.useEffect(()=>{const p=j??(D!=null&&D.properties?D:null);if(p!=null&&p.properties){const M={_form_schema:p};for(const[ue,pe]of Object.entries(p.properties)){const xe=pe;M[ue]=xe.default??""}g(JSON.stringify(M,null,2))}else g(_?JSON.stringify(_,null,2):"{}")},[_,j,D]);const P=Ke(s==null?void 0:s.escalation_payload),A=(s==null?void 0:s.subtype)==="rounds_exhausted",T=(s==null?void 0:s.subtype)==="wait_for_human";if(b.useEffect(()=>{(P||A)&&S(p=>({...p,context:!0})),T&&j&&S(p=>({...p,context:!0,resolver:!1}))},[P,A,T,j]),r)return e.jsxDEV("div",{className:"animate-pulse space-y-8",children:[e.jsxDEV("div",{className:"h-8 bg-surface-sunken rounded w-64"},void 0,!1,{fileName:"/app/dashboard/src/pages/operator/escalation-detail/EscalationDetailPage.tsx",lineNumber:103,columnNumber:9},this),e.jsxDEV("div",{className:"h-32 bg-surface-sunken rounded w-full"},void 0,!1,{fileName:"/app/dashboard/src/pages/operator/escalation-detail/EscalationDetailPage.tsx",lineNumber:104,columnNumber:9},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/operator/escalation-detail/EscalationDetailPage.tsx",lineNumber:102,columnNumber:7},this);if(!s)return e.jsxDEV("p",{className:"text-sm text-text-secondary",children:"Escalation not found."},void 0,!1,{fileName:"/app/dashboard/src/pages/operator/escalation-detail/EscalationDetailPage.tsx",lineNumber:110,columnNumber:12},this);const $=Ve(s),E=$&&s.assigned_to===(t==null?void 0:t.userId),U=$&&!E,B=s.status==="resolved"||s.status==="cancelled",w=ae(s.escalation_payload),R=ae(s.resolver_payload),u=typeof w=="object"&&w!==null&&!Array.isArray(w)?w:null,J=u==null?void 0:u._triage,ie=B?"terminal":E?"claimed_by_me":U?"claimed_by_other":"available",le=p=>{o.mutate({id:s.id,durationMinutes:p}),S({context:!0,triage:!0,resolver:!1})},z=()=>i(-1),ne=async p=>{await d.mutateAsync({id:s.id,resolverPayload:p}),z()},ce=async p=>{p&&(await m.mutateAsync({id:s.id,targetRole:p}),z())},de=async()=>{E||await o.mutateAsync({id:s.id,durationMinutes:30});const p=(u==null?void 0:u.diagnosis)||s.description||"";await d.mutateAsync({id:s.id,resolverPayload:{_lt:{needsTriage:!0},notes:p}}),z()},me=async()=>{await o.mutateAsync({id:s.id,durationMinutes:0}),z()};return e.jsxDEV("div",{className:"min-h-[calc(100vh-9rem)] flex flex-col",children:[e.jsxDEV(De,{title:"Escalation"},void 0,!1,{fileName:"/app/dashboard/src/pages/operator/escalation-detail/EscalationDetailPage.tsx",lineNumber:171,columnNumber:7},this),e.jsxDEV(Pe,{esc:s,claimedByMe:E,claimed:$,isTerminal:B,traceUrl:v},void 0,!1,{fileName:"/app/dashboard/src/pages/operator/escalation-detail/EscalationDetailPage.tsx",lineNumber:173,columnNumber:7},this),e.jsxDEV(Oe,{isRoundsExhausted:A,payloadObj:u,isTerminal:B,resolverPayload:R,onRetryTriage:de,isRetrying:o.isPending||d.isPending},void 0,!1,{fileName:"/app/dashboard/src/pages/operator/escalation-detail/EscalationDetailPage.tsx",lineNumber:181,columnNumber:7},this),e.jsxDEV(Ue,{collapsed:C,toggleSection:I,esc:s,escalationPayload:w,resolverPayload:R,triageData:J,payloadObj:u,isTerminal:B,claimedByMe:E,activeView:x,metadataFormSchema:j,json:f,onJsonChange:g,requestTriage:F,onRequestTriageChange:L,triageNotes:W,onTriageNotesChange:H},void 0,!1,{fileName:"/app/dashboard/src/pages/operator/escalation-detail/EscalationDetailPage.tsx",lineNumber:190,columnNumber:7},this),e.jsxDEV("div",{className:"flex-1"},void 0,!1,{fileName:"/app/dashboard/src/pages/operator/escalation-detail/EscalationDetailPage.tsx",lineNumber:210,columnNumber:7},this),e.jsxDEV(He,{mode:ie,activeView:x,onActiveViewChange:N,onClaim:le,claimPending:o.isPending,workflowType:s.workflow_type,json:f,onResolve:ne,resolvePending:d.isPending,resolveError:d.error,requestTriage:F,triageNotes:W,currentRole:s.role,escalationTargets:(l==null?void 0:l.targets)??[],onEscalate:ce,escalatePending:m.isPending,escalateError:m.error,onRelease:me,releasePending:o.isPending,assignedTo:s.assigned_to,assignedUntil:s.assigned_until},void 0,!1,{fileName:"/app/dashboard/src/pages/operator/escalation-detail/EscalationDetailPage.tsx",lineNumber:212,columnNumber:7},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/operator/escalation-detail/EscalationDetailPage.tsx",lineNumber:170,columnNumber:5},this)}export{ua as EscalationDetailPage};
|
|
5
|
+
//# sourceMappingURL=index-KYpLvJKB.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index-KYpLvJKB.js","sources":["../../src/pages/operator/escalation-detail/EscalationActionBar.tsx","../../src/pages/operator/escalation-detail/EscalationHero.tsx","../../src/components/common/display/SimpleMarkdown.tsx","../../src/components/escalation/RoundsExhaustedContext.tsx","../../src/components/escalation/TriageContext.tsx","../../src/components/escalation/ResolverForm.tsx","../../src/pages/operator/escalation-detail/ResolverSection.tsx","../../src/pages/operator/escalation-detail/EscalationDetailSections.tsx","../../src/pages/operator/escalation-detail/EscalationDetailPage.tsx"],"sourcesContent":["import { useState, useCallback } from 'react';\nimport { CountdownTimer } from '../../../components/common/display/CountdownTimer';\nimport { UserName } from '../../../components/common/display/UserName';\nimport { CustomDurationPicker } from '../../../components/common/form/CustomDurationPicker';\nimport { useClaimDurations } from '../../../hooks/useClaimDurations';\n\n// ---------------------------------------------------------------------------\n// Types\n// ---------------------------------------------------------------------------\n\nexport type ActionBarMode =\n | 'available' // unclaimed — show claim controls\n | 'claimed_by_me' // I own it — show resolve/escalate/release\n | 'claimed_by_other'// someone else has it\n | 'terminal'; // resolved or cancelled — nothing to do\n\nexport type ActiveView = 'resolve' | 'escalate' | 'release';\n\nexport interface EscalationActionBarProps {\n mode: ActionBarMode;\n // Active view (controlled by parent)\n activeView: ActiveView;\n onActiveViewChange: (view: ActiveView) => void;\n // Claim\n onClaim: (minutes: number) => void;\n claimPending: boolean;\n // Resolve — JSON lives in viewport, bar reads it for submit\n workflowType: string | null;\n json: string;\n onResolve: (payload: Record<string, unknown>) => void;\n resolvePending: boolean;\n resolveError: Error | null;\n // Triage (controlled by parent — callout + overlay render in page body)\n requestTriage: boolean;\n triageNotes: string;\n // Escalate\n currentRole: string;\n escalationTargets: string[];\n onEscalate: (role: string) => void;\n escalatePending: boolean;\n escalateError: Error | null;\n // Release\n onRelease: () => void;\n releasePending: boolean;\n // Other user\n assignedTo?: string | null;\n assignedUntil?: string | null;\n}\n\n// ---------------------------------------------------------------------------\n// Component\n// ---------------------------------------------------------------------------\n\nexport function EscalationActionBar(props: EscalationActionBarProps) {\n const {\n mode, activeView, onActiveViewChange,\n onClaim, claimPending,\n workflowType, json, onResolve, resolvePending, resolveError,\n requestTriage, triageNotes,\n currentRole, escalationTargets, onEscalate, escalatePending, escalateError,\n onRelease, releasePending,\n assignedTo, assignedUntil,\n } = props;\n\n const claimDurations = useClaimDurations();\n const [duration, setDuration] = useState('30');\n const [customMinutes, setCustomMinutes] = useState(0);\n const [parseError, setParseError] = useState('');\n const [escalateTarget, setEscalateTarget] = useState('');\n\n const isCustom = duration === 'custom';\n const onCustomChange = useCallback((m: number) => setCustomMinutes(m), []);\n\n if (mode === 'terminal') return null;\n\n const handleClaim = () => {\n const minutes = isCustom ? customMinutes : parseInt(duration);\n if (!minutes || minutes <= 0) return;\n onClaim(minutes);\n };\n\n const handleSubmitResolve = () => {\n setParseError('');\n\n // When triage is requested, ignore the form payload entirely.\n // Only the triage flag and notes matter — the form data (e.g.\n // approved: true) must NOT leak through, as it would confuse\n // the triage workflow into thinking the issue is already resolved.\n if (requestTriage) {\n const payload: Record<string, unknown> = {\n _lt: { needsTriage: true },\n };\n if (triageNotes.trim()) payload.notes = triageNotes.trim();\n onResolve(payload);\n return;\n }\n\n let payload: Record<string, unknown>;\n try {\n payload = JSON.parse(json);\n } catch {\n setParseError('Invalid JSON');\n return;\n }\n onResolve(payload);\n };\n\n const tabClass = (active: boolean) =>\n `text-xs transition-colors ${active ? 'text-accent font-medium' : 'text-text-tertiary hover:text-accent'}`;\n\n return (\n <div className=\"sticky h-[80px] bg-surface/95 backdrop-blur-sm border-t border-surface-border -mx-10 px-10 pt-3 pb-5 z-10\" style={{ bottom: 'calc(var(--feed-height, 0px) - 8px)' }} data-testid=\"escalation-action-bar\">\n\n {/* ── Available: claim ── */}\n {mode === 'available' && (\n <div data-testid=\"claim-bar\">\n {/* Duration tab row */}\n <div className=\"flex items-center gap-4 mb-2\">\n {claimDurations.map((opt) => (\n <button\n key={opt.value}\n onClick={() => { setDuration(opt.value); setCustomMinutes(0); }}\n className={tabClass(!isCustom && duration === opt.value)}\n >\n {opt.label}\n </button>\n ))}\n <button\n onClick={() => setDuration('custom')}\n className={tabClass(isCustom)}\n >\n Other\n </button>\n </div>\n {/* Action row — right-aligned */}\n <div className=\"flex items-center gap-3\">\n <div className=\"flex-1\" />\n {isCustom && (\n <CustomDurationPicker onChange={onCustomChange} compact autoFocus />\n )}\n <button\n onClick={handleClaim}\n disabled={claimPending || (isCustom && customMinutes <= 0)}\n className=\"btn-primary text-xs\"\n >\n {claimPending ? 'Claiming...' : 'Claim'}\n </button>\n </div>\n </div>\n )}\n\n {/* ── Claimed by other ── */}\n {mode === 'claimed_by_other' && (\n <div className=\"flex items-center gap-4\" data-testid=\"claimed-other-bar\">\n <p className=\"text-sm text-text-secondary\">\n Claimed by <span className=\"font-medium text-text-primary\">{assignedTo ? <UserName userId={assignedTo} /> : 'unknown'}</span>\n </p>\n {assignedUntil && <CountdownTimer until={assignedUntil} />}\n </div>\n )}\n\n {/* ── Claimed by me ── */}\n {mode === 'claimed_by_me' && (\n <div data-testid=\"action-bar\">\n {/* Tab row */}\n <div className=\"flex items-center gap-4 mb-2\">\n <button\n onClick={() => onActiveViewChange('resolve')}\n className={tabClass(activeView === 'resolve')}\n >\n {workflowType ? 'Resolve' : 'Acknowledge'}\n </button>\n {escalationTargets.length > 0 && (\n <button\n onClick={() => onActiveViewChange('escalate')}\n className={tabClass(activeView === 'escalate')}\n >\n Escalate\n </button>\n )}\n <button\n onClick={() => onActiveViewChange('release')}\n className={`text-xs transition-colors ${activeView === 'release' ? 'text-status-error font-medium' : 'text-text-tertiary hover:text-status-error'}`}\n >\n Release\n </button>\n </div>\n\n {/* ── Resolve controls ── */}\n {activeView === 'resolve' && (\n workflowType ? (\n <div className=\"flex items-center gap-4\">\n <div className=\"flex-1\" />\n\n {parseError && <span className=\"text-xs text-status-error\">{parseError}</span>}\n {resolveError && <span className=\"text-xs text-status-error\">{resolveError.message}</span>}\n\n <button\n onClick={handleSubmitResolve}\n disabled={resolvePending}\n className=\"btn-primary text-xs\"\n >\n {resolvePending ? 'Submitting...' : requestTriage ? 'Send to Triage' : 'Submit'}\n </button>\n </div>\n ) : (\n <div className=\"flex items-center\">\n <span className=\"text-xs text-text-secondary\">Notification — acknowledge to resolve</span>\n <div className=\"flex-1\" />\n {resolveError && <span className=\"text-xs text-status-error mr-3\">{resolveError.message}</span>}\n <button\n onClick={() => onResolve({ acknowledged: true })}\n disabled={resolvePending}\n className=\"btn-primary text-xs\"\n >\n {resolvePending ? 'Acknowledging...' : 'Acknowledge'}\n </button>\n </div>\n )\n )}\n\n {/* ── Escalate controls ── */}\n {activeView === 'escalate' && (\n <div className=\"flex items-center gap-3\">\n <span className=\"text-xs text-text-secondary\">\n From <span className=\"font-medium text-text-primary\">{currentRole}</span> to\n </span>\n <select\n value={escalateTarget}\n onChange={(e) => setEscalateTarget(e.target.value)}\n className=\"select text-xs\"\n data-testid=\"escalate-select\"\n >\n <option value=\"\">Select role...</option>\n {escalationTargets.map((role) => (\n <option key={role} value={role}>{role}</option>\n ))}\n </select>\n <div className=\"flex-1\" />\n {escalateError && <span className=\"text-xs text-status-error\">{escalateError.message}</span>}\n <button\n onClick={() => onEscalate(escalateTarget)}\n disabled={!escalateTarget || escalatePending}\n className=\"btn-primary text-xs\"\n >\n {escalatePending ? 'Escalating...' : 'Escalate'}\n </button>\n </div>\n )}\n\n {/* ── Release controls ── */}\n {activeView === 'release' && (\n <div className=\"flex items-center gap-3\">\n <span className=\"text-xs text-text-secondary\">Release back to pool?</span>\n <div className=\"flex-1\" />\n <button onClick={() => onActiveViewChange('resolve')} className=\"btn-secondary text-xs\">\n Cancel\n </button>\n <button\n onClick={onRelease}\n disabled={releasePending}\n className=\"btn-primary text-xs bg-status-error hover:bg-status-error/80\"\n >\n {releasePending ? 'Releasing...' : 'Yes, Release'}\n </button>\n </div>\n )}\n </div>\n )}\n </div>\n );\n}\n","import { useState } from 'react';\nimport { Bell, User } from 'lucide-react';\nimport { StatusBadge } from '../../../components/common/display/StatusBadge';\nimport { RolePill } from '../../../components/common/display/RolePill';\nimport { CountdownTimer } from '../../../components/common/display/CountdownTimer';\nimport { Collapsible } from '../../../components/common/layout/Collapsible';\nimport { DateValue } from '../../../components/common/display/DateValue';\nimport { CopyableId } from '../../../components/common/display/CopyableId';\nimport { UserName } from '../../../components/common/display/UserName';\nimport { isAckEscalation } from '../../../lib/escalation';\nimport type { LTEscalationRecord } from '../../../api/types';\n\nexport function EscalationHero({\n esc,\n claimedByMe: _claimedByMe,\n claimed,\n isTerminal,\n traceUrl,\n}: {\n esc: LTEscalationRecord;\n claimedByMe: boolean;\n claimed: boolean;\n isTerminal: boolean;\n traceUrl: string | null;\n}) {\n const [showDetails, setShowDetails] = useState(false);\n const isAck = isAckEscalation(esc);\n\n return (\n <>\n {/* Title */}\n <div className=\"flex items-center gap-3 mb-2\">\n {isAck && <Bell className=\"w-5 h-5 text-text-tertiary shrink-0\" />}\n <p className=\"text-[1.5rem] leading-snug font-light text-text-secondary\">\n {esc.type}{esc.subtype ? ` / ${esc.subtype}` : ''}\n </p>\n </div>\n\n {/* Description */}\n {esc.description && (\n <p className=\"text-sm leading-relaxed text-text-tertiary mb-4\">\n {esc.description}\n </p>\n )}\n\n {/* Meta bar — labeled sections, baseline-aligned values */}\n <div className=\"flex flex-wrap items-end gap-x-6 gap-y-3 mt-4 mb-2\">\n {/* Status */}\n <div>\n <p className=\"text-[9px] font-semibold uppercase tracking-widest text-text-tertiary mb-1.5\">Status</p>\n <span className=\"mb-1 inline-block\"><StatusBadge status={esc.status} /></span>\n </div>\n\n {/* Role */}\n <div>\n <p className=\"text-[9px] font-semibold uppercase tracking-widest text-text-tertiary mb-1.5\">Role</p>\n <RolePill role={esc.role} size=\"md\" />\n </div>\n\n {/* Created */}\n <div>\n <p className=\"text-[9px] font-semibold uppercase tracking-widest text-text-tertiary mb-1.5\">Created</p>\n <span className=\"inline-flex items-center mb-1 text-xs text-text-secondary\">\n <DateValue date={esc.created_at} />\n </span>\n </div>\n\n {/* Claimed by */}\n {esc.assigned_to && (\n <div>\n <p className=\"text-[9px] font-semibold uppercase tracking-widest text-text-tertiary mb-1.5\">Claimed by</p>\n <span className=\"inline-flex items-center gap-1.5 text-xs font-medium text-text-primary\">\n <User className=\"w-3 h-3 shrink-0 text-accent/75\" />\n <UserName userId={esc.assigned_to} />\n </span>\n </div>\n )}\n\n {/* Time left */}\n {claimed && !isTerminal && esc.assigned_until && (\n <div>\n <p className=\"text-[9px] font-semibold uppercase tracking-widest text-text-tertiary mb-1.5\">Time left</p>\n <span className=\"inline-flex items-center h-5\"><CountdownTimer until={esc.assigned_until} /></span>\n </div>\n )}\n\n {/* Resolved */}\n {esc.resolved_at && (\n <div>\n <p className=\"text-[9px] font-semibold uppercase tracking-widest text-text-tertiary mb-1.5\">Resolved</p>\n <span className=\"inline-flex items-center h-5 text-xs text-text-secondary\">\n <DateValue date={esc.resolved_at} />\n </span>\n </div>\n )}\n\n {/* Details toggle */}\n <div>\n <button\n onClick={() => setShowDetails(!showDetails)}\n className=\"inline-flex items-center gap-1 h-5 text-xs text-text-tertiary hover:text-accent transition-colors\"\n >\n Details\n <svg\n className={`w-3 h-3 transition-transform duration-200 ${showDetails ? 'rotate-180' : ''}`}\n fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" strokeWidth={2}\n >\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" d=\"M19 9l-7 7-7-7\" />\n </svg>\n </button>\n </div>\n </div>\n\n <Collapsible open={showDetails}>\n <div className=\"mt-4 bg-surface-raised border border-surface-border rounded-md p-4 flex flex-wrap gap-x-8 gap-y-4\">\n <div className=\"text-left\">\n <span className=\"text-[11px] font-medium text-text-secondary uppercase tracking-wide\">Priority</span>\n <p className=\"text-[12px] text-text-primary mt-0.5\">P{esc.priority}</p>\n </div>\n <CopyableId label=\"Escalation ID\" value={esc.id} />\n {esc.task_id && (\n <CopyableId label=\"Task\" value={esc.task_id} href={`/workflows/tasks/detail/${esc.task_id}`} />\n )}\n <CopyableId label=\"Workflow\" value={esc.workflow_type} />\n <CopyableId label=\"Workflow ID\" value={esc.workflow_id} />\n <CopyableId label=\"Task Queue\" value={esc.task_queue} />\n {esc.origin_id && esc.origin_id !== esc.workflow_id && (\n <CopyableId label=\"Origin\" value={esc.origin_id} />\n )}\n {esc.trace_id && (\n <CopyableId\n label=\"Trace\"\n value={esc.trace_id}\n href={traceUrl ? traceUrl.replace('{traceId}', esc.trace_id) : undefined}\n external\n />\n )}\n </div>\n </Collapsible>\n </>\n );\n}\n","/**\n * Lightweight markdown-to-HTML renderer for simple patterns.\n * No external dependency — handles bold, italic, code, links, headers, lists.\n */\n\nfunction renderInline(text: string): string {\n return text\n // Code spans\n .replace(/`([^`]+)`/g, '<code class=\"px-1 py-0.5 bg-surface-sunken rounded text-xs font-mono\">$1</code>')\n // Bold + italic\n .replace(/\\*\\*\\*(.+?)\\*\\*\\*/g, '<strong><em>$1</em></strong>')\n // Bold\n .replace(/\\*\\*(.+?)\\*\\*/g, '<strong>$1</strong>')\n // Italic\n .replace(/\\*(.+?)\\*/g, '<em>$1</em>')\n // Links\n .replace(/\\[([^\\]]+)\\]\\(([^)]+)\\)/g, '<a href=\"$2\" class=\"text-accent-primary hover:underline\" target=\"_blank\" rel=\"noopener noreferrer\">$1</a>');\n}\n\nexport function SimpleMarkdown({ content, compact }: { content: string; compact?: boolean }) {\n // Extract fenced code blocks before line-by-line processing\n const segments: Array<{ type: 'code'; lang: string; code: string } | { type: 'text'; text: string }> = [];\n const fencePattern = /^```(\\w*)\\n([\\s\\S]*?)^```$/gm;\n let lastIndex = 0;\n let match: RegExpExecArray | null;\n while ((match = fencePattern.exec(content)) !== null) {\n if (match.index > lastIndex) {\n segments.push({ type: 'text', text: content.slice(lastIndex, match.index) });\n }\n segments.push({ type: 'code', lang: match[1], code: match[2].replace(/\\n$/, '') });\n lastIndex = match.index + match[0].length;\n }\n if (lastIndex < content.length) {\n segments.push({ type: 'text', text: content.slice(lastIndex) });\n }\n\n const sizeClasses = compact\n ? { text: 'text-xs', heading: 'text-xs', list: 'text-xs', code: 'text-[11px]' }\n : { text: 'text-sm', heading: 'text-sm', list: 'text-sm', code: 'text-xs' };\n\n const allParts: string[] = [];\n for (const segment of segments) {\n if (segment.type === 'code') {\n const escaped = segment.code.replace(/&/g, '&').replace(/</g, '<').replace(/>/g, '>');\n allParts.push(\n `<pre class=\"my-2 p-2.5 bg-surface-sunken rounded-md overflow-x-auto\"><code class=\"${sizeClasses.code} font-mono text-text-secondary leading-relaxed\">${escaped}</code></pre>`,\n );\n continue;\n }\n allParts.push(...renderTextBlock(segment.text, sizeClasses));\n }\n\n return (\n <div\n className=\"prose-sm\"\n dangerouslySetInnerHTML={{ __html: allParts.join('\\n') }}\n />\n );\n}\n\nfunction renderTextBlock(\n text: string,\n sz: { text: string; heading: string; list: string; code: string },\n): string[] {\n const lines = text.split('\\n');\n const htmlParts: string[] = [];\n let inList = false;\n let inTable = false;\n let tableRows: string[][] = [];\n\n for (const line of lines) {\n const trimmed = line.trim();\n\n // Table rows\n if (trimmed.startsWith('|') && trimmed.endsWith('|')) {\n const cells = trimmed.slice(1, -1).split('|').map((c) => c.trim());\n // Skip separator rows (|---|---|)\n if (cells.every((c) => /^[-:]+$/.test(c))) continue;\n if (!inTable) {\n inTable = true;\n tableRows = [];\n }\n tableRows.push(cells);\n continue;\n }\n if (inTable) {\n inTable = false;\n const [header, ...body] = tableRows;\n htmlParts.push('<div class=\"overflow-x-auto my-2\"><table class=\"text-xs w-full\"><thead><tr>');\n for (const h of header) {\n htmlParts.push(`<th class=\"text-left py-1 px-2 border-b border-border text-text-secondary font-medium\">${renderInline(h)}</th>`);\n }\n htmlParts.push('</tr></thead><tbody>');\n for (const row of body) {\n htmlParts.push('<tr>');\n for (const cell of row) {\n htmlParts.push(`<td class=\"py-1 px-2 border-b border-border/50\">${renderInline(cell)}</td>`);\n }\n htmlParts.push('</tr>');\n }\n htmlParts.push('</tbody></table></div>');\n tableRows = [];\n }\n\n // Empty line\n if (!trimmed) {\n if (inList) { htmlParts.push('</ul>'); inList = false; }\n continue;\n }\n\n // Headers\n if (trimmed.startsWith('### ')) {\n if (inList) { htmlParts.push('</ul>'); inList = false; }\n htmlParts.push(`<h4 class=\"${sz.heading} font-semibold text-text-primary mt-3 mb-1\">${renderInline(trimmed.slice(4))}</h4>`);\n continue;\n }\n if (trimmed.startsWith('## ')) {\n if (inList) { htmlParts.push('</ul>'); inList = false; }\n htmlParts.push(`<h3 class=\"${sz.heading} font-semibold text-text-primary mt-3 mb-1\">${renderInline(trimmed.slice(3))}</h3>`);\n continue;\n }\n\n // Horizontal rule\n if (/^[-*_]{3,}$/.test(trimmed)) {\n if (inList) { htmlParts.push('</ul>'); inList = false; }\n htmlParts.push('<hr class=\"border-border my-3\" />');\n continue;\n }\n\n // List items\n if (/^[-*] /.test(trimmed)) {\n if (!inList) { htmlParts.push('<ul class=\"space-y-1 my-1\">'); inList = true; }\n htmlParts.push(`<li class=\"${sz.list} text-text-secondary flex gap-2\"><span class=\"text-text-tertiary shrink-0\">-</span><span>${renderInline(trimmed.slice(2))}</span></li>`);\n continue;\n }\n\n // Paragraph\n if (inList) { htmlParts.push('</ul>'); inList = false; }\n htmlParts.push(`<p class=\"${sz.text} text-text-secondary my-1\">${renderInline(trimmed)}</p>`);\n }\n\n // Flush any remaining table\n if (inTable && tableRows.length) {\n const [header, ...body] = tableRows;\n htmlParts.push('<div class=\"overflow-x-auto my-2\"><table class=\"text-xs w-full\"><thead><tr>');\n for (const h of header) {\n htmlParts.push(`<th class=\"text-left py-1 px-2 border-b border-border text-text-secondary font-medium\">${renderInline(h)}</th>`);\n }\n htmlParts.push('</tr></thead><tbody>');\n for (const row of body) {\n htmlParts.push('<tr>');\n for (const cell of row) {\n htmlParts.push(`<td class=\"py-1 px-2 border-b border-border/50\">${renderInline(cell)}</td>`);\n }\n htmlParts.push('</tr>');\n }\n htmlParts.push('</tbody></table></div>');\n }\n\n if (inList) htmlParts.push('</ul>');\n\n return htmlParts;\n}\n","import { useState } from 'react';\nimport { Link } from 'react-router-dom';\n\nimport { JsonViewer } from '../common/data/JsonViewer';\nimport { SimpleMarkdown } from '../common/display/SimpleMarkdown';\n\ninterface RoundsExhaustedContextProps {\n payload: Record<string, unknown>;\n isTerminal?: boolean;\n resolverPayload?: Record<string, unknown> | null;\n onRetryTriage?: () => void;\n isRetrying?: boolean;\n}\n\nfunction SectionLabel({ children }: { children: React.ReactNode }) {\n return (\n <p className=\"text-[10px] font-semibold uppercase tracking-widest text-text-tertiary mb-1.5\">{children}</p>\n );\n}\n\nexport function RoundsExhaustedContext({ payload, isTerminal, resolverPayload, onRetryTriage, isRetrying }: RoundsExhaustedContextProps) {\n const title = payload.title as string | undefined;\n const summary = payload.summary as string | undefined;\n const diagnosis = payload.diagnosis as string | undefined;\n const toolCalls = payload.tool_calls_made as number | undefined;\n const result = payload.result as Record<string, unknown> | null | undefined;\n\n // Detect triage resolution\n const ltMeta = resolverPayload?._lt as Record<string, unknown> | undefined;\n const wasTriaged = ltMeta?.triaged === true;\n const triageWorkflowId = ltMeta?.triageWorkflowId as string | undefined;\n const isResolvedByTriage = isTerminal && wasTriaged;\n\n const [showResult, setShowResult] = useState(false);\n\n // Resolved by triage — show success state\n if (isResolvedByTriage) {\n return (\n <div className=\"rounded-md border border-status-success/30 bg-surface-raised\">\n {/* Header */}\n <div className=\"flex items-center justify-between px-4 py-3 border-b border-surface-border\">\n <div className=\"flex items-center gap-2\">\n <svg className=\"w-4 h-4 text-status-success shrink-0\" viewBox=\"0 0 16 16\" fill=\"currentColor\">\n <path d=\"M8 1a7 7 0 110 14A7 7 0 018 1zm3.36 4.65a.5.5 0 00-.72 0L7 9.29 5.36 7.65a.5.5 0 10-.72.7l2 2a.5.5 0 00.72 0l4-4a.5.5 0 000-.7z\" />\n </svg>\n <span className=\"text-xs font-medium text-status-success\">Resolved by AI Triage</span>\n </div>\n {typeof toolCalls === 'number' && (\n <span className=\"text-[10px] font-mono px-2 py-0.5 rounded-full bg-status-success/10 text-status-success\">\n {toolCalls} tool calls used\n </span>\n )}\n </div>\n\n {/* Body */}\n <div className=\"px-4 py-4 space-y-4\">\n {title && (\n <p className=\"text-sm font-medium text-text-primary\">{title}</p>\n )}\n\n {diagnosis && (\n <div>\n <SectionLabel>Triage diagnosis</SectionLabel>\n <div className=\"text-xs text-text-primary leading-relaxed\">\n <SimpleMarkdown content={diagnosis} />\n </div>\n </div>\n )}\n\n <div className=\"flex items-center gap-3\">\n {triageWorkflowId && (\n <Link\n to={`/workflows/executions/${triageWorkflowId}`}\n className=\"text-[10px] text-accent hover:underline\"\n >\n View triage execution\n </Link>\n )}\n </div>\n </div>\n </div>\n );\n }\n\n // Default: warning state\n return (\n <div className=\"rounded-md border border-status-warning/30 bg-surface-raised\">\n {/* Header */}\n <div className=\"flex items-center justify-between px-4 py-3 border-b border-surface-border\">\n <div className=\"flex items-center gap-2\">\n <svg className=\"w-4 h-4 text-status-warning shrink-0\" viewBox=\"0 0 16 16\" fill=\"currentColor\">\n <path d=\"M8 1a7 7 0 110 14A7 7 0 018 1zm0 3a.75.75 0 00-.75.75v3.5a.75.75 0 001.5 0v-3.5A.75.75 0 008 4zm0 7a.75.75 0 100-1.5.75.75 0 000 1.5z\" />\n </svg>\n <span className=\"text-xs font-medium text-status-warning\">Tool Rounds Exhausted</span>\n </div>\n {typeof toolCalls === 'number' && (\n <span className=\"text-[10px] font-mono px-2 py-0.5 rounded-full bg-status-warning/10 text-status-warning\">\n {toolCalls} tool calls used\n </span>\n )}\n </div>\n\n {/* Body */}\n <div className=\"px-4 py-4 space-y-4\">\n {title && (\n <p className=\"text-sm font-medium text-text-primary\">{title}</p>\n )}\n\n {summary && (\n <div>\n <SectionLabel>What happened</SectionLabel>\n <div className=\"text-xs text-text-secondary leading-relaxed\">\n <SimpleMarkdown content={summary} />\n </div>\n </div>\n )}\n\n {diagnosis && (\n <div>\n <SectionLabel>What went wrong</SectionLabel>\n <div className=\"text-xs text-text-primary leading-relaxed\">\n <SimpleMarkdown content={diagnosis} />\n </div>\n </div>\n )}\n\n {result != null && (\n <div>\n <button\n onClick={() => setShowResult(!showResult)}\n className=\"flex items-center gap-1 text-[10px] font-semibold uppercase tracking-widest text-text-tertiary hover:text-text-secondary transition-colors\"\n >\n <svg className={`w-3 h-3 transition-transform ${showResult ? 'rotate-90' : ''}`} viewBox=\"0 0 12 12\" fill=\"currentColor\">\n <path d=\"M4.5 2l4 4-4 4\" />\n </svg>\n Partial results\n </button>\n {showResult && (\n <div className=\"mt-2\">\n <JsonViewer data={result} defaultMode=\"tree\" />\n </div>\n )}\n </div>\n )}\n\n {onRetryTriage && !isTerminal && (\n <div className=\"pt-2\">\n <button\n onClick={onRetryTriage}\n disabled={isRetrying}\n className=\"inline-flex items-center gap-2 px-4 py-2 text-xs font-medium bg-accent text-text-inverse rounded-md hover:bg-accent/90 disabled:opacity-50 disabled:cursor-not-allowed transition-colors\"\n >\n <svg className=\"w-3.5 h-3.5\" viewBox=\"0 0 14 14\" fill=\"currentColor\">\n <path d=\"M7 1a6 6 0 100 12A6 6 0 007 1zm2.5 6.5l-3.5 2V5.5l3.5 2z\" />\n </svg>\n {isRetrying ? 'Sending to triage...' : 'Retry with AI Triage'}\n </button>\n </div>\n )}\n </div>\n </div>\n );\n}\n","interface TriageData {\n diagnosis?: string;\n actions_taken?: string[];\n tool_calls_made?: number;\n confidence?: number;\n recommendation?: string;\n correctedData?: Record<string, unknown>;\n originalData?: Record<string, unknown>;\n}\n\ntype Diff = { key: string; label: string; original: unknown; corrected: unknown };\n\n/**\n * Renders a triage summary when escalation payload contains `_triage`.\n *\n * Fully generic — no knowledge of workflow types or field semantics.\n * Diffs `_triage.originalData` against the payload to detect changes.\n * Follows the unboxed section pattern used throughout the dashboard.\n */\nexport function TriageContext({ triage, payload }: {\n triage: TriageData;\n payload: Record<string, unknown>;\n}) {\n const confidence = triage.confidence ?? 0;\n const confidenceColor =\n confidence >= 0.8 ? 'text-status-success' :\n confidence >= 0.5 ? 'text-status-pending' :\n 'text-status-error';\n\n // Generic diff: compare originalData fields to current payload\n const diffs = computeDiffs(triage.originalData, payload);\n\n return (\n <div className=\"space-y-5\">\n {/* Diagnosis + metadata — unboxed, natural flow */}\n {triage.diagnosis && (\n <p className=\"text-sm text-text-primary leading-relaxed\">\n {triage.diagnosis}\n </p>\n )}\n\n <div className=\"flex flex-wrap items-center gap-3 text-xs text-text-tertiary\">\n {triage.tool_calls_made != null && (\n <span>{triage.tool_calls_made} tool call{triage.tool_calls_made !== 1 ? 's' : ''}</span>\n )}\n {triage.tool_calls_made != null && <span className=\"text-text-quaternary\">·</span>}\n <span className={`font-medium ${confidenceColor}`}>\n {Math.round(confidence * 100)}% confidence\n </span>\n </div>\n\n {triage.actions_taken && triage.actions_taken.length > 0 && (\n <div className=\"flex flex-wrap gap-1.5\">\n {triage.actions_taken.map((action, i) => (\n <span\n key={i}\n className=\"inline-flex items-center gap-1.5 px-2 py-0.5 text-[11px]\n text-text-secondary\"\n >\n <svg className=\"w-3 h-3 text-status-success shrink-0\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" strokeWidth={2.5}>\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" d=\"M5 13l4 4L19 7\" />\n </svg>\n {action}\n </span>\n ))}\n </div>\n )}\n\n {triage.recommendation && (\n <p className=\"text-[11px] text-text-tertiary italic\">\n {triage.recommendation}\n </p>\n )}\n\n {/* Generic before/after diffs — separated by subtle dividers */}\n {diffs.length > 0 && (\n <div className=\"space-y-4 pt-2\">\n {diffs.map((diff) => (\n <DiffRow key={diff.key} diff={diff} />\n ))}\n </div>\n )}\n </div>\n );\n}\n\n// ---------------------------------------------------------------------------\n// Generic diff computation\n// ---------------------------------------------------------------------------\n\nfunction computeDiffs(\n original: Record<string, unknown> | undefined,\n current: Record<string, unknown>,\n): Diff[] {\n if (!original) return [];\n\n const diffs: Diff[] = [];\n for (const key of Object.keys(original)) {\n if (key.startsWith('_')) continue;\n const origVal = original[key];\n const currVal = current[key];\n if (currVal === undefined) continue;\n\n if (JSON.stringify(origVal) !== JSON.stringify(currVal)) {\n diffs.push({\n key,\n label: key.replace(/[_-]/g, ' '),\n original: origVal,\n corrected: currVal,\n });\n }\n }\n return diffs;\n}\n\n// ---------------------------------------------------------------------------\n// Diff row — clean, unboxed before/after\n// ---------------------------------------------------------------------------\n\nfunction DiffRow({ diff }: { diff: Diff }) {\n const origStr = renderValue(diff.original);\n const corrStr = renderValue(diff.corrected);\n\n // Both are primitives — side by side with subtle separator\n if (origStr !== null && corrStr !== null) {\n return (\n <div className=\"grid grid-cols-1 md:grid-cols-2 gap-x-8 gap-y-3\">\n <div>\n <p className=\"text-[10px] font-semibold uppercase tracking-widest text-text-tertiary mb-1\">\n {diff.label} <span className=\"normal-case font-normal\">(original)</span>\n </p>\n <p className=\"text-sm text-text-tertiary leading-relaxed line-through decoration-text-tertiary/30\">\n {origStr}\n </p>\n </div>\n <div>\n <p className=\"text-[10px] font-semibold uppercase tracking-widest text-text-tertiary mb-1\">\n {diff.label} <span className=\"normal-case font-normal text-status-success\">(corrected)</span>\n </p>\n <p className=\"text-sm text-text-primary leading-relaxed\">\n {corrStr}\n </p>\n </div>\n </div>\n );\n }\n\n // Complex values — stacked\n return (\n <div className=\"space-y-3\">\n <div>\n <p className=\"text-[10px] font-semibold uppercase tracking-widest text-text-tertiary mb-1\">\n {diff.label} <span className=\"normal-case font-normal\">(original)</span>\n </p>\n <pre className=\"text-xs text-text-tertiary font-mono whitespace-pre-wrap leading-relaxed\">\n {typeof diff.original === 'object' ? JSON.stringify(diff.original, null, 2) : String(diff.original)}\n </pre>\n </div>\n <div>\n <p className=\"text-[10px] font-semibold uppercase tracking-widest text-text-tertiary mb-1\">\n {diff.label} <span className=\"normal-case font-normal text-status-success\">(corrected)</span>\n </p>\n <pre className=\"text-xs text-text-primary font-mono whitespace-pre-wrap leading-relaxed\">\n {typeof diff.corrected === 'object' ? JSON.stringify(diff.corrected, null, 2) : String(diff.corrected)}\n </pre>\n </div>\n </div>\n );\n}\n\n/** Render a value as a string if it's a primitive, null otherwise */\nfunction renderValue(val: unknown): string | null {\n if (val === null || val === undefined) return 'null';\n if (typeof val === 'string') return val;\n if (typeof val === 'number' || typeof val === 'boolean') return String(val);\n return null;\n}\n","import { useState, useEffect, useCallback } from 'react';\n\ntype JsonValue = string | number | boolean | null | JsonValue[] | { [key: string]: JsonValue };\n\n/**\n * Renders a JSON object as an editable form with typed inputs.\n *\n * - Strings → text input (textarea if > 80 chars)\n * - Booleans → toggle switch\n * - Numbers → number input\n * - Null → disabled placeholder\n * - Objects → nested section\n * - Arrays of strings → tag display\n * - Keys starting with `_` → hidden (preserved in output)\n *\n * Calls `onChange` with the full JSON string on every edit.\n */\nexport function ResolverForm({ value, onChange }: {\n value: string;\n onChange: (json: string) => void;\n}) {\n const [data, setData] = useState<Record<string, JsonValue>>({});\n const [hidden, setHidden] = useState<Record<string, JsonValue>>({});\n const [formSchema, setFormSchema] = useState<Record<string, any> | null>(null);\n const [parseError, setParseError] = useState(false);\n\n // Parse incoming JSON\n useEffect(() => {\n try {\n const parsed = JSON.parse(value);\n if (typeof parsed === 'object' && parsed !== null && !Array.isArray(parsed)) {\n const visible: Record<string, JsonValue> = {};\n const internal: Record<string, JsonValue> = {};\n for (const [k, v] of Object.entries(parsed)) {\n if (k.startsWith('_')) {\n internal[k] = v as JsonValue;\n } else {\n visible[k] = v as JsonValue;\n }\n }\n setData(visible);\n setHidden(internal);\n setFormSchema(\n internal._form_schema && typeof internal._form_schema === 'object'\n ? internal._form_schema as Record<string, any>\n : null,\n );\n setParseError(false);\n }\n } catch {\n setParseError(true);\n }\n }, [value]);\n\n const emitChange = useCallback((updated: Record<string, JsonValue>) => {\n setData(updated);\n onChange(JSON.stringify({ ...updated, ...hidden }, null, 2));\n }, [hidden, onChange]);\n\n const updateField = useCallback((key: string, val: JsonValue) => {\n emitChange({ ...data, [key]: val });\n }, [data, emitChange]);\n\n if (parseError) {\n return (\n <p className=\"text-xs text-status-error\">\n Unable to parse resolver data as form. Use the JSON editor below.\n </p>\n );\n }\n\n const entries = Object.entries(data);\n if (entries.length === 0) {\n return (\n <p className=\"text-xs text-text-tertiary italic\">\n No resolver fields defined.\n </p>\n );\n }\n\n return (\n <div className=\"space-y-4\">\n {entries.map(([key, val]) => (\n <FieldRow\n key={key}\n fieldKey={key}\n value={val}\n onChange={(v) => updateField(key, v)}\n schema={formSchema}\n />\n ))}\n </div>\n );\n}\n\n// ---------------------------------------------------------------------------\n// Field row — renders appropriate input per type\n// ---------------------------------------------------------------------------\n\nfunction FieldRow({ fieldKey, value, onChange, schema }: {\n fieldKey: string;\n value: JsonValue;\n onChange: (v: JsonValue) => void;\n schema?: Record<string, any> | null;\n}) {\n const label = fieldKey.replace(/[_-]/g, ' ');\n const fieldSchema = schema?.properties?.[fieldKey] as Record<string, any> | undefined;\n\n // Boolean → checkbox\n if (typeof value === 'boolean') {\n return (\n <label className=\"flex items-center gap-2 cursor-pointer\">\n <input\n type=\"checkbox\"\n checked={value}\n onChange={(e) => onChange(e.target.checked)}\n className=\"w-3.5 h-3.5 rounded accent-accent\"\n />\n <span className=\"text-[10px] font-semibold uppercase tracking-widest text-text-tertiary\">\n {label}\n </span>\n </label>\n );\n }\n\n // Number\n if (typeof value === 'number') {\n return (\n <div>\n <FieldLabel>{label}</FieldLabel>\n <input\n type=\"number\"\n value={value}\n onChange={(e) => onChange(parseFloat(e.target.value) || 0)}\n step=\"any\"\n className=\"input text-sm w-full mt-1\"\n />\n </div>\n );\n }\n\n // String\n if (typeof value === 'string') {\n const isPassword = fieldSchema?.format === 'password';\n const enumValues = fieldSchema?.enum as string[] | undefined;\n const helperText = fieldSchema?.description as string | undefined;\n\n if (enumValues?.length) {\n return (\n <div>\n <FieldLabel>{label}</FieldLabel>\n {helperText && <p className=\"text-[10px] text-text-tertiary mt-0.5\">{helperText}</p>}\n <select\n value={value}\n onChange={(e) => onChange(e.target.value)}\n className=\"input text-sm w-full mt-1\"\n >\n {enumValues.map((opt) => (\n <option key={opt} value={opt}>{opt}</option>\n ))}\n </select>\n </div>\n );\n }\n\n if (isPassword) {\n return (\n <div>\n <FieldLabel>{label}</FieldLabel>\n {helperText && <p className=\"text-[10px] text-text-tertiary mt-0.5\">{helperText}</p>}\n <input\n type=\"password\"\n value={value}\n onChange={(e) => onChange(e.target.value)}\n className=\"input text-sm w-full mt-1\"\n autoComplete=\"off\"\n />\n </div>\n );\n }\n\n if (value.length > 80) {\n return (\n <div>\n <FieldLabel>{label}</FieldLabel>\n {helperText && <p className=\"text-[10px] text-text-tertiary mt-0.5\">{helperText}</p>}\n <textarea\n value={value}\n onChange={(e) => onChange(e.target.value)}\n className=\"input text-sm w-full mt-1 leading-relaxed\"\n rows={Math.min(6, Math.ceil(value.length / 60))}\n />\n </div>\n );\n }\n return (\n <div>\n <FieldLabel>{label}</FieldLabel>\n {helperText && <p className=\"text-[10px] text-text-tertiary mt-0.5\">{helperText}</p>}\n <input\n type=\"text\"\n value={value}\n onChange={(e) => onChange(e.target.value)}\n className=\"input text-sm w-full mt-1\"\n />\n </div>\n );\n }\n\n // Null\n if (value === null) {\n return (\n <div>\n <FieldLabel>{label}</FieldLabel>\n <p className=\"text-xs text-text-tertiary italic mt-1\">null</p>\n </div>\n );\n }\n\n // Array of primitives\n if (Array.isArray(value)) {\n return (\n <div>\n <FieldLabel>{label}</FieldLabel>\n <div className=\"flex flex-wrap gap-1.5 mt-1\">\n {value.map((item, i) => (\n <span\n key={i}\n className=\"px-2 py-0.5 text-[11px] font-mono bg-surface-sunken rounded text-text-secondary\"\n >\n {String(item)}\n </span>\n ))}\n </div>\n </div>\n );\n }\n\n // Nested object → recursive\n if (typeof value === 'object') {\n const entries = Object.entries(value);\n return (\n <div>\n <FieldLabel>{label}</FieldLabel>\n <div className=\"ml-4 mt-2 pl-4 border-l border-accent-faint space-y-3\">\n {entries.map(([k, v]) => (\n <FieldRow\n key={k}\n fieldKey={k}\n value={v}\n onChange={(updated) => onChange({ ...value, [k]: updated })}\n />\n ))}\n </div>\n </div>\n );\n }\n\n return null;\n}\n\nfunction FieldLabel({ children }: { children: React.ReactNode }) {\n return (\n <label className=\"text-[10px] font-semibold uppercase tracking-widest text-text-tertiary\">\n {children}\n </label>\n );\n}\n","import { useState } from 'react';\nimport { ResolverForm } from '../../../components/escalation/ResolverForm';\n\nexport function ResolverSection({\n json,\n onJsonChange,\n requestTriage,\n onRequestTriageChange,\n triageNotes,\n onTriageNotesChange,\n}: {\n json: string;\n onJsonChange: (v: string) => void;\n requestTriage: boolean;\n onRequestTriageChange: (v: boolean) => void;\n triageNotes: string;\n onTriageNotesChange: (v: string) => void;\n}) {\n const [resolverView, setResolverView] = useState<'form' | 'json'>('form');\n\n return (\n <>\n {/* Toolbar row: form/JSON toggle + triage callout */}\n <div className=\"flex items-center justify-between mb-3\">\n {requestTriage ? (\n <button\n onClick={() => onRequestTriageChange(false)}\n className=\"group flex items-center gap-2 text-left\"\n data-testid=\"triage-cancel\"\n >\n <span className=\"flex items-center justify-center w-5 h-5 rounded-full bg-accent/10 text-accent shrink-0\">\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=\"M6 18L18 6M6 6l12 12\" />\n </svg>\n </span>\n <span className=\"text-xs text-text-secondary group-hover:text-text-primary transition-colors\">\n AI Triage active.{' '}\n <span className=\"text-accent group-hover:underline\">Cancel</span>\n </span>\n </button>\n ) : (\n <button\n onClick={() => onRequestTriageChange(true)}\n className=\"group flex items-center gap-2.5 text-left my-4\"\n data-testid=\"triage-callout\"\n >\n <span className=\"flex items-center justify-center w-6 h-6 rounded-full bg-accent/10 text-accent shrink-0 animate-[triage-glow_6s_ease-in-out_infinite]\">\n <svg className=\"w-3.5 h-3.5\" 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 <span className=\"text-[13px] text-text-secondary group-hover:text-text-primary transition-colors\">\n This form doesn't capture the issue?{' '}\n <span className=\"text-accent group-hover:underline\">Request AI Triage</span>\n </span>\n </button>\n )}\n\n {!requestTriage && (\n <button\n onClick={() => setResolverView(resolverView === 'form' ? 'json' : 'form')}\n className=\"text-[10px] text-text-tertiary hover:text-accent transition-colors\"\n >\n {resolverView === 'form' ? 'Raw JSON' : 'Form'}\n </button>\n )}\n </div>\n\n <div className=\"relative min-h-[200px]\">\n {/* Form controls */}\n <div className={requestTriage ? 'pointer-events-none select-none' : ''}>\n {resolverView === 'form' ? (\n <ResolverForm value={json} onChange={onJsonChange} />\n ) : (\n <textarea\n value={json}\n onChange={(e) => onJsonChange(e.target.value)}\n className=\"input font-mono text-xs w-full\"\n rows={8}\n spellCheck={false}\n data-testid=\"resolve-json\"\n />\n )}\n </div>\n\n {/* Triage overlay — occludes the form when AI Triage is checked */}\n {requestTriage && (\n <div\n className=\"absolute inset-0 z-10 flex flex-col bg-surface/90 backdrop-blur-[2px] rounded-md border border-accent/20 p-5\"\n data-testid=\"triage-overlay\"\n >\n <p className=\"text-xs text-text-secondary mb-3 leading-relaxed\">\n The resolution form will not be submitted. Describe the issue\n so AI triage can diagnose and fix it using available tools.\n The corrected result will come back as a new escalation for\n your review.\n </p>\n <textarea\n value={triageNotes}\n onChange={(e) => onTriageNotesChange(e.target.value)}\n placeholder=\"e.g. Content is in Spanish — needs translation to English before review...\"\n className=\"input text-xs w-full flex-1 min-h-[80px] resize-none\"\n autoFocus\n data-testid=\"triage-notes\"\n />\n </div>\n )}\n </div>\n </>\n );\n}\n","import { Link } from 'react-router-dom';\nimport { KeyRound } from 'lucide-react';\nimport { CollapsibleSection } from '../../../components/common/layout/CollapsibleSection';\nimport { JsonViewer } from '../../../components/common/data/JsonViewer';\nimport { RoundsExhaustedContext } from '../../../components/escalation/RoundsExhaustedContext';\nimport { TriageContext } from '../../../components/escalation/TriageContext';\nimport { ResolverSection } from './ResolverSection';\nimport type { ActiveView } from './EscalationActionBar';\n\ninterface EscalationContextProps {\n isRoundsExhausted: boolean;\n payloadObj: Record<string, unknown> | null;\n isTerminal: boolean;\n resolverPayload: Record<string, unknown> | null;\n onRetryTriage: () => Promise<void>;\n isRetrying: boolean;\n}\n\nexport function EscalationContextBlocks({\n isRoundsExhausted,\n payloadObj,\n isTerminal,\n resolverPayload,\n onRetryTriage,\n isRetrying,\n}: EscalationContextProps) {\n return (\n <>\n {/* Rounds-exhausted structured context */}\n {isRoundsExhausted && payloadObj && (\n <div className=\"mt-8\">\n <RoundsExhaustedContext\n payload={payloadObj}\n isTerminal={isTerminal}\n resolverPayload={resolverPayload}\n onRetryTriage={onRetryTriage}\n isRetrying={isRetrying}\n />\n </div>\n )}\n\n {/* Missing credential context */}\n {payloadObj?.category === 'missing_credential' && (\n <div className=\"mt-8 bg-status-warning/10 border border-status-warning/30 rounded-md px-5 py-4 flex items-start gap-3\">\n <KeyRound size={20} className=\"text-status-warning mt-0.5 shrink-0\" />\n <div>\n <p className=\"text-sm font-medium text-text-primary mb-1\">Missing Credential</p>\n <p className=\"text-xs text-text-secondary mb-3\">\n This workflow requires a <span className=\"font-medium capitalize\">{String(payloadObj.provider)}</span> credential\n to continue. Register one and then resolve this escalation to retry.\n </p>\n <Link\n to=\"/credentials\"\n className=\"btn-primary text-xs inline-flex items-center gap-1.5\"\n >\n <KeyRound size={12} />\n Go to Credentials\n </Link>\n </div>\n </div>\n )}\n </>\n );\n}\n\ninterface CollapsibleSectionsProps {\n collapsed: Record<string, boolean>;\n toggleSection: (key: string) => void;\n esc: {\n envelope?: unknown;\n workflow_type?: string | null;\n metadata?: unknown;\n };\n escalationPayload: unknown;\n resolverPayload: unknown;\n triageData?: Record<string, unknown>;\n payloadObj: Record<string, unknown> | null;\n isTerminal: boolean;\n claimedByMe: boolean;\n activeView: ActiveView;\n metadataFormSchema: unknown;\n json: string;\n onJsonChange: (v: string) => void;\n requestTriage: boolean;\n onRequestTriageChange: (v: boolean) => void;\n triageNotes: string;\n onTriageNotesChange: (v: string) => void;\n}\n\nexport function EscalationCollapsibleSections({\n collapsed,\n toggleSection,\n esc,\n escalationPayload,\n resolverPayload,\n triageData,\n payloadObj,\n isTerminal,\n claimedByMe,\n activeView,\n metadataFormSchema,\n json,\n onJsonChange,\n requestTriage,\n onRequestTriageChange,\n triageNotes,\n onTriageNotesChange,\n}: CollapsibleSectionsProps) {\n return (\n <div className=\"mt-8 space-y-6\">\n {/* Input/Output */}\n <CollapsibleSection\n title=\"Input / Output\"\n sectionKey=\"context\"\n isCollapsed={collapsed.context ?? true}\n onToggle={toggleSection}\n contentClassName=\"mt-4 ml-9\"\n >\n <div className=\"space-y-6\">\n <div className=\"grid grid-cols-1 md:grid-cols-2 gap-4\">\n {!!esc.envelope && (\n <div>\n <JsonViewer data={esc.envelope} label=\"Input Envelope\" />\n </div>\n )}\n {escalationPayload != null && (\n <div>\n <JsonViewer data={escalationPayload} label=\"Escalation Context\" />\n </div>\n )}\n </div>\n\n {resolverPayload != null && (\n <div className=\"max-w-xl\">\n <JsonViewer data={resolverPayload} label=\"Resolver Payload\" />\n </div>\n )}\n </div>\n </CollapsibleSection>\n\n {/* Triage context */}\n {triageData && payloadObj && (\n <CollapsibleSection\n title=\"AI Triage\"\n sectionKey=\"triage\"\n isCollapsed={!!collapsed.triage}\n onToggle={toggleSection}\n contentClassName=\"mt-4 ml-9\"\n >\n <TriageContext triage={triageData} payload={payloadObj} />\n </CollapsibleSection>\n )}\n\n {/* Resolver form */}\n {!isTerminal && claimedByMe && activeView === 'resolve' && !!(esc.workflow_type || metadataFormSchema) && (\n <CollapsibleSection\n title=\"Submit Your Resolution\"\n sectionKey=\"resolver\"\n isCollapsed={!!collapsed.resolver}\n onToggle={toggleSection}\n contentClassName=\"mt-4 ml-9\"\n >\n <ResolverSection\n json={json}\n onJsonChange={onJsonChange}\n requestTriage={requestTriage}\n onRequestTriageChange={onRequestTriageChange}\n triageNotes={triageNotes}\n onTriageNotesChange={onTriageNotesChange}\n />\n </CollapsibleSection>\n )}\n </div>\n );\n}\n","import { useState, useEffect } from 'react';\nimport { useParams, useNavigate } from 'react-router-dom';\nimport { useAuth } from '../../../hooks/useAuth';\nimport {\n useEscalation,\n useClaimEscalation,\n useResolveEscalation,\n useEscalateToRole,\n} from '../../../api/escalations';\nimport { useEscalationTargets } from '../../../api/roles';\nimport { PageHeader } from '../../../components/common/layout/PageHeader';\nimport { isEffectivelyClaimed } from '../../../lib/escalation';\nimport { useWorkflowConfigs } from '../../../api/workflows';\nimport { useSettings } from '../../../api/settings';\nimport { useEscalationDetailEvents } from '../../../hooks/useEventHooks';\nimport { EscalationActionBar } from './EscalationActionBar';\nimport { EscalationHero } from './EscalationHero';\nimport type { ActionBarMode, ActiveView } from './EscalationActionBar';\nimport { EscalationContextBlocks, EscalationCollapsibleSections } from './EscalationDetailSections';\n\n// ---------------------------------------------------------------------------\n// Helpers\n// ---------------------------------------------------------------------------\n\nfunction safeParse(value: string | null | undefined): unknown {\n if (!value) return null;\n try {\n return JSON.parse(value);\n } catch {\n return value;\n }\n}\n\nfunction hasTriageData(payload: string | null | undefined): boolean {\n if (!payload) return false;\n try {\n const p = JSON.parse(payload);\n return !!(p && typeof p === 'object' && p._triage);\n } catch { return false; }\n}\n\n// ---------------------------------------------------------------------------\n// Main page\n// ---------------------------------------------------------------------------\n\nexport function EscalationDetailPage() {\n const { id } = useParams<{ id: string }>();\n const { user } = useAuth();\n const navigate = useNavigate();\n const { data: esc, isLoading } = useEscalation(id!);\n useEscalationDetailEvents(id);\n const claim = useClaimEscalation();\n const resolve = useResolveEscalation();\n const escalate = useEscalateToRole();\n const { data: escalationTargets } = useEscalationTargets(esc?.role ?? '');\n const { data: workflowConfigs } = useWorkflowConfigs();\n const { data: settings } = useSettings();\n\n const wfConfig = workflowConfigs?.find((c) => c.workflow_type === esc?.workflow_type);\n const traceUrl = settings?.telemetry?.traceUrl ?? null;\n const [activeView, setActiveView] = useState<ActiveView>('resolve');\n const [json, setJson] = useState('{}');\n\n // Section collapse state\n const [collapsed, setCollapsed] = useState<Record<string, boolean>>({ context: false });\n const toggleSection = (key: string) =>\n setCollapsed((prev) => ({ ...prev, [key]: !prev[key] }));\n\n const [requestTriage, setRequestTriage] = useState(false);\n const [triageNotes, setTriageNotes] = useState('');\n const resolverSchema = wfConfig?.resolver_schema ?? null;\n const metadataFormSchema = (esc?.metadata as any)?.form_schema ?? null;\n const effectiveSchema = metadataFormSchema ?? resolverSchema;\n useEffect(() => {\n const formSchema = metadataFormSchema ?? (resolverSchema?.properties ? resolverSchema : null);\n if (formSchema?.properties) {\n const initial: Record<string, any> = { _form_schema: formSchema };\n for (const [key, def] of Object.entries(formSchema.properties)) {\n const fieldDef = def as Record<string, any>;\n initial[key] = fieldDef.default ?? '';\n }\n setJson(JSON.stringify(initial, null, 2));\n } else {\n setJson(effectiveSchema ? JSON.stringify(effectiveSchema, null, 2) : '{}');\n }\n }, [effectiveSchema, metadataFormSchema, resolverSchema]);\n\n const hasTriage = hasTriageData(esc?.escalation_payload);\n const isRoundsExhausted = esc?.subtype === 'rounds_exhausted';\n const isWaitForHuman = esc?.subtype === 'wait_for_human';\n useEffect(() => {\n if (hasTriage || isRoundsExhausted) {\n setCollapsed((prev) => ({ ...prev, context: true }));\n }\n if (isWaitForHuman && metadataFormSchema) {\n setCollapsed((prev) => ({ ...prev, context: true, resolver: false }));\n }\n }, [hasTriage, isRoundsExhausted, isWaitForHuman, metadataFormSchema]);\n\n if (isLoading) {\n return (\n <div className=\"animate-pulse space-y-8\">\n <div className=\"h-8 bg-surface-sunken rounded w-64\" />\n <div className=\"h-32 bg-surface-sunken rounded w-full\" />\n </div>\n );\n }\n\n if (!esc) {\n return <p className=\"text-sm text-text-secondary\">Escalation not found.</p>;\n }\n\n const claimed = isEffectivelyClaimed(esc);\n const claimedByMe = claimed && esc.assigned_to === user?.userId;\n const claimedByOther = claimed && !claimedByMe;\n const isTerminal = esc.status === 'resolved' || esc.status === 'cancelled';\n\n const escalationPayload = safeParse(esc.escalation_payload);\n const resolverPayload = safeParse(esc.resolver_payload);\n\n const payloadObj = (typeof escalationPayload === 'object' && escalationPayload !== null && !Array.isArray(escalationPayload))\n ? escalationPayload as Record<string, unknown>\n : null;\n const triageData = payloadObj?._triage as Record<string, unknown> | undefined;\n\n const actionBarMode: ActionBarMode = isTerminal\n ? 'terminal'\n : claimedByMe\n ? 'claimed_by_me'\n : claimedByOther\n ? 'claimed_by_other'\n : 'available';\n\n const handleClaim = (durationMinutes: number) => {\n claim.mutate({ id: esc.id, durationMinutes });\n setCollapsed({ context: true, triage: true, resolver: false });\n };\n\n const goBack = () => navigate(-1);\n\n const handleResolve = async (payload: Record<string, unknown>) => {\n await resolve.mutateAsync({ id: esc.id, resolverPayload: payload });\n goBack();\n };\n\n const handleEscalate = async (targetRole: string) => {\n if (!targetRole) return;\n await escalate.mutateAsync({ id: esc.id, targetRole });\n goBack();\n };\n\n const handleRetryTriage = async () => {\n if (!claimedByMe) {\n await claim.mutateAsync({ id: esc.id, durationMinutes: 30 });\n }\n const diagnosis = (payloadObj?.diagnosis as string) || esc.description || '';\n await resolve.mutateAsync({\n id: esc.id,\n resolverPayload: { _lt: { needsTriage: true }, notes: diagnosis },\n });\n goBack();\n };\n\n const handleRelease = async () => {\n await claim.mutateAsync({ id: esc.id, durationMinutes: 0 });\n goBack();\n };\n\n return (\n <div className=\"min-h-[calc(100vh-9rem)] flex flex-col\">\n <PageHeader title=\"Escalation\" />\n\n <EscalationHero\n esc={esc}\n claimedByMe={claimedByMe}\n claimed={claimed}\n isTerminal={isTerminal}\n traceUrl={traceUrl}\n />\n\n <EscalationContextBlocks\n isRoundsExhausted={isRoundsExhausted}\n payloadObj={payloadObj}\n isTerminal={isTerminal}\n resolverPayload={resolverPayload as Record<string, unknown> | null}\n onRetryTriage={handleRetryTriage}\n isRetrying={claim.isPending || resolve.isPending}\n />\n\n <EscalationCollapsibleSections\n collapsed={collapsed}\n toggleSection={toggleSection}\n esc={esc}\n escalationPayload={escalationPayload}\n resolverPayload={resolverPayload}\n triageData={triageData}\n payloadObj={payloadObj}\n isTerminal={isTerminal}\n claimedByMe={claimedByMe}\n activeView={activeView}\n metadataFormSchema={metadataFormSchema}\n json={json}\n onJsonChange={setJson}\n requestTriage={requestTriage}\n onRequestTriageChange={setRequestTriage}\n triageNotes={triageNotes}\n onTriageNotesChange={setTriageNotes}\n />\n\n <div className=\"flex-1\" />\n\n <EscalationActionBar\n mode={actionBarMode}\n activeView={activeView}\n onActiveViewChange={setActiveView}\n onClaim={handleClaim}\n claimPending={claim.isPending}\n workflowType={esc.workflow_type}\n json={json}\n onResolve={handleResolve}\n resolvePending={resolve.isPending}\n resolveError={resolve.error as Error | null}\n requestTriage={requestTriage}\n triageNotes={triageNotes}\n currentRole={esc.role}\n escalationTargets={escalationTargets?.targets ?? []}\n onEscalate={handleEscalate}\n escalatePending={escalate.isPending}\n escalateError={escalate.error as Error | null}\n onRelease={handleRelease}\n releasePending={claim.isPending}\n assignedTo={esc.assigned_to}\n assignedUntil={esc.assigned_until}\n />\n </div>\n );\n}\n"],"names":["EscalationActionBar","props","mode","activeView","onActiveViewChange","onClaim","claimPending","workflowType","json","onResolve","resolvePending","resolveError","requestTriage","triageNotes","currentRole","escalationTargets","onEscalate","escalatePending","escalateError","onRelease","releasePending","assignedTo","assignedUntil","claimDurations","useClaimDurations","duration","setDuration","useState","customMinutes","setCustomMinutes","parseError","setParseError","escalateTarget","setEscalateTarget","isCustom","onCustomChange","useCallback","m","handleClaim","minutes","handleSubmitResolve","payload","tabClass","active","jsxDEV","opt","CustomDurationPicker","UserName","CountdownTimer","e","role","EscalationHero","esc","_claimedByMe","claimed","isTerminal","traceUrl","showDetails","setShowDetails","isAck","isAckEscalation","Fragment","Bell","StatusBadge","RolePill","DateValue","User","Collapsible","CopyableId","renderInline","text","SimpleMarkdown","content","compact","segments","fencePattern","lastIndex","match","sizeClasses","allParts","segment","escaped","renderTextBlock","sz","lines","htmlParts","inList","inTable","tableRows","line","trimmed","cells","c","header","body","row","cell","h","SectionLabel","children","RoundsExhaustedContext","resolverPayload","onRetryTriage","isRetrying","title","summary","diagnosis","toolCalls","result","ltMeta","wasTriaged","triageWorkflowId","isResolvedByTriage","showResult","setShowResult","Link","JsonViewer","TriageContext","triage","confidence","confidenceColor","diffs","computeDiffs","action","i","diff","DiffRow","original","current","key","origVal","currVal","origStr","renderValue","corrStr","val","ResolverForm","value","onChange","data","setData","hidden","setHidden","formSchema","setFormSchema","useEffect","parsed","visible","internal","k","v","emitChange","updated","updateField","entries","FieldRow","fieldKey","schema","label","fieldSchema","_a","FieldLabel","isPassword","enumValues","helperText","item","ResolverSection","onJsonChange","onRequestTriageChange","onTriageNotesChange","resolverView","setResolverView","EscalationContextBlocks","isRoundsExhausted","payloadObj","KeyRound","EscalationCollapsibleSections","collapsed","toggleSection","escalationPayload","triageData","claimedByMe","metadataFormSchema","CollapsibleSection","safeParse","hasTriageData","p","EscalationDetailPage","id","useParams","user","useAuth","navigate","useNavigate","isLoading","useEscalation","useEscalationDetailEvents","claim","useClaimEscalation","resolve","useResolveEscalation","escalate","useEscalateToRole","useEscalationTargets","workflowConfigs","useWorkflowConfigs","settings","useSettings","wfConfig","setActiveView","setJson","setCollapsed","prev","setRequestTriage","setTriageNotes","resolverSchema","_b","effectiveSchema","initial","def","fieldDef","hasTriage","isWaitForHuman","isEffectivelyClaimed","claimedByOther","actionBarMode","durationMinutes","goBack","handleResolve","handleEscalate","targetRole","handleRetryTriage","handleRelease","PageHeader"],"mappings":"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"}
|