@hotmeshio/long-tail 0.5.4 → 0.5.6
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 +79 -50
- package/build/api/topics.d.ts +14 -4
- package/build/api/topics.js +9 -9
- package/build/lib/events/index.js +6 -0
- package/build/lib/events/publish.js +3 -7
- package/build/lib/events/system-events.js +5 -6
- package/build/routes/topics.js +2 -4
- package/build/services/agent/input-mapper.js +33 -10
- package/build/services/interceptor/index.js +25 -6
- package/build/system/mcp-servers/events.js +1 -3
- package/build/types/events.d.ts +90 -23
- package/dashboard/dist/assets/{AdminDashboard-CMzR4d-w.js → AdminDashboard-DIQEViVY.js} +2 -2
- package/dashboard/dist/assets/{AdminDashboard-CMzR4d-w.js.map → AdminDashboard-DIQEViVY.js.map} +1 -1
- package/dashboard/dist/assets/{AgentConfigPage-DHCpN4xk.js → AgentConfigPage-Caf5-th-.js} +2 -2
- package/dashboard/dist/assets/{AgentConfigPage-DHCpN4xk.js.map → AgentConfigPage-Caf5-th-.js.map} +1 -1
- package/dashboard/dist/assets/{AgentDetailPage-CSrejvSl.js → AgentDetailPage-_a4tKaM3.js} +2 -2
- package/dashboard/dist/assets/{AgentDetailPage-CSrejvSl.js.map → AgentDetailPage-_a4tKaM3.js.map} +1 -1
- package/dashboard/dist/assets/{AgentsPage-ntuzWHCD.js → AgentsPage-BNlAkEIK.js} +2 -2
- package/dashboard/dist/assets/{AgentsPage-ntuzWHCD.js.map → AgentsPage-BNlAkEIK.js.map} +1 -1
- package/dashboard/dist/assets/{AvailableEscalationsPage-Ci24fdxC.js → AvailableEscalationsPage-Cqy5ECm4.js} +2 -2
- package/dashboard/dist/assets/{AvailableEscalationsPage-Ci24fdxC.js.map → AvailableEscalationsPage-Cqy5ECm4.js.map} +1 -1
- package/dashboard/dist/assets/{BotPicker-lj42d48P.js → BotPicker-DBvd1yFL.js} +2 -2
- package/dashboard/dist/assets/{BotPicker-lj42d48P.js.map → BotPicker-DBvd1yFL.js.map} +1 -1
- package/dashboard/dist/assets/{CapabilitiesPage-Bea9yLmU.js → CapabilitiesPage-BIdG9RTG.js} +2 -2
- package/dashboard/dist/assets/{CapabilitiesPage-Bea9yLmU.js.map → CapabilitiesPage-BIdG9RTG.js.map} +1 -1
- package/dashboard/dist/assets/{CollapsibleSection-BeBsI1M4.js → CollapsibleSection-CggyKhyZ.js} +2 -2
- package/dashboard/dist/assets/{CollapsibleSection-BeBsI1M4.js.map → CollapsibleSection-CggyKhyZ.js.map} +1 -1
- package/dashboard/dist/assets/{CredentialsPage-BDzFa3HV.js → CredentialsPage-B4sXGLRY.js} +2 -2
- package/dashboard/dist/assets/{CredentialsPage-BDzFa3HV.js.map → CredentialsPage-B4sXGLRY.js.map} +1 -1
- package/dashboard/dist/assets/{CronLabel-DeNm1I4r.js → CronLabel-GcS5qzZr.js} +2 -2
- package/dashboard/dist/assets/{CronLabel-DeNm1I4r.js.map → CronLabel-GcS5qzZr.js.map} +1 -1
- package/dashboard/dist/assets/{CustomDurationPicker-C2OH9YcV.js → CustomDurationPicker-CUYE36-K.js} +2 -2
- package/dashboard/dist/assets/{CustomDurationPicker-C2OH9YcV.js.map → CustomDurationPicker-CUYE36-K.js.map} +1 -1
- package/dashboard/dist/assets/{ElapsedCell-WdzqA0dR.js → ElapsedCell-BFOMsgwF.js} +2 -2
- package/dashboard/dist/assets/{ElapsedCell-WdzqA0dR.js.map → ElapsedCell-BFOMsgwF.js.map} +1 -1
- package/dashboard/dist/assets/{EscalationsOverview-BIEeflEV.js → EscalationsOverview-BfjW6haL.js} +2 -2
- package/dashboard/dist/assets/{EscalationsOverview-BIEeflEV.js.map → EscalationsOverview-BfjW6haL.js.map} +1 -1
- package/dashboard/dist/assets/{EventTable-NIhWP__B.js → EventTable-N0XmLk3C.js} +2 -2
- package/dashboard/dist/assets/{EventTable-NIhWP__B.js.map → EventTable-N0XmLk3C.js.map} +1 -1
- package/dashboard/dist/assets/{GraphInvokePage-DtAW8ilc.js → GraphInvokePage-DHiGHiCk.js} +2 -2
- package/dashboard/dist/assets/{GraphInvokePage-DtAW8ilc.js.map → GraphInvokePage-DHiGHiCk.js.map} +1 -1
- package/dashboard/dist/assets/{HomePage-HsO-M8ub.js → HomePage-jckQolbx.js} +2 -2
- package/dashboard/dist/assets/{HomePage-HsO-M8ub.js.map → HomePage-jckQolbx.js.map} +1 -1
- package/dashboard/dist/assets/{ListToolbar-DqaRlXrF.js → ListToolbar-B71DqaXr.js} +2 -2
- package/dashboard/dist/assets/{ListToolbar-DqaRlXrF.js.map → ListToolbar-B71DqaXr.js.map} +1 -1
- package/dashboard/dist/assets/{McpOverview-B4GsHxij.js → McpOverview-CPD6NRGt.js} +2 -2
- package/dashboard/dist/assets/{McpOverview-B4GsHxij.js.map → McpOverview-CPD6NRGt.js.map} +1 -1
- package/dashboard/dist/assets/{McpQueryDetailPage-DZKpzWST.js → McpQueryDetailPage-YyqXw6Dt.js} +2 -2
- package/dashboard/dist/assets/{McpQueryDetailPage-DZKpzWST.js.map → McpQueryDetailPage-YyqXw6Dt.js.map} +1 -1
- package/dashboard/dist/assets/{McpQueryPage-B-8WR3GV.js → McpQueryPage-BWf45EYD.js} +2 -2
- package/dashboard/dist/assets/{McpQueryPage-B-8WR3GV.js.map → McpQueryPage-BWf45EYD.js.map} +1 -1
- package/dashboard/dist/assets/{McpRunDetailPage-Dt7Ai3qB.js → McpRunDetailPage-Cv43tkjz.js} +2 -2
- package/dashboard/dist/assets/{McpRunDetailPage-Dt7Ai3qB.js.map → McpRunDetailPage-Cv43tkjz.js.map} +1 -1
- package/dashboard/dist/assets/{McpRunsPage-Bdke-HoQ.js → McpRunsPage-BFards4K.js} +2 -2
- package/dashboard/dist/assets/{McpRunsPage-Bdke-HoQ.js.map → McpRunsPage-BFards4K.js.map} +1 -1
- package/dashboard/dist/assets/{OperatorDashboard-VZ97mufd.js → OperatorDashboard-BJZxuOKI.js} +2 -2
- package/dashboard/dist/assets/{OperatorDashboard-VZ97mufd.js.map → OperatorDashboard-BJZxuOKI.js.map} +1 -1
- package/dashboard/dist/assets/{ProcessDetailPage-BLfLfmWX.js → ProcessDetailPage-BjkLfyrm.js} +2 -2
- package/dashboard/dist/assets/{ProcessDetailPage-BLfLfmWX.js.map → ProcessDetailPage-BjkLfyrm.js.map} +1 -1
- package/dashboard/dist/assets/{ProcessesListPage-DG54t-Nd.js → ProcessesListPage-DOzeduP3.js} +2 -2
- package/dashboard/dist/assets/{ProcessesListPage-DG54t-Nd.js.map → ProcessesListPage-DOzeduP3.js.map} +1 -1
- package/dashboard/dist/assets/{RolesPage-Bdlv3DdW.js → RolesPage-DSSQrGTh.js} +2 -2
- package/dashboard/dist/assets/{RolesPage-Bdlv3DdW.js.map → RolesPage-DSSQrGTh.js.map} +1 -1
- package/dashboard/dist/assets/{RunAsSelector-BFxxMvL3.js → RunAsSelector-CM7lk1YB.js} +2 -2
- package/dashboard/dist/assets/{RunAsSelector-BFxxMvL3.js.map → RunAsSelector-CM7lk1YB.js.map} +1 -1
- package/dashboard/dist/assets/{SwimlaneTimeline-BZmad7WQ.js → SwimlaneTimeline-DtCgJNpV.js} +2 -2
- package/dashboard/dist/assets/{SwimlaneTimeline-BZmad7WQ.js.map → SwimlaneTimeline-DtCgJNpV.js.map} +1 -1
- package/dashboard/dist/assets/{TaskDetailPage-CLl2mgBC.js → TaskDetailPage-BC9xnyLT.js} +2 -2
- package/dashboard/dist/assets/{TaskDetailPage-CLl2mgBC.js.map → TaskDetailPage-BC9xnyLT.js.map} +1 -1
- package/dashboard/dist/assets/{TasksListPage-DoHXxZF-.js → TasksListPage-DtbLfUS-.js} +2 -2
- package/dashboard/dist/assets/{TasksListPage-DoHXxZF-.js.map → TasksListPage-DtbLfUS-.js.map} +1 -1
- package/dashboard/dist/assets/{TimeAgo-DZF9w8Rl.js → TimeAgo-xrDlFnPy.js} +2 -2
- package/dashboard/dist/assets/{TimeAgo-DZF9w8Rl.js.map → TimeAgo-xrDlFnPy.js.map} +1 -1
- package/dashboard/dist/assets/{TimestampCell-DPpoTdrw.js → TimestampCell-BneATvjR.js} +2 -2
- package/dashboard/dist/assets/{TimestampCell-DPpoTdrw.js.map → TimestampCell-BneATvjR.js.map} +1 -1
- package/dashboard/dist/assets/{ToolTestPanel-DtAgJQfr.js → ToolTestPanel-1lQ_GQod.js} +2 -2
- package/dashboard/dist/assets/{ToolTestPanel-DtAgJQfr.js.map → ToolTestPanel-1lQ_GQod.js.map} +1 -1
- package/dashboard/dist/assets/TopicDetailPage-CDtlXyut.js +9 -0
- package/dashboard/dist/assets/TopicDetailPage-CDtlXyut.js.map +1 -0
- package/dashboard/dist/assets/{TopicsPage-Bc-4ne6V.js → TopicsPage-COX2kDKK.js} +2 -2
- package/dashboard/dist/assets/{TopicsPage-Bc-4ne6V.js.map → TopicsPage-COX2kDKK.js.map} +1 -1
- package/dashboard/dist/assets/{UserName-O2Q4-E6E.js → UserName-Cb2WvhCN.js} +2 -2
- package/dashboard/dist/assets/{UserName-O2Q4-E6E.js.map → UserName-Cb2WvhCN.js.map} +1 -1
- package/dashboard/dist/assets/{WorkflowExecutionPage-DEDsBmn1.js → WorkflowExecutionPage-BWCTOTXF.js} +2 -2
- package/dashboard/dist/assets/{WorkflowExecutionPage-DEDsBmn1.js.map → WorkflowExecutionPage-BWCTOTXF.js.map} +1 -1
- package/dashboard/dist/assets/{WorkflowsDashboard-Bcf17vCt.js → WorkflowsDashboard-DOaDSC98.js} +2 -2
- package/dashboard/dist/assets/{WorkflowsDashboard-Bcf17vCt.js.map → WorkflowsDashboard-DOaDSC98.js.map} +1 -1
- package/dashboard/dist/assets/{WorkflowsOverview-Cwo2rqGT.js → WorkflowsOverview-CeE7a51J.js} +2 -2
- package/dashboard/dist/assets/{WorkflowsOverview-Cwo2rqGT.js.map → WorkflowsOverview-CeE7a51J.js.map} +1 -1
- package/dashboard/dist/assets/{YamlWorkflowDetailPage-Bv8ZFwO-.js → YamlWorkflowDetailPage-cNpR0PHg.js} +2 -2
- package/dashboard/dist/assets/{YamlWorkflowDetailPage-Bv8ZFwO-.js.map → YamlWorkflowDetailPage-cNpR0PHg.js.map} +1 -1
- package/dashboard/dist/assets/{YamlWorkflowsPage-DOiEQDOq.js → YamlWorkflowsPage-DWvNfzji.js} +2 -2
- package/dashboard/dist/assets/{YamlWorkflowsPage-DOiEQDOq.js.map → YamlWorkflowsPage-DWvNfzji.js.map} +1 -1
- package/dashboard/dist/assets/{agents-D09G0HCv.js → agents-BvTiBKBQ.js} +2 -2
- package/dashboard/dist/assets/{agents-D09G0HCv.js.map → agents-BvTiBKBQ.js.map} +1 -1
- package/dashboard/dist/assets/{bots-D0LhyZZM.js → bots-CeMR1Lnp.js} +2 -2
- package/dashboard/dist/assets/{bots-D0LhyZZM.js.map → bots-CeMR1Lnp.js.map} +1 -1
- package/dashboard/dist/assets/{capabilities-DON4-NXs.js → capabilities-D7uJlnxj.js} +2 -2
- package/dashboard/dist/assets/{capabilities-DON4-NXs.js.map → capabilities-D7uJlnxj.js.map} +1 -1
- package/dashboard/dist/assets/{controlplane-Bihd1kXf.js → controlplane-Cf6lZsSF.js} +2 -2
- package/dashboard/dist/assets/{controlplane-Bihd1kXf.js.map → controlplane-Cf6lZsSF.js.map} +1 -1
- package/dashboard/dist/assets/{escalation-CP2XbdXK.js → escalation-BCFBWGP-.js} +2 -2
- package/dashboard/dist/assets/{escalation-CP2XbdXK.js.map → escalation-BCFBWGP-.js.map} +1 -1
- package/dashboard/dist/assets/{escalation-columns-9aw8Y4qq.js → escalation-columns-Do7k4fte.js} +2 -2
- package/dashboard/dist/assets/{escalation-columns-9aw8Y4qq.js.map → escalation-columns-Do7k4fte.js.map} +1 -1
- package/dashboard/dist/assets/{index-DgLZ8Ix5.js → index-8C9YLM_u.js} +2 -2
- package/dashboard/dist/assets/{index-DgLZ8Ix5.js.map → index-8C9YLM_u.js.map} +1 -1
- package/dashboard/dist/assets/{index-CCup2uaP.js → index-B216fPN_.js} +2 -2
- package/dashboard/dist/assets/{index-CCup2uaP.js.map → index-B216fPN_.js.map} +1 -1
- package/dashboard/dist/assets/index-BCfzac3h.css +1 -0
- package/dashboard/dist/assets/{index-Cb7aSzox.js → index-BDhEpETz.js} +2 -2
- package/dashboard/dist/assets/{index-Cb7aSzox.js.map → index-BDhEpETz.js.map} +1 -1
- package/dashboard/dist/assets/{index-_JsRJPds.js → index-BS5pcmBR.js} +2 -2
- package/dashboard/dist/assets/{index-_JsRJPds.js.map → index-BS5pcmBR.js.map} +1 -1
- package/dashboard/dist/assets/{index-B-BK3vtk.js → index-BUu3WKvk.js} +2 -2
- package/dashboard/dist/assets/{index-B-BK3vtk.js.map → index-BUu3WKvk.js.map} +1 -1
- package/dashboard/dist/assets/{index-BTp73vYK.js → index-C1p_rvkY.js} +2 -2
- package/dashboard/dist/assets/{index-BTp73vYK.js.map → index-C1p_rvkY.js.map} +1 -1
- package/dashboard/dist/assets/{index-CMRW_PE-.js → index-C51Jzvoz.js} +2 -2
- package/dashboard/dist/assets/{index-CMRW_PE-.js.map → index-C51Jzvoz.js.map} +1 -1
- package/dashboard/dist/assets/{index-BBBGETMs.js → index-D0fjUKvx.js} +2 -2
- package/dashboard/dist/assets/{index-BBBGETMs.js.map → index-D0fjUKvx.js.map} +1 -1
- package/dashboard/dist/assets/{index-BInTEEIX.js → index-D3SjB3UM.js} +2 -2
- package/dashboard/dist/assets/{index-BInTEEIX.js.map → index-D3SjB3UM.js.map} +1 -1
- package/dashboard/dist/assets/{index-rbuNUyAh.js → index-DSjbScPX.js} +2 -2
- package/dashboard/dist/assets/{index-rbuNUyAh.js.map → index-DSjbScPX.js.map} +1 -1
- package/dashboard/dist/assets/{index-B7lEd0cY.js → index-eWNx4UQ8.js} +3 -3
- package/dashboard/dist/assets/{index-B7lEd0cY.js.map → index-eWNx4UQ8.js.map} +1 -1
- package/dashboard/dist/assets/{index-H5Yb8CY2.js → index-gKm3HAgO.js} +2 -2
- package/dashboard/dist/assets/{index-H5Yb8CY2.js.map → index-gKm3HAgO.js.map} +1 -1
- package/dashboard/dist/assets/{index-Cjb8ulHm.js → index-oulO44Iy.js} +2 -2
- package/dashboard/dist/assets/{index-Cjb8ulHm.js.map → index-oulO44Iy.js.map} +1 -1
- package/dashboard/dist/assets/{knowledge-Bl_KaoKJ.js → knowledge-Bje8_ndK.js} +2 -2
- package/dashboard/dist/assets/{knowledge-Bl_KaoKJ.js.map → knowledge-Bje8_ndK.js.map} +1 -1
- package/dashboard/dist/assets/{mcp-DXbFGoA8.js → mcp-Bpl6p11J.js} +2 -2
- package/dashboard/dist/assets/{mcp-DXbFGoA8.js.map → mcp-Bpl6p11J.js.map} +1 -1
- package/dashboard/dist/assets/{mcp-query-Bg69DF2x.js → mcp-query-DMXj-t5f.js} +2 -2
- package/dashboard/dist/assets/{mcp-query-Bg69DF2x.js.map → mcp-query-DMXj-t5f.js.map} +1 -1
- package/dashboard/dist/assets/{pipelines-DK9LTg9F.js → pipelines-CFh9nBxn.js} +2 -2
- package/dashboard/dist/assets/{pipelines-DK9LTg9F.js.map → pipelines-CFh9nBxn.js.map} +1 -1
- package/dashboard/dist/assets/{roles-BrsBN4hO.js → roles-CtjQQWSQ.js} +2 -2
- package/dashboard/dist/assets/{roles-BrsBN4hO.js.map → roles-CtjQQWSQ.js.map} +1 -1
- package/dashboard/dist/assets/{tasks-CwjvPECN.js → tasks-Nz9lVCT1.js} +2 -2
- package/dashboard/dist/assets/{tasks-CwjvPECN.js.map → tasks-Nz9lVCT1.js.map} +1 -1
- package/dashboard/dist/assets/topics-CiG2N8Z_.js +2 -0
- package/dashboard/dist/assets/{topics-BrwkmaFR.js.map → topics-CiG2N8Z_.js.map} +1 -1
- package/dashboard/dist/assets/{useEventHooks-Cd1GM1NG.js → useEventHooks-Bimqt7hU.js} +2 -2
- package/dashboard/dist/assets/{useEventHooks-Cd1GM1NG.js.map → useEventHooks-Bimqt7hU.js.map} +1 -1
- package/dashboard/dist/assets/{useNamespace-D9lghZ25.js → useNamespace-FrG0Monz.js} +2 -2
- package/dashboard/dist/assets/{useNamespace-D9lghZ25.js.map → useNamespace-FrG0Monz.js.map} +1 -1
- package/dashboard/dist/assets/{useYamlActivityEvents-vOhAwmKO.js → useYamlActivityEvents-JmD4dH5n.js} +2 -2
- package/dashboard/dist/assets/{useYamlActivityEvents-vOhAwmKO.js.map → useYamlActivityEvents-JmD4dH5n.js.map} +1 -1
- package/dashboard/dist/assets/{users-ChQ7soaq.js → users-DgyonYq6.js} +2 -2
- package/dashboard/dist/assets/{users-ChQ7soaq.js.map → users-DgyonYq6.js.map} +1 -1
- package/dashboard/dist/assets/{workflows-BLKji1_1.js → workflows-BOwGINtF.js} +2 -2
- package/dashboard/dist/assets/{workflows-BLKji1_1.js.map → workflows-BOwGINtF.js.map} +1 -1
- package/dashboard/dist/assets/{yaml-workflows-BUhMfdaw.js → yaml-workflows-I1tcjCFK.js} +2 -2
- package/dashboard/dist/assets/{yaml-workflows-BUhMfdaw.js.map → yaml-workflows-I1tcjCFK.js.map} +1 -1
- package/dashboard/dist/index.html +2 -2
- package/docs/data.md +61 -38
- package/docs/events.md +34 -13
- package/package.json +2 -2
- package/dashboard/dist/assets/TopicDetailPage-W9RKkNNp.js +0 -9
- package/dashboard/dist/assets/TopicDetailPage-W9RKkNNp.js.map +0 -1
- package/dashboard/dist/assets/index-BFyzZGtv.css +0 -1
- package/dashboard/dist/assets/topics-BrwkmaFR.js +0 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index-rbuNUyAh.js","sources":["../../src/api/stream-messages.ts","../../src/pages/admin/streams/constants.ts","../../src/pages/admin/streams/StreamMessageDetail.tsx","../../src/pages/admin/streams/StreamMessagesPage.tsx"],"sourcesContent":["import { useQuery } from '@tanstack/react-query';\nimport { apiFetch } from './client';\n\n// ── Types ───────────────────────────────────────────────────────────────────\n\nexport type StreamMessageStatus = 'pending' | 'claimed' | 'processed' | 'dead_lettered';\nexport type StreamMessageSource = 'engine' | 'worker';\n\nexport interface StreamMessage {\n id: string;\n source: StreamMessageSource;\n stream_name: string;\n message: string;\n status: StreamMessageStatus;\n created_at: string;\n reserved_at: string | null;\n reserved_by: string | null;\n expired_at: string | null;\n dead_lettered_at: string | null;\n priority: number;\n visible_at: string | null;\n retry_attempt: number;\n max_retry_attempts: number;\n workflow_name: string | null;\n jid: string | null;\n aid: string | null;\n dad: string | null;\n msg_type: string | null;\n topic: string | null;\n}\n\nexport interface StreamMessagesResponse {\n messages: StreamMessage[];\n total: number;\n}\n\nexport interface StreamMessagesParams {\n namespace: string;\n source: StreamMessageSource;\n limit?: number;\n offset?: number;\n sort_by?: string;\n order?: 'asc' | 'desc';\n status?: StreamMessageStatus | '';\n stream_name?: string;\n msg_type?: string;\n topic?: string;\n workflow_name?: string;\n jid?: string;\n aid?: string;\n}\n\n// ── Fetch ───────────────────────────────────────────────────────────────────\n\nfunction fetchStreamMessages(params: StreamMessagesParams) {\n const qs = new URLSearchParams();\n qs.set('namespace', params.namespace);\n qs.set('source', params.source);\n if (params.limit) qs.set('limit', String(params.limit));\n if (params.offset) qs.set('offset', String(params.offset));\n if (params.sort_by) qs.set('sort_by', params.sort_by);\n if (params.order) qs.set('order', params.order);\n if (params.status) qs.set('status', params.status);\n if (params.stream_name) qs.set('stream_name', params.stream_name);\n if (params.msg_type) qs.set('msg_type', params.msg_type);\n if (params.topic) qs.set('topic', params.topic);\n if (params.workflow_name) qs.set('workflow_name', params.workflow_name);\n if (params.jid) qs.set('jid', params.jid);\n if (params.aid) qs.set('aid', params.aid);\n return apiFetch<StreamMessagesResponse>(`/controlplane/stream-messages?${qs}`);\n}\n\n// ── Hook ────────────────────────────────────────────────────────────────────\n\nexport function useStreamMessages(params: StreamMessagesParams) {\n return useQuery({\n queryKey: ['controlplane', 'stream-messages', params],\n queryFn: () => fetchStreamMessages(params),\n enabled: !!params.namespace,\n staleTime: 15_000,\n });\n}\n","import type { StreamMessageStatus } from '../../../api/stream-messages';\n\nexport const STATUS_DOT: Record<StreamMessageStatus, string> = {\n pending: 'bg-text-tertiary',\n claimed: 'bg-status-warning',\n processed: 'bg-status-success',\n dead_lettered: 'bg-status-error',\n};\n\nexport const STATUS_LABEL: Record<StreamMessageStatus, string> = {\n pending: 'Pending',\n claimed: 'Claimed',\n processed: 'Processed',\n dead_lettered: 'Dead Lettered',\n};\n\nexport const SOURCE_BADGE =\n 'inline-block px-1.5 py-0.5 text-[10px] font-mono rounded bg-surface-sunken text-text-secondary';\n\nexport const STATUS_OPTIONS = [\n { value: 'pending', label: 'Pending' },\n { value: 'claimed', label: 'Claimed' },\n { value: 'processed', label: 'Processed' },\n { value: 'dead_lettered', label: 'Dead Lettered' },\n];\n\nexport const SOURCE_OPTIONS = [\n { value: 'engine', label: 'Engine' },\n { value: 'worker', label: 'Worker' },\n];\n","import { Filter } from 'lucide-react';\nimport type { StreamMessage } from '../../../api/stream-messages';\nimport { SectionLabel } from '../../../components/common/layout/SectionLabel';\nimport { DateValue } from '../../../components/common/display/DateValue';\nimport { JsonViewer } from '../../../components/common/data/JsonViewer';\nimport { STATUS_DOT, STATUS_LABEL, SOURCE_BADGE } from './constants';\n\nfunction Timestamp({ label, value }: { label: string; value: string | null }) {\n if (!value) return null;\n return (\n <div>\n <span className=\"text-text-tertiary\">{label}</span>\n <div className=\"mt-0.5\">\n <DateValue date={value} format=\"datetime\" />\n </div>\n </div>\n );\n}\n\nfunction Field({ label, value }: { label: string; value: string | null | undefined }) {\n if (!value) return null;\n return (\n <div>\n <span className=\"text-text-tertiary\">{label}</span>\n <p className=\"text-xs text-text-primary font-mono break-all\">{value}</p>\n </div>\n );\n}\n\n/** A field value that can be clicked to filter the master list. */\nfunction FilterableField({ label, value, onFilter }: {\n label: string;\n value: string | null | undefined;\n onFilter?: (value: string) => void;\n}) {\n if (!value) return null;\n return (\n <div>\n <span className=\"text-text-tertiary\">{label}</span>\n <button\n onClick={() => onFilter?.(value)}\n className=\"flex items-center gap-1 group text-left w-full\"\n title={`Filter by ${label.toLowerCase()}: ${value}`}\n >\n <p className=\"text-xs text-text-primary font-mono break-all group-hover:text-accent transition-colors\">{value}</p>\n <Filter className=\"w-2.5 h-2.5 shrink-0 text-text-quaternary opacity-0 group-hover:opacity-100 transition-opacity\" />\n </button>\n </div>\n );\n}\n\nexport interface StreamMessageDetailFilters {\n onFilterStatus?: (value: string) => void;\n onFilterStreamName?: (value: string) => void;\n onFilterMsgType?: (value: string) => void;\n onFilterTopic?: (value: string) => void;\n onFilterWorkflow?: (value: string) => void;\n onFilterJid?: (value: string) => void;\n onFilterAid?: (value: string) => void;\n}\n\n/**\n * Standard stream message detail view.\n *\n * This component is the canonical representation of a stream message.\n * Reuse it wherever stream messages need to be displayed — the layout,\n * timestamp formatting (via DateValue with ms/UTC/local tooltip), and\n * payload viewer are the standard.\n */\nexport function StreamMessageDetail({ message, filters }: {\n message: StreamMessage | null;\n filters?: StreamMessageDetailFilters;\n}) {\n if (!message) return null;\n\n return (\n <div className=\"space-y-5 text-[11px]\">\n {/* Header */}\n <div>\n <div className=\"flex items-center gap-2 mb-1\">\n <span className={`w-2 h-2 rounded-full shrink-0 ${STATUS_DOT[message.status]}`} />\n <FilterableField\n label=\"\"\n value={STATUS_LABEL[message.status]}\n onFilter={() => filters?.onFilterStatus?.(message.status)}\n />\n <span className={SOURCE_BADGE}>{message.source}</span>\n </div>\n <FilterableField\n label=\"\"\n value={message.stream_name}\n onFilter={() => filters?.onFilterStreamName?.(message.stream_name)}\n />\n <p className=\"text-[10px] text-text-tertiary mt-0.5\">ID: {message.id}</p>\n </div>\n\n {/* Timestamps */}\n <div className=\"space-y-2\">\n <SectionLabel>Timestamps</SectionLabel>\n <div className=\"grid grid-cols-1 gap-2\">\n <Timestamp label=\"Created\" value={message.created_at} />\n <Timestamp label=\"Reserved\" value={message.reserved_at} />\n <Timestamp label=\"Processed\" value={message.expired_at} />\n <Timestamp label=\"Dead-lettered\" value={message.dead_lettered_at} />\n </div>\n </div>\n\n {/* Metadata */}\n <div className=\"space-y-2\">\n <SectionLabel>Metadata</SectionLabel>\n <div className=\"grid grid-cols-2 gap-2\">\n <Field label=\"Priority\" value={String(message.priority)} />\n <Field label=\"Retries\" value={`${message.retry_attempt} / ${message.max_retry_attempts}`} />\n <Field label=\"Reserved by\" value={message.reserved_by} />\n </div>\n </div>\n\n {/* Job ID — available on both engine and worker streams */}\n {message.jid && (\n <div className=\"space-y-2\">\n <SectionLabel>Job</SectionLabel>\n <div className=\"grid grid-cols-1 gap-2\">\n <FilterableField label=\"Job ID\" value={message.jid} onFilter={filters?.onFilterJid} />\n </div>\n </div>\n )}\n\n {/* Worker-specific fields — clickable to filter */}\n {message.source === 'worker' && (\n <div className=\"space-y-2\">\n <SectionLabel>Worker Details</SectionLabel>\n <div className=\"grid grid-cols-1 gap-2\">\n <FilterableField label=\"Workflow\" value={message.workflow_name} onFilter={filters?.onFilterWorkflow} />\n <FilterableField label=\"Activity\" value={message.aid} onFilter={filters?.onFilterAid} />\n <Field label=\"Dimension\" value={message.dad} />\n <FilterableField label=\"Type\" value={message.msg_type} onFilter={filters?.onFilterMsgType} />\n <FilterableField label=\"Topic\" value={message.topic} onFilter={filters?.onFilterTopic} />\n </div>\n </div>\n )}\n\n {/* Message payload — fully expanded by default */}\n <div className=\"space-y-2\">\n <JsonViewer data={message.message} label=\"Payload\" defaultCollapsed={false} />\n </div>\n </div>\n );\n}\n","import { useState, useMemo } from 'react';\nimport { createPortal } from 'react-dom';\nimport { X } from 'lucide-react';\nimport { useStreamMessages, type StreamMessage } from '../../../api/stream-messages';\nimport { useFilterParams } from '../../../hooks/useFilterParams';\nimport { useNamespace } from '../../../hooks/useNamespace';\nimport { DataTable, type Column } from '../../../components/common/data/DataTable';\nimport { StickyPagination } from '../../../components/common/data/StickyPagination';\nimport { FilterBar, FilterSelect, FilterInput } from '../../../components/common/data/FilterBar';\nimport { TimestampCell } from '../../../components/common/display/TimestampCell';\nimport { PageHeader } from '../../../components/common/layout/PageHeader';\nimport { ListToolbar } from '../../../components/common/data/ListToolbar';\nimport { StreamMessageDetail } from './StreamMessageDetail';\nimport { STATUS_DOT, STATUS_LABEL, STATUS_OPTIONS, SOURCE_OPTIONS, SOURCE_BADGE } from './constants';\n\nfunction truncateMiddle(str: string, max: number): string {\n if (str.length <= max) return str;\n const half = Math.floor((max - 1) / 2);\n return `${str.slice(0, half)}…${str.slice(-half)}`;\n}\n\nexport function StreamMessagesPage() {\n const { namespace, available } = useNamespace('namespace');\n\n const { filters, setFilter, pagination, sort, setSort } = useFilterParams({\n filters: { namespace: '', source: 'worker', status: '', stream_name: '', msg_type: '', topic: '', workflow_name: '', jid: '', aid: '' },\n });\n\n const [selected, setSelected] = useState<StreamMessage | null>(null);\n\n const namespaceOptions = useMemo(\n () => available.map((id) => ({ value: id, label: id })),\n [available],\n );\n\n const { data, isLoading, refetch, isFetching } = useStreamMessages({\n namespace: filters.namespace || namespace,\n source: (filters.source as 'engine' | 'worker') || 'worker',\n limit: pagination.pageSize,\n offset: pagination.offset,\n sort_by: sort.sort_by || 'created_at',\n order: sort.order || 'desc',\n status: (filters.status as any) || undefined,\n stream_name: filters.stream_name || undefined,\n msg_type: filters.msg_type || undefined,\n topic: filters.topic || undefined,\n workflow_name: filters.workflow_name || undefined,\n jid: filters.jid || undefined,\n aid: filters.aid || undefined,\n });\n\n const messages = data?.messages ?? [];\n const total = data?.total ?? 0;\n\n const activeMessage = useMemo(() => {\n if (!selected) return null;\n return messages.find((m) => m.id === selected.id && m.source === selected.source) ?? selected;\n }, [messages, selected]);\n\n const panelOpen = !!activeMessage;\n\n const columns: Column<StreamMessage>[] = [\n {\n key: 'status',\n label: 'Status',\n render: (row) => (\n <div className=\"flex items-center gap-2\">\n <span className={`w-2 h-2 rounded-full shrink-0 ${STATUS_DOT[row.status]}`} />\n <span className=\"text-xs\">{STATUS_LABEL[row.status]}</span>\n </div>\n ),\n className: 'w-28',\n },\n {\n key: 'source',\n label: 'Source',\n render: (row) => <span className={SOURCE_BADGE}>{row.source}</span>,\n className: 'w-20',\n },\n {\n key: 'stream_name',\n label: 'Stream',\n sortable: true,\n render: (row) => (\n <span className=\"font-mono text-xs text-text-secondary truncate block max-w-[240px]\" title={row.stream_name}>\n {row.stream_name}\n </span>\n ),\n },\n {\n key: 'msg_type',\n label: 'Type',\n render: (row) => (\n <span className=\"text-xs text-text-secondary\">{row.msg_type || '—'}</span>\n ),\n className: 'w-24',\n },\n {\n key: 'created_at',\n label: 'Created',\n sortable: true,\n render: (row) => <TimestampCell date={row.created_at} />,\n className: 'w-44',\n },\n {\n key: 'reserved_at',\n label: 'Reserved',\n render: (row) => row.reserved_at ? <TimestampCell date={row.reserved_at} /> : <span className=\"text-xs text-text-tertiary\">—</span>,\n className: 'w-44',\n },\n {\n key: 'expired_at',\n label: 'Processed',\n render: (row) => row.expired_at ? <TimestampCell date={row.expired_at} /> : <span className=\"text-xs text-text-tertiary\">—</span>,\n className: 'w-44',\n },\n {\n key: 'priority',\n label: 'Pri',\n sortable: true,\n render: (row) => <span className=\"text-xs text-text-secondary\">{row.priority}</span>,\n className: 'w-12 text-right',\n },\n {\n key: 'retry_attempt',\n label: 'Retries',\n render: (row) => (\n <span className=\"text-xs text-text-secondary\">\n {row.retry_attempt}/{row.max_retry_attempts}\n </span>\n ),\n className: 'w-16',\n },\n ];\n\n return (\n <div>\n <PageHeader title=\"Messages\" docsHash=\"#docs:dashboard.md:messages\" />\n\n <FilterBar actions={\n <ListToolbar\n onRefresh={() => refetch()}\n isFetching={isFetching}\n apiPath={`/controlplane/stream-messages?namespace=${filters.namespace || namespace}&source=${filters.source || 'worker'}&limit=${pagination.pageSize}&offset=${pagination.offset}${filters.status ? `&status=${filters.status}` : ''}${filters.stream_name ? `&stream_name=${filters.stream_name}` : ''}`}\n />\n }>\n <FilterSelect\n label=\"Namespace\"\n value={filters.namespace}\n onChange={(v) => setFilter('namespace', v)}\n options={namespaceOptions}\n required\n />\n <FilterSelect\n label=\"Source\"\n value={filters.source}\n onChange={(v) => setFilter('source', v)}\n options={SOURCE_OPTIONS}\n required\n />\n <FilterSelect\n label=\"Status\"\n value={filters.status}\n onChange={(v) => setFilter('status', v)}\n options={STATUS_OPTIONS}\n />\n <FilterInput\n label=\"Stream\"\n value={filters.stream_name}\n onChange={(v) => setFilter('stream_name', v)}\n placeholder=\"Filter by stream name…\"\n />\n <FilterInput\n label=\"Job ID\"\n value={filters.jid}\n onChange={(v) => setFilter('jid', v)}\n placeholder=\"Filter by jid…\"\n />\n {/* Active dimension filter pills — inline in the sticky bar */}\n {[\n { key: 'topic', label: 'Topic', value: filters.topic },\n { key: 'workflow_name', label: 'Workflow', value: filters.workflow_name },\n { key: 'aid', label: 'Activity', value: filters.aid },\n { key: 'msg_type', label: 'Type', value: filters.msg_type },\n ].filter((f) => f.value).map((f) => (\n <button\n key={f.key}\n onClick={() => setFilter(f.key as any, '')}\n className=\"inline-flex items-center gap-1 px-2 py-0.5 text-[10px] font-mono rounded-full bg-accent/15 text-accent hover:bg-accent/25 transition-colors\"\n title={`Clear ${f.label} filter: ${f.value}`}\n >\n {f.label}: {truncateMiddle(f.value, 12)}\n <X className=\"w-2.5 h-2.5\" />\n </button>\n ))}\n </FilterBar>\n\n <DataTable\n columns={columns}\n data={messages}\n keyFn={(row) => `${row.source}:${row.id}`}\n isLoading={isLoading}\n emptyMessage=\"No stream messages found\"\n onRowClick={(row) => setSelected(row)}\n activeRowKey={activeMessage ? `${activeMessage.source}:${activeMessage.id}` : null}\n sort={sort}\n onSort={setSort}\n />\n\n <StickyPagination\n page={pagination.page}\n totalPages={pagination.totalPages(total)}\n onPageChange={pagination.setPage}\n total={total}\n pageSize={pagination.pageSize}\n onPageSizeChange={pagination.setPageSize}\n />\n\n {/* Detail panel — portaled to body so fixed positioning works */}\n {panelOpen && createPortal(\n <div className=\"fixed right-0 bottom-0 w-[400px] z-40 border-l border-surface-border bg-surface overflow-y-auto shadow-lg\" style={{ top: '3.5rem' }}>\n <div className=\"sticky top-0 z-10 flex items-center justify-between px-4 py-3 bg-surface border-b border-surface-border/50\">\n <span className=\"text-xs font-medium text-text-primary\">Message Detail</span>\n <button\n onClick={() => setSelected(null)}\n className=\"p-1 rounded hover:bg-surface-hover text-text-tertiary hover:text-text-primary transition-colors\"\n title=\"Close\"\n >\n <X className=\"w-4 h-4\" />\n </button>\n </div>\n <div className=\"px-4 py-4\">\n <StreamMessageDetail\n message={activeMessage}\n filters={{\n onFilterStatus: (v) => setFilter('status', v),\n onFilterStreamName: (v) => setFilter('stream_name', v),\n onFilterMsgType: (v) => setFilter('msg_type', v),\n onFilterTopic: (v) => setFilter('topic', v),\n onFilterWorkflow: (v) => setFilter('workflow_name', v),\n onFilterJid: (v) => setFilter('jid', v),\n onFilterAid: (v) => setFilter('aid', v),\n }}\n />\n </div>\n </div>,\n document.body,\n )}\n </div>\n );\n}\n"],"names":["fetchStreamMessages","params","qs","apiFetch","useStreamMessages","useQuery","STATUS_DOT","STATUS_LABEL","SOURCE_BADGE","STATUS_OPTIONS","SOURCE_OPTIONS","Timestamp","label","value","jsx","DateValue","Field","FilterableField","onFilter","jsxs","Filter","StreamMessageDetail","message","filters","_a","SectionLabel","JsonViewer","truncateMiddle","str","max","half","StreamMessagesPage","namespace","available","useNamespace","setFilter","pagination","sort","setSort","useFilterParams","selected","setSelected","useState","namespaceOptions","useMemo","id","data","isLoading","refetch","isFetching","messages","total","activeMessage","m","panelOpen","columns","row","TimestampCell","PageHeader","FilterBar","ListToolbar","FilterSelect","v","FilterInput","f","X","DataTable","StickyPagination","createPortal"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index-DSjbScPX.js","sources":["../../src/api/stream-messages.ts","../../src/pages/admin/streams/constants.ts","../../src/pages/admin/streams/StreamMessageDetail.tsx","../../src/pages/admin/streams/StreamMessagesPage.tsx"],"sourcesContent":["import { useQuery } from '@tanstack/react-query';\nimport { apiFetch } from './client';\n\n// ── Types ───────────────────────────────────────────────────────────────────\n\nexport type StreamMessageStatus = 'pending' | 'claimed' | 'processed' | 'dead_lettered';\nexport type StreamMessageSource = 'engine' | 'worker';\n\nexport interface StreamMessage {\n id: string;\n source: StreamMessageSource;\n stream_name: string;\n message: string;\n status: StreamMessageStatus;\n created_at: string;\n reserved_at: string | null;\n reserved_by: string | null;\n expired_at: string | null;\n dead_lettered_at: string | null;\n priority: number;\n visible_at: string | null;\n retry_attempt: number;\n max_retry_attempts: number;\n workflow_name: string | null;\n jid: string | null;\n aid: string | null;\n dad: string | null;\n msg_type: string | null;\n topic: string | null;\n}\n\nexport interface StreamMessagesResponse {\n messages: StreamMessage[];\n total: number;\n}\n\nexport interface StreamMessagesParams {\n namespace: string;\n source: StreamMessageSource;\n limit?: number;\n offset?: number;\n sort_by?: string;\n order?: 'asc' | 'desc';\n status?: StreamMessageStatus | '';\n stream_name?: string;\n msg_type?: string;\n topic?: string;\n workflow_name?: string;\n jid?: string;\n aid?: string;\n}\n\n// ── Fetch ───────────────────────────────────────────────────────────────────\n\nfunction fetchStreamMessages(params: StreamMessagesParams) {\n const qs = new URLSearchParams();\n qs.set('namespace', params.namespace);\n qs.set('source', params.source);\n if (params.limit) qs.set('limit', String(params.limit));\n if (params.offset) qs.set('offset', String(params.offset));\n if (params.sort_by) qs.set('sort_by', params.sort_by);\n if (params.order) qs.set('order', params.order);\n if (params.status) qs.set('status', params.status);\n if (params.stream_name) qs.set('stream_name', params.stream_name);\n if (params.msg_type) qs.set('msg_type', params.msg_type);\n if (params.topic) qs.set('topic', params.topic);\n if (params.workflow_name) qs.set('workflow_name', params.workflow_name);\n if (params.jid) qs.set('jid', params.jid);\n if (params.aid) qs.set('aid', params.aid);\n return apiFetch<StreamMessagesResponse>(`/controlplane/stream-messages?${qs}`);\n}\n\n// ── Hook ────────────────────────────────────────────────────────────────────\n\nexport function useStreamMessages(params: StreamMessagesParams) {\n return useQuery({\n queryKey: ['controlplane', 'stream-messages', params],\n queryFn: () => fetchStreamMessages(params),\n enabled: !!params.namespace,\n staleTime: 15_000,\n });\n}\n","import type { StreamMessageStatus } from '../../../api/stream-messages';\n\nexport const STATUS_DOT: Record<StreamMessageStatus, string> = {\n pending: 'bg-text-tertiary',\n claimed: 'bg-status-warning',\n processed: 'bg-status-success',\n dead_lettered: 'bg-status-error',\n};\n\nexport const STATUS_LABEL: Record<StreamMessageStatus, string> = {\n pending: 'Pending',\n claimed: 'Claimed',\n processed: 'Processed',\n dead_lettered: 'Dead Lettered',\n};\n\nexport const SOURCE_BADGE =\n 'inline-block px-1.5 py-0.5 text-[10px] font-mono rounded bg-surface-sunken text-text-secondary';\n\nexport const STATUS_OPTIONS = [\n { value: 'pending', label: 'Pending' },\n { value: 'claimed', label: 'Claimed' },\n { value: 'processed', label: 'Processed' },\n { value: 'dead_lettered', label: 'Dead Lettered' },\n];\n\nexport const SOURCE_OPTIONS = [\n { value: 'engine', label: 'Engine' },\n { value: 'worker', label: 'Worker' },\n];\n","import { Filter } from 'lucide-react';\nimport type { StreamMessage } from '../../../api/stream-messages';\nimport { SectionLabel } from '../../../components/common/layout/SectionLabel';\nimport { DateValue } from '../../../components/common/display/DateValue';\nimport { JsonViewer } from '../../../components/common/data/JsonViewer';\nimport { STATUS_DOT, STATUS_LABEL, SOURCE_BADGE } from './constants';\n\nfunction Timestamp({ label, value }: { label: string; value: string | null }) {\n if (!value) return null;\n return (\n <div>\n <span className=\"text-text-tertiary\">{label}</span>\n <div className=\"mt-0.5\">\n <DateValue date={value} format=\"datetime\" />\n </div>\n </div>\n );\n}\n\nfunction Field({ label, value }: { label: string; value: string | null | undefined }) {\n if (!value) return null;\n return (\n <div>\n <span className=\"text-text-tertiary\">{label}</span>\n <p className=\"text-xs text-text-primary font-mono break-all\">{value}</p>\n </div>\n );\n}\n\n/** A field value that can be clicked to filter the master list. */\nfunction FilterableField({ label, value, onFilter }: {\n label: string;\n value: string | null | undefined;\n onFilter?: (value: string) => void;\n}) {\n if (!value) return null;\n return (\n <div>\n <span className=\"text-text-tertiary\">{label}</span>\n <button\n onClick={() => onFilter?.(value)}\n className=\"flex items-center gap-1 group text-left w-full\"\n title={`Filter by ${label.toLowerCase()}: ${value}`}\n >\n <p className=\"text-xs text-text-primary font-mono break-all group-hover:text-accent transition-colors\">{value}</p>\n <Filter className=\"w-2.5 h-2.5 shrink-0 text-text-quaternary opacity-0 group-hover:opacity-100 transition-opacity\" />\n </button>\n </div>\n );\n}\n\nexport interface StreamMessageDetailFilters {\n onFilterStatus?: (value: string) => void;\n onFilterStreamName?: (value: string) => void;\n onFilterMsgType?: (value: string) => void;\n onFilterTopic?: (value: string) => void;\n onFilterWorkflow?: (value: string) => void;\n onFilterJid?: (value: string) => void;\n onFilterAid?: (value: string) => void;\n}\n\n/**\n * Standard stream message detail view.\n *\n * This component is the canonical representation of a stream message.\n * Reuse it wherever stream messages need to be displayed — the layout,\n * timestamp formatting (via DateValue with ms/UTC/local tooltip), and\n * payload viewer are the standard.\n */\nexport function StreamMessageDetail({ message, filters }: {\n message: StreamMessage | null;\n filters?: StreamMessageDetailFilters;\n}) {\n if (!message) return null;\n\n return (\n <div className=\"space-y-5 text-[11px]\">\n {/* Header */}\n <div>\n <div className=\"flex items-center gap-2 mb-1\">\n <span className={`w-2 h-2 rounded-full shrink-0 ${STATUS_DOT[message.status]}`} />\n <FilterableField\n label=\"\"\n value={STATUS_LABEL[message.status]}\n onFilter={() => filters?.onFilterStatus?.(message.status)}\n />\n <span className={SOURCE_BADGE}>{message.source}</span>\n </div>\n <FilterableField\n label=\"\"\n value={message.stream_name}\n onFilter={() => filters?.onFilterStreamName?.(message.stream_name)}\n />\n <p className=\"text-[10px] text-text-tertiary mt-0.5\">ID: {message.id}</p>\n </div>\n\n {/* Timestamps */}\n <div className=\"space-y-2\">\n <SectionLabel>Timestamps</SectionLabel>\n <div className=\"grid grid-cols-1 gap-2\">\n <Timestamp label=\"Created\" value={message.created_at} />\n <Timestamp label=\"Reserved\" value={message.reserved_at} />\n <Timestamp label=\"Processed\" value={message.expired_at} />\n <Timestamp label=\"Dead-lettered\" value={message.dead_lettered_at} />\n </div>\n </div>\n\n {/* Metadata */}\n <div className=\"space-y-2\">\n <SectionLabel>Metadata</SectionLabel>\n <div className=\"grid grid-cols-2 gap-2\">\n <Field label=\"Priority\" value={String(message.priority)} />\n <Field label=\"Retries\" value={`${message.retry_attempt} / ${message.max_retry_attempts}`} />\n <Field label=\"Reserved by\" value={message.reserved_by} />\n </div>\n </div>\n\n {/* Job ID — available on both engine and worker streams */}\n {message.jid && (\n <div className=\"space-y-2\">\n <SectionLabel>Job</SectionLabel>\n <div className=\"grid grid-cols-1 gap-2\">\n <FilterableField label=\"Job ID\" value={message.jid} onFilter={filters?.onFilterJid} />\n </div>\n </div>\n )}\n\n {/* Worker-specific fields — clickable to filter */}\n {message.source === 'worker' && (\n <div className=\"space-y-2\">\n <SectionLabel>Worker Details</SectionLabel>\n <div className=\"grid grid-cols-1 gap-2\">\n <FilterableField label=\"Workflow\" value={message.workflow_name} onFilter={filters?.onFilterWorkflow} />\n <FilterableField label=\"Activity\" value={message.aid} onFilter={filters?.onFilterAid} />\n <Field label=\"Dimension\" value={message.dad} />\n <FilterableField label=\"Type\" value={message.msg_type} onFilter={filters?.onFilterMsgType} />\n <FilterableField label=\"Topic\" value={message.topic} onFilter={filters?.onFilterTopic} />\n </div>\n </div>\n )}\n\n {/* Message payload — fully expanded by default */}\n <div className=\"space-y-2\">\n <JsonViewer data={message.message} label=\"Payload\" defaultCollapsed={false} />\n </div>\n </div>\n );\n}\n","import { useState, useMemo } from 'react';\nimport { createPortal } from 'react-dom';\nimport { X } from 'lucide-react';\nimport { useStreamMessages, type StreamMessage } from '../../../api/stream-messages';\nimport { useFilterParams } from '../../../hooks/useFilterParams';\nimport { useNamespace } from '../../../hooks/useNamespace';\nimport { DataTable, type Column } from '../../../components/common/data/DataTable';\nimport { StickyPagination } from '../../../components/common/data/StickyPagination';\nimport { FilterBar, FilterSelect, FilterInput } from '../../../components/common/data/FilterBar';\nimport { TimestampCell } from '../../../components/common/display/TimestampCell';\nimport { PageHeader } from '../../../components/common/layout/PageHeader';\nimport { ListToolbar } from '../../../components/common/data/ListToolbar';\nimport { StreamMessageDetail } from './StreamMessageDetail';\nimport { STATUS_DOT, STATUS_LABEL, STATUS_OPTIONS, SOURCE_OPTIONS, SOURCE_BADGE } from './constants';\n\nfunction truncateMiddle(str: string, max: number): string {\n if (str.length <= max) return str;\n const half = Math.floor((max - 1) / 2);\n return `${str.slice(0, half)}…${str.slice(-half)}`;\n}\n\nexport function StreamMessagesPage() {\n const { namespace, available } = useNamespace('namespace');\n\n const { filters, setFilter, pagination, sort, setSort } = useFilterParams({\n filters: { namespace: '', source: 'worker', status: '', stream_name: '', msg_type: '', topic: '', workflow_name: '', jid: '', aid: '' },\n });\n\n const [selected, setSelected] = useState<StreamMessage | null>(null);\n\n const namespaceOptions = useMemo(\n () => available.map((id) => ({ value: id, label: id })),\n [available],\n );\n\n const { data, isLoading, refetch, isFetching } = useStreamMessages({\n namespace: filters.namespace || namespace,\n source: (filters.source as 'engine' | 'worker') || 'worker',\n limit: pagination.pageSize,\n offset: pagination.offset,\n sort_by: sort.sort_by || 'created_at',\n order: sort.order || 'desc',\n status: (filters.status as any) || undefined,\n stream_name: filters.stream_name || undefined,\n msg_type: filters.msg_type || undefined,\n topic: filters.topic || undefined,\n workflow_name: filters.workflow_name || undefined,\n jid: filters.jid || undefined,\n aid: filters.aid || undefined,\n });\n\n const messages = data?.messages ?? [];\n const total = data?.total ?? 0;\n\n const activeMessage = useMemo(() => {\n if (!selected) return null;\n return messages.find((m) => m.id === selected.id && m.source === selected.source) ?? selected;\n }, [messages, selected]);\n\n const panelOpen = !!activeMessage;\n\n const columns: Column<StreamMessage>[] = [\n {\n key: 'status',\n label: 'Status',\n render: (row) => (\n <div className=\"flex items-center gap-2\">\n <span className={`w-2 h-2 rounded-full shrink-0 ${STATUS_DOT[row.status]}`} />\n <span className=\"text-xs\">{STATUS_LABEL[row.status]}</span>\n </div>\n ),\n className: 'w-28',\n },\n {\n key: 'source',\n label: 'Source',\n render: (row) => <span className={SOURCE_BADGE}>{row.source}</span>,\n className: 'w-20',\n },\n {\n key: 'stream_name',\n label: 'Stream',\n sortable: true,\n render: (row) => (\n <span className=\"font-mono text-xs text-text-secondary truncate block max-w-[240px]\" title={row.stream_name}>\n {row.stream_name}\n </span>\n ),\n },\n {\n key: 'msg_type',\n label: 'Type',\n render: (row) => (\n <span className=\"text-xs text-text-secondary\">{row.msg_type || '—'}</span>\n ),\n className: 'w-24',\n },\n {\n key: 'created_at',\n label: 'Created',\n sortable: true,\n render: (row) => <TimestampCell date={row.created_at} />,\n className: 'w-44',\n },\n {\n key: 'reserved_at',\n label: 'Reserved',\n render: (row) => row.reserved_at ? <TimestampCell date={row.reserved_at} /> : <span className=\"text-xs text-text-tertiary\">—</span>,\n className: 'w-44',\n },\n {\n key: 'expired_at',\n label: 'Processed',\n render: (row) => row.expired_at ? <TimestampCell date={row.expired_at} /> : <span className=\"text-xs text-text-tertiary\">—</span>,\n className: 'w-44',\n },\n {\n key: 'priority',\n label: 'Pri',\n sortable: true,\n render: (row) => <span className=\"text-xs text-text-secondary\">{row.priority}</span>,\n className: 'w-12 text-right',\n },\n {\n key: 'retry_attempt',\n label: 'Retries',\n render: (row) => (\n <span className=\"text-xs text-text-secondary\">\n {row.retry_attempt}/{row.max_retry_attempts}\n </span>\n ),\n className: 'w-16',\n },\n ];\n\n return (\n <div>\n <PageHeader title=\"Messages\" docsHash=\"#docs:dashboard.md:messages\" />\n\n <FilterBar actions={\n <ListToolbar\n onRefresh={() => refetch()}\n isFetching={isFetching}\n apiPath={`/controlplane/stream-messages?namespace=${filters.namespace || namespace}&source=${filters.source || 'worker'}&limit=${pagination.pageSize}&offset=${pagination.offset}${filters.status ? `&status=${filters.status}` : ''}${filters.stream_name ? `&stream_name=${filters.stream_name}` : ''}`}\n />\n }>\n <FilterSelect\n label=\"Namespace\"\n value={filters.namespace}\n onChange={(v) => setFilter('namespace', v)}\n options={namespaceOptions}\n required\n />\n <FilterSelect\n label=\"Source\"\n value={filters.source}\n onChange={(v) => setFilter('source', v)}\n options={SOURCE_OPTIONS}\n required\n />\n <FilterSelect\n label=\"Status\"\n value={filters.status}\n onChange={(v) => setFilter('status', v)}\n options={STATUS_OPTIONS}\n />\n <FilterInput\n label=\"Stream\"\n value={filters.stream_name}\n onChange={(v) => setFilter('stream_name', v)}\n placeholder=\"Filter by stream name…\"\n />\n <FilterInput\n label=\"Job ID\"\n value={filters.jid}\n onChange={(v) => setFilter('jid', v)}\n placeholder=\"Filter by jid…\"\n />\n {/* Active dimension filter pills — inline in the sticky bar */}\n {[\n { key: 'topic', label: 'Topic', value: filters.topic },\n { key: 'workflow_name', label: 'Workflow', value: filters.workflow_name },\n { key: 'aid', label: 'Activity', value: filters.aid },\n { key: 'msg_type', label: 'Type', value: filters.msg_type },\n ].filter((f) => f.value).map((f) => (\n <button\n key={f.key}\n onClick={() => setFilter(f.key as any, '')}\n className=\"inline-flex items-center gap-1 px-2 py-0.5 text-[10px] font-mono rounded-full bg-accent/15 text-accent hover:bg-accent/25 transition-colors\"\n title={`Clear ${f.label} filter: ${f.value}`}\n >\n {f.label}: {truncateMiddle(f.value, 12)}\n <X className=\"w-2.5 h-2.5\" />\n </button>\n ))}\n </FilterBar>\n\n <DataTable\n columns={columns}\n data={messages}\n keyFn={(row) => `${row.source}:${row.id}`}\n isLoading={isLoading}\n emptyMessage=\"No stream messages found\"\n onRowClick={(row) => setSelected(row)}\n activeRowKey={activeMessage ? `${activeMessage.source}:${activeMessage.id}` : null}\n sort={sort}\n onSort={setSort}\n />\n\n <StickyPagination\n page={pagination.page}\n totalPages={pagination.totalPages(total)}\n onPageChange={pagination.setPage}\n total={total}\n pageSize={pagination.pageSize}\n onPageSizeChange={pagination.setPageSize}\n />\n\n {/* Detail panel — portaled to body so fixed positioning works */}\n {panelOpen && createPortal(\n <div className=\"fixed right-0 bottom-0 w-[400px] z-40 border-l border-surface-border bg-surface overflow-y-auto shadow-lg\" style={{ top: '3.5rem' }}>\n <div className=\"sticky top-0 z-10 flex items-center justify-between px-4 py-3 bg-surface border-b border-surface-border/50\">\n <span className=\"text-xs font-medium text-text-primary\">Message Detail</span>\n <button\n onClick={() => setSelected(null)}\n className=\"p-1 rounded hover:bg-surface-hover text-text-tertiary hover:text-text-primary transition-colors\"\n title=\"Close\"\n >\n <X className=\"w-4 h-4\" />\n </button>\n </div>\n <div className=\"px-4 py-4\">\n <StreamMessageDetail\n message={activeMessage}\n filters={{\n onFilterStatus: (v) => setFilter('status', v),\n onFilterStreamName: (v) => setFilter('stream_name', v),\n onFilterMsgType: (v) => setFilter('msg_type', v),\n onFilterTopic: (v) => setFilter('topic', v),\n onFilterWorkflow: (v) => setFilter('workflow_name', v),\n onFilterJid: (v) => setFilter('jid', v),\n onFilterAid: (v) => setFilter('aid', v),\n }}\n />\n </div>\n </div>,\n document.body,\n )}\n </div>\n );\n}\n"],"names":["fetchStreamMessages","params","qs","apiFetch","useStreamMessages","useQuery","STATUS_DOT","STATUS_LABEL","SOURCE_BADGE","STATUS_OPTIONS","SOURCE_OPTIONS","Timestamp","label","value","jsx","DateValue","Field","FilterableField","onFilter","jsxs","Filter","StreamMessageDetail","message","filters","_a","SectionLabel","JsonViewer","truncateMiddle","str","max","half","StreamMessagesPage","namespace","available","useNamespace","setFilter","pagination","sort","setSort","useFilterParams","selected","setSelected","useState","namespaceOptions","useMemo","id","data","isLoading","refetch","isFetching","messages","total","activeMessage","m","panelOpen","columns","row","TimestampCell","PageHeader","FilterBar","ListToolbar","FilterSelect","v","FilterInput","f","X","DataTable","StickyPagination","createPortal"],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./ProcessesListPage-
|
|
1
|
+
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./ProcessesListPage-DOzeduP3.js","./vendor-query-B2UbickB.js","./tasks-Nz9lVCT1.js","./workflows-BOwGINtF.js","./useEventHooks-Bimqt7hU.js","./useFilterParams-x-Dg0Vgz.js","./vendor-react-CXumBFUA.js","./DataTable-D9yuBv0w.js","./EmptyState-BcsfPq9T.js","./TimestampCell-BneATvjR.js","./StickyPagination-BWhFSr2d.js","./FilterBar-Ck4K4rzu.js","./PageHeader-Bnt2iQQa.js","./vendor-icons-Dj2F0Jrb.js","./ListToolbar-B71DqaXr.js","./WorkflowPill-F1oKUzmc.js","./ProcessDetailPage-BjkLfyrm.js","./PageHeaderWithStats-BuKc9MKt.js","./StatusBadge-XQlNFwmH.js","./RolePill-DQTT1s9v.js","./UserName-Cb2WvhCN.js","./users-DgyonYq6.js","./McpOverview-CPD6NRGt.js","./mcp-Bpl6p11J.js","./pipelines-CFh9nBxn.js","./yaml-workflows-I1tcjCFK.js","./controlplane-Cf6lZsSF.js","./StatCard-DlgF0CJC.js","./McpRunsPage-BFards4K.js","./useNamespace-FrG0Monz.js","./ElapsedCell-BFOMsgwF.js","./RowActions-Dg-Fsm5O.js","./McpRunDetailPage-Cv43tkjz.js","./CopyableId-DaT0ZRHg.js","./CollapsibleSection-CggyKhyZ.js","./useCollapsedSections-BU5HULGs.js","./SwimlaneTimeline-DtCgJNpV.js","./EventTable-N0XmLk3C.js","./McpQueryPage-BWf45EYD.js","./mcp-query-DMXj-t5f.js","./McpQueryDetailPage-YyqXw6Dt.js","./TagInput-B00uqhjX.js","./useYamlActivityEvents-JmD4dH5n.js","./helpers-DzO-OGPe.js","./RunAsSelector-CM7lk1YB.js","./BotPicker-DBvd1yFL.js","./bots-CeMR1Lnp.js","./ToolPill-DjvedZSn.js","./TimeAgo-xrDlFnPy.js","./EscalationsOverview-BfjW6haL.js","./AvailableEscalationsPage-Cqy5ECm4.js","./roles-CtjQQWSQ.js","./constants-BHkpVaqx.js","./CustomDurationPicker-CUYE36-K.js","./Modal-CSrxpXeM.js","./escalation-columns-Do7k4fte.js","./PriorityBadge-DfQY9St9.js","./escalation-BCFBWGP-.js","./OperatorDashboard-BJZxuOKI.js","./index-BUu3WKvk.js","./WorkflowsOverview-CeE7a51J.js","./index-D0fjUKvx.js","./NamespacePill-DnJl4Lre.js","./WorkflowsDashboard-DOaDSC98.js","./YamlWorkflowsPage-DWvNfzji.js","./GraphInvokePage-DHiGHiCk.js","./YamlWorkflowDetailPage-cNpR0PHg.js","./TasksListPage-DtbLfUS-.js","./TaskDetailPage-BC9xnyLT.js","./WorkflowExecutionPage-BWCTOTXF.js","./AdminDashboard-DIQEViVY.js","./index-BDhEpETz.js","./TaskQueuePill-CUsofm0X.js","./index-C51Jzvoz.js","./ConfirmDeleteModal-D9_1b4MW.js","./index-C1p_rvkY.js","./ToolTestPanel-1lQ_GQod.js","./index-gKm3HAgO.js","./index-oulO44Iy.js","./RolesPage-DSSQrGTh.js","./index-BS5pcmBR.js","./index-8C9YLM_u.js","./index-DSjbScPX.js","./CredentialsPage-B4sXGLRY.js","./index-B216fPN_.js","./DropZone-Dwpgbueb.js","./index-D3SjB3UM.js","./knowledge-Bje8_ndK.js","./HomePage-jckQolbx.js","./AgentsPage-BNlAkEIK.js","./agents-BvTiBKBQ.js","./AgentDetailPage-_a4tKaM3.js","./CronLabel-GcS5qzZr.js","./AgentConfigPage-Caf5-th-.js","./capabilities-D7uJlnxj.js","./topics-CiG2N8Z_.js","./CapabilitiesPage-BIdG9RTG.js","./TopicsPage-COX2kDKK.js","./TopicDetailPage-CDtlXyut.js"])))=>i.map(i=>d[i]);
|
|
2
2
|
var _x=Object.defineProperty;var wx=(r,n,s)=>n in r?_x(r,n,{enumerable:!0,configurable:!0,writable:!0,value:s}):r[n]=s;var v=(r,n,s)=>wx(r,typeof n!="symbol"?n+"":n,s);import{r as Sx,a as T,j as m,u as Hn,b as Cn,c as Pn,Q as Ex,d as Ax}from"./vendor-query-B2UbickB.js";import{r as jx,L as gr,u as Ws,N as Co,a as og,b as cs,O as Ma,c as cg,d as Ox,R as Tx}from"./vendor-react-CXumBFUA.js";import{I as Sf,R as ug,B as fg,U as Nx,L as Ef,a as Cx,Z as kx,S as t0,P as n0,C as Mx,W as Xf,b as Rx,c as Dx,F as zx,d as qx,e as Ux,T as Bx,f as Lx,N as Hx,g as Px,D as $x,h as Yx,M as hg,i as dg,j as Gx,k as Vx,l as Fx,E as Jx,X as $o,m as Ix,n as Qx,o as Xx,p as s0,G as Kx,q as Zx,r as Wx,s as ev,t as tv}from"./vendor-icons-Dj2F0Jrb.js";(function(){const n=document.createElement("link").relList;if(n&&n.supports&&n.supports("modulepreload"))return;for(const o of document.querySelectorAll('link[rel="modulepreload"]'))a(o);new MutationObserver(o=>{for(const f of o)if(f.type==="childList")for(const h of f.addedNodes)h.tagName==="LINK"&&h.rel==="modulepreload"&&a(h)}).observe(document,{childList:!0,subtree:!0});function s(o){const f={};return o.integrity&&(f.integrity=o.integrity),o.referrerPolicy&&(f.referrerPolicy=o.referrerPolicy),o.crossOrigin==="use-credentials"?f.credentials="include":o.crossOrigin==="anonymous"?f.credentials="omit":f.credentials="same-origin",f}function a(o){if(o.ep)return;o.ep=!0;const f=s(o);fetch(o.href,f)}})();var af={exports:{}},Sa={},lf={exports:{}},of={};/**
|
|
3
3
|
* @license React
|
|
4
4
|
* scheduler.production.js
|
|
@@ -59,5 +59,5 @@ ${s.map(o=>`${o.role==="user"?"User":"Assistant"}: ${o.content}`).join(`
|
|
|
59
59
|
[End prior conversation]
|
|
60
60
|
|
|
61
61
|
`}function uS(r){const n=r.summary,s=r.title;if(n){const a=n.search(/\n\s*\{[\s\S]*"title"\s*:/);return a>0?n.slice(0,a).trim():n}return s||(typeof r=="string"?r:"Query completed.")}const ny=T.createContext(null);function fS({children:r}){const n=Ws(),[s,a]=T.useState(!1),[o,f]=T.useState([]),[h,d]=T.useState(null),[g,y]=T.useState({}),E=T.useRef(null),w={page:n.pathname.split("/").filter(Boolean).join("-")||"home",route:n.pathname,params:{},...g,suggestedTags:g.suggestedTags??oS(n.pathname)};T.useEffect(()=>()=>{E.current&&clearInterval(E.current)},[]);const O=T.useCallback(()=>a(se=>!se),[]),q=T.useCallback(se=>{y(se)},[]),M=T.useCallback(()=>{f([]),d(null)},[]),D=T.useCallback(async se=>{var V;const ee=new Date().toISOString(),me={id:`user-${Date.now()}`,role:"user",content:se,timestamp:ee},re={id:`pending-${Date.now()}`,role:"assistant",content:"",timestamp:ee,pending:!0};f(G=>[...G,me,re]);const C={...w};(V=C.entities)!=null&&V.yamlContent&&C.entities.yamlContent.length>G0&&(C.entities={...C.entities,yamlContent:C.entities.yamlContent.slice(0,G0)+`
|
|
62
|
-
... (truncated)`});const ce=`${cS(o.concat(me))}${se}`;try{const K=(await Xe("/insight/mcp-query",{method:"POST",body:JSON.stringify({prompt:ce,tags:C.suggestedTags,context:C,wait:!1,direct:!0})})).workflow_id;d(K),f(ae=>ae.map(ne=>ne.id===re.id?{...ne,workflowId:K}:ne)),E.current&&clearInterval(E.current),E.current=setInterval(async()=>{var ae;try{const ne=await Xe(`/workflows/${K}/result`),ke=(ae=ne==null?void 0:ne.result)==null?void 0:ae.data;if(ke){E.current&&clearInterval(E.current),E.current=null,d(null);const He=uS(ke);let Me;try{Me=(await Xe(`/workflow-states/${K}/execution`)).duration_ms}catch{}f($=>$.map(te=>te.id===re.id?{...te,content:He,timestamp:new Date().toISOString(),pending:!1,durationMs:Me}:te))}}catch{}},3e3)}catch{f(G=>G.map(K=>K.id===re.id?{...K,content:"Failed to submit query. Please try again.",pending:!1}:K))}},[o,w]),W=T.useCallback(async se=>{const ee=o.find(C=>C.id===se);if(!(ee!=null&&ee.workflowId)||ee.compilationStatus==="compiling"||ee.compilationStatus==="done")return;const me=o.indexOf(ee),re=o.slice(0,me).reverse().find(C=>C.role==="user");if(re){f(C=>C.map(X=>X.id===se?{...X,compilationStatus:"compiling"}:X));try{const C=await Xe("/insight/mcp-query/describe",{method:"POST",body:JSON.stringify({prompt:re.content,summary:ee.content})}),X=await Xe("/yaml-workflows",{method:"POST",body:JSON.stringify({workflow_id:ee.workflowId,task_queue:"long-tail-system",workflow_name:"mcpQuery",name:C.tool_name,description:C.description,tags:C.tags,app_id:""})});await Xe(`/yaml-workflows/${X.id}/deploy`,{method:"POST"}),f(ce=>ce.map(V=>V.id===se?{...V,compilationStatus:"done"}:V))}catch(C){const X=C instanceof Error?C.message:"Compilation failed";f(ce=>ce.map(V=>V.id===se?{...V,compilationStatus:"error",compilationError:X}:V))}}},[o]);return m.jsx(ny.Provider,{value:{helpOpen:s,setHelpOpen:a,toggleHelp:O,messages:o,sendMessage:D,pageContext:w,setPageContext:q,activeWorkflowId:h,clearMessages:M,compileMessage:W},children:r})}function sy(){const r=T.useContext(ny);if(!r)throw new Error("useHelpAssistant must be used within HelpAssistantProvider");return r}function hS(){const{helpOpen:r,toggleHelp:n}=sy();return m.jsx("button",{onClick:n,className:"fixed right-3 z-[45] flex items-center justify-center w-10 h-10 rounded-full bg-surface-raised shadow-lg hover:scale-110 transition-transform duration-150 border border-accent/30",style:{bottom:"44px"},"aria-label":r?"Close help":"Ask for help",children:r?m.jsx($o,{className:"w-5 h-5 text-text-tertiary",strokeWidth:1.5}):m.jsx("img",{src:`${Wt}/logo512.png`,alt:"Help",className:"w-8 h-8 -rotate-[120deg]"})})}const iy=6048e5,dS=864e5,V0=6e4,F0=525600,J0=43200,I0=1440,Q0=Symbol.for("constructDateFrom");function ds(r,n){return typeof r=="function"?r(n):r&&typeof r=="object"&&Q0 in r?r[Q0](n):r instanceof Date?new r.constructor(n):new Date(n)}function sn(r,n){return ds(n||r,r)}let mS={};function Fa(){return mS}function $a(r,n){var d,g,y,E;const s=Fa(),a=(n==null?void 0:n.weekStartsOn)??((g=(d=n==null?void 0:n.locale)==null?void 0:d.options)==null?void 0:g.weekStartsOn)??s.weekStartsOn??((E=(y=s.locale)==null?void 0:y.options)==null?void 0:E.weekStartsOn)??0,o=sn(r,n==null?void 0:n.in),f=o.getDay(),h=(f<a?7:0)+f-a;return o.setDate(o.getDate()-h),o.setHours(0,0,0,0),o}function Ho(r,n){return $a(r,{...n,weekStartsOn:1})}function ry(r,n){const s=sn(r,n==null?void 0:n.in),a=s.getFullYear(),o=ds(s,0);o.setFullYear(a+1,0,4),o.setHours(0,0,0,0);const f=Ho(o),h=ds(s,0);h.setFullYear(a,0,4),h.setHours(0,0,0,0);const d=Ho(h);return s.getTime()>=f.getTime()?a+1:s.getTime()>=d.getTime()?a:a-1}function Po(r){const n=sn(r),s=new Date(Date.UTC(n.getFullYear(),n.getMonth(),n.getDate(),n.getHours(),n.getMinutes(),n.getSeconds(),n.getMilliseconds()));return s.setUTCFullYear(n.getFullYear()),+r-+s}function ay(r,...n){const s=ds.bind(null,r||n.find(a=>typeof a=="object"));return n.map(s)}function X0(r,n){const s=sn(r,n==null?void 0:n.in);return s.setHours(0,0,0,0),s}function pS(r,n,s){const[a,o]=ay(s==null?void 0:s.in,r,n),f=X0(a),h=X0(o),d=+f-Po(f),g=+h-Po(h);return Math.round((d-g)/dS)}function gS(r,n){const s=ry(r,n),a=ds(r,0);return a.setFullYear(s,0,4),a.setHours(0,0,0,0),Ho(a)}function yS(r,n){const s=+sn(r)-+sn(n);return s<0?-1:s>0?1:s}function bS(r){return ds(r,Date.now())}function xS(r){return r instanceof Date||typeof r=="object"&&Object.prototype.toString.call(r)==="[object Date]"}function vS(r){return!(!xS(r)&&typeof r!="number"||isNaN(+sn(r)))}function _S(r){return n=>{const a=(r?Math[r]:Math.trunc)(n);return a===0?0:a}}function wS(r,n){const s=sn(r,n==null?void 0:n.in);return s.setFullYear(s.getFullYear(),0,1),s.setHours(0,0,0,0),s}const SS={lessThanXSeconds:{one:"less than a second",other:"less than {{count}} seconds"},xSeconds:{one:"1 second",other:"{{count}} seconds"},halfAMinute:"half a minute",lessThanXMinutes:{one:"less than a minute",other:"less than {{count}} minutes"},xMinutes:{one:"1 minute",other:"{{count}} minutes"},aboutXHours:{one:"about 1 hour",other:"about {{count}} hours"},xHours:{one:"1 hour",other:"{{count}} hours"},xDays:{one:"1 day",other:"{{count}} days"},aboutXWeeks:{one:"about 1 week",other:"about {{count}} weeks"},xWeeks:{one:"1 week",other:"{{count}} weeks"},aboutXMonths:{one:"about 1 month",other:"about {{count}} months"},xMonths:{one:"1 month",other:"{{count}} months"},aboutXYears:{one:"about 1 year",other:"about {{count}} years"},xYears:{one:"1 year",other:"{{count}} years"},overXYears:{one:"over 1 year",other:"over {{count}} years"},almostXYears:{one:"almost 1 year",other:"almost {{count}} years"}},ES=(r,n,s)=>{let a;const o=SS[r];return typeof o=="string"?a=o:n===1?a=o.one:a=o.other.replace("{{count}}",n.toString()),s!=null&&s.addSuffix?s.comparison&&s.comparison>0?"in "+a:a+" ago":a};function wf(r){return(n={})=>{const s=n.width?String(n.width):r.defaultWidth;return r.formats[s]||r.formats[r.defaultWidth]}}const AS={full:"EEEE, MMMM do, y",long:"MMMM do, y",medium:"MMM d, y",short:"MM/dd/yyyy"},jS={full:"h:mm:ss a zzzz",long:"h:mm:ss a z",medium:"h:mm:ss a",short:"h:mm a"},OS={full:"{{date}} 'at' {{time}}",long:"{{date}} 'at' {{time}}",medium:"{{date}}, {{time}}",short:"{{date}}, {{time}}"},TS={date:wf({formats:AS,defaultWidth:"full"}),time:wf({formats:jS,defaultWidth:"full"}),dateTime:wf({formats:OS,defaultWidth:"full"})},NS={lastWeek:"'last' eeee 'at' p",yesterday:"'yesterday at' p",today:"'today at' p",tomorrow:"'tomorrow at' p",nextWeek:"eeee 'at' p",other:"P"},CS=(r,n,s,a)=>NS[r];function Oa(r){return(n,s)=>{const a=s!=null&&s.context?String(s.context):"standalone";let o;if(a==="formatting"&&r.formattingValues){const h=r.defaultFormattingWidth||r.defaultWidth,d=s!=null&&s.width?String(s.width):h;o=r.formattingValues[d]||r.formattingValues[h]}else{const h=r.defaultWidth,d=s!=null&&s.width?String(s.width):r.defaultWidth;o=r.values[d]||r.values[h]}const f=r.argumentCallback?r.argumentCallback(n):n;return o[f]}}const kS={narrow:["B","A"],abbreviated:["BC","AD"],wide:["Before Christ","Anno Domini"]},MS={narrow:["1","2","3","4"],abbreviated:["Q1","Q2","Q3","Q4"],wide:["1st quarter","2nd quarter","3rd quarter","4th quarter"]},RS={narrow:["J","F","M","A","M","J","J","A","S","O","N","D"],abbreviated:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],wide:["January","February","March","April","May","June","July","August","September","October","November","December"]},DS={narrow:["S","M","T","W","T","F","S"],short:["Su","Mo","Tu","We","Th","Fr","Sa"],abbreviated:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],wide:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"]},zS={narrow:{am:"a",pm:"p",midnight:"mi",noon:"n",morning:"morning",afternoon:"afternoon",evening:"evening",night:"night"},abbreviated:{am:"AM",pm:"PM",midnight:"midnight",noon:"noon",morning:"morning",afternoon:"afternoon",evening:"evening",night:"night"},wide:{am:"a.m.",pm:"p.m.",midnight:"midnight",noon:"noon",morning:"morning",afternoon:"afternoon",evening:"evening",night:"night"}},qS={narrow:{am:"a",pm:"p",midnight:"mi",noon:"n",morning:"in the morning",afternoon:"in the afternoon",evening:"in the evening",night:"at night"},abbreviated:{am:"AM",pm:"PM",midnight:"midnight",noon:"noon",morning:"in the morning",afternoon:"in the afternoon",evening:"in the evening",night:"at night"},wide:{am:"a.m.",pm:"p.m.",midnight:"midnight",noon:"noon",morning:"in the morning",afternoon:"in the afternoon",evening:"in the evening",night:"at night"}},US=(r,n)=>{const s=Number(r),a=s%100;if(a>20||a<10)switch(a%10){case 1:return s+"st";case 2:return s+"nd";case 3:return s+"rd"}return s+"th"},BS={ordinalNumber:US,era:Oa({values:kS,defaultWidth:"wide"}),quarter:Oa({values:MS,defaultWidth:"wide",argumentCallback:r=>r-1}),month:Oa({values:RS,defaultWidth:"wide"}),day:Oa({values:DS,defaultWidth:"wide"}),dayPeriod:Oa({values:zS,defaultWidth:"wide",formattingValues:qS,defaultFormattingWidth:"wide"})};function Ta(r){return(n,s={})=>{const a=s.width,o=a&&r.matchPatterns[a]||r.matchPatterns[r.defaultMatchWidth],f=n.match(o);if(!f)return null;const h=f[0],d=a&&r.parsePatterns[a]||r.parsePatterns[r.defaultParseWidth],g=Array.isArray(d)?HS(d,w=>w.test(h)):LS(d,w=>w.test(h));let y;y=r.valueCallback?r.valueCallback(g):g,y=s.valueCallback?s.valueCallback(y):y;const E=n.slice(h.length);return{value:y,rest:E}}}function LS(r,n){for(const s in r)if(Object.prototype.hasOwnProperty.call(r,s)&&n(r[s]))return s}function HS(r,n){for(let s=0;s<r.length;s++)if(n(r[s]))return s}function PS(r){return(n,s={})=>{const a=n.match(r.matchPattern);if(!a)return null;const o=a[0],f=n.match(r.parsePattern);if(!f)return null;let h=r.valueCallback?r.valueCallback(f[0]):f[0];h=s.valueCallback?s.valueCallback(h):h;const d=n.slice(o.length);return{value:h,rest:d}}}const $S=/^(\d+)(th|st|nd|rd)?/i,YS=/\d+/i,GS={narrow:/^(b|a)/i,abbreviated:/^(b\.?\s?c\.?|b\.?\s?c\.?\s?e\.?|a\.?\s?d\.?|c\.?\s?e\.?)/i,wide:/^(before christ|before common era|anno domini|common era)/i},VS={any:[/^b/i,/^(a|c)/i]},FS={narrow:/^[1234]/i,abbreviated:/^q[1234]/i,wide:/^[1234](th|st|nd|rd)? quarter/i},JS={any:[/1/i,/2/i,/3/i,/4/i]},IS={narrow:/^[jfmasond]/i,abbreviated:/^(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)/i,wide:/^(january|february|march|april|may|june|july|august|september|october|november|december)/i},QS={narrow:[/^j/i,/^f/i,/^m/i,/^a/i,/^m/i,/^j/i,/^j/i,/^a/i,/^s/i,/^o/i,/^n/i,/^d/i],any:[/^ja/i,/^f/i,/^mar/i,/^ap/i,/^may/i,/^jun/i,/^jul/i,/^au/i,/^s/i,/^o/i,/^n/i,/^d/i]},XS={narrow:/^[smtwf]/i,short:/^(su|mo|tu|we|th|fr|sa)/i,abbreviated:/^(sun|mon|tue|wed|thu|fri|sat)/i,wide:/^(sunday|monday|tuesday|wednesday|thursday|friday|saturday)/i},KS={narrow:[/^s/i,/^m/i,/^t/i,/^w/i,/^t/i,/^f/i,/^s/i],any:[/^su/i,/^m/i,/^tu/i,/^w/i,/^th/i,/^f/i,/^sa/i]},ZS={narrow:/^(a|p|mi|n|(in the|at) (morning|afternoon|evening|night))/i,any:/^([ap]\.?\s?m\.?|midnight|noon|(in the|at) (morning|afternoon|evening|night))/i},WS={any:{am:/^a/i,pm:/^p/i,midnight:/^mi/i,noon:/^no/i,morning:/morning/i,afternoon:/afternoon/i,evening:/evening/i,night:/night/i}},e2={ordinalNumber:PS({matchPattern:$S,parsePattern:YS,valueCallback:r=>parseInt(r,10)}),era:Ta({matchPatterns:GS,defaultMatchWidth:"wide",parsePatterns:VS,defaultParseWidth:"any"}),quarter:Ta({matchPatterns:FS,defaultMatchWidth:"wide",parsePatterns:JS,defaultParseWidth:"any",valueCallback:r=>r+1}),month:Ta({matchPatterns:IS,defaultMatchWidth:"wide",parsePatterns:QS,defaultParseWidth:"any"}),day:Ta({matchPatterns:XS,defaultMatchWidth:"wide",parsePatterns:KS,defaultParseWidth:"any"}),dayPeriod:Ta({matchPatterns:ZS,defaultMatchWidth:"any",parsePatterns:WS,defaultParseWidth:"any"})},ly={code:"en-US",formatDistance:ES,formatLong:TS,formatRelative:CS,localize:BS,match:e2,options:{weekStartsOn:0,firstWeekContainsDate:1}};function t2(r,n){const s=sn(r,n==null?void 0:n.in);return pS(s,wS(s))+1}function n2(r,n){const s=sn(r,n==null?void 0:n.in),a=+Ho(s)-+gS(s);return Math.round(a/iy)+1}function oy(r,n){var E,w,O,q;const s=sn(r,n==null?void 0:n.in),a=s.getFullYear(),o=Fa(),f=(n==null?void 0:n.firstWeekContainsDate)??((w=(E=n==null?void 0:n.locale)==null?void 0:E.options)==null?void 0:w.firstWeekContainsDate)??o.firstWeekContainsDate??((q=(O=o.locale)==null?void 0:O.options)==null?void 0:q.firstWeekContainsDate)??1,h=ds((n==null?void 0:n.in)||r,0);h.setFullYear(a+1,0,f),h.setHours(0,0,0,0);const d=$a(h,n),g=ds((n==null?void 0:n.in)||r,0);g.setFullYear(a,0,f),g.setHours(0,0,0,0);const y=$a(g,n);return+s>=+d?a+1:+s>=+y?a:a-1}function s2(r,n){var d,g,y,E;const s=Fa(),a=(n==null?void 0:n.firstWeekContainsDate)??((g=(d=n==null?void 0:n.locale)==null?void 0:d.options)==null?void 0:g.firstWeekContainsDate)??s.firstWeekContainsDate??((E=(y=s.locale)==null?void 0:y.options)==null?void 0:E.firstWeekContainsDate)??1,o=oy(r,n),f=ds((n==null?void 0:n.in)||r,0);return f.setFullYear(o,0,a),f.setHours(0,0,0,0),$a(f,n)}function i2(r,n){const s=sn(r,n==null?void 0:n.in),a=+$a(s,n)-+s2(s,n);return Math.round(a/iy)+1}function Ge(r,n){const s=r<0?"-":"",a=Math.abs(r).toString().padStart(n,"0");return s+a}const Vs={y(r,n){const s=r.getFullYear(),a=s>0?s:1-s;return Ge(n==="yy"?a%100:a,n.length)},M(r,n){const s=r.getMonth();return n==="M"?String(s+1):Ge(s+1,2)},d(r,n){return Ge(r.getDate(),n.length)},a(r,n){const s=r.getHours()/12>=1?"pm":"am";switch(n){case"a":case"aa":return s.toUpperCase();case"aaa":return s;case"aaaaa":return s[0];case"aaaa":default:return s==="am"?"a.m.":"p.m."}},h(r,n){return Ge(r.getHours()%12||12,n.length)},H(r,n){return Ge(r.getHours(),n.length)},m(r,n){return Ge(r.getMinutes(),n.length)},s(r,n){return Ge(r.getSeconds(),n.length)},S(r,n){const s=n.length,a=r.getMilliseconds(),o=Math.trunc(a*Math.pow(10,s-3));return Ge(o,n.length)}},pr={midnight:"midnight",noon:"noon",morning:"morning",afternoon:"afternoon",evening:"evening",night:"night"},K0={G:function(r,n,s){const a=r.getFullYear()>0?1:0;switch(n){case"G":case"GG":case"GGG":return s.era(a,{width:"abbreviated"});case"GGGGG":return s.era(a,{width:"narrow"});case"GGGG":default:return s.era(a,{width:"wide"})}},y:function(r,n,s){if(n==="yo"){const a=r.getFullYear(),o=a>0?a:1-a;return s.ordinalNumber(o,{unit:"year"})}return Vs.y(r,n)},Y:function(r,n,s,a){const o=oy(r,a),f=o>0?o:1-o;if(n==="YY"){const h=f%100;return Ge(h,2)}return n==="Yo"?s.ordinalNumber(f,{unit:"year"}):Ge(f,n.length)},R:function(r,n){const s=ry(r);return Ge(s,n.length)},u:function(r,n){const s=r.getFullYear();return Ge(s,n.length)},Q:function(r,n,s){const a=Math.ceil((r.getMonth()+1)/3);switch(n){case"Q":return String(a);case"QQ":return Ge(a,2);case"Qo":return s.ordinalNumber(a,{unit:"quarter"});case"QQQ":return s.quarter(a,{width:"abbreviated",context:"formatting"});case"QQQQQ":return s.quarter(a,{width:"narrow",context:"formatting"});case"QQQQ":default:return s.quarter(a,{width:"wide",context:"formatting"})}},q:function(r,n,s){const a=Math.ceil((r.getMonth()+1)/3);switch(n){case"q":return String(a);case"qq":return Ge(a,2);case"qo":return s.ordinalNumber(a,{unit:"quarter"});case"qqq":return s.quarter(a,{width:"abbreviated",context:"standalone"});case"qqqqq":return s.quarter(a,{width:"narrow",context:"standalone"});case"qqqq":default:return s.quarter(a,{width:"wide",context:"standalone"})}},M:function(r,n,s){const a=r.getMonth();switch(n){case"M":case"MM":return Vs.M(r,n);case"Mo":return s.ordinalNumber(a+1,{unit:"month"});case"MMM":return s.month(a,{width:"abbreviated",context:"formatting"});case"MMMMM":return s.month(a,{width:"narrow",context:"formatting"});case"MMMM":default:return s.month(a,{width:"wide",context:"formatting"})}},L:function(r,n,s){const a=r.getMonth();switch(n){case"L":return String(a+1);case"LL":return Ge(a+1,2);case"Lo":return s.ordinalNumber(a+1,{unit:"month"});case"LLL":return s.month(a,{width:"abbreviated",context:"standalone"});case"LLLLL":return s.month(a,{width:"narrow",context:"standalone"});case"LLLL":default:return s.month(a,{width:"wide",context:"standalone"})}},w:function(r,n,s,a){const o=i2(r,a);return n==="wo"?s.ordinalNumber(o,{unit:"week"}):Ge(o,n.length)},I:function(r,n,s){const a=n2(r);return n==="Io"?s.ordinalNumber(a,{unit:"week"}):Ge(a,n.length)},d:function(r,n,s){return n==="do"?s.ordinalNumber(r.getDate(),{unit:"date"}):Vs.d(r,n)},D:function(r,n,s){const a=t2(r);return n==="Do"?s.ordinalNumber(a,{unit:"dayOfYear"}):Ge(a,n.length)},E:function(r,n,s){const a=r.getDay();switch(n){case"E":case"EE":case"EEE":return s.day(a,{width:"abbreviated",context:"formatting"});case"EEEEE":return s.day(a,{width:"narrow",context:"formatting"});case"EEEEEE":return s.day(a,{width:"short",context:"formatting"});case"EEEE":default:return s.day(a,{width:"wide",context:"formatting"})}},e:function(r,n,s,a){const o=r.getDay(),f=(o-a.weekStartsOn+8)%7||7;switch(n){case"e":return String(f);case"ee":return Ge(f,2);case"eo":return s.ordinalNumber(f,{unit:"day"});case"eee":return s.day(o,{width:"abbreviated",context:"formatting"});case"eeeee":return s.day(o,{width:"narrow",context:"formatting"});case"eeeeee":return s.day(o,{width:"short",context:"formatting"});case"eeee":default:return s.day(o,{width:"wide",context:"formatting"})}},c:function(r,n,s,a){const o=r.getDay(),f=(o-a.weekStartsOn+8)%7||7;switch(n){case"c":return String(f);case"cc":return Ge(f,n.length);case"co":return s.ordinalNumber(f,{unit:"day"});case"ccc":return s.day(o,{width:"abbreviated",context:"standalone"});case"ccccc":return s.day(o,{width:"narrow",context:"standalone"});case"cccccc":return s.day(o,{width:"short",context:"standalone"});case"cccc":default:return s.day(o,{width:"wide",context:"standalone"})}},i:function(r,n,s){const a=r.getDay(),o=a===0?7:a;switch(n){case"i":return String(o);case"ii":return Ge(o,n.length);case"io":return s.ordinalNumber(o,{unit:"day"});case"iii":return s.day(a,{width:"abbreviated",context:"formatting"});case"iiiii":return s.day(a,{width:"narrow",context:"formatting"});case"iiiiii":return s.day(a,{width:"short",context:"formatting"});case"iiii":default:return s.day(a,{width:"wide",context:"formatting"})}},a:function(r,n,s){const o=r.getHours()/12>=1?"pm":"am";switch(n){case"a":case"aa":return s.dayPeriod(o,{width:"abbreviated",context:"formatting"});case"aaa":return s.dayPeriod(o,{width:"abbreviated",context:"formatting"}).toLowerCase();case"aaaaa":return s.dayPeriod(o,{width:"narrow",context:"formatting"});case"aaaa":default:return s.dayPeriod(o,{width:"wide",context:"formatting"})}},b:function(r,n,s){const a=r.getHours();let o;switch(a===12?o=pr.noon:a===0?o=pr.midnight:o=a/12>=1?"pm":"am",n){case"b":case"bb":return s.dayPeriod(o,{width:"abbreviated",context:"formatting"});case"bbb":return s.dayPeriod(o,{width:"abbreviated",context:"formatting"}).toLowerCase();case"bbbbb":return s.dayPeriod(o,{width:"narrow",context:"formatting"});case"bbbb":default:return s.dayPeriod(o,{width:"wide",context:"formatting"})}},B:function(r,n,s){const a=r.getHours();let o;switch(a>=17?o=pr.evening:a>=12?o=pr.afternoon:a>=4?o=pr.morning:o=pr.night,n){case"B":case"BB":case"BBB":return s.dayPeriod(o,{width:"abbreviated",context:"formatting"});case"BBBBB":return s.dayPeriod(o,{width:"narrow",context:"formatting"});case"BBBB":default:return s.dayPeriod(o,{width:"wide",context:"formatting"})}},h:function(r,n,s){if(n==="ho"){let a=r.getHours()%12;return a===0&&(a=12),s.ordinalNumber(a,{unit:"hour"})}return Vs.h(r,n)},H:function(r,n,s){return n==="Ho"?s.ordinalNumber(r.getHours(),{unit:"hour"}):Vs.H(r,n)},K:function(r,n,s){const a=r.getHours()%12;return n==="Ko"?s.ordinalNumber(a,{unit:"hour"}):Ge(a,n.length)},k:function(r,n,s){let a=r.getHours();return a===0&&(a=24),n==="ko"?s.ordinalNumber(a,{unit:"hour"}):Ge(a,n.length)},m:function(r,n,s){return n==="mo"?s.ordinalNumber(r.getMinutes(),{unit:"minute"}):Vs.m(r,n)},s:function(r,n,s){return n==="so"?s.ordinalNumber(r.getSeconds(),{unit:"second"}):Vs.s(r,n)},S:function(r,n){return Vs.S(r,n)},X:function(r,n,s){const a=r.getTimezoneOffset();if(a===0)return"Z";switch(n){case"X":return W0(a);case"XXXX":case"XX":return Ei(a);case"XXXXX":case"XXX":default:return Ei(a,":")}},x:function(r,n,s){const a=r.getTimezoneOffset();switch(n){case"x":return W0(a);case"xxxx":case"xx":return Ei(a);case"xxxxx":case"xxx":default:return Ei(a,":")}},O:function(r,n,s){const a=r.getTimezoneOffset();switch(n){case"O":case"OO":case"OOO":return"GMT"+Z0(a,":");case"OOOO":default:return"GMT"+Ei(a,":")}},z:function(r,n,s){const a=r.getTimezoneOffset();switch(n){case"z":case"zz":case"zzz":return"GMT"+Z0(a,":");case"zzzz":default:return"GMT"+Ei(a,":")}},t:function(r,n,s){const a=Math.trunc(+r/1e3);return Ge(a,n.length)},T:function(r,n,s){return Ge(+r,n.length)}};function Z0(r,n=""){const s=r>0?"-":"+",a=Math.abs(r),o=Math.trunc(a/60),f=a%60;return f===0?s+String(o):s+String(o)+n+Ge(f,2)}function W0(r,n){return r%60===0?(r>0?"-":"+")+Ge(Math.abs(r)/60,2):Ei(r,n)}function Ei(r,n=""){const s=r>0?"-":"+",a=Math.abs(r),o=Ge(Math.trunc(a/60),2),f=Ge(a%60,2);return s+o+n+f}const eg=(r,n)=>{switch(r){case"P":return n.date({width:"short"});case"PP":return n.date({width:"medium"});case"PPP":return n.date({width:"long"});case"PPPP":default:return n.date({width:"full"})}},cy=(r,n)=>{switch(r){case"p":return n.time({width:"short"});case"pp":return n.time({width:"medium"});case"ppp":return n.time({width:"long"});case"pppp":default:return n.time({width:"full"})}},r2=(r,n)=>{const s=r.match(/(P+)(p+)?/)||[],a=s[1],o=s[2];if(!o)return eg(r,n);let f;switch(a){case"P":f=n.dateTime({width:"short"});break;case"PP":f=n.dateTime({width:"medium"});break;case"PPP":f=n.dateTime({width:"long"});break;case"PPPP":default:f=n.dateTime({width:"full"});break}return f.replace("{{date}}",eg(a,n)).replace("{{time}}",cy(o,n))},a2={p:cy,P:r2},l2=/^D+$/,o2=/^Y+$/,c2=["D","DD","YY","YYYY"];function u2(r){return l2.test(r)}function f2(r){return o2.test(r)}function h2(r,n,s){const a=d2(r,n,s);if(console.warn(a),c2.includes(r))throw new RangeError(a)}function d2(r,n,s){const a=r[0]==="Y"?"years":"days of the month";return`Use \`${r.toLowerCase()}\` instead of \`${r}\` (in \`${n}\`) for formatting ${a} to the input \`${s}\`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md`}const m2=/[yYQqMLwIdDecihHKkms]o|(\w)\1*|''|'(''|[^'])+('|$)|./g,p2=/P+p+|P+|p+|''|'(''|[^'])+('|$)|./g,g2=/^'([^]*?)'?$/,y2=/''/g,b2=/[a-zA-Z]/;function uy(r,n,s){var E,w,O,q;const a=Fa(),o=a.locale??ly,f=a.firstWeekContainsDate??((w=(E=a.locale)==null?void 0:E.options)==null?void 0:w.firstWeekContainsDate)??1,h=a.weekStartsOn??((q=(O=a.locale)==null?void 0:O.options)==null?void 0:q.weekStartsOn)??0,d=sn(r,s==null?void 0:s.in);if(!vS(d))throw new RangeError("Invalid time value");let g=n.match(p2).map(M=>{const D=M[0];if(D==="p"||D==="P"){const W=a2[D];return W(M,o.formatLong)}return M}).join("").match(m2).map(M=>{if(M==="''")return{isToken:!1,value:"'"};const D=M[0];if(D==="'")return{isToken:!1,value:x2(M)};if(K0[D])return{isToken:!0,value:M};if(D.match(b2))throw new RangeError("Format string contains an unescaped latin alphabet character `"+D+"`");return{isToken:!1,value:M}});o.localize.preprocessor&&(g=o.localize.preprocessor(d,g));const y={firstWeekContainsDate:f,weekStartsOn:h,locale:o};return g.map(M=>{if(!M.isToken)return M.value;const D=M.value;(f2(D)||u2(D))&&h2(D,n,String(r));const W=K0[D[0]];return W(d,D,o.localize,y)}).join("")}function x2(r){const n=r.match(g2);return n?n[1].replace(y2,"'"):r}function v2(r,n,s){const a=Fa(),o=(s==null?void 0:s.locale)??a.locale??ly,f=yS(r,n);if(isNaN(f))throw new RangeError("Invalid time value");const h=Object.assign({},s,{addSuffix:s==null?void 0:s.addSuffix,comparison:f}),[d,g]=ay(s==null?void 0:s.in,...f>0?[n,r]:[r,n]),y=_S((s==null?void 0:s.roundingMethod)??"round"),E=g.getTime()-d.getTime(),w=E/V0,O=Po(g)-Po(d),q=(E-O)/V0,M=s==null?void 0:s.unit;let D;if(M?D=M:w<1?D="second":w<60?D="minute":w<I0?D="hour":q<J0?D="day":q<F0?D="month":D="year",D==="second"){const W=y(E/1e3);return o.formatDistance("xSeconds",W,h)}else if(D==="minute"){const W=y(w);return o.formatDistance("xMinutes",W,h)}else if(D==="hour"){const W=y(w/60);return o.formatDistance("xHours",W,h)}else if(D==="day"){const W=y(q/I0);return o.formatDistance("xDays",W,h)}else if(D==="month"){const W=y(q/J0);return W===12&&M!=="month"?o.formatDistance("xYears",1,h):o.formatDistance("xMonths",W,h)}else{const W=y(q/F0);return o.formatDistance("xYears",W,h)}}function _2(r,n){return v2(r,bS(r),n)}function w2(r){const n=new Date(r);return n.getTime()>Date.now()?"just now":_2(n,{addSuffix:!0})}function VE(r){return r<=0?"Expired":ph(r)}function S2(r){return r==null?"--":ph(r)}function ph(r){if(r<1e3)return`${Math.round(r)}ms`;if(r<6e4){const h=r/1e3;return Number.isInteger(h)?`${h}s`:`${h.toFixed(1)}s`}const n=Math.floor(r/1e3),s=Math.floor(n/86400),a=Math.floor(n%86400/3600),o=Math.floor(n%3600/60),f=n%60;return s>0?a>0?`${s}d ${a}h`:`${s}d`:a>0?o>0?`${a}h ${o}m`:`${a}h`:f>0?`${o}m ${f}s`:`${o}m`}function FE(r,n){const s=new Date(r).getTime(),a=n?new Date(n).getTime():Date.now();return ph(a-s)}function fy({options:r,children:n,className:s=""}){const[a,o]=T.useState(!1),[f,h]=T.useState(null),[d,g]=T.useState(null),y=T.useRef(null),E=T.useRef(void 0),w=T.useRef(void 0),O=220,q=T.useCallback(()=>{if(!y.current)return;const se=y.current.getBoundingClientRect(),ee=window.innerWidth-O-8,me=Math.max(8,Math.min(se.left,ee));g({top:se.bottom+4,left:me})},[]),M=T.useCallback(async(se,ee)=>{try{await navigator.clipboard.writeText(se),h(ee),clearTimeout(E.current),E.current=setTimeout(()=>h(null),1200)}catch{}},[]),D=T.useCallback(()=>{clearTimeout(w.current),q(),o(!0)},[q]),W=T.useCallback(()=>{w.current=setTimeout(()=>o(!1),150)},[]);return T.useEffect(()=>()=>{clearTimeout(E.current),clearTimeout(w.current)},[]),m.jsxs("span",{ref:y,className:`inline-flex items-center cursor-default ${s}`,onMouseEnter:D,onMouseLeave:W,children:[n,a&&d&&og.createPortal(m.jsx("span",{className:"fixed z-[9999] bg-surface-raised border border-surface-border rounded shadow-lg py-1 min-w-[180px]",style:{top:d.top,left:d.left},onMouseEnter:D,onMouseLeave:W,children:r.map(se=>m.jsxs("button",{onClick:ee=>{ee.stopPropagation(),M(se.value,se.label)},className:"flex items-center justify-between w-full px-2.5 py-1 text-left hover:bg-surface-hover transition-colors",children:[m.jsx("span",{className:"text-[9px] font-medium uppercase tracking-wider text-text-tertiary w-10 shrink-0",children:se.label}),m.jsx("span",{className:"text-[10px] font-mono text-text-secondary truncate ml-2",children:f===se.label?"✓":se.value})]},se.label))}),document.body)]})}function E2(r,n){const s=new Date(r);switch(n){case"relative":return w2(r);case"datetime":return uy(s,"MMM d, yyyy h:mm a");case"time":return s.toLocaleTimeString([],{hour:"2-digit",minute:"2-digit",second:"2-digit"})}}function A2(r){const n=new Date(r);return[{label:"ms",value:String(n.getTime())},{label:"utc",value:n.toISOString()},{label:"local",value:uy(n,"MMM d, yyyy h:mm:ss a")}]}function j2({date:r,format:n="relative",className:s=""}){const[,a]=T.useState(0);T.useEffect(()=>{if(n!=="relative")return;const f=setInterval(()=>a(h=>h+1),3e4);return()=>clearInterval(f)},[n]);const o=T.useMemo(()=>A2(r),[r]);return m.jsx(fy,{options:o,children:m.jsx("time",{dateTime:r,className:`text-xs text-text-tertiary ${s}`,children:E2(r,n)})})}function O2({ms:r,className:n=""}){const s=S2(r),a=T.useMemo(()=>r==null?[]:[{label:"ms",value:String(r)},{label:"sec",value:`${(r/1e3).toFixed(3)}s`},{label:"text",value:s}],[r,s]);return r==null?m.jsx("span",{className:`text-xs text-text-tertiary ${n}`,children:"--"}):m.jsx(fy,{options:a,children:m.jsx("span",{className:`text-xs text-text-tertiary ${n}`,children:s})})}const T2=["sm","md","lg","full"],tg={sm:"w-[28rem] max-h-[40vh]",md:"w-[36rem] max-h-[60vh]",lg:"w-[48rem] max-h-[80vh]",full:"inset-4 w-auto max-h-none"},ng={sm:"Small",md:"Medium",lg:"Large",full:"Fullscreen"};function N2({which:r}){const n="stroke-current";switch(r){case"sm":return m.jsx("svg",{width:"14",height:"14",viewBox:"0 0 14 14",fill:"none",children:m.jsx("rect",{x:"5",y:"5",width:"7",height:"7",rx:"1.5",className:n,strokeWidth:"1.5"})});case"md":return m.jsx("svg",{width:"14",height:"14",viewBox:"0 0 14 14",fill:"none",children:m.jsx("rect",{x:"3",y:"3",width:"9",height:"9",rx:"1.5",className:n,strokeWidth:"1.5"})});case"lg":return m.jsx("svg",{width:"14",height:"14",viewBox:"0 0 14 14",fill:"none",children:m.jsx("rect",{x:"1.5",y:"1.5",width:"11",height:"11",rx:"1.5",className:n,strokeWidth:"1.5"})});case"full":return m.jsx("svg",{width:"14",height:"14",viewBox:"0 0 14 14",fill:"none",children:m.jsx("rect",{x:"0.75",y:"0.75",width:"12.5",height:"12.5",rx:"1.5",className:n,strokeWidth:"1.5"})})}}function C2({msg:r}){const[n,s]=T.useState(0);T.useEffect(()=>{const h=new Date(r.timestamp).getTime(),d=()=>s(Math.floor((Date.now()-h)/1e3));d();const g=setInterval(d,1e3);return()=>clearInterval(g)},[r.timestamp]);const a=Math.floor(n/60),o=n%60,f=a>0?`${a}m ${o}s`:`${o}s`;return m.jsxs("span",{className:"inline-flex flex-col gap-1.5",children:[m.jsxs("span",{className:"inline-flex items-center gap-1",children:[m.jsx("span",{className:"text-text-tertiary",children:"Thinking"}),m.jsx("span",{className:"inline-block w-1 h-1 rounded-full bg-text-tertiary animate-pulse"}),m.jsx("span",{className:"inline-block w-1 h-1 rounded-full bg-text-tertiary animate-pulse [animation-delay:150ms]"}),m.jsx("span",{className:"inline-block w-1 h-1 rounded-full bg-text-tertiary animate-pulse [animation-delay:300ms]"}),m.jsx("span",{className:"text-text-muted ml-1 tabular-nums",children:f})]}),r.workflowId&&m.jsxs(gr,{to:`/workflows/executions/${r.workflowId}`,className:"inline-flex items-center gap-1 text-[10px] text-accent/70 hover:text-accent transition-colors",children:[m.jsx(Xf,{className:"w-2.5 h-2.5",strokeWidth:1.5}),"watch execution"]})]})}function k2({msg:r,compileMessage:n}){const s=r.role==="assistant";return m.jsxs("div",{className:`flex items-center gap-1.5 ${s?"justify-start":"justify-end"}`,children:[m.jsx(j2,{date:r.timestamp,format:"time",className:"!text-[9px] text-text-muted/50"}),r.durationMs!=null&&m.jsxs(m.Fragment,{children:[m.jsx("span",{className:"text-text-muted/30 text-[8px]",children:"·"}),m.jsx(O2,{ms:r.durationMs,className:"!text-[9px] text-text-muted/50"})]}),r.workflowId&&m.jsx(gr,{to:`/workflows/executions/${r.workflowId}`,className:"text-text-muted/40 hover:text-accent transition-colors",title:"View workflow execution",children:m.jsx(Xf,{className:"w-2.5 h-2.5",strokeWidth:1.5})}),s&&r.workflowId&&!r.pending&&m.jsx("button",{onClick:()=>n(r.id),disabled:r.compilationStatus==="compiling"||r.compilationStatus==="done",className:"transition-colors",title:r.compilationStatus==="done"?"Compiled — future queries will match this pipeline":r.compilationStatus==="error"?r.compilationError??"Compilation failed":r.compilationStatus==="compiling"?"Compiling...":"Compile to fast pipeline",children:m.jsx(Kx,{className:`w-2.5 h-2.5 ${r.compilationStatus==="done"?"text-status-success":r.compilationStatus==="error"?"text-status-error":r.compilationStatus==="compiling"?"text-accent/40 animate-pulse":"text-text-muted/40 hover:text-accent"}`,strokeWidth:1.5})})]})}function M2(){const{helpOpen:r,setHelpOpen:n,messages:s,sendMessage:a,pageContext:o,activeWorkflowId:f,clearMessages:h,compileMessage:d}=sy(),[g,y]=T.useState(""),[E,w]=T.useState("md"),[O,q]=T.useState(!0),M=T.useRef(null),D=T.useRef(null);if(T.useEffect(()=>{M.current&&(M.current.scrollTop=M.current.scrollHeight)},[s]),T.useEffect(()=>{r&&D.current&&D.current.focus()},[r]),T.useEffect(()=>{if(!r)return;const C=X=>{X.key==="Escape"&&(E==="full"?w("lg"):E==="lg"?w("md"):E==="md"?w("sm"):n(!1))};return document.addEventListener("keydown",C),()=>document.removeEventListener("keydown",C)},[r,E,n]),!r)return null;const W=()=>{const C=g.trim();!C||f||(a(C),y(""),D.current&&(D.current.style.height="auto"))},se=C=>{C.key==="Enter"&&!C.shiftKey&&(C.preventDefault(),W())},ee=E==="full",me=o.page.replace(/-/g," "),re=ee?{}:{bottom:"108px"};return m.jsxs("div",{className:`fixed z-[45] flex flex-col border border-surface-border rounded-lg overflow-hidden transition-all duration-300 ${ee?tg.full:`right-6 ${tg[E]}`} ${O?"bg-surface-raised shadow-xl":"bg-surface-raised/[0.03] shadow-lg shadow-black/5"}`,style:re,onMouseEnter:()=>q(!0),onMouseLeave:()=>q(!1),children:[m.jsxs("div",{className:`flex items-center justify-between px-4 py-2.5 border-b border-surface-border shrink-0 transition-all duration-300 ${O?"opacity-100":"opacity-50 grayscale brightness-150"}`,children:[m.jsxs("div",{className:"min-w-0 flex-1",children:[m.jsx("p",{className:"text-xs font-medium text-text-primary truncate",children:"Help Assistant"}),m.jsx("p",{className:"text-[10px] text-text-tertiary truncate",children:me})]}),m.jsxs("div",{className:"flex items-center gap-1 ml-2",children:[m.jsx("div",{className:"flex items-center gap-0.5 border border-surface-border rounded p-0.5",role:"radiogroup","aria-label":"Panel size",children:T2.map(C=>m.jsx("button",{onClick:()=>w(C),className:`p-1 rounded transition-colors ${C===E?"bg-accent/15 text-accent":"text-text-muted hover:text-text-secondary hover:bg-surface-hover"}`,role:"radio","aria-checked":C===E,"aria-label":ng[C],title:ng[C],children:m.jsx(N2,{which:C})},C))}),s.length>0&&m.jsx("button",{onClick:h,className:"p-1 text-text-tertiary hover:text-text-secondary transition-colors","aria-label":"Clear conversation",title:"Clear conversation",children:m.jsx(Zx,{className:"w-3.5 h-3.5",strokeWidth:1.5})}),m.jsx("button",{onClick:()=>n(!1),className:"p-1 text-text-tertiary hover:text-text-primary transition-colors","aria-label":"Close",title:"Close",children:m.jsx($o,{className:"w-3.5 h-3.5",strokeWidth:1.5})})]})]}),m.jsxs("div",{ref:M,className:`flex-1 overflow-y-auto px-4 py-3 space-y-3 min-h-[120px] transition-all duration-300 ${O?"opacity-100":"opacity-50 grayscale brightness-150"}`,children:[s.length===0&&m.jsx("p",{className:"text-xs text-text-tertiary text-center py-6",children:"Ask anything about what you're viewing."}),s.map(C=>m.jsxs("div",{className:`text-xs leading-relaxed ${C.role==="user"?"text-right":"text-left"}`,children:[m.jsx("div",{className:`inline-block max-w-[85%] px-3 py-2 rounded-md whitespace-pre-wrap ${C.role==="user"?"bg-accent/10 text-text-primary":"bg-surface-sunken text-text-secondary"}`,children:C.pending?m.jsx(C2,{msg:C}):C.role==="assistant"?m.jsx(mh,{content:C.content}):C.content}),!C.pending&&m.jsx("div",{className:"mt-0.5",children:m.jsx(k2,{msg:C,compileMessage:d})})]},C.id))]}),m.jsxs("div",{className:`border-t border-surface-border px-3 py-2.5 flex gap-2 shrink-0 transition-all duration-300 ${O?"opacity-100":"opacity-50 grayscale brightness-150"}`,children:[m.jsx("textarea",{ref:D,value:g,onChange:C=>{y(C.target.value);const X=C.target;X.style.height="auto",X.style.height=`${Math.min(X.scrollHeight,120)}px`},onKeyDown:se,placeholder:"Ask a question...",rows:2,className:"flex-1 resize-none bg-surface text-xs text-text-primary placeholder:text-text-tertiary rounded px-2.5 py-1.5 border border-surface-border focus:outline-none focus:border-accent",style:{minHeight:"2.5rem"},disabled:!!f}),m.jsx("button",{onClick:W,disabled:!g.trim()||!!f,className:"px-2.5 py-1.5 text-accent hover:text-accent-hover disabled:text-text-muted transition-colors self-end","aria-label":"Send",children:m.jsx(Wx,{className:"w-4 h-4",strokeWidth:1.5})})]})]})}function R2(){var M;const{isBuilder:r,isOps:n}=Ig(),{data:s}=Qg(),a=!!((M=s==null?void 0:s.ai)!=null&&M.enabled),{collapsed:o,toggle:f}=Kg(),[h,d]=T.useState(!1),[g,y]=T.useState(!1),[E,w]=T.useState(()=>window.location.hash.startsWith("#docs")),O=Ws(),q=T.useRef(null);return T.useEffect(()=>{const D=q.current;D&&(D.classList.remove("animate-page-in"),D.offsetWidth,D.classList.add("animate-page-in"))},[O.pathname]),T.useEffect(()=>{const D=()=>{window.location.hash.startsWith("#docs")&&w(!0)};return window.addEventListener("hashchange",D),()=>window.removeEventListener("hashchange",D)},[]),m.jsxs("div",{className:"h-screen bg-surface flex flex-col",children:[m.jsx(_w,{onToggleEventFeed:()=>d(D=>!D),onToggleDocs:()=>w(D=>!D)}),m.jsxs("div",{className:"flex flex-1 overflow-hidden",children:[m.jsxs("aside",{className:`${o?"w-16":"w-60"} shrink-0 bg-surface-raised border-r border-surface-border flex flex-col transition-[width] duration-200 ease-out overflow-hidden relative z-20`,children:[m.jsxs("nav",{className:"flex-1 px-3 pt-[36px] pb-4 space-y-2 overflow-y-auto overflow-x-hidden",children:[m.jsx(jw,{aiEnabled:a,isBuilder:r}),r&&m.jsx(Ow,{}),r&&a&&m.jsx(Nw,{}),r&&m.jsx(kw,{}),(r||n)&&m.jsx(Mw,{isBuilder:r})]}),m.jsx("button",{onClick:f,className:`shrink-0 py-3 text-text-tertiary hover:text-text-secondary transition-colors duration-150 ${o?"flex justify-center":"flex items-center px-7"}`,"aria-label":o?"Expand sidebar":"Collapse sidebar",children:o?m.jsx(ev,{className:"w-4 h-4 text-accent-muted",strokeWidth:1.5}):m.jsx(tv,{className:"w-4 h-4 text-accent-muted",strokeWidth:1.5})})]}),m.jsx("main",{className:"flex-1 overflow-y-auto",children:m.jsx("div",{ref:q,className:"max-w-dashboard mx-auto px-10 py-10 pb-16 animate-page-in",children:m.jsx(Ma,{})})})]}),m.jsx(Kw,{open:h,onToggle:()=>d(D=>!D),configOpen:g,onToggleConfig:()=>y(D=>!D)}),m.jsx(lS,{open:E,onClose:()=>{w(!1),history.replaceState(null,"",window.location.pathname+window.location.search)}}),a&&m.jsx(hS,{}),a&&m.jsx(M2,{})]})}function D2(){const{isAuthenticated:r}=ji(),n=Ws();return r?m.jsx(yw,{children:m.jsx(fS,{children:m.jsx(R2,{})})}):m.jsx(cs,{to:"/login",state:{from:n.pathname},replace:!0})}function hy({provider:r,className:n="w-5 h-5"}){switch(r){case"google":return m.jsxs("svg",{className:n,viewBox:"0 0 24 24",fill:"currentColor",children:[m.jsx("path",{d:"M22.56 12.25c0-.78-.07-1.53-.2-2.25H12v4.26h5.92a5.06 5.06 0 0 1-2.2 3.32v2.77h3.57c2.08-1.92 3.28-4.74 3.28-8.1z",fill:"#4285F4"}),m.jsx("path",{d:"M12 23c2.97 0 5.46-.98 7.28-2.66l-3.57-2.77c-.98.66-2.23 1.06-3.71 1.06-2.86 0-5.29-1.93-6.16-4.53H2.18v2.84C3.99 20.53 7.7 23 12 23z",fill:"#34A853"}),m.jsx("path",{d:"M5.84 14.09c-.22-.66-.35-1.36-.35-2.09s.13-1.43.35-2.09V7.07H2.18C1.43 8.55 1 10.22 1 12s.43 3.45 1.18 4.93l2.85-2.22.81-.62z",fill:"#FBBC05"}),m.jsx("path",{d:"M12 5.38c1.62 0 3.06.56 4.21 1.64l3.15-3.15C17.45 2.09 14.97 1 12 1 7.7 1 3.99 3.47 2.18 7.07l3.66 2.84c.87-2.6 3.3-4.53 6.16-4.53z",fill:"#EA4335"})]});case"github":return m.jsx("svg",{className:n,viewBox:"0 0 24 24",fill:"currentColor",children:m.jsx("path",{d:"M12 2C6.477 2 2 6.484 2 12.017c0 4.425 2.865 8.18 6.839 9.504.5.092.682-.217.682-.483 0-.237-.008-.868-.013-1.703-2.782.605-3.369-1.343-3.369-1.343-.454-1.158-1.11-1.466-1.11-1.466-.908-.62.069-.608.069-.608 1.003.07 1.531 1.032 1.531 1.032.892 1.53 2.341 1.088 2.91.832.092-.647.35-1.088.636-1.338-2.22-.253-4.555-1.113-4.555-4.951 0-1.093.39-1.988 1.029-2.688-.103-.253-.446-1.272.098-2.65 0 0 .84-.27 2.75 1.026A9.564 9.564 0 0 1 12 6.844c.85.004 1.705.115 2.504.337 1.909-1.296 2.747-1.027 2.747-1.027.546 1.379.202 2.398.1 2.651.64.7 1.028 1.595 1.028 2.688 0 3.848-2.339 4.695-4.566 4.943.359.309.678.92.678 1.855 0 1.338-.012 2.419-.012 2.747 0 .268.18.58.688.482A10.019 10.019 0 0 0 22 12.017C22 6.484 17.522 2 12 2z"})});case"microsoft":return m.jsxs("svg",{className:n,viewBox:"0 0 24 24",fill:"currentColor",children:[m.jsx("path",{d:"M3 3h8.5v8.5H3z",fill:"#F25022"}),m.jsx("path",{d:"M12.5 3H21v8.5h-8.5z",fill:"#7FBA00"}),m.jsx("path",{d:"M3 12.5h8.5V21H3z",fill:"#00A4EF"}),m.jsx("path",{d:"M12.5 12.5H21V21h-8.5z",fill:"#FFB900"})]});case"anthropic":return m.jsx("svg",{className:n,viewBox:"0 0 24 24",fill:"currentColor",children:m.jsx("path",{d:"M13.827 3.52h3.603L24 20.48h-3.603l-6.57-16.96zm-7.258 0h3.767L16.906 20.48h-3.674l-1.343-3.461H6.396l-1.34 3.461H1.5l5.07-16.96zm2.327 5.14l-2.065 5.326h4.108l-2.043-5.326z"})});default:return m.jsxs("svg",{className:n,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",children:[m.jsx("circle",{cx:"12",cy:"12",r:"10"}),m.jsx("path",{d:"M12 8v4l3 3"})]})}}async function z2(){return Xe("/auth/oauth/providers")}async function q2(r,n){const s=n?`?label=${encodeURIComponent(n)}`:"";return Xe(`/auth/oauth/connections/${r}${s}`,{method:"DELETE"})}function JE(){return Hn({queryKey:["oauth-connections"],queryFn:()=>Xe("/auth/oauth/connections")})}function IE(){const r=Cn();return Pn({mutationFn:({provider:n,label:s})=>q2(n,s),onSuccess:()=>{r.invalidateQueries({queryKey:["oauth-connections"]})}})}function U2(){var ce;const{login:r,isAuthenticated:n}=ji(),s=cg(),a=Ws(),o=new URLSearchParams(a.search),f=o.get("token"),h=o.get("error"),d=((ce=a.state)==null?void 0:ce.from)??o.get("returnTo")??"/",g=T.useRef(!1);f&&!g.current&&(g.current=!0,r(f,void 0,{displayName:o.get("displayName"),username:o.get("username")}));const[y,E]=T.useState(""),[w,O]=T.useState(""),[q,M]=T.useState(h||""),[D,W]=T.useState(!1),[se,ee]=T.useState(!!f),[me,re]=T.useState([]),C=T.useRef(!1);if(T.useEffect(()=>{f||C.current||(C.current=!0,(async()=>{var V,G,K,ae;try{const ne=await fetch(`${Wt}/api/settings`);if(!ne.ok)return;const ke=await ne.json();if(!((V=ke.auth)!=null&&V.sso))return;const He=await fetch(`${Wt}/api/auth/sso`,{method:"POST"});if(!He.ok){M("Host authentication required — please log in to your organization first");return}const Me=await He.json();Me.token&&((G=ke.auth)!=null&&G.ssoLogoutUrl&&sessionStorage.setItem("lt_sso_logout_url",ke.auth.ssoLogoutUrl),ee(!0),r(Me.token,void 0,{displayName:(K=Me.user)==null?void 0:K.display_name,username:(ae=Me.user)==null?void 0:ae.external_id}))}catch{}})())},[]),T.useEffect(()=>{f||z2().then(re).catch(()=>{})},[]),T.useEffect(()=>{if(!se)return;const V=setTimeout(()=>s(d,{replace:!0}),1500);return()=>clearTimeout(V)},[se]),n&&!se)return m.jsx(cs,{to:d,replace:!0});const X=async V=>{var G,K;if(V.preventDefault(),M(""),!y.trim()||!w){M("Username and password are required");return}W(!0);try{const ae=await fetch(`${Wt}/api/auth/login`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({username:y.trim(),password:w})}),ne=await ae.json();if(!ae.ok){M(ne.error||"Login failed");return}ee(!0),r(ne.token,{username:y.trim(),password:w},{displayName:(G=ne.user)==null?void 0:G.display_name,username:(K=ne.user)==null?void 0:K.external_id})}catch{M("Unable to connect to server")}finally{W(!1)}};return m.jsx("div",{className:"min-h-screen bg-surface flex items-center justify-center overflow-hidden",children:m.jsxs("div",{className:"w-full max-w-md p-10",children:[m.jsx("div",{className:`mb-10 transition-all duration-[1500ms] ease-in ${se?"translate-x-[120vw] -translate-y-[60vh] scale-[3] opacity-0":""}`,children:m.jsx(hh,{size:"lg",hideLabel:se})}),m.jsxs("form",{onSubmit:X,className:`space-y-5 transition-opacity duration-300 ${se?"opacity-0":""}`,children:[m.jsxs("div",{children:[m.jsx("label",{htmlFor:"username",className:"block text-sm font-medium text-text-secondary mb-2",children:"Username"}),m.jsx("input",{id:"username",type:"text",value:y,onChange:V=>E(V.target.value),className:"input",placeholder:"Enter your username",autoFocus:!se,autoComplete:"username"})]}),m.jsxs("div",{children:[m.jsx("label",{htmlFor:"password",className:"block text-sm font-medium text-text-secondary mb-2",children:"Password"}),m.jsx("input",{id:"password",type:"password",value:w,onChange:V=>O(V.target.value),className:"input",placeholder:"Enter your password",autoComplete:"current-password"})]}),q&&m.jsx("p",{className:"text-sm text-status-error",children:q}),m.jsx("button",{type:"submit",className:"btn-primary w-full",disabled:D||se,children:D?"Signing in...":"Sign In"}),me.length>0&&m.jsxs(m.Fragment,{children:[m.jsxs("div",{className:"flex items-center gap-3 mt-6",children:[m.jsx("div",{className:"flex-1 h-px bg-border"}),m.jsx("span",{className:"text-xs text-text-tertiary",children:"or continue with"}),m.jsx("div",{className:"flex-1 h-px bg-border"})]}),m.jsx("div",{className:"space-y-2",children:me.filter(V=>V.provider!=="anthropic").map(V=>m.jsxs("a",{href:`${Wt}/api/auth/oauth/${V.provider}?returnTo=${encodeURIComponent(d)}`,className:"btn-secondary w-full flex items-center justify-center gap-2",children:[m.jsx(hy,{provider:V.provider}),"Sign in with ",V.name]},V.provider))})]})]})]})})}function sg(){const{isAuthenticated:r}=ji(),n=cg(),s=Ws(),a=new URLSearchParams(s.search),o=a.get("state")||"";T.useEffect(()=>{r||n(`/login?returnTo=${encodeURIComponent(s.pathname+s.search)}`)},[r]);const[f,h]=T.useState(""),[d,g]=T.useState(a.get("label")||"default"),[y,E]=T.useState(""),[w,O]=T.useState(!1),q=f.trim().startsWith("sk-ant-oat"),M=f.trim().startsWith("sk-ant-api"),D=W=>{W.preventDefault();const se=f.trim();if(!se){E("A token or API key is required");return}if(!se.startsWith("sk-ant-")){E('Invalid format. Must start with "sk-ant-oat" (OAuth token) or "sk-ant-api" (API key)');return}O(!0),E("");const ee=`${Wt}/api/auth/oauth/anthropic/callback?code=${encodeURIComponent(se)}&state=${encodeURIComponent(o)}`;window.location.href=ee};return m.jsx("div",{className:"min-h-screen bg-surface flex items-center justify-center",children:m.jsxs("div",{className:"w-full max-w-md p-10",children:[m.jsx("div",{className:"mb-10",children:m.jsx(hh,{size:"lg"})}),m.jsxs("div",{className:"flex items-center gap-2 mb-6",children:[m.jsx(hy,{provider:"anthropic",className:"w-6 h-6"}),m.jsx("h2",{className:"text-lg font-semibold text-text-primary",children:"Connect Anthropic"})]}),m.jsx("p",{className:"text-sm text-text-secondary mb-4",children:"Connect your Anthropic account so Claude Code tasks run under your credentials. Your token is encrypted at rest."}),m.jsxs("form",{onSubmit:D,className:"space-y-5",children:[m.jsxs("div",{children:[m.jsx("label",{htmlFor:"token",className:"block text-sm font-medium text-text-secondary mb-2",children:"OAuth Token or API Key"}),m.jsx("input",{id:"token",type:"password",value:f,onChange:W=>h(W.target.value),className:"input",placeholder:"sk-ant-oat01-... or sk-ant-api03-...",autoFocus:!0,autoComplete:"off"}),q&&m.jsx("p",{className:"text-xs text-status-success mt-1",children:"OAuth token detected — uses your Claude subscription (flat rate)"}),M&&m.jsx("p",{className:"text-xs text-status-warning mt-1",children:"API key detected — billed per-token from your Anthropic API account"})]}),m.jsxs("div",{children:[m.jsx("label",{htmlFor:"label",className:"block text-sm font-medium text-text-secondary mb-2",children:"Label"}),m.jsx("input",{id:"label",type:"text",value:d,onChange:W=>g(W.target.value.replace(/\s+/g,"-").toLowerCase()),className:"input",placeholder:"default",autoComplete:"off"}),m.jsx("p",{className:"text-xs text-text-tertiary mt-1",children:'A name for this credential. Use different labels to store multiple credentials (e.g., "subscription", "api-batch").'})]}),y&&m.jsx("p",{className:"text-sm text-status-error",children:y}),m.jsx("button",{type:"submit",className:"btn-primary w-full",disabled:w,children:w?"Validating...":"Connect"}),m.jsx("a",{href:"/",className:"block text-center text-sm text-text-tertiary hover:text-text-secondary",children:"Cancel"})]}),m.jsxs("div",{className:"mt-6 space-y-3 text-xs text-text-tertiary",children:[m.jsxs("div",{children:[m.jsx("span",{className:"font-medium text-text-secondary",children:"Recommended:"})," ","Run"," ",m.jsx("code",{className:"px-1 py-0.5 bg-surface-sunken rounded text-[11px]",children:"claude setup-token"})," ","in your terminal to generate an OAuth token that uses your subscription."]}),m.jsxs("div",{children:[m.jsx("span",{className:"font-medium text-text-secondary",children:"Alternative:"})," ","Use an API key from"," ",m.jsx("a",{href:"https://console.anthropic.com/settings/keys",target:"_blank",rel:"noopener noreferrer",className:"text-accent-secondary hover:underline",children:"console.anthropic.com"})," ","(billed per-token)."]})]})]})})}function So({roleTypes:r,roleNames:n,redirectTo:s="/"}){const{isSuperAdmin:a,hasRole:o,hasRoleType:f}=ji();return a?m.jsx(Ma,{}):r&&r.some(h=>f(h))?m.jsx(Ma,{}):n&&n.some(h=>o(h))?m.jsx(Ma,{}):m.jsx(cs,{to:s,replace:!0})}function B2({redirectTo:r="/"}){var a;const{data:n,isLoading:s}=Qg();return s||!n?null:(a=n.ai)!=null&&a.enabled?m.jsx(Ma,{}):m.jsx(cs,{to:r,replace:!0})}const L2=T.lazy(()=>_e(()=>import("./ProcessesListPage-DG54t-Nd.js"),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15]),import.meta.url).then(r=>({default:r.ProcessesListPage}))),H2=T.lazy(()=>_e(()=>import("./ProcessDetailPage-BLfLfmWX.js"),__vite__mapDeps([16,1,2,4,17,13,18,15,9,6,19,20,21]),import.meta.url).then(r=>({default:r.ProcessDetailPage}))),P2=T.lazy(()=>_e(()=>import("./McpOverview-B4GsHxij.js"),__vite__mapDeps([22,1,23,24,25,26,12,13,27,6]),import.meta.url).then(r=>({default:r.McpOverview}))),$2=T.lazy(()=>_e(()=>import("./McpRunsPage-Bdke-HoQ.js"),__vite__mapDeps([28,1,24,25,5,6,29,26,7,8,15,13,9,30,12,11,10,14,31]),import.meta.url).then(r=>({default:r.McpRunsPage}))),Y2=T.lazy(()=>_e(()=>import("./McpRunDetailPage-Dt7Ai3qB.js"),__vite__mapDeps([32,1,24,18,12,13,33,6,34,35,14,36,37,11]),import.meta.url).then(r=>({default:r.McpRunDetailPage}))),G2=T.lazy(()=>_e(()=>import("./McpQueryPage-B-8WR3GV.js"),__vite__mapDeps([38,1,12,13,7,8,11,10,14,9,30,15,31,5,6,4,39]),import.meta.url).then(r=>({default:r.McpQueryPage}))),V2=T.lazy(()=>_e(()=>import("./McpQueryDetailPage-DZKpzWST.js"),__vite__mapDeps([40,1,12,13,18,39,6,25,4,41,34,24,3,2,42,43,44,45,46,47,33,48,36]),import.meta.url).then(r=>({default:r.McpQueryDetailPage}))),F2=T.lazy(()=>_e(()=>import("./EscalationsOverview-BIEeflEV.js"),__vite__mapDeps([49,1,4,12,13,27,6]),import.meta.url).then(r=>({default:r.EscalationsOverview}))),J2=T.lazy(()=>_e(()=>import("./AvailableEscalationsPage-Ci24fdxC.js"),__vite__mapDeps([50,1,4,51,5,6,7,8,10,12,13,52,53,54,21,55,11,56,19,15,9,57,31,14]),import.meta.url).then(r=>({default:r.AvailableEscalationsPage}))),I2=T.lazy(()=>_e(()=>import("./OperatorDashboard-VZ97mufd.js"),__vite__mapDeps([58,1,4,51,5,6,7,8,12,13,10,31,55,11,56,19,15,9,57,14]),import.meta.url).then(r=>({default:r.OperatorDashboard}))),Q2=T.lazy(()=>_e(()=>import("./index-B-BK3vtk.js"),__vite__mapDeps([59,1,35,51,12,13,57,3,4,20,21,53,52,18,19,33,6,34]),import.meta.url).then(r=>({default:r.EscalationDetailPage}))),X2=T.lazy(()=>_e(()=>import("./WorkflowsOverview-Cwo2rqGT.js"),__vite__mapDeps([60,1,3,4,12,13,27,6]),import.meta.url).then(r=>({default:r.WorkflowsOverview}))),K2=T.lazy(()=>_e(()=>import("./index-BBBGETMs.js"),__vite__mapDeps([61,1,3,12,13,15,62,45,46,6]),import.meta.url).then(r=>({default:r.StartWorkflowPage}))),Z2=T.lazy(()=>_e(()=>import("./index-BBBGETMs.js"),__vite__mapDeps([61,1,3,12,13,15,62,45,46,6]),import.meta.url).then(r=>({default:r.DurableInvokePage}))),W2=T.lazy(()=>_e(()=>import("./WorkflowsDashboard-Bcf17vCt.js"),__vite__mapDeps([63,1,9,30,3,29,26,6,4,5,7,8,15,13,12,11,10,14,31]),import.meta.url).then(r=>({default:()=>r.WorkflowsDashboard({tier:"durable"})}))),eE=T.lazy(()=>_e(()=>import("./WorkflowsDashboard-Bcf17vCt.js"),__vite__mapDeps([63,1,9,30,3,29,26,6,4,5,7,8,15,13,12,11,10,14,31]),import.meta.url).then(r=>({default:()=>r.WorkflowsDashboard({tier:"all"})}))),tE=T.lazy(()=>_e(()=>import("./YamlWorkflowsPage-DOiEQDOq.js"),__vite__mapDeps([64,1,25,5,6,12,13,11,8,47,62,18]),import.meta.url).then(r=>({default:r.YamlWorkflowsPage}))),nE=T.lazy(()=>_e(()=>import("./GraphInvokePage-DtAW8ilc.js"),__vite__mapDeps([65,1,25,12,13,42,44,45,46,43,6,47,62]),import.meta.url).then(r=>({default:r.GraphInvokePage}))),sE=T.lazy(()=>_e(()=>import("./YamlWorkflowDetailPage-Bv8ZFwO-.js"),__vite__mapDeps([66,1,25,18,62,13,6]),import.meta.url).then(r=>({default:r.YamlWorkflowDetailPage}))),iE=T.lazy(()=>_e(()=>import("./TasksListPage-DoHXxZF-.js"),__vite__mapDeps([67,1,2,3,5,6,7,8,18,56,48,10,11,12,13,15]),import.meta.url).then(r=>({default:r.TasksListPage}))),rE=T.lazy(()=>_e(()=>import("./TaskDetailPage-CLl2mgBC.js"),__vite__mapDeps([68,1,2,18,56,12,13,6]),import.meta.url).then(r=>({default:r.TaskDetailPage}))),ig=T.lazy(()=>_e(()=>import("./WorkflowExecutionPage-DEDsBmn1.js"),__vite__mapDeps([69,1,3,4,35,2,12,13,34,14,18,33,6,36,37,11]),import.meta.url).then(r=>({default:r.WorkflowExecutionPage}))),aE=T.lazy(()=>_e(()=>import("./AdminDashboard-CMzR4d-w.js"),__vite__mapDeps([70,1,2,4,23,17,13,6]),import.meta.url).then(r=>({default:r.AdminDashboard}))),lE=T.lazy(()=>_e(()=>import("./index-Cb7aSzox.js"),__vite__mapDeps([71,1,3,7,8,11,31,5,6,12,13,72,15]),import.meta.url).then(r=>({default:r.WorkersPage}))),oE=T.lazy(()=>_e(()=>import("./index-CMRW_PE-.js"),__vite__mapDeps([73,1,3,7,8,74,54,6,11,31,5,12,13,19,72,15,51,45,46,62]),import.meta.url).then(r=>({default:r.WorkflowConfigsPage}))),rg=T.lazy(()=>_e(()=>import("./index-CMRW_PE-.js"),__vite__mapDeps([73,1,3,7,8,74,54,6,11,31,5,12,13,19,72,15,51,45,46,62]),import.meta.url).then(r=>({default:r.WorkflowConfigDetailPage}))),cE=T.lazy(()=>_e(()=>import("./index-BTp73vYK.js"),__vite__mapDeps([75,1,23,8,74,54,6,12,13,11,10,5,76,44,45,46,47,43,31,18]),import.meta.url).then(r=>({default:r.McpServersPage}))),ag=T.lazy(()=>_e(()=>import("./index-H5Yb8CY2.js"),__vite__mapDeps([77,1,23,12,13,41,6]),import.meta.url).then(r=>({default:r.McpServerDetailPage}))),uE=T.lazy(()=>_e(()=>import("./index-Cjb8ulHm.js"),__vite__mapDeps([78,1,21,5,6,7,8,10,11,9,74,54,31,12,13,19,46,51,48]),import.meta.url).then(r=>({default:r.UsersPage}))),fE=T.lazy(()=>_e(()=>import("./RolesPage-Bdlv3DdW.js"),__vite__mapDeps([79,1,51,7,8,74,54,6,12,13,31]),import.meta.url).then(r=>({default:r.RolesPage}))),hE=T.lazy(()=>_e(()=>import("./index-_JsRJPds.js"),__vite__mapDeps([80,1,12,13,54,6,52]),import.meta.url).then(r=>({default:r.MaintenancePage}))),dE=T.lazy(()=>_e(()=>import("./index-DgLZ8Ix5.js"),__vite__mapDeps([81,1,17,13,11,5,6,29,26,54,34,72,7,8,31]),import.meta.url).then(r=>({default:r.ControlPlanePage}))),mE=T.lazy(()=>_e(()=>import("./index-rbuNUyAh.js"),__vite__mapDeps([82,1,6,5,29,26,7,8,10,11,9,12,13,14]),import.meta.url).then(r=>({default:r.StreamMessagesPage}))),pE=T.lazy(()=>_e(()=>import("./CredentialsPage-BDzFa3HV.js"),__vite__mapDeps([83,1,12,13,48,74,54,6]),import.meta.url).then(r=>({default:r.CredentialsPage}))),gE=T.lazy(()=>_e(()=>import("./index-CCup2uaP.js"),__vite__mapDeps([84,1,6,12,13,11,14,8,85,48]),import.meta.url).then(r=>({default:r.FilesPage}))),yE=T.lazy(()=>_e(()=>import("./index-BInTEEIX.js"),__vite__mapDeps([86,1,12,13,11,14,10,8,85,48,87,41,6]),import.meta.url).then(r=>({default:r.KnowledgePage}))),bE=T.lazy(()=>_e(()=>import("./HomePage-HsO-M8ub.js"),__vite__mapDeps([88,1,3,24,26,2,4,19,13,15,14,6]),import.meta.url).then(r=>({default:r.HomePage}))),xE=T.lazy(()=>_e(()=>import("./AgentsPage-ntuzWHCD.js"),__vite__mapDeps([89,1,90,4,5,6,7,8,10,11,12,13,14]),import.meta.url).then(r=>({default:r.AgentsPage}))),vE=T.lazy(()=>_e(()=>import("./AgentDetailPage-CSrejvSl.js"),__vite__mapDeps([91,1,90,92,13,4,15,6]),import.meta.url).then(r=>({default:r.AgentDetailPage}))),lg=T.lazy(()=>_e(()=>import("./AgentConfigPage-DHCpN4xk.js"),__vite__mapDeps([93,1,90,92,13,12,87,44,45,46,3,25,94,95,15,6]),import.meta.url).then(r=>({default:r.AgentConfigPage}))),_E=T.lazy(()=>_e(()=>import("./CapabilitiesPage-Bea9yLmU.js"),__vite__mapDeps([96,1,94,76,23,44,45,46,13,47,6,43,12]),import.meta.url).then(r=>({default:r.CapabilitiesPage}))),wE=T.lazy(()=>_e(()=>import("./TopicsPage-Bc-4ne6V.js"),__vite__mapDeps([97,1,95,5,6,7,8,10,11,12,13,14]),import.meta.url).then(r=>({default:r.TopicsPage}))),SE=T.lazy(()=>_e(()=>import("./TopicDetailPage-W9RKkNNp.js"),__vite__mapDeps([98,1,95,14,13,6]),import.meta.url).then(r=>({default:r.TopicDetailPage})));function EE(){return m.jsxs("div",{className:"animate-pulse space-y-4",children:[m.jsx("div",{className:"h-8 bg-surface-sunken rounded w-48"}),m.jsx("div",{className:"h-40 bg-surface-sunken rounded"})]})}function xe({children:r}){return m.jsx(T.Suspense,{fallback:m.jsx(EE,{}),children:m.jsx("div",{className:"animate-page-enter",children:r})})}const dy=new Ex({defaultOptions:{queries:{staleTime:1e4,retry:(r,n)=>n instanceof Error&&n.message==="Session expired"?!1:r<1}}});window.addEventListener("auth:unauthorized",()=>{dy.clear(),sessionStorage.removeItem("lt_token"),sessionStorage.removeItem("lt_credentials"),sessionStorage.removeItem("lt_user_info");const n=`${window.__LT_BASE__||""}/login`;window.location.pathname!==n&&(window.location.href=`${n}?returnTo=${encodeURIComponent(window.location.pathname)}`)});const AE=Ox([{path:"/login",element:m.jsx(U2,{})},{path:"/connect/anthropic",element:m.jsx(sg,{})},{path:"/connect/:provider",element:m.jsx(sg,{})},{path:"/",element:m.jsx(D2,{}),children:[{index:!0,element:m.jsx(xe,{children:m.jsx(bE,{})})},{path:"processes/all",element:m.jsx(xe,{children:m.jsx(L2,{})})},{path:"processes/detail/:originId",element:m.jsx(xe,{children:m.jsx(H2,{})})},{path:"credentials",element:m.jsx(xe,{children:m.jsx(pE,{})})},{path:"connections",element:m.jsx(cs,{to:"/credentials",replace:!0})},{path:"escalations",element:m.jsx(xe,{children:m.jsx(F2,{})})},{path:"escalations/available",element:m.jsx(xe,{children:m.jsx(J2,{})})},{path:"escalations/queue",element:m.jsx(xe,{children:m.jsx(I2,{})})},{path:"escalations/detail/:id",element:m.jsx(xe,{children:m.jsx(Q2,{})})},{path:"capabilities",element:m.jsx(xe,{children:m.jsx(_E,{})})},{path:"agents",element:m.jsx(xe,{children:m.jsx(xE,{})})},{path:"agents/new",element:m.jsx(xe,{children:m.jsx(lg,{})})},{path:"agents/:id",element:m.jsx(xe,{children:m.jsx(vE,{})})},{path:"agents/:id/edit",element:m.jsx(xe,{children:m.jsx(lg,{})})},{path:"topics",element:m.jsx(xe,{children:m.jsx(wE,{})})},{path:"topics/:topic",element:m.jsx(xe,{children:m.jsx(SE,{})})},{element:m.jsx(So,{roleTypes:["superadmin"],roleNames:["engineer"]}),children:[{path:"workflows",element:m.jsx(xe,{children:m.jsx(X2,{})})},{path:"workflows/executions",element:m.jsx(xe,{children:m.jsx(eE,{})})},{path:"workflows/durable/executions",element:m.jsx(xe,{children:m.jsx(W2,{})})},{path:"workflows/durable/executions/:workflowId",element:m.jsx(xe,{children:m.jsx(ig,{})})},{path:"workflows/tasks",element:m.jsx(xe,{children:m.jsx(iE,{})})},{path:"workflows/tasks/detail/:id",element:m.jsx(xe,{children:m.jsx(rE,{})})},{path:"workflows/executions/:workflowId",element:m.jsx(xe,{children:m.jsx(ig,{})})},{path:"workflows/start",element:m.jsx(xe,{children:m.jsx(K2,{})})},{path:"workflows/durable/invoke",element:m.jsx(xe,{children:m.jsx(Z2,{})})},{path:"workflows/cron",element:m.jsx(cs,{to:"/workflows/start?mode=schedule",replace:!0})},{path:"workflows/workers",element:m.jsx(xe,{children:m.jsx(lE,{})})},{path:"workflows/registry",element:m.jsx(xe,{children:m.jsx(oE,{})})},{path:"workflows/registry/new",element:m.jsx(xe,{children:m.jsx(rg,{})})},{path:"workflows/registry/:workflowType",element:m.jsx(xe,{children:m.jsx(rg,{})})}]},{element:m.jsx(So,{roleTypes:["superadmin"],roleNames:["engineer"]}),children:[{path:"mcp/workflows",element:m.jsx(xe,{children:m.jsx(tE,{})})},{path:"mcp/workflows/invoke",element:m.jsx(xe,{children:m.jsx(nE,{})})},{path:"mcp/workflows/:id",element:m.jsx(xe,{children:m.jsx(sE,{})})},{path:"mcp/executions",element:m.jsx(xe,{children:m.jsx($2,{})})},{path:"mcp/executions/:jobId",element:m.jsx(xe,{children:m.jsx(Y2,{})})},{path:"files",element:m.jsx(xe,{children:m.jsx(gE,{})})},{path:"knowledge",element:m.jsx(xe,{children:m.jsx(yE,{})})},{element:m.jsx(B2,{}),children:[{path:"mcp",element:m.jsx(xe,{children:m.jsx(P2,{})})},{path:"mcp/queries",element:m.jsx(xe,{children:m.jsx(G2,{})})},{path:"mcp/queries/:workflowId",element:m.jsx(xe,{children:m.jsx(V2,{})})},{path:"mcp/tools",element:m.jsx(cs,{to:"/mcp/servers",replace:!0})},{path:"mcp/servers",element:m.jsx(xe,{children:m.jsx(cE,{})})},{path:"mcp/servers/new",element:m.jsx(xe,{children:m.jsx(ag,{})})},{path:"mcp/servers/:serverId",element:m.jsx(xe,{children:m.jsx(ag,{})})}]}]},{element:m.jsx(So,{roleTypes:["admin","superadmin"],roleNames:["engineer"]}),children:[{path:"admin",element:m.jsx(xe,{children:m.jsx(aE,{})})},{path:"admin/users",element:m.jsx(xe,{children:m.jsx(uE,{})})}]},{element:m.jsx(So,{roleTypes:["superadmin"],roleNames:["engineer"]}),children:[{path:"admin/bots",element:m.jsx(cs,{to:"/admin/users?tab=service-accounts",replace:!0})},{path:"admin/escalation-chains",element:m.jsx(cs,{to:"/admin/roles",replace:!0})},{path:"admin/roles",element:m.jsx(xe,{children:m.jsx(fE,{})})},{path:"admin/maintenance",element:m.jsx(xe,{children:m.jsx(hE,{})})},{path:"admin/controlplane",element:m.jsx(xe,{children:m.jsx(dE,{})})},{path:"admin/streams",element:m.jsx(xe,{children:m.jsx(mE,{})})}]}]}],{basename:window.__LT_BASE__||"/"});function jE(){return m.jsx(Ax,{client:dy,children:m.jsx(uv,{children:m.jsx(mw,{children:m.jsx(Tx,{router:AE})})})})}av.createRoot(document.getElementById("root")).render(m.jsx(T.StrictMode,{children:m.jsx(jE,{})}));export{ph as A,JE as B,dh as C,O2 as D,IE as E,Wg as F,pg as G,Iw as J,Wt as L,d_ as N,hy as O,qw as S,FE as a,p_ as b,j2 as c,Xe as d,DE as e,S2 as f,qE as g,BE as h,ME as i,ji as j,HE as k,PE as l,$E as m,YE as n,GE as o,RE as p,xw as q,bw as r,Ig as s,UE as t,Qg as u,zE as v,LE as w,uy as x,fy as y,VE as z};
|
|
63
|
-
//# sourceMappingURL=index-
|
|
62
|
+
... (truncated)`});const ce=`${cS(o.concat(me))}${se}`;try{const K=(await Xe("/insight/mcp-query",{method:"POST",body:JSON.stringify({prompt:ce,tags:C.suggestedTags,context:C,wait:!1,direct:!0})})).workflow_id;d(K),f(ae=>ae.map(ne=>ne.id===re.id?{...ne,workflowId:K}:ne)),E.current&&clearInterval(E.current),E.current=setInterval(async()=>{var ae;try{const ne=await Xe(`/workflows/${K}/result`),ke=(ae=ne==null?void 0:ne.result)==null?void 0:ae.data;if(ke){E.current&&clearInterval(E.current),E.current=null,d(null);const He=uS(ke);let Me;try{Me=(await Xe(`/workflow-states/${K}/execution`)).duration_ms}catch{}f($=>$.map(te=>te.id===re.id?{...te,content:He,timestamp:new Date().toISOString(),pending:!1,durationMs:Me}:te))}}catch{}},3e3)}catch{f(G=>G.map(K=>K.id===re.id?{...K,content:"Failed to submit query. Please try again.",pending:!1}:K))}},[o,w]),W=T.useCallback(async se=>{const ee=o.find(C=>C.id===se);if(!(ee!=null&&ee.workflowId)||ee.compilationStatus==="compiling"||ee.compilationStatus==="done")return;const me=o.indexOf(ee),re=o.slice(0,me).reverse().find(C=>C.role==="user");if(re){f(C=>C.map(X=>X.id===se?{...X,compilationStatus:"compiling"}:X));try{const C=await Xe("/insight/mcp-query/describe",{method:"POST",body:JSON.stringify({prompt:re.content,summary:ee.content})}),X=await Xe("/yaml-workflows",{method:"POST",body:JSON.stringify({workflow_id:ee.workflowId,task_queue:"long-tail-system",workflow_name:"mcpQuery",name:C.tool_name,description:C.description,tags:C.tags,app_id:""})});await Xe(`/yaml-workflows/${X.id}/deploy`,{method:"POST"}),f(ce=>ce.map(V=>V.id===se?{...V,compilationStatus:"done"}:V))}catch(C){const X=C instanceof Error?C.message:"Compilation failed";f(ce=>ce.map(V=>V.id===se?{...V,compilationStatus:"error",compilationError:X}:V))}}},[o]);return m.jsx(ny.Provider,{value:{helpOpen:s,setHelpOpen:a,toggleHelp:O,messages:o,sendMessage:D,pageContext:w,setPageContext:q,activeWorkflowId:h,clearMessages:M,compileMessage:W},children:r})}function sy(){const r=T.useContext(ny);if(!r)throw new Error("useHelpAssistant must be used within HelpAssistantProvider");return r}function hS(){const{helpOpen:r,toggleHelp:n}=sy();return m.jsx("button",{onClick:n,className:"fixed right-3 z-[45] flex items-center justify-center w-10 h-10 rounded-full bg-surface-raised shadow-lg hover:scale-110 transition-transform duration-150 border border-accent/30",style:{bottom:"44px"},"aria-label":r?"Close help":"Ask for help",children:r?m.jsx($o,{className:"w-5 h-5 text-text-tertiary",strokeWidth:1.5}):m.jsx("img",{src:`${Wt}/logo512.png`,alt:"Help",className:"w-8 h-8 -rotate-[120deg]"})})}const iy=6048e5,dS=864e5,V0=6e4,F0=525600,J0=43200,I0=1440,Q0=Symbol.for("constructDateFrom");function ds(r,n){return typeof r=="function"?r(n):r&&typeof r=="object"&&Q0 in r?r[Q0](n):r instanceof Date?new r.constructor(n):new Date(n)}function sn(r,n){return ds(n||r,r)}let mS={};function Fa(){return mS}function $a(r,n){var d,g,y,E;const s=Fa(),a=(n==null?void 0:n.weekStartsOn)??((g=(d=n==null?void 0:n.locale)==null?void 0:d.options)==null?void 0:g.weekStartsOn)??s.weekStartsOn??((E=(y=s.locale)==null?void 0:y.options)==null?void 0:E.weekStartsOn)??0,o=sn(r,n==null?void 0:n.in),f=o.getDay(),h=(f<a?7:0)+f-a;return o.setDate(o.getDate()-h),o.setHours(0,0,0,0),o}function Ho(r,n){return $a(r,{...n,weekStartsOn:1})}function ry(r,n){const s=sn(r,n==null?void 0:n.in),a=s.getFullYear(),o=ds(s,0);o.setFullYear(a+1,0,4),o.setHours(0,0,0,0);const f=Ho(o),h=ds(s,0);h.setFullYear(a,0,4),h.setHours(0,0,0,0);const d=Ho(h);return s.getTime()>=f.getTime()?a+1:s.getTime()>=d.getTime()?a:a-1}function Po(r){const n=sn(r),s=new Date(Date.UTC(n.getFullYear(),n.getMonth(),n.getDate(),n.getHours(),n.getMinutes(),n.getSeconds(),n.getMilliseconds()));return s.setUTCFullYear(n.getFullYear()),+r-+s}function ay(r,...n){const s=ds.bind(null,r||n.find(a=>typeof a=="object"));return n.map(s)}function X0(r,n){const s=sn(r,n==null?void 0:n.in);return s.setHours(0,0,0,0),s}function pS(r,n,s){const[a,o]=ay(s==null?void 0:s.in,r,n),f=X0(a),h=X0(o),d=+f-Po(f),g=+h-Po(h);return Math.round((d-g)/dS)}function gS(r,n){const s=ry(r,n),a=ds(r,0);return a.setFullYear(s,0,4),a.setHours(0,0,0,0),Ho(a)}function yS(r,n){const s=+sn(r)-+sn(n);return s<0?-1:s>0?1:s}function bS(r){return ds(r,Date.now())}function xS(r){return r instanceof Date||typeof r=="object"&&Object.prototype.toString.call(r)==="[object Date]"}function vS(r){return!(!xS(r)&&typeof r!="number"||isNaN(+sn(r)))}function _S(r){return n=>{const a=(r?Math[r]:Math.trunc)(n);return a===0?0:a}}function wS(r,n){const s=sn(r,n==null?void 0:n.in);return s.setFullYear(s.getFullYear(),0,1),s.setHours(0,0,0,0),s}const SS={lessThanXSeconds:{one:"less than a second",other:"less than {{count}} seconds"},xSeconds:{one:"1 second",other:"{{count}} seconds"},halfAMinute:"half a minute",lessThanXMinutes:{one:"less than a minute",other:"less than {{count}} minutes"},xMinutes:{one:"1 minute",other:"{{count}} minutes"},aboutXHours:{one:"about 1 hour",other:"about {{count}} hours"},xHours:{one:"1 hour",other:"{{count}} hours"},xDays:{one:"1 day",other:"{{count}} days"},aboutXWeeks:{one:"about 1 week",other:"about {{count}} weeks"},xWeeks:{one:"1 week",other:"{{count}} weeks"},aboutXMonths:{one:"about 1 month",other:"about {{count}} months"},xMonths:{one:"1 month",other:"{{count}} months"},aboutXYears:{one:"about 1 year",other:"about {{count}} years"},xYears:{one:"1 year",other:"{{count}} years"},overXYears:{one:"over 1 year",other:"over {{count}} years"},almostXYears:{one:"almost 1 year",other:"almost {{count}} years"}},ES=(r,n,s)=>{let a;const o=SS[r];return typeof o=="string"?a=o:n===1?a=o.one:a=o.other.replace("{{count}}",n.toString()),s!=null&&s.addSuffix?s.comparison&&s.comparison>0?"in "+a:a+" ago":a};function wf(r){return(n={})=>{const s=n.width?String(n.width):r.defaultWidth;return r.formats[s]||r.formats[r.defaultWidth]}}const AS={full:"EEEE, MMMM do, y",long:"MMMM do, y",medium:"MMM d, y",short:"MM/dd/yyyy"},jS={full:"h:mm:ss a zzzz",long:"h:mm:ss a z",medium:"h:mm:ss a",short:"h:mm a"},OS={full:"{{date}} 'at' {{time}}",long:"{{date}} 'at' {{time}}",medium:"{{date}}, {{time}}",short:"{{date}}, {{time}}"},TS={date:wf({formats:AS,defaultWidth:"full"}),time:wf({formats:jS,defaultWidth:"full"}),dateTime:wf({formats:OS,defaultWidth:"full"})},NS={lastWeek:"'last' eeee 'at' p",yesterday:"'yesterday at' p",today:"'today at' p",tomorrow:"'tomorrow at' p",nextWeek:"eeee 'at' p",other:"P"},CS=(r,n,s,a)=>NS[r];function Oa(r){return(n,s)=>{const a=s!=null&&s.context?String(s.context):"standalone";let o;if(a==="formatting"&&r.formattingValues){const h=r.defaultFormattingWidth||r.defaultWidth,d=s!=null&&s.width?String(s.width):h;o=r.formattingValues[d]||r.formattingValues[h]}else{const h=r.defaultWidth,d=s!=null&&s.width?String(s.width):r.defaultWidth;o=r.values[d]||r.values[h]}const f=r.argumentCallback?r.argumentCallback(n):n;return o[f]}}const kS={narrow:["B","A"],abbreviated:["BC","AD"],wide:["Before Christ","Anno Domini"]},MS={narrow:["1","2","3","4"],abbreviated:["Q1","Q2","Q3","Q4"],wide:["1st quarter","2nd quarter","3rd quarter","4th quarter"]},RS={narrow:["J","F","M","A","M","J","J","A","S","O","N","D"],abbreviated:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],wide:["January","February","March","April","May","June","July","August","September","October","November","December"]},DS={narrow:["S","M","T","W","T","F","S"],short:["Su","Mo","Tu","We","Th","Fr","Sa"],abbreviated:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],wide:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"]},zS={narrow:{am:"a",pm:"p",midnight:"mi",noon:"n",morning:"morning",afternoon:"afternoon",evening:"evening",night:"night"},abbreviated:{am:"AM",pm:"PM",midnight:"midnight",noon:"noon",morning:"morning",afternoon:"afternoon",evening:"evening",night:"night"},wide:{am:"a.m.",pm:"p.m.",midnight:"midnight",noon:"noon",morning:"morning",afternoon:"afternoon",evening:"evening",night:"night"}},qS={narrow:{am:"a",pm:"p",midnight:"mi",noon:"n",morning:"in the morning",afternoon:"in the afternoon",evening:"in the evening",night:"at night"},abbreviated:{am:"AM",pm:"PM",midnight:"midnight",noon:"noon",morning:"in the morning",afternoon:"in the afternoon",evening:"in the evening",night:"at night"},wide:{am:"a.m.",pm:"p.m.",midnight:"midnight",noon:"noon",morning:"in the morning",afternoon:"in the afternoon",evening:"in the evening",night:"at night"}},US=(r,n)=>{const s=Number(r),a=s%100;if(a>20||a<10)switch(a%10){case 1:return s+"st";case 2:return s+"nd";case 3:return s+"rd"}return s+"th"},BS={ordinalNumber:US,era:Oa({values:kS,defaultWidth:"wide"}),quarter:Oa({values:MS,defaultWidth:"wide",argumentCallback:r=>r-1}),month:Oa({values:RS,defaultWidth:"wide"}),day:Oa({values:DS,defaultWidth:"wide"}),dayPeriod:Oa({values:zS,defaultWidth:"wide",formattingValues:qS,defaultFormattingWidth:"wide"})};function Ta(r){return(n,s={})=>{const a=s.width,o=a&&r.matchPatterns[a]||r.matchPatterns[r.defaultMatchWidth],f=n.match(o);if(!f)return null;const h=f[0],d=a&&r.parsePatterns[a]||r.parsePatterns[r.defaultParseWidth],g=Array.isArray(d)?HS(d,w=>w.test(h)):LS(d,w=>w.test(h));let y;y=r.valueCallback?r.valueCallback(g):g,y=s.valueCallback?s.valueCallback(y):y;const E=n.slice(h.length);return{value:y,rest:E}}}function LS(r,n){for(const s in r)if(Object.prototype.hasOwnProperty.call(r,s)&&n(r[s]))return s}function HS(r,n){for(let s=0;s<r.length;s++)if(n(r[s]))return s}function PS(r){return(n,s={})=>{const a=n.match(r.matchPattern);if(!a)return null;const o=a[0],f=n.match(r.parsePattern);if(!f)return null;let h=r.valueCallback?r.valueCallback(f[0]):f[0];h=s.valueCallback?s.valueCallback(h):h;const d=n.slice(o.length);return{value:h,rest:d}}}const $S=/^(\d+)(th|st|nd|rd)?/i,YS=/\d+/i,GS={narrow:/^(b|a)/i,abbreviated:/^(b\.?\s?c\.?|b\.?\s?c\.?\s?e\.?|a\.?\s?d\.?|c\.?\s?e\.?)/i,wide:/^(before christ|before common era|anno domini|common era)/i},VS={any:[/^b/i,/^(a|c)/i]},FS={narrow:/^[1234]/i,abbreviated:/^q[1234]/i,wide:/^[1234](th|st|nd|rd)? quarter/i},JS={any:[/1/i,/2/i,/3/i,/4/i]},IS={narrow:/^[jfmasond]/i,abbreviated:/^(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)/i,wide:/^(january|february|march|april|may|june|july|august|september|october|november|december)/i},QS={narrow:[/^j/i,/^f/i,/^m/i,/^a/i,/^m/i,/^j/i,/^j/i,/^a/i,/^s/i,/^o/i,/^n/i,/^d/i],any:[/^ja/i,/^f/i,/^mar/i,/^ap/i,/^may/i,/^jun/i,/^jul/i,/^au/i,/^s/i,/^o/i,/^n/i,/^d/i]},XS={narrow:/^[smtwf]/i,short:/^(su|mo|tu|we|th|fr|sa)/i,abbreviated:/^(sun|mon|tue|wed|thu|fri|sat)/i,wide:/^(sunday|monday|tuesday|wednesday|thursday|friday|saturday)/i},KS={narrow:[/^s/i,/^m/i,/^t/i,/^w/i,/^t/i,/^f/i,/^s/i],any:[/^su/i,/^m/i,/^tu/i,/^w/i,/^th/i,/^f/i,/^sa/i]},ZS={narrow:/^(a|p|mi|n|(in the|at) (morning|afternoon|evening|night))/i,any:/^([ap]\.?\s?m\.?|midnight|noon|(in the|at) (morning|afternoon|evening|night))/i},WS={any:{am:/^a/i,pm:/^p/i,midnight:/^mi/i,noon:/^no/i,morning:/morning/i,afternoon:/afternoon/i,evening:/evening/i,night:/night/i}},e2={ordinalNumber:PS({matchPattern:$S,parsePattern:YS,valueCallback:r=>parseInt(r,10)}),era:Ta({matchPatterns:GS,defaultMatchWidth:"wide",parsePatterns:VS,defaultParseWidth:"any"}),quarter:Ta({matchPatterns:FS,defaultMatchWidth:"wide",parsePatterns:JS,defaultParseWidth:"any",valueCallback:r=>r+1}),month:Ta({matchPatterns:IS,defaultMatchWidth:"wide",parsePatterns:QS,defaultParseWidth:"any"}),day:Ta({matchPatterns:XS,defaultMatchWidth:"wide",parsePatterns:KS,defaultParseWidth:"any"}),dayPeriod:Ta({matchPatterns:ZS,defaultMatchWidth:"any",parsePatterns:WS,defaultParseWidth:"any"})},ly={code:"en-US",formatDistance:ES,formatLong:TS,formatRelative:CS,localize:BS,match:e2,options:{weekStartsOn:0,firstWeekContainsDate:1}};function t2(r,n){const s=sn(r,n==null?void 0:n.in);return pS(s,wS(s))+1}function n2(r,n){const s=sn(r,n==null?void 0:n.in),a=+Ho(s)-+gS(s);return Math.round(a/iy)+1}function oy(r,n){var E,w,O,q;const s=sn(r,n==null?void 0:n.in),a=s.getFullYear(),o=Fa(),f=(n==null?void 0:n.firstWeekContainsDate)??((w=(E=n==null?void 0:n.locale)==null?void 0:E.options)==null?void 0:w.firstWeekContainsDate)??o.firstWeekContainsDate??((q=(O=o.locale)==null?void 0:O.options)==null?void 0:q.firstWeekContainsDate)??1,h=ds((n==null?void 0:n.in)||r,0);h.setFullYear(a+1,0,f),h.setHours(0,0,0,0);const d=$a(h,n),g=ds((n==null?void 0:n.in)||r,0);g.setFullYear(a,0,f),g.setHours(0,0,0,0);const y=$a(g,n);return+s>=+d?a+1:+s>=+y?a:a-1}function s2(r,n){var d,g,y,E;const s=Fa(),a=(n==null?void 0:n.firstWeekContainsDate)??((g=(d=n==null?void 0:n.locale)==null?void 0:d.options)==null?void 0:g.firstWeekContainsDate)??s.firstWeekContainsDate??((E=(y=s.locale)==null?void 0:y.options)==null?void 0:E.firstWeekContainsDate)??1,o=oy(r,n),f=ds((n==null?void 0:n.in)||r,0);return f.setFullYear(o,0,a),f.setHours(0,0,0,0),$a(f,n)}function i2(r,n){const s=sn(r,n==null?void 0:n.in),a=+$a(s,n)-+s2(s,n);return Math.round(a/iy)+1}function Ge(r,n){const s=r<0?"-":"",a=Math.abs(r).toString().padStart(n,"0");return s+a}const Vs={y(r,n){const s=r.getFullYear(),a=s>0?s:1-s;return Ge(n==="yy"?a%100:a,n.length)},M(r,n){const s=r.getMonth();return n==="M"?String(s+1):Ge(s+1,2)},d(r,n){return Ge(r.getDate(),n.length)},a(r,n){const s=r.getHours()/12>=1?"pm":"am";switch(n){case"a":case"aa":return s.toUpperCase();case"aaa":return s;case"aaaaa":return s[0];case"aaaa":default:return s==="am"?"a.m.":"p.m."}},h(r,n){return Ge(r.getHours()%12||12,n.length)},H(r,n){return Ge(r.getHours(),n.length)},m(r,n){return Ge(r.getMinutes(),n.length)},s(r,n){return Ge(r.getSeconds(),n.length)},S(r,n){const s=n.length,a=r.getMilliseconds(),o=Math.trunc(a*Math.pow(10,s-3));return Ge(o,n.length)}},pr={midnight:"midnight",noon:"noon",morning:"morning",afternoon:"afternoon",evening:"evening",night:"night"},K0={G:function(r,n,s){const a=r.getFullYear()>0?1:0;switch(n){case"G":case"GG":case"GGG":return s.era(a,{width:"abbreviated"});case"GGGGG":return s.era(a,{width:"narrow"});case"GGGG":default:return s.era(a,{width:"wide"})}},y:function(r,n,s){if(n==="yo"){const a=r.getFullYear(),o=a>0?a:1-a;return s.ordinalNumber(o,{unit:"year"})}return Vs.y(r,n)},Y:function(r,n,s,a){const o=oy(r,a),f=o>0?o:1-o;if(n==="YY"){const h=f%100;return Ge(h,2)}return n==="Yo"?s.ordinalNumber(f,{unit:"year"}):Ge(f,n.length)},R:function(r,n){const s=ry(r);return Ge(s,n.length)},u:function(r,n){const s=r.getFullYear();return Ge(s,n.length)},Q:function(r,n,s){const a=Math.ceil((r.getMonth()+1)/3);switch(n){case"Q":return String(a);case"QQ":return Ge(a,2);case"Qo":return s.ordinalNumber(a,{unit:"quarter"});case"QQQ":return s.quarter(a,{width:"abbreviated",context:"formatting"});case"QQQQQ":return s.quarter(a,{width:"narrow",context:"formatting"});case"QQQQ":default:return s.quarter(a,{width:"wide",context:"formatting"})}},q:function(r,n,s){const a=Math.ceil((r.getMonth()+1)/3);switch(n){case"q":return String(a);case"qq":return Ge(a,2);case"qo":return s.ordinalNumber(a,{unit:"quarter"});case"qqq":return s.quarter(a,{width:"abbreviated",context:"standalone"});case"qqqqq":return s.quarter(a,{width:"narrow",context:"standalone"});case"qqqq":default:return s.quarter(a,{width:"wide",context:"standalone"})}},M:function(r,n,s){const a=r.getMonth();switch(n){case"M":case"MM":return Vs.M(r,n);case"Mo":return s.ordinalNumber(a+1,{unit:"month"});case"MMM":return s.month(a,{width:"abbreviated",context:"formatting"});case"MMMMM":return s.month(a,{width:"narrow",context:"formatting"});case"MMMM":default:return s.month(a,{width:"wide",context:"formatting"})}},L:function(r,n,s){const a=r.getMonth();switch(n){case"L":return String(a+1);case"LL":return Ge(a+1,2);case"Lo":return s.ordinalNumber(a+1,{unit:"month"});case"LLL":return s.month(a,{width:"abbreviated",context:"standalone"});case"LLLLL":return s.month(a,{width:"narrow",context:"standalone"});case"LLLL":default:return s.month(a,{width:"wide",context:"standalone"})}},w:function(r,n,s,a){const o=i2(r,a);return n==="wo"?s.ordinalNumber(o,{unit:"week"}):Ge(o,n.length)},I:function(r,n,s){const a=n2(r);return n==="Io"?s.ordinalNumber(a,{unit:"week"}):Ge(a,n.length)},d:function(r,n,s){return n==="do"?s.ordinalNumber(r.getDate(),{unit:"date"}):Vs.d(r,n)},D:function(r,n,s){const a=t2(r);return n==="Do"?s.ordinalNumber(a,{unit:"dayOfYear"}):Ge(a,n.length)},E:function(r,n,s){const a=r.getDay();switch(n){case"E":case"EE":case"EEE":return s.day(a,{width:"abbreviated",context:"formatting"});case"EEEEE":return s.day(a,{width:"narrow",context:"formatting"});case"EEEEEE":return s.day(a,{width:"short",context:"formatting"});case"EEEE":default:return s.day(a,{width:"wide",context:"formatting"})}},e:function(r,n,s,a){const o=r.getDay(),f=(o-a.weekStartsOn+8)%7||7;switch(n){case"e":return String(f);case"ee":return Ge(f,2);case"eo":return s.ordinalNumber(f,{unit:"day"});case"eee":return s.day(o,{width:"abbreviated",context:"formatting"});case"eeeee":return s.day(o,{width:"narrow",context:"formatting"});case"eeeeee":return s.day(o,{width:"short",context:"formatting"});case"eeee":default:return s.day(o,{width:"wide",context:"formatting"})}},c:function(r,n,s,a){const o=r.getDay(),f=(o-a.weekStartsOn+8)%7||7;switch(n){case"c":return String(f);case"cc":return Ge(f,n.length);case"co":return s.ordinalNumber(f,{unit:"day"});case"ccc":return s.day(o,{width:"abbreviated",context:"standalone"});case"ccccc":return s.day(o,{width:"narrow",context:"standalone"});case"cccccc":return s.day(o,{width:"short",context:"standalone"});case"cccc":default:return s.day(o,{width:"wide",context:"standalone"})}},i:function(r,n,s){const a=r.getDay(),o=a===0?7:a;switch(n){case"i":return String(o);case"ii":return Ge(o,n.length);case"io":return s.ordinalNumber(o,{unit:"day"});case"iii":return s.day(a,{width:"abbreviated",context:"formatting"});case"iiiii":return s.day(a,{width:"narrow",context:"formatting"});case"iiiiii":return s.day(a,{width:"short",context:"formatting"});case"iiii":default:return s.day(a,{width:"wide",context:"formatting"})}},a:function(r,n,s){const o=r.getHours()/12>=1?"pm":"am";switch(n){case"a":case"aa":return s.dayPeriod(o,{width:"abbreviated",context:"formatting"});case"aaa":return s.dayPeriod(o,{width:"abbreviated",context:"formatting"}).toLowerCase();case"aaaaa":return s.dayPeriod(o,{width:"narrow",context:"formatting"});case"aaaa":default:return s.dayPeriod(o,{width:"wide",context:"formatting"})}},b:function(r,n,s){const a=r.getHours();let o;switch(a===12?o=pr.noon:a===0?o=pr.midnight:o=a/12>=1?"pm":"am",n){case"b":case"bb":return s.dayPeriod(o,{width:"abbreviated",context:"formatting"});case"bbb":return s.dayPeriod(o,{width:"abbreviated",context:"formatting"}).toLowerCase();case"bbbbb":return s.dayPeriod(o,{width:"narrow",context:"formatting"});case"bbbb":default:return s.dayPeriod(o,{width:"wide",context:"formatting"})}},B:function(r,n,s){const a=r.getHours();let o;switch(a>=17?o=pr.evening:a>=12?o=pr.afternoon:a>=4?o=pr.morning:o=pr.night,n){case"B":case"BB":case"BBB":return s.dayPeriod(o,{width:"abbreviated",context:"formatting"});case"BBBBB":return s.dayPeriod(o,{width:"narrow",context:"formatting"});case"BBBB":default:return s.dayPeriod(o,{width:"wide",context:"formatting"})}},h:function(r,n,s){if(n==="ho"){let a=r.getHours()%12;return a===0&&(a=12),s.ordinalNumber(a,{unit:"hour"})}return Vs.h(r,n)},H:function(r,n,s){return n==="Ho"?s.ordinalNumber(r.getHours(),{unit:"hour"}):Vs.H(r,n)},K:function(r,n,s){const a=r.getHours()%12;return n==="Ko"?s.ordinalNumber(a,{unit:"hour"}):Ge(a,n.length)},k:function(r,n,s){let a=r.getHours();return a===0&&(a=24),n==="ko"?s.ordinalNumber(a,{unit:"hour"}):Ge(a,n.length)},m:function(r,n,s){return n==="mo"?s.ordinalNumber(r.getMinutes(),{unit:"minute"}):Vs.m(r,n)},s:function(r,n,s){return n==="so"?s.ordinalNumber(r.getSeconds(),{unit:"second"}):Vs.s(r,n)},S:function(r,n){return Vs.S(r,n)},X:function(r,n,s){const a=r.getTimezoneOffset();if(a===0)return"Z";switch(n){case"X":return W0(a);case"XXXX":case"XX":return Ei(a);case"XXXXX":case"XXX":default:return Ei(a,":")}},x:function(r,n,s){const a=r.getTimezoneOffset();switch(n){case"x":return W0(a);case"xxxx":case"xx":return Ei(a);case"xxxxx":case"xxx":default:return Ei(a,":")}},O:function(r,n,s){const a=r.getTimezoneOffset();switch(n){case"O":case"OO":case"OOO":return"GMT"+Z0(a,":");case"OOOO":default:return"GMT"+Ei(a,":")}},z:function(r,n,s){const a=r.getTimezoneOffset();switch(n){case"z":case"zz":case"zzz":return"GMT"+Z0(a,":");case"zzzz":default:return"GMT"+Ei(a,":")}},t:function(r,n,s){const a=Math.trunc(+r/1e3);return Ge(a,n.length)},T:function(r,n,s){return Ge(+r,n.length)}};function Z0(r,n=""){const s=r>0?"-":"+",a=Math.abs(r),o=Math.trunc(a/60),f=a%60;return f===0?s+String(o):s+String(o)+n+Ge(f,2)}function W0(r,n){return r%60===0?(r>0?"-":"+")+Ge(Math.abs(r)/60,2):Ei(r,n)}function Ei(r,n=""){const s=r>0?"-":"+",a=Math.abs(r),o=Ge(Math.trunc(a/60),2),f=Ge(a%60,2);return s+o+n+f}const eg=(r,n)=>{switch(r){case"P":return n.date({width:"short"});case"PP":return n.date({width:"medium"});case"PPP":return n.date({width:"long"});case"PPPP":default:return n.date({width:"full"})}},cy=(r,n)=>{switch(r){case"p":return n.time({width:"short"});case"pp":return n.time({width:"medium"});case"ppp":return n.time({width:"long"});case"pppp":default:return n.time({width:"full"})}},r2=(r,n)=>{const s=r.match(/(P+)(p+)?/)||[],a=s[1],o=s[2];if(!o)return eg(r,n);let f;switch(a){case"P":f=n.dateTime({width:"short"});break;case"PP":f=n.dateTime({width:"medium"});break;case"PPP":f=n.dateTime({width:"long"});break;case"PPPP":default:f=n.dateTime({width:"full"});break}return f.replace("{{date}}",eg(a,n)).replace("{{time}}",cy(o,n))},a2={p:cy,P:r2},l2=/^D+$/,o2=/^Y+$/,c2=["D","DD","YY","YYYY"];function u2(r){return l2.test(r)}function f2(r){return o2.test(r)}function h2(r,n,s){const a=d2(r,n,s);if(console.warn(a),c2.includes(r))throw new RangeError(a)}function d2(r,n,s){const a=r[0]==="Y"?"years":"days of the month";return`Use \`${r.toLowerCase()}\` instead of \`${r}\` (in \`${n}\`) for formatting ${a} to the input \`${s}\`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md`}const m2=/[yYQqMLwIdDecihHKkms]o|(\w)\1*|''|'(''|[^'])+('|$)|./g,p2=/P+p+|P+|p+|''|'(''|[^'])+('|$)|./g,g2=/^'([^]*?)'?$/,y2=/''/g,b2=/[a-zA-Z]/;function uy(r,n,s){var E,w,O,q;const a=Fa(),o=a.locale??ly,f=a.firstWeekContainsDate??((w=(E=a.locale)==null?void 0:E.options)==null?void 0:w.firstWeekContainsDate)??1,h=a.weekStartsOn??((q=(O=a.locale)==null?void 0:O.options)==null?void 0:q.weekStartsOn)??0,d=sn(r,s==null?void 0:s.in);if(!vS(d))throw new RangeError("Invalid time value");let g=n.match(p2).map(M=>{const D=M[0];if(D==="p"||D==="P"){const W=a2[D];return W(M,o.formatLong)}return M}).join("").match(m2).map(M=>{if(M==="''")return{isToken:!1,value:"'"};const D=M[0];if(D==="'")return{isToken:!1,value:x2(M)};if(K0[D])return{isToken:!0,value:M};if(D.match(b2))throw new RangeError("Format string contains an unescaped latin alphabet character `"+D+"`");return{isToken:!1,value:M}});o.localize.preprocessor&&(g=o.localize.preprocessor(d,g));const y={firstWeekContainsDate:f,weekStartsOn:h,locale:o};return g.map(M=>{if(!M.isToken)return M.value;const D=M.value;(f2(D)||u2(D))&&h2(D,n,String(r));const W=K0[D[0]];return W(d,D,o.localize,y)}).join("")}function x2(r){const n=r.match(g2);return n?n[1].replace(y2,"'"):r}function v2(r,n,s){const a=Fa(),o=(s==null?void 0:s.locale)??a.locale??ly,f=yS(r,n);if(isNaN(f))throw new RangeError("Invalid time value");const h=Object.assign({},s,{addSuffix:s==null?void 0:s.addSuffix,comparison:f}),[d,g]=ay(s==null?void 0:s.in,...f>0?[n,r]:[r,n]),y=_S((s==null?void 0:s.roundingMethod)??"round"),E=g.getTime()-d.getTime(),w=E/V0,O=Po(g)-Po(d),q=(E-O)/V0,M=s==null?void 0:s.unit;let D;if(M?D=M:w<1?D="second":w<60?D="minute":w<I0?D="hour":q<J0?D="day":q<F0?D="month":D="year",D==="second"){const W=y(E/1e3);return o.formatDistance("xSeconds",W,h)}else if(D==="minute"){const W=y(w);return o.formatDistance("xMinutes",W,h)}else if(D==="hour"){const W=y(w/60);return o.formatDistance("xHours",W,h)}else if(D==="day"){const W=y(q/I0);return o.formatDistance("xDays",W,h)}else if(D==="month"){const W=y(q/J0);return W===12&&M!=="month"?o.formatDistance("xYears",1,h):o.formatDistance("xMonths",W,h)}else{const W=y(q/F0);return o.formatDistance("xYears",W,h)}}function _2(r,n){return v2(r,bS(r),n)}function w2(r){const n=new Date(r);return n.getTime()>Date.now()?"just now":_2(n,{addSuffix:!0})}function VE(r){return r<=0?"Expired":ph(r)}function S2(r){return r==null?"--":ph(r)}function ph(r){if(r<1e3)return`${Math.round(r)}ms`;if(r<6e4){const h=r/1e3;return Number.isInteger(h)?`${h}s`:`${h.toFixed(1)}s`}const n=Math.floor(r/1e3),s=Math.floor(n/86400),a=Math.floor(n%86400/3600),o=Math.floor(n%3600/60),f=n%60;return s>0?a>0?`${s}d ${a}h`:`${s}d`:a>0?o>0?`${a}h ${o}m`:`${a}h`:f>0?`${o}m ${f}s`:`${o}m`}function FE(r,n){const s=new Date(r).getTime(),a=n?new Date(n).getTime():Date.now();return ph(a-s)}function fy({options:r,children:n,className:s=""}){const[a,o]=T.useState(!1),[f,h]=T.useState(null),[d,g]=T.useState(null),y=T.useRef(null),E=T.useRef(void 0),w=T.useRef(void 0),O=220,q=T.useCallback(()=>{if(!y.current)return;const se=y.current.getBoundingClientRect(),ee=window.innerWidth-O-8,me=Math.max(8,Math.min(se.left,ee));g({top:se.bottom+4,left:me})},[]),M=T.useCallback(async(se,ee)=>{try{await navigator.clipboard.writeText(se),h(ee),clearTimeout(E.current),E.current=setTimeout(()=>h(null),1200)}catch{}},[]),D=T.useCallback(()=>{clearTimeout(w.current),q(),o(!0)},[q]),W=T.useCallback(()=>{w.current=setTimeout(()=>o(!1),150)},[]);return T.useEffect(()=>()=>{clearTimeout(E.current),clearTimeout(w.current)},[]),m.jsxs("span",{ref:y,className:`inline-flex items-center cursor-default ${s}`,onMouseEnter:D,onMouseLeave:W,children:[n,a&&d&&og.createPortal(m.jsx("span",{className:"fixed z-[9999] bg-surface-raised border border-surface-border rounded shadow-lg py-1 min-w-[180px]",style:{top:d.top,left:d.left},onMouseEnter:D,onMouseLeave:W,children:r.map(se=>m.jsxs("button",{onClick:ee=>{ee.stopPropagation(),M(se.value,se.label)},className:"flex items-center justify-between w-full px-2.5 py-1 text-left hover:bg-surface-hover transition-colors",children:[m.jsx("span",{className:"text-[9px] font-medium uppercase tracking-wider text-text-tertiary w-10 shrink-0",children:se.label}),m.jsx("span",{className:"text-[10px] font-mono text-text-secondary truncate ml-2",children:f===se.label?"✓":se.value})]},se.label))}),document.body)]})}function E2(r,n){const s=new Date(r);switch(n){case"relative":return w2(r);case"datetime":return uy(s,"MMM d, yyyy h:mm a");case"time":return s.toLocaleTimeString([],{hour:"2-digit",minute:"2-digit",second:"2-digit"})}}function A2(r){const n=new Date(r);return[{label:"ms",value:String(n.getTime())},{label:"utc",value:n.toISOString()},{label:"local",value:uy(n,"MMM d, yyyy h:mm:ss a")}]}function j2({date:r,format:n="relative",className:s=""}){const[,a]=T.useState(0);T.useEffect(()=>{if(n!=="relative")return;const f=setInterval(()=>a(h=>h+1),3e4);return()=>clearInterval(f)},[n]);const o=T.useMemo(()=>A2(r),[r]);return m.jsx(fy,{options:o,children:m.jsx("time",{dateTime:r,className:`text-xs text-text-tertiary ${s}`,children:E2(r,n)})})}function O2({ms:r,className:n=""}){const s=S2(r),a=T.useMemo(()=>r==null?[]:[{label:"ms",value:String(r)},{label:"sec",value:`${(r/1e3).toFixed(3)}s`},{label:"text",value:s}],[r,s]);return r==null?m.jsx("span",{className:`text-xs text-text-tertiary ${n}`,children:"--"}):m.jsx(fy,{options:a,children:m.jsx("span",{className:`text-xs text-text-tertiary ${n}`,children:s})})}const T2=["sm","md","lg","full"],tg={sm:"w-[28rem] max-h-[40vh]",md:"w-[36rem] max-h-[60vh]",lg:"w-[48rem] max-h-[80vh]",full:"inset-4 w-auto max-h-none"},ng={sm:"Small",md:"Medium",lg:"Large",full:"Fullscreen"};function N2({which:r}){const n="stroke-current";switch(r){case"sm":return m.jsx("svg",{width:"14",height:"14",viewBox:"0 0 14 14",fill:"none",children:m.jsx("rect",{x:"5",y:"5",width:"7",height:"7",rx:"1.5",className:n,strokeWidth:"1.5"})});case"md":return m.jsx("svg",{width:"14",height:"14",viewBox:"0 0 14 14",fill:"none",children:m.jsx("rect",{x:"3",y:"3",width:"9",height:"9",rx:"1.5",className:n,strokeWidth:"1.5"})});case"lg":return m.jsx("svg",{width:"14",height:"14",viewBox:"0 0 14 14",fill:"none",children:m.jsx("rect",{x:"1.5",y:"1.5",width:"11",height:"11",rx:"1.5",className:n,strokeWidth:"1.5"})});case"full":return m.jsx("svg",{width:"14",height:"14",viewBox:"0 0 14 14",fill:"none",children:m.jsx("rect",{x:"0.75",y:"0.75",width:"12.5",height:"12.5",rx:"1.5",className:n,strokeWidth:"1.5"})})}}function C2({msg:r}){const[n,s]=T.useState(0);T.useEffect(()=>{const h=new Date(r.timestamp).getTime(),d=()=>s(Math.floor((Date.now()-h)/1e3));d();const g=setInterval(d,1e3);return()=>clearInterval(g)},[r.timestamp]);const a=Math.floor(n/60),o=n%60,f=a>0?`${a}m ${o}s`:`${o}s`;return m.jsxs("span",{className:"inline-flex flex-col gap-1.5",children:[m.jsxs("span",{className:"inline-flex items-center gap-1",children:[m.jsx("span",{className:"text-text-tertiary",children:"Thinking"}),m.jsx("span",{className:"inline-block w-1 h-1 rounded-full bg-text-tertiary animate-pulse"}),m.jsx("span",{className:"inline-block w-1 h-1 rounded-full bg-text-tertiary animate-pulse [animation-delay:150ms]"}),m.jsx("span",{className:"inline-block w-1 h-1 rounded-full bg-text-tertiary animate-pulse [animation-delay:300ms]"}),m.jsx("span",{className:"text-text-muted ml-1 tabular-nums",children:f})]}),r.workflowId&&m.jsxs(gr,{to:`/workflows/executions/${r.workflowId}`,className:"inline-flex items-center gap-1 text-[10px] text-accent/70 hover:text-accent transition-colors",children:[m.jsx(Xf,{className:"w-2.5 h-2.5",strokeWidth:1.5}),"watch execution"]})]})}function k2({msg:r,compileMessage:n}){const s=r.role==="assistant";return m.jsxs("div",{className:`flex items-center gap-1.5 ${s?"justify-start":"justify-end"}`,children:[m.jsx(j2,{date:r.timestamp,format:"time",className:"!text-[9px] text-text-muted/50"}),r.durationMs!=null&&m.jsxs(m.Fragment,{children:[m.jsx("span",{className:"text-text-muted/30 text-[8px]",children:"·"}),m.jsx(O2,{ms:r.durationMs,className:"!text-[9px] text-text-muted/50"})]}),r.workflowId&&m.jsx(gr,{to:`/workflows/executions/${r.workflowId}`,className:"text-text-muted/40 hover:text-accent transition-colors",title:"View workflow execution",children:m.jsx(Xf,{className:"w-2.5 h-2.5",strokeWidth:1.5})}),s&&r.workflowId&&!r.pending&&m.jsx("button",{onClick:()=>n(r.id),disabled:r.compilationStatus==="compiling"||r.compilationStatus==="done",className:"transition-colors",title:r.compilationStatus==="done"?"Compiled — future queries will match this pipeline":r.compilationStatus==="error"?r.compilationError??"Compilation failed":r.compilationStatus==="compiling"?"Compiling...":"Compile to fast pipeline",children:m.jsx(Kx,{className:`w-2.5 h-2.5 ${r.compilationStatus==="done"?"text-status-success":r.compilationStatus==="error"?"text-status-error":r.compilationStatus==="compiling"?"text-accent/40 animate-pulse":"text-text-muted/40 hover:text-accent"}`,strokeWidth:1.5})})]})}function M2(){const{helpOpen:r,setHelpOpen:n,messages:s,sendMessage:a,pageContext:o,activeWorkflowId:f,clearMessages:h,compileMessage:d}=sy(),[g,y]=T.useState(""),[E,w]=T.useState("md"),[O,q]=T.useState(!0),M=T.useRef(null),D=T.useRef(null);if(T.useEffect(()=>{M.current&&(M.current.scrollTop=M.current.scrollHeight)},[s]),T.useEffect(()=>{r&&D.current&&D.current.focus()},[r]),T.useEffect(()=>{if(!r)return;const C=X=>{X.key==="Escape"&&(E==="full"?w("lg"):E==="lg"?w("md"):E==="md"?w("sm"):n(!1))};return document.addEventListener("keydown",C),()=>document.removeEventListener("keydown",C)},[r,E,n]),!r)return null;const W=()=>{const C=g.trim();!C||f||(a(C),y(""),D.current&&(D.current.style.height="auto"))},se=C=>{C.key==="Enter"&&!C.shiftKey&&(C.preventDefault(),W())},ee=E==="full",me=o.page.replace(/-/g," "),re=ee?{}:{bottom:"108px"};return m.jsxs("div",{className:`fixed z-[45] flex flex-col border border-surface-border rounded-lg overflow-hidden transition-all duration-300 ${ee?tg.full:`right-6 ${tg[E]}`} ${O?"bg-surface-raised shadow-xl":"bg-surface-raised/[0.03] shadow-lg shadow-black/5"}`,style:re,onMouseEnter:()=>q(!0),onMouseLeave:()=>q(!1),children:[m.jsxs("div",{className:`flex items-center justify-between px-4 py-2.5 border-b border-surface-border shrink-0 transition-all duration-300 ${O?"opacity-100":"opacity-50 grayscale brightness-150"}`,children:[m.jsxs("div",{className:"min-w-0 flex-1",children:[m.jsx("p",{className:"text-xs font-medium text-text-primary truncate",children:"Help Assistant"}),m.jsx("p",{className:"text-[10px] text-text-tertiary truncate",children:me})]}),m.jsxs("div",{className:"flex items-center gap-1 ml-2",children:[m.jsx("div",{className:"flex items-center gap-0.5 border border-surface-border rounded p-0.5",role:"radiogroup","aria-label":"Panel size",children:T2.map(C=>m.jsx("button",{onClick:()=>w(C),className:`p-1 rounded transition-colors ${C===E?"bg-accent/15 text-accent":"text-text-muted hover:text-text-secondary hover:bg-surface-hover"}`,role:"radio","aria-checked":C===E,"aria-label":ng[C],title:ng[C],children:m.jsx(N2,{which:C})},C))}),s.length>0&&m.jsx("button",{onClick:h,className:"p-1 text-text-tertiary hover:text-text-secondary transition-colors","aria-label":"Clear conversation",title:"Clear conversation",children:m.jsx(Zx,{className:"w-3.5 h-3.5",strokeWidth:1.5})}),m.jsx("button",{onClick:()=>n(!1),className:"p-1 text-text-tertiary hover:text-text-primary transition-colors","aria-label":"Close",title:"Close",children:m.jsx($o,{className:"w-3.5 h-3.5",strokeWidth:1.5})})]})]}),m.jsxs("div",{ref:M,className:`flex-1 overflow-y-auto px-4 py-3 space-y-3 min-h-[120px] transition-all duration-300 ${O?"opacity-100":"opacity-50 grayscale brightness-150"}`,children:[s.length===0&&m.jsx("p",{className:"text-xs text-text-tertiary text-center py-6",children:"Ask anything about what you're viewing."}),s.map(C=>m.jsxs("div",{className:`text-xs leading-relaxed ${C.role==="user"?"text-right":"text-left"}`,children:[m.jsx("div",{className:`inline-block max-w-[85%] px-3 py-2 rounded-md whitespace-pre-wrap ${C.role==="user"?"bg-accent/10 text-text-primary":"bg-surface-sunken text-text-secondary"}`,children:C.pending?m.jsx(C2,{msg:C}):C.role==="assistant"?m.jsx(mh,{content:C.content}):C.content}),!C.pending&&m.jsx("div",{className:"mt-0.5",children:m.jsx(k2,{msg:C,compileMessage:d})})]},C.id))]}),m.jsxs("div",{className:`border-t border-surface-border px-3 py-2.5 flex gap-2 shrink-0 transition-all duration-300 ${O?"opacity-100":"opacity-50 grayscale brightness-150"}`,children:[m.jsx("textarea",{ref:D,value:g,onChange:C=>{y(C.target.value);const X=C.target;X.style.height="auto",X.style.height=`${Math.min(X.scrollHeight,120)}px`},onKeyDown:se,placeholder:"Ask a question...",rows:2,className:"flex-1 resize-none bg-surface text-xs text-text-primary placeholder:text-text-tertiary rounded px-2.5 py-1.5 border border-surface-border focus:outline-none focus:border-accent",style:{minHeight:"2.5rem"},disabled:!!f}),m.jsx("button",{onClick:W,disabled:!g.trim()||!!f,className:"px-2.5 py-1.5 text-accent hover:text-accent-hover disabled:text-text-muted transition-colors self-end","aria-label":"Send",children:m.jsx(Wx,{className:"w-4 h-4",strokeWidth:1.5})})]})]})}function R2(){var M;const{isBuilder:r,isOps:n}=Ig(),{data:s}=Qg(),a=!!((M=s==null?void 0:s.ai)!=null&&M.enabled),{collapsed:o,toggle:f}=Kg(),[h,d]=T.useState(!1),[g,y]=T.useState(!1),[E,w]=T.useState(()=>window.location.hash.startsWith("#docs")),O=Ws(),q=T.useRef(null);return T.useEffect(()=>{const D=q.current;D&&(D.classList.remove("animate-page-in"),D.offsetWidth,D.classList.add("animate-page-in"))},[O.pathname]),T.useEffect(()=>{const D=()=>{window.location.hash.startsWith("#docs")&&w(!0)};return window.addEventListener("hashchange",D),()=>window.removeEventListener("hashchange",D)},[]),m.jsxs("div",{className:"h-screen bg-surface flex flex-col",children:[m.jsx(_w,{onToggleEventFeed:()=>d(D=>!D),onToggleDocs:()=>w(D=>!D)}),m.jsxs("div",{className:"flex flex-1 overflow-hidden",children:[m.jsxs("aside",{className:`${o?"w-16":"w-60"} shrink-0 bg-surface-raised border-r border-surface-border flex flex-col transition-[width] duration-200 ease-out overflow-hidden relative z-20`,children:[m.jsxs("nav",{className:"flex-1 px-3 pt-[36px] pb-4 space-y-2 overflow-y-auto overflow-x-hidden",children:[m.jsx(jw,{aiEnabled:a,isBuilder:r}),r&&m.jsx(Ow,{}),r&&a&&m.jsx(Nw,{}),r&&m.jsx(kw,{}),(r||n)&&m.jsx(Mw,{isBuilder:r})]}),m.jsx("button",{onClick:f,className:`shrink-0 py-3 text-text-tertiary hover:text-text-secondary transition-colors duration-150 ${o?"flex justify-center":"flex items-center px-7"}`,"aria-label":o?"Expand sidebar":"Collapse sidebar",children:o?m.jsx(ev,{className:"w-4 h-4 text-accent-muted",strokeWidth:1.5}):m.jsx(tv,{className:"w-4 h-4 text-accent-muted",strokeWidth:1.5})})]}),m.jsx("main",{className:"flex-1 overflow-y-auto",children:m.jsx("div",{ref:q,className:"max-w-dashboard mx-auto px-10 py-10 pb-16 animate-page-in",children:m.jsx(Ma,{})})})]}),m.jsx(Kw,{open:h,onToggle:()=>d(D=>!D),configOpen:g,onToggleConfig:()=>y(D=>!D)}),m.jsx(lS,{open:E,onClose:()=>{w(!1),history.replaceState(null,"",window.location.pathname+window.location.search)}}),a&&m.jsx(hS,{}),a&&m.jsx(M2,{})]})}function D2(){const{isAuthenticated:r}=ji(),n=Ws();return r?m.jsx(yw,{children:m.jsx(fS,{children:m.jsx(R2,{})})}):m.jsx(cs,{to:"/login",state:{from:n.pathname},replace:!0})}function hy({provider:r,className:n="w-5 h-5"}){switch(r){case"google":return m.jsxs("svg",{className:n,viewBox:"0 0 24 24",fill:"currentColor",children:[m.jsx("path",{d:"M22.56 12.25c0-.78-.07-1.53-.2-2.25H12v4.26h5.92a5.06 5.06 0 0 1-2.2 3.32v2.77h3.57c2.08-1.92 3.28-4.74 3.28-8.1z",fill:"#4285F4"}),m.jsx("path",{d:"M12 23c2.97 0 5.46-.98 7.28-2.66l-3.57-2.77c-.98.66-2.23 1.06-3.71 1.06-2.86 0-5.29-1.93-6.16-4.53H2.18v2.84C3.99 20.53 7.7 23 12 23z",fill:"#34A853"}),m.jsx("path",{d:"M5.84 14.09c-.22-.66-.35-1.36-.35-2.09s.13-1.43.35-2.09V7.07H2.18C1.43 8.55 1 10.22 1 12s.43 3.45 1.18 4.93l2.85-2.22.81-.62z",fill:"#FBBC05"}),m.jsx("path",{d:"M12 5.38c1.62 0 3.06.56 4.21 1.64l3.15-3.15C17.45 2.09 14.97 1 12 1 7.7 1 3.99 3.47 2.18 7.07l3.66 2.84c.87-2.6 3.3-4.53 6.16-4.53z",fill:"#EA4335"})]});case"github":return m.jsx("svg",{className:n,viewBox:"0 0 24 24",fill:"currentColor",children:m.jsx("path",{d:"M12 2C6.477 2 2 6.484 2 12.017c0 4.425 2.865 8.18 6.839 9.504.5.092.682-.217.682-.483 0-.237-.008-.868-.013-1.703-2.782.605-3.369-1.343-3.369-1.343-.454-1.158-1.11-1.466-1.11-1.466-.908-.62.069-.608.069-.608 1.003.07 1.531 1.032 1.531 1.032.892 1.53 2.341 1.088 2.91.832.092-.647.35-1.088.636-1.338-2.22-.253-4.555-1.113-4.555-4.951 0-1.093.39-1.988 1.029-2.688-.103-.253-.446-1.272.098-2.65 0 0 .84-.27 2.75 1.026A9.564 9.564 0 0 1 12 6.844c.85.004 1.705.115 2.504.337 1.909-1.296 2.747-1.027 2.747-1.027.546 1.379.202 2.398.1 2.651.64.7 1.028 1.595 1.028 2.688 0 3.848-2.339 4.695-4.566 4.943.359.309.678.92.678 1.855 0 1.338-.012 2.419-.012 2.747 0 .268.18.58.688.482A10.019 10.019 0 0 0 22 12.017C22 6.484 17.522 2 12 2z"})});case"microsoft":return m.jsxs("svg",{className:n,viewBox:"0 0 24 24",fill:"currentColor",children:[m.jsx("path",{d:"M3 3h8.5v8.5H3z",fill:"#F25022"}),m.jsx("path",{d:"M12.5 3H21v8.5h-8.5z",fill:"#7FBA00"}),m.jsx("path",{d:"M3 12.5h8.5V21H3z",fill:"#00A4EF"}),m.jsx("path",{d:"M12.5 12.5H21V21h-8.5z",fill:"#FFB900"})]});case"anthropic":return m.jsx("svg",{className:n,viewBox:"0 0 24 24",fill:"currentColor",children:m.jsx("path",{d:"M13.827 3.52h3.603L24 20.48h-3.603l-6.57-16.96zm-7.258 0h3.767L16.906 20.48h-3.674l-1.343-3.461H6.396l-1.34 3.461H1.5l5.07-16.96zm2.327 5.14l-2.065 5.326h4.108l-2.043-5.326z"})});default:return m.jsxs("svg",{className:n,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",children:[m.jsx("circle",{cx:"12",cy:"12",r:"10"}),m.jsx("path",{d:"M12 8v4l3 3"})]})}}async function z2(){return Xe("/auth/oauth/providers")}async function q2(r,n){const s=n?`?label=${encodeURIComponent(n)}`:"";return Xe(`/auth/oauth/connections/${r}${s}`,{method:"DELETE"})}function JE(){return Hn({queryKey:["oauth-connections"],queryFn:()=>Xe("/auth/oauth/connections")})}function IE(){const r=Cn();return Pn({mutationFn:({provider:n,label:s})=>q2(n,s),onSuccess:()=>{r.invalidateQueries({queryKey:["oauth-connections"]})}})}function U2(){var ce;const{login:r,isAuthenticated:n}=ji(),s=cg(),a=Ws(),o=new URLSearchParams(a.search),f=o.get("token"),h=o.get("error"),d=((ce=a.state)==null?void 0:ce.from)??o.get("returnTo")??"/",g=T.useRef(!1);f&&!g.current&&(g.current=!0,r(f,void 0,{displayName:o.get("displayName"),username:o.get("username")}));const[y,E]=T.useState(""),[w,O]=T.useState(""),[q,M]=T.useState(h||""),[D,W]=T.useState(!1),[se,ee]=T.useState(!!f),[me,re]=T.useState([]),C=T.useRef(!1);if(T.useEffect(()=>{f||C.current||(C.current=!0,(async()=>{var V,G,K,ae;try{const ne=await fetch(`${Wt}/api/settings`);if(!ne.ok)return;const ke=await ne.json();if(!((V=ke.auth)!=null&&V.sso))return;const He=await fetch(`${Wt}/api/auth/sso`,{method:"POST"});if(!He.ok){M("Host authentication required — please log in to your organization first");return}const Me=await He.json();Me.token&&((G=ke.auth)!=null&&G.ssoLogoutUrl&&sessionStorage.setItem("lt_sso_logout_url",ke.auth.ssoLogoutUrl),ee(!0),r(Me.token,void 0,{displayName:(K=Me.user)==null?void 0:K.display_name,username:(ae=Me.user)==null?void 0:ae.external_id}))}catch{}})())},[]),T.useEffect(()=>{f||z2().then(re).catch(()=>{})},[]),T.useEffect(()=>{if(!se)return;const V=setTimeout(()=>s(d,{replace:!0}),1500);return()=>clearTimeout(V)},[se]),n&&!se)return m.jsx(cs,{to:d,replace:!0});const X=async V=>{var G,K;if(V.preventDefault(),M(""),!y.trim()||!w){M("Username and password are required");return}W(!0);try{const ae=await fetch(`${Wt}/api/auth/login`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({username:y.trim(),password:w})}),ne=await ae.json();if(!ae.ok){M(ne.error||"Login failed");return}ee(!0),r(ne.token,{username:y.trim(),password:w},{displayName:(G=ne.user)==null?void 0:G.display_name,username:(K=ne.user)==null?void 0:K.external_id})}catch{M("Unable to connect to server")}finally{W(!1)}};return m.jsx("div",{className:"min-h-screen bg-surface flex items-center justify-center overflow-hidden",children:m.jsxs("div",{className:"w-full max-w-md p-10",children:[m.jsx("div",{className:`mb-10 transition-all duration-[1500ms] ease-in ${se?"translate-x-[120vw] -translate-y-[60vh] scale-[3] opacity-0":""}`,children:m.jsx(hh,{size:"lg",hideLabel:se})}),m.jsxs("form",{onSubmit:X,className:`space-y-5 transition-opacity duration-300 ${se?"opacity-0":""}`,children:[m.jsxs("div",{children:[m.jsx("label",{htmlFor:"username",className:"block text-sm font-medium text-text-secondary mb-2",children:"Username"}),m.jsx("input",{id:"username",type:"text",value:y,onChange:V=>E(V.target.value),className:"input",placeholder:"Enter your username",autoFocus:!se,autoComplete:"username"})]}),m.jsxs("div",{children:[m.jsx("label",{htmlFor:"password",className:"block text-sm font-medium text-text-secondary mb-2",children:"Password"}),m.jsx("input",{id:"password",type:"password",value:w,onChange:V=>O(V.target.value),className:"input",placeholder:"Enter your password",autoComplete:"current-password"})]}),q&&m.jsx("p",{className:"text-sm text-status-error",children:q}),m.jsx("button",{type:"submit",className:"btn-primary w-full",disabled:D||se,children:D?"Signing in...":"Sign In"}),me.length>0&&m.jsxs(m.Fragment,{children:[m.jsxs("div",{className:"flex items-center gap-3 mt-6",children:[m.jsx("div",{className:"flex-1 h-px bg-border"}),m.jsx("span",{className:"text-xs text-text-tertiary",children:"or continue with"}),m.jsx("div",{className:"flex-1 h-px bg-border"})]}),m.jsx("div",{className:"space-y-2",children:me.filter(V=>V.provider!=="anthropic").map(V=>m.jsxs("a",{href:`${Wt}/api/auth/oauth/${V.provider}?returnTo=${encodeURIComponent(d)}`,className:"btn-secondary w-full flex items-center justify-center gap-2",children:[m.jsx(hy,{provider:V.provider}),"Sign in with ",V.name]},V.provider))})]})]})]})})}function sg(){const{isAuthenticated:r}=ji(),n=cg(),s=Ws(),a=new URLSearchParams(s.search),o=a.get("state")||"";T.useEffect(()=>{r||n(`/login?returnTo=${encodeURIComponent(s.pathname+s.search)}`)},[r]);const[f,h]=T.useState(""),[d,g]=T.useState(a.get("label")||"default"),[y,E]=T.useState(""),[w,O]=T.useState(!1),q=f.trim().startsWith("sk-ant-oat"),M=f.trim().startsWith("sk-ant-api"),D=W=>{W.preventDefault();const se=f.trim();if(!se){E("A token or API key is required");return}if(!se.startsWith("sk-ant-")){E('Invalid format. Must start with "sk-ant-oat" (OAuth token) or "sk-ant-api" (API key)');return}O(!0),E("");const ee=`${Wt}/api/auth/oauth/anthropic/callback?code=${encodeURIComponent(se)}&state=${encodeURIComponent(o)}`;window.location.href=ee};return m.jsx("div",{className:"min-h-screen bg-surface flex items-center justify-center",children:m.jsxs("div",{className:"w-full max-w-md p-10",children:[m.jsx("div",{className:"mb-10",children:m.jsx(hh,{size:"lg"})}),m.jsxs("div",{className:"flex items-center gap-2 mb-6",children:[m.jsx(hy,{provider:"anthropic",className:"w-6 h-6"}),m.jsx("h2",{className:"text-lg font-semibold text-text-primary",children:"Connect Anthropic"})]}),m.jsx("p",{className:"text-sm text-text-secondary mb-4",children:"Connect your Anthropic account so Claude Code tasks run under your credentials. Your token is encrypted at rest."}),m.jsxs("form",{onSubmit:D,className:"space-y-5",children:[m.jsxs("div",{children:[m.jsx("label",{htmlFor:"token",className:"block text-sm font-medium text-text-secondary mb-2",children:"OAuth Token or API Key"}),m.jsx("input",{id:"token",type:"password",value:f,onChange:W=>h(W.target.value),className:"input",placeholder:"sk-ant-oat01-... or sk-ant-api03-...",autoFocus:!0,autoComplete:"off"}),q&&m.jsx("p",{className:"text-xs text-status-success mt-1",children:"OAuth token detected — uses your Claude subscription (flat rate)"}),M&&m.jsx("p",{className:"text-xs text-status-warning mt-1",children:"API key detected — billed per-token from your Anthropic API account"})]}),m.jsxs("div",{children:[m.jsx("label",{htmlFor:"label",className:"block text-sm font-medium text-text-secondary mb-2",children:"Label"}),m.jsx("input",{id:"label",type:"text",value:d,onChange:W=>g(W.target.value.replace(/\s+/g,"-").toLowerCase()),className:"input",placeholder:"default",autoComplete:"off"}),m.jsx("p",{className:"text-xs text-text-tertiary mt-1",children:'A name for this credential. Use different labels to store multiple credentials (e.g., "subscription", "api-batch").'})]}),y&&m.jsx("p",{className:"text-sm text-status-error",children:y}),m.jsx("button",{type:"submit",className:"btn-primary w-full",disabled:w,children:w?"Validating...":"Connect"}),m.jsx("a",{href:"/",className:"block text-center text-sm text-text-tertiary hover:text-text-secondary",children:"Cancel"})]}),m.jsxs("div",{className:"mt-6 space-y-3 text-xs text-text-tertiary",children:[m.jsxs("div",{children:[m.jsx("span",{className:"font-medium text-text-secondary",children:"Recommended:"})," ","Run"," ",m.jsx("code",{className:"px-1 py-0.5 bg-surface-sunken rounded text-[11px]",children:"claude setup-token"})," ","in your terminal to generate an OAuth token that uses your subscription."]}),m.jsxs("div",{children:[m.jsx("span",{className:"font-medium text-text-secondary",children:"Alternative:"})," ","Use an API key from"," ",m.jsx("a",{href:"https://console.anthropic.com/settings/keys",target:"_blank",rel:"noopener noreferrer",className:"text-accent-secondary hover:underline",children:"console.anthropic.com"})," ","(billed per-token)."]})]})]})})}function So({roleTypes:r,roleNames:n,redirectTo:s="/"}){const{isSuperAdmin:a,hasRole:o,hasRoleType:f}=ji();return a?m.jsx(Ma,{}):r&&r.some(h=>f(h))?m.jsx(Ma,{}):n&&n.some(h=>o(h))?m.jsx(Ma,{}):m.jsx(cs,{to:s,replace:!0})}function B2({redirectTo:r="/"}){var a;const{data:n,isLoading:s}=Qg();return s||!n?null:(a=n.ai)!=null&&a.enabled?m.jsx(Ma,{}):m.jsx(cs,{to:r,replace:!0})}const L2=T.lazy(()=>_e(()=>import("./ProcessesListPage-DOzeduP3.js"),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15]),import.meta.url).then(r=>({default:r.ProcessesListPage}))),H2=T.lazy(()=>_e(()=>import("./ProcessDetailPage-BjkLfyrm.js"),__vite__mapDeps([16,1,2,4,17,13,18,15,9,6,19,20,21]),import.meta.url).then(r=>({default:r.ProcessDetailPage}))),P2=T.lazy(()=>_e(()=>import("./McpOverview-CPD6NRGt.js"),__vite__mapDeps([22,1,23,24,25,26,12,13,27,6]),import.meta.url).then(r=>({default:r.McpOverview}))),$2=T.lazy(()=>_e(()=>import("./McpRunsPage-BFards4K.js"),__vite__mapDeps([28,1,24,25,5,6,29,26,7,8,15,13,9,30,12,11,10,14,31]),import.meta.url).then(r=>({default:r.McpRunsPage}))),Y2=T.lazy(()=>_e(()=>import("./McpRunDetailPage-Cv43tkjz.js"),__vite__mapDeps([32,1,24,18,12,13,33,6,34,35,14,36,37,11]),import.meta.url).then(r=>({default:r.McpRunDetailPage}))),G2=T.lazy(()=>_e(()=>import("./McpQueryPage-BWf45EYD.js"),__vite__mapDeps([38,1,12,13,7,8,11,10,14,9,30,15,31,5,6,4,39]),import.meta.url).then(r=>({default:r.McpQueryPage}))),V2=T.lazy(()=>_e(()=>import("./McpQueryDetailPage-YyqXw6Dt.js"),__vite__mapDeps([40,1,12,13,18,39,6,25,4,41,34,24,3,2,42,43,44,45,46,47,33,48,36]),import.meta.url).then(r=>({default:r.McpQueryDetailPage}))),F2=T.lazy(()=>_e(()=>import("./EscalationsOverview-BfjW6haL.js"),__vite__mapDeps([49,1,4,12,13,27,6]),import.meta.url).then(r=>({default:r.EscalationsOverview}))),J2=T.lazy(()=>_e(()=>import("./AvailableEscalationsPage-Cqy5ECm4.js"),__vite__mapDeps([50,1,4,51,5,6,7,8,10,12,13,52,53,54,21,55,11,56,19,15,9,57,31,14]),import.meta.url).then(r=>({default:r.AvailableEscalationsPage}))),I2=T.lazy(()=>_e(()=>import("./OperatorDashboard-BJZxuOKI.js"),__vite__mapDeps([58,1,4,51,5,6,7,8,12,13,10,31,55,11,56,19,15,9,57,14]),import.meta.url).then(r=>({default:r.OperatorDashboard}))),Q2=T.lazy(()=>_e(()=>import("./index-BUu3WKvk.js"),__vite__mapDeps([59,1,35,51,12,13,57,3,4,20,21,53,52,18,19,33,6,34]),import.meta.url).then(r=>({default:r.EscalationDetailPage}))),X2=T.lazy(()=>_e(()=>import("./WorkflowsOverview-CeE7a51J.js"),__vite__mapDeps([60,1,3,4,12,13,27,6]),import.meta.url).then(r=>({default:r.WorkflowsOverview}))),K2=T.lazy(()=>_e(()=>import("./index-D0fjUKvx.js"),__vite__mapDeps([61,1,3,12,13,15,62,45,46,6]),import.meta.url).then(r=>({default:r.StartWorkflowPage}))),Z2=T.lazy(()=>_e(()=>import("./index-D0fjUKvx.js"),__vite__mapDeps([61,1,3,12,13,15,62,45,46,6]),import.meta.url).then(r=>({default:r.DurableInvokePage}))),W2=T.lazy(()=>_e(()=>import("./WorkflowsDashboard-DOaDSC98.js"),__vite__mapDeps([63,1,9,30,3,29,26,6,4,5,7,8,15,13,12,11,10,14,31]),import.meta.url).then(r=>({default:()=>r.WorkflowsDashboard({tier:"durable"})}))),eE=T.lazy(()=>_e(()=>import("./WorkflowsDashboard-DOaDSC98.js"),__vite__mapDeps([63,1,9,30,3,29,26,6,4,5,7,8,15,13,12,11,10,14,31]),import.meta.url).then(r=>({default:()=>r.WorkflowsDashboard({tier:"all"})}))),tE=T.lazy(()=>_e(()=>import("./YamlWorkflowsPage-DWvNfzji.js"),__vite__mapDeps([64,1,25,5,6,12,13,11,8,47,62,18]),import.meta.url).then(r=>({default:r.YamlWorkflowsPage}))),nE=T.lazy(()=>_e(()=>import("./GraphInvokePage-DHiGHiCk.js"),__vite__mapDeps([65,1,25,12,13,42,44,45,46,43,6,47,62]),import.meta.url).then(r=>({default:r.GraphInvokePage}))),sE=T.lazy(()=>_e(()=>import("./YamlWorkflowDetailPage-cNpR0PHg.js"),__vite__mapDeps([66,1,25,18,62,13,6]),import.meta.url).then(r=>({default:r.YamlWorkflowDetailPage}))),iE=T.lazy(()=>_e(()=>import("./TasksListPage-DtbLfUS-.js"),__vite__mapDeps([67,1,2,3,5,6,7,8,18,56,48,10,11,12,13,15]),import.meta.url).then(r=>({default:r.TasksListPage}))),rE=T.lazy(()=>_e(()=>import("./TaskDetailPage-BC9xnyLT.js"),__vite__mapDeps([68,1,2,18,56,12,13,6]),import.meta.url).then(r=>({default:r.TaskDetailPage}))),ig=T.lazy(()=>_e(()=>import("./WorkflowExecutionPage-BWCTOTXF.js"),__vite__mapDeps([69,1,3,4,35,2,12,13,34,14,18,33,6,36,37,11]),import.meta.url).then(r=>({default:r.WorkflowExecutionPage}))),aE=T.lazy(()=>_e(()=>import("./AdminDashboard-DIQEViVY.js"),__vite__mapDeps([70,1,2,4,23,17,13,6]),import.meta.url).then(r=>({default:r.AdminDashboard}))),lE=T.lazy(()=>_e(()=>import("./index-BDhEpETz.js"),__vite__mapDeps([71,1,3,7,8,11,31,5,6,12,13,72,15]),import.meta.url).then(r=>({default:r.WorkersPage}))),oE=T.lazy(()=>_e(()=>import("./index-C51Jzvoz.js"),__vite__mapDeps([73,1,3,7,8,74,54,6,11,31,5,12,13,19,72,15,51,45,46,62]),import.meta.url).then(r=>({default:r.WorkflowConfigsPage}))),rg=T.lazy(()=>_e(()=>import("./index-C51Jzvoz.js"),__vite__mapDeps([73,1,3,7,8,74,54,6,11,31,5,12,13,19,72,15,51,45,46,62]),import.meta.url).then(r=>({default:r.WorkflowConfigDetailPage}))),cE=T.lazy(()=>_e(()=>import("./index-C1p_rvkY.js"),__vite__mapDeps([75,1,23,8,74,54,6,12,13,11,10,5,76,44,45,46,47,43,31,18]),import.meta.url).then(r=>({default:r.McpServersPage}))),ag=T.lazy(()=>_e(()=>import("./index-gKm3HAgO.js"),__vite__mapDeps([77,1,23,12,13,41,6]),import.meta.url).then(r=>({default:r.McpServerDetailPage}))),uE=T.lazy(()=>_e(()=>import("./index-oulO44Iy.js"),__vite__mapDeps([78,1,21,5,6,7,8,10,11,9,74,54,31,12,13,19,46,51,48]),import.meta.url).then(r=>({default:r.UsersPage}))),fE=T.lazy(()=>_e(()=>import("./RolesPage-DSSQrGTh.js"),__vite__mapDeps([79,1,51,7,8,74,54,6,12,13,31]),import.meta.url).then(r=>({default:r.RolesPage}))),hE=T.lazy(()=>_e(()=>import("./index-BS5pcmBR.js"),__vite__mapDeps([80,1,12,13,54,6,52]),import.meta.url).then(r=>({default:r.MaintenancePage}))),dE=T.lazy(()=>_e(()=>import("./index-8C9YLM_u.js"),__vite__mapDeps([81,1,17,13,11,5,6,29,26,54,34,72,7,8,31]),import.meta.url).then(r=>({default:r.ControlPlanePage}))),mE=T.lazy(()=>_e(()=>import("./index-DSjbScPX.js"),__vite__mapDeps([82,1,6,5,29,26,7,8,10,11,9,12,13,14]),import.meta.url).then(r=>({default:r.StreamMessagesPage}))),pE=T.lazy(()=>_e(()=>import("./CredentialsPage-B4sXGLRY.js"),__vite__mapDeps([83,1,12,13,48,74,54,6]),import.meta.url).then(r=>({default:r.CredentialsPage}))),gE=T.lazy(()=>_e(()=>import("./index-B216fPN_.js"),__vite__mapDeps([84,1,6,12,13,11,14,8,85,48]),import.meta.url).then(r=>({default:r.FilesPage}))),yE=T.lazy(()=>_e(()=>import("./index-D3SjB3UM.js"),__vite__mapDeps([86,1,12,13,11,14,10,8,85,48,87,41,6]),import.meta.url).then(r=>({default:r.KnowledgePage}))),bE=T.lazy(()=>_e(()=>import("./HomePage-jckQolbx.js"),__vite__mapDeps([88,1,3,24,26,2,4,19,13,15,14,6]),import.meta.url).then(r=>({default:r.HomePage}))),xE=T.lazy(()=>_e(()=>import("./AgentsPage-BNlAkEIK.js"),__vite__mapDeps([89,1,90,4,5,6,7,8,10,11,12,13,14]),import.meta.url).then(r=>({default:r.AgentsPage}))),vE=T.lazy(()=>_e(()=>import("./AgentDetailPage-_a4tKaM3.js"),__vite__mapDeps([91,1,90,92,13,4,15,6]),import.meta.url).then(r=>({default:r.AgentDetailPage}))),lg=T.lazy(()=>_e(()=>import("./AgentConfigPage-Caf5-th-.js"),__vite__mapDeps([93,1,90,92,13,12,87,44,45,46,3,25,94,95,15,6]),import.meta.url).then(r=>({default:r.AgentConfigPage}))),_E=T.lazy(()=>_e(()=>import("./CapabilitiesPage-BIdG9RTG.js"),__vite__mapDeps([96,1,94,76,23,44,45,46,13,47,6,43,12]),import.meta.url).then(r=>({default:r.CapabilitiesPage}))),wE=T.lazy(()=>_e(()=>import("./TopicsPage-COX2kDKK.js"),__vite__mapDeps([97,1,95,5,6,7,8,10,11,12,13,14]),import.meta.url).then(r=>({default:r.TopicsPage}))),SE=T.lazy(()=>_e(()=>import("./TopicDetailPage-CDtlXyut.js"),__vite__mapDeps([98,1,95,14,13,6]),import.meta.url).then(r=>({default:r.TopicDetailPage})));function EE(){return m.jsxs("div",{className:"animate-pulse space-y-4",children:[m.jsx("div",{className:"h-8 bg-surface-sunken rounded w-48"}),m.jsx("div",{className:"h-40 bg-surface-sunken rounded"})]})}function xe({children:r}){return m.jsx(T.Suspense,{fallback:m.jsx(EE,{}),children:m.jsx("div",{className:"animate-page-enter",children:r})})}const dy=new Ex({defaultOptions:{queries:{staleTime:1e4,retry:(r,n)=>n instanceof Error&&n.message==="Session expired"?!1:r<1}}});window.addEventListener("auth:unauthorized",()=>{dy.clear(),sessionStorage.removeItem("lt_token"),sessionStorage.removeItem("lt_credentials"),sessionStorage.removeItem("lt_user_info");const n=`${window.__LT_BASE__||""}/login`;window.location.pathname!==n&&(window.location.href=`${n}?returnTo=${encodeURIComponent(window.location.pathname)}`)});const AE=Ox([{path:"/login",element:m.jsx(U2,{})},{path:"/connect/anthropic",element:m.jsx(sg,{})},{path:"/connect/:provider",element:m.jsx(sg,{})},{path:"/",element:m.jsx(D2,{}),children:[{index:!0,element:m.jsx(xe,{children:m.jsx(bE,{})})},{path:"processes/all",element:m.jsx(xe,{children:m.jsx(L2,{})})},{path:"processes/detail/:originId",element:m.jsx(xe,{children:m.jsx(H2,{})})},{path:"credentials",element:m.jsx(xe,{children:m.jsx(pE,{})})},{path:"connections",element:m.jsx(cs,{to:"/credentials",replace:!0})},{path:"escalations",element:m.jsx(xe,{children:m.jsx(F2,{})})},{path:"escalations/available",element:m.jsx(xe,{children:m.jsx(J2,{})})},{path:"escalations/queue",element:m.jsx(xe,{children:m.jsx(I2,{})})},{path:"escalations/detail/:id",element:m.jsx(xe,{children:m.jsx(Q2,{})})},{path:"capabilities",element:m.jsx(xe,{children:m.jsx(_E,{})})},{path:"agents",element:m.jsx(xe,{children:m.jsx(xE,{})})},{path:"agents/new",element:m.jsx(xe,{children:m.jsx(lg,{})})},{path:"agents/:id",element:m.jsx(xe,{children:m.jsx(vE,{})})},{path:"agents/:id/edit",element:m.jsx(xe,{children:m.jsx(lg,{})})},{path:"topics",element:m.jsx(xe,{children:m.jsx(wE,{})})},{path:"topics/:topic",element:m.jsx(xe,{children:m.jsx(SE,{})})},{element:m.jsx(So,{roleTypes:["superadmin"],roleNames:["engineer"]}),children:[{path:"workflows",element:m.jsx(xe,{children:m.jsx(X2,{})})},{path:"workflows/executions",element:m.jsx(xe,{children:m.jsx(eE,{})})},{path:"workflows/durable/executions",element:m.jsx(xe,{children:m.jsx(W2,{})})},{path:"workflows/durable/executions/:workflowId",element:m.jsx(xe,{children:m.jsx(ig,{})})},{path:"workflows/tasks",element:m.jsx(xe,{children:m.jsx(iE,{})})},{path:"workflows/tasks/detail/:id",element:m.jsx(xe,{children:m.jsx(rE,{})})},{path:"workflows/executions/:workflowId",element:m.jsx(xe,{children:m.jsx(ig,{})})},{path:"workflows/start",element:m.jsx(xe,{children:m.jsx(K2,{})})},{path:"workflows/durable/invoke",element:m.jsx(xe,{children:m.jsx(Z2,{})})},{path:"workflows/cron",element:m.jsx(cs,{to:"/workflows/start?mode=schedule",replace:!0})},{path:"workflows/workers",element:m.jsx(xe,{children:m.jsx(lE,{})})},{path:"workflows/registry",element:m.jsx(xe,{children:m.jsx(oE,{})})},{path:"workflows/registry/new",element:m.jsx(xe,{children:m.jsx(rg,{})})},{path:"workflows/registry/:workflowType",element:m.jsx(xe,{children:m.jsx(rg,{})})}]},{element:m.jsx(So,{roleTypes:["superadmin"],roleNames:["engineer"]}),children:[{path:"mcp/workflows",element:m.jsx(xe,{children:m.jsx(tE,{})})},{path:"mcp/workflows/invoke",element:m.jsx(xe,{children:m.jsx(nE,{})})},{path:"mcp/workflows/:id",element:m.jsx(xe,{children:m.jsx(sE,{})})},{path:"mcp/executions",element:m.jsx(xe,{children:m.jsx($2,{})})},{path:"mcp/executions/:jobId",element:m.jsx(xe,{children:m.jsx(Y2,{})})},{path:"files",element:m.jsx(xe,{children:m.jsx(gE,{})})},{path:"knowledge",element:m.jsx(xe,{children:m.jsx(yE,{})})},{element:m.jsx(B2,{}),children:[{path:"mcp",element:m.jsx(xe,{children:m.jsx(P2,{})})},{path:"mcp/queries",element:m.jsx(xe,{children:m.jsx(G2,{})})},{path:"mcp/queries/:workflowId",element:m.jsx(xe,{children:m.jsx(V2,{})})},{path:"mcp/tools",element:m.jsx(cs,{to:"/mcp/servers",replace:!0})},{path:"mcp/servers",element:m.jsx(xe,{children:m.jsx(cE,{})})},{path:"mcp/servers/new",element:m.jsx(xe,{children:m.jsx(ag,{})})},{path:"mcp/servers/:serverId",element:m.jsx(xe,{children:m.jsx(ag,{})})}]}]},{element:m.jsx(So,{roleTypes:["admin","superadmin"],roleNames:["engineer"]}),children:[{path:"admin",element:m.jsx(xe,{children:m.jsx(aE,{})})},{path:"admin/users",element:m.jsx(xe,{children:m.jsx(uE,{})})}]},{element:m.jsx(So,{roleTypes:["superadmin"],roleNames:["engineer"]}),children:[{path:"admin/bots",element:m.jsx(cs,{to:"/admin/users?tab=service-accounts",replace:!0})},{path:"admin/escalation-chains",element:m.jsx(cs,{to:"/admin/roles",replace:!0})},{path:"admin/roles",element:m.jsx(xe,{children:m.jsx(fE,{})})},{path:"admin/maintenance",element:m.jsx(xe,{children:m.jsx(hE,{})})},{path:"admin/controlplane",element:m.jsx(xe,{children:m.jsx(dE,{})})},{path:"admin/streams",element:m.jsx(xe,{children:m.jsx(mE,{})})}]}]}],{basename:window.__LT_BASE__||"/"});function jE(){return m.jsx(Ax,{client:dy,children:m.jsx(uv,{children:m.jsx(mw,{children:m.jsx(Tx,{router:AE})})})})}av.createRoot(document.getElementById("root")).render(m.jsx(T.StrictMode,{children:m.jsx(jE,{})}));export{ph as A,JE as B,dh as C,O2 as D,IE as E,Wg as F,pg as G,Iw as J,Wt as L,d_ as N,hy as O,qw as S,FE as a,p_ as b,j2 as c,Xe as d,DE as e,S2 as f,qE as g,BE as h,ME as i,ji as j,HE as k,PE as l,$E as m,YE as n,GE as o,RE as p,xw as q,bw as r,Ig as s,UE as t,Qg as u,zE as v,LE as w,uy as x,fy as y,VE as z};
|
|
63
|
+
//# sourceMappingURL=index-eWNx4UQ8.js.map
|