@hotmeshio/long-tail 0.4.4 → 0.4.5
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/build/api/agent-subscriptions.js +14 -0
- package/build/lib/events/index.js +3 -0
- package/build/lib/events/nats.js +2 -0
- package/build/services/agent/index.js +14 -0
- package/build/services/agent/trigger-registry.d.ts +2 -0
- package/build/services/agent/trigger-registry.js +37 -8
- package/build/start/workers.js +3 -0
- package/build/types/events.d.ts +1 -1
- package/dashboard/dist/assets/AdminDashboard-ntLz5Pro.js +2 -0
- package/dashboard/dist/assets/{AdminDashboard-DISq0Tz8.js.map → AdminDashboard-ntLz5Pro.js.map} +1 -1
- package/dashboard/dist/assets/AgentConfigPage-D27vWOI6.js +16 -0
- package/dashboard/dist/assets/{AgentConfigPage-DqaJpB3K.js.map → AgentConfigPage-D27vWOI6.js.map} +1 -1
- package/dashboard/dist/assets/AgentDetailPage-Cm2KFR4O.js +4 -0
- package/dashboard/dist/assets/{AgentDetailPage-BPzPk2GC.js.map → AgentDetailPage-Cm2KFR4O.js.map} +1 -1
- package/dashboard/dist/assets/AgentsPage-_ptA-0YO.js +2 -0
- package/dashboard/dist/assets/{AgentsPage-CLcxJWjC.js.map → AgentsPage-_ptA-0YO.js.map} +1 -1
- package/dashboard/dist/assets/AvailableEscalationsPage-bdPqEzbx.js +2 -0
- package/dashboard/dist/assets/{AvailableEscalationsPage-hOcjAAIj.js.map → AvailableEscalationsPage-bdPqEzbx.js.map} +1 -1
- package/dashboard/dist/assets/BotPicker-CYfFMpkY.js +2 -0
- package/dashboard/dist/assets/{BotPicker-DuAZgHbJ.js.map → BotPicker-CYfFMpkY.js.map} +1 -1
- package/dashboard/dist/assets/CapabilitiesPage-M7-ZTFNV.js +2 -0
- package/dashboard/dist/assets/{CapabilitiesPage-PRel6TXd.js.map → CapabilitiesPage-M7-ZTFNV.js.map} +1 -1
- package/dashboard/dist/assets/CollapsibleSection-DU5KAtQ-.js +2 -0
- package/dashboard/dist/assets/{CollapsibleSection-DnoUFQVf.js.map → CollapsibleSection-DU5KAtQ-.js.map} +1 -1
- package/dashboard/dist/assets/ConfirmDeleteModal-_hW5Vc05.js +2 -0
- package/dashboard/dist/assets/{ConfirmDeleteModal-dOxidrSR.js.map → ConfirmDeleteModal-_hW5Vc05.js.map} +1 -1
- package/dashboard/dist/assets/CopyableId-DiWqv41D.js +2 -0
- package/dashboard/dist/assets/{CopyableId-D0SQ39nR.js.map → CopyableId-DiWqv41D.js.map} +1 -1
- package/dashboard/dist/assets/CredentialsPage-CmbwypSF.js +2 -0
- package/dashboard/dist/assets/{CredentialsPage-CqedUU7b.js.map → CredentialsPage-CmbwypSF.js.map} +1 -1
- package/dashboard/dist/assets/CronLabel-nycfAefc.js +2 -0
- package/dashboard/dist/assets/{CronLabel-CPEjE-mH.js.map → CronLabel-nycfAefc.js.map} +1 -1
- package/dashboard/dist/assets/CustomDurationPicker-gNZRBaHg.js +2 -0
- package/dashboard/dist/assets/{CustomDurationPicker-BIQWzbv0.js.map → CustomDurationPicker-gNZRBaHg.js.map} +1 -1
- package/dashboard/dist/assets/DataTable-DGerT2ZM.js +2 -0
- package/dashboard/dist/assets/{DataTable-D9yuBv0w.js.map → DataTable-DGerT2ZM.js.map} +1 -1
- package/dashboard/dist/assets/DropZone-vNcqMd05.js +2 -0
- package/dashboard/dist/assets/{DropZone-e5EOL5gC.js.map → DropZone-vNcqMd05.js.map} +1 -1
- package/dashboard/dist/assets/ElapsedCell-CdvQbtve.js +2 -0
- package/dashboard/dist/assets/{ElapsedCell-CzVjr74Y.js.map → ElapsedCell-CdvQbtve.js.map} +1 -1
- package/dashboard/dist/assets/EmptyState-DMldv8c5.js +2 -0
- package/dashboard/dist/assets/{EmptyState-BcsfPq9T.js.map → EmptyState-DMldv8c5.js.map} +1 -1
- package/dashboard/dist/assets/EscalationsOverview-BNENCL_2.js +2 -0
- package/dashboard/dist/assets/{EscalationsOverview-Bcrb44xJ.js.map → EscalationsOverview-BNENCL_2.js.map} +1 -1
- package/dashboard/dist/assets/EventTable-BqDAyXyc.js +2 -0
- package/dashboard/dist/assets/{EventTable-CGfJU7e1.js.map → EventTable-BqDAyXyc.js.map} +1 -1
- package/dashboard/dist/assets/EventTopicPill-CnHFBglc.js +2 -0
- package/dashboard/dist/assets/{EventTopicPill-xJJnxvlP.js.map → EventTopicPill-CnHFBglc.js.map} +1 -1
- package/dashboard/dist/assets/FilterBar-TYiTtUgv.js +2 -0
- package/dashboard/dist/assets/{FilterBar-Ck4K4rzu.js.map → FilterBar-TYiTtUgv.js.map} +1 -1
- package/dashboard/dist/assets/HomePage-fterfLKH.js +2 -0
- package/dashboard/dist/assets/{HomePage-BIzUcGW9.js.map → HomePage-fterfLKH.js.map} +1 -1
- package/dashboard/dist/assets/ListToolbar-BO5Igi6v.js +2 -0
- package/dashboard/dist/assets/{ListToolbar-DNAGFe14.js.map → ListToolbar-BO5Igi6v.js.map} +1 -1
- package/dashboard/dist/assets/McpOverview-BQokGg0z.js +2 -0
- package/dashboard/dist/assets/{McpOverview-BpYk21es.js.map → McpOverview-BQokGg0z.js.map} +1 -1
- package/dashboard/dist/assets/McpQueryDetailPage-0WOp2n_j.js +5 -0
- package/dashboard/dist/assets/{McpQueryDetailPage-DlrZiSuL.js.map → McpQueryDetailPage-0WOp2n_j.js.map} +1 -1
- package/dashboard/dist/assets/McpQueryPage-DUey_h9J.js +2 -0
- package/dashboard/dist/assets/{McpQueryPage-COfPssO7.js.map → McpQueryPage-DUey_h9J.js.map} +1 -1
- package/dashboard/dist/assets/McpRunDetailPage-Cv4qyr91.js +2 -0
- package/dashboard/dist/assets/{McpRunDetailPage-Cra0nQSw.js.map → McpRunDetailPage-Cv4qyr91.js.map} +1 -1
- package/dashboard/dist/assets/McpRunsPage-B3R6KZ61.js +2 -0
- package/dashboard/dist/assets/{McpRunsPage-BlgcGN3k.js.map → McpRunsPage-B3R6KZ61.js.map} +1 -1
- package/dashboard/dist/assets/Modal-Qe8lW7gQ.js +2 -0
- package/dashboard/dist/assets/{Modal-DEODGeqx.js.map → Modal-Qe8lW7gQ.js.map} +1 -1
- package/dashboard/dist/assets/OperatorDashboard-dldvzjcg.js +2 -0
- package/dashboard/dist/assets/{OperatorDashboard-BbO6cWzb.js.map → OperatorDashboard-dldvzjcg.js.map} +1 -1
- package/dashboard/dist/assets/PageHeader-DF4BeEm4.js +2 -0
- package/dashboard/dist/assets/{PageHeader-B_gV_jKk.js.map → PageHeader-DF4BeEm4.js.map} +1 -1
- package/dashboard/dist/assets/PageHeaderWithStats-BQZw6BgA.js +2 -0
- package/dashboard/dist/assets/{PageHeaderWithStats-D0I0nrnx.js.map → PageHeaderWithStats-BQZw6BgA.js.map} +1 -1
- package/dashboard/dist/assets/PriorityBadge-DMyB3WLZ.js +2 -0
- package/dashboard/dist/assets/{PriorityBadge-DfQY9St9.js.map → PriorityBadge-DMyB3WLZ.js.map} +1 -1
- package/dashboard/dist/assets/ProcessDetailPage-Beo-QVL-.js +2 -0
- package/dashboard/dist/assets/{ProcessDetailPage-s_iV8ICg.js.map → ProcessDetailPage-Beo-QVL-.js.map} +1 -1
- package/dashboard/dist/assets/ProcessesListPage-C_ars8gp.js +2 -0
- package/dashboard/dist/assets/{ProcessesListPage-MnLMnxAa.js.map → ProcessesListPage-C_ars8gp.js.map} +1 -1
- package/dashboard/dist/assets/RolePill-DrBZ7JJj.js +2 -0
- package/dashboard/dist/assets/{RolePill-BOBytzrP.js.map → RolePill-DrBZ7JJj.js.map} +1 -1
- package/dashboard/dist/assets/RolesPage-DgSXFFGL.js +2 -0
- package/dashboard/dist/assets/{RolesPage-BH7KASM7.js.map → RolesPage-DgSXFFGL.js.map} +1 -1
- package/dashboard/dist/assets/RowActions-QcakGbVA.js +2 -0
- package/dashboard/dist/assets/{RowActions-Dg-Fsm5O.js.map → RowActions-QcakGbVA.js.map} +1 -1
- package/dashboard/dist/assets/RunAsSelector-CYMeZwrM.js +2 -0
- package/dashboard/dist/assets/{RunAsSelector-_QbJKhlo.js.map → RunAsSelector-CYMeZwrM.js.map} +1 -1
- package/dashboard/dist/assets/ServerName-D5NKD06M.js +2 -0
- package/dashboard/dist/assets/{ServerName-uqa4eBqm.js.map → ServerName-D5NKD06M.js.map} +1 -1
- package/dashboard/dist/assets/StatCard-PZQmmCHK.js +2 -0
- package/dashboard/dist/assets/{StatCard-DlgF0CJC.js.map → StatCard-PZQmmCHK.js.map} +1 -1
- package/dashboard/dist/assets/StatusBadge-ME2R6a7K.js +2 -0
- package/dashboard/dist/assets/{StatusBadge-XQlNFwmH.js.map → StatusBadge-ME2R6a7K.js.map} +1 -1
- package/dashboard/dist/assets/StepIndicator-CDDVahOz.js +2 -0
- package/dashboard/dist/assets/{StepIndicator-CuUIGxKk.js.map → StepIndicator-CDDVahOz.js.map} +1 -1
- package/dashboard/dist/assets/StickyPagination-Ddy93Q5I.js +2 -0
- package/dashboard/dist/assets/{StickyPagination-F9FZsRy9.js.map → StickyPagination-Ddy93Q5I.js.map} +1 -1
- package/dashboard/dist/assets/SwimlaneTimeline-CYYA8nd9.js +2 -0
- package/dashboard/dist/assets/{SwimlaneTimeline-og79Llvs.js.map → SwimlaneTimeline-CYYA8nd9.js.map} +1 -1
- package/dashboard/dist/assets/TagInput-B45Dm3IW.js +2 -0
- package/dashboard/dist/assets/{TagInput-D3f11sbM.js.map → TagInput-B45Dm3IW.js.map} +1 -1
- package/dashboard/dist/assets/TaskDetailPage-CoZFkJ6d.js +2 -0
- package/dashboard/dist/assets/TaskDetailPage-CoZFkJ6d.js.map +1 -0
- package/dashboard/dist/assets/TaskQueuePill-BJRUjVDv.js +2 -0
- package/dashboard/dist/assets/{TaskQueuePill-Bc45J7X1.js.map → TaskQueuePill-BJRUjVDv.js.map} +1 -1
- package/dashboard/dist/assets/TasksListPage-Czu08px3.js +2 -0
- package/dashboard/dist/assets/{TasksListPage-BYj3OqUi.js.map → TasksListPage-Czu08px3.js.map} +1 -1
- package/dashboard/dist/assets/TimeAgo-CJ56IUy6.js +2 -0
- package/dashboard/dist/assets/{TimeAgo-W7TdJpV-.js.map → TimeAgo-CJ56IUy6.js.map} +1 -1
- package/dashboard/dist/assets/TimestampCell-QtcYZ9Jx.js +2 -0
- package/dashboard/dist/assets/{TimestampCell-Bi2nc9Q_.js.map → TimestampCell-QtcYZ9Jx.js.map} +1 -1
- package/dashboard/dist/assets/ToolPill-DpDv3FwI.js +2 -0
- package/dashboard/dist/assets/{ToolPill-CuoXcmhv.js.map → ToolPill-DpDv3FwI.js.map} +1 -1
- package/dashboard/dist/assets/ToolTestPanel-BzFOwzd_.js +2 -0
- package/dashboard/dist/assets/{ToolTestPanel-Dl3C53zb.js.map → ToolTestPanel-BzFOwzd_.js.map} +1 -1
- package/dashboard/dist/assets/TopicDetailPage-DwShZbh9.js +9 -0
- package/dashboard/dist/assets/{TopicDetailPage-CjaZn4WP.js.map → TopicDetailPage-DwShZbh9.js.map} +1 -1
- package/dashboard/dist/assets/TopicsPage-DKXlpZl_.js +2 -0
- package/dashboard/dist/assets/{TopicsPage-BfsJEC1p.js.map → TopicsPage-DKXlpZl_.js.map} +1 -1
- package/dashboard/dist/assets/UserName-zlR1so37.js +2 -0
- package/dashboard/dist/assets/{UserName-b4baWHM_.js.map → UserName-zlR1so37.js.map} +1 -1
- package/dashboard/dist/assets/WorkflowExecutionPage-BMNIxeJB.js +2 -0
- package/dashboard/dist/assets/{WorkflowExecutionPage-BGmJnXnk.js.map → WorkflowExecutionPage-BMNIxeJB.js.map} +1 -1
- package/dashboard/dist/assets/WorkflowPill-B5B3yGlh.js +2 -0
- package/dashboard/dist/assets/{WorkflowPill-Bg2-0Hkg.js.map → WorkflowPill-B5B3yGlh.js.map} +1 -1
- package/dashboard/dist/assets/WorkflowsDashboard-BlAPZbQZ.js +2 -0
- package/dashboard/dist/assets/{WorkflowsDashboard-BzH7jMRu.js.map → WorkflowsDashboard-BlAPZbQZ.js.map} +1 -1
- package/dashboard/dist/assets/WorkflowsOverview-NnPi6rwS.js +2 -0
- package/dashboard/dist/assets/{WorkflowsOverview-BcUgBvjD.js.map → WorkflowsOverview-NnPi6rwS.js.map} +1 -1
- package/dashboard/dist/assets/YamlWorkflowsPage-C4mZum6x.js +2 -0
- package/dashboard/dist/assets/{YamlWorkflowsPage-OhpCQJ0l.js.map → YamlWorkflowsPage-C4mZum6x.js.map} +1 -1
- package/dashboard/dist/assets/{agents-Ce3HmPz4.js → agents-B5wvILeV.js} +2 -2
- package/dashboard/dist/assets/{agents-Ce3HmPz4.js.map → agents-B5wvILeV.js.map} +1 -1
- package/dashboard/dist/assets/{bots-B0BomNnf.js → bots-BPlouRDm.js} +2 -2
- package/dashboard/dist/assets/{bots-B0BomNnf.js.map → bots-BPlouRDm.js.map} +1 -1
- package/dashboard/dist/assets/capabilities-DkvRG09b.js +2 -0
- package/dashboard/dist/assets/{capabilities-t-w5N9K9.js.map → capabilities-DkvRG09b.js.map} +1 -1
- package/dashboard/dist/assets/{controlplane-BrtAZnJM.js → controlplane-0m_rA-UW.js} +2 -2
- package/dashboard/dist/assets/{controlplane-BrtAZnJM.js.map → controlplane-0m_rA-UW.js.map} +1 -1
- package/dashboard/dist/assets/escalation-CfIAIUg2.js +2 -0
- package/dashboard/dist/assets/{escalation-DilnDxw2.js.map → escalation-CfIAIUg2.js.map} +1 -1
- package/dashboard/dist/assets/escalation-columns-CLIdxlbe.js +2 -0
- package/dashboard/dist/assets/{escalation-columns-C0slywOY.js.map → escalation-columns-CLIdxlbe.js.map} +1 -1
- package/dashboard/dist/assets/helpers-prGqC38M.js +2 -0
- package/dashboard/dist/assets/{helpers-BMvPqQr8.js.map → helpers-prGqC38M.js.map} +1 -1
- package/dashboard/dist/assets/index-4T7Z_gQ4.js +281 -0
- package/dashboard/dist/assets/index-4T7Z_gQ4.js.map +1 -0
- package/dashboard/dist/assets/index-BR3SwTNI.js +2 -0
- package/dashboard/dist/assets/{index-pIMl0mYp.js.map → index-BR3SwTNI.js.map} +1 -1
- package/dashboard/dist/assets/index-BWKIigEk.js +2 -0
- package/dashboard/dist/assets/{index-qNuxC8kX.js.map → index-BWKIigEk.js.map} +1 -1
- package/dashboard/dist/assets/index-BgVuyWhi.js +15 -0
- package/dashboard/dist/assets/{index-D_wqdvG_.js.map → index-BgVuyWhi.js.map} +1 -1
- package/dashboard/dist/assets/index-C0sDEKdo.js +2 -0
- package/dashboard/dist/assets/{index-30-pN97P.js.map → index-C0sDEKdo.js.map} +1 -1
- package/dashboard/dist/assets/index-C2MJzu6J.js +2 -0
- package/dashboard/dist/assets/{index-f-0Duls3.js.map → index-C2MJzu6J.js.map} +1 -1
- package/dashboard/dist/assets/index-CFoddJDr.js +6 -0
- package/dashboard/dist/assets/{index-Ck2QdJXT.js.map → index-CFoddJDr.js.map} +1 -1
- package/dashboard/dist/assets/index-CrMxD5Ib.js +6 -0
- package/dashboard/dist/assets/{index-DPW_i3fH.js.map → index-CrMxD5Ib.js.map} +1 -1
- package/dashboard/dist/assets/index-CuY5hPYB.js +2 -0
- package/dashboard/dist/assets/{index-DnsVYMMg.js.map → index-CuY5hPYB.js.map} +1 -1
- package/dashboard/dist/assets/index-CwkJBn87.js +2 -0
- package/dashboard/dist/assets/{index-Bl9wzQ8Q.js.map → index-CwkJBn87.js.map} +1 -1
- package/dashboard/dist/assets/index-DeL84Cag.js +2 -0
- package/dashboard/dist/assets/{index-DNmlrCAp.js.map → index-DeL84Cag.js.map} +1 -1
- package/dashboard/dist/assets/index-DqeLbz6j.js +2 -0
- package/dashboard/dist/assets/{index-BxOuF0hm.js.map → index-DqeLbz6j.js.map} +1 -1
- package/dashboard/dist/assets/index-P9huxx3-.js +2 -0
- package/dashboard/dist/assets/{index-H5TlloTk.js.map → index-P9huxx3-.js.map} +1 -1
- package/dashboard/dist/assets/{knowledge-D01NdF5h.js → knowledge-CUZxyRCO.js} +2 -2
- package/dashboard/dist/assets/{knowledge-D01NdF5h.js.map → knowledge-CUZxyRCO.js.map} +1 -1
- package/dashboard/dist/assets/{mcp-CjXjDZI0.js → mcp-B5VQPoF3.js} +2 -2
- package/dashboard/dist/assets/{mcp-CjXjDZI0.js.map → mcp-B5VQPoF3.js.map} +1 -1
- package/dashboard/dist/assets/{mcp-query-LlKQcWLJ.js → mcp-query-Ba5Zj3yg.js} +2 -2
- package/dashboard/dist/assets/{mcp-query-LlKQcWLJ.js.map → mcp-query-Ba5Zj3yg.js.map} +1 -1
- package/dashboard/dist/assets/{mcp-runs-C0C54hU6.js → mcp-runs-CAiEr5Fc.js} +2 -2
- package/dashboard/dist/assets/{mcp-runs-C0C54hU6.js.map → mcp-runs-CAiEr5Fc.js.map} +1 -1
- package/dashboard/dist/assets/namespaces-sVr5scma.js +2 -0
- package/dashboard/dist/assets/{namespaces-6qWDXXJV.js.map → namespaces-sVr5scma.js.map} +1 -1
- package/dashboard/dist/assets/{roles-Dtj0uabn.js → roles-E_bA4e0f.js} +2 -2
- package/dashboard/dist/assets/{roles-Dtj0uabn.js.map → roles-E_bA4e0f.js.map} +1 -1
- package/dashboard/dist/assets/{tasks-BevFBjZq.js → tasks-CL6Gv8jB.js} +2 -2
- package/dashboard/dist/assets/{tasks-BevFBjZq.js.map → tasks-CL6Gv8jB.js.map} +1 -1
- package/dashboard/dist/assets/{topics-BMG5tx2g.js → topics-DbtPHERP.js} +2 -2
- package/dashboard/dist/assets/{topics-BMG5tx2g.js.map → topics-DbtPHERP.js.map} +1 -1
- package/dashboard/dist/assets/{useCollapsedSections-BU5HULGs.js → useCollapsedSections-CGNA5oKV.js} +2 -2
- package/dashboard/dist/assets/{useCollapsedSections-BU5HULGs.js.map → useCollapsedSections-CGNA5oKV.js.map} +1 -1
- package/dashboard/dist/assets/{useEventHooks-CPyvFlVR.js → useEventHooks-C6c618cj.js} +2 -2
- package/dashboard/dist/assets/{useEventHooks-CPyvFlVR.js.map → useEventHooks-C6c618cj.js.map} +1 -1
- package/dashboard/dist/assets/{useExpandedRows-CkcEntB-.js → useExpandedRows-Cg9iq6Vy.js} +2 -2
- package/dashboard/dist/assets/{useExpandedRows-CkcEntB-.js.map → useExpandedRows-Cg9iq6Vy.js.map} +1 -1
- package/dashboard/dist/assets/{useFilterParams-DZCAaBC7.js → useFilterParams-CGRYFw_A.js} +2 -2
- package/dashboard/dist/assets/{useFilterParams-DZCAaBC7.js.map → useFilterParams-CGRYFw_A.js.map} +1 -1
- package/dashboard/dist/assets/{useYamlActivityEvents-Bll8NPNQ.js → useYamlActivityEvents-eK7kIUdh.js} +2 -2
- package/dashboard/dist/assets/{useYamlActivityEvents-Bll8NPNQ.js.map → useYamlActivityEvents-eK7kIUdh.js.map} +1 -1
- package/dashboard/dist/assets/{users-XZ349b0r.js → users-CCHSIAxt.js} +2 -2
- package/dashboard/dist/assets/{users-XZ349b0r.js.map → users-CCHSIAxt.js.map} +1 -1
- package/dashboard/dist/assets/{vendor-icons-B_Yla7iD.js → vendor-icons-D8-ZINAH.js} +2 -2
- package/dashboard/dist/assets/{vendor-icons-B_Yla7iD.js.map → vendor-icons-D8-ZINAH.js.map} +1 -1
- package/dashboard/dist/assets/vendor-query-DLp59M9_.js +35 -0
- package/dashboard/dist/assets/vendor-query-DLp59M9_.js.map +1 -0
- package/dashboard/dist/assets/vendor-react-Co3Y8ikm.js +26 -0
- package/dashboard/dist/assets/vendor-react-Co3Y8ikm.js.map +1 -0
- package/dashboard/dist/assets/{workflows-Do-Eiv8f.js → workflows-BNbocg_9.js} +2 -2
- package/dashboard/dist/assets/{workflows-Do-Eiv8f.js.map → workflows-BNbocg_9.js.map} +1 -1
- package/dashboard/dist/assets/{yaml-workflows-DolGRQ5f.js → yaml-workflows-Cu1FUwrc.js} +2 -2
- package/dashboard/dist/assets/{yaml-workflows-DolGRQ5f.js.map → yaml-workflows-Cu1FUwrc.js.map} +1 -1
- package/dashboard/dist/index.html +4 -4
- package/package.json +1 -1
- package/dashboard/dist/assets/AdminDashboard-DISq0Tz8.js +0 -2
- package/dashboard/dist/assets/AgentConfigPage-DqaJpB3K.js +0 -16
- package/dashboard/dist/assets/AgentDetailPage-BPzPk2GC.js +0 -4
- package/dashboard/dist/assets/AgentsPage-CLcxJWjC.js +0 -2
- package/dashboard/dist/assets/AvailableEscalationsPage-hOcjAAIj.js +0 -2
- package/dashboard/dist/assets/BotPicker-DuAZgHbJ.js +0 -2
- package/dashboard/dist/assets/CapabilitiesPage-PRel6TXd.js +0 -2
- package/dashboard/dist/assets/CollapsibleSection-DnoUFQVf.js +0 -2
- package/dashboard/dist/assets/ConfirmDeleteModal-dOxidrSR.js +0 -2
- package/dashboard/dist/assets/CopyableId-D0SQ39nR.js +0 -2
- package/dashboard/dist/assets/CredentialsPage-CqedUU7b.js +0 -2
- package/dashboard/dist/assets/CronLabel-CPEjE-mH.js +0 -2
- package/dashboard/dist/assets/CustomDurationPicker-BIQWzbv0.js +0 -2
- package/dashboard/dist/assets/DataTable-D9yuBv0w.js +0 -2
- package/dashboard/dist/assets/DropZone-e5EOL5gC.js +0 -2
- package/dashboard/dist/assets/ElapsedCell-CzVjr74Y.js +0 -2
- package/dashboard/dist/assets/EmptyState-BcsfPq9T.js +0 -2
- package/dashboard/dist/assets/EscalationsOverview-Bcrb44xJ.js +0 -2
- package/dashboard/dist/assets/EventTable-CGfJU7e1.js +0 -2
- package/dashboard/dist/assets/EventTopicPill-xJJnxvlP.js +0 -2
- package/dashboard/dist/assets/FilterBar-Ck4K4rzu.js +0 -2
- package/dashboard/dist/assets/HomePage-BIzUcGW9.js +0 -2
- package/dashboard/dist/assets/ListToolbar-DNAGFe14.js +0 -2
- package/dashboard/dist/assets/McpOverview-BpYk21es.js +0 -2
- package/dashboard/dist/assets/McpQueryDetailPage-DlrZiSuL.js +0 -5
- package/dashboard/dist/assets/McpQueryPage-COfPssO7.js +0 -2
- package/dashboard/dist/assets/McpRunDetailPage-Cra0nQSw.js +0 -2
- package/dashboard/dist/assets/McpRunsPage-BlgcGN3k.js +0 -2
- package/dashboard/dist/assets/Modal-DEODGeqx.js +0 -2
- package/dashboard/dist/assets/OperatorDashboard-BbO6cWzb.js +0 -2
- package/dashboard/dist/assets/PageHeader-B_gV_jKk.js +0 -2
- package/dashboard/dist/assets/PageHeaderWithStats-D0I0nrnx.js +0 -2
- package/dashboard/dist/assets/PriorityBadge-DfQY9St9.js +0 -2
- package/dashboard/dist/assets/ProcessDetailPage-s_iV8ICg.js +0 -2
- package/dashboard/dist/assets/ProcessesListPage-MnLMnxAa.js +0 -2
- package/dashboard/dist/assets/RolePill-BOBytzrP.js +0 -2
- package/dashboard/dist/assets/RolesPage-BH7KASM7.js +0 -2
- package/dashboard/dist/assets/RowActions-Dg-Fsm5O.js +0 -2
- package/dashboard/dist/assets/RunAsSelector-_QbJKhlo.js +0 -2
- package/dashboard/dist/assets/ServerName-uqa4eBqm.js +0 -2
- package/dashboard/dist/assets/StatCard-DlgF0CJC.js +0 -2
- package/dashboard/dist/assets/StatusBadge-XQlNFwmH.js +0 -2
- package/dashboard/dist/assets/StepIndicator-CuUIGxKk.js +0 -2
- package/dashboard/dist/assets/StickyPagination-F9FZsRy9.js +0 -2
- package/dashboard/dist/assets/SwimlaneTimeline-og79Llvs.js +0 -2
- package/dashboard/dist/assets/TagInput-D3f11sbM.js +0 -2
- package/dashboard/dist/assets/TaskDetailPage-DPV4ySd9.js +0 -2
- package/dashboard/dist/assets/TaskDetailPage-DPV4ySd9.js.map +0 -1
- package/dashboard/dist/assets/TaskQueuePill-Bc45J7X1.js +0 -2
- package/dashboard/dist/assets/TasksListPage-BYj3OqUi.js +0 -2
- package/dashboard/dist/assets/TimeAgo-W7TdJpV-.js +0 -2
- package/dashboard/dist/assets/TimestampCell-Bi2nc9Q_.js +0 -2
- package/dashboard/dist/assets/ToolPill-CuoXcmhv.js +0 -2
- package/dashboard/dist/assets/ToolTestPanel-Dl3C53zb.js +0 -2
- package/dashboard/dist/assets/TopicDetailPage-CjaZn4WP.js +0 -9
- package/dashboard/dist/assets/TopicsPage-BfsJEC1p.js +0 -2
- package/dashboard/dist/assets/UserName-b4baWHM_.js +0 -2
- package/dashboard/dist/assets/WorkflowExecutionPage-BGmJnXnk.js +0 -2
- package/dashboard/dist/assets/WorkflowPill-Bg2-0Hkg.js +0 -2
- package/dashboard/dist/assets/WorkflowsDashboard-BzH7jMRu.js +0 -2
- package/dashboard/dist/assets/WorkflowsOverview-BcUgBvjD.js +0 -2
- package/dashboard/dist/assets/YamlWorkflowsPage-OhpCQJ0l.js +0 -2
- package/dashboard/dist/assets/capabilities-t-w5N9K9.js +0 -2
- package/dashboard/dist/assets/escalation-DilnDxw2.js +0 -2
- package/dashboard/dist/assets/escalation-columns-C0slywOY.js +0 -2
- package/dashboard/dist/assets/helpers-BMvPqQr8.js +0 -2
- package/dashboard/dist/assets/index-30-pN97P.js +0 -2
- package/dashboard/dist/assets/index-Bl9wzQ8Q.js +0 -2
- package/dashboard/dist/assets/index-BxOuF0hm.js +0 -2
- package/dashboard/dist/assets/index-Ck2QdJXT.js +0 -6
- package/dashboard/dist/assets/index-DNmlrCAp.js +0 -2
- package/dashboard/dist/assets/index-DPW_i3fH.js +0 -6
- package/dashboard/dist/assets/index-DZX-E_3q.js +0 -63
- package/dashboard/dist/assets/index-DZX-E_3q.js.map +0 -1
- package/dashboard/dist/assets/index-D_wqdvG_.js +0 -15
- package/dashboard/dist/assets/index-DnsVYMMg.js +0 -2
- package/dashboard/dist/assets/index-H5TlloTk.js +0 -2
- package/dashboard/dist/assets/index-f-0Duls3.js +0 -2
- package/dashboard/dist/assets/index-pIMl0mYp.js +0 -2
- package/dashboard/dist/assets/index-qNuxC8kX.js +0 -2
- package/dashboard/dist/assets/namespaces-6qWDXXJV.js +0 -2
- package/dashboard/dist/assets/vendor-query-B2UbickB.js +0 -18
- package/dashboard/dist/assets/vendor-query-B2UbickB.js.map +0 -1
- package/dashboard/dist/assets/vendor-react-CX88sFS5.js +0 -22
- package/dashboard/dist/assets/vendor-react-CX88sFS5.js.map +0 -1
|
@@ -38,6 +38,15 @@ exports.createSubscription = createSubscription;
|
|
|
38
38
|
exports.updateSubscription = updateSubscription;
|
|
39
39
|
exports.deleteSubscription = deleteSubscription;
|
|
40
40
|
const subService = __importStar(require("../services/agent/subscriptions"));
|
|
41
|
+
const publish_1 = require("../lib/events/publish");
|
|
42
|
+
function notifyTriggersChanged(agentId) {
|
|
43
|
+
(0, publish_1.publishAgentEvent)({
|
|
44
|
+
type: 'agent.triggers_changed',
|
|
45
|
+
agentId,
|
|
46
|
+
agentName: agentId,
|
|
47
|
+
data: { action: 'subscription_changed' },
|
|
48
|
+
});
|
|
49
|
+
}
|
|
41
50
|
async function listSubscriptions(input) {
|
|
42
51
|
try {
|
|
43
52
|
const subs = await subService.listSubscriptions(input.agentId);
|
|
@@ -51,6 +60,7 @@ async function createSubscription(input) {
|
|
|
51
60
|
try {
|
|
52
61
|
const { agentId, ...data } = input;
|
|
53
62
|
const sub = await subService.createSubscription(agentId, data);
|
|
63
|
+
notifyTriggersChanged(agentId);
|
|
54
64
|
return { status: 201, data: sub };
|
|
55
65
|
}
|
|
56
66
|
catch (err) {
|
|
@@ -63,6 +73,7 @@ async function updateSubscription(input) {
|
|
|
63
73
|
const sub = await subService.updateSubscription(id, data);
|
|
64
74
|
if (!sub)
|
|
65
75
|
return { status: 404, error: 'Subscription not found' };
|
|
76
|
+
notifyTriggersChanged(sub.agent_id);
|
|
66
77
|
return { status: 200, data: sub };
|
|
67
78
|
}
|
|
68
79
|
catch (err) {
|
|
@@ -71,9 +82,12 @@ async function updateSubscription(input) {
|
|
|
71
82
|
}
|
|
72
83
|
async function deleteSubscription(input) {
|
|
73
84
|
try {
|
|
85
|
+
const sub = await subService.getSubscription(input.id);
|
|
74
86
|
const deleted = await subService.deleteSubscription(input.id);
|
|
75
87
|
if (!deleted)
|
|
76
88
|
return { status: 404, error: 'Subscription not found' };
|
|
89
|
+
if (sub)
|
|
90
|
+
notifyTriggersChanged(sub.agent_id);
|
|
77
91
|
return { status: 200, data: { deleted: true } };
|
|
78
92
|
}
|
|
79
93
|
catch (err) {
|
|
@@ -68,11 +68,14 @@ class LTEventRegistry {
|
|
|
68
68
|
* delivery implements `setCallbackBridge` on the LTEventAdapter interface.
|
|
69
69
|
*/
|
|
70
70
|
bridgeCallbackAdapter(callbackAdapter) {
|
|
71
|
+
let bridged = 0;
|
|
71
72
|
for (const adapter of this.adapters) {
|
|
72
73
|
if (adapter !== callbackAdapter && typeof adapter.setCallbackBridge === 'function') {
|
|
73
74
|
adapter.setCallbackBridge(callbackAdapter);
|
|
75
|
+
bridged++;
|
|
74
76
|
}
|
|
75
77
|
}
|
|
78
|
+
logger_1.loggerRegistry.info(`[lt-events] callback bridge wired to ${bridged} transport adapter(s)`);
|
|
76
79
|
}
|
|
77
80
|
}
|
|
78
81
|
/** Singleton event registry */
|
package/build/lib/events/nats.js
CHANGED
|
@@ -61,6 +61,7 @@ class NatsEventAdapter {
|
|
|
61
61
|
// Skip events that originated from this container
|
|
62
62
|
if (event._originId === this.originId)
|
|
63
63
|
continue;
|
|
64
|
+
logger_1.loggerRegistry.info(`[lt-events:nats] bridge received: ${event.type} from ${event._originId?.slice(0, 8)}`);
|
|
64
65
|
adapter.publish(event);
|
|
65
66
|
}
|
|
66
67
|
catch {
|
|
@@ -76,6 +77,7 @@ class NatsEventAdapter {
|
|
|
76
77
|
const subject = `${this.subjectPrefix}.${event.type}`;
|
|
77
78
|
const enriched = { ...event, _originId: this.originId };
|
|
78
79
|
this.nc.publish(subject, sc.encode(JSON.stringify(enriched)));
|
|
80
|
+
logger_1.loggerRegistry.info(`[lt-events:nats] published: ${subject} (origin=${this.originId.slice(0, 8)})`);
|
|
79
81
|
}
|
|
80
82
|
async disconnect() {
|
|
81
83
|
if (this.sub) {
|
|
@@ -115,6 +115,13 @@ async function updateAgent(id, data) {
|
|
|
115
115
|
if (updated && (data.status || data.behaviors)) {
|
|
116
116
|
Promise.resolve().then(() => __importStar(require('./trigger-registry'))).then(({ agentTriggerRegistry }) => agentTriggerRegistry.restartAgent(id)).catch(() => { });
|
|
117
117
|
Promise.resolve().then(() => __importStar(require('../cron'))).then(({ cronRegistry }) => cronRegistry.restartAgentCrons(updated)).catch(() => { });
|
|
118
|
+
// Signal other containers to re-arm triggers for this agent
|
|
119
|
+
(0, publish_1.publishAgentEvent)({
|
|
120
|
+
type: 'agent.triggers_changed',
|
|
121
|
+
agentId: id,
|
|
122
|
+
agentName: id,
|
|
123
|
+
data: { action: 'updated' },
|
|
124
|
+
});
|
|
118
125
|
}
|
|
119
126
|
return updated;
|
|
120
127
|
}
|
|
@@ -122,6 +129,13 @@ async function deleteAgent(id) {
|
|
|
122
129
|
// Stop event triggers and cron schedules before deleting
|
|
123
130
|
Promise.resolve().then(() => __importStar(require('./trigger-registry'))).then(({ agentTriggerRegistry }) => agentTriggerRegistry.stopAgent(id)).catch(() => { });
|
|
124
131
|
Promise.resolve().then(() => __importStar(require('../cron'))).then(({ cronRegistry }) => cronRegistry.stopAgentCrons(id)).catch(() => { });
|
|
132
|
+
// Signal other containers to stop triggers for this agent
|
|
133
|
+
(0, publish_1.publishAgentEvent)({
|
|
134
|
+
type: 'agent.triggers_changed',
|
|
135
|
+
agentId: id,
|
|
136
|
+
agentName: id,
|
|
137
|
+
data: { action: 'deleted' },
|
|
138
|
+
});
|
|
125
139
|
const pool = (0, db_1.getPool)();
|
|
126
140
|
const { rowCount } = await pool.query(sql_1.DELETE_AGENT, [id]);
|
|
127
141
|
return (rowCount ?? 0) > 0;
|
|
@@ -12,6 +12,8 @@ declare class AgentTriggerRegistry {
|
|
|
12
12
|
private connected;
|
|
13
13
|
/**
|
|
14
14
|
* Load all active subscriptions from DB and arm event listeners.
|
|
15
|
+
* Also subscribes to `agent.triggers_changed` so other containers
|
|
16
|
+
* can signal this one to re-arm after subscription CRUD.
|
|
15
17
|
*/
|
|
16
18
|
connect(adapter: CallbackEventAdapter): Promise<void>;
|
|
17
19
|
/**
|
|
@@ -55,13 +55,32 @@ class AgentTriggerRegistry {
|
|
|
55
55
|
}
|
|
56
56
|
/**
|
|
57
57
|
* Load all active subscriptions from DB and arm event listeners.
|
|
58
|
+
* Also subscribes to `agent.triggers_changed` so other containers
|
|
59
|
+
* can signal this one to re-arm after subscription CRUD.
|
|
58
60
|
*/
|
|
59
61
|
async connect(adapter) {
|
|
60
62
|
this.adapter = adapter;
|
|
61
63
|
const subs = await (0, subscriptions_1.listActiveSubscriptions)();
|
|
62
64
|
for (const sub of subs) {
|
|
65
|
+
logger_1.loggerRegistry.info(`[long-tail] arming trigger: ${sub.agent_name}/${sub.topic} → ${sub.reaction_type}:${sub.tool_name || sub.workflow_type || sub.mcp_prompt?.slice(0, 20) || '?'}`);
|
|
63
66
|
this.armSubscription(sub);
|
|
64
67
|
}
|
|
68
|
+
// Listen for cross-container trigger sync signals
|
|
69
|
+
adapter.on('agent.triggers_changed', (event) => {
|
|
70
|
+
const agentId = event.data?.agentId;
|
|
71
|
+
const action = event.data?.action;
|
|
72
|
+
if (!agentId)
|
|
73
|
+
return;
|
|
74
|
+
if (action === 'deleted') {
|
|
75
|
+
this.stopAgent(agentId);
|
|
76
|
+
logger_1.loggerRegistry.info(`[long-tail] agent triggers stopped (remote): ${agentId}`);
|
|
77
|
+
}
|
|
78
|
+
else {
|
|
79
|
+
this.restartAgent(agentId).then(() => {
|
|
80
|
+
logger_1.loggerRegistry.info(`[long-tail] agent triggers synced (remote): ${agentId}`);
|
|
81
|
+
}).catch(() => { });
|
|
82
|
+
}
|
|
83
|
+
});
|
|
65
84
|
this.connected = true;
|
|
66
85
|
logger_1.loggerRegistry.info(`[long-tail] agent trigger registry: ${subs.length} subscription(s) armed`);
|
|
67
86
|
}
|
|
@@ -123,8 +142,10 @@ class AgentTriggerRegistry {
|
|
|
123
142
|
buildHandler(sub) {
|
|
124
143
|
return async (event) => {
|
|
125
144
|
try {
|
|
145
|
+
logger_1.loggerRegistry.info(`[long-tail] trigger matched: ${sub.agent_name}/${sub.topic} for event ${event.type}`);
|
|
126
146
|
// 1. Evaluate optional filter
|
|
127
147
|
if (sub.filter && !this.matchesFilter(event, sub.filter)) {
|
|
148
|
+
logger_1.loggerRegistry.info(`[long-tail] trigger filtered out: ${sub.agent_name}/${sub.topic}`);
|
|
128
149
|
return;
|
|
129
150
|
}
|
|
130
151
|
// 2. Derive deterministic workflow ID for distributed dedup
|
|
@@ -154,14 +175,22 @@ class AgentTriggerRegistry {
|
|
|
154
175
|
}).catch(() => { }); // best-effort
|
|
155
176
|
}
|
|
156
177
|
catch (err) {
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
178
|
+
// Duplicate job errors are expected in multi-container — another
|
|
179
|
+
// container won the race. Log as info and continue.
|
|
180
|
+
const isDuplicate = err.message?.includes('already exists');
|
|
181
|
+
if (isDuplicate) {
|
|
182
|
+
logger_1.loggerRegistry.info(`[long-tail] agent trigger dedup (another container handled): ${sub.agent_name}/${sub.topic}`);
|
|
183
|
+
}
|
|
184
|
+
else {
|
|
185
|
+
(0, publish_1.publishAgentEvent)({
|
|
186
|
+
type: 'agent.failed',
|
|
187
|
+
agentId: sub.agent_id,
|
|
188
|
+
agentName: sub.agent_name,
|
|
189
|
+
status: 'error',
|
|
190
|
+
data: { topic: sub.topic, error: err.message },
|
|
191
|
+
});
|
|
192
|
+
logger_1.loggerRegistry.warn(`[long-tail] agent trigger failed: ${sub.agent_name}/${sub.topic}: ${err.message}`);
|
|
193
|
+
}
|
|
165
194
|
}
|
|
166
195
|
};
|
|
167
196
|
}
|
package/build/start/workers.js
CHANGED
|
@@ -313,6 +313,9 @@ async function startWorkers(startConfig, workers, builtinMcpServerFactories) {
|
|
|
313
313
|
logger_1.loggerRegistry.warn(`[long-tail] agent cron schedules: ${err.message}`);
|
|
314
314
|
}
|
|
315
315
|
}
|
|
316
|
+
else {
|
|
317
|
+
logger_1.loggerRegistry.info('[long-tail] readonly mode — agent triggers and crons skipped');
|
|
318
|
+
}
|
|
316
319
|
// Ensure system bot account exists for cron/system-initiated workflows
|
|
317
320
|
const { ensureSystemBot } = await Promise.resolve().then(() => __importStar(require('../services/iam/bots')));
|
|
318
321
|
await ensureSystemBot().catch((err) => logger_1.loggerRegistry.warn(`[long-tail] system bot seed error: ${err.message}`));
|
package/build/types/events.d.ts
CHANGED
|
@@ -6,7 +6,7 @@ import type { LTMilestone } from './task';
|
|
|
6
6
|
*
|
|
7
7
|
* Dashboard subscribes to `lt.events.>` to receive all events.
|
|
8
8
|
*/
|
|
9
|
-
export type LTEventType = 'task.created' | 'task.started' | 'task.completed' | 'task.escalated' | 'task.failed' | 'escalation.created' | 'escalation.resolved' | 'escalation.claimed' | 'escalation.released' | 'workflow.started' | 'workflow.completed' | 'workflow.failed' | 'activity.started' | 'activity.completed' | 'activity.failed' | 'knowledge.stored' | 'knowledge.deleted' | 'file.stored' | 'file.deleted' | 'agent.started' | 'agent.completed' | 'agent.failed' | 'agent.status_changed' | 'milestone';
|
|
9
|
+
export type LTEventType = 'task.created' | 'task.started' | 'task.completed' | 'task.escalated' | 'task.failed' | 'escalation.created' | 'escalation.resolved' | 'escalation.claimed' | 'escalation.released' | 'workflow.started' | 'workflow.completed' | 'workflow.failed' | 'activity.started' | 'activity.completed' | 'activity.failed' | 'knowledge.stored' | 'knowledge.deleted' | 'file.stored' | 'file.deleted' | 'agent.started' | 'agent.completed' | 'agent.failed' | 'agent.status_changed' | 'agent.triggers_changed' | 'milestone';
|
|
10
10
|
/**
|
|
11
11
|
* Application-defined event type.
|
|
12
12
|
* Convention: `app.{namespace}.{entity}.{action}`
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{s as n,j as o}from"./index-4T7Z_gQ4.js";import{c as m}from"./tasks-CL6Gv8jB.js";import{f as d}from"./useEventHooks-C6c618cj.js";import{u}from"./mcp-B5VQPoF3.js";import{P as c}from"./PageHeaderWithStats-BQZw6BgA.js";import"./vendor-query-DLp59M9_.js";import"./vendor-react-Co3Y8ikm.js";import"./vendor-icons-D8-ZINAH.js";function N(){var e;d();const{data:a}=m({limit:1}),{data:t}=n({status:"pending",limit:1}),{data:s}=u(),i=((e=s==null?void 0:s.servers)==null?void 0:e.filter(l=>l.status==="connected").length)??0,r=s?`${i}/${s.total}`:"—";return o.jsxDEV("div",{children:o.jsxDEV(c,{title:"Admin",stats:[{label:"Tasks",value:(a==null?void 0:a.total)??"—"},{label:"Pending Escalations",value:(t==null?void 0:t.total)??"—",dotClass:"bg-status-pending"},{label:"MCP Servers",value:r},{label:"System",value:"Healthy",dotClass:"bg-status-success"}]},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/AdminDashboard.tsx",lineNumber:19,columnNumber:7},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/AdminDashboard.tsx",lineNumber:18,columnNumber:5},this)}export{N as AdminDashboard};
|
|
2
|
+
//# sourceMappingURL=AdminDashboard-ntLz5Pro.js.map
|
package/dashboard/dist/assets/{AdminDashboard-DISq0Tz8.js.map → AdminDashboard-ntLz5Pro.js.map}
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AdminDashboard-
|
|
1
|
+
{"version":3,"file":"AdminDashboard-ntLz5Pro.js","sources":["../../src/pages/admin/AdminDashboard.tsx"],"sourcesContent":["import { useTasks } from '../../api/tasks';\nimport { useEscalations } from '../../api/escalations';\nimport { useEscalationListEvents } from '../../hooks/useEventHooks';\nimport { useMcpServers } from '../../api/mcp';\nimport { PageHeaderWithStats } from '../../components/common/layout/PageHeaderWithStats';\n\nexport function AdminDashboard() {\n useEscalationListEvents();\n const { data: taskData } = useTasks({ limit: 1 });\n const { data: pendingEsc } = useEscalations({ status: 'pending', limit: 1 });\n const { data: mcpData } = useMcpServers();\n\n const connectedServers =\n mcpData?.servers?.filter((s) => s.status === 'connected').length ?? 0;\n const mcpLabel = mcpData ? `${connectedServers}/${mcpData.total}` : '—';\n\n return (\n <div>\n <PageHeaderWithStats\n title=\"Admin\"\n stats={[\n { label: 'Tasks', value: taskData?.total ?? '—' },\n { label: 'Pending Escalations', value: pendingEsc?.total ?? '—', dotClass: 'bg-status-pending' },\n { label: 'MCP Servers', value: mcpLabel },\n { label: 'System', value: 'Healthy', dotClass: 'bg-status-success' },\n ]}\n />\n </div>\n );\n}\n"],"names":["AdminDashboard","useEscalationListEvents","taskData","useTasks","pendingEsc","useEscalations","mcpData","useMcpServers","connectedServers","_a","s","mcpLabel","jsxDEV","PageHeaderWithStats"],"mappings":"uUAMO,SAASA,GAAiB,OAC/BC,EAAA,EACA,KAAM,CAAE,KAAMC,CAAA,EAAaC,EAAS,CAAE,MAAO,EAAG,EAC1C,CAAE,KAAMC,CAAA,EAAeC,EAAe,CAAE,OAAQ,UAAW,MAAO,EAAG,EACrE,CAAE,KAAMC,CAAA,EAAYC,EAAA,EAEpBC,IACJC,EAAAH,GAAA,YAAAA,EAAS,UAAT,YAAAG,EAAkB,OAAQC,GAAMA,EAAE,SAAW,aAAa,SAAU,EAChEC,EAAWL,EAAU,GAAGE,CAAgB,IAAIF,EAAQ,KAAK,GAAK,IAEpE,gBACG,MAAA,CACC,SAAAM,EAAAA,OAACC,EAAA,CACC,MAAM,QACN,MAAO,CACL,CAAE,MAAO,QAAS,OAAOX,GAAA,YAAAA,EAAU,QAAS,GAAA,EAC5C,CAAE,MAAO,sBAAuB,OAAOE,GAAA,YAAAA,EAAY,QAAS,IAAK,SAAU,mBAAA,EAC3E,CAAE,MAAO,cAAe,MAAOO,CAAA,EAC/B,CAAE,MAAO,SAAU,MAAO,UAAW,SAAU,mBAAA,CAAoB,CACrE,EAPF,OAAA,GAAA,CAAA,SAAA,oDAAA,WAAA,GAAA,aAAA,CAAA,EAAA,IAAA,CAQA,EATF,OAAA,GAAA,CAAA,SAAA,oDAAA,WAAA,GAAA,aAAA,CAAA,EAAA,IAUA,CAEJ"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import{j as e,d as ne,u as le}from"./index-4T7Z_gQ4.js";import{a as N}from"./vendor-query-DLp59M9_.js";import{a as oe,d as ce,b as de}from"./agents-B5wvILeV.js";import{C as pe,u as me,a as ue,b as be,c as he}from"./CronLabel-nycfAefc.js";import{P as Ne}from"./PageHeader-DF4BeEm4.js";import{B as R,d as z,b as xe,R as Y,Y as $,n as X,a4 as B,a as Z,aF as ee,K as ge}from"./vendor-icons-D8-ZINAH.js";import{e as fe}from"./knowledge-CUZxyRCO.js";import{R as ae}from"./RunAsSelector-CYMeZwrM.js";import{u as ve}from"./workflows-BNbocg_9.js";import{u as Se}from"./yaml-workflows-Cu1FUwrc.js";import{u as se}from"./capabilities-DkvRG09b.js";import{u as we}from"./topics-DbtPHERP.js";import{E as ye}from"./EventTopicPill-CnHFBglc.js";import{W as H}from"./WorkflowPill-B5B3yGlh.js";import{e as Ee,c as je,f as De}from"./vendor-react-Co3Y8ikm.js";import"./BotPicker-CYfFMpkY.js";import"./bots-BPlouRDm.js";const Q={name:"",description:"",goals:"",rules:"",user_id:"",knowledge_domain:"",subscriptions:[],schedules:[]},Ve={topic:"",filter:"",reaction_type:"durable",workflow_type:"",pipeline_id:"",mcp_prompt:"",server_id:"",tool_name:"",input_mapping:"{}",execute_as:"",enabled:!0},_e={cron:"0 * * * *",reaction_type:"durable",workflow_type:"",pipeline_id:"",server_id:"",tool_name:"",envelope:"{}",execute_as:""};function ke(s,t){var o,p,u;const l=(p=(o=s.behaviors)==null?void 0:o.schedules)!=null&&p.length?s.behaviors.schedules.map(i=>({cron:i.cron||"",reaction_type:i.reaction_type||"durable",workflow_type:i.workflow_type||"",pipeline_id:i.pipeline_id||"",server_id:i.server_id||"",tool_name:i.tool_name||"",envelope:i.envelope?JSON.stringify(i.envelope,null,2):"{}",execute_as:i.execute_as||""})):(u=s.behaviors)!=null&&u.cron?[{cron:s.behaviors.cron,reaction_type:"durable",workflow_type:s.workflow_type??"",pipeline_id:"",server_id:"",tool_name:"",envelope:"{}",execute_as:""}]:[];return{name:s.id,description:s.description??"",goals:s.goals??"",rules:s.rules??"",user_id:s.user_id??"",knowledge_domain:s.knowledge_domain??"",subscriptions:t.map(i=>({id:i.id,topic:i.topic,filter:i.filter?JSON.stringify(i.filter,null,2):"",reaction_type:i.reaction_type,workflow_type:i.workflow_type??"",pipeline_id:i.pipeline_id??"",mcp_prompt:i.mcp_prompt??"",server_id:i.server_id??"",tool_name:i.tool_name??"",input_mapping:JSON.stringify(i.input_mapping??{},null,2),execute_as:i.execute_as??"",enabled:i.enabled})),schedules:l}}function Ce(s){var l;const t={};return s.schedules.length>0&&(t.schedules=s.schedules.map(o=>({cron:o.cron,reaction_type:o.reaction_type||"durable",workflow_type:o.reaction_type==="pipeline"?void 0:o.workflow_type,pipeline_id:o.reaction_type==="pipeline"?o.pipeline_id:void 0,envelope:J(o.envelope)??{},execute_as:o.execute_as||void 0})),t.cron=s.schedules[0].cron),{id:s.name,description:s.description||void 0,goals:s.goals||void 0,rules:s.rules||void 0,user_id:s.user_id||void 0,knowledge_domain:s.knowledge_domain||void 0,behaviors:t,workflow_type:((l=s.schedules[0])==null?void 0:l.workflow_type)||void 0,pipeline_id:void 0}}function Re(s){return s.subscriptions.map(t=>({id:t.id,topic:t.topic,filter:t.filter?J(t.filter):void 0,reaction_type:t.reaction_type,workflow_type:t.workflow_type||void 0,pipeline_id:t.pipeline_id||void 0,mcp_prompt:t.mcp_prompt||void 0,server_id:t.server_id||void 0,tool_name:t.tool_name||void 0,input_mapping:J(t.input_mapping)??{},execute_as:t.execute_as||void 0,enabled:t.enabled}))}function J(s){if(s.trim())try{return JSON.parse(s)}catch{return}}const V="section-header mt-[3em] first:mt-0",A="label",E="hint",k="input",O="input-json w-full";function Pe({form:s,set:t}){return e.jsxDEV("div",{className:"space-y-8",children:[e.jsxDEV("div",{className:"border-l-2 border-accent/30 pl-3 py-1 flex items-start justify-between",children:[e.jsxDEV("p",{className:"text-[12px] text-text-secondary italic leading-relaxed",children:"Give your automation a name and describe what it does. The name appears everywhere — in events, logs, and the dashboard."},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/IdentityStep.tsx",lineNumber:14,columnNumber:9},this),e.jsxDEV("button",{onClick:()=>{window.location.hash="#docs:agents.md:identity"},className:"text-text-quaternary hover:text-accent transition-colors shrink-0 ml-3",title:"Docs: Identity",children:e.jsxDEV(R,{className:"w-3 h-3",strokeWidth:1.5},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/IdentityStep.tsx",lineNumber:17,columnNumber:194},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/IdentityStep.tsx",lineNumber:17,columnNumber:9},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/agents/detail/IdentityStep.tsx",lineNumber:13,columnNumber:7},this),e.jsxDEV("div",{children:[e.jsxDEV("label",{className:A,children:"Name *"},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/IdentityStep.tsx",lineNumber:21,columnNumber:9},this),e.jsxDEV("input",{type:"text",value:s.name,onChange:l=>t("name",l.target.value),placeholder:"health-monitor",className:k},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/IdentityStep.tsx",lineNumber:22,columnNumber:9},this),e.jsxDEV("p",{className:E,children:"Lowercase, kebab-case. This appears everywhere."},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/IdentityStep.tsx",lineNumber:23,columnNumber:9},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/agents/detail/IdentityStep.tsx",lineNumber:20,columnNumber:7},this),e.jsxDEV("div",{children:[e.jsxDEV("label",{className:A,children:"Description"},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/IdentityStep.tsx",lineNumber:27,columnNumber:9},this),e.jsxDEV("input",{type:"text",value:s.description,onChange:l=>t("description",l.target.value),placeholder:"Watches for workflow failures and captures diagnostics",className:k},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/IdentityStep.tsx",lineNumber:28,columnNumber:9},this),e.jsxDEV("p",{className:E,children:"One sentence that explains what this automation does."},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/IdentityStep.tsx",lineNumber:29,columnNumber:9},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/agents/detail/IdentityStep.tsx",lineNumber:26,columnNumber:7},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/agents/detail/IdentityStep.tsx",lineNumber:12,columnNumber:5},this)}function Ae({form:s,set:t}){return e.jsxDEV("div",{className:"space-y-8",children:[e.jsxDEV("div",{className:"border-l-2 border-accent/30 pl-3 py-1 flex items-start justify-between",children:[e.jsxDEV("p",{className:"text-[12px] text-text-secondary italic leading-relaxed",children:"Goals define what drives the automation. Rules define what constrains it."},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/MotivationStep.tsx",lineNumber:14,columnNumber:9},this),e.jsxDEV("button",{onClick:()=>{window.location.hash="#docs:agents.md:motivation"},className:"text-text-quaternary hover:text-accent transition-colors shrink-0 ml-3",title:"Docs: Motivation",children:e.jsxDEV(R,{className:"w-3 h-3",strokeWidth:1.5},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/MotivationStep.tsx",lineNumber:17,columnNumber:198},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/MotivationStep.tsx",lineNumber:17,columnNumber:9},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/agents/detail/MotivationStep.tsx",lineNumber:13,columnNumber:7},this),e.jsxDEV("div",{className:"grid grid-cols-2 gap-8",children:[e.jsxDEV("div",{children:[e.jsxDEV("label",{className:A,children:"Goals"},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/MotivationStep.tsx",lineNumber:22,columnNumber:11},this),e.jsxDEV("textarea",{value:s.goals,onChange:l=>t("goals",l.target.value),placeholder:"Detect failures early, capture diagnostics, alert before cascading",rows:4,className:`${k} resize-none`},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/MotivationStep.tsx",lineNumber:23,columnNumber:11},this),e.jsxDEV("p",{className:E,children:"Primary motivation. What the automation is trying to achieve."},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/MotivationStep.tsx",lineNumber:24,columnNumber:11},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/agents/detail/MotivationStep.tsx",lineNumber:21,columnNumber:9},this),e.jsxDEV("div",{children:[e.jsxDEV("label",{className:A,children:"Rules"},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/MotivationStep.tsx",lineNumber:27,columnNumber:11},this),e.jsxDEV("textarea",{value:s.rules,onChange:l=>t("rules",l.target.value),placeholder:"Never auto-restart failed workflows. Always escalate to humans.",rows:4,className:`${k} resize-none`},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/MotivationStep.tsx",lineNumber:28,columnNumber:11},this),e.jsxDEV("p",{className:E,children:"Guardrails. What it must never do, even when goals suggest it should."},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/MotivationStep.tsx",lineNumber:29,columnNumber:11},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/agents/detail/MotivationStep.tsx",lineNumber:26,columnNumber:9},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/agents/detail/MotivationStep.tsx",lineNumber:20,columnNumber:7},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/agents/detail/MotivationStep.tsx",lineNumber:12,columnNumber:5},this)}function Ie({form:s,set:t}){const{data:l}=fe(),o=(l==null?void 0:l.domains)??[];return e.jsxDEV("div",{className:"space-y-6",children:[e.jsxDEV("div",{className:"border-l-2 border-accent/30 pl-3 py-1 flex items-start justify-between",children:[e.jsxDEV("p",{className:"text-[12px] text-text-secondary italic leading-relaxed",children:"Assign a knowledge domain — the automation's memory. It stores context here over time."},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/KnowledgeStep.tsx",lineNumber:19,columnNumber:9},this),e.jsxDEV("button",{onClick:()=>{window.location.hash="#docs:agents.md:knowledge"},className:"text-text-quaternary hover:text-accent transition-colors shrink-0 ml-3",title:"Docs: Knowledge",children:e.jsxDEV(R,{className:"w-3 h-3",strokeWidth:1.5},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/KnowledgeStep.tsx",lineNumber:22,columnNumber:196},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/KnowledgeStep.tsx",lineNumber:22,columnNumber:9},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/agents/detail/KnowledgeStep.tsx",lineNumber:18,columnNumber:7},this),e.jsxDEV("div",{children:[e.jsxDEV("label",{className:A,children:"Knowledge Domain"},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/KnowledgeStep.tsx",lineNumber:26,columnNumber:9},this),e.jsxDEV("input",{type:"text",value:s.knowledge_domain,onChange:p=>t("knowledge_domain",p.target.value),placeholder:"e.g., system-health, content-review, vendor-data",className:k,list:"domain-suggestions"},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/KnowledgeStep.tsx",lineNumber:27,columnNumber:9},this),e.jsxDEV("datalist",{id:"domain-suggestions",children:o.map(p=>e.jsxDEV("option",{value:p.domain},p.domain,!1,{fileName:"/app/dashboard/src/pages/agents/detail/KnowledgeStep.tsx",lineNumber:36,columnNumber:31},this))},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/KnowledgeStep.tsx",lineNumber:35,columnNumber:9},this),e.jsxDEV("p",{className:E,children:"Choose an existing domain to share memory, or type a new name to create one."},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/KnowledgeStep.tsx",lineNumber:38,columnNumber:9},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/agents/detail/KnowledgeStep.tsx",lineNumber:25,columnNumber:7},this),o.length>0&&e.jsxDEV("div",{children:[e.jsxDEV("label",{className:A,children:"Existing Domains"},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/KnowledgeStep.tsx",lineNumber:43,columnNumber:11},this),e.jsxDEV("div",{className:"space-y-0.5 mt-2",children:o.map(p=>e.jsxDEV("button",{type:"button",onClick:()=>t("knowledge_domain",p.domain),className:`w-full flex items-center gap-3 px-3 py-2 rounded-md text-left transition-colors ${s.knowledge_domain===p.domain?"border-l-2 border-l-accent bg-accent/5":"hover:bg-surface-hover border-l-2 border-l-transparent"}`,children:[e.jsxDEV(z,{className:"w-3.5 h-3.5 text-text-quaternary shrink-0",strokeWidth:1.5},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/KnowledgeStep.tsx",lineNumber:54,columnNumber:17},this),e.jsxDEV("span",{className:"text-sm text-text-primary flex-1",children:p.domain},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/KnowledgeStep.tsx",lineNumber:55,columnNumber:17},this),e.jsxDEV("span",{className:"text-[10px] text-text-quaternary",children:[p.count," entries"]},void 0,!0,{fileName:"/app/dashboard/src/pages/agents/detail/KnowledgeStep.tsx",lineNumber:56,columnNumber:17},this),e.jsxDEV("span",{className:"text-[9px] text-text-quaternary",children:e.jsxDEV(ne,{date:p.latest},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/KnowledgeStep.tsx",lineNumber:57,columnNumber:67},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/KnowledgeStep.tsx",lineNumber:57,columnNumber:17},this)]},p.domain,!0,{fileName:"/app/dashboard/src/pages/agents/detail/KnowledgeStep.tsx",lineNumber:46,columnNumber:15},this))},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/KnowledgeStep.tsx",lineNumber:44,columnNumber:11},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/agents/detail/KnowledgeStep.tsx",lineNumber:42,columnNumber:9},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/agents/detail/KnowledgeStep.tsx",lineNumber:17,columnNumber:5},this)}function Me({serverId:s,toolName:t,onChange:l}){const{data:o}=se(),p=N.useMemo(()=>{var a;return((a=o==null?void 0:o.categories)==null?void 0:a.flatMap(r=>r.tools))??[]},[o]),[u,i]=N.useState(!1),[x,d]=N.useState(""),c=N.useRef(null),h=N.useRef(null);N.useEffect(()=>{if(!u)return;function a(r){h.current&&!h.current.contains(r.target)&&i(!1)}return document.addEventListener("mousedown",a),()=>document.removeEventListener("mousedown",a)},[u]);const n=t?`${t}`:"",m=u?x:n,w=N.useMemo(()=>{const a=(u?x:"").toLowerCase();return a?p.filter(r=>r.name.toLowerCase().includes(a)||r.serverName.toLowerCase().includes(a)||(r.description??"").toLowerCase().includes(a)):p},[p,x,u]),b=t?p.find(a=>a.serverId===s&&a.name===t):void 0;return e.jsxDEV("div",{ref:h,className:"relative",children:[e.jsxDEV("input",{ref:c,type:"text",value:m,onFocus:()=>{i(!0),d(n)},onChange:a=>{const r=a.target.value;d(r),r||l("",""),u||i(!0)},placeholder:"Search capabilities...",className:"input font-mono text-sm w-full"},void 0,!1,{fileName:"/app/dashboard/src/components/common/form/CapabilityCombobox.tsx",lineNumber:59,columnNumber:7},this),!u&&(b==null?void 0:b.description)&&e.jsxDEV("p",{className:"text-[10px] text-text-tertiary mt-1 italic",children:b.description},void 0,!1,{fileName:"/app/dashboard/src/components/common/form/CapabilityCombobox.tsx",lineNumber:76,columnNumber:9},this),u&&w.length>0&&e.jsxDEV("div",{className:"absolute z-50 left-0 right-0 mt-1 max-h-64 overflow-y-auto rounded-md border border-surface-border bg-surface shadow-lg",children:w.map(a=>e.jsxDEV("button",{type:"button",onClick:()=>{l(a.serverId,a.name),d(a.name),i(!1)},className:`w-full text-left px-3 py-2 hover:bg-surface-hover transition-colors flex items-center gap-3 ${s===a.serverId&&t===a.name?"bg-accent/5":""}`,children:[e.jsxDEV("span",{className:"text-[11px] font-mono text-text-primary shrink-0",children:a.name},void 0,!1,{fileName:"/app/dashboard/src/components/common/form/CapabilityCombobox.tsx",lineNumber:94,columnNumber:15},this),e.jsxDEV("span",{className:"inline-flex items-center gap-1 px-1.5 py-0.5 rounded text-[9px] font-medium shrink-0 bg-accent/10 text-accent",children:[e.jsxDEV(xe,{className:"w-2 h-2",strokeWidth:1.5},void 0,!1,{fileName:"/app/dashboard/src/components/common/form/CapabilityCombobox.tsx",lineNumber:96,columnNumber:17},this),a.serverName]},void 0,!0,{fileName:"/app/dashboard/src/components/common/form/CapabilityCombobox.tsx",lineNumber:95,columnNumber:15},this),a.description&&e.jsxDEV("span",{className:"text-[10px] text-text-quaternary truncate",children:a.description},void 0,!1,{fileName:"/app/dashboard/src/components/common/form/CapabilityCombobox.tsx",lineNumber:100,columnNumber:17},this)]},`${a.serverId}:${a.name}`,!0,{fileName:"/app/dashboard/src/components/common/form/CapabilityCombobox.tsx",lineNumber:82,columnNumber:13},this))},void 0,!1,{fileName:"/app/dashboard/src/components/common/form/CapabilityCombobox.tsx",lineNumber:80,columnNumber:9},this),u&&w.length===0&&x&&e.jsxDEV("div",{className:"absolute z-50 left-0 right-0 mt-1 rounded-md border border-surface-border bg-surface shadow-lg px-3 py-4 text-center",children:e.jsxDEV("p",{className:"text-[11px] text-text-quaternary",children:['No capabilities match "',x,'"']},void 0,!0,{fileName:"/app/dashboard/src/components/common/form/CapabilityCombobox.tsx",lineNumber:109,columnNumber:11},this)},void 0,!1,{fileName:"/app/dashboard/src/components/common/form/CapabilityCombobox.tsx",lineNumber:108,columnNumber:9},this)]},void 0,!0,{fileName:"/app/dashboard/src/components/common/form/CapabilityCombobox.tsx",lineNumber:58,columnNumber:5},this)}const qe={durable:"Workflow",pipeline:"Pipeline",capability:"Capability",mcp_query:"MCP Query"},We=["durable","pipeline","capability","mcp_query"];function te({reactionType:s,onReactionTypeChange:t,workflowType:l,onWorkflowTypeChange:o,pipelineId:p,onPipelineIdChange:u,serverId:i,toolName:x,onCapabilityChange:d,mcpPrompt:c,onMcpPromptChange:h,availableTypes:n=[...We]}){const{data:m}=ve(),w=(m??[]).filter(r=>r.invocable).map(r=>r.workflow_type),{data:b}=Se({status:"active"}),a=((b==null?void 0:b.workflows)??[]).map(r=>({id:r.id,name:r.graph_topic||r.id}));return e.jsxDEV("div",{className:"space-y-4",children:[e.jsxDEV("div",{className:"flex gap-1",children:n.map(r=>{const g=s===r;return e.jsxDEV("button",{type:"button",onClick:()=>t(r),className:`px-3 py-1.5 text-[11px] font-medium rounded-md transition-colors ${g?"bg-accent/10 text-accent":"text-text-tertiary hover:text-text-primary hover:bg-surface-hover"}`,children:qe[r]},r,!1,{fileName:"/app/dashboard/src/components/common/form/ReactionSelector.tsx",lineNumber:55,columnNumber:13},this)})},void 0,!1,{fileName:"/app/dashboard/src/components/common/form/ReactionSelector.tsx",lineNumber:51,columnNumber:7},this),s==="durable"&&e.jsxDEV("div",{children:[e.jsxDEV("label",{className:"label",children:"Workflow *"},void 0,!1,{fileName:"/app/dashboard/src/components/common/form/ReactionSelector.tsx",lineNumber:74,columnNumber:11},this),e.jsxDEV("select",{value:l,onChange:r=>o(r.target.value),className:"input",children:[e.jsxDEV("option",{value:"",children:"Select workflow..."},void 0,!1,{fileName:"/app/dashboard/src/components/common/form/ReactionSelector.tsx",lineNumber:76,columnNumber:13},this),w.map(r=>e.jsxDEV("option",{value:r,children:r},r,!1,{fileName:"/app/dashboard/src/components/common/form/ReactionSelector.tsx",lineNumber:77,columnNumber:45},this))]},void 0,!0,{fileName:"/app/dashboard/src/components/common/form/ReactionSelector.tsx",lineNumber:75,columnNumber:11},this)]},void 0,!0,{fileName:"/app/dashboard/src/components/common/form/ReactionSelector.tsx",lineNumber:73,columnNumber:9},this),s==="pipeline"&&e.jsxDEV("div",{children:[e.jsxDEV("label",{className:"label",children:"Pipeline *"},void 0,!1,{fileName:"/app/dashboard/src/components/common/form/ReactionSelector.tsx",lineNumber:84,columnNumber:11},this),e.jsxDEV("select",{value:p,onChange:r=>u(r.target.value),className:"input",children:[e.jsxDEV("option",{value:"",children:"Select pipeline..."},void 0,!1,{fileName:"/app/dashboard/src/components/common/form/ReactionSelector.tsx",lineNumber:86,columnNumber:13},this),a.map(r=>e.jsxDEV("option",{value:r.id,children:r.name},r.id,!1,{fileName:"/app/dashboard/src/components/common/form/ReactionSelector.tsx",lineNumber:87,columnNumber:35},this))]},void 0,!0,{fileName:"/app/dashboard/src/components/common/form/ReactionSelector.tsx",lineNumber:85,columnNumber:11},this)]},void 0,!0,{fileName:"/app/dashboard/src/components/common/form/ReactionSelector.tsx",lineNumber:83,columnNumber:9},this),s==="capability"&&e.jsxDEV("div",{children:[e.jsxDEV("label",{className:"label",children:"Capability *"},void 0,!1,{fileName:"/app/dashboard/src/components/common/form/ReactionSelector.tsx",lineNumber:94,columnNumber:11},this),e.jsxDEV(Me,{serverId:i,toolName:x,onChange:d},void 0,!1,{fileName:"/app/dashboard/src/components/common/form/ReactionSelector.tsx",lineNumber:95,columnNumber:11},this)]},void 0,!0,{fileName:"/app/dashboard/src/components/common/form/ReactionSelector.tsx",lineNumber:93,columnNumber:9},this),s==="mcp_query"&&h&&e.jsxDEV("div",{children:[e.jsxDEV("label",{className:"label",children:"Prompt *"},void 0,!1,{fileName:"/app/dashboard/src/components/common/form/ReactionSelector.tsx",lineNumber:105,columnNumber:11},this),e.jsxDEV("textarea",{value:c??"",onChange:r=>h(r.target.value),placeholder:"Analyze the error and suggest remediation...",rows:3,className:"input resize-none"},void 0,!1,{fileName:"/app/dashboard/src/components/common/form/ReactionSelector.tsx",lineNumber:106,columnNumber:11},this)]},void 0,!0,{fileName:"/app/dashboard/src/components/common/form/ReactionSelector.tsx",lineNumber:104,columnNumber:9},this)]},void 0,!0,{fileName:"/app/dashboard/src/components/common/form/ReactionSelector.tsx",lineNumber:49,columnNumber:5},this)}const $e={task:"bg-blue-400/15 text-blue-400",workflow:"bg-accent/15 text-accent",escalation:"bg-amber-400/15 text-amber-400",activity:"bg-cyan-400/15 text-cyan-400",knowledge:"bg-violet-400/15 text-violet-400",file:"bg-orange-400/15 text-orange-400",agent:"bg-emerald-400/15 text-emerald-400",app:"bg-rose-400/15 text-rose-400",milestone:"bg-violet-400/15 text-violet-400"};function Oe({form:s,set:t}){const{data:l}=we({limit:200}),{data:o}=se(),p=(l==null?void 0:l.topics)??[],u=N.useMemo(()=>{var a;return((a=o==null?void 0:o.categories)==null?void 0:a.flatMap(r=>r.tools))??[]},[o]),[i,x]=N.useState(0),d=(a,r,g)=>{const f=[...s.subscriptions];f[a]={...f[a],[r]:g},t("subscriptions",f)},c=()=>{t("subscriptions",[...s.subscriptions,{...Ve}]),x(s.subscriptions.length)},h=a=>{t("subscriptions",s.subscriptions.filter((r,g)=>g!==a)),i>=s.subscriptions.length-1&&x(Math.max(0,s.subscriptions.length-2))},n=s.subscriptions,m=n[i],w=a=>a.topic?a.reaction_type==="durable"?!!a.workflow_type:a.reaction_type==="pipeline"?!!a.pipeline_id:a.reaction_type==="mcp_query"?!!a.mcp_prompt:a.reaction_type==="capability"?!!a.server_id&&!!a.tool_name:!1:!1,b=m?p.find(a=>a.topic===m.topic):void 0;return n.length===0?e.jsxDEV("div",{className:"max-w-xl",children:[e.jsxDEV("div",{className:"border-l-2 border-accent/30 pl-3 py-1 flex items-start justify-between mb-8",children:[e.jsxDEV("p",{className:"text-[12px] text-text-secondary italic leading-relaxed",children:"Optional. When a matching event is published, the automation runs the configured workflow with the event payload."},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/SubscriptionsStep.tsx",lineNumber:68,columnNumber:11},this),e.jsxDEV("button",{onClick:()=>{window.location.hash="#docs:agents.md:subscriptions"},className:"text-text-quaternary hover:text-accent transition-colors shrink-0 ml-3",title:"Docs: Subscriptions",children:e.jsxDEV(R,{className:"w-3 h-3",strokeWidth:1.5},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/SubscriptionsStep.tsx",lineNumber:71,columnNumber:206},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/SubscriptionsStep.tsx",lineNumber:71,columnNumber:11},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/agents/detail/SubscriptionsStep.tsx",lineNumber:67,columnNumber:9},this),e.jsxDEV("div",{className:"flex flex-col items-center justify-center py-12 text-center",children:[e.jsxDEV(Y,{className:"w-8 h-8 text-text-quaternary/40 mb-3",strokeWidth:1},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/SubscriptionsStep.tsx",lineNumber:74,columnNumber:11},this),e.jsxDEV("p",{className:"text-sm text-text-tertiary mb-2",children:"No event subscriptions yet"},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/SubscriptionsStep.tsx",lineNumber:75,columnNumber:11},this),e.jsxDEV("p",{className:"text-[11px] text-text-quaternary max-w-sm mb-6",children:"Each subscription listens for a topic pattern and runs a workflow when it matches."},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/SubscriptionsStep.tsx",lineNumber:76,columnNumber:11},this),e.jsxDEV("button",{onClick:c,className:"flex items-center gap-2 text-xs text-accent hover:text-accent-hover transition-colors",children:[e.jsxDEV($,{className:"w-3.5 h-3.5"},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/SubscriptionsStep.tsx",lineNumber:80,columnNumber:13},this)," Add first subscription"]},void 0,!0,{fileName:"/app/dashboard/src/pages/agents/detail/SubscriptionsStep.tsx",lineNumber:79,columnNumber:11},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/agents/detail/SubscriptionsStep.tsx",lineNumber:73,columnNumber:9},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/agents/detail/SubscriptionsStep.tsx",lineNumber:66,columnNumber:7},this):e.jsxDEV("div",{children:[e.jsxDEV("div",{className:"border-l-2 border-accent/30 pl-3 py-1 flex items-start justify-between mb-6",children:[e.jsxDEV("p",{className:"text-[12px] text-text-secondary italic leading-relaxed",children:"Optional. When a matching event is published, the automation runs the configured workflow with the event payload."},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/SubscriptionsStep.tsx",lineNumber:90,columnNumber:9},this),e.jsxDEV("button",{onClick:()=>{window.location.hash="#docs:agents.md:subscriptions"},className:"text-text-quaternary hover:text-accent transition-colors shrink-0 ml-3",title:"Docs: Subscriptions",children:e.jsxDEV(R,{className:"w-3 h-3",strokeWidth:1.5},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/SubscriptionsStep.tsx",lineNumber:93,columnNumber:204},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/SubscriptionsStep.tsx",lineNumber:93,columnNumber:9},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/agents/detail/SubscriptionsStep.tsx",lineNumber:89,columnNumber:7},this),e.jsxDEV("div",{className:"flex gap-8",children:[e.jsxDEV("div",{className:"w-52 shrink-0 space-y-0.5",children:[n.map((a,r)=>e.jsxDEV("div",{className:`group/sub flex items-center rounded-md transition-colors ${i===r?"bg-accent/10 text-accent":"text-text-tertiary hover:text-text-primary hover:bg-surface-hover"}`,children:[e.jsxDEV("button",{onClick:()=>x(r),className:"flex-1 text-left px-3 py-2 min-w-0",children:[e.jsxDEV("div",{className:"flex items-center gap-1.5",children:[e.jsxDEV("span",{className:`w-1.5 h-1.5 rounded-full shrink-0 ${w(a)?"bg-emerald-400":"bg-zinc-500"}`},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/SubscriptionsStep.tsx",lineNumber:105,columnNumber:19},this),e.jsxDEV("span",{className:"text-[11px] font-mono truncate",children:a.topic||"new subscription"},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/SubscriptionsStep.tsx",lineNumber:106,columnNumber:19},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/agents/detail/SubscriptionsStep.tsx",lineNumber:104,columnNumber:17},this),e.jsxDEV("span",{className:"text-[9px] text-text-quaternary ml-3",children:["→ ",a.workflow_type||a.tool_name||a.reaction_type]},void 0,!0,{fileName:"/app/dashboard/src/pages/agents/detail/SubscriptionsStep.tsx",lineNumber:108,columnNumber:17},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/agents/detail/SubscriptionsStep.tsx",lineNumber:103,columnNumber:15},this),e.jsxDEV("button",{onClick:g=>{g.stopPropagation(),confirm(`Remove subscription "${a.topic||"new"}"?
|
|
2
|
+
|
|
3
|
+
This takes effect when you save.`)&&h(r)},className:"opacity-0 group-hover/sub:opacity-100 px-2 text-text-quaternary hover:text-red-400 transition-all",title:"Remove",children:e.jsxDEV(X,{className:"w-3 h-3"},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/SubscriptionsStep.tsx",lineNumber:111,columnNumber:17},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/SubscriptionsStep.tsx",lineNumber:110,columnNumber:15},this)]},r,!0,{fileName:"/app/dashboard/src/pages/agents/detail/SubscriptionsStep.tsx",lineNumber:100,columnNumber:13},this)),e.jsxDEV("button",{onClick:c,className:"w-full flex items-center gap-1.5 px-3 py-2 text-[11px] text-accent hover:text-accent-hover transition-colors",children:[e.jsxDEV($,{className:"w-3 h-3"},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/SubscriptionsStep.tsx",lineNumber:116,columnNumber:13},this)," Add"]},void 0,!0,{fileName:"/app/dashboard/src/pages/agents/detail/SubscriptionsStep.tsx",lineNumber:115,columnNumber:11},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/agents/detail/SubscriptionsStep.tsx",lineNumber:98,columnNumber:9},this),m&&e.jsxDEV("div",{className:"flex-1 min-w-0 space-y-12",children:[e.jsxDEV("div",{children:[e.jsxDEV("label",{className:V,children:"When this event fires"},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/SubscriptionsStep.tsx",lineNumber:126,columnNumber:15},this),e.jsxDEV(Ke,{value:m.topic,onChange:a=>d(i,"topic",a),topics:p},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/SubscriptionsStep.tsx",lineNumber:127,columnNumber:15},this),(b==null?void 0:b.payload_schema)&&e.jsxDEV("div",{className:"mt-3 p-3 rounded-md bg-surface-sunken border border-surface-border",children:[e.jsxDEV("p",{className:"text-[10px] text-text-quaternary mb-1 uppercase tracking-wider font-medium",children:"Payload Schema"},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/SubscriptionsStep.tsx",lineNumber:136,columnNumber:19},this),e.jsxDEV("pre",{className:"text-[11px] font-mono text-text-secondary whitespace-pre-wrap overflow-x-auto max-h-40",children:JSON.stringify(b.payload_schema.properties??b.payload_schema,null,2)},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/SubscriptionsStep.tsx",lineNumber:137,columnNumber:19},this),b.description&&e.jsxDEV("p",{className:"text-[10px] text-text-tertiary mt-2 italic",children:b.description},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/SubscriptionsStep.tsx",lineNumber:141,columnNumber:21},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/agents/detail/SubscriptionsStep.tsx",lineNumber:135,columnNumber:17},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/agents/detail/SubscriptionsStep.tsx",lineNumber:125,columnNumber:13},this),e.jsxDEV("div",{children:[e.jsxDEV("label",{className:V,children:"Run this reaction"},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/SubscriptionsStep.tsx",lineNumber:149,columnNumber:15},this),e.jsxDEV(te,{reactionType:m.reaction_type,onReactionTypeChange:a=>d(i,"reaction_type",a),workflowType:m.workflow_type,onWorkflowTypeChange:a=>d(i,"workflow_type",a),pipelineId:m.pipeline_id,onPipelineIdChange:a=>d(i,"pipeline_id",a),serverId:m.server_id,toolName:m.tool_name,onCapabilityChange:(a,r)=>{var C;const g=[...s.subscriptions],f={...g[i],server_id:a,tool_name:r},j=u.find(S=>S.serverId===a&&S.name===r),P=(C=j==null?void 0:j.inputSchema)==null?void 0:C.properties;if(P&&r){const S={};for(const I of Object.keys(P))I.startsWith("_")||(S[I]=`{event.data.${I}}`);f.input_mapping=JSON.stringify(S,null,2)}g[i]=f,t("subscriptions",g)},mcpPrompt:m.mcp_prompt,onMcpPromptChange:a=>d(i,"mcp_prompt",a)},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/SubscriptionsStep.tsx",lineNumber:150,columnNumber:15},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/agents/detail/SubscriptionsStep.tsx",lineNumber:148,columnNumber:13},this),e.jsxDEV("div",{className:"grid grid-cols-2 gap-6",children:[e.jsxDEV("div",{children:[e.jsxDEV("label",{className:V,children:"As identity"},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/SubscriptionsStep.tsx",lineNumber:185,columnNumber:17},this),e.jsxDEV(ae,{selected:m.execute_as,onChange:a=>d(i,"execute_as",a)},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/SubscriptionsStep.tsx",lineNumber:186,columnNumber:17},this),e.jsxDEV("p",{className:E,children:"Identity used when invoking the workflow."},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/SubscriptionsStep.tsx",lineNumber:187,columnNumber:17},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/agents/detail/SubscriptionsStep.tsx",lineNumber:184,columnNumber:15},this),e.jsxDEV("div",{children:[e.jsxDEV("label",{className:V,children:"But only if"},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/SubscriptionsStep.tsx",lineNumber:190,columnNumber:17},this),e.jsxDEV("input",{type:"text",value:m.filter,onChange:a=>d(i,"filter",a.target.value),placeholder:"No filter (all matching events)",className:`${k} font-mono text-xs`},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/SubscriptionsStep.tsx",lineNumber:191,columnNumber:17},this),e.jsxDEV("p",{className:E,children:["JSON filter against event.data, e.g. ",'{"status": 422}']},void 0,!0,{fileName:"/app/dashboard/src/pages/agents/detail/SubscriptionsStep.tsx",lineNumber:192,columnNumber:17},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/agents/detail/SubscriptionsStep.tsx",lineNumber:189,columnNumber:15},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/agents/detail/SubscriptionsStep.tsx",lineNumber:183,columnNumber:13},this),e.jsxDEV("div",{children:[e.jsxDEV("label",{className:V,children:"With this data"},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/SubscriptionsStep.tsx",lineNumber:198,columnNumber:15},this),m.reaction_type==="capability"&&m.tool_name?e.jsxDEV(Te,{tool:u.find(a=>a.serverId===m.server_id&&a.name===m.tool_name),value:m.input_mapping,onChange:a=>d(i,"input_mapping",a),eventSchema:b==null?void 0:b.payload_schema},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/SubscriptionsStep.tsx",lineNumber:200,columnNumber:17},this):e.jsxDEV(e.Fragment,{children:[e.jsxDEV("textarea",{value:m.input_mapping,onChange:a=>d(i,"input_mapping",a.target.value),rows:10,className:O,placeholder:`{
|
|
4
|
+
"data": {
|
|
5
|
+
"orderId": "{event.data.orderId}",
|
|
6
|
+
"error": "{event.data.error}"
|
|
7
|
+
}
|
|
8
|
+
}`},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/SubscriptionsStep.tsx",lineNumber:208,columnNumber:19},this),e.jsxDEV("p",{className:E,children:["Maps event fields to workflow input. ","{event.data.fieldName}"," resolves at runtime."]},void 0,!0,{fileName:"/app/dashboard/src/pages/agents/detail/SubscriptionsStep.tsx",lineNumber:209,columnNumber:19},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/agents/detail/SubscriptionsStep.tsx",lineNumber:207,columnNumber:17},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/agents/detail/SubscriptionsStep.tsx",lineNumber:197,columnNumber:13},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/agents/detail/SubscriptionsStep.tsx",lineNumber:122,columnNumber:11},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/agents/detail/SubscriptionsStep.tsx",lineNumber:96,columnNumber:7},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/agents/detail/SubscriptionsStep.tsx",lineNumber:88,columnNumber:5},this)}function Te({tool:s,value:t,onChange:l,eventSchema:o}){var w,b;const[p,u]=N.useState(!1),i=((w=s==null?void 0:s.inputSchema)==null?void 0:w.properties)??{},x=((b=s==null?void 0:s.inputSchema)==null?void 0:b.required)??[],d=Object.entries(i).filter(([a])=>!a.startsWith("_")),c=N.useMemo(()=>[...d].sort(([a],[r])=>{const g=x.indexOf(a),f=x.indexOf(r);return g!==-1&&f!==-1?g-f:g!==-1?-1:f!==-1?1:a.localeCompare(r)}),[d,x]),h=N.useMemo(()=>{const a=[{value:"{event.type}",label:"event type"},{value:"{event.source}",label:"event source"},{value:"{event.timestamp}",label:"ISO timestamp"},{value:"{event.workflowId}",label:"workflow ID"},{value:"{event.workflowName}",label:"workflow name"}],r=o==null?void 0:o.properties;if(r)for(const[g,f]of Object.entries(r))a.push({value:`{event.data.${g}}`,label:f.description||g});return a},[o]),n=N.useMemo(()=>{try{return JSON.parse(t)}catch{return{}}},[t]),m=(a,r)=>{const g={...n,[a]:r};l(JSON.stringify(g,null,2))};return c.length===0||p?e.jsxDEV("div",{children:[c.length>0&&e.jsxDEV("div",{className:"flex justify-end mb-1",children:e.jsxDEV("button",{type:"button",onClick:()=>u(!1),className:"text-[10px] text-accent hover:text-accent-hover transition-colors",children:"Form view"},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/SubscriptionsStep.tsx",lineNumber:281,columnNumber:13},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/SubscriptionsStep.tsx",lineNumber:280,columnNumber:11},this),e.jsxDEV("textarea",{value:t,onChange:a=>l(a.target.value),rows:8,className:O,placeholder:`{
|
|
9
|
+
"domain": "{event.data.name}",
|
|
10
|
+
"key": "{event.data.path}"
|
|
11
|
+
}`},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/SubscriptionsStep.tsx",lineNumber:284,columnNumber:9},this),e.jsxDEV("p",{className:E,children:["Maps event fields to capability inputs. ","{event.data.fieldName}"," resolves at runtime."]},void 0,!0,{fileName:"/app/dashboard/src/pages/agents/detail/SubscriptionsStep.tsx",lineNumber:285,columnNumber:9},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/agents/detail/SubscriptionsStep.tsx",lineNumber:278,columnNumber:7},this):e.jsxDEV("div",{children:[e.jsxDEV("div",{className:"flex items-center justify-between mb-3",children:[e.jsxDEV("p",{className:"text-[11px] text-text-tertiary",children:"Map each input to an event field or enter a static value."},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/SubscriptionsStep.tsx",lineNumber:293,columnNumber:9},this),e.jsxDEV("button",{type:"button",onClick:()=>u(!0),className:"text-[10px] text-text-tertiary hover:text-accent transition-colors",children:"Raw JSON"},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/SubscriptionsStep.tsx",lineNumber:296,columnNumber:9},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/agents/detail/SubscriptionsStep.tsx",lineNumber:292,columnNumber:7},this),e.jsxDEV("div",{className:"space-y-4",children:c.map(([a,r])=>{const g=x.includes(a),f=r.description,j=r.type,P=typeof n[a]=="string"?n[a]:typeof n[a]=="object"?JSON.stringify(n[a]):n[a]!=null?String(n[a]):"";return e.jsxDEV("div",{className:"bg-surface-sunken/30 rounded-md px-4 py-3",children:[e.jsxDEV("div",{className:"flex items-baseline gap-2 mb-0.5",children:[e.jsxDEV("label",{className:"text-[11px] font-semibold uppercase tracking-wider text-text-secondary",children:[a.replace(/[_-]/g," "),g&&e.jsxDEV("span",{className:"text-status-error ml-0.5",children:"*"},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/SubscriptionsStep.tsx",lineNumber:313,columnNumber:29},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/agents/detail/SubscriptionsStep.tsx",lineNumber:311,columnNumber:17},this),j&&e.jsxDEV("span",{className:"text-[9px] text-text-quaternary",children:j},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/SubscriptionsStep.tsx",lineNumber:315,columnNumber:31},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/agents/detail/SubscriptionsStep.tsx",lineNumber:310,columnNumber:15},this),f&&e.jsxDEV("p",{className:"text-[10px] text-text-quaternary mb-2",children:f},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/SubscriptionsStep.tsx",lineNumber:317,columnNumber:24},this),e.jsxDEV(Le,{value:P,onChange:C=>m(a,C),suggestions:h,fieldType:j,placeholder:`{event.data.${a}}`},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/SubscriptionsStep.tsx",lineNumber:318,columnNumber:15},this)]},a,!0,{fileName:"/app/dashboard/src/pages/agents/detail/SubscriptionsStep.tsx",lineNumber:309,columnNumber:13},this)})},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/SubscriptionsStep.tsx",lineNumber:299,columnNumber:7},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/agents/detail/SubscriptionsStep.tsx",lineNumber:291,columnNumber:5},this)}function Le({value:s,onChange:t,suggestions:l,fieldType:o,placeholder:p}){const[u,i]=N.useState(!1),[x,d]=N.useState(""),c=N.useRef(null);N.useEffect(()=>{if(!u)return;function n(m){c.current&&!c.current.contains(m.target)&&i(!1)}return document.addEventListener("mousedown",n),()=>document.removeEventListener("mousedown",n)},[u]);const h=l.filter(n=>n.value.toLowerCase().includes(x.toLowerCase())||n.label.toLowerCase().includes(x.toLowerCase()));return o==="object"?e.jsxDEV("textarea",{value:s,onChange:n=>{try{t(JSON.parse(n.target.value))}catch{t(n.target.value)}},rows:3,className:`${O} text-xs`,placeholder:'{ "source": "{event.source}" }'},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/SubscriptionsStep.tsx",lineNumber:361,columnNumber:7},this):e.jsxDEV("div",{ref:c,className:"relative",children:[e.jsxDEV("input",{type:"text",value:s,onFocus:()=>{i(!0),d("")},onChange:n=>{t(n.target.value),d(n.target.value),u||i(!0)},className:"input font-mono text-xs w-full",placeholder:p},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/SubscriptionsStep.tsx",lineNumber:376,columnNumber:7},this),u&&h.length>0&&e.jsxDEV("div",{className:"absolute z-50 left-0 right-0 mt-1 max-h-48 overflow-y-auto rounded-md border border-surface-border bg-surface shadow-lg",children:h.map(n=>e.jsxDEV("button",{type:"button",onClick:()=>{t(n.value),i(!1)},className:`w-full text-left px-3 py-1.5 hover:bg-surface-hover transition-colors flex items-center gap-3 ${s===n.value?"bg-accent/5":""}`,children:[e.jsxDEV("span",{className:"text-[11px] font-mono text-accent shrink-0",children:n.value},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/SubscriptionsStep.tsx",lineNumber:393,columnNumber:15},this),e.jsxDEV("span",{className:"text-[10px] text-text-quaternary truncate",children:n.label},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/SubscriptionsStep.tsx",lineNumber:394,columnNumber:15},this)]},n.value,!0,{fileName:"/app/dashboard/src/pages/agents/detail/SubscriptionsStep.tsx",lineNumber:387,columnNumber:13},this))},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/SubscriptionsStep.tsx",lineNumber:385,columnNumber:9},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/agents/detail/SubscriptionsStep.tsx",lineNumber:375,columnNumber:5},this)}function Ke({value:s,onChange:t,topics:l}){const[o,p]=N.useState(!1),[u,i]=N.useState(""),x=N.useRef(null),d=N.useRef(null);N.useEffect(()=>{function n(m){d.current&&!d.current.contains(m.target)&&p(!1)}return o&&document.addEventListener("mousedown",n),()=>document.removeEventListener("mousedown",n)},[o]);const c=o?u:s,h=l.filter(n=>n.topic.toLowerCase().includes((o?u:"").toLowerCase())||(n.description??"").toLowerCase().includes((o?u:"").toLowerCase()));return e.jsxDEV("div",{ref:d,className:"relative",children:[e.jsxDEV("input",{ref:x,type:"text",value:c,onFocus:()=>{p(!0),i(s)},onChange:n=>{const m=n.target.value;i(m),t(m),o||p(!0)},placeholder:"workflow.failed or app.>",className:`${k} font-mono`},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/SubscriptionsStep.tsx",lineNumber:434,columnNumber:7},this),o&&h.length>0&&e.jsxDEV("div",{className:"absolute z-50 left-0 right-0 mt-1 max-h-64 overflow-y-auto rounded-md border border-surface-border bg-surface shadow-lg",children:h.map(n=>{const m=$e[n.category]??"bg-zinc-400/15 text-zinc-400";return e.jsxDEV("button",{type:"button",onClick:()=>{t(n.topic),i(n.topic),p(!1)},className:`w-full text-left px-3 py-2 hover:bg-surface-hover transition-colors flex items-center gap-3 ${s===n.topic?"bg-accent/5":""}`,children:[e.jsxDEV("span",{className:"text-[11px] font-mono text-text-primary shrink-0",children:n.topic},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/SubscriptionsStep.tsx",lineNumber:466,columnNumber:17},this),e.jsxDEV("span",{className:`inline-flex items-center px-1.5 py-0.5 rounded text-[9px] font-medium shrink-0 ${m}`,children:n.category},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/SubscriptionsStep.tsx",lineNumber:467,columnNumber:17},this),n.description&&e.jsxDEV("span",{className:"text-[10px] text-text-quaternary truncate",children:n.description},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/SubscriptionsStep.tsx",lineNumber:469,columnNumber:19},this)]},n.topic,!0,{fileName:"/app/dashboard/src/pages/agents/detail/SubscriptionsStep.tsx",lineNumber:454,columnNumber:15},this)})},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/SubscriptionsStep.tsx",lineNumber:450,columnNumber:9},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/agents/detail/SubscriptionsStep.tsx",lineNumber:433,columnNumber:5},this)}const Fe=["*/5 * * * *","*/15 * * * *","0 * * * *","0 */4 * * *","0 7 * * *","0 9 * * 1-5"];function F(s){return{"* * * * *":"Every minute","*/5 * * * *":"Every 5 min","*/15 * * * *":"Every 15 min","0 * * * *":"Hourly","0 */4 * * *":"Every 4 hours","0 7 * * *":"Daily 7 AM UTC","0 9 * * 1-5":"Weekdays 9 AM UTC","0 0 * * 1":"Weekly Monday"}[s]||s}function Je({form:s,set:t}){const[l,o]=N.useState(0),p=(c,h,n)=>{const m=[...s.schedules];m[c]={...m[c],[h]:n},t("schedules",m)},u=()=>{t("schedules",[...s.schedules,{..._e}]),o(s.schedules.length)},i=c=>{t("schedules",s.schedules.filter((h,n)=>n!==c)),l>=s.schedules.length-1&&o(Math.max(0,s.schedules.length-2))},x=s.schedules,d=x[l];return x.length===0?e.jsxDEV("div",{children:[e.jsxDEV("div",{className:"border-l-2 border-accent/30 pl-3 py-1 mb-8 flex items-start justify-between",children:[e.jsxDEV("p",{className:"text-[12px] text-text-secondary italic leading-relaxed",children:"Optional. Each schedule runs a workflow on a cron timer."},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/ScheduleStep.tsx",lineNumber:62,columnNumber:11},this),e.jsxDEV("button",{onClick:()=>{window.location.hash="#docs:agents.md:schedule"},className:"text-text-quaternary hover:text-accent transition-colors shrink-0 ml-3",title:"Docs: Schedule",children:e.jsxDEV(R,{className:"w-3 h-3",strokeWidth:1.5},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/ScheduleStep.tsx",lineNumber:65,columnNumber:196},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/ScheduleStep.tsx",lineNumber:65,columnNumber:11},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/agents/detail/ScheduleStep.tsx",lineNumber:61,columnNumber:9},this),e.jsxDEV("div",{className:"flex flex-col items-center justify-center py-12 text-center",children:[e.jsxDEV(B,{className:"w-8 h-8 text-text-quaternary/40 mb-3",strokeWidth:1},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/ScheduleStep.tsx",lineNumber:68,columnNumber:11},this),e.jsxDEV("p",{className:"text-sm text-text-tertiary mb-2",children:"No schedules"},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/ScheduleStep.tsx",lineNumber:69,columnNumber:11},this),e.jsxDEV("p",{className:"text-[11px] text-text-quaternary max-w-sm mb-6",children:"Add a schedule to run a workflow on a recurring cron timer."},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/ScheduleStep.tsx",lineNumber:70,columnNumber:11},this),e.jsxDEV("button",{onClick:u,className:"flex items-center gap-2 text-xs text-accent hover:text-accent-hover transition-colors",children:[e.jsxDEV($,{className:"w-3.5 h-3.5"},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/ScheduleStep.tsx",lineNumber:74,columnNumber:13},this)," Add schedule"]},void 0,!0,{fileName:"/app/dashboard/src/pages/agents/detail/ScheduleStep.tsx",lineNumber:73,columnNumber:11},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/agents/detail/ScheduleStep.tsx",lineNumber:67,columnNumber:9},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/agents/detail/ScheduleStep.tsx",lineNumber:60,columnNumber:7},this):e.jsxDEV("div",{children:[e.jsxDEV("div",{className:"border-l-2 border-accent/30 pl-3 py-1 mb-6 flex items-start justify-between",children:[e.jsxDEV("p",{className:"text-[12px] text-text-secondary italic leading-relaxed",children:"Each schedule runs a workflow on a timer. An automation can have multiple schedules targeting different workflows."},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/ScheduleStep.tsx",lineNumber:84,columnNumber:9},this),e.jsxDEV("button",{onClick:()=>{window.location.hash="#docs:agents.md:schedule"},className:"text-text-quaternary hover:text-accent transition-colors shrink-0 ml-3",title:"Docs: Schedule",children:e.jsxDEV(R,{className:"w-3 h-3",strokeWidth:1.5},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/ScheduleStep.tsx",lineNumber:87,columnNumber:194},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/ScheduleStep.tsx",lineNumber:87,columnNumber:9},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/agents/detail/ScheduleStep.tsx",lineNumber:83,columnNumber:7},this),e.jsxDEV("div",{className:"flex gap-8",children:[e.jsxDEV("div",{className:"w-48 shrink-0 space-y-0.5",children:[x.map((c,h)=>e.jsxDEV("div",{className:`group/sched flex items-center rounded-md transition-colors ${l===h?"bg-accent/10 text-accent":"text-text-tertiary hover:text-text-primary hover:bg-surface-hover"}`,children:[e.jsxDEV("button",{onClick:()=>o(h),className:"flex-1 text-left px-3 py-2 min-w-0",children:[e.jsxDEV("span",{className:"text-[11px] font-mono block",children:c.cron||"new schedule"},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/ScheduleStep.tsx",lineNumber:98,columnNumber:17},this),e.jsxDEV("span",{className:"text-[9px] text-text-quaternary",children:[(c.reaction_type==="pipeline"?c.pipeline_id:c.workflow_type)||"no target"," · ",F(c.cron)]},void 0,!0,{fileName:"/app/dashboard/src/pages/agents/detail/ScheduleStep.tsx",lineNumber:99,columnNumber:17},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/agents/detail/ScheduleStep.tsx",lineNumber:97,columnNumber:15},this),e.jsxDEV("button",{onClick:n=>{n.stopPropagation(),confirm(`Remove schedule "${c.cron||"new"}"?
|
|
12
|
+
|
|
13
|
+
This takes effect when you save.`)&&i(h)},className:"opacity-0 group-hover/sched:opacity-100 px-2 text-text-quaternary hover:text-red-400 transition-all",title:"Remove",children:e.jsxDEV(X,{className:"w-3 h-3"},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/ScheduleStep.tsx",lineNumber:102,columnNumber:17},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/ScheduleStep.tsx",lineNumber:101,columnNumber:15},this)]},h,!0,{fileName:"/app/dashboard/src/pages/agents/detail/ScheduleStep.tsx",lineNumber:94,columnNumber:13},this)),e.jsxDEV("button",{onClick:u,className:"w-full flex items-center gap-1.5 px-3 py-2 text-[11px] text-accent hover:text-accent-hover transition-colors",children:[e.jsxDEV($,{className:"w-3 h-3"},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/ScheduleStep.tsx",lineNumber:107,columnNumber:13},this)," Add"]},void 0,!0,{fileName:"/app/dashboard/src/pages/agents/detail/ScheduleStep.tsx",lineNumber:106,columnNumber:11},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/agents/detail/ScheduleStep.tsx",lineNumber:92,columnNumber:9},this),d&&e.jsxDEV("div",{className:"flex-1 min-w-0 space-y-12",children:[e.jsxDEV("div",{children:[e.jsxDEV("label",{className:V,children:"Run every"},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/ScheduleStep.tsx",lineNumber:117,columnNumber:15},this),e.jsxDEV("input",{type:"text",value:d.cron,onChange:c=>p(l,"cron",c.target.value),placeholder:"0 * * * *",className:`${k} font-mono`},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/ScheduleStep.tsx",lineNumber:118,columnNumber:15},this),d.cron&&e.jsxDEV("p",{className:"text-[11px] text-accent/80 mt-1",children:F(d.cron)},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/ScheduleStep.tsx",lineNumber:119,columnNumber:30},this),e.jsxDEV("div",{className:"flex gap-3 mt-2 overflow-x-auto",children:Fe.map(c=>e.jsxDEV("button",{type:"button",onClick:()=>p(l,"cron",c),className:`text-[10px] font-mono whitespace-nowrap transition-colors ${d.cron===c?"text-accent font-medium":"text-accent/50 hover:text-accent"}`,children:F(c)},c,!1,{fileName:"/app/dashboard/src/pages/agents/detail/ScheduleStep.tsx",lineNumber:122,columnNumber:19},this))},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/ScheduleStep.tsx",lineNumber:120,columnNumber:15},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/agents/detail/ScheduleStep.tsx",lineNumber:116,columnNumber:13},this),e.jsxDEV("div",{children:[e.jsxDEV("label",{className:V,children:"Run this reaction"},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/ScheduleStep.tsx",lineNumber:131,columnNumber:15},this),e.jsxDEV(te,{reactionType:d.reaction_type,onReactionTypeChange:c=>p(l,"reaction_type",c),workflowType:d.workflow_type,onWorkflowTypeChange:c=>p(l,"workflow_type",c),pipelineId:d.pipeline_id,onPipelineIdChange:c=>p(l,"pipeline_id",c),serverId:d.server_id,toolName:d.tool_name,onCapabilityChange:(c,h)=>{p(l,"server_id",c),p(l,"tool_name",h)},availableTypes:["durable","pipeline","capability"]},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/ScheduleStep.tsx",lineNumber:132,columnNumber:15},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/agents/detail/ScheduleStep.tsx",lineNumber:130,columnNumber:13},this),e.jsxDEV("div",{children:[e.jsxDEV("label",{className:V,children:"As identity"},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/ScheduleStep.tsx",lineNumber:149,columnNumber:15},this),e.jsxDEV(ae,{selected:d.execute_as,onChange:c=>p(l,"execute_as",c)},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/ScheduleStep.tsx",lineNumber:150,columnNumber:15},this),e.jsxDEV("p",{className:E,children:"Identity used when invoking."},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/ScheduleStep.tsx",lineNumber:151,columnNumber:15},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/agents/detail/ScheduleStep.tsx",lineNumber:148,columnNumber:13},this),e.jsxDEV("div",{children:[e.jsxDEV("label",{className:V,children:"With this data"},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/ScheduleStep.tsx",lineNumber:156,columnNumber:15},this),e.jsxDEV("textarea",{value:d.envelope,onChange:c=>p(l,"envelope",c.target.value),rows:10,className:O,placeholder:`{
|
|
14
|
+
"data": { "source": "cron" }
|
|
15
|
+
}`},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/ScheduleStep.tsx",lineNumber:157,columnNumber:15},this),e.jsxDEV("p",{className:E,children:"Static payload passed to the workflow on each invocation."},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/ScheduleStep.tsx",lineNumber:158,columnNumber:15},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/agents/detail/ScheduleStep.tsx",lineNumber:155,columnNumber:13},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/agents/detail/ScheduleStep.tsx",lineNumber:113,columnNumber:11},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/agents/detail/ScheduleStep.tsx",lineNumber:90,columnNumber:7},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/agents/detail/ScheduleStep.tsx",lineNumber:82,columnNumber:5},this)}function q({icon:s,color:t,title:l,children:o}){return e.jsxDEV("div",{className:"mb-10",children:[e.jsxDEV("div",{className:"flex items-center gap-2 mb-2 pb-1.5 border-b border-surface-border/40",children:[e.jsxDEV(s,{className:`w-3.5 h-3.5 ${t}`,strokeWidth:1.5},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/ReviewStep.tsx",lineNumber:15,columnNumber:9},this),e.jsxDEV("h3",{className:"text-xs font-semibold uppercase tracking-widest text-accent/80",children:l},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/ReviewStep.tsx",lineNumber:16,columnNumber:9},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/agents/detail/ReviewStep.tsx",lineNumber:14,columnNumber:7},this),e.jsxDEV("div",{className:"pl-5.5",children:o},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/ReviewStep.tsx",lineNumber:18,columnNumber:7},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/agents/detail/ReviewStep.tsx",lineNumber:13,columnNumber:5},this)}function W({label:s,children:t}){return e.jsxDEV("div",{className:"flex gap-3 py-0.5",children:[e.jsxDEV("span",{className:"text-[10px] text-text-quaternary w-20 shrink-0",children:s},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/ReviewStep.tsx",lineNumber:26,columnNumber:7},this),e.jsxDEV("span",{className:"text-xs text-text-primary",children:t},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/ReviewStep.tsx",lineNumber:27,columnNumber:7},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/agents/detail/ReviewStep.tsx",lineNumber:25,columnNumber:5},this)}function ze({form:s}){return e.jsxDEV("div",{children:[e.jsxDEV(q,{icon:Z,color:"text-accent",title:"Identity",children:[e.jsxDEV(W,{label:"Name",children:s.name||"—"},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/ReviewStep.tsx",lineNumber:36,columnNumber:9},this),s.description&&e.jsxDEV(W,{label:"Description",children:s.description},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/ReviewStep.tsx",lineNumber:37,columnNumber:30},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/agents/detail/ReviewStep.tsx",lineNumber:35,columnNumber:7},this),(s.goals||s.rules)&&e.jsxDEV(q,{icon:ee,color:"text-rose-400",title:"Motivation",children:[s.goals&&e.jsxDEV(W,{label:"Goals",children:s.goals},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/ReviewStep.tsx",lineNumber:42,columnNumber:26},this),s.rules&&e.jsxDEV(W,{label:"Rules",children:s.rules},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/ReviewStep.tsx",lineNumber:43,columnNumber:26},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/agents/detail/ReviewStep.tsx",lineNumber:41,columnNumber:9},this),e.jsxDEV(q,{icon:z,color:"text-emerald-400",title:"Knowledge",children:e.jsxDEV(W,{label:"Domain",children:s.knowledge_domain||"None"},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/ReviewStep.tsx",lineNumber:48,columnNumber:9},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/ReviewStep.tsx",lineNumber:47,columnNumber:7},this),e.jsxDEV("div",{className:"grid grid-cols-2 gap-x-10",children:[e.jsxDEV(q,{icon:Y,color:"text-cyan-400",title:`Subscriptions (${s.subscriptions.length})`,children:s.subscriptions.length===0?e.jsxDEV("span",{className:"text-[11px] text-text-quaternary",children:"None configured"},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/ReviewStep.tsx",lineNumber:55,columnNumber:13},this):e.jsxDEV("div",{className:"divide-y divide-surface-border/30",children:s.subscriptions.map((t,l)=>e.jsxDEV("div",{className:"flex items-center py-1.5",children:[e.jsxDEV("div",{className:"flex-1 min-w-0",children:e.jsxDEV(ye,{topic:t.topic||"unset"},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/ReviewStep.tsx",lineNumber:60,columnNumber:51},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/ReviewStep.tsx",lineNumber:60,columnNumber:19},this),e.jsxDEV("div",{className:"flex items-center gap-1.5 shrink-0",children:[e.jsxDEV("span",{className:"text-text-quaternary text-[10px]",children:"→"},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/ReviewStep.tsx",lineNumber:61,columnNumber:71},this),t.workflow_type?e.jsxDEV(H,{type:t.workflow_type},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/ReviewStep.tsx",lineNumber:61,columnNumber:151},this):e.jsxDEV("span",{className:"text-[11px] text-text-quaternary",children:t.reaction_type},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/ReviewStep.tsx",lineNumber:61,columnNumber:195},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/agents/detail/ReviewStep.tsx",lineNumber:61,columnNumber:19},this)]},l,!0,{fileName:"/app/dashboard/src/pages/agents/detail/ReviewStep.tsx",lineNumber:59,columnNumber:17},this))},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/ReviewStep.tsx",lineNumber:57,columnNumber:13},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/ReviewStep.tsx",lineNumber:53,columnNumber:9},this),e.jsxDEV(q,{icon:B,color:"text-amber-400",title:`Schedules (${s.schedules.length})`,children:s.schedules.length===0?e.jsxDEV("span",{className:"text-[11px] text-text-quaternary",children:"None configured"},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/ReviewStep.tsx",lineNumber:70,columnNumber:13},this):e.jsxDEV("div",{className:"divide-y divide-surface-border/30",children:s.schedules.map((t,l)=>e.jsxDEV("div",{className:"flex items-center py-1.5",children:[e.jsxDEV("div",{className:"flex-1 min-w-0",children:e.jsxDEV(pe,{cron:t.cron},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/ReviewStep.tsx",lineNumber:75,columnNumber:51},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/ReviewStep.tsx",lineNumber:75,columnNumber:19},this),e.jsxDEV("div",{className:"flex items-center gap-1.5 shrink-0",children:[e.jsxDEV("span",{className:"text-text-quaternary text-[10px]",children:"→"},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/ReviewStep.tsx",lineNumber:76,columnNumber:71},this),t.workflow_type?e.jsxDEV(H,{type:t.workflow_type},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/ReviewStep.tsx",lineNumber:76,columnNumber:149},this):e.jsxDEV("span",{className:"text-[11px] text-text-quaternary",children:"no workflow"},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/ReviewStep.tsx",lineNumber:76,columnNumber:191},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/agents/detail/ReviewStep.tsx",lineNumber:76,columnNumber:19},this)]},l,!0,{fileName:"/app/dashboard/src/pages/agents/detail/ReviewStep.tsx",lineNumber:74,columnNumber:17},this))},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/ReviewStep.tsx",lineNumber:72,columnNumber:13},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/ReviewStep.tsx",lineNumber:68,columnNumber:9},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/agents/detail/ReviewStep.tsx",lineNumber:52,columnNumber:7},this),e.jsxDEV("div",{className:"border-l-2 border-emerald-400/30 pl-3 py-2 mt-6",children:e.jsxDEV("p",{className:"text-[11px] text-text-tertiary leading-relaxed",children:"After saving, subscriptions and schedules activate immediately. You can pause the automation anytime."},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/ReviewStep.tsx",lineNumber:85,columnNumber:9},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/ReviewStep.tsx",lineNumber:84,columnNumber:7},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/agents/detail/ReviewStep.tsx",lineNumber:34,columnNumber:5},this)}const Ye=[{id:1,label:"Identity",icon:Z},{id:2,label:"Motivation",icon:ee},{id:3,label:"Knowledge",icon:z},{id:4,label:"Subscriptions",icon:Y},{id:5,label:"Schedules",icon:B},{id:6,label:"Review",icon:ge}];function da(){var G;const{id:s}=Ee(),t=!s,l=je(),{data:o}=le(),u=!!((G=o==null?void 0:o.ai)!=null&&G.enabled)?"Agent":"Automation",{data:i,isLoading:x}=oe(t?null:s),{data:d}=me(t?null:s),c=ce(),h=de(),n=ue(),m=be(),w=he(),[b,a]=N.useState(Q),[r,g]=N.useState(!1),[f,j]=N.useState(""),[P,C]=De(),S=parseInt(P.get("step")||"1",10),I=N.useCallback(v=>{C(y=>{const _=new URLSearchParams(y);return _.set("step",String(v)),_},{replace:!0})},[C]);N.useEffect(()=>{if(!r){if(t){a(Q),g(!0);return}i&&d&&(a(ke(i,d.subscriptions??[])),g(!0))}},[i,d,t,r]);const M=(v,y)=>a(_=>({..._,[v]:y})),ie=async()=>{j("");try{const v=Ce(b);let y=s;t?y=(await c.mutateAsync(v)).id:await h.mutateAsync({id:s,...v});const _=Re(b),re=(d==null?void 0:d.subscriptions)??[],T=new Set(re.map(D=>D.id));for(const D of _)if(D.id&&T.has(D.id)){const{id:L,...K}=D;await m.mutateAsync({agentId:y,subId:L,...K}),T.delete(L)}else{const{id:L,...K}=D;await n.mutateAsync({agentId:y,...K})}for(const D of T)await w.mutateAsync({agentId:y,subId:D});l(`/agents/${y}`)}catch(v){j(v.message)}};if(!t&&x)return e.jsxDEV("div",{className:"animate-pulse space-y-4",children:[e.jsxDEV("div",{className:"h-8 bg-surface-sunken rounded w-48"},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/AgentConfigPage.tsx",lineNumber:114,columnNumber:53},this),e.jsxDEV("div",{className:"h-60 bg-surface-sunken rounded"},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/AgentConfigPage.tsx",lineNumber:114,columnNumber:107},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/agents/detail/AgentConfigPage.tsx",lineNumber:114,columnNumber:12},this);const U=c.isPending||h.isPending;return e.jsxDEV("div",{children:[e.jsxDEV(Ne,{title:t?`New ${u}`:`${u}: ${(i==null?void 0:i.id)??""}`,docsHash:"#docs:agents.md"},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/AgentConfigPage.tsx",lineNumber:121,columnNumber:7},this),e.jsxDEV("div",{className:"flex gap-10",children:[e.jsxDEV("nav",{className:"w-44 shrink-0 sticky top-0 self-start pt-2",children:[e.jsxDEV("div",{className:"space-y-0.5",children:Ye.map(v=>{const y=v.icon,_=S===v.id;return e.jsxDEV("button",{onClick:()=>I(v.id),className:`w-full flex items-center gap-2.5 px-3 py-2 rounded-md text-left transition-colors ${_?"bg-accent/10 text-accent":"text-text-tertiary hover:text-text-primary hover:bg-surface-hover"}`,children:[e.jsxDEV(y,{className:"w-3.5 h-3.5 shrink-0",strokeWidth:1.5},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/AgentConfigPage.tsx",lineNumber:143,columnNumber:19},this),e.jsxDEV("span",{className:"text-xs font-medium",children:v.label},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/AgentConfigPage.tsx",lineNumber:144,columnNumber:19},this)]},v.id,!0,{fileName:"/app/dashboard/src/pages/agents/detail/AgentConfigPage.tsx",lineNumber:134,columnNumber:17},this)})},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/AgentConfigPage.tsx",lineNumber:129,columnNumber:11},this),e.jsxDEV("div",{className:"mt-8 pt-4 border-t border-surface-border space-y-2",children:[e.jsxDEV("button",{onClick:ie,disabled:!b.name.trim()||U,className:"w-full btn-primary text-xs disabled:opacity-50",children:U?"Saving...":t?`Create ${u}`:"Save"},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/AgentConfigPage.tsx",lineNumber:152,columnNumber:13},this),e.jsxDEV("button",{onClick:()=>l(t?"/agents":`/agents/${s}`),className:"w-full btn-ghost text-xs",children:"Cancel"},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/AgentConfigPage.tsx",lineNumber:159,columnNumber:13},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/agents/detail/AgentConfigPage.tsx",lineNumber:151,columnNumber:11},this),f&&e.jsxDEV("p",{className:"text-xs text-status-error mt-3",children:f},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/AgentConfigPage.tsx",lineNumber:167,columnNumber:25},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/agents/detail/AgentConfigPage.tsx",lineNumber:128,columnNumber:9},this),e.jsxDEV("div",{className:"flex-1 min-w-0 pt-2",children:[S===1&&e.jsxDEV(Pe,{form:b,set:M},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/AgentConfigPage.tsx",lineNumber:172,columnNumber:29},this),S===2&&e.jsxDEV(Ae,{form:b,set:M},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/AgentConfigPage.tsx",lineNumber:173,columnNumber:29},this),S===3&&e.jsxDEV(Ie,{form:b,set:M},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/AgentConfigPage.tsx",lineNumber:174,columnNumber:29},this),S===4&&e.jsxDEV(Oe,{form:b,set:M},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/AgentConfigPage.tsx",lineNumber:175,columnNumber:29},this),S===5&&e.jsxDEV(Je,{form:b,set:M},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/AgentConfigPage.tsx",lineNumber:176,columnNumber:29},this),S===6&&e.jsxDEV(ze,{form:b},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/AgentConfigPage.tsx",lineNumber:177,columnNumber:29},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/agents/detail/AgentConfigPage.tsx",lineNumber:171,columnNumber:9},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/agents/detail/AgentConfigPage.tsx",lineNumber:126,columnNumber:7},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/agents/detail/AgentConfigPage.tsx",lineNumber:120,columnNumber:5},this)}export{da as AgentConfigPage};
|
|
16
|
+
//# sourceMappingURL=AgentConfigPage-D27vWOI6.js.map
|