@hotmeshio/long-tail 0.10.3 → 0.10.4
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/index.js +7 -1
- package/build/modules/branding.d.ts +21 -2
- package/build/modules/branding.js +22 -1
- package/build/routes/settings.js +21 -0
- package/build/shared/form-validation/derive-field-label.d.ts +14 -0
- package/build/shared/form-validation/derive-field-label.js +31 -0
- package/build/shared/form-validation/index.d.ts +1 -0
- package/build/shared/form-validation/index.js +1 -0
- package/build/tsconfig.tsbuildinfo +1 -1
- package/build/types/startup.d.ts +26 -0
- package/dashboard/dist/assets/{AdminDashboard-DQLGybZ9.js → AdminDashboard-Cma2NGsF.js} +2 -2
- package/dashboard/dist/assets/{AdminDashboard-DQLGybZ9.js.map → AdminDashboard-Cma2NGsF.js.map} +1 -1
- package/dashboard/dist/assets/AgentConfigPage-CbIhM-fa.js +16 -0
- package/dashboard/dist/assets/AgentConfigPage-CbIhM-fa.js.map +1 -0
- package/dashboard/dist/assets/AgentDetailPage-DuLEKzRT.js +4 -0
- package/dashboard/dist/assets/AgentDetailPage-DuLEKzRT.js.map +1 -0
- package/dashboard/dist/assets/AgentsPage-DZO9i7Nl.js +2 -0
- package/dashboard/dist/assets/AgentsPage-DZO9i7Nl.js.map +1 -0
- package/dashboard/dist/assets/AvailableEscalationsPage-DlVoNd8B.js +2 -0
- package/dashboard/dist/assets/AvailableEscalationsPage-DlVoNd8B.js.map +1 -0
- package/dashboard/dist/assets/BotPicker-CidlGr6f.js +2 -0
- package/dashboard/dist/assets/BotPicker-CidlGr6f.js.map +1 -0
- package/dashboard/dist/assets/CapabilitiesPage-BMNNTa0D.js +2 -0
- package/dashboard/dist/assets/{CapabilitiesPage-CJ5ldY8w.js.map → CapabilitiesPage-BMNNTa0D.js.map} +1 -1
- package/dashboard/dist/assets/{CollapsibleSection-BXOpfs3z.js → CollapsibleSection-W9F9lziT.js} +2 -2
- package/dashboard/dist/assets/{CollapsibleSection-BXOpfs3z.js.map → CollapsibleSection-W9F9lziT.js.map} +1 -1
- package/dashboard/dist/assets/ConfirmDeleteModal-BUh-Dzba.js +2 -0
- package/dashboard/dist/assets/{ConfirmDeleteModal-C0x0HcHX.js.map → ConfirmDeleteModal-BUh-Dzba.js.map} +1 -1
- package/dashboard/dist/assets/{CopyableId-uot2mE_g.js → CopyableId-B1mxKfVb.js} +2 -2
- package/dashboard/dist/assets/{CopyableId-uot2mE_g.js.map → CopyableId-B1mxKfVb.js.map} +1 -1
- package/dashboard/dist/assets/CountdownTimer-lkv_7msa.js +2 -0
- package/dashboard/dist/assets/{CountdownTimer-D20FNwS-.js.map → CountdownTimer-lkv_7msa.js.map} +1 -1
- package/dashboard/dist/assets/{CredentialsPage-vZ2psNnd.js → CredentialsPage-DyOgfnPB.js} +2 -2
- package/dashboard/dist/assets/CredentialsPage-DyOgfnPB.js.map +1 -0
- package/dashboard/dist/assets/{CronLabel-KRkqNSYs.js → CronLabel-geum95dj.js} +2 -2
- package/dashboard/dist/assets/{CronLabel-KRkqNSYs.js.map → CronLabel-geum95dj.js.map} +1 -1
- package/dashboard/dist/assets/CustomDurationPicker-ClufO2ew.js +2 -0
- package/dashboard/dist/assets/CustomDurationPicker-ClufO2ew.js.map +1 -0
- package/dashboard/dist/assets/DataTable-BTu2AaEl.js +2 -0
- package/dashboard/dist/assets/DataTable-BTu2AaEl.js.map +1 -0
- package/dashboard/dist/assets/{DropZone-C3NdMtwK.js → DropZone-C3hOjJtC.js} +2 -2
- package/dashboard/dist/assets/{DropZone-C3NdMtwK.js.map → DropZone-C3hOjJtC.js.map} +1 -1
- package/dashboard/dist/assets/{ElapsedCell-DNH-XHOS.js → ElapsedCell-DFOW9T4b.js} +2 -2
- package/dashboard/dist/assets/{ElapsedCell-DNH-XHOS.js.map → ElapsedCell-DFOW9T4b.js.map} +1 -1
- package/dashboard/dist/assets/EscalationListSchemaPage-_IhqXIQu.js +20 -0
- package/dashboard/dist/assets/EscalationListSchemaPage-_IhqXIQu.js.map +1 -0
- package/dashboard/dist/assets/EscalationSchemaPage-BCC7iscN.js +9 -0
- package/dashboard/dist/assets/EscalationSchemaPage-BCC7iscN.js.map +1 -0
- package/dashboard/dist/assets/EscalationsOverview-CvIdOtoP.js +2 -0
- package/dashboard/dist/assets/EscalationsOverview-CvIdOtoP.js.map +1 -0
- package/dashboard/dist/assets/EventTable-DJWJ7J0m.js +2 -0
- package/dashboard/dist/assets/EventTable-DJWJ7J0m.js.map +1 -0
- package/dashboard/dist/assets/FilterBar-BR3ztZ8y.js +2 -0
- package/dashboard/dist/assets/FilterBar-BR3ztZ8y.js.map +1 -0
- package/dashboard/dist/assets/GraphInvokePage-Cwn-8Glr.js +2 -0
- package/dashboard/dist/assets/GraphInvokePage-Cwn-8Glr.js.map +1 -0
- package/dashboard/dist/assets/HomePage-D8RVntg0.js +2 -0
- package/dashboard/dist/assets/HomePage-D8RVntg0.js.map +1 -0
- package/dashboard/dist/assets/ListToolbar-DuoEdVtK.js +2 -0
- package/dashboard/dist/assets/ListToolbar-DuoEdVtK.js.map +1 -0
- package/dashboard/dist/assets/McpOverview-NXKsGiWU.js +2 -0
- package/dashboard/dist/assets/McpOverview-NXKsGiWU.js.map +1 -0
- package/dashboard/dist/assets/McpQueryDetailPage-BC-iXfIx.js +5 -0
- package/dashboard/dist/assets/McpQueryDetailPage-BC-iXfIx.js.map +1 -0
- package/dashboard/dist/assets/{McpQueryPage-C9C4mPC0.js → McpQueryPage-BPJmFYOY.js} +2 -2
- package/dashboard/dist/assets/{McpQueryPage-C9C4mPC0.js.map → McpQueryPage-BPJmFYOY.js.map} +1 -1
- package/dashboard/dist/assets/{McpRunDetailPage-CWHKhx8n.js → McpRunDetailPage-B49nUXEl.js} +2 -2
- package/dashboard/dist/assets/McpRunDetailPage-B49nUXEl.js.map +1 -0
- package/dashboard/dist/assets/McpRunsPage-Ce_XIYpP.js +2 -0
- package/dashboard/dist/assets/McpRunsPage-Ce_XIYpP.js.map +1 -0
- package/dashboard/dist/assets/NamespacePill-LWvZXt_g.js +2 -0
- package/dashboard/dist/assets/NamespacePill-LWvZXt_g.js.map +1 -0
- package/dashboard/dist/assets/OperationsPage-DI7AQO9f.js +2 -0
- package/dashboard/dist/assets/OperationsPage-DI7AQO9f.js.map +1 -0
- package/dashboard/dist/assets/OperatorDashboard-DpXjhs-3.js +2 -0
- package/dashboard/dist/assets/{OperatorDashboard-CK-4GREp.js.map → OperatorDashboard-DpXjhs-3.js.map} +1 -1
- package/dashboard/dist/assets/PageHeader-DvEmMMP6.js +2 -0
- package/dashboard/dist/assets/PageHeader-DvEmMMP6.js.map +1 -0
- package/dashboard/dist/assets/PageHeaderWithStats-X0eAmu-x.js +2 -0
- package/dashboard/dist/assets/PageHeaderWithStats-X0eAmu-x.js.map +1 -0
- package/dashboard/dist/assets/{PriorityBadge-B4ykBH7f.js → PriorityBadge-CCERr9vQ.js} +2 -2
- package/dashboard/dist/assets/PriorityBadge-CCERr9vQ.js.map +1 -0
- package/dashboard/dist/assets/ProcessDetailPage-DpYSMRj1.js +2 -0
- package/dashboard/dist/assets/ProcessDetailPage-DpYSMRj1.js.map +1 -0
- package/dashboard/dist/assets/{ProcessesListPage-m70xmTZx.js → ProcessesListPage-CQ9tSw7U.js} +2 -2
- package/dashboard/dist/assets/{ProcessesListPage-m70xmTZx.js.map → ProcessesListPage-CQ9tSw7U.js.map} +1 -1
- package/dashboard/dist/assets/RoleDetailPage-DKeQKDkW.js +8 -0
- package/dashboard/dist/assets/RoleDetailPage-DKeQKDkW.js.map +1 -0
- package/dashboard/dist/assets/RolePill-CWhoLwef.js +2 -0
- package/dashboard/dist/assets/RolePill-CWhoLwef.js.map +1 -0
- package/dashboard/dist/assets/RolesPage-D-6kIact.js +2 -0
- package/dashboard/dist/assets/RolesPage-D-6kIact.js.map +1 -0
- package/dashboard/dist/assets/RunAsSelector-DzYcpQTm.js +2 -0
- package/dashboard/dist/assets/RunAsSelector-DzYcpQTm.js.map +1 -0
- package/dashboard/dist/assets/StatCard-DBANWIss.js +2 -0
- package/dashboard/dist/assets/StatCard-DBANWIss.js.map +1 -0
- package/dashboard/dist/assets/StatusBadge-BbqghFMi.js +2 -0
- package/dashboard/dist/assets/StatusBadge-BbqghFMi.js.map +1 -0
- package/dashboard/dist/assets/{StickyPagination-BHF5fTt5.js → StickyPagination-BTGfmGV3.js} +2 -2
- package/dashboard/dist/assets/{StickyPagination-BHF5fTt5.js.map → StickyPagination-BTGfmGV3.js.map} +1 -1
- package/dashboard/dist/assets/StreamMessageDetail-DqRpzA_6.js +2 -0
- package/dashboard/dist/assets/StreamMessageDetail-DqRpzA_6.js.map +1 -0
- package/dashboard/dist/assets/SwimlaneTimeline-CA106TYo.js +2 -0
- package/dashboard/dist/assets/SwimlaneTimeline-CA106TYo.js.map +1 -0
- package/dashboard/dist/assets/TagInput-CoR4MzsW.js +2 -0
- package/dashboard/dist/assets/TagInput-CoR4MzsW.js.map +1 -0
- package/dashboard/dist/assets/{TaskDetailPage-f5K9dVPG.js → TaskDetailPage-BRg-w2Ev.js} +2 -2
- package/dashboard/dist/assets/{TaskDetailPage-f5K9dVPG.js.map → TaskDetailPage-BRg-w2Ev.js.map} +1 -1
- package/dashboard/dist/assets/TaskQueuePill-Dw3YN8M-.js +2 -0
- package/dashboard/dist/assets/TaskQueuePill-Dw3YN8M-.js.map +1 -0
- package/dashboard/dist/assets/{TasksListPage-BPyPG6UY.js → TasksListPage-kB_j9G8o.js} +2 -2
- package/dashboard/dist/assets/{TasksListPage-BPyPG6UY.js.map → TasksListPage-kB_j9G8o.js.map} +1 -1
- package/dashboard/dist/assets/{TimeAgo-CBaGbueK.js → TimeAgo-D7dSIY7-.js} +2 -2
- package/dashboard/dist/assets/{TimeAgo-CBaGbueK.js.map → TimeAgo-D7dSIY7-.js.map} +1 -1
- package/dashboard/dist/assets/TimestampCell-BZe6bx18.js +2 -0
- package/dashboard/dist/assets/TimestampCell-BZe6bx18.js.map +1 -0
- package/dashboard/dist/assets/ToolPill-xX-buQtY.js +2 -0
- package/dashboard/dist/assets/ToolPill-xX-buQtY.js.map +1 -0
- package/dashboard/dist/assets/ToolTestPanel-U3NaF_T_.js +2 -0
- package/dashboard/dist/assets/ToolTestPanel-U3NaF_T_.js.map +1 -0
- package/dashboard/dist/assets/TopicDetailPage-BpALvXP1.js +9 -0
- package/dashboard/dist/assets/TopicDetailPage-BpALvXP1.js.map +1 -0
- package/dashboard/dist/assets/TopicsPage-Cy3chaca.js +2 -0
- package/dashboard/dist/assets/{TopicsPage-Dyq6niOv.js.map → TopicsPage-Cy3chaca.js.map} +1 -1
- package/dashboard/dist/assets/{UserName-DOX2P-8M.js → UserName-VXM1oHMC.js} +2 -2
- package/dashboard/dist/assets/{UserName-DOX2P-8M.js.map → UserName-VXM1oHMC.js.map} +1 -1
- package/dashboard/dist/assets/WorkflowExecutionPage-BCq2cR1V.js +2 -0
- package/dashboard/dist/assets/WorkflowExecutionPage-BCq2cR1V.js.map +1 -0
- package/dashboard/dist/assets/WorkflowPill-CQ1AmhlC.js +2 -0
- package/dashboard/dist/assets/WorkflowPill-CQ1AmhlC.js.map +1 -0
- package/dashboard/dist/assets/{WorkflowsDashboard-DJpMO5IY.js → WorkflowsDashboard-BbM69MnB.js} +2 -2
- package/dashboard/dist/assets/{WorkflowsDashboard-DJpMO5IY.js.map → WorkflowsDashboard-BbM69MnB.js.map} +1 -1
- package/dashboard/dist/assets/WorkflowsOverview-D5HthpAW.js +2 -0
- package/dashboard/dist/assets/WorkflowsOverview-D5HthpAW.js.map +1 -0
- package/dashboard/dist/assets/{YamlWorkflowDetailPage-C3ntUyoZ.js → YamlWorkflowDetailPage-CDDVMYWi.js} +10 -10
- package/dashboard/dist/assets/{YamlWorkflowDetailPage-C3ntUyoZ.js.map → YamlWorkflowDetailPage-CDDVMYWi.js.map} +1 -1
- package/dashboard/dist/assets/YamlWorkflowsPage-FFjWwydj.js +2 -0
- package/dashboard/dist/assets/YamlWorkflowsPage-FFjWwydj.js.map +1 -0
- package/dashboard/dist/assets/{agents-gs9fea8r.js → agents-BwiSNu73.js} +2 -2
- package/dashboard/dist/assets/{agents-gs9fea8r.js.map → agents-BwiSNu73.js.map} +1 -1
- package/dashboard/dist/assets/{bots-DYxAHrob.js → bots-ClgSrxel.js} +2 -2
- package/dashboard/dist/assets/{bots-DYxAHrob.js.map → bots-ClgSrxel.js.map} +1 -1
- package/dashboard/dist/assets/{capabilities-BJoxz6DJ.js → capabilities-JUaKsby4.js} +2 -2
- package/dashboard/dist/assets/{capabilities-BJoxz6DJ.js.map → capabilities-JUaKsby4.js.map} +1 -1
- package/dashboard/dist/assets/{controlplane-BeDZgDDf.js → controlplane-CuTQ7eUE.js} +2 -2
- package/dashboard/dist/assets/{controlplane-BeDZgDDf.js.map → controlplane-CuTQ7eUE.js.map} +1 -1
- package/dashboard/dist/assets/escalation-columns-CS0c7cAr.js +2 -0
- package/dashboard/dist/assets/escalation-columns-CS0c7cAr.js.map +1 -0
- package/dashboard/dist/assets/index-BBA4AxmL.js +2 -0
- package/dashboard/dist/assets/index-BBA4AxmL.js.map +1 -0
- package/dashboard/dist/assets/index-C-8xXyvr.js +63 -0
- package/dashboard/dist/assets/index-C-8xXyvr.js.map +1 -0
- package/dashboard/dist/assets/index-C1t0YIXC.js +5 -0
- package/dashboard/dist/assets/index-C1t0YIXC.js.map +1 -0
- package/dashboard/dist/assets/index-C9o2UNhC.js +2 -0
- package/dashboard/dist/assets/index-C9o2UNhC.js.map +1 -0
- package/dashboard/dist/assets/index-CBj-vstO.js +2 -0
- package/dashboard/dist/assets/{index-DZ7PWRg1.js.map → index-CBj-vstO.js.map} +1 -1
- package/dashboard/dist/assets/index-CUguKMXZ.js +2 -0
- package/dashboard/dist/assets/index-CUguKMXZ.js.map +1 -0
- package/dashboard/dist/assets/index-Cavwd8UU.js +6 -0
- package/dashboard/dist/assets/index-Cavwd8UU.js.map +1 -0
- package/dashboard/dist/assets/index-CnsPBTXL.js +2 -0
- package/dashboard/dist/assets/index-CnsPBTXL.js.map +1 -0
- package/dashboard/dist/assets/index-CoPWHo_H.js +2 -0
- package/dashboard/dist/assets/index-CoPWHo_H.js.map +1 -0
- package/dashboard/dist/assets/index-CwQVaa7x.js +2 -0
- package/dashboard/dist/assets/index-CwQVaa7x.js.map +1 -0
- package/dashboard/dist/assets/index-DSa-6Ux8.js +2 -0
- package/dashboard/dist/assets/index-DSa-6Ux8.js.map +1 -0
- package/dashboard/dist/assets/index-DeMs_aBT.css +1 -0
- package/dashboard/dist/assets/index-Ikj_NTuy.js +5 -0
- package/dashboard/dist/assets/index-Ikj_NTuy.js.map +1 -0
- package/dashboard/dist/assets/index-Xd1jcHe7.js +2 -0
- package/dashboard/dist/assets/index-Xd1jcHe7.js.map +1 -0
- package/dashboard/dist/assets/{knowledge-DZnI1Fdk.js → knowledge-BHBt-6kW.js} +2 -2
- package/dashboard/dist/assets/{knowledge-DZnI1Fdk.js.map → knowledge-BHBt-6kW.js.map} +1 -1
- package/dashboard/dist/assets/{mcp-BB_m6UyI.js → mcp-CBcz4BCS.js} +2 -2
- package/dashboard/dist/assets/{mcp-BB_m6UyI.js.map → mcp-CBcz4BCS.js.map} +1 -1
- package/dashboard/dist/assets/{mcp-query-BTSWn0de.js → mcp-query-C4fKTOYo.js} +2 -2
- package/dashboard/dist/assets/{mcp-query-BTSWn0de.js.map → mcp-query-C4fKTOYo.js.map} +1 -1
- package/dashboard/dist/assets/{pipelines-CvGQLyUz.js → pipelines-CmAAH3B6.js} +2 -2
- package/dashboard/dist/assets/{pipelines-CvGQLyUz.js.map → pipelines-CmAAH3B6.js.map} +1 -1
- package/dashboard/dist/assets/role-display-Dvo2lDpU.js +2 -0
- package/dashboard/dist/assets/role-display-Dvo2lDpU.js.map +1 -0
- package/dashboard/dist/assets/{tasks-BbgOhCVm.js → tasks-BAEsqcz2.js} +2 -2
- package/dashboard/dist/assets/{tasks-BbgOhCVm.js.map → tasks-BAEsqcz2.js.map} +1 -1
- package/dashboard/dist/assets/{topics-D9usuYHv.js → topics-CY0pJ6_o.js} +2 -2
- package/dashboard/dist/assets/{topics-D9usuYHv.js.map → topics-CY0pJ6_o.js.map} +1 -1
- package/dashboard/dist/assets/{useEventHooks-DxnqYVPg.js → useEventHooks-BlpwRvHO.js} +2 -2
- package/dashboard/dist/assets/{useEventHooks-DxnqYVPg.js.map → useEventHooks-BlpwRvHO.js.map} +1 -1
- package/dashboard/dist/assets/{useNamespace-CBAn0o5z.js → useNamespace-CoNUlZ6Z.js} +2 -2
- package/dashboard/dist/assets/{useNamespace-CBAn0o5z.js.map → useNamespace-CoNUlZ6Z.js.map} +1 -1
- package/dashboard/dist/assets/{useYamlActivityEvents-blOlKGDO.js → useYamlActivityEvents-8GUn5Wie.js} +2 -2
- package/dashboard/dist/assets/{useYamlActivityEvents-blOlKGDO.js.map → useYamlActivityEvents-8GUn5Wie.js.map} +1 -1
- package/dashboard/dist/assets/{users-CYVJHgNM.js → users-uGtDRGxR.js} +2 -2
- package/dashboard/dist/assets/{users-CYVJHgNM.js.map → users-uGtDRGxR.js.map} +1 -1
- package/dashboard/dist/assets/{vendor-icons-B98-XxNc.js → vendor-icons-DKCAtTJ9.js} +135 -130
- package/dashboard/dist/assets/vendor-icons-DKCAtTJ9.js.map +1 -0
- package/dashboard/dist/assets/{workflows-csQAJF0G.js → workflows-DoX-AtHN.js} +2 -2
- package/dashboard/dist/assets/{workflows-csQAJF0G.js.map → workflows-DoX-AtHN.js.map} +1 -1
- package/dashboard/dist/assets/{yaml-workflows-CctsTDby.js → yaml-workflows-DM3jVem2.js} +2 -2
- package/dashboard/dist/assets/{yaml-workflows-CctsTDby.js.map → yaml-workflows-DM3jVem2.js.map} +1 -1
- package/dashboard/dist/index.html +3 -3
- package/docs/design-principles.md +234 -0
- package/docs/hitl/design.md +228 -0
- package/docs/hitl/form.md +21 -1
- package/docs/hitl/iframe.md +1 -1
- package/docs/hitl/x-lt-display.md +56 -0
- package/docs/hitl/x-lt-layout.md +20 -1
- package/docs/hitl/x-lt-widget.md +23 -0
- package/docs/hitl-guide.md +1 -0
- package/package.json +1 -1
- package/dashboard/dist/assets/AgentConfigPage-4JgMpuYJ.js +0 -16
- package/dashboard/dist/assets/AgentConfigPage-4JgMpuYJ.js.map +0 -1
- package/dashboard/dist/assets/AgentDetailPage-DCgKokgX.js +0 -4
- package/dashboard/dist/assets/AgentDetailPage-DCgKokgX.js.map +0 -1
- package/dashboard/dist/assets/AgentsPage-BK_8VKZO.js +0 -2
- package/dashboard/dist/assets/AgentsPage-BK_8VKZO.js.map +0 -1
- package/dashboard/dist/assets/AvailableEscalationsPage-Dp1rsIHC.js +0 -2
- package/dashboard/dist/assets/AvailableEscalationsPage-Dp1rsIHC.js.map +0 -1
- package/dashboard/dist/assets/BotPicker-DvUnYEJk.js +0 -2
- package/dashboard/dist/assets/BotPicker-DvUnYEJk.js.map +0 -1
- package/dashboard/dist/assets/CapabilitiesPage-CJ5ldY8w.js +0 -2
- package/dashboard/dist/assets/ConfirmDeleteModal-C0x0HcHX.js +0 -2
- package/dashboard/dist/assets/CountdownTimer-D20FNwS-.js +0 -2
- package/dashboard/dist/assets/CredentialsPage-vZ2psNnd.js.map +0 -1
- package/dashboard/dist/assets/CustomDurationPicker-C-vGsrFl.js +0 -2
- package/dashboard/dist/assets/CustomDurationPicker-C-vGsrFl.js.map +0 -1
- package/dashboard/dist/assets/DataTable-Byn3oyT9.js +0 -2
- package/dashboard/dist/assets/DataTable-Byn3oyT9.js.map +0 -1
- package/dashboard/dist/assets/EscalationListSchemaPage-BIW1qxjC.js +0 -20
- package/dashboard/dist/assets/EscalationListSchemaPage-BIW1qxjC.js.map +0 -1
- package/dashboard/dist/assets/EscalationSchemaPage-Fj2IwQXQ.js +0 -9
- package/dashboard/dist/assets/EscalationSchemaPage-Fj2IwQXQ.js.map +0 -1
- package/dashboard/dist/assets/EscalationsOverview-BVUx0vZH.js +0 -2
- package/dashboard/dist/assets/EscalationsOverview-BVUx0vZH.js.map +0 -1
- package/dashboard/dist/assets/EventTable-Dm4zZaRl.js +0 -2
- package/dashboard/dist/assets/EventTable-Dm4zZaRl.js.map +0 -1
- package/dashboard/dist/assets/FilterBar-B5Vk5tBF.js +0 -2
- package/dashboard/dist/assets/FilterBar-B5Vk5tBF.js.map +0 -1
- package/dashboard/dist/assets/GraphInvokePage-D4f074qh.js +0 -2
- package/dashboard/dist/assets/GraphInvokePage-D4f074qh.js.map +0 -1
- package/dashboard/dist/assets/HomePage-DQ0bb_M_.js +0 -2
- package/dashboard/dist/assets/HomePage-DQ0bb_M_.js.map +0 -1
- package/dashboard/dist/assets/ListToolbar-CItVkLQ-.js +0 -2
- package/dashboard/dist/assets/ListToolbar-CItVkLQ-.js.map +0 -1
- package/dashboard/dist/assets/McpOverview-ByYVDldF.js +0 -2
- package/dashboard/dist/assets/McpOverview-ByYVDldF.js.map +0 -1
- package/dashboard/dist/assets/McpQueryDetailPage-DYuIdJiH.js +0 -5
- package/dashboard/dist/assets/McpQueryDetailPage-DYuIdJiH.js.map +0 -1
- package/dashboard/dist/assets/McpRunDetailPage-CWHKhx8n.js.map +0 -1
- package/dashboard/dist/assets/McpRunsPage-DMamEjjr.js +0 -2
- package/dashboard/dist/assets/McpRunsPage-DMamEjjr.js.map +0 -1
- package/dashboard/dist/assets/NamespacePill-B3YOa1xo.js +0 -2
- package/dashboard/dist/assets/NamespacePill-B3YOa1xo.js.map +0 -1
- package/dashboard/dist/assets/OperationsPage-CVPDugQz.js +0 -2
- package/dashboard/dist/assets/OperationsPage-CVPDugQz.js.map +0 -1
- package/dashboard/dist/assets/OperatorDashboard-CK-4GREp.js +0 -2
- package/dashboard/dist/assets/PageHeader-poyTWcUA.js +0 -2
- package/dashboard/dist/assets/PageHeader-poyTWcUA.js.map +0 -1
- package/dashboard/dist/assets/PageHeaderWithStats-CAmspbl9.js +0 -2
- package/dashboard/dist/assets/PageHeaderWithStats-CAmspbl9.js.map +0 -1
- package/dashboard/dist/assets/PriorityBadge-B4ykBH7f.js.map +0 -1
- package/dashboard/dist/assets/ProcessDetailPage-BBCwv1bQ.js +0 -2
- package/dashboard/dist/assets/ProcessDetailPage-BBCwv1bQ.js.map +0 -1
- package/dashboard/dist/assets/RoleDetailPage-l865Cx3n.js +0 -8
- package/dashboard/dist/assets/RoleDetailPage-l865Cx3n.js.map +0 -1
- package/dashboard/dist/assets/RolePill-C0SWz9X7.js +0 -2
- package/dashboard/dist/assets/RolePill-C0SWz9X7.js.map +0 -1
- package/dashboard/dist/assets/RolesPage-Wzfjz7Wc.js +0 -2
- package/dashboard/dist/assets/RolesPage-Wzfjz7Wc.js.map +0 -1
- package/dashboard/dist/assets/RunAsSelector-DlnIolTf.js +0 -2
- package/dashboard/dist/assets/RunAsSelector-DlnIolTf.js.map +0 -1
- package/dashboard/dist/assets/SlidePanel-Bm9B6zIA.js +0 -2
- package/dashboard/dist/assets/SlidePanel-Bm9B6zIA.js.map +0 -1
- package/dashboard/dist/assets/StatCard-DrdlUeQz.js +0 -2
- package/dashboard/dist/assets/StatCard-DrdlUeQz.js.map +0 -1
- package/dashboard/dist/assets/StatusBadge-CEQMRmSQ.js +0 -2
- package/dashboard/dist/assets/StatusBadge-CEQMRmSQ.js.map +0 -1
- package/dashboard/dist/assets/StreamMessageDetail-Dgp1lzay.js +0 -2
- package/dashboard/dist/assets/StreamMessageDetail-Dgp1lzay.js.map +0 -1
- package/dashboard/dist/assets/SwimlaneTimeline-BlptZ8lr.js +0 -2
- package/dashboard/dist/assets/SwimlaneTimeline-BlptZ8lr.js.map +0 -1
- package/dashboard/dist/assets/TagInput-CM3AV5Ky.js +0 -2
- package/dashboard/dist/assets/TagInput-CM3AV5Ky.js.map +0 -1
- package/dashboard/dist/assets/TaskQueuePill-BZYmqdcv.js +0 -2
- package/dashboard/dist/assets/TaskQueuePill-BZYmqdcv.js.map +0 -1
- package/dashboard/dist/assets/TimestampCell-Z5kDrR9U.js +0 -2
- package/dashboard/dist/assets/TimestampCell-Z5kDrR9U.js.map +0 -1
- package/dashboard/dist/assets/ToolPill-D_-m3lUO.js +0 -2
- package/dashboard/dist/assets/ToolPill-D_-m3lUO.js.map +0 -1
- package/dashboard/dist/assets/ToolTestPanel-DFrP_aMx.js +0 -2
- package/dashboard/dist/assets/ToolTestPanel-DFrP_aMx.js.map +0 -1
- package/dashboard/dist/assets/TopicDetailPage-Cj9qXnTW.js +0 -9
- package/dashboard/dist/assets/TopicDetailPage-Cj9qXnTW.js.map +0 -1
- package/dashboard/dist/assets/TopicsPage-Dyq6niOv.js +0 -2
- package/dashboard/dist/assets/WorkflowExecutionPage-Cb_dSIoq.js +0 -2
- package/dashboard/dist/assets/WorkflowExecutionPage-Cb_dSIoq.js.map +0 -1
- package/dashboard/dist/assets/WorkflowPill-CyYYPB7b.js +0 -2
- package/dashboard/dist/assets/WorkflowPill-CyYYPB7b.js.map +0 -1
- package/dashboard/dist/assets/WorkflowsOverview-CCC_KaXz.js +0 -2
- package/dashboard/dist/assets/WorkflowsOverview-CCC_KaXz.js.map +0 -1
- package/dashboard/dist/assets/YamlWorkflowsPage-ju-9JDXg.js +0 -2
- package/dashboard/dist/assets/YamlWorkflowsPage-ju-9JDXg.js.map +0 -1
- package/dashboard/dist/assets/escalation-columns-CZ4fl0IE.js +0 -2
- package/dashboard/dist/assets/escalation-columns-CZ4fl0IE.js.map +0 -1
- package/dashboard/dist/assets/index-BMM3Xug7.js +0 -2
- package/dashboard/dist/assets/index-BMM3Xug7.js.map +0 -1
- package/dashboard/dist/assets/index-BMXkxgnK.js +0 -2
- package/dashboard/dist/assets/index-BMXkxgnK.js.map +0 -1
- package/dashboard/dist/assets/index-Bj1Mjjiv.js +0 -2
- package/dashboard/dist/assets/index-Bj1Mjjiv.js.map +0 -1
- package/dashboard/dist/assets/index-BqVb13tE.js +0 -5
- package/dashboard/dist/assets/index-BqVb13tE.js.map +0 -1
- package/dashboard/dist/assets/index-CGrtjUdj.js +0 -6
- package/dashboard/dist/assets/index-CGrtjUdj.js.map +0 -1
- package/dashboard/dist/assets/index-CQ8cd4JZ.js +0 -2
- package/dashboard/dist/assets/index-CQ8cd4JZ.js.map +0 -1
- package/dashboard/dist/assets/index-CruL35yU.js +0 -2
- package/dashboard/dist/assets/index-CruL35yU.js.map +0 -1
- package/dashboard/dist/assets/index-DAM1Dm1F.js +0 -2
- package/dashboard/dist/assets/index-DAM1Dm1F.js.map +0 -1
- package/dashboard/dist/assets/index-DZ7PWRg1.js +0 -2
- package/dashboard/dist/assets/index-DfbrPOP3.js +0 -2
- package/dashboard/dist/assets/index-DfbrPOP3.js.map +0 -1
- package/dashboard/dist/assets/index-DwuM7Fka.js +0 -5
- package/dashboard/dist/assets/index-DwuM7Fka.js.map +0 -1
- package/dashboard/dist/assets/index-DycfrrTK.js +0 -63
- package/dashboard/dist/assets/index-DycfrrTK.js.map +0 -1
- package/dashboard/dist/assets/index-tbvwCdvQ.js +0 -2
- package/dashboard/dist/assets/index-tbvwCdvQ.js.map +0 -1
- package/dashboard/dist/assets/index-zP2ncT4m.css +0 -1
- package/dashboard/dist/assets/vendor-icons-B98-XxNc.js.map +0 -1
package/build/index.js
CHANGED
|
@@ -40,6 +40,7 @@ exports.registerMcpTool = exports.getToolContext = exports.getActivityIdentity =
|
|
|
40
40
|
exports.LTExpressAdapter = exports.api = exports.KnowledgeApi = exports.resolveCredential = exports.mimeFromPath = exports.getStorageBackend = exports.listOAuthConnections = exports.getFreshAccessToken = exports.createClient = exports.CallbackEventAdapter = exports.builtinMcpServerFactories = exports.getSystemAgents = exports.getSystemWorkers = void 0;
|
|
41
41
|
const config_1 = require("./modules/config");
|
|
42
42
|
const logger_1 = require("./lib/logger");
|
|
43
|
+
const midnight_1 = require("./examples/themes/midnight");
|
|
43
44
|
const start_1 = require("./start");
|
|
44
45
|
// ─── Package Exports ─────────────────────────────────────────────────────────
|
|
45
46
|
var start_2 = require("./start");
|
|
@@ -170,7 +171,12 @@ async function main() {
|
|
|
170
171
|
escalation: {
|
|
171
172
|
strategy: 'mcp',
|
|
172
173
|
},
|
|
173
|
-
branding:
|
|
174
|
+
branding: {
|
|
175
|
+
...(process.env.WHITE_LABEL ? { appName: process.env.WHITE_LABEL } : {}),
|
|
176
|
+
// Midnight ships as a registered theme — the working proof that a
|
|
177
|
+
// deployment-supplied stylesheet controls the entire design system.
|
|
178
|
+
themes: [midnight_1.midnightTheme],
|
|
179
|
+
},
|
|
174
180
|
telemetry: honeycombKey ? { honeycomb: { apiKey: honeycombKey } } : undefined,
|
|
175
181
|
events: config_1.config.EVENT_TRANSPORT === 'nats'
|
|
176
182
|
? { nats: { url: config_1.config.NATS_URL, wsUrl: config_1.config.NATS_WS_URL || undefined, token: config_1.config.NATS_TOKEN || undefined } }
|
|
@@ -4,10 +4,29 @@
|
|
|
4
4
|
* The `appName` defaults to 'LongTail' and can be overridden via the
|
|
5
5
|
* `branding` block of the `start()` config — no env-var required, since
|
|
6
6
|
* this is a per-deployment product decision, not an ops toggle.
|
|
7
|
+
*
|
|
8
|
+
* `customCss` and `themes` carry the deployment's design-system overrides.
|
|
9
|
+
* Theme metadata (id, label, swatch, dark) rides the /api/settings JSON so
|
|
10
|
+
* the picker can render; the CSS itself is served separately at
|
|
11
|
+
* GET /api/settings/custom.css so the browser caches it as a stylesheet.
|
|
7
12
|
*/
|
|
8
|
-
export
|
|
13
|
+
export interface LTBrandingTheme {
|
|
14
|
+
id: string;
|
|
15
|
+
label: string;
|
|
16
|
+
swatch: string;
|
|
17
|
+
css: string;
|
|
18
|
+
dark?: boolean;
|
|
19
|
+
}
|
|
20
|
+
export interface LTBrandingConfig {
|
|
9
21
|
appName?: string;
|
|
10
|
-
|
|
22
|
+
customCss?: string;
|
|
23
|
+
themes?: LTBrandingTheme[];
|
|
24
|
+
}
|
|
25
|
+
export declare function configureBranding(patch?: LTBrandingConfig): void;
|
|
26
|
+
/** Metadata only — the CSS never rides the settings JSON. */
|
|
11
27
|
export declare function getBranding(): {
|
|
12
28
|
appName: string;
|
|
29
|
+
themes: Array<Omit<LTBrandingTheme, 'css'>>;
|
|
13
30
|
};
|
|
31
|
+
/** The full stylesheet served at /api/settings/custom.css. */
|
|
32
|
+
export declare function getCustomCss(): string;
|
|
@@ -5,15 +5,36 @@
|
|
|
5
5
|
* The `appName` defaults to 'LongTail' and can be overridden via the
|
|
6
6
|
* `branding` block of the `start()` config — no env-var required, since
|
|
7
7
|
* this is a per-deployment product decision, not an ops toggle.
|
|
8
|
+
*
|
|
9
|
+
* `customCss` and `themes` carry the deployment's design-system overrides.
|
|
10
|
+
* Theme metadata (id, label, swatch, dark) rides the /api/settings JSON so
|
|
11
|
+
* the picker can render; the CSS itself is served separately at
|
|
12
|
+
* GET /api/settings/custom.css so the browser caches it as a stylesheet.
|
|
8
13
|
*/
|
|
9
14
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
10
15
|
exports.configureBranding = configureBranding;
|
|
11
16
|
exports.getBranding = getBranding;
|
|
17
|
+
exports.getCustomCss = getCustomCss;
|
|
12
18
|
let _appName = 'LongTail';
|
|
19
|
+
let _customCss = '';
|
|
20
|
+
let _themes = [];
|
|
13
21
|
function configureBranding(patch) {
|
|
14
22
|
if (patch?.appName)
|
|
15
23
|
_appName = patch.appName;
|
|
24
|
+
if (typeof patch?.customCss === 'string')
|
|
25
|
+
_customCss = patch.customCss;
|
|
26
|
+
if (Array.isArray(patch?.themes))
|
|
27
|
+
_themes = patch.themes;
|
|
16
28
|
}
|
|
29
|
+
/** Metadata only — the CSS never rides the settings JSON. */
|
|
17
30
|
function getBranding() {
|
|
18
|
-
return {
|
|
31
|
+
return {
|
|
32
|
+
appName: _appName,
|
|
33
|
+
themes: _themes.map(({ id, label, swatch, dark }) => ({ id, label, swatch, dark })),
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
/** The full stylesheet served at /api/settings/custom.css. */
|
|
37
|
+
function getCustomCss() {
|
|
38
|
+
const parts = [_customCss, ..._themes.map((t) => t.css)].filter(Boolean);
|
|
39
|
+
return parts.join('\n\n');
|
|
19
40
|
}
|
package/build/routes/settings.js
CHANGED
|
@@ -33,8 +33,10 @@ var __importStar = (this && this.__importStar) || (function () {
|
|
|
33
33
|
};
|
|
34
34
|
})();
|
|
35
35
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
const crypto_1 = require("crypto");
|
|
36
37
|
const express_1 = require("express");
|
|
37
38
|
const api = __importStar(require("../api/settings"));
|
|
39
|
+
const branding_1 = require("../modules/branding");
|
|
38
40
|
const router = (0, express_1.Router)();
|
|
39
41
|
/**
|
|
40
42
|
* GET /api/settings
|
|
@@ -44,4 +46,23 @@ router.get('/', async (req, res) => {
|
|
|
44
46
|
const result = await api.getSettings(req);
|
|
45
47
|
res.status(result.status).json(result.data ?? { error: result.error });
|
|
46
48
|
});
|
|
49
|
+
/**
|
|
50
|
+
* GET /api/settings/custom.css
|
|
51
|
+
* The deployment's registered design-system overrides (branding.customCss +
|
|
52
|
+
* registered theme blocks). Always 200 text/css — empty when nothing is
|
|
53
|
+
* registered — so the dashboard references it unconditionally with no flash
|
|
54
|
+
* and no conditional logic. ETag lets the browser cache it across loads.
|
|
55
|
+
*/
|
|
56
|
+
router.get('/custom.css', (req, res) => {
|
|
57
|
+
const css = (0, branding_1.getCustomCss)();
|
|
58
|
+
const etag = `"${(0, crypto_1.createHash)('sha1').update(css).digest('hex')}"`;
|
|
59
|
+
if (req.headers['if-none-match'] === etag) {
|
|
60
|
+
res.status(304).end();
|
|
61
|
+
return;
|
|
62
|
+
}
|
|
63
|
+
res.setHeader('Content-Type', 'text/css; charset=utf-8');
|
|
64
|
+
res.setHeader('ETag', etag);
|
|
65
|
+
res.setHeader('Cache-Control', 'no-cache');
|
|
66
|
+
res.status(200).send(css);
|
|
67
|
+
});
|
|
47
68
|
exports.default = router;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Human-readable label for a schema field.
|
|
3
|
+
*
|
|
4
|
+
* Resolution order:
|
|
5
|
+
* 1. The JSON Schema `title` keyword — the author's explicit label, always wins.
|
|
6
|
+
* 2. Snake/kebab keys become Title Case: `left_quantity` → `Left Quantity`.
|
|
7
|
+
* 3. Single-token keys pass through unchanged: `PO`, `SKU`, `LEFTQUANTITY` —
|
|
8
|
+
* a run of capitals carries no word boundaries to recover, and lowercasing
|
|
9
|
+
* would mangle acronyms. Authors who want prose labels declare `title`.
|
|
10
|
+
*
|
|
11
|
+
* Used everywhere a field name faces a human: form labels, dictionary lists,
|
|
12
|
+
* the errors panel, and metadata displays.
|
|
13
|
+
*/
|
|
14
|
+
export declare function deriveFieldLabel(key: string, fieldSchema?: Record<string, unknown> | null): string;
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.deriveFieldLabel = deriveFieldLabel;
|
|
4
|
+
/**
|
|
5
|
+
* Human-readable label for a schema field.
|
|
6
|
+
*
|
|
7
|
+
* Resolution order:
|
|
8
|
+
* 1. The JSON Schema `title` keyword — the author's explicit label, always wins.
|
|
9
|
+
* 2. Snake/kebab keys become Title Case: `left_quantity` → `Left Quantity`.
|
|
10
|
+
* 3. Single-token keys pass through unchanged: `PO`, `SKU`, `LEFTQUANTITY` —
|
|
11
|
+
* a run of capitals carries no word boundaries to recover, and lowercasing
|
|
12
|
+
* would mangle acronyms. Authors who want prose labels declare `title`.
|
|
13
|
+
*
|
|
14
|
+
* Used everywhere a field name faces a human: form labels, dictionary lists,
|
|
15
|
+
* the errors panel, and metadata displays.
|
|
16
|
+
*/
|
|
17
|
+
function deriveFieldLabel(key, fieldSchema) {
|
|
18
|
+
const title = fieldSchema?.title;
|
|
19
|
+
if (typeof title === 'string' && title.trim().length > 0)
|
|
20
|
+
return title.trim();
|
|
21
|
+
const words = key.split(/[_-]+/).filter(Boolean);
|
|
22
|
+
if (words.length <= 1)
|
|
23
|
+
return key;
|
|
24
|
+
return words
|
|
25
|
+
.map((w) => (isCapsToken(w) ? w : w.charAt(0).toUpperCase() + w.slice(1)))
|
|
26
|
+
.join(' ');
|
|
27
|
+
}
|
|
28
|
+
/** All-caps tokens (PO, SKU, ID) keep their casing inside multi-word keys. */
|
|
29
|
+
function isCapsToken(word) {
|
|
30
|
+
return word.length > 1 && word === word.toUpperCase() && /[A-Z]/.test(word);
|
|
31
|
+
}
|
|
@@ -20,6 +20,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
20
20
|
* the API layer enforces the same contract on every resolve surface. Pure
|
|
21
21
|
* functions only — no React, no DOM, no database.
|
|
22
22
|
*/
|
|
23
|
+
__exportStar(require("./derive-field-label"), exports);
|
|
23
24
|
__exportStar(require("./x-lt-bind"), exports);
|
|
24
25
|
__exportStar(require("./x-lt-help"), exports);
|
|
25
26
|
__exportStar(require("./x-lt-show-if"), exports);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"root":["../index.ts","../vitest.config.ts","../vitest.integration.config.ts","../adapters/express.ts","../api/agent-subscriptions.ts","../api/agents.ts","../api/auth-sso.ts","../api/auth.ts","../api/bot-accounts.ts","../api/capabilities.ts","../api/controlplane.ts","../api/dba.ts","../api/diagnostics.ts","../api/exports.ts","../api/files.ts","../api/index.ts","../api/insight.ts","../api/knowledge.ts","../api/maintenance.ts","../api/me.ts","../api/namespaces.ts","../api/overview.ts","../api/pipelines.ts","../api/roles.ts","../api/settings.ts","../api/tasks.ts","../api/topics.ts","../api/users.ts","../api/workflow-sets.ts","../api/escalations/bulk.ts","../api/escalations/cancel.ts","../api/escalations/claim.ts","../api/escalations/create.ts","../api/escalations/facets.ts","../api/escalations/helpers.ts","../api/escalations/index.ts","../api/escalations/list.ts","../api/escalations/metadata.ts","../api/escalations/resolve.ts","../api/escalations/single.ts","../api/mcp/index.ts","../api/mcp/servers.ts","../api/mcp/tools.ts","../api/workflows/config.ts","../api/workflows/discovery.ts","../api/workflows/index.ts","../api/workflows/invocation.ts","../api/yaml-workflows/cron.ts","../api/yaml-workflows/crud.ts","../api/yaml-workflows/deploy.ts","../api/yaml-workflows/helpers.ts","../api/yaml-workflows/index.ts","../api/yaml-workflows/versions.ts","../bin/ltc.ts","../lib/typed-resolution.ts","../lib/cli/auth.ts","../lib/cli/client.ts","../lib/cli/compile.ts","../lib/cli/format.ts","../lib/cli/init.ts","../lib/cli/output.ts","../lib/cli/scanner.ts","../lib/cli/types.ts","../lib/cli/commands/escalations.ts","../lib/cli/commands/knowledge.ts","../lib/cli/commands/mcp.ts","../lib/cli/commands/pipelines.ts","../lib/cli/commands/roles.ts","../lib/cli/commands/status.ts","../lib/cli/commands/streams.ts","../lib/cli/commands/users.ts","../lib/cli/commands/workflows.ts","../lib/db/index.ts","../lib/db/migrate.ts","../lib/events/callback.ts","../lib/events/index.ts","../lib/events/matching.ts","../lib/events/memory.ts","../lib/events/nats-ws-proxy.ts","../lib/events/nats.ts","../lib/events/publish.ts","../lib/events/socketio.ts","../lib/events/system-events.ts","../lib/logger/index.ts","../lib/logger/pino.ts","../lib/storage/index.ts","../lib/storage/local.ts","../lib/storage/mime.ts","../lib/storage/s3.ts","../lib/storage/types.ts","../lib/telemetry/honeycomb.ts","../lib/telemetry/index.ts","../modules/auth.ts","../modules/branding.ts","../modules/config.ts","../modules/defaults.ts","../modules/features.ts","../modules/ltconfig.ts","../modules/maintenance.ts","../modules/sso.ts","../modules/utils.ts","../modules/version.ts","../routes/agents.ts","../routes/auth-sso.ts","../routes/auth.ts","../routes/bot-accounts.ts","../routes/capabilities.ts","../routes/controlplane.ts","../routes/dba.ts","../routes/delegation.ts","../routes/diagnostics.ts","../routes/docs.ts","../routes/exports.ts","../routes/file-browser.ts","../routes/files.ts","../routes/index.ts","../routes/insight.ts","../routes/knowledge.ts","../routes/maintenance.ts","../routes/mcp-endpoint.ts","../routes/mcp.ts","../routes/me.ts","../routes/namespaces.ts","../routes/nats-credentials.ts","../routes/oauth.ts","../routes/overview.ts","../routes/pipelines.ts","../routes/roles.ts","../routes/settings.ts","../routes/tasks.ts","../routes/topics.ts","../routes/users.ts","../routes/workflow-sets.ts","../routes/escalations/bulk.ts","../routes/escalations/facets.ts","../routes/escalations/index.ts","../routes/escalations/list.ts","../routes/escalations/metadata.ts","../routes/escalations/resolve.ts","../routes/escalations/single.ts","../routes/workflows/config.ts","../routes/workflows/discovery.ts","../routes/workflows/index.ts","../routes/workflows/invocation.ts","../routes/yaml-workflows/cron.ts","../routes/yaml-workflows/crud.ts","../routes/yaml-workflows/deployment.ts","../routes/yaml-workflows/index.ts","../routes/yaml-workflows/versions.ts","../scripts/ortho-populate.ts","../scripts/process-helpers.ts","../scripts/process.ts","../scripts/token.ts","../scripts/twin-farm.ts","../sdk/index.ts","../services/dba.ts","../services/hotmesh-utils.ts","../services/workflow-invocation.ts","../services/agent/index.ts","../services/agent/input-mapper.ts","../services/agent/sql.ts","../services/agent/subscription-sql.ts","../services/agent/subscriptions.ts","../services/agent/trigger-registry.ts","../services/auth/bot-api-key.ts","../services/auth/delegation.ts","../services/auth/index.ts","../services/auth/service-token.ts","../services/auth/sql.ts","../services/config/cache.ts","../services/config/index.ts","../services/config/provider.ts","../services/config/read.ts","../services/config/sql.ts","../services/config/write.ts","../services/controlplane/index.ts","../services/controlplane/quorum-bridge.ts","../services/controlplane/sql.ts","../services/controlplane/stream-messages-sql.ts","../services/controlplane/types.ts","../services/cron/index.ts","../services/diagnostics/index.ts","../services/diagnostics/patterns.ts","../services/escalation/bulk.ts","../services/escalation/client.ts","../services/escalation/crud.ts","../services/escalation/facet-sql.ts","../services/escalation/facets.ts","../services/escalation/index.ts","../services/escalation/map.ts","../services/escalation/metrics-cache.ts","../services/escalation/queries.ts","../services/escalation/resolver-validation.ts","../services/escalation/sql.ts","../services/escalation/types.ts","../services/escalation-strategy/default.ts","../services/escalation-strategy/index.ts","../services/escalation-strategy/mcp.ts","../services/export/client.ts","../services/export/index.ts","../services/export/post-process.ts","../services/export/types.ts","../services/iam/activity.ts","../services/iam/bots.ts","../services/iam/context.ts","../services/iam/credentials.ts","../services/iam/envelope.ts","../services/iam/ephemeral.ts","../services/iam/index.ts","../services/iam/principal.ts","../services/iam/resolve.ts","../services/iam/sql.ts","../services/insight/index.ts","../services/insight/prompts.ts","../services/interceptor/activity-interceptor.ts","../services/interceptor/completion.ts","../services/interceptor/context.ts","../services/interceptor/escalation.ts","../services/interceptor/index.ts","../services/interceptor/lifecycle.ts","../services/interceptor/state.ts","../services/interceptor/types.ts","../services/interceptor/activities/config.ts","../services/interceptor/activities/escalation.ts","../services/interceptor/activities/index.ts","../services/interceptor/activities/task.ts","../services/interceptor/activities/workflow.ts","../services/llm/detect.ts","../services/llm/index.ts","../services/llm/translate.ts","../services/llm/types.ts","../services/llm/providers/anthropic.ts","../services/llm/providers/openai.ts","../services/maintenance/index.ts","../services/mcp/adapter.ts","../services/mcp/db.ts","../services/mcp/exposure.ts","../services/mcp/external-server.ts","../services/mcp/index.ts","../services/mcp/register-tool.ts","../services/mcp/seed-service-account.ts","../services/mcp/server-lifecycle.ts","../services/mcp/server-tools.ts","../services/mcp/server.ts","../services/mcp/sql.ts","../services/mcp/types.ts","../services/mcp/workflow-compiler-server.ts","../services/mcp/workflow-server.ts","../services/mcp/client/connection-dispatch.ts","../services/mcp/client/connection-lifecycle.ts","../services/mcp/client/connection-test.ts","../services/mcp/client/connection.ts","../services/mcp/client/index.ts","../services/mcp/client/tools.ts","../services/mcp/db-server/index.ts","../services/mcp/db-server/schemas.ts","../services/mcp/db-server/tools.ts","../services/mcp/playwright-server/index.ts","../services/mcp/playwright-server/lifecycle.ts","../services/mcp/playwright-server/schemas.ts","../services/mcp/playwright-server/tools.ts","../services/namespace/index.ts","../services/namespace/sql.ts","../services/namespace/types.ts","../services/oauth/crypto.ts","../services/oauth/db.ts","../services/oauth/index.ts","../services/oauth/sql.ts","../services/oauth/state.ts","../services/oauth/providers/anthropic.ts","../services/oauth/providers/github.ts","../services/oauth/providers/google.ts","../services/oauth/providers/index.ts","../services/oauth/providers/microsoft.ts","../services/oauth/providers/mock.ts","../services/oauth/providers/registry.ts","../services/oauth/providers/types.ts","../services/orchestrator/condition.ts","../services/orchestrator/index.ts","../services/orchestrator/types.ts","../services/overview/index.ts","../services/overview/sql.ts","../services/pipelines/enrichment.ts","../services/pipelines/events.ts","../services/pipelines/execution-builder.ts","../services/pipelines/index.ts","../services/pipelines/queries.ts","../services/pipelines/sql.ts","../services/pipelines/types.ts","../services/role/enforcement-cache.ts","../services/role/index.ts","../services/role/schema-validator.ts","../services/role/sql.ts","../services/role/types.ts","../services/task/crud.ts","../services/task/index.ts","../services/task/process.ts","../services/task/resolve.ts","../services/task/sql.ts","../services/task/types.ts","../services/topics/index.ts","../services/topics/sql.ts","../services/topics/system-topics.ts","../services/user/auth.ts","../services/user/crud.ts","../services/user/index.ts","../services/user/preferences.ts","../services/user/rbac.ts","../services/user/roles.ts","../services/user/scope.ts","../services/user/seed-admin.ts","../services/user/sql.ts","../services/user/sso-provision.ts","../services/user/types.ts","../services/workers/registry.ts","../services/workflow-sets/db.ts","../services/workflow-sets/index.ts","../services/workflow-sets/sql.ts","../services/yaml-workflow/builder-regenerate.ts","../services/yaml-workflow/db-utils.ts","../services/yaml-workflow/db-versions.ts","../services/yaml-workflow/db.ts","../services/yaml-workflow/deployer-helpers.ts","../services/yaml-workflow/deployer.ts","../services/yaml-workflow/generator.ts","../services/yaml-workflow/index.ts","../services/yaml-workflow/input-analyzer-helpers.ts","../services/yaml-workflow/input-analyzer.ts","../services/yaml-workflow/invoke.ts","../services/yaml-workflow/pipe-validator.ts","../services/yaml-workflow/sql.ts","../services/yaml-workflow/types.ts","../services/yaml-workflow/durable-compiler/index.ts","../services/yaml-workflow/durable-compiler/parser.ts","../services/yaml-workflow/durable-compiler/prompts.ts","../services/yaml-workflow/durable-compiler/types.ts","../services/yaml-workflow/pattern-detector/array-source.ts","../services/yaml-workflow/pattern-detector/collapse.ts","../services/yaml-workflow/pattern-detector/index.ts","../services/yaml-workflow/pattern-detector/run-detection.ts","../services/yaml-workflow/pattern-detector/types.ts","../services/yaml-workflow/pipeline/analyze.ts","../services/yaml-workflow/pipeline/extract-helpers.ts","../services/yaml-workflow/pipeline/extract.ts","../services/yaml-workflow/pipeline/index.ts","../services/yaml-workflow/pipeline/prompt-templates.ts","../services/yaml-workflow/pipeline/prompts.ts","../services/yaml-workflow/pipeline/validate.ts","../services/yaml-workflow/pipeline/build/dag-assembly.ts","../services/yaml-workflow/pipeline/build/dag.ts","../services/yaml-workflow/pipeline/build/index.ts","../services/yaml-workflow/pipeline/build/iteration.ts","../services/yaml-workflow/pipeline/build/metadata.ts","../services/yaml-workflow/pipeline/build/transform.ts","../services/yaml-workflow/pipeline/build/utils.ts","../services/yaml-workflow/pipeline/build/wiring.ts","../services/yaml-workflow/pipeline/compile/index.ts","../services/yaml-workflow/pipeline/compile/llm-call.ts","../services/yaml-workflow/pipeline/compile/parse-plan.ts","../services/yaml-workflow/pipeline/compile/summarize.ts","../services/yaml-workflow/workers/callbacks.ts","../services/yaml-workflow/workers/events.ts","../services/yaml-workflow/workers/index.ts","../services/yaml-workflow/workers/register.ts","../services/yaml-workflow/workers/scope.ts","../shared/form-validation/field-validator.ts","../shared/form-validation/index.ts","../shared/form-validation/validate-resolver-payload.ts","../shared/form-validation/x-lt-bind.ts","../shared/form-validation/x-lt-help.ts","../shared/form-validation/x-lt-show-if.ts","../start/adapters.ts","../start/config.ts","../start/graph-workflows.ts","../start/index.ts","../start/server.ts","../start/socket-auth.ts","../start/workers.ts","../system/index.ts","../system/activities/claude-code.ts","../system/activities/file-storage.ts","../system/activities/http.ts","../system/activities/knowledge.ts","../system/activities/oauth.ts","../system/activities/schema-exchange.ts","../system/activities/sql.ts","../system/activities/triage/cache.ts","../system/activities/triage/context.ts","../system/activities/triage/discovery.ts","../system/activities/triage/index.ts","../system/activities/triage/llm.ts","../system/activities/triage/tools.ts","../system/mcp-servers/claude-code.ts","../system/mcp-servers/docs.ts","../system/mcp-servers/events.ts","../system/mcp-servers/file-storage.ts","../system/mcp-servers/http-fetch.ts","../system/mcp-servers/human-queue-schemas.ts","../system/mcp-servers/human-queue.ts","../system/mcp-servers/knowledge.ts","../system/mcp-servers/oauth.ts","../system/mcp-servers/schema-exchange.ts","../system/mcp-servers/translation.ts","../system/mcp-servers/vision-prompts.ts","../system/mcp-servers/vision.ts","../system/mcp-servers/workflow-compiler.ts","../system/mcp-servers/workflow.ts","../system/mcp-servers/admin/agent-subscriptions.ts","../system/mcp-servers/admin/agents.ts","../system/mcp-servers/admin/bot-accounts.ts","../system/mcp-servers/admin/controlplane.ts","../system/mcp-servers/admin/diagnostics.ts","../system/mcp-servers/admin/escalations.ts","../system/mcp-servers/admin/exports.ts","../system/mcp-servers/admin/index.ts","../system/mcp-servers/admin/maintenance.ts","../system/mcp-servers/admin/mcp-servers.ts","../system/mcp-servers/admin/ortho.ts","../system/mcp-servers/admin/overview.ts","../system/mcp-servers/admin/pipelines.ts","../system/mcp-servers/admin/schemas.ts","../system/mcp-servers/admin/settings.ts","../system/mcp-servers/admin/tasks.ts","../system/mcp-servers/admin/topics.ts","../system/mcp-servers/admin/users.ts","../system/mcp-servers/admin/workflow-config.ts","../system/mcp-servers/admin/workflows.ts","../system/mcp-servers/admin/yaml-workflows.ts","../system/mcp-servers/db-query/index.ts","../system/mcp-servers/db-query/schemas.ts","../system/mcp-servers/db-query/tools.ts","../system/seed/index.ts","../system/seed/tool-manifests-admin.ts","../system/seed/tool-manifests-data.ts","../system/seed/tool-manifests-escalation.ts","../system/seed/tool-manifests-events.ts","../system/seed/tool-manifests-knowledge.ts","../system/seed/tool-manifests-workflows.ts","../system/workflows/tool-result-guard.ts","../system/workflows/capability-invoke/activities.ts","../system/workflows/capability-invoke/index.ts","../system/workflows/mcp-deterministic/activities.ts","../system/workflows/mcp-deterministic/index.ts","../system/workflows/mcp-query/index.ts","../system/workflows/mcp-query/prompts.ts","../system/workflows/mcp-query/strategy-advisors.ts","../system/workflows/mcp-query/types.ts","../system/workflows/mcp-query/activities/caches.ts","../system/workflows/mcp-query/activities/discovery.ts","../system/workflows/mcp-query/activities/index.ts","../system/workflows/mcp-query/activities/llm.ts","../system/workflows/mcp-query/activities/tool-executor.ts","../system/workflows/mcp-query/activities/tool-loader.ts","../system/workflows/mcp-query-router/activities.ts","../system/workflows/mcp-query-router/index.ts","../system/workflows/mcp-query-router/prompts.ts","../system/workflows/mcp-triage/activities-proxy.ts","../system/workflows/mcp-triage/index.ts","../system/workflows/mcp-triage/prompts.ts","../system/workflows/mcp-triage/response-builders.ts","../system/workflows/mcp-triage/response.ts","../system/workflows/mcp-triage/types.ts","../system/workflows/mcp-triage-deterministic/activities.ts","../system/workflows/mcp-triage-deterministic/index.ts","../system/workflows/mcp-triage-router/activities.ts","../system/workflows/mcp-triage-router/index.ts","../system/workflows/mcp-workflow-builder/index.ts","../system/workflows/mcp-workflow-builder/prompts.ts","../system/workflows/mcp-workflow-builder/activities/caches.ts","../system/workflows/mcp-workflow-builder/activities/index.ts","../system/workflows/mcp-workflow-builder/activities/llm.ts","../system/workflows/mcp-workflow-builder/activities/tool-loader.ts","../system/workflows/mcp-workflow-planner/index.ts","../system/workflows/mcp-workflow-planner/prompts.ts","../system/workflows/mcp-workflow-planner/activities/analyze.ts","../system/workflows/mcp-workflow-planner/activities/index.ts","../system/workflows/mcp-workflow-planner/activities/persist.ts","../system/workflows/mcp-workflow-planner/activities/plan.ts","../system/workflows/shared/discovery.ts","../system/workflows/shared/index.ts","../system/workflows/shared/llm-caller.ts","../system/workflows/shared/prompts.ts","../system/workflows/shared/strategy-advisors.ts","../system/workflows/shared/tool-executor.ts","../system/workflows/shared/tool-loader.ts","../system/workflows/shared/types.ts","../types/agent.ts","../types/auth.ts","../types/config.ts","../types/delegation.ts","../types/discovery.ts","../types/envelope.ts","../types/escalation-strategy.ts","../types/escalation.ts","../types/events.ts","../types/export.ts","../types/express.d.ts","../types/facets.ts","../types/index.ts","../types/logger.ts","../types/maintenance.ts","../types/mcp.ts","../types/oauth.ts","../types/sdk.ts","../types/startup.ts","../types/task.ts","../types/telemetry.ts","../types/tool-context.ts","../types/user.ts","../types/validation.ts","../types/workflow-set.ts","../types/workflow.ts","../types/yaml-workflow.ts","../workers/index.ts"],"version":"5.9.3"}
|
|
1
|
+
{"root":["../index.ts","../vitest.config.ts","../vitest.integration.config.ts","../adapters/express.ts","../api/agent-subscriptions.ts","../api/agents.ts","../api/auth-sso.ts","../api/auth.ts","../api/bot-accounts.ts","../api/capabilities.ts","../api/controlplane.ts","../api/dba.ts","../api/diagnostics.ts","../api/exports.ts","../api/files.ts","../api/index.ts","../api/insight.ts","../api/knowledge.ts","../api/maintenance.ts","../api/me.ts","../api/namespaces.ts","../api/overview.ts","../api/pipelines.ts","../api/roles.ts","../api/settings.ts","../api/tasks.ts","../api/topics.ts","../api/users.ts","../api/workflow-sets.ts","../api/escalations/bulk.ts","../api/escalations/cancel.ts","../api/escalations/claim.ts","../api/escalations/create.ts","../api/escalations/facets.ts","../api/escalations/helpers.ts","../api/escalations/index.ts","../api/escalations/list.ts","../api/escalations/metadata.ts","../api/escalations/resolve.ts","../api/escalations/single.ts","../api/mcp/index.ts","../api/mcp/servers.ts","../api/mcp/tools.ts","../api/workflows/config.ts","../api/workflows/discovery.ts","../api/workflows/index.ts","../api/workflows/invocation.ts","../api/yaml-workflows/cron.ts","../api/yaml-workflows/crud.ts","../api/yaml-workflows/deploy.ts","../api/yaml-workflows/helpers.ts","../api/yaml-workflows/index.ts","../api/yaml-workflows/versions.ts","../bin/ltc.ts","../lib/typed-resolution.ts","../lib/cli/auth.ts","../lib/cli/client.ts","../lib/cli/compile.ts","../lib/cli/format.ts","../lib/cli/init.ts","../lib/cli/output.ts","../lib/cli/scanner.ts","../lib/cli/types.ts","../lib/cli/commands/escalations.ts","../lib/cli/commands/knowledge.ts","../lib/cli/commands/mcp.ts","../lib/cli/commands/pipelines.ts","../lib/cli/commands/roles.ts","../lib/cli/commands/status.ts","../lib/cli/commands/streams.ts","../lib/cli/commands/users.ts","../lib/cli/commands/workflows.ts","../lib/db/index.ts","../lib/db/migrate.ts","../lib/events/callback.ts","../lib/events/index.ts","../lib/events/matching.ts","../lib/events/memory.ts","../lib/events/nats-ws-proxy.ts","../lib/events/nats.ts","../lib/events/publish.ts","../lib/events/socketio.ts","../lib/events/system-events.ts","../lib/logger/index.ts","../lib/logger/pino.ts","../lib/storage/index.ts","../lib/storage/local.ts","../lib/storage/mime.ts","../lib/storage/s3.ts","../lib/storage/types.ts","../lib/telemetry/honeycomb.ts","../lib/telemetry/index.ts","../modules/auth.ts","../modules/branding.ts","../modules/config.ts","../modules/defaults.ts","../modules/features.ts","../modules/ltconfig.ts","../modules/maintenance.ts","../modules/sso.ts","../modules/utils.ts","../modules/version.ts","../routes/agents.ts","../routes/auth-sso.ts","../routes/auth.ts","../routes/bot-accounts.ts","../routes/capabilities.ts","../routes/controlplane.ts","../routes/dba.ts","../routes/delegation.ts","../routes/diagnostics.ts","../routes/docs.ts","../routes/exports.ts","../routes/file-browser.ts","../routes/files.ts","../routes/index.ts","../routes/insight.ts","../routes/knowledge.ts","../routes/maintenance.ts","../routes/mcp-endpoint.ts","../routes/mcp.ts","../routes/me.ts","../routes/namespaces.ts","../routes/nats-credentials.ts","../routes/oauth.ts","../routes/overview.ts","../routes/pipelines.ts","../routes/roles.ts","../routes/settings.ts","../routes/tasks.ts","../routes/topics.ts","../routes/users.ts","../routes/workflow-sets.ts","../routes/escalations/bulk.ts","../routes/escalations/facets.ts","../routes/escalations/index.ts","../routes/escalations/list.ts","../routes/escalations/metadata.ts","../routes/escalations/resolve.ts","../routes/escalations/single.ts","../routes/workflows/config.ts","../routes/workflows/discovery.ts","../routes/workflows/index.ts","../routes/workflows/invocation.ts","../routes/yaml-workflows/cron.ts","../routes/yaml-workflows/crud.ts","../routes/yaml-workflows/deployment.ts","../routes/yaml-workflows/index.ts","../routes/yaml-workflows/versions.ts","../scripts/ortho-populate.ts","../scripts/process-helpers.ts","../scripts/process.ts","../scripts/token.ts","../scripts/twin-farm.ts","../sdk/index.ts","../services/dba.ts","../services/hotmesh-utils.ts","../services/workflow-invocation.ts","../services/agent/index.ts","../services/agent/input-mapper.ts","../services/agent/sql.ts","../services/agent/subscription-sql.ts","../services/agent/subscriptions.ts","../services/agent/trigger-registry.ts","../services/auth/bot-api-key.ts","../services/auth/delegation.ts","../services/auth/index.ts","../services/auth/service-token.ts","../services/auth/sql.ts","../services/config/cache.ts","../services/config/index.ts","../services/config/provider.ts","../services/config/read.ts","../services/config/sql.ts","../services/config/write.ts","../services/controlplane/index.ts","../services/controlplane/quorum-bridge.ts","../services/controlplane/sql.ts","../services/controlplane/stream-messages-sql.ts","../services/controlplane/types.ts","../services/cron/index.ts","../services/diagnostics/index.ts","../services/diagnostics/patterns.ts","../services/escalation/bulk.ts","../services/escalation/client.ts","../services/escalation/crud.ts","../services/escalation/facet-sql.ts","../services/escalation/facets.ts","../services/escalation/index.ts","../services/escalation/map.ts","../services/escalation/metrics-cache.ts","../services/escalation/queries.ts","../services/escalation/resolver-validation.ts","../services/escalation/sql.ts","../services/escalation/types.ts","../services/escalation-strategy/default.ts","../services/escalation-strategy/index.ts","../services/escalation-strategy/mcp.ts","../services/export/client.ts","../services/export/index.ts","../services/export/post-process.ts","../services/export/types.ts","../services/iam/activity.ts","../services/iam/bots.ts","../services/iam/context.ts","../services/iam/credentials.ts","../services/iam/envelope.ts","../services/iam/ephemeral.ts","../services/iam/index.ts","../services/iam/principal.ts","../services/iam/resolve.ts","../services/iam/sql.ts","../services/insight/index.ts","../services/insight/prompts.ts","../services/interceptor/activity-interceptor.ts","../services/interceptor/completion.ts","../services/interceptor/context.ts","../services/interceptor/escalation.ts","../services/interceptor/index.ts","../services/interceptor/lifecycle.ts","../services/interceptor/state.ts","../services/interceptor/types.ts","../services/interceptor/activities/config.ts","../services/interceptor/activities/escalation.ts","../services/interceptor/activities/index.ts","../services/interceptor/activities/task.ts","../services/interceptor/activities/workflow.ts","../services/llm/detect.ts","../services/llm/index.ts","../services/llm/translate.ts","../services/llm/types.ts","../services/llm/providers/anthropic.ts","../services/llm/providers/openai.ts","../services/maintenance/index.ts","../services/mcp/adapter.ts","../services/mcp/db.ts","../services/mcp/exposure.ts","../services/mcp/external-server.ts","../services/mcp/index.ts","../services/mcp/register-tool.ts","../services/mcp/seed-service-account.ts","../services/mcp/server-lifecycle.ts","../services/mcp/server-tools.ts","../services/mcp/server.ts","../services/mcp/sql.ts","../services/mcp/types.ts","../services/mcp/workflow-compiler-server.ts","../services/mcp/workflow-server.ts","../services/mcp/client/connection-dispatch.ts","../services/mcp/client/connection-lifecycle.ts","../services/mcp/client/connection-test.ts","../services/mcp/client/connection.ts","../services/mcp/client/index.ts","../services/mcp/client/tools.ts","../services/mcp/db-server/index.ts","../services/mcp/db-server/schemas.ts","../services/mcp/db-server/tools.ts","../services/mcp/playwright-server/index.ts","../services/mcp/playwright-server/lifecycle.ts","../services/mcp/playwright-server/schemas.ts","../services/mcp/playwright-server/tools.ts","../services/namespace/index.ts","../services/namespace/sql.ts","../services/namespace/types.ts","../services/oauth/crypto.ts","../services/oauth/db.ts","../services/oauth/index.ts","../services/oauth/sql.ts","../services/oauth/state.ts","../services/oauth/providers/anthropic.ts","../services/oauth/providers/github.ts","../services/oauth/providers/google.ts","../services/oauth/providers/index.ts","../services/oauth/providers/microsoft.ts","../services/oauth/providers/mock.ts","../services/oauth/providers/registry.ts","../services/oauth/providers/types.ts","../services/orchestrator/condition.ts","../services/orchestrator/index.ts","../services/orchestrator/types.ts","../services/overview/index.ts","../services/overview/sql.ts","../services/pipelines/enrichment.ts","../services/pipelines/events.ts","../services/pipelines/execution-builder.ts","../services/pipelines/index.ts","../services/pipelines/queries.ts","../services/pipelines/sql.ts","../services/pipelines/types.ts","../services/role/enforcement-cache.ts","../services/role/index.ts","../services/role/schema-validator.ts","../services/role/sql.ts","../services/role/types.ts","../services/task/crud.ts","../services/task/index.ts","../services/task/process.ts","../services/task/resolve.ts","../services/task/sql.ts","../services/task/types.ts","../services/topics/index.ts","../services/topics/sql.ts","../services/topics/system-topics.ts","../services/user/auth.ts","../services/user/crud.ts","../services/user/index.ts","../services/user/preferences.ts","../services/user/rbac.ts","../services/user/roles.ts","../services/user/scope.ts","../services/user/seed-admin.ts","../services/user/sql.ts","../services/user/sso-provision.ts","../services/user/types.ts","../services/workers/registry.ts","../services/workflow-sets/db.ts","../services/workflow-sets/index.ts","../services/workflow-sets/sql.ts","../services/yaml-workflow/builder-regenerate.ts","../services/yaml-workflow/db-utils.ts","../services/yaml-workflow/db-versions.ts","../services/yaml-workflow/db.ts","../services/yaml-workflow/deployer-helpers.ts","../services/yaml-workflow/deployer.ts","../services/yaml-workflow/generator.ts","../services/yaml-workflow/index.ts","../services/yaml-workflow/input-analyzer-helpers.ts","../services/yaml-workflow/input-analyzer.ts","../services/yaml-workflow/invoke.ts","../services/yaml-workflow/pipe-validator.ts","../services/yaml-workflow/sql.ts","../services/yaml-workflow/types.ts","../services/yaml-workflow/durable-compiler/index.ts","../services/yaml-workflow/durable-compiler/parser.ts","../services/yaml-workflow/durable-compiler/prompts.ts","../services/yaml-workflow/durable-compiler/types.ts","../services/yaml-workflow/pattern-detector/array-source.ts","../services/yaml-workflow/pattern-detector/collapse.ts","../services/yaml-workflow/pattern-detector/index.ts","../services/yaml-workflow/pattern-detector/run-detection.ts","../services/yaml-workflow/pattern-detector/types.ts","../services/yaml-workflow/pipeline/analyze.ts","../services/yaml-workflow/pipeline/extract-helpers.ts","../services/yaml-workflow/pipeline/extract.ts","../services/yaml-workflow/pipeline/index.ts","../services/yaml-workflow/pipeline/prompt-templates.ts","../services/yaml-workflow/pipeline/prompts.ts","../services/yaml-workflow/pipeline/validate.ts","../services/yaml-workflow/pipeline/build/dag-assembly.ts","../services/yaml-workflow/pipeline/build/dag.ts","../services/yaml-workflow/pipeline/build/index.ts","../services/yaml-workflow/pipeline/build/iteration.ts","../services/yaml-workflow/pipeline/build/metadata.ts","../services/yaml-workflow/pipeline/build/transform.ts","../services/yaml-workflow/pipeline/build/utils.ts","../services/yaml-workflow/pipeline/build/wiring.ts","../services/yaml-workflow/pipeline/compile/index.ts","../services/yaml-workflow/pipeline/compile/llm-call.ts","../services/yaml-workflow/pipeline/compile/parse-plan.ts","../services/yaml-workflow/pipeline/compile/summarize.ts","../services/yaml-workflow/workers/callbacks.ts","../services/yaml-workflow/workers/events.ts","../services/yaml-workflow/workers/index.ts","../services/yaml-workflow/workers/register.ts","../services/yaml-workflow/workers/scope.ts","../shared/form-validation/derive-field-label.ts","../shared/form-validation/field-validator.ts","../shared/form-validation/index.ts","../shared/form-validation/validate-resolver-payload.ts","../shared/form-validation/x-lt-bind.ts","../shared/form-validation/x-lt-help.ts","../shared/form-validation/x-lt-show-if.ts","../start/adapters.ts","../start/config.ts","../start/graph-workflows.ts","../start/index.ts","../start/server.ts","../start/socket-auth.ts","../start/workers.ts","../system/index.ts","../system/activities/claude-code.ts","../system/activities/file-storage.ts","../system/activities/http.ts","../system/activities/knowledge.ts","../system/activities/oauth.ts","../system/activities/schema-exchange.ts","../system/activities/sql.ts","../system/activities/triage/cache.ts","../system/activities/triage/context.ts","../system/activities/triage/discovery.ts","../system/activities/triage/index.ts","../system/activities/triage/llm.ts","../system/activities/triage/tools.ts","../system/mcp-servers/claude-code.ts","../system/mcp-servers/docs.ts","../system/mcp-servers/events.ts","../system/mcp-servers/file-storage.ts","../system/mcp-servers/http-fetch.ts","../system/mcp-servers/human-queue-schemas.ts","../system/mcp-servers/human-queue.ts","../system/mcp-servers/knowledge.ts","../system/mcp-servers/oauth.ts","../system/mcp-servers/schema-exchange.ts","../system/mcp-servers/translation.ts","../system/mcp-servers/vision-prompts.ts","../system/mcp-servers/vision.ts","../system/mcp-servers/workflow-compiler.ts","../system/mcp-servers/workflow.ts","../system/mcp-servers/admin/agent-subscriptions.ts","../system/mcp-servers/admin/agents.ts","../system/mcp-servers/admin/bot-accounts.ts","../system/mcp-servers/admin/controlplane.ts","../system/mcp-servers/admin/diagnostics.ts","../system/mcp-servers/admin/escalations.ts","../system/mcp-servers/admin/exports.ts","../system/mcp-servers/admin/index.ts","../system/mcp-servers/admin/maintenance.ts","../system/mcp-servers/admin/mcp-servers.ts","../system/mcp-servers/admin/ortho.ts","../system/mcp-servers/admin/overview.ts","../system/mcp-servers/admin/pipelines.ts","../system/mcp-servers/admin/schemas.ts","../system/mcp-servers/admin/settings.ts","../system/mcp-servers/admin/tasks.ts","../system/mcp-servers/admin/topics.ts","../system/mcp-servers/admin/users.ts","../system/mcp-servers/admin/workflow-config.ts","../system/mcp-servers/admin/workflows.ts","../system/mcp-servers/admin/yaml-workflows.ts","../system/mcp-servers/db-query/index.ts","../system/mcp-servers/db-query/schemas.ts","../system/mcp-servers/db-query/tools.ts","../system/seed/index.ts","../system/seed/tool-manifests-admin.ts","../system/seed/tool-manifests-data.ts","../system/seed/tool-manifests-escalation.ts","../system/seed/tool-manifests-events.ts","../system/seed/tool-manifests-knowledge.ts","../system/seed/tool-manifests-workflows.ts","../system/workflows/tool-result-guard.ts","../system/workflows/capability-invoke/activities.ts","../system/workflows/capability-invoke/index.ts","../system/workflows/mcp-deterministic/activities.ts","../system/workflows/mcp-deterministic/index.ts","../system/workflows/mcp-query/index.ts","../system/workflows/mcp-query/prompts.ts","../system/workflows/mcp-query/strategy-advisors.ts","../system/workflows/mcp-query/types.ts","../system/workflows/mcp-query/activities/caches.ts","../system/workflows/mcp-query/activities/discovery.ts","../system/workflows/mcp-query/activities/index.ts","../system/workflows/mcp-query/activities/llm.ts","../system/workflows/mcp-query/activities/tool-executor.ts","../system/workflows/mcp-query/activities/tool-loader.ts","../system/workflows/mcp-query-router/activities.ts","../system/workflows/mcp-query-router/index.ts","../system/workflows/mcp-query-router/prompts.ts","../system/workflows/mcp-triage/activities-proxy.ts","../system/workflows/mcp-triage/index.ts","../system/workflows/mcp-triage/prompts.ts","../system/workflows/mcp-triage/response-builders.ts","../system/workflows/mcp-triage/response.ts","../system/workflows/mcp-triage/types.ts","../system/workflows/mcp-triage-deterministic/activities.ts","../system/workflows/mcp-triage-deterministic/index.ts","../system/workflows/mcp-triage-router/activities.ts","../system/workflows/mcp-triage-router/index.ts","../system/workflows/mcp-workflow-builder/index.ts","../system/workflows/mcp-workflow-builder/prompts.ts","../system/workflows/mcp-workflow-builder/activities/caches.ts","../system/workflows/mcp-workflow-builder/activities/index.ts","../system/workflows/mcp-workflow-builder/activities/llm.ts","../system/workflows/mcp-workflow-builder/activities/tool-loader.ts","../system/workflows/mcp-workflow-planner/index.ts","../system/workflows/mcp-workflow-planner/prompts.ts","../system/workflows/mcp-workflow-planner/activities/analyze.ts","../system/workflows/mcp-workflow-planner/activities/index.ts","../system/workflows/mcp-workflow-planner/activities/persist.ts","../system/workflows/mcp-workflow-planner/activities/plan.ts","../system/workflows/shared/discovery.ts","../system/workflows/shared/index.ts","../system/workflows/shared/llm-caller.ts","../system/workflows/shared/prompts.ts","../system/workflows/shared/strategy-advisors.ts","../system/workflows/shared/tool-executor.ts","../system/workflows/shared/tool-loader.ts","../system/workflows/shared/types.ts","../types/agent.ts","../types/auth.ts","../types/config.ts","../types/delegation.ts","../types/discovery.ts","../types/envelope.ts","../types/escalation-strategy.ts","../types/escalation.ts","../types/events.ts","../types/export.ts","../types/express.d.ts","../types/facets.ts","../types/index.ts","../types/logger.ts","../types/maintenance.ts","../types/mcp.ts","../types/oauth.ts","../types/sdk.ts","../types/startup.ts","../types/task.ts","../types/telemetry.ts","../types/tool-context.ts","../types/user.ts","../types/validation.ts","../types/workflow-set.ts","../types/workflow.ts","../types/yaml-workflow.ts","../workers/index.ts"],"version":"5.9.3"}
|
package/build/types/startup.d.ts
CHANGED
|
@@ -229,10 +229,36 @@ export interface LTStartConfig {
|
|
|
229
229
|
/**
|
|
230
230
|
* White-label branding. The `appName` replaces "LongTail" in the dashboard
|
|
231
231
|
* header. Defaults to "LongTail" when omitted.
|
|
232
|
+
*
|
|
233
|
+
* `customCss` and `themes` give the deployment full control of the design
|
|
234
|
+
* system: every color, type, and spacing knob in the dashboard flows through
|
|
235
|
+
* a `--lt-*` CSS variable, so a registered stylesheet restyles the entire
|
|
236
|
+
* product — the built-in pages and the generated x-lt-* forms alike. The
|
|
237
|
+
* CSS is served at `GET /api/settings/custom.css` and loaded before first
|
|
238
|
+
* paint.
|
|
232
239
|
*/
|
|
233
240
|
branding?: {
|
|
234
241
|
/** Product name shown in the dashboard header. Default: "LongTail". */
|
|
235
242
|
appName?: string;
|
|
243
|
+
/** Raw CSS appended to the dashboard stylesheet (served at /api/settings/custom.css). */
|
|
244
|
+
customCss?: string;
|
|
245
|
+
/**
|
|
246
|
+
* Registered themes — each appears in the header theme picker alongside
|
|
247
|
+
* the built-ins. Author the css under a `[data-theme='<id>']` selector
|
|
248
|
+
* overriding the `--lt-*` variables.
|
|
249
|
+
*/
|
|
250
|
+
themes?: Array<{
|
|
251
|
+
/** Theme id — the `data-theme` attribute value. */
|
|
252
|
+
id: string;
|
|
253
|
+
/** Label shown in the theme picker. */
|
|
254
|
+
label: string;
|
|
255
|
+
/** Swatch color (hex) for the picker chip. */
|
|
256
|
+
swatch: string;
|
|
257
|
+
/** CSS block scoped to `[data-theme='<id>']`. */
|
|
258
|
+
css: string;
|
|
259
|
+
/** Marks a dark-surface theme. */
|
|
260
|
+
dark?: boolean;
|
|
261
|
+
}>;
|
|
236
262
|
};
|
|
237
263
|
/** Authentication. Defaults to the built-in JWT adapter using JWT_SECRET. */
|
|
238
264
|
auth?: {
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{j as o}from"./vendor-query-B2UbickB.js";import{c as n}from"./tasks-
|
|
2
|
-
//# sourceMappingURL=AdminDashboard-
|
|
1
|
+
import{j as o}from"./vendor-query-B2UbickB.js";import{c as n}from"./tasks-BAEsqcz2.js";import{j as m}from"./index-C-8xXyvr.js";import{f as c}from"./useEventHooks-BlpwRvHO.js";import{u}from"./mcp-CBcz4BCS.js";import{P as d}from"./PageHeaderWithStats-X0eAmu-x.js";import"./vendor-react-CXumBFUA.js";import"./vendor-icons-DKCAtTJ9.js";function S(){var a;c();const{data:s}=n({limit:1}),{data:e}=m({status:"pending",limit:1}),{data:t}=u(),r=((a=t==null?void 0:t.servers)==null?void 0:a.filter(i=>i.status==="connected").length)??0,l=t?`${r}/${t.total}`:"—";return o.jsx("div",{children:o.jsx(d,{title:"Admin",stats:[{label:"Tasks",value:(s==null?void 0:s.total)??"—"},{label:"Pending Escalations",value:(e==null?void 0:e.total)??"—",dotClass:"bg-status-pending"},{label:"MCP Servers",value:l},{label:"System",value:"Healthy",dotClass:"bg-status-success"}]})})}export{S as AdminDashboard};
|
|
2
|
+
//# sourceMappingURL=AdminDashboard-Cma2NGsF.js.map
|
package/dashboard/dist/assets/{AdminDashboard-DQLGybZ9.js.map → AdminDashboard-Cma2NGsF.js.map}
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AdminDashboard-
|
|
1
|
+
{"version":3,"file":"AdminDashboard-Cma2NGsF.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","jsx","PageHeaderWithStats"],"mappings":"4UAMO,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,aACG,MAAA,CACC,SAAAM,EAAAA,IAACC,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,CAAA,EAEJ,CAEJ"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import{j as e,a as v}from"./vendor-query-B2UbickB.js";import{a as re,d as ce,b as le}from"./agents-BwiSNu73.js";import{E as oe,C as de,u as xe,a as pe,b as ue,c as me}from"./CronLabel-geum95dj.js";import{b as he,u as fe}from"./index-C-8xXyvr.js";import{P as ve}from"./PageHeader-DvEmMMP6.js";import{B as O,k as U,z as be,R as Y,d as M,T as Z,al as G,c as V,b4 as ee,a2 as ye}from"./vendor-icons-DKCAtTJ9.js";import{e as ge}from"./knowledge-BHBt-6kW.js";import{R as te}from"./RunAsSelector-DzYcpQTm.js";import{u as je}from"./workflows-DoX-AtHN.js";import{u as we}from"./yaml-workflows-DM3jVem2.js";import{u as se}from"./capabilities-JUaKsby4.js";import{u as Ne}from"./topics-CY0pJ6_o.js";import{W as Q}from"./WorkflowPill-CQ1AmhlC.js";import{e as _e,c as ke,f as Ce}from"./vendor-react-CXumBFUA.js";import"./BotPicker-CidlGr6f.js";import"./bots-ClgSrxel.js";const X={name:"",description:"",goals:"",rules:"",user_id:"",knowledge_domain:"",subscriptions:[],schedules:[]},Se={topic:"",filter:"",reaction_type:"durable",workflow_type:"",pipeline_id:"",mcp_prompt:"",server_id:"",tool_name:"",input_mapping:"{}",execute_as:"",enabled:!0},qe={cron:"0 * * * *",reaction_type:"durable",workflow_type:"",pipeline_id:"",server_id:"",tool_name:"",envelope:"{}",execute_as:""};function Re(s,a){var l,p,u;const r=(p=(l=s.behaviors)==null?void 0:l.schedules)!=null&&p.length?s.behaviors.schedules.map(n=>({cron:n.cron||"",reaction_type:n.reaction_type||"durable",workflow_type:n.workflow_type||"",pipeline_id:n.pipeline_id||"",server_id:n.server_id||"",tool_name:n.tool_name||"",envelope:n.envelope?JSON.stringify(n.envelope,null,2):"{}",execute_as:n.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:a.map(n=>({id:n.id,topic:n.topic,filter:n.filter?JSON.stringify(n.filter,null,2):"",reaction_type:n.reaction_type,workflow_type:n.workflow_type??"",pipeline_id:n.pipeline_id??"",mcp_prompt:n.mcp_prompt??"",server_id:n.server_id??"",tool_name:n.tool_name??"",input_mapping:JSON.stringify(n.input_mapping??{},null,2),execute_as:n.execute_as??"",enabled:n.enabled})),schedules:r}}function Ae(s){var r;const a={};return s.schedules.length>0&&(a.schedules=s.schedules.map(l=>({cron:l.cron,reaction_type:l.reaction_type||"durable",workflow_type:l.reaction_type==="pipeline"?void 0:l.workflow_type,pipeline_id:l.reaction_type==="pipeline"?l.pipeline_id:void 0,envelope:B(l.envelope)??{},execute_as:l.execute_as||void 0})),a.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:a,workflow_type:((r=s.schedules[0])==null?void 0:r.workflow_type)||void 0,pipeline_id:void 0}}function Oe(s){return s.subscriptions.map(a=>({id:a.id,topic:a.topic,filter:a.filter?B(a.filter):void 0,reaction_type:a.reaction_type,workflow_type:a.workflow_type||void 0,pipeline_id:a.pipeline_id||void 0,mcp_prompt:a.mcp_prompt||void 0,server_id:a.server_id||void 0,tool_name:a.tool_name||void 0,input_mapping:B(a.input_mapping)??{},execute_as:a.execute_as||void 0,enabled:a.enabled}))}function B(s){if(s.trim())try{return JSON.parse(s)}catch{return}}function Ee(s,a,r,l){let p;try{p=JSON.parse(s)}catch{p={}}const u=l.includes(a),n=r===""||r===void 0||r===null||Array.isArray(r)&&r.length===0||r==="[]";if(!u&&n){const{[a]:x,...o}=p;return JSON.stringify(o,null,2)}let h=r;if(typeof r=="string")try{const x=JSON.parse(r);Array.isArray(x)&&(h=x)}catch{}return JSON.stringify({...p,[a]:h},null,2)}const S="section-header mt-[3em] first:mt-0",$="label",_="hint",R="input",L="input-json w-full";function $e({form:s,set:a}){return e.jsxs("div",{className:"space-y-8",children:[e.jsxs("div",{className:"border-l-2 border-accent/30 pl-3 py-1 flex items-start justify-between",children:[e.jsx("p",{className:"text-xs 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."}),e.jsx("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.jsx(O,{className:"w-3 h-3",strokeWidth:1.5})})]}),e.jsxs("div",{children:[e.jsx("label",{className:$,children:"Name *"}),e.jsx("input",{type:"text",value:s.name,onChange:r=>a("name",r.target.value),placeholder:"health-monitor",className:R}),e.jsx("p",{className:_,children:"Lowercase, kebab-case. This appears everywhere."})]}),e.jsxs("div",{children:[e.jsx("label",{className:$,children:"Description"}),e.jsx("input",{type:"text",value:s.description,onChange:r=>a("description",r.target.value),placeholder:"Watches for workflow failures and captures diagnostics",className:R}),e.jsx("p",{className:_,children:"One sentence that explains what this automation does."})]})]})}function Pe({form:s,set:a}){return e.jsxs("div",{className:"space-y-8",children:[e.jsxs("div",{className:"border-l-2 border-accent/30 pl-3 py-1 flex items-start justify-between",children:[e.jsx("p",{className:"text-xs text-text-secondary italic leading-relaxed",children:"Goals define what drives the automation. Rules define what constrains it."}),e.jsx("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.jsx(O,{className:"w-3 h-3",strokeWidth:1.5})})]}),e.jsxs("div",{className:"grid grid-cols-2 gap-8",children:[e.jsxs("div",{children:[e.jsx("label",{className:$,children:"Goals"}),e.jsx("textarea",{value:s.goals,onChange:r=>a("goals",r.target.value),placeholder:"Detect failures early, capture diagnostics, alert before cascading",rows:4,className:`${R} resize-none`}),e.jsx("p",{className:_,children:"Primary motivation. What the automation is trying to achieve."})]}),e.jsxs("div",{children:[e.jsx("label",{className:$,children:"Rules"}),e.jsx("textarea",{value:s.rules,onChange:r=>a("rules",r.target.value),placeholder:"Never auto-restart failed workflows. Always escalate to humans.",rows:4,className:`${R} resize-none`}),e.jsx("p",{className:_,children:"Guardrails. What it must never do, even when goals suggest it should."})]})]})]})}function Ie({form:s,set:a}){const{data:r}=ge(),l=(r==null?void 0:r.domains)??[];return e.jsxs("div",{className:"space-y-6",children:[e.jsxs("div",{className:"border-l-2 border-accent/30 pl-3 py-1 flex items-start justify-between",children:[e.jsx("p",{className:"text-xs text-text-secondary italic leading-relaxed",children:"Assign a knowledge domain — the automation's memory. It stores context here over time."}),e.jsx("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.jsx(O,{className:"w-3 h-3",strokeWidth:1.5})})]}),e.jsxs("div",{children:[e.jsx("label",{className:$,children:"Knowledge Domain"}),e.jsx("input",{type:"text",value:s.knowledge_domain,onChange:p=>a("knowledge_domain",p.target.value),placeholder:"e.g., system-health, content-review, vendor-data",className:R,list:"domain-suggestions"}),e.jsx("datalist",{id:"domain-suggestions",children:l.map(p=>e.jsx("option",{value:p.domain},p.domain))}),e.jsx("p",{className:_,children:"Choose an existing domain to share memory, or type a new name to create one."})]}),l.length>0&&e.jsxs("div",{children:[e.jsx("label",{className:$,children:"Existing Domains"}),e.jsx("div",{className:"space-y-0.5 mt-2",children:l.map(p=>e.jsxs("button",{type:"button",onClick:()=>a("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.jsx(U,{className:"w-3.5 h-3.5 text-text-quaternary shrink-0",strokeWidth:1.5}),e.jsx("span",{className:"text-sm text-text-primary flex-1",children:p.domain}),e.jsxs("span",{className:"text-2xs text-text-quaternary",children:[p.count," entries"]}),e.jsx("span",{className:"text-2xs text-text-quaternary",children:e.jsx(he,{date:p.latest})})]},p.domain))})]})]})}function We({serverId:s,toolName:a,onChange:r}){const{data:l}=se(),p=v.useMemo(()=>{var t;return((t=l==null?void 0:l.categories)==null?void 0:t.flatMap(i=>i.tools))??[]},[l]),[u,n]=v.useState(!1),[h,x]=v.useState(""),o=v.useRef(null),f=v.useRef(null);v.useEffect(()=>{if(!u)return;function t(i){f.current&&!f.current.contains(i.target)&&n(!1)}return document.addEventListener("mousedown",t),()=>document.removeEventListener("mousedown",t)},[u]);const c=a?`${a}`:"",d=u?h:c,y=v.useMemo(()=>{const t=(u?h:"").toLowerCase();return t?p.filter(i=>i.name.toLowerCase().includes(t)||i.serverName.toLowerCase().includes(t)||(i.description??"").toLowerCase().includes(t)):p},[p,h,u]),m=a?p.find(t=>t.serverId===s&&t.name===a):void 0;return e.jsxs("div",{ref:f,className:"relative",children:[e.jsx("input",{ref:o,type:"text",value:d,onFocus:()=>{n(!0),x(c)},onChange:t=>{const i=t.target.value;x(i),i||r("",""),u||n(!0)},placeholder:"Search capabilities...",className:"input font-mono text-sm w-full"}),!u&&(m==null?void 0:m.description)&&e.jsx("p",{className:"text-2xs text-text-tertiary mt-1 italic",children:m.description}),u&&y.length>0&&e.jsx("div",{className:"absolute z-[100] left-0 right-0 mt-1 max-h-64 overflow-y-auto rounded-md border border-surface-border bg-surface shadow-lg",children:y.map(t=>e.jsxs("button",{type:"button",onClick:()=>{r(t.serverId,t.name),x(t.name),n(!1)},className:`w-full text-left px-3 py-2 hover:bg-surface-hover transition-colors flex items-center gap-3 ${s===t.serverId&&a===t.name?"bg-accent/5":""}`,children:[e.jsx("span",{className:"text-2xs font-mono text-text-primary shrink-0",children:t.name}),e.jsxs("span",{className:"inline-flex items-center gap-1 px-1.5 py-0.5 rounded text-2xs font-medium shrink-0 bg-accent/10 text-accent",children:[e.jsx(be,{className:"w-2 h-2",strokeWidth:1.5}),t.serverName]}),t.description&&e.jsx("span",{className:"text-2xs text-text-quaternary truncate",children:t.description})]},`${t.serverId}:${t.name}`))}),u&&y.length===0&&h&&e.jsx("div",{className:"absolute z-[100] left-0 right-0 mt-1 rounded-md border border-surface-border bg-surface shadow-lg px-3 py-4 text-center",children:e.jsxs("p",{className:"text-2xs text-text-quaternary",children:['No capabilities match "',h,'"']})})]})}const Te={durable:"Workflow",pipeline:"Pipeline",capability:"Capability",mcp_query:"MCP Query"},Me=["durable","pipeline","capability","mcp_query"];function ae({reactionType:s,onReactionTypeChange:a,workflowType:r,onWorkflowTypeChange:l,pipelineId:p,onPipelineIdChange:u,serverId:n,toolName:h,onCapabilityChange:x,mcpPrompt:o,onMcpPromptChange:f,availableTypes:c=[...Me]}){const{data:d}=je(),y=(d??[]).filter(i=>i.invocable).map(i=>i.workflow_type),{data:m}=we({status:"active"}),t=((m==null?void 0:m.workflows)??[]).map(i=>({id:i.id,name:i.graph_topic||i.id}));return e.jsxs("div",{className:"space-y-4",children:[e.jsx("div",{className:"flex gap-1",children:c.map(i=>{const b=s===i;return e.jsx("button",{type:"button",onClick:()=>a(i),className:`px-3 py-1.5 text-2xs font-medium rounded-md transition-colors ${b?"bg-accent/10 text-accent":"text-text-tertiary hover:text-text-primary hover:bg-surface-hover"}`,children:Te[i]},i)})}),s==="durable"&&e.jsxs("div",{children:[e.jsx("label",{className:"label",children:"Workflow *"}),e.jsxs("select",{value:r,onChange:i=>l(i.target.value),className:"input",children:[e.jsx("option",{value:"",children:"Select workflow..."}),y.map(i=>e.jsx("option",{value:i,children:i},i))]})]}),s==="pipeline"&&e.jsxs("div",{children:[e.jsx("label",{className:"label",children:"Pipeline *"}),e.jsxs("select",{value:p,onChange:i=>u(i.target.value),className:"input",children:[e.jsx("option",{value:"",children:"Select pipeline..."}),t.map(i=>e.jsx("option",{value:i.id,children:i.name},i.id))]})]}),s==="capability"&&e.jsxs("div",{children:[e.jsx("label",{className:"label",children:"Capability *"}),e.jsx(We,{serverId:n,toolName:h,onChange:x})]}),s==="mcp_query"&&f&&e.jsxs("div",{children:[e.jsx("label",{className:"label",children:"Prompt *"}),e.jsx("textarea",{value:o??"",onChange:i=>f(i.target.value),placeholder:"Analyze the error and suggest remediation...",rows:3,className:"input resize-none"})]})]})}const Le={task:"bg-status-active/10 text-status-active",workflow:"bg-accent/15 text-accent",escalation:"bg-status-warning/10 text-status-warning",activity:"bg-status-active/10 text-status-active",knowledge:"bg-accent/10 text-accent",file:"bg-status-draft/10 text-status-draft",agent:"bg-status-success/10 text-status-success",app:"bg-status-error/10 text-status-error",milestone:"bg-accent/10 text-accent"};function Je({form:s,set:a}){const{data:r}=Ne({limit:200}),{data:l}=se(),p=(r==null?void 0:r.topics)??[],u=v.useMemo(()=>{var t;return((t=l==null?void 0:l.categories)==null?void 0:t.flatMap(i=>i.tools))??[]},[l]),[n,h]=v.useState(0),x=(t,i,b)=>{const g=[...s.subscriptions];g[t]={...g[t],[i]:b},a("subscriptions",g)},o=()=>{a("subscriptions",[...s.subscriptions,{...Se}]),h(s.subscriptions.length)},f=t=>{a("subscriptions",s.subscriptions.filter((i,b)=>b!==t)),n>=s.subscriptions.length-1&&h(Math.max(0,s.subscriptions.length-2))},c=s.subscriptions,d=c[n],y=t=>t.topic?t.reaction_type==="durable"?!!t.workflow_type:t.reaction_type==="pipeline"?!!t.pipeline_id:t.reaction_type==="mcp_query"?!!t.mcp_prompt:t.reaction_type==="capability"?!!t.server_id&&!!t.tool_name:!1:!1,m=d?p.find(t=>t.topic===d.topic):void 0;return c.length===0?e.jsxs("div",{className:"max-w-xl",children:[e.jsxs("div",{className:"border-l-2 border-accent/30 pl-3 py-1 flex items-start justify-between mb-8",children:[e.jsx("p",{className:"text-xs text-text-secondary italic leading-relaxed",children:"Optional. When a matching event is published, the automation runs the configured workflow with the event payload."}),e.jsx("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.jsx(O,{className:"w-3 h-3",strokeWidth:1.5})})]}),e.jsxs("div",{className:"flex flex-col items-center justify-center py-12 text-center",children:[e.jsx(Y,{className:"w-8 h-8 text-text-quaternary/40 mb-3",strokeWidth:1}),e.jsx("p",{className:"text-sm text-text-tertiary mb-2",children:"No event subscriptions yet"}),e.jsx("p",{className:"text-2xs text-text-quaternary max-w-sm mb-6",children:"Each subscription listens for a topic pattern and runs a workflow when it matches."}),e.jsxs("button",{onClick:o,className:"flex items-center gap-2 text-xs text-accent hover:text-accent-hover transition-colors",children:[e.jsx(M,{className:"w-3.5 h-3.5"})," Add first subscription"]})]})]}):e.jsxs("div",{children:[e.jsxs("div",{className:"border-l-2 border-accent/30 pl-3 py-1 flex items-start justify-between mb-6",children:[e.jsx("p",{className:"text-xs text-text-secondary italic leading-relaxed",children:"Optional. When a matching event is published, the automation runs the configured workflow with the event payload."}),e.jsx("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.jsx(O,{className:"w-3 h-3",strokeWidth:1.5})})]}),e.jsxs("div",{className:"flex gap-8",children:[e.jsxs("div",{className:"w-52 shrink-0 space-y-0.5",children:[c.map((t,i)=>e.jsxs("div",{className:`group/sub flex items-center rounded-md transition-colors ${n===i?"bg-accent/10 text-accent":"text-text-tertiary hover:text-text-primary hover:bg-surface-hover"}`,children:[e.jsxs("button",{onClick:()=>h(i),className:"flex-1 text-left px-3 py-2 min-w-0",children:[e.jsxs("div",{className:"flex items-center gap-1.5",children:[e.jsx("span",{className:`w-1.5 h-1.5 rounded-full dot-ring shrink-0 ${y(t)?"bg-status-success":"bg-surface-border"}`}),e.jsx("span",{className:"text-2xs font-mono truncate",children:t.topic||"new subscription"})]}),e.jsxs("span",{className:"text-2xs text-text-quaternary ml-3",children:["→ ",t.workflow_type||t.tool_name||t.reaction_type]})]}),e.jsx("button",{onClick:b=>{b.stopPropagation(),confirm(`Remove subscription "${t.topic||"new"}"?
|
|
2
|
+
|
|
3
|
+
This takes effect when you save.`)&&f(i)},className:"opacity-0 group-hover/sub:opacity-100 px-2 text-text-quaternary hover:text-status-error transition-all",title:"Remove",children:e.jsx(Z,{className:"w-3 h-3"})})]},i)),e.jsxs("button",{onClick:o,className:"w-full flex items-center gap-1.5 px-3 py-2 text-2xs text-accent hover:text-accent-hover transition-colors",children:[e.jsx(M,{className:"w-3 h-3"})," Add"]})]}),d&&e.jsxs("div",{className:"flex-1 min-w-0 space-y-12",children:[e.jsxs("div",{children:[e.jsx("label",{className:S,children:"When this event fires"}),e.jsx(ze,{value:d.topic,onChange:t=>x(n,"topic",t),topics:p}),(m==null?void 0:m.payload_schema)&&e.jsxs("div",{className:"mt-3 p-3 rounded-md bg-surface-sunken border border-surface-border",children:[e.jsx("p",{className:"text-2xs text-text-quaternary mb-1 uppercase tracking-wider font-medium",children:"Payload Schema"}),e.jsx("pre",{className:"text-2xs font-mono text-text-secondary whitespace-pre-wrap overflow-x-auto max-h-40",children:JSON.stringify(m.payload_schema.properties??m.payload_schema,null,2)}),m.description&&e.jsx("p",{className:"text-2xs text-text-tertiary mt-2 italic",children:m.description})]})]}),e.jsxs("div",{children:[e.jsx("label",{className:S,children:"Run this reaction"}),e.jsx(ae,{reactionType:d.reaction_type,onReactionTypeChange:t=>x(n,"reaction_type",t),workflowType:d.workflow_type,onWorkflowTypeChange:t=>x(n,"workflow_type",t),pipelineId:d.pipeline_id,onPipelineIdChange:t=>x(n,"pipeline_id",t),serverId:d.server_id,toolName:d.tool_name,onCapabilityChange:(t,i)=>{var A;const b=[...s.subscriptions],g={...b[n],server_id:t,tool_name:i},k=u.find(w=>w.serverId===t&&w.name===i),E=(A=k==null?void 0:k.inputSchema)==null?void 0:A.properties;if(E&&i){const w={};for(const P of Object.keys(E))P.startsWith("_")||(w[P]=`{event.data.${P}}`);g.input_mapping=JSON.stringify(w,null,2)}b[n]=g,a("subscriptions",b)},mcpPrompt:d.mcp_prompt,onMcpPromptChange:t=>x(n,"mcp_prompt",t)})]}),e.jsxs("div",{className:"grid grid-cols-2 gap-6",children:[e.jsxs("div",{children:[e.jsx("label",{className:S,children:"As identity"}),e.jsx(te,{selected:d.execute_as,onChange:t=>x(n,"execute_as",t)}),e.jsx("p",{className:_,children:"Identity used when invoking the workflow."})]}),e.jsxs("div",{children:[e.jsx("label",{className:S,children:"But only if"}),e.jsx("input",{type:"text",value:d.filter,onChange:t=>x(n,"filter",t.target.value),placeholder:'{"extension": "png"}',className:`${R} font-mono text-xs`}),e.jsx("p",{className:_,children:"JSON filter against event.data. Click an operator to insert:"}),e.jsx("div",{className:"flex flex-wrap gap-1.5 mt-1.5",children:[{label:"equals",value:'{"key": "val"}'},{label:"not equal",value:'{"key": {"$ne": "val"}}'},{label:"in list",value:'{"key": {"$in": ["a", "b"]}}'},{label:"exists",value:'{"key": {"$exists": true}}'}].map(t=>e.jsx("button",{type:"button",onClick:()=>x(n,"filter",t.value),className:"px-2 py-0.5 text-2xs font-mono rounded bg-accent/8 text-accent hover:bg-accent/15 transition-colors",children:t.label},t.label))})]})]}),e.jsxs("div",{children:[e.jsx("label",{className:S,children:"With this data"}),d.reaction_type==="capability"&&d.tool_name?e.jsx(Fe,{tool:u.find(t=>t.serverId===d.server_id&&t.name===d.tool_name),value:d.input_mapping,onChange:t=>x(n,"input_mapping",t),eventSchema:m==null?void 0:m.payload_schema}):e.jsxs(e.Fragment,{children:[e.jsx("textarea",{value:d.input_mapping,onChange:t=>x(n,"input_mapping",t.target.value),rows:10,className:L,placeholder:`{
|
|
4
|
+
"data": {
|
|
5
|
+
"orderId": "{event.data.orderId}",
|
|
6
|
+
"error": "{event.data.error}"
|
|
7
|
+
}
|
|
8
|
+
}`}),e.jsxs("p",{className:_,children:["Maps event fields to workflow input. ","{event.data.fieldName}"," resolves at runtime."]})]})]})]})]})]})}function Fe({tool:s,value:a,onChange:r,eventSchema:l}){var y,m;const[p,u]=v.useState(!1),n=((y=s==null?void 0:s.inputSchema)==null?void 0:y.properties)??{},h=((m=s==null?void 0:s.inputSchema)==null?void 0:m.required)??[],x=Object.entries(n).filter(([t])=>!t.startsWith("_")),o=v.useMemo(()=>[...x].sort(([t],[i])=>{const b=h.indexOf(t),g=h.indexOf(i);return b!==-1&&g!==-1?b-g:b!==-1?-1:g!==-1?1:t.localeCompare(i)}),[x,h]),f=v.useMemo(()=>{const t=[{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"}],i=l==null?void 0:l.properties;if(i)for(const[b,g]of Object.entries(i))t.push({value:`{event.data.${b}}`,label:g.description||b});return t},[l]),c=v.useMemo(()=>{try{return JSON.parse(a)}catch{return{}}},[a]),d=(t,i)=>{r(Ee(a,t,i,h))};return o.length===0||p?e.jsxs("div",{children:[o.length>0&&e.jsx("div",{className:"flex justify-end mb-1",children:e.jsx("button",{type:"button",onClick:()=>u(!1),className:"text-2xs text-accent hover:text-accent-hover transition-colors",children:"Form view"})}),e.jsx("textarea",{value:a,onChange:t=>r(t.target.value),rows:8,className:L,placeholder:`{
|
|
9
|
+
"domain": "{event.data.name}",
|
|
10
|
+
"key": "{event.data.path}"
|
|
11
|
+
}`}),e.jsxs("p",{className:_,children:["Maps event fields to capability inputs. ","{event.data.fieldName}"," resolves at runtime."]})]}):e.jsxs("div",{children:[e.jsxs("div",{className:"flex items-center justify-between mb-3",children:[e.jsx("p",{className:"text-2xs text-text-tertiary",children:"Map each input to an event field or enter a static value."}),e.jsx("button",{type:"button",onClick:()=>u(!0),className:"text-2xs text-text-tertiary hover:text-accent transition-colors",children:"Raw JSON"})]}),e.jsx("div",{className:"space-y-4",children:o.map(([t,i])=>{const b=h.includes(t),g=i.description,k=i.type,E=typeof c[t]=="string"?c[t]:typeof c[t]=="object"?JSON.stringify(c[t]):c[t]!=null?String(c[t]):"";return e.jsxs("div",{className:"bg-surface-sunken/30 rounded-md px-4 py-3",children:[e.jsxs("div",{className:"flex items-baseline gap-2 mb-0.5",children:[e.jsxs("label",{className:"text-2xs font-semibold uppercase tracking-wider text-text-secondary",children:[t.replace(/[_-]/g," "),b&&e.jsx("span",{className:"text-status-error ml-0.5",children:"*"})]}),k&&e.jsx("span",{className:"text-2xs text-text-quaternary",children:k})]}),g&&e.jsx("p",{className:"text-2xs text-text-quaternary mb-2",children:g}),e.jsx(De,{value:E,onChange:A=>d(t,A),suggestions:f,fieldType:k,placeholder:`{event.data.${t}}`})]},t)})})]})}function De({value:s,onChange:a,suggestions:r,fieldType:l,placeholder:p}){const[u,n]=v.useState(!1),[h,x]=v.useState(""),o=v.useRef(null);v.useEffect(()=>{if(!u)return;function c(d){o.current&&!o.current.contains(d.target)&&n(!1)}return document.addEventListener("mousedown",c),()=>document.removeEventListener("mousedown",c)},[u]);const f=r.filter(c=>c.value.toLowerCase().includes(h.toLowerCase())||c.label.toLowerCase().includes(h.toLowerCase()));if(l==="object")return e.jsx("textarea",{value:s,onChange:c=>{try{a(JSON.parse(c.target.value))}catch{a(c.target.value)}},rows:3,className:`${L} text-xs`,placeholder:'{ "source": "{event.source}" }'});if(l==="array"){const c=(()=>{try{const d=JSON.parse(s);if(Array.isArray(d))return d.map(String)}catch{}return s?s.split(",").map(d=>d.trim()).filter(Boolean):[]})();return e.jsxs("div",{children:[e.jsx("div",{className:"flex flex-wrap gap-1.5 mb-2 min-h-[28px]",children:c.map((d,y)=>e.jsxs("span",{className:"inline-flex items-center gap-1 px-2 py-0.5 text-2xs font-mono bg-accent/10 text-accent rounded-full",children:[d,e.jsx("button",{type:"button",onClick:()=>{const m=c.filter((t,i)=>i!==y);a(JSON.stringify(m))},className:"text-accent/50 hover:text-accent ml-0.5",children:"×"})]},y))}),e.jsx("input",{type:"text",className:"input font-mono text-xs w-full",placeholder:"Type a value and press Enter",onKeyDown:d=>{if(d.key==="Enter"||d.key===","){d.preventDefault();const y=d.target.value.trim();y&&(a(JSON.stringify([...c,y])),d.target.value="")}}})]})}return e.jsxs("div",{ref:o,className:"relative",children:[e.jsx("input",{type:"text",value:s,onFocus:()=>{n(!0),x("")},onChange:c=>{a(c.target.value),x(c.target.value),u||n(!0)},className:"input font-mono text-xs w-full",placeholder:p}),u&&f.length>0&&e.jsx("div",{className:"absolute z-[100] left-0 right-0 mt-1 max-h-48 overflow-y-auto rounded-md border border-surface-border bg-surface shadow-lg",children:f.map(c=>e.jsxs("button",{type:"button",onClick:()=>{a(c.value),n(!1)},className:`w-full text-left px-3 py-1.5 hover:bg-surface-hover transition-colors flex items-center gap-3 ${s===c.value?"bg-accent/5":""}`,children:[e.jsx("span",{className:"text-2xs font-mono text-accent shrink-0",children:c.value}),e.jsx("span",{className:"text-2xs text-text-quaternary truncate",children:c.label})]},c.value))})]})}function ze({value:s,onChange:a,topics:r}){const[l,p]=v.useState(!1),[u,n]=v.useState(""),h=v.useRef(null),x=v.useRef(null);v.useEffect(()=>{function c(d){x.current&&!x.current.contains(d.target)&&p(!1)}return l&&document.addEventListener("mousedown",c),()=>document.removeEventListener("mousedown",c)},[l]);const o=l?u:s,f=r.filter(c=>c.topic.toLowerCase().includes((l?u:"").toLowerCase())||(c.description??"").toLowerCase().includes((l?u:"").toLowerCase()));return e.jsxs("div",{ref:x,className:"relative",children:[e.jsx("input",{ref:h,type:"text",value:o,onFocus:()=>{p(!0),n(s)},onChange:c=>{const d=c.target.value;n(d),a(d),l||p(!0)},placeholder:"workflow.failed or app.>",className:`${R} font-mono`}),l&&f.length>0&&e.jsx("div",{className:"absolute z-[100] left-0 right-0 mt-1 max-h-64 overflow-y-auto rounded-md border border-surface-border bg-surface shadow-lg",children:f.map(c=>{const d=Le[c.category]??"bg-surface-sunken text-text-tertiary";return e.jsxs("button",{type:"button",onClick:()=>{a(c.topic),n(c.topic),p(!1)},className:`w-full text-left px-3 py-2 hover:bg-surface-hover transition-colors flex items-center gap-3 ${s===c.topic?"bg-accent/5":""}`,children:[e.jsx("span",{className:"text-2xs font-mono text-text-primary shrink-0",children:c.topic}),e.jsx("span",{className:`inline-flex items-center px-1.5 py-0.5 rounded text-2xs font-medium shrink-0 ${d}`,children:c.category}),c.description&&e.jsx("span",{className:"text-2xs text-text-quaternary truncate",children:c.description})]},c.topic)})})]})}const Be=["*/5 * * * *","*/15 * * * *","0 * * * *","0 */4 * * *","0 7 * * *","0 9 * * 1-5"];function z(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 Ue({form:s,set:a}){const[r,l]=v.useState(0),p=(o,f,c)=>{const d=[...s.schedules];d[o]={...d[o],[f]:c},a("schedules",d)},u=()=>{a("schedules",[...s.schedules,{...qe}]),l(s.schedules.length)},n=o=>{a("schedules",s.schedules.filter((f,c)=>c!==o)),r>=s.schedules.length-1&&l(Math.max(0,s.schedules.length-2))},h=s.schedules,x=h[r];return h.length===0?e.jsxs("div",{children:[e.jsxs("div",{className:"border-l-2 border-accent/30 pl-3 py-1 mb-8 flex items-start justify-between",children:[e.jsx("p",{className:"text-xs text-text-secondary italic leading-relaxed",children:"Optional. Each schedule runs a workflow on a cron timer."}),e.jsx("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.jsx(O,{className:"w-3 h-3",strokeWidth:1.5})})]}),e.jsxs("div",{className:"flex flex-col items-center justify-center py-12 text-center",children:[e.jsx(G,{className:"w-8 h-8 text-text-quaternary/40 mb-3",strokeWidth:1}),e.jsx("p",{className:"text-sm text-text-tertiary mb-2",children:"No schedules"}),e.jsx("p",{className:"text-2xs text-text-quaternary max-w-sm mb-6",children:"Add a schedule to run a workflow on a recurring cron timer."}),e.jsxs("button",{onClick:u,className:"flex items-center gap-2 text-xs text-accent hover:text-accent-hover transition-colors",children:[e.jsx(M,{className:"w-3.5 h-3.5"})," Add schedule"]})]})]}):e.jsxs("div",{children:[e.jsxs("div",{className:"border-l-2 border-accent/30 pl-3 py-1 mb-6 flex items-start justify-between",children:[e.jsx("p",{className:"text-xs text-text-secondary italic leading-relaxed",children:"Each schedule runs a workflow on a timer. An automation can have multiple schedules targeting different workflows."}),e.jsx("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.jsx(O,{className:"w-3 h-3",strokeWidth:1.5})})]}),e.jsxs("div",{className:"flex gap-8",children:[e.jsxs("div",{className:"w-48 shrink-0 space-y-0.5",children:[h.map((o,f)=>e.jsxs("div",{className:`group/sched flex items-center rounded-md transition-colors ${r===f?"bg-accent/10 text-accent":"text-text-tertiary hover:text-text-primary hover:bg-surface-hover"}`,children:[e.jsxs("button",{onClick:()=>l(f),className:"flex-1 text-left px-3 py-2 min-w-0",children:[e.jsx("span",{className:"text-2xs font-mono block",children:o.cron||"new schedule"}),e.jsxs("span",{className:"text-2xs text-text-quaternary",children:[(o.reaction_type==="pipeline"?o.pipeline_id:o.workflow_type)||"no target"," · ",z(o.cron)]})]}),e.jsx("button",{onClick:c=>{c.stopPropagation(),confirm(`Remove schedule "${o.cron||"new"}"?
|
|
12
|
+
|
|
13
|
+
This takes effect when you save.`)&&n(f)},className:"opacity-0 group-hover/sched:opacity-100 px-2 text-text-quaternary hover:text-status-error transition-all",title:"Remove",children:e.jsx(Z,{className:"w-3 h-3"})})]},f)),e.jsxs("button",{onClick:u,className:"w-full flex items-center gap-1.5 px-3 py-2 text-2xs text-accent hover:text-accent-hover transition-colors",children:[e.jsx(M,{className:"w-3 h-3"})," Add"]})]}),x&&e.jsxs("div",{className:"flex-1 min-w-0 space-y-12",children:[e.jsxs("div",{children:[e.jsx("label",{className:S,children:"Run every"}),e.jsx("input",{type:"text",value:x.cron,onChange:o=>p(r,"cron",o.target.value),placeholder:"0 * * * *",className:`${R} font-mono`}),x.cron&&e.jsx("p",{className:"text-2xs text-accent/80 mt-1",children:z(x.cron)}),e.jsx("div",{className:"flex gap-3 mt-2 overflow-x-auto",children:Be.map(o=>e.jsx("button",{type:"button",onClick:()=>p(r,"cron",o),className:`text-2xs font-mono whitespace-nowrap transition-colors ${x.cron===o?"text-accent font-medium":"text-accent/50 hover:text-accent"}`,children:z(o)},o))})]}),e.jsxs("div",{children:[e.jsx("label",{className:S,children:"Run this reaction"}),e.jsx(ae,{reactionType:x.reaction_type,onReactionTypeChange:o=>p(r,"reaction_type",o),workflowType:x.workflow_type,onWorkflowTypeChange:o=>p(r,"workflow_type",o),pipelineId:x.pipeline_id,onPipelineIdChange:o=>p(r,"pipeline_id",o),serverId:x.server_id,toolName:x.tool_name,onCapabilityChange:(o,f)=>{p(r,"server_id",o),p(r,"tool_name",f)},availableTypes:["durable","pipeline","capability"]})]}),e.jsxs("div",{children:[e.jsx("label",{className:S,children:"As identity"}),e.jsx(te,{selected:x.execute_as,onChange:o=>p(r,"execute_as",o)}),e.jsx("p",{className:_,children:"Identity used when invoking."})]}),e.jsxs("div",{children:[e.jsx("label",{className:S,children:"With this data"}),e.jsx("textarea",{value:x.envelope,onChange:o=>p(r,"envelope",o.target.value),rows:10,className:L,placeholder:`{
|
|
14
|
+
"data": { "source": "cron" }
|
|
15
|
+
}`}),e.jsx("p",{className:_,children:"Static payload passed to the workflow on each invocation."})]})]})]})]})}function W({icon:s,color:a,title:r,children:l}){return e.jsxs("div",{className:"mb-10",children:[e.jsxs("div",{className:"flex items-center gap-2 mb-2 pb-1.5 border-b border-surface-border/40",children:[e.jsx(s,{className:`w-3.5 h-3.5 ${a}`,strokeWidth:1.5}),e.jsx("h3",{className:"text-xs font-semibold uppercase tracking-widest text-accent/80",children:r})]}),e.jsx("div",{className:"pl-5.5",children:l})]})}function T({label:s,children:a}){return e.jsxs("div",{className:"flex gap-3 py-0.5",children:[e.jsx("span",{className:"text-2xs text-text-quaternary w-20 shrink-0",children:s}),e.jsx("span",{className:"text-xs text-text-primary",children:a})]})}function Ye({form:s}){return e.jsxs("div",{children:[e.jsxs(W,{icon:V,color:"text-accent",title:"Identity",children:[e.jsx(T,{label:"Name",children:s.name||"—"}),s.description&&e.jsx(T,{label:"Description",children:s.description})]}),(s.goals||s.rules)&&e.jsxs(W,{icon:ee,color:"text-accent",title:"Motivation",children:[s.goals&&e.jsx(T,{label:"Goals",children:s.goals}),s.rules&&e.jsx(T,{label:"Rules",children:s.rules})]}),e.jsx(W,{icon:U,color:"text-accent",title:"Knowledge",children:e.jsx(T,{label:"Domain",children:s.knowledge_domain||"None"})}),e.jsxs("div",{className:"grid grid-cols-2 gap-x-10",children:[e.jsx(W,{icon:Y,color:"text-accent",title:`Subscriptions (${s.subscriptions.length})`,children:s.subscriptions.length===0?e.jsx("span",{className:"text-2xs text-text-quaternary",children:"None configured"}):e.jsx("div",{className:"divide-y divide-surface-border/30",children:s.subscriptions.map((a,r)=>e.jsxs("div",{className:"flex items-center py-1.5",children:[e.jsx("div",{className:"flex-1 min-w-0",children:e.jsx(oe,{topic:a.topic||"unset"})}),e.jsxs("div",{className:"flex items-center gap-1.5 shrink-0",children:[e.jsx("span",{className:"text-text-quaternary text-2xs",children:"→"}),a.workflow_type?e.jsx(Q,{type:a.workflow_type}):e.jsx("span",{className:"text-2xs text-text-quaternary",children:a.reaction_type})]})]},r))})}),e.jsx(W,{icon:G,color:"text-accent",title:`Schedules (${s.schedules.length})`,children:s.schedules.length===0?e.jsx("span",{className:"text-2xs text-text-quaternary",children:"None configured"}):e.jsx("div",{className:"divide-y divide-surface-border/30",children:s.schedules.map((a,r)=>e.jsxs("div",{className:"flex items-center py-1.5",children:[e.jsx("div",{className:"flex-1 min-w-0",children:e.jsx(de,{cron:a.cron})}),e.jsxs("div",{className:"flex items-center gap-1.5 shrink-0",children:[e.jsx("span",{className:"text-text-quaternary text-2xs",children:"→"}),a.workflow_type?e.jsx(Q,{type:a.workflow_type}):e.jsx("span",{className:"text-2xs text-text-quaternary",children:"no workflow"})]})]},r))})})]}),e.jsx("div",{className:"border-l-2 border-status-success/30 pl-3 py-2 mt-6",children:e.jsx("p",{className:"text-2xs text-text-tertiary leading-relaxed",children:"After saving, subscriptions and schedules activate immediately. You can pause the automation anytime."})})]})}const Ge=[{id:1,label:"Identity",icon:V},{id:2,label:"Motivation",icon:ee},{id:3,label:"Knowledge",icon:U},{id:4,label:"Subscriptions",icon:Y},{id:5,label:"Schedules",icon:G},{id:6,label:"Review",icon:ye}];function dt(){var H;const{id:s}=_e(),a=!s,r=ke(),{data:l}=fe(),u=!!((H=l==null?void 0:l.ai)!=null&&H.enabled)?"Agent":"Automation",{data:n,isLoading:h}=re(a?null:s),{data:x}=xe(a?null:s),o=ce(),f=le(),c=pe(),d=ue(),y=me(),[m,t]=v.useState(X),[i,b]=v.useState(!1),[g,k]=v.useState(""),[E,A]=Ce(),w=parseInt(E.get("step")||"1",10),P=v.useCallback(j=>{A(N=>{const q=new URLSearchParams(N);return q.set("step",String(j)),q},{replace:!0})},[A]);v.useEffect(()=>{if(!i){if(a){t(X),b(!0);return}n&&x&&(t(Re(n,x.subscriptions??[])),b(!0))}},[n,x,a,i]);const I=(j,N)=>t(q=>({...q,[j]:N})),ne=async()=>{k("");try{const j=Ae(m);let N=s;a?N=(await o.mutateAsync(j)).id:await f.mutateAsync({id:s,...j});const q=Oe(m),ie=(x==null?void 0:x.subscriptions)??[],J=new Set(ie.map(C=>C.id));for(const C of q)if(C.id&&J.has(C.id)){const{id:F,...D}=C;await d.mutateAsync({agentId:N,subId:F,...D}),J.delete(F)}else{const{id:F,...D}=C;await c.mutateAsync({agentId:N,...D})}for(const C of J)await y.mutateAsync({agentId:N,subId:C});r(`/agents/${N}`)}catch(j){k(j.message)}};if(!a&&h)return e.jsxs("div",{className:"animate-pulse space-y-4",children:[e.jsx("div",{className:"h-8 bg-surface-sunken rounded w-48"}),e.jsx("div",{className:"h-60 bg-surface-sunken rounded"})]});const K=o.isPending||f.isPending;return e.jsxs("div",{children:[e.jsx(ve,{title:a?`New ${u}`:`${u}: ${(n==null?void 0:n.id)??""}`,docsHash:"#docs:agents.md"}),e.jsxs("div",{className:"flex gap-10",children:[e.jsxs("nav",{className:"w-44 shrink-0 sticky top-0 self-start pt-2",children:[e.jsx("div",{className:"space-y-0.5",children:Ge.map(j=>{const N=j.icon,q=w===j.id;return e.jsxs("button",{onClick:()=>P(j.id),className:`w-full flex items-center gap-2.5 px-3 py-2 rounded-md text-left transition-colors ${q?"bg-accent/10 text-accent":"text-text-tertiary hover:text-text-primary hover:bg-surface-hover"}`,children:[e.jsx(N,{className:"w-3.5 h-3.5 shrink-0",strokeWidth:1.5}),e.jsx("span",{className:"text-xs font-medium",children:j.label})]},j.id)})}),e.jsxs("div",{className:"mt-8 pt-4 border-t border-surface-border space-y-2",children:[e.jsx("button",{onClick:ne,disabled:!m.name.trim()||K,className:"w-full btn-primary text-xs disabled:opacity-50",children:K?"Saving...":a?`Create ${u}`:"Save"}),e.jsx("button",{onClick:()=>r(a?"/agents":`/agents/${s}`),className:"w-full btn-ghost text-xs",children:"Cancel"})]}),g&&e.jsx("p",{className:"text-xs text-status-error mt-3",children:g})]}),e.jsxs("div",{className:"flex-1 min-w-0 pt-2",children:[w===1&&e.jsx($e,{form:m,set:I}),w===2&&e.jsx(Pe,{form:m,set:I}),w===3&&e.jsx(Ie,{form:m,set:I}),w===4&&e.jsx(Je,{form:m,set:I}),w===5&&e.jsx(Ue,{form:m,set:I}),w===6&&e.jsx(Ye,{form:m})]})]})]})}export{dt as AgentConfigPage};
|
|
16
|
+
//# sourceMappingURL=AgentConfigPage-CbIhM-fa.js.map
|