@hotmeshio/long-tail 0.4.3 → 0.4.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/api/agent-subscriptions.js +14 -0
- package/build/api/settings.js +4 -0
- package/build/lib/db/index.d.ts +1 -7
- package/build/lib/db/schemas/008_capability_reaction.sql +12 -0
- package/build/lib/db/schemas/009_file_topic_category.sql +10 -0
- package/build/lib/events/index.d.ts +9 -0
- package/build/lib/events/index.js +18 -0
- package/build/lib/events/nats.d.ts +15 -1
- package/build/lib/events/nats.js +46 -2
- package/build/lib/events/publish.d.ts +10 -0
- package/build/lib/events/publish.js +28 -0
- package/build/modules/config.d.ts +1 -7
- package/build/services/agent/index.js +14 -0
- package/build/services/agent/subscription-sql.d.ts +3 -3
- package/build/services/agent/subscription-sql.js +7 -5
- package/build/services/agent/subscriptions.d.ts +3 -1
- package/build/services/agent/subscriptions.js +6 -0
- package/build/services/agent/trigger-registry.d.ts +2 -0
- package/build/services/agent/trigger-registry.js +55 -8
- package/build/services/topics/system-topics.js +29 -0
- package/build/services/yaml-workflow/deployer.d.ts +1 -1
- package/build/services/yaml-workflow/deployer.js +2 -2
- package/build/services/yaml-workflow/invoke.d.ts +2 -0
- package/build/services/yaml-workflow/invoke.js +5 -1
- package/build/start/adapters.js +11 -9
- package/build/start/config.js +4 -0
- package/build/start/workers.js +15 -3
- package/build/system/index.js +16 -0
- package/build/system/mcp-servers/file-storage.js +18 -0
- package/build/system/workflows/capability-invoke/activities.d.ts +12 -0
- package/build/system/workflows/capability-invoke/activities.js +14 -0
- package/build/system/workflows/capability-invoke/index.d.ts +14 -0
- package/build/system/workflows/capability-invoke/index.js +74 -0
- package/build/tsconfig.tsbuildinfo +1 -1
- package/build/types/events.d.ts +13 -1
- package/build/types/startup.d.ts +7 -0
- package/dashboard/dist/assets/AdminDashboard-ntLz5Pro.js +2 -0
- package/dashboard/dist/assets/{AdminDashboard-Dr5wTIZT.js.map → AdminDashboard-ntLz5Pro.js.map} +1 -1
- package/dashboard/dist/assets/AgentConfigPage-D27vWOI6.js +16 -0
- package/dashboard/dist/assets/AgentConfigPage-D27vWOI6.js.map +1 -0
- package/dashboard/dist/assets/AgentDetailPage-Cm2KFR4O.js +4 -0
- package/dashboard/dist/assets/AgentDetailPage-Cm2KFR4O.js.map +1 -0
- package/dashboard/dist/assets/AgentsPage-_ptA-0YO.js +2 -0
- package/dashboard/dist/assets/AgentsPage-_ptA-0YO.js.map +1 -0
- package/dashboard/dist/assets/AvailableEscalationsPage-bdPqEzbx.js +2 -0
- package/dashboard/dist/assets/{AvailableEscalationsPage-UzjXcO3W.js.map → AvailableEscalationsPage-bdPqEzbx.js.map} +1 -1
- package/dashboard/dist/assets/BotPicker-CYfFMpkY.js +2 -0
- package/dashboard/dist/assets/{BotPicker-CM-_u73k.js.map → BotPicker-CYfFMpkY.js.map} +1 -1
- package/dashboard/dist/assets/CapabilitiesPage-M7-ZTFNV.js +2 -0
- package/dashboard/dist/assets/CapabilitiesPage-M7-ZTFNV.js.map +1 -0
- package/dashboard/dist/assets/CollapsibleSection-DU5KAtQ-.js +2 -0
- package/dashboard/dist/assets/{CollapsibleSection-CnPKa7df.js.map → CollapsibleSection-DU5KAtQ-.js.map} +1 -1
- package/dashboard/dist/assets/ConfirmDeleteModal-_hW5Vc05.js +2 -0
- package/dashboard/dist/assets/{ConfirmDeleteModal-dOxidrSR.js.map → ConfirmDeleteModal-_hW5Vc05.js.map} +1 -1
- package/dashboard/dist/assets/CopyableId-DiWqv41D.js +2 -0
- package/dashboard/dist/assets/CopyableId-DiWqv41D.js.map +1 -0
- package/dashboard/dist/assets/CredentialsPage-CmbwypSF.js +2 -0
- package/dashboard/dist/assets/{CredentialsPage-CImIzra4.js.map → CredentialsPage-CmbwypSF.js.map} +1 -1
- package/dashboard/dist/assets/CronLabel-nycfAefc.js +2 -0
- package/dashboard/dist/assets/CronLabel-nycfAefc.js.map +1 -0
- package/dashboard/dist/assets/CustomDurationPicker-gNZRBaHg.js +2 -0
- package/dashboard/dist/assets/{CustomDurationPicker-5JzEgS7I.js.map → CustomDurationPicker-gNZRBaHg.js.map} +1 -1
- package/dashboard/dist/assets/DataTable-DGerT2ZM.js +2 -0
- package/dashboard/dist/assets/{DataTable-D9yuBv0w.js.map → DataTable-DGerT2ZM.js.map} +1 -1
- package/dashboard/dist/assets/DropZone-vNcqMd05.js +2 -0
- package/dashboard/dist/assets/{DropZone-BEW3jBzf.js.map → DropZone-vNcqMd05.js.map} +1 -1
- package/dashboard/dist/assets/ElapsedCell-CdvQbtve.js +2 -0
- package/dashboard/dist/assets/{ElapsedCell-B79BF5Mj.js.map → ElapsedCell-CdvQbtve.js.map} +1 -1
- package/dashboard/dist/assets/EmptyState-DMldv8c5.js +2 -0
- package/dashboard/dist/assets/{EmptyState-BcsfPq9T.js.map → EmptyState-DMldv8c5.js.map} +1 -1
- package/dashboard/dist/assets/EscalationsOverview-BNENCL_2.js +2 -0
- package/dashboard/dist/assets/{EscalationsOverview-QvWvbpx3.js.map → EscalationsOverview-BNENCL_2.js.map} +1 -1
- package/dashboard/dist/assets/EventTable-BqDAyXyc.js +2 -0
- package/dashboard/dist/assets/{EventTable-DAclQwfr.js.map → EventTable-BqDAyXyc.js.map} +1 -1
- package/dashboard/dist/assets/EventTopicPill-CnHFBglc.js +2 -0
- package/dashboard/dist/assets/{EventTopicPill-By-6sXDp.js.map → EventTopicPill-CnHFBglc.js.map} +1 -1
- package/dashboard/dist/assets/FilterBar-TYiTtUgv.js +2 -0
- package/dashboard/dist/assets/{FilterBar-Ck4K4rzu.js.map → FilterBar-TYiTtUgv.js.map} +1 -1
- package/dashboard/dist/assets/HomePage-fterfLKH.js +2 -0
- package/dashboard/dist/assets/{HomePage-DVOi7rR1.js.map → HomePage-fterfLKH.js.map} +1 -1
- package/dashboard/dist/assets/ListToolbar-BO5Igi6v.js +2 -0
- package/dashboard/dist/assets/{ListToolbar-Bntl2hex.js.map → ListToolbar-BO5Igi6v.js.map} +1 -1
- package/dashboard/dist/assets/McpOverview-BQokGg0z.js +2 -0
- package/dashboard/dist/assets/{McpOverview-B-xSYPJj.js.map → McpOverview-BQokGg0z.js.map} +1 -1
- package/dashboard/dist/assets/McpQueryDetailPage-0WOp2n_j.js +5 -0
- package/dashboard/dist/assets/{McpQueryDetailPage-Cq71BzjB.js.map → McpQueryDetailPage-0WOp2n_j.js.map} +1 -1
- package/dashboard/dist/assets/McpQueryPage-DUey_h9J.js +2 -0
- package/dashboard/dist/assets/{McpQueryPage-Dfz87aZF.js.map → McpQueryPage-DUey_h9J.js.map} +1 -1
- package/dashboard/dist/assets/McpRunDetailPage-Cv4qyr91.js +2 -0
- package/dashboard/dist/assets/McpRunDetailPage-Cv4qyr91.js.map +1 -0
- package/dashboard/dist/assets/McpRunsPage-B3R6KZ61.js +2 -0
- package/dashboard/dist/assets/{McpRunsPage-MUYvUYqz.js.map → McpRunsPage-B3R6KZ61.js.map} +1 -1
- package/dashboard/dist/assets/Modal-Qe8lW7gQ.js +2 -0
- package/dashboard/dist/assets/{Modal-DEODGeqx.js.map → Modal-Qe8lW7gQ.js.map} +1 -1
- package/dashboard/dist/assets/OperatorDashboard-dldvzjcg.js +2 -0
- package/dashboard/dist/assets/{OperatorDashboard-Rih1SZrn.js.map → OperatorDashboard-dldvzjcg.js.map} +1 -1
- package/dashboard/dist/assets/PageHeader-DF4BeEm4.js +2 -0
- package/dashboard/dist/assets/{PageHeader-Bo0SpcCK.js.map → PageHeader-DF4BeEm4.js.map} +1 -1
- package/dashboard/dist/assets/PageHeaderWithStats-BQZw6BgA.js +2 -0
- package/dashboard/dist/assets/{PageHeaderWithStats-7K5BdhOj.js.map → PageHeaderWithStats-BQZw6BgA.js.map} +1 -1
- package/dashboard/dist/assets/PriorityBadge-DMyB3WLZ.js +2 -0
- package/dashboard/dist/assets/{PriorityBadge-DfQY9St9.js.map → PriorityBadge-DMyB3WLZ.js.map} +1 -1
- package/dashboard/dist/assets/ProcessDetailPage-Beo-QVL-.js +2 -0
- package/dashboard/dist/assets/{ProcessDetailPage-BMkWCjqD.js.map → ProcessDetailPage-Beo-QVL-.js.map} +1 -1
- package/dashboard/dist/assets/ProcessesListPage-C_ars8gp.js +2 -0
- package/dashboard/dist/assets/{ProcessesListPage-vZjUSc7S.js.map → ProcessesListPage-C_ars8gp.js.map} +1 -1
- package/dashboard/dist/assets/RolePill-DrBZ7JJj.js +2 -0
- package/dashboard/dist/assets/{RolePill-BDzPFQUv.js.map → RolePill-DrBZ7JJj.js.map} +1 -1
- package/dashboard/dist/assets/RolesPage-DgSXFFGL.js +2 -0
- package/dashboard/dist/assets/{RolesPage-kjeAsj3_.js.map → RolesPage-DgSXFFGL.js.map} +1 -1
- package/dashboard/dist/assets/RowActions-QcakGbVA.js +2 -0
- package/dashboard/dist/assets/{RowActions-Dg-Fsm5O.js.map → RowActions-QcakGbVA.js.map} +1 -1
- package/dashboard/dist/assets/RunAsSelector-CYMeZwrM.js +2 -0
- package/dashboard/dist/assets/{RunAsSelector-DC4SLtTq.js.map → RunAsSelector-CYMeZwrM.js.map} +1 -1
- package/dashboard/dist/assets/ServerName-D5NKD06M.js +2 -0
- package/dashboard/dist/assets/{ServerName-CEOFF7UG.js.map → ServerName-D5NKD06M.js.map} +1 -1
- package/dashboard/dist/assets/StatCard-PZQmmCHK.js +2 -0
- package/dashboard/dist/assets/{StatCard-DlgF0CJC.js.map → StatCard-PZQmmCHK.js.map} +1 -1
- package/dashboard/dist/assets/StatusBadge-ME2R6a7K.js +2 -0
- package/dashboard/dist/assets/{StatusBadge-XQlNFwmH.js.map → StatusBadge-ME2R6a7K.js.map} +1 -1
- package/dashboard/dist/assets/StepIndicator-CDDVahOz.js +2 -0
- package/dashboard/dist/assets/{StepIndicator-CuUIGxKk.js.map → StepIndicator-CDDVahOz.js.map} +1 -1
- package/dashboard/dist/assets/StickyPagination-Ddy93Q5I.js +2 -0
- package/dashboard/dist/assets/{StickyPagination-F9FZsRy9.js.map → StickyPagination-Ddy93Q5I.js.map} +1 -1
- package/dashboard/dist/assets/SwimlaneTimeline-CYYA8nd9.js +2 -0
- package/dashboard/dist/assets/SwimlaneTimeline-CYYA8nd9.js.map +1 -0
- package/dashboard/dist/assets/TagInput-B45Dm3IW.js +2 -0
- package/dashboard/dist/assets/{TagInput-VBY0xIwb.js.map → TagInput-B45Dm3IW.js.map} +1 -1
- package/dashboard/dist/assets/TaskDetailPage-CoZFkJ6d.js +2 -0
- package/dashboard/dist/assets/TaskDetailPage-CoZFkJ6d.js.map +1 -0
- package/dashboard/dist/assets/TaskQueuePill-BJRUjVDv.js +2 -0
- package/dashboard/dist/assets/{TaskQueuePill-DZykFijh.js.map → TaskQueuePill-BJRUjVDv.js.map} +1 -1
- package/dashboard/dist/assets/TasksListPage-Czu08px3.js +2 -0
- package/dashboard/dist/assets/{TasksListPage-69ZWCaCP.js.map → TasksListPage-Czu08px3.js.map} +1 -1
- package/dashboard/dist/assets/TimeAgo-CJ56IUy6.js +2 -0
- package/dashboard/dist/assets/{TimeAgo-CttiZG0k.js.map → TimeAgo-CJ56IUy6.js.map} +1 -1
- package/dashboard/dist/assets/TimestampCell-QtcYZ9Jx.js +2 -0
- package/dashboard/dist/assets/{TimestampCell-CYFbEhqc.js.map → TimestampCell-QtcYZ9Jx.js.map} +1 -1
- package/dashboard/dist/assets/ToolPill-DpDv3FwI.js +2 -0
- package/dashboard/dist/assets/{ToolPill-RP2Tvlrx.js.map → ToolPill-DpDv3FwI.js.map} +1 -1
- package/dashboard/dist/assets/ToolTestPanel-BzFOwzd_.js +2 -0
- package/dashboard/dist/assets/ToolTestPanel-BzFOwzd_.js.map +1 -0
- package/dashboard/dist/assets/TopicDetailPage-DwShZbh9.js +9 -0
- package/dashboard/dist/assets/{TopicDetailPage-Aq4-6GLl.js.map → TopicDetailPage-DwShZbh9.js.map} +1 -1
- package/dashboard/dist/assets/TopicsPage-DKXlpZl_.js +2 -0
- package/dashboard/dist/assets/{TopicsPage-BYFKjRY_.js.map → TopicsPage-DKXlpZl_.js.map} +1 -1
- package/dashboard/dist/assets/UserName-zlR1so37.js +2 -0
- package/dashboard/dist/assets/{UserName-C4_T5-rI.js.map → UserName-zlR1so37.js.map} +1 -1
- package/dashboard/dist/assets/WorkflowExecutionPage-BMNIxeJB.js +2 -0
- package/dashboard/dist/assets/WorkflowExecutionPage-BMNIxeJB.js.map +1 -0
- package/dashboard/dist/assets/WorkflowPill-B5B3yGlh.js +2 -0
- package/dashboard/dist/assets/WorkflowPill-B5B3yGlh.js.map +1 -0
- package/dashboard/dist/assets/WorkflowsDashboard-BlAPZbQZ.js +2 -0
- package/dashboard/dist/assets/{WorkflowsDashboard-_LMWc-OC.js.map → WorkflowsDashboard-BlAPZbQZ.js.map} +1 -1
- package/dashboard/dist/assets/WorkflowsOverview-NnPi6rwS.js +2 -0
- package/dashboard/dist/assets/{WorkflowsOverview-DFrfw554.js.map → WorkflowsOverview-NnPi6rwS.js.map} +1 -1
- package/dashboard/dist/assets/YamlWorkflowsPage-C4mZum6x.js +2 -0
- package/dashboard/dist/assets/{YamlWorkflowsPage-CZzGwfol.js.map → YamlWorkflowsPage-C4mZum6x.js.map} +1 -1
- package/dashboard/dist/assets/{agents-CsKILVSU.js → agents-B5wvILeV.js} +2 -2
- package/dashboard/dist/assets/{agents-CsKILVSU.js.map → agents-B5wvILeV.js.map} +1 -1
- package/dashboard/dist/assets/{bots-BzEs6Q9L.js → bots-BPlouRDm.js} +2 -2
- package/dashboard/dist/assets/{bots-BzEs6Q9L.js.map → bots-BPlouRDm.js.map} +1 -1
- package/dashboard/dist/assets/capabilities-DkvRG09b.js +2 -0
- package/dashboard/dist/assets/capabilities-DkvRG09b.js.map +1 -0
- package/dashboard/dist/assets/{controlplane-COYEIIAz.js → controlplane-0m_rA-UW.js} +2 -2
- package/dashboard/dist/assets/{controlplane-COYEIIAz.js.map → controlplane-0m_rA-UW.js.map} +1 -1
- package/dashboard/dist/assets/escalation-CfIAIUg2.js +2 -0
- package/dashboard/dist/assets/{escalation-BZjS2202.js.map → escalation-CfIAIUg2.js.map} +1 -1
- package/dashboard/dist/assets/escalation-columns-CLIdxlbe.js +2 -0
- package/dashboard/dist/assets/{escalation-columns-DtRVmPSB.js.map → escalation-columns-CLIdxlbe.js.map} +1 -1
- package/dashboard/dist/assets/helpers-prGqC38M.js +2 -0
- package/dashboard/dist/assets/{helpers-BngVEys5.js.map → helpers-prGqC38M.js.map} +1 -1
- package/dashboard/dist/assets/index-4T7Z_gQ4.js +281 -0
- package/dashboard/dist/assets/index-4T7Z_gQ4.js.map +1 -0
- package/dashboard/dist/assets/index-BPxglOYm.css +1 -0
- package/dashboard/dist/assets/index-BR3SwTNI.js +2 -0
- package/dashboard/dist/assets/{index-COgyD_H2.js.map → index-BR3SwTNI.js.map} +1 -1
- package/dashboard/dist/assets/index-BWKIigEk.js +2 -0
- package/dashboard/dist/assets/{index-Byp8BDPs.js.map → index-BWKIigEk.js.map} +1 -1
- package/dashboard/dist/assets/index-BgVuyWhi.js +15 -0
- package/dashboard/dist/assets/{index-DykjJxzr.js.map → index-BgVuyWhi.js.map} +1 -1
- package/dashboard/dist/assets/index-C0sDEKdo.js +2 -0
- package/dashboard/dist/assets/{index-DxMNiFPS.js.map → index-C0sDEKdo.js.map} +1 -1
- package/dashboard/dist/assets/index-C2MJzu6J.js +2 -0
- package/dashboard/dist/assets/{index-ByxH4qQ-.js.map → index-C2MJzu6J.js.map} +1 -1
- package/dashboard/dist/assets/index-CFoddJDr.js +6 -0
- package/dashboard/dist/assets/{index-BCsShN2l.js.map → index-CFoddJDr.js.map} +1 -1
- package/dashboard/dist/assets/index-CrMxD5Ib.js +6 -0
- package/dashboard/dist/assets/index-CrMxD5Ib.js.map +1 -0
- package/dashboard/dist/assets/index-CuY5hPYB.js +2 -0
- package/dashboard/dist/assets/{index-Bq5MSkCL.js.map → index-CuY5hPYB.js.map} +1 -1
- package/dashboard/dist/assets/index-CwkJBn87.js +2 -0
- package/dashboard/dist/assets/{index-R61-yG56.js.map → index-CwkJBn87.js.map} +1 -1
- package/dashboard/dist/assets/index-DeL84Cag.js +2 -0
- package/dashboard/dist/assets/{index-xgl431mG.js.map → index-DeL84Cag.js.map} +1 -1
- package/dashboard/dist/assets/index-DqeLbz6j.js +2 -0
- package/dashboard/dist/assets/{index-ABsZZf_U.js.map → index-DqeLbz6j.js.map} +1 -1
- package/dashboard/dist/assets/index-P9huxx3-.js +2 -0
- package/dashboard/dist/assets/{index-BwivT39P.js.map → index-P9huxx3-.js.map} +1 -1
- package/dashboard/dist/assets/{knowledge-DhCbDgy4.js → knowledge-CUZxyRCO.js} +2 -2
- package/dashboard/dist/assets/{knowledge-DhCbDgy4.js.map → knowledge-CUZxyRCO.js.map} +1 -1
- package/dashboard/dist/assets/{mcp-xh7T0I-f.js → mcp-B5VQPoF3.js} +2 -2
- package/dashboard/dist/assets/{mcp-xh7T0I-f.js.map → mcp-B5VQPoF3.js.map} +1 -1
- package/dashboard/dist/assets/{mcp-query-il3CfU3U.js → mcp-query-Ba5Zj3yg.js} +2 -2
- package/dashboard/dist/assets/{mcp-query-il3CfU3U.js.map → mcp-query-Ba5Zj3yg.js.map} +1 -1
- package/dashboard/dist/assets/{mcp-runs-4fyRpegc.js → mcp-runs-CAiEr5Fc.js} +2 -2
- package/dashboard/dist/assets/{mcp-runs-4fyRpegc.js.map → mcp-runs-CAiEr5Fc.js.map} +1 -1
- package/dashboard/dist/assets/namespaces-sVr5scma.js +2 -0
- package/dashboard/dist/assets/{namespaces-BBTvHnRF.js.map → namespaces-sVr5scma.js.map} +1 -1
- package/dashboard/dist/assets/{roles-D7bx5FAM.js → roles-E_bA4e0f.js} +2 -2
- package/dashboard/dist/assets/{roles-D7bx5FAM.js.map → roles-E_bA4e0f.js.map} +1 -1
- package/dashboard/dist/assets/{tasks-BgxRbhVM.js → tasks-CL6Gv8jB.js} +2 -2
- package/dashboard/dist/assets/{tasks-BgxRbhVM.js.map → tasks-CL6Gv8jB.js.map} +1 -1
- package/dashboard/dist/assets/{topics-CTtCboHe.js → topics-DbtPHERP.js} +2 -2
- package/dashboard/dist/assets/{topics-CTtCboHe.js.map → topics-DbtPHERP.js.map} +1 -1
- package/dashboard/dist/assets/{useCollapsedSections-BU5HULGs.js → useCollapsedSections-CGNA5oKV.js} +2 -2
- package/dashboard/dist/assets/{useCollapsedSections-BU5HULGs.js.map → useCollapsedSections-CGNA5oKV.js.map} +1 -1
- package/dashboard/dist/assets/useEventHooks-C6c618cj.js +2 -0
- package/dashboard/dist/assets/useEventHooks-C6c618cj.js.map +1 -0
- package/dashboard/dist/assets/{useExpandedRows-CkcEntB-.js → useExpandedRows-Cg9iq6Vy.js} +2 -2
- package/dashboard/dist/assets/{useExpandedRows-CkcEntB-.js.map → useExpandedRows-Cg9iq6Vy.js.map} +1 -1
- package/dashboard/dist/assets/{useFilterParams-DZCAaBC7.js → useFilterParams-CGRYFw_A.js} +2 -2
- package/dashboard/dist/assets/{useFilterParams-DZCAaBC7.js.map → useFilterParams-CGRYFw_A.js.map} +1 -1
- package/dashboard/dist/assets/{useYamlActivityEvents-CSMX9He5.js → useYamlActivityEvents-eK7kIUdh.js} +2 -2
- package/dashboard/dist/assets/{useYamlActivityEvents-CSMX9He5.js.map → useYamlActivityEvents-eK7kIUdh.js.map} +1 -1
- package/dashboard/dist/assets/{users-CyF-5WLI.js → users-CCHSIAxt.js} +2 -2
- package/dashboard/dist/assets/{users-CyF-5WLI.js.map → users-CCHSIAxt.js.map} +1 -1
- package/dashboard/dist/assets/{vendor-icons-BNtvBbnj.js → vendor-icons-D8-ZINAH.js} +3 -3
- package/dashboard/dist/assets/{vendor-icons-BNtvBbnj.js.map → vendor-icons-D8-ZINAH.js.map} +1 -1
- package/dashboard/dist/assets/vendor-query-DLp59M9_.js +35 -0
- package/dashboard/dist/assets/vendor-query-DLp59M9_.js.map +1 -0
- package/dashboard/dist/assets/vendor-react-Co3Y8ikm.js +26 -0
- package/dashboard/dist/assets/vendor-react-Co3Y8ikm.js.map +1 -0
- package/dashboard/dist/assets/{workflows-Bf4_w24H.js → workflows-BNbocg_9.js} +2 -2
- package/dashboard/dist/assets/{workflows-Bf4_w24H.js.map → workflows-BNbocg_9.js.map} +1 -1
- package/dashboard/dist/assets/{yaml-workflows-Cp1N0NMK.js → yaml-workflows-Cu1FUwrc.js} +2 -2
- package/dashboard/dist/assets/{yaml-workflows-Cp1N0NMK.js.map → yaml-workflows-Cu1FUwrc.js.map} +1 -1
- package/dashboard/dist/index.html +5 -5
- package/docs/agents.md +9 -9
- package/docs/api/http/agents.md +12 -10
- package/docs/api/http/settings.md +4 -0
- package/docs/api/sdk/agents.md +4 -2
- package/docs/api/sdk/settings.md +2 -1
- package/docs/dashboard.md +1 -1
- package/package.json +2 -2
- package/dashboard/dist/assets/AdminDashboard-Dr5wTIZT.js +0 -2
- package/dashboard/dist/assets/AgentConfigPage-D52KyJY-.js +0 -13
- package/dashboard/dist/assets/AgentConfigPage-D52KyJY-.js.map +0 -1
- package/dashboard/dist/assets/AgentDetailPage-Cbo_qrYF.js +0 -4
- package/dashboard/dist/assets/AgentDetailPage-Cbo_qrYF.js.map +0 -1
- package/dashboard/dist/assets/AgentsPage-CvuF8--H.js +0 -2
- package/dashboard/dist/assets/AgentsPage-CvuF8--H.js.map +0 -1
- package/dashboard/dist/assets/AvailableEscalationsPage-UzjXcO3W.js +0 -2
- package/dashboard/dist/assets/BotPicker-CM-_u73k.js +0 -2
- package/dashboard/dist/assets/CapabilitiesPage-D1QEHMKw.js +0 -2
- package/dashboard/dist/assets/CapabilitiesPage-D1QEHMKw.js.map +0 -1
- package/dashboard/dist/assets/CollapsibleSection-CnPKa7df.js +0 -2
- package/dashboard/dist/assets/ConfirmDeleteModal-dOxidrSR.js +0 -2
- package/dashboard/dist/assets/CopyableId-DmLF-RqZ.js +0 -2
- package/dashboard/dist/assets/CopyableId-DmLF-RqZ.js.map +0 -1
- package/dashboard/dist/assets/CredentialsPage-CImIzra4.js +0 -2
- package/dashboard/dist/assets/CronLabel-5HPAmciI.js +0 -2
- package/dashboard/dist/assets/CronLabel-5HPAmciI.js.map +0 -1
- package/dashboard/dist/assets/CustomDurationPicker-5JzEgS7I.js +0 -2
- package/dashboard/dist/assets/DataTable-D9yuBv0w.js +0 -2
- package/dashboard/dist/assets/DropZone-BEW3jBzf.js +0 -2
- package/dashboard/dist/assets/ElapsedCell-B79BF5Mj.js +0 -2
- package/dashboard/dist/assets/EmptyState-BcsfPq9T.js +0 -2
- package/dashboard/dist/assets/EscalationsOverview-QvWvbpx3.js +0 -2
- package/dashboard/dist/assets/EventTable-DAclQwfr.js +0 -2
- package/dashboard/dist/assets/EventTopicPill-By-6sXDp.js +0 -2
- package/dashboard/dist/assets/FilterBar-Ck4K4rzu.js +0 -2
- package/dashboard/dist/assets/HomePage-DVOi7rR1.js +0 -2
- package/dashboard/dist/assets/ListToolbar-Bntl2hex.js +0 -2
- package/dashboard/dist/assets/McpOverview-B-xSYPJj.js +0 -2
- package/dashboard/dist/assets/McpQueryDetailPage-Cq71BzjB.js +0 -5
- package/dashboard/dist/assets/McpQueryPage-Dfz87aZF.js +0 -2
- package/dashboard/dist/assets/McpRunDetailPage-CXXRgMmJ.js +0 -2
- package/dashboard/dist/assets/McpRunDetailPage-CXXRgMmJ.js.map +0 -1
- package/dashboard/dist/assets/McpRunsPage-MUYvUYqz.js +0 -2
- package/dashboard/dist/assets/Modal-DEODGeqx.js +0 -2
- package/dashboard/dist/assets/OperatorDashboard-Rih1SZrn.js +0 -2
- package/dashboard/dist/assets/PageHeader-Bo0SpcCK.js +0 -2
- package/dashboard/dist/assets/PageHeaderWithStats-7K5BdhOj.js +0 -2
- package/dashboard/dist/assets/PriorityBadge-DfQY9St9.js +0 -2
- package/dashboard/dist/assets/ProcessDetailPage-BMkWCjqD.js +0 -2
- package/dashboard/dist/assets/ProcessesListPage-vZjUSc7S.js +0 -2
- package/dashboard/dist/assets/RolePill-BDzPFQUv.js +0 -2
- package/dashboard/dist/assets/RolesPage-kjeAsj3_.js +0 -2
- package/dashboard/dist/assets/RowActions-Dg-Fsm5O.js +0 -2
- package/dashboard/dist/assets/RunAsSelector-DC4SLtTq.js +0 -2
- package/dashboard/dist/assets/ServerName-CEOFF7UG.js +0 -2
- package/dashboard/dist/assets/StatCard-DlgF0CJC.js +0 -2
- package/dashboard/dist/assets/StatusBadge-XQlNFwmH.js +0 -2
- package/dashboard/dist/assets/StepIndicator-CuUIGxKk.js +0 -2
- package/dashboard/dist/assets/StickyPagination-F9FZsRy9.js +0 -2
- package/dashboard/dist/assets/SwimlaneTimeline-MUUXgT3o.js +0 -2
- package/dashboard/dist/assets/SwimlaneTimeline-MUUXgT3o.js.map +0 -1
- package/dashboard/dist/assets/TagInput-VBY0xIwb.js +0 -2
- package/dashboard/dist/assets/TaskDetailPage-C0AlG_2t.js +0 -2
- package/dashboard/dist/assets/TaskDetailPage-C0AlG_2t.js.map +0 -1
- package/dashboard/dist/assets/TaskQueuePill-DZykFijh.js +0 -2
- package/dashboard/dist/assets/TasksListPage-69ZWCaCP.js +0 -2
- package/dashboard/dist/assets/TimeAgo-CttiZG0k.js +0 -2
- package/dashboard/dist/assets/TimestampCell-CYFbEhqc.js +0 -2
- package/dashboard/dist/assets/ToolPill-RP2Tvlrx.js +0 -2
- package/dashboard/dist/assets/ToolTestPanel-CY_PLZSe.js +0 -2
- package/dashboard/dist/assets/ToolTestPanel-CY_PLZSe.js.map +0 -1
- package/dashboard/dist/assets/TopicDetailPage-Aq4-6GLl.js +0 -9
- package/dashboard/dist/assets/TopicsPage-BYFKjRY_.js +0 -2
- package/dashboard/dist/assets/UserName-C4_T5-rI.js +0 -2
- package/dashboard/dist/assets/WorkflowExecutionPage-DUSTBasv.js +0 -2
- package/dashboard/dist/assets/WorkflowExecutionPage-DUSTBasv.js.map +0 -1
- package/dashboard/dist/assets/WorkflowPill-pPuGH8v9.js +0 -2
- package/dashboard/dist/assets/WorkflowPill-pPuGH8v9.js.map +0 -1
- package/dashboard/dist/assets/WorkflowsDashboard-_LMWc-OC.js +0 -2
- package/dashboard/dist/assets/WorkflowsOverview-DFrfw554.js +0 -2
- package/dashboard/dist/assets/YamlWorkflowsPage-CZzGwfol.js +0 -2
- package/dashboard/dist/assets/escalation-BZjS2202.js +0 -2
- package/dashboard/dist/assets/escalation-columns-DtRVmPSB.js +0 -2
- package/dashboard/dist/assets/helpers-BngVEys5.js +0 -2
- package/dashboard/dist/assets/index-ABsZZf_U.js +0 -2
- package/dashboard/dist/assets/index-BCsShN2l.js +0 -6
- package/dashboard/dist/assets/index-Bq5MSkCL.js +0 -2
- package/dashboard/dist/assets/index-BwivT39P.js +0 -2
- package/dashboard/dist/assets/index-Byp8BDPs.js +0 -2
- package/dashboard/dist/assets/index-ByxH4qQ-.js +0 -2
- package/dashboard/dist/assets/index-COgyD_H2.js +0 -2
- package/dashboard/dist/assets/index-DXEYynKO.css +0 -1
- package/dashboard/dist/assets/index-DcpCR9c_.js +0 -63
- package/dashboard/dist/assets/index-DcpCR9c_.js.map +0 -1
- package/dashboard/dist/assets/index-DuPY59Yu.js +0 -5
- package/dashboard/dist/assets/index-DuPY59Yu.js.map +0 -1
- package/dashboard/dist/assets/index-DxMNiFPS.js +0 -2
- package/dashboard/dist/assets/index-DykjJxzr.js +0 -15
- package/dashboard/dist/assets/index-R61-yG56.js +0 -2
- package/dashboard/dist/assets/index-xgl431mG.js +0 -2
- package/dashboard/dist/assets/namespaces-BBTvHnRF.js +0 -2
- package/dashboard/dist/assets/settings-nt6qyR1S.js +0 -2
- package/dashboard/dist/assets/settings-nt6qyR1S.js.map +0 -1
- package/dashboard/dist/assets/useEventHooks-CkJOmbF-.js +0 -2
- package/dashboard/dist/assets/useEventHooks-CkJOmbF-.js.map +0 -1
- package/dashboard/dist/assets/vendor-query-B2UbickB.js +0 -18
- package/dashboard/dist/assets/vendor-query-B2UbickB.js.map +0 -1
- package/dashboard/dist/assets/vendor-react-CX88sFS5.js +0 -22
- package/dashboard/dist/assets/vendor-react-CX88sFS5.js.map +0 -1
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import{j as e,d as ne,u as le}from"./index-4T7Z_gQ4.js";import{a as N}from"./vendor-query-DLp59M9_.js";import{a as oe,d as ce,b as de}from"./agents-B5wvILeV.js";import{C as pe,u as me,a as ue,b as be,c as he}from"./CronLabel-nycfAefc.js";import{P as Ne}from"./PageHeader-DF4BeEm4.js";import{B as R,d as z,b as xe,R as Y,Y as $,n as X,a4 as B,a as Z,aF as ee,K as ge}from"./vendor-icons-D8-ZINAH.js";import{e as fe}from"./knowledge-CUZxyRCO.js";import{R as ae}from"./RunAsSelector-CYMeZwrM.js";import{u as ve}from"./workflows-BNbocg_9.js";import{u as Se}from"./yaml-workflows-Cu1FUwrc.js";import{u as se}from"./capabilities-DkvRG09b.js";import{u as we}from"./topics-DbtPHERP.js";import{E as ye}from"./EventTopicPill-CnHFBglc.js";import{W as H}from"./WorkflowPill-B5B3yGlh.js";import{e as Ee,c as je,f as De}from"./vendor-react-Co3Y8ikm.js";import"./BotPicker-CYfFMpkY.js";import"./bots-BPlouRDm.js";const Q={name:"",description:"",goals:"",rules:"",user_id:"",knowledge_domain:"",subscriptions:[],schedules:[]},Ve={topic:"",filter:"",reaction_type:"durable",workflow_type:"",pipeline_id:"",mcp_prompt:"",server_id:"",tool_name:"",input_mapping:"{}",execute_as:"",enabled:!0},_e={cron:"0 * * * *",reaction_type:"durable",workflow_type:"",pipeline_id:"",server_id:"",tool_name:"",envelope:"{}",execute_as:""};function ke(s,t){var o,p,u;const l=(p=(o=s.behaviors)==null?void 0:o.schedules)!=null&&p.length?s.behaviors.schedules.map(i=>({cron:i.cron||"",reaction_type:i.reaction_type||"durable",workflow_type:i.workflow_type||"",pipeline_id:i.pipeline_id||"",server_id:i.server_id||"",tool_name:i.tool_name||"",envelope:i.envelope?JSON.stringify(i.envelope,null,2):"{}",execute_as:i.execute_as||""})):(u=s.behaviors)!=null&&u.cron?[{cron:s.behaviors.cron,reaction_type:"durable",workflow_type:s.workflow_type??"",pipeline_id:"",server_id:"",tool_name:"",envelope:"{}",execute_as:""}]:[];return{name:s.id,description:s.description??"",goals:s.goals??"",rules:s.rules??"",user_id:s.user_id??"",knowledge_domain:s.knowledge_domain??"",subscriptions:t.map(i=>({id:i.id,topic:i.topic,filter:i.filter?JSON.stringify(i.filter,null,2):"",reaction_type:i.reaction_type,workflow_type:i.workflow_type??"",pipeline_id:i.pipeline_id??"",mcp_prompt:i.mcp_prompt??"",server_id:i.server_id??"",tool_name:i.tool_name??"",input_mapping:JSON.stringify(i.input_mapping??{},null,2),execute_as:i.execute_as??"",enabled:i.enabled})),schedules:l}}function Ce(s){var l;const t={};return s.schedules.length>0&&(t.schedules=s.schedules.map(o=>({cron:o.cron,reaction_type:o.reaction_type||"durable",workflow_type:o.reaction_type==="pipeline"?void 0:o.workflow_type,pipeline_id:o.reaction_type==="pipeline"?o.pipeline_id:void 0,envelope:J(o.envelope)??{},execute_as:o.execute_as||void 0})),t.cron=s.schedules[0].cron),{id:s.name,description:s.description||void 0,goals:s.goals||void 0,rules:s.rules||void 0,user_id:s.user_id||void 0,knowledge_domain:s.knowledge_domain||void 0,behaviors:t,workflow_type:((l=s.schedules[0])==null?void 0:l.workflow_type)||void 0,pipeline_id:void 0}}function Re(s){return s.subscriptions.map(t=>({id:t.id,topic:t.topic,filter:t.filter?J(t.filter):void 0,reaction_type:t.reaction_type,workflow_type:t.workflow_type||void 0,pipeline_id:t.pipeline_id||void 0,mcp_prompt:t.mcp_prompt||void 0,server_id:t.server_id||void 0,tool_name:t.tool_name||void 0,input_mapping:J(t.input_mapping)??{},execute_as:t.execute_as||void 0,enabled:t.enabled}))}function J(s){if(s.trim())try{return JSON.parse(s)}catch{return}}const V="section-header mt-[3em] first:mt-0",A="label",E="hint",k="input",O="input-json w-full";function Pe({form:s,set:t}){return e.jsxDEV("div",{className:"space-y-8",children:[e.jsxDEV("div",{className:"border-l-2 border-accent/30 pl-3 py-1 flex items-start justify-between",children:[e.jsxDEV("p",{className:"text-[12px] text-text-secondary italic leading-relaxed",children:"Give your automation a name and describe what it does. The name appears everywhere — in events, logs, and the dashboard."},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/IdentityStep.tsx",lineNumber:14,columnNumber:9},this),e.jsxDEV("button",{onClick:()=>{window.location.hash="#docs:agents.md:identity"},className:"text-text-quaternary hover:text-accent transition-colors shrink-0 ml-3",title:"Docs: Identity",children:e.jsxDEV(R,{className:"w-3 h-3",strokeWidth:1.5},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/IdentityStep.tsx",lineNumber:17,columnNumber:194},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/IdentityStep.tsx",lineNumber:17,columnNumber:9},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/agents/detail/IdentityStep.tsx",lineNumber:13,columnNumber:7},this),e.jsxDEV("div",{children:[e.jsxDEV("label",{className:A,children:"Name *"},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/IdentityStep.tsx",lineNumber:21,columnNumber:9},this),e.jsxDEV("input",{type:"text",value:s.name,onChange:l=>t("name",l.target.value),placeholder:"health-monitor",className:k},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/IdentityStep.tsx",lineNumber:22,columnNumber:9},this),e.jsxDEV("p",{className:E,children:"Lowercase, kebab-case. This appears everywhere."},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/IdentityStep.tsx",lineNumber:23,columnNumber:9},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/agents/detail/IdentityStep.tsx",lineNumber:20,columnNumber:7},this),e.jsxDEV("div",{children:[e.jsxDEV("label",{className:A,children:"Description"},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/IdentityStep.tsx",lineNumber:27,columnNumber:9},this),e.jsxDEV("input",{type:"text",value:s.description,onChange:l=>t("description",l.target.value),placeholder:"Watches for workflow failures and captures diagnostics",className:k},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/IdentityStep.tsx",lineNumber:28,columnNumber:9},this),e.jsxDEV("p",{className:E,children:"One sentence that explains what this automation does."},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/IdentityStep.tsx",lineNumber:29,columnNumber:9},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/agents/detail/IdentityStep.tsx",lineNumber:26,columnNumber:7},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/agents/detail/IdentityStep.tsx",lineNumber:12,columnNumber:5},this)}function Ae({form:s,set:t}){return e.jsxDEV("div",{className:"space-y-8",children:[e.jsxDEV("div",{className:"border-l-2 border-accent/30 pl-3 py-1 flex items-start justify-between",children:[e.jsxDEV("p",{className:"text-[12px] text-text-secondary italic leading-relaxed",children:"Goals define what drives the automation. Rules define what constrains it."},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/MotivationStep.tsx",lineNumber:14,columnNumber:9},this),e.jsxDEV("button",{onClick:()=>{window.location.hash="#docs:agents.md:motivation"},className:"text-text-quaternary hover:text-accent transition-colors shrink-0 ml-3",title:"Docs: Motivation",children:e.jsxDEV(R,{className:"w-3 h-3",strokeWidth:1.5},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/MotivationStep.tsx",lineNumber:17,columnNumber:198},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/MotivationStep.tsx",lineNumber:17,columnNumber:9},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/agents/detail/MotivationStep.tsx",lineNumber:13,columnNumber:7},this),e.jsxDEV("div",{className:"grid grid-cols-2 gap-8",children:[e.jsxDEV("div",{children:[e.jsxDEV("label",{className:A,children:"Goals"},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/MotivationStep.tsx",lineNumber:22,columnNumber:11},this),e.jsxDEV("textarea",{value:s.goals,onChange:l=>t("goals",l.target.value),placeholder:"Detect failures early, capture diagnostics, alert before cascading",rows:4,className:`${k} resize-none`},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/MotivationStep.tsx",lineNumber:23,columnNumber:11},this),e.jsxDEV("p",{className:E,children:"Primary motivation. What the automation is trying to achieve."},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/MotivationStep.tsx",lineNumber:24,columnNumber:11},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/agents/detail/MotivationStep.tsx",lineNumber:21,columnNumber:9},this),e.jsxDEV("div",{children:[e.jsxDEV("label",{className:A,children:"Rules"},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/MotivationStep.tsx",lineNumber:27,columnNumber:11},this),e.jsxDEV("textarea",{value:s.rules,onChange:l=>t("rules",l.target.value),placeholder:"Never auto-restart failed workflows. Always escalate to humans.",rows:4,className:`${k} resize-none`},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/MotivationStep.tsx",lineNumber:28,columnNumber:11},this),e.jsxDEV("p",{className:E,children:"Guardrails. What it must never do, even when goals suggest it should."},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/MotivationStep.tsx",lineNumber:29,columnNumber:11},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/agents/detail/MotivationStep.tsx",lineNumber:26,columnNumber:9},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/agents/detail/MotivationStep.tsx",lineNumber:20,columnNumber:7},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/agents/detail/MotivationStep.tsx",lineNumber:12,columnNumber:5},this)}function Ie({form:s,set:t}){const{data:l}=fe(),o=(l==null?void 0:l.domains)??[];return e.jsxDEV("div",{className:"space-y-6",children:[e.jsxDEV("div",{className:"border-l-2 border-accent/30 pl-3 py-1 flex items-start justify-between",children:[e.jsxDEV("p",{className:"text-[12px] text-text-secondary italic leading-relaxed",children:"Assign a knowledge domain — the automation's memory. It stores context here over time."},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/KnowledgeStep.tsx",lineNumber:19,columnNumber:9},this),e.jsxDEV("button",{onClick:()=>{window.location.hash="#docs:agents.md:knowledge"},className:"text-text-quaternary hover:text-accent transition-colors shrink-0 ml-3",title:"Docs: Knowledge",children:e.jsxDEV(R,{className:"w-3 h-3",strokeWidth:1.5},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/KnowledgeStep.tsx",lineNumber:22,columnNumber:196},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/KnowledgeStep.tsx",lineNumber:22,columnNumber:9},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/agents/detail/KnowledgeStep.tsx",lineNumber:18,columnNumber:7},this),e.jsxDEV("div",{children:[e.jsxDEV("label",{className:A,children:"Knowledge Domain"},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/KnowledgeStep.tsx",lineNumber:26,columnNumber:9},this),e.jsxDEV("input",{type:"text",value:s.knowledge_domain,onChange:p=>t("knowledge_domain",p.target.value),placeholder:"e.g., system-health, content-review, vendor-data",className:k,list:"domain-suggestions"},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/KnowledgeStep.tsx",lineNumber:27,columnNumber:9},this),e.jsxDEV("datalist",{id:"domain-suggestions",children:o.map(p=>e.jsxDEV("option",{value:p.domain},p.domain,!1,{fileName:"/app/dashboard/src/pages/agents/detail/KnowledgeStep.tsx",lineNumber:36,columnNumber:31},this))},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/KnowledgeStep.tsx",lineNumber:35,columnNumber:9},this),e.jsxDEV("p",{className:E,children:"Choose an existing domain to share memory, or type a new name to create one."},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/KnowledgeStep.tsx",lineNumber:38,columnNumber:9},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/agents/detail/KnowledgeStep.tsx",lineNumber:25,columnNumber:7},this),o.length>0&&e.jsxDEV("div",{children:[e.jsxDEV("label",{className:A,children:"Existing Domains"},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/KnowledgeStep.tsx",lineNumber:43,columnNumber:11},this),e.jsxDEV("div",{className:"space-y-0.5 mt-2",children:o.map(p=>e.jsxDEV("button",{type:"button",onClick:()=>t("knowledge_domain",p.domain),className:`w-full flex items-center gap-3 px-3 py-2 rounded-md text-left transition-colors ${s.knowledge_domain===p.domain?"border-l-2 border-l-accent bg-accent/5":"hover:bg-surface-hover border-l-2 border-l-transparent"}`,children:[e.jsxDEV(z,{className:"w-3.5 h-3.5 text-text-quaternary shrink-0",strokeWidth:1.5},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/KnowledgeStep.tsx",lineNumber:54,columnNumber:17},this),e.jsxDEV("span",{className:"text-sm text-text-primary flex-1",children:p.domain},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/KnowledgeStep.tsx",lineNumber:55,columnNumber:17},this),e.jsxDEV("span",{className:"text-[10px] text-text-quaternary",children:[p.count," entries"]},void 0,!0,{fileName:"/app/dashboard/src/pages/agents/detail/KnowledgeStep.tsx",lineNumber:56,columnNumber:17},this),e.jsxDEV("span",{className:"text-[9px] text-text-quaternary",children:e.jsxDEV(ne,{date:p.latest},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/KnowledgeStep.tsx",lineNumber:57,columnNumber:67},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/KnowledgeStep.tsx",lineNumber:57,columnNumber:17},this)]},p.domain,!0,{fileName:"/app/dashboard/src/pages/agents/detail/KnowledgeStep.tsx",lineNumber:46,columnNumber:15},this))},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/KnowledgeStep.tsx",lineNumber:44,columnNumber:11},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/agents/detail/KnowledgeStep.tsx",lineNumber:42,columnNumber:9},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/agents/detail/KnowledgeStep.tsx",lineNumber:17,columnNumber:5},this)}function Me({serverId:s,toolName:t,onChange:l}){const{data:o}=se(),p=N.useMemo(()=>{var a;return((a=o==null?void 0:o.categories)==null?void 0:a.flatMap(r=>r.tools))??[]},[o]),[u,i]=N.useState(!1),[x,d]=N.useState(""),c=N.useRef(null),h=N.useRef(null);N.useEffect(()=>{if(!u)return;function a(r){h.current&&!h.current.contains(r.target)&&i(!1)}return document.addEventListener("mousedown",a),()=>document.removeEventListener("mousedown",a)},[u]);const n=t?`${t}`:"",m=u?x:n,w=N.useMemo(()=>{const a=(u?x:"").toLowerCase();return a?p.filter(r=>r.name.toLowerCase().includes(a)||r.serverName.toLowerCase().includes(a)||(r.description??"").toLowerCase().includes(a)):p},[p,x,u]),b=t?p.find(a=>a.serverId===s&&a.name===t):void 0;return e.jsxDEV("div",{ref:h,className:"relative",children:[e.jsxDEV("input",{ref:c,type:"text",value:m,onFocus:()=>{i(!0),d(n)},onChange:a=>{const r=a.target.value;d(r),r||l("",""),u||i(!0)},placeholder:"Search capabilities...",className:"input font-mono text-sm w-full"},void 0,!1,{fileName:"/app/dashboard/src/components/common/form/CapabilityCombobox.tsx",lineNumber:59,columnNumber:7},this),!u&&(b==null?void 0:b.description)&&e.jsxDEV("p",{className:"text-[10px] text-text-tertiary mt-1 italic",children:b.description},void 0,!1,{fileName:"/app/dashboard/src/components/common/form/CapabilityCombobox.tsx",lineNumber:76,columnNumber:9},this),u&&w.length>0&&e.jsxDEV("div",{className:"absolute z-50 left-0 right-0 mt-1 max-h-64 overflow-y-auto rounded-md border border-surface-border bg-surface shadow-lg",children:w.map(a=>e.jsxDEV("button",{type:"button",onClick:()=>{l(a.serverId,a.name),d(a.name),i(!1)},className:`w-full text-left px-3 py-2 hover:bg-surface-hover transition-colors flex items-center gap-3 ${s===a.serverId&&t===a.name?"bg-accent/5":""}`,children:[e.jsxDEV("span",{className:"text-[11px] font-mono text-text-primary shrink-0",children:a.name},void 0,!1,{fileName:"/app/dashboard/src/components/common/form/CapabilityCombobox.tsx",lineNumber:94,columnNumber:15},this),e.jsxDEV("span",{className:"inline-flex items-center gap-1 px-1.5 py-0.5 rounded text-[9px] font-medium shrink-0 bg-accent/10 text-accent",children:[e.jsxDEV(xe,{className:"w-2 h-2",strokeWidth:1.5},void 0,!1,{fileName:"/app/dashboard/src/components/common/form/CapabilityCombobox.tsx",lineNumber:96,columnNumber:17},this),a.serverName]},void 0,!0,{fileName:"/app/dashboard/src/components/common/form/CapabilityCombobox.tsx",lineNumber:95,columnNumber:15},this),a.description&&e.jsxDEV("span",{className:"text-[10px] text-text-quaternary truncate",children:a.description},void 0,!1,{fileName:"/app/dashboard/src/components/common/form/CapabilityCombobox.tsx",lineNumber:100,columnNumber:17},this)]},`${a.serverId}:${a.name}`,!0,{fileName:"/app/dashboard/src/components/common/form/CapabilityCombobox.tsx",lineNumber:82,columnNumber:13},this))},void 0,!1,{fileName:"/app/dashboard/src/components/common/form/CapabilityCombobox.tsx",lineNumber:80,columnNumber:9},this),u&&w.length===0&&x&&e.jsxDEV("div",{className:"absolute z-50 left-0 right-0 mt-1 rounded-md border border-surface-border bg-surface shadow-lg px-3 py-4 text-center",children:e.jsxDEV("p",{className:"text-[11px] text-text-quaternary",children:['No capabilities match "',x,'"']},void 0,!0,{fileName:"/app/dashboard/src/components/common/form/CapabilityCombobox.tsx",lineNumber:109,columnNumber:11},this)},void 0,!1,{fileName:"/app/dashboard/src/components/common/form/CapabilityCombobox.tsx",lineNumber:108,columnNumber:9},this)]},void 0,!0,{fileName:"/app/dashboard/src/components/common/form/CapabilityCombobox.tsx",lineNumber:58,columnNumber:5},this)}const qe={durable:"Workflow",pipeline:"Pipeline",capability:"Capability",mcp_query:"MCP Query"},We=["durable","pipeline","capability","mcp_query"];function te({reactionType:s,onReactionTypeChange:t,workflowType:l,onWorkflowTypeChange:o,pipelineId:p,onPipelineIdChange:u,serverId:i,toolName:x,onCapabilityChange:d,mcpPrompt:c,onMcpPromptChange:h,availableTypes:n=[...We]}){const{data:m}=ve(),w=(m??[]).filter(r=>r.invocable).map(r=>r.workflow_type),{data:b}=Se({status:"active"}),a=((b==null?void 0:b.workflows)??[]).map(r=>({id:r.id,name:r.graph_topic||r.id}));return e.jsxDEV("div",{className:"space-y-4",children:[e.jsxDEV("div",{className:"flex gap-1",children:n.map(r=>{const g=s===r;return e.jsxDEV("button",{type:"button",onClick:()=>t(r),className:`px-3 py-1.5 text-[11px] font-medium rounded-md transition-colors ${g?"bg-accent/10 text-accent":"text-text-tertiary hover:text-text-primary hover:bg-surface-hover"}`,children:qe[r]},r,!1,{fileName:"/app/dashboard/src/components/common/form/ReactionSelector.tsx",lineNumber:55,columnNumber:13},this)})},void 0,!1,{fileName:"/app/dashboard/src/components/common/form/ReactionSelector.tsx",lineNumber:51,columnNumber:7},this),s==="durable"&&e.jsxDEV("div",{children:[e.jsxDEV("label",{className:"label",children:"Workflow *"},void 0,!1,{fileName:"/app/dashboard/src/components/common/form/ReactionSelector.tsx",lineNumber:74,columnNumber:11},this),e.jsxDEV("select",{value:l,onChange:r=>o(r.target.value),className:"input",children:[e.jsxDEV("option",{value:"",children:"Select workflow..."},void 0,!1,{fileName:"/app/dashboard/src/components/common/form/ReactionSelector.tsx",lineNumber:76,columnNumber:13},this),w.map(r=>e.jsxDEV("option",{value:r,children:r},r,!1,{fileName:"/app/dashboard/src/components/common/form/ReactionSelector.tsx",lineNumber:77,columnNumber:45},this))]},void 0,!0,{fileName:"/app/dashboard/src/components/common/form/ReactionSelector.tsx",lineNumber:75,columnNumber:11},this)]},void 0,!0,{fileName:"/app/dashboard/src/components/common/form/ReactionSelector.tsx",lineNumber:73,columnNumber:9},this),s==="pipeline"&&e.jsxDEV("div",{children:[e.jsxDEV("label",{className:"label",children:"Pipeline *"},void 0,!1,{fileName:"/app/dashboard/src/components/common/form/ReactionSelector.tsx",lineNumber:84,columnNumber:11},this),e.jsxDEV("select",{value:p,onChange:r=>u(r.target.value),className:"input",children:[e.jsxDEV("option",{value:"",children:"Select pipeline..."},void 0,!1,{fileName:"/app/dashboard/src/components/common/form/ReactionSelector.tsx",lineNumber:86,columnNumber:13},this),a.map(r=>e.jsxDEV("option",{value:r.id,children:r.name},r.id,!1,{fileName:"/app/dashboard/src/components/common/form/ReactionSelector.tsx",lineNumber:87,columnNumber:35},this))]},void 0,!0,{fileName:"/app/dashboard/src/components/common/form/ReactionSelector.tsx",lineNumber:85,columnNumber:11},this)]},void 0,!0,{fileName:"/app/dashboard/src/components/common/form/ReactionSelector.tsx",lineNumber:83,columnNumber:9},this),s==="capability"&&e.jsxDEV("div",{children:[e.jsxDEV("label",{className:"label",children:"Capability *"},void 0,!1,{fileName:"/app/dashboard/src/components/common/form/ReactionSelector.tsx",lineNumber:94,columnNumber:11},this),e.jsxDEV(Me,{serverId:i,toolName:x,onChange:d},void 0,!1,{fileName:"/app/dashboard/src/components/common/form/ReactionSelector.tsx",lineNumber:95,columnNumber:11},this)]},void 0,!0,{fileName:"/app/dashboard/src/components/common/form/ReactionSelector.tsx",lineNumber:93,columnNumber:9},this),s==="mcp_query"&&h&&e.jsxDEV("div",{children:[e.jsxDEV("label",{className:"label",children:"Prompt *"},void 0,!1,{fileName:"/app/dashboard/src/components/common/form/ReactionSelector.tsx",lineNumber:105,columnNumber:11},this),e.jsxDEV("textarea",{value:c??"",onChange:r=>h(r.target.value),placeholder:"Analyze the error and suggest remediation...",rows:3,className:"input resize-none"},void 0,!1,{fileName:"/app/dashboard/src/components/common/form/ReactionSelector.tsx",lineNumber:106,columnNumber:11},this)]},void 0,!0,{fileName:"/app/dashboard/src/components/common/form/ReactionSelector.tsx",lineNumber:104,columnNumber:9},this)]},void 0,!0,{fileName:"/app/dashboard/src/components/common/form/ReactionSelector.tsx",lineNumber:49,columnNumber:5},this)}const $e={task:"bg-blue-400/15 text-blue-400",workflow:"bg-accent/15 text-accent",escalation:"bg-amber-400/15 text-amber-400",activity:"bg-cyan-400/15 text-cyan-400",knowledge:"bg-violet-400/15 text-violet-400",file:"bg-orange-400/15 text-orange-400",agent:"bg-emerald-400/15 text-emerald-400",app:"bg-rose-400/15 text-rose-400",milestone:"bg-violet-400/15 text-violet-400"};function Oe({form:s,set:t}){const{data:l}=we({limit:200}),{data:o}=se(),p=(l==null?void 0:l.topics)??[],u=N.useMemo(()=>{var a;return((a=o==null?void 0:o.categories)==null?void 0:a.flatMap(r=>r.tools))??[]},[o]),[i,x]=N.useState(0),d=(a,r,g)=>{const f=[...s.subscriptions];f[a]={...f[a],[r]:g},t("subscriptions",f)},c=()=>{t("subscriptions",[...s.subscriptions,{...Ve}]),x(s.subscriptions.length)},h=a=>{t("subscriptions",s.subscriptions.filter((r,g)=>g!==a)),i>=s.subscriptions.length-1&&x(Math.max(0,s.subscriptions.length-2))},n=s.subscriptions,m=n[i],w=a=>a.topic?a.reaction_type==="durable"?!!a.workflow_type:a.reaction_type==="pipeline"?!!a.pipeline_id:a.reaction_type==="mcp_query"?!!a.mcp_prompt:a.reaction_type==="capability"?!!a.server_id&&!!a.tool_name:!1:!1,b=m?p.find(a=>a.topic===m.topic):void 0;return n.length===0?e.jsxDEV("div",{className:"max-w-xl",children:[e.jsxDEV("div",{className:"border-l-2 border-accent/30 pl-3 py-1 flex items-start justify-between mb-8",children:[e.jsxDEV("p",{className:"text-[12px] text-text-secondary italic leading-relaxed",children:"Optional. When a matching event is published, the automation runs the configured workflow with the event payload."},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/SubscriptionsStep.tsx",lineNumber:68,columnNumber:11},this),e.jsxDEV("button",{onClick:()=>{window.location.hash="#docs:agents.md:subscriptions"},className:"text-text-quaternary hover:text-accent transition-colors shrink-0 ml-3",title:"Docs: Subscriptions",children:e.jsxDEV(R,{className:"w-3 h-3",strokeWidth:1.5},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/SubscriptionsStep.tsx",lineNumber:71,columnNumber:206},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/SubscriptionsStep.tsx",lineNumber:71,columnNumber:11},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/agents/detail/SubscriptionsStep.tsx",lineNumber:67,columnNumber:9},this),e.jsxDEV("div",{className:"flex flex-col items-center justify-center py-12 text-center",children:[e.jsxDEV(Y,{className:"w-8 h-8 text-text-quaternary/40 mb-3",strokeWidth:1},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/SubscriptionsStep.tsx",lineNumber:74,columnNumber:11},this),e.jsxDEV("p",{className:"text-sm text-text-tertiary mb-2",children:"No event subscriptions yet"},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/SubscriptionsStep.tsx",lineNumber:75,columnNumber:11},this),e.jsxDEV("p",{className:"text-[11px] text-text-quaternary max-w-sm mb-6",children:"Each subscription listens for a topic pattern and runs a workflow when it matches."},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/SubscriptionsStep.tsx",lineNumber:76,columnNumber:11},this),e.jsxDEV("button",{onClick:c,className:"flex items-center gap-2 text-xs text-accent hover:text-accent-hover transition-colors",children:[e.jsxDEV($,{className:"w-3.5 h-3.5"},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/SubscriptionsStep.tsx",lineNumber:80,columnNumber:13},this)," Add first subscription"]},void 0,!0,{fileName:"/app/dashboard/src/pages/agents/detail/SubscriptionsStep.tsx",lineNumber:79,columnNumber:11},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/agents/detail/SubscriptionsStep.tsx",lineNumber:73,columnNumber:9},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/agents/detail/SubscriptionsStep.tsx",lineNumber:66,columnNumber:7},this):e.jsxDEV("div",{children:[e.jsxDEV("div",{className:"border-l-2 border-accent/30 pl-3 py-1 flex items-start justify-between mb-6",children:[e.jsxDEV("p",{className:"text-[12px] text-text-secondary italic leading-relaxed",children:"Optional. When a matching event is published, the automation runs the configured workflow with the event payload."},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/SubscriptionsStep.tsx",lineNumber:90,columnNumber:9},this),e.jsxDEV("button",{onClick:()=>{window.location.hash="#docs:agents.md:subscriptions"},className:"text-text-quaternary hover:text-accent transition-colors shrink-0 ml-3",title:"Docs: Subscriptions",children:e.jsxDEV(R,{className:"w-3 h-3",strokeWidth:1.5},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/SubscriptionsStep.tsx",lineNumber:93,columnNumber:204},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/SubscriptionsStep.tsx",lineNumber:93,columnNumber:9},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/agents/detail/SubscriptionsStep.tsx",lineNumber:89,columnNumber:7},this),e.jsxDEV("div",{className:"flex gap-8",children:[e.jsxDEV("div",{className:"w-52 shrink-0 space-y-0.5",children:[n.map((a,r)=>e.jsxDEV("div",{className:`group/sub flex items-center rounded-md transition-colors ${i===r?"bg-accent/10 text-accent":"text-text-tertiary hover:text-text-primary hover:bg-surface-hover"}`,children:[e.jsxDEV("button",{onClick:()=>x(r),className:"flex-1 text-left px-3 py-2 min-w-0",children:[e.jsxDEV("div",{className:"flex items-center gap-1.5",children:[e.jsxDEV("span",{className:`w-1.5 h-1.5 rounded-full shrink-0 ${w(a)?"bg-emerald-400":"bg-zinc-500"}`},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/SubscriptionsStep.tsx",lineNumber:105,columnNumber:19},this),e.jsxDEV("span",{className:"text-[11px] font-mono truncate",children:a.topic||"new subscription"},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/SubscriptionsStep.tsx",lineNumber:106,columnNumber:19},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/agents/detail/SubscriptionsStep.tsx",lineNumber:104,columnNumber:17},this),e.jsxDEV("span",{className:"text-[9px] text-text-quaternary ml-3",children:["→ ",a.workflow_type||a.tool_name||a.reaction_type]},void 0,!0,{fileName:"/app/dashboard/src/pages/agents/detail/SubscriptionsStep.tsx",lineNumber:108,columnNumber:17},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/agents/detail/SubscriptionsStep.tsx",lineNumber:103,columnNumber:15},this),e.jsxDEV("button",{onClick:g=>{g.stopPropagation(),confirm(`Remove subscription "${a.topic||"new"}"?
|
|
2
|
+
|
|
3
|
+
This takes effect when you save.`)&&h(r)},className:"opacity-0 group-hover/sub:opacity-100 px-2 text-text-quaternary hover:text-red-400 transition-all",title:"Remove",children:e.jsxDEV(X,{className:"w-3 h-3"},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/SubscriptionsStep.tsx",lineNumber:111,columnNumber:17},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/SubscriptionsStep.tsx",lineNumber:110,columnNumber:15},this)]},r,!0,{fileName:"/app/dashboard/src/pages/agents/detail/SubscriptionsStep.tsx",lineNumber:100,columnNumber:13},this)),e.jsxDEV("button",{onClick:c,className:"w-full flex items-center gap-1.5 px-3 py-2 text-[11px] text-accent hover:text-accent-hover transition-colors",children:[e.jsxDEV($,{className:"w-3 h-3"},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/SubscriptionsStep.tsx",lineNumber:116,columnNumber:13},this)," Add"]},void 0,!0,{fileName:"/app/dashboard/src/pages/agents/detail/SubscriptionsStep.tsx",lineNumber:115,columnNumber:11},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/agents/detail/SubscriptionsStep.tsx",lineNumber:98,columnNumber:9},this),m&&e.jsxDEV("div",{className:"flex-1 min-w-0 space-y-12",children:[e.jsxDEV("div",{children:[e.jsxDEV("label",{className:V,children:"When this event fires"},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/SubscriptionsStep.tsx",lineNumber:126,columnNumber:15},this),e.jsxDEV(Ke,{value:m.topic,onChange:a=>d(i,"topic",a),topics:p},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/SubscriptionsStep.tsx",lineNumber:127,columnNumber:15},this),(b==null?void 0:b.payload_schema)&&e.jsxDEV("div",{className:"mt-3 p-3 rounded-md bg-surface-sunken border border-surface-border",children:[e.jsxDEV("p",{className:"text-[10px] text-text-quaternary mb-1 uppercase tracking-wider font-medium",children:"Payload Schema"},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/SubscriptionsStep.tsx",lineNumber:136,columnNumber:19},this),e.jsxDEV("pre",{className:"text-[11px] font-mono text-text-secondary whitespace-pre-wrap overflow-x-auto max-h-40",children:JSON.stringify(b.payload_schema.properties??b.payload_schema,null,2)},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/SubscriptionsStep.tsx",lineNumber:137,columnNumber:19},this),b.description&&e.jsxDEV("p",{className:"text-[10px] text-text-tertiary mt-2 italic",children:b.description},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/SubscriptionsStep.tsx",lineNumber:141,columnNumber:21},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/agents/detail/SubscriptionsStep.tsx",lineNumber:135,columnNumber:17},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/agents/detail/SubscriptionsStep.tsx",lineNumber:125,columnNumber:13},this),e.jsxDEV("div",{children:[e.jsxDEV("label",{className:V,children:"Run this reaction"},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/SubscriptionsStep.tsx",lineNumber:149,columnNumber:15},this),e.jsxDEV(te,{reactionType:m.reaction_type,onReactionTypeChange:a=>d(i,"reaction_type",a),workflowType:m.workflow_type,onWorkflowTypeChange:a=>d(i,"workflow_type",a),pipelineId:m.pipeline_id,onPipelineIdChange:a=>d(i,"pipeline_id",a),serverId:m.server_id,toolName:m.tool_name,onCapabilityChange:(a,r)=>{var C;const g=[...s.subscriptions],f={...g[i],server_id:a,tool_name:r},j=u.find(S=>S.serverId===a&&S.name===r),P=(C=j==null?void 0:j.inputSchema)==null?void 0:C.properties;if(P&&r){const S={};for(const I of Object.keys(P))I.startsWith("_")||(S[I]=`{event.data.${I}}`);f.input_mapping=JSON.stringify(S,null,2)}g[i]=f,t("subscriptions",g)},mcpPrompt:m.mcp_prompt,onMcpPromptChange:a=>d(i,"mcp_prompt",a)},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/SubscriptionsStep.tsx",lineNumber:150,columnNumber:15},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/agents/detail/SubscriptionsStep.tsx",lineNumber:148,columnNumber:13},this),e.jsxDEV("div",{className:"grid grid-cols-2 gap-6",children:[e.jsxDEV("div",{children:[e.jsxDEV("label",{className:V,children:"As identity"},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/SubscriptionsStep.tsx",lineNumber:185,columnNumber:17},this),e.jsxDEV(ae,{selected:m.execute_as,onChange:a=>d(i,"execute_as",a)},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/SubscriptionsStep.tsx",lineNumber:186,columnNumber:17},this),e.jsxDEV("p",{className:E,children:"Identity used when invoking the workflow."},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/SubscriptionsStep.tsx",lineNumber:187,columnNumber:17},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/agents/detail/SubscriptionsStep.tsx",lineNumber:184,columnNumber:15},this),e.jsxDEV("div",{children:[e.jsxDEV("label",{className:V,children:"But only if"},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/SubscriptionsStep.tsx",lineNumber:190,columnNumber:17},this),e.jsxDEV("input",{type:"text",value:m.filter,onChange:a=>d(i,"filter",a.target.value),placeholder:"No filter (all matching events)",className:`${k} font-mono text-xs`},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/SubscriptionsStep.tsx",lineNumber:191,columnNumber:17},this),e.jsxDEV("p",{className:E,children:["JSON filter against event.data, e.g. ",'{"status": 422}']},void 0,!0,{fileName:"/app/dashboard/src/pages/agents/detail/SubscriptionsStep.tsx",lineNumber:192,columnNumber:17},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/agents/detail/SubscriptionsStep.tsx",lineNumber:189,columnNumber:15},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/agents/detail/SubscriptionsStep.tsx",lineNumber:183,columnNumber:13},this),e.jsxDEV("div",{children:[e.jsxDEV("label",{className:V,children:"With this data"},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/SubscriptionsStep.tsx",lineNumber:198,columnNumber:15},this),m.reaction_type==="capability"&&m.tool_name?e.jsxDEV(Te,{tool:u.find(a=>a.serverId===m.server_id&&a.name===m.tool_name),value:m.input_mapping,onChange:a=>d(i,"input_mapping",a),eventSchema:b==null?void 0:b.payload_schema},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/SubscriptionsStep.tsx",lineNumber:200,columnNumber:17},this):e.jsxDEV(e.Fragment,{children:[e.jsxDEV("textarea",{value:m.input_mapping,onChange:a=>d(i,"input_mapping",a.target.value),rows:10,className:O,placeholder:`{
|
|
4
|
+
"data": {
|
|
5
|
+
"orderId": "{event.data.orderId}",
|
|
6
|
+
"error": "{event.data.error}"
|
|
7
|
+
}
|
|
8
|
+
}`},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/SubscriptionsStep.tsx",lineNumber:208,columnNumber:19},this),e.jsxDEV("p",{className:E,children:["Maps event fields to workflow input. ","{event.data.fieldName}"," resolves at runtime."]},void 0,!0,{fileName:"/app/dashboard/src/pages/agents/detail/SubscriptionsStep.tsx",lineNumber:209,columnNumber:19},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/agents/detail/SubscriptionsStep.tsx",lineNumber:207,columnNumber:17},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/agents/detail/SubscriptionsStep.tsx",lineNumber:197,columnNumber:13},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/agents/detail/SubscriptionsStep.tsx",lineNumber:122,columnNumber:11},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/agents/detail/SubscriptionsStep.tsx",lineNumber:96,columnNumber:7},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/agents/detail/SubscriptionsStep.tsx",lineNumber:88,columnNumber:5},this)}function Te({tool:s,value:t,onChange:l,eventSchema:o}){var w,b;const[p,u]=N.useState(!1),i=((w=s==null?void 0:s.inputSchema)==null?void 0:w.properties)??{},x=((b=s==null?void 0:s.inputSchema)==null?void 0:b.required)??[],d=Object.entries(i).filter(([a])=>!a.startsWith("_")),c=N.useMemo(()=>[...d].sort(([a],[r])=>{const g=x.indexOf(a),f=x.indexOf(r);return g!==-1&&f!==-1?g-f:g!==-1?-1:f!==-1?1:a.localeCompare(r)}),[d,x]),h=N.useMemo(()=>{const a=[{value:"{event.type}",label:"event type"},{value:"{event.source}",label:"event source"},{value:"{event.timestamp}",label:"ISO timestamp"},{value:"{event.workflowId}",label:"workflow ID"},{value:"{event.workflowName}",label:"workflow name"}],r=o==null?void 0:o.properties;if(r)for(const[g,f]of Object.entries(r))a.push({value:`{event.data.${g}}`,label:f.description||g});return a},[o]),n=N.useMemo(()=>{try{return JSON.parse(t)}catch{return{}}},[t]),m=(a,r)=>{const g={...n,[a]:r};l(JSON.stringify(g,null,2))};return c.length===0||p?e.jsxDEV("div",{children:[c.length>0&&e.jsxDEV("div",{className:"flex justify-end mb-1",children:e.jsxDEV("button",{type:"button",onClick:()=>u(!1),className:"text-[10px] text-accent hover:text-accent-hover transition-colors",children:"Form view"},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/SubscriptionsStep.tsx",lineNumber:281,columnNumber:13},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/SubscriptionsStep.tsx",lineNumber:280,columnNumber:11},this),e.jsxDEV("textarea",{value:t,onChange:a=>l(a.target.value),rows:8,className:O,placeholder:`{
|
|
9
|
+
"domain": "{event.data.name}",
|
|
10
|
+
"key": "{event.data.path}"
|
|
11
|
+
}`},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/SubscriptionsStep.tsx",lineNumber:284,columnNumber:9},this),e.jsxDEV("p",{className:E,children:["Maps event fields to capability inputs. ","{event.data.fieldName}"," resolves at runtime."]},void 0,!0,{fileName:"/app/dashboard/src/pages/agents/detail/SubscriptionsStep.tsx",lineNumber:285,columnNumber:9},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/agents/detail/SubscriptionsStep.tsx",lineNumber:278,columnNumber:7},this):e.jsxDEV("div",{children:[e.jsxDEV("div",{className:"flex items-center justify-between mb-3",children:[e.jsxDEV("p",{className:"text-[11px] text-text-tertiary",children:"Map each input to an event field or enter a static value."},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/SubscriptionsStep.tsx",lineNumber:293,columnNumber:9},this),e.jsxDEV("button",{type:"button",onClick:()=>u(!0),className:"text-[10px] text-text-tertiary hover:text-accent transition-colors",children:"Raw JSON"},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/SubscriptionsStep.tsx",lineNumber:296,columnNumber:9},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/agents/detail/SubscriptionsStep.tsx",lineNumber:292,columnNumber:7},this),e.jsxDEV("div",{className:"space-y-4",children:c.map(([a,r])=>{const g=x.includes(a),f=r.description,j=r.type,P=typeof n[a]=="string"?n[a]:typeof n[a]=="object"?JSON.stringify(n[a]):n[a]!=null?String(n[a]):"";return e.jsxDEV("div",{className:"bg-surface-sunken/30 rounded-md px-4 py-3",children:[e.jsxDEV("div",{className:"flex items-baseline gap-2 mb-0.5",children:[e.jsxDEV("label",{className:"text-[11px] font-semibold uppercase tracking-wider text-text-secondary",children:[a.replace(/[_-]/g," "),g&&e.jsxDEV("span",{className:"text-status-error ml-0.5",children:"*"},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/SubscriptionsStep.tsx",lineNumber:313,columnNumber:29},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/agents/detail/SubscriptionsStep.tsx",lineNumber:311,columnNumber:17},this),j&&e.jsxDEV("span",{className:"text-[9px] text-text-quaternary",children:j},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/SubscriptionsStep.tsx",lineNumber:315,columnNumber:31},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/agents/detail/SubscriptionsStep.tsx",lineNumber:310,columnNumber:15},this),f&&e.jsxDEV("p",{className:"text-[10px] text-text-quaternary mb-2",children:f},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/SubscriptionsStep.tsx",lineNumber:317,columnNumber:24},this),e.jsxDEV(Le,{value:P,onChange:C=>m(a,C),suggestions:h,fieldType:j,placeholder:`{event.data.${a}}`},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/SubscriptionsStep.tsx",lineNumber:318,columnNumber:15},this)]},a,!0,{fileName:"/app/dashboard/src/pages/agents/detail/SubscriptionsStep.tsx",lineNumber:309,columnNumber:13},this)})},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/SubscriptionsStep.tsx",lineNumber:299,columnNumber:7},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/agents/detail/SubscriptionsStep.tsx",lineNumber:291,columnNumber:5},this)}function Le({value:s,onChange:t,suggestions:l,fieldType:o,placeholder:p}){const[u,i]=N.useState(!1),[x,d]=N.useState(""),c=N.useRef(null);N.useEffect(()=>{if(!u)return;function n(m){c.current&&!c.current.contains(m.target)&&i(!1)}return document.addEventListener("mousedown",n),()=>document.removeEventListener("mousedown",n)},[u]);const h=l.filter(n=>n.value.toLowerCase().includes(x.toLowerCase())||n.label.toLowerCase().includes(x.toLowerCase()));return o==="object"?e.jsxDEV("textarea",{value:s,onChange:n=>{try{t(JSON.parse(n.target.value))}catch{t(n.target.value)}},rows:3,className:`${O} text-xs`,placeholder:'{ "source": "{event.source}" }'},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/SubscriptionsStep.tsx",lineNumber:361,columnNumber:7},this):e.jsxDEV("div",{ref:c,className:"relative",children:[e.jsxDEV("input",{type:"text",value:s,onFocus:()=>{i(!0),d("")},onChange:n=>{t(n.target.value),d(n.target.value),u||i(!0)},className:"input font-mono text-xs w-full",placeholder:p},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/SubscriptionsStep.tsx",lineNumber:376,columnNumber:7},this),u&&h.length>0&&e.jsxDEV("div",{className:"absolute z-50 left-0 right-0 mt-1 max-h-48 overflow-y-auto rounded-md border border-surface-border bg-surface shadow-lg",children:h.map(n=>e.jsxDEV("button",{type:"button",onClick:()=>{t(n.value),i(!1)},className:`w-full text-left px-3 py-1.5 hover:bg-surface-hover transition-colors flex items-center gap-3 ${s===n.value?"bg-accent/5":""}`,children:[e.jsxDEV("span",{className:"text-[11px] font-mono text-accent shrink-0",children:n.value},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/SubscriptionsStep.tsx",lineNumber:393,columnNumber:15},this),e.jsxDEV("span",{className:"text-[10px] text-text-quaternary truncate",children:n.label},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/SubscriptionsStep.tsx",lineNumber:394,columnNumber:15},this)]},n.value,!0,{fileName:"/app/dashboard/src/pages/agents/detail/SubscriptionsStep.tsx",lineNumber:387,columnNumber:13},this))},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/SubscriptionsStep.tsx",lineNumber:385,columnNumber:9},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/agents/detail/SubscriptionsStep.tsx",lineNumber:375,columnNumber:5},this)}function Ke({value:s,onChange:t,topics:l}){const[o,p]=N.useState(!1),[u,i]=N.useState(""),x=N.useRef(null),d=N.useRef(null);N.useEffect(()=>{function n(m){d.current&&!d.current.contains(m.target)&&p(!1)}return o&&document.addEventListener("mousedown",n),()=>document.removeEventListener("mousedown",n)},[o]);const c=o?u:s,h=l.filter(n=>n.topic.toLowerCase().includes((o?u:"").toLowerCase())||(n.description??"").toLowerCase().includes((o?u:"").toLowerCase()));return e.jsxDEV("div",{ref:d,className:"relative",children:[e.jsxDEV("input",{ref:x,type:"text",value:c,onFocus:()=>{p(!0),i(s)},onChange:n=>{const m=n.target.value;i(m),t(m),o||p(!0)},placeholder:"workflow.failed or app.>",className:`${k} font-mono`},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/SubscriptionsStep.tsx",lineNumber:434,columnNumber:7},this),o&&h.length>0&&e.jsxDEV("div",{className:"absolute z-50 left-0 right-0 mt-1 max-h-64 overflow-y-auto rounded-md border border-surface-border bg-surface shadow-lg",children:h.map(n=>{const m=$e[n.category]??"bg-zinc-400/15 text-zinc-400";return e.jsxDEV("button",{type:"button",onClick:()=>{t(n.topic),i(n.topic),p(!1)},className:`w-full text-left px-3 py-2 hover:bg-surface-hover transition-colors flex items-center gap-3 ${s===n.topic?"bg-accent/5":""}`,children:[e.jsxDEV("span",{className:"text-[11px] font-mono text-text-primary shrink-0",children:n.topic},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/SubscriptionsStep.tsx",lineNumber:466,columnNumber:17},this),e.jsxDEV("span",{className:`inline-flex items-center px-1.5 py-0.5 rounded text-[9px] font-medium shrink-0 ${m}`,children:n.category},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/SubscriptionsStep.tsx",lineNumber:467,columnNumber:17},this),n.description&&e.jsxDEV("span",{className:"text-[10px] text-text-quaternary truncate",children:n.description},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/SubscriptionsStep.tsx",lineNumber:469,columnNumber:19},this)]},n.topic,!0,{fileName:"/app/dashboard/src/pages/agents/detail/SubscriptionsStep.tsx",lineNumber:454,columnNumber:15},this)})},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/SubscriptionsStep.tsx",lineNumber:450,columnNumber:9},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/agents/detail/SubscriptionsStep.tsx",lineNumber:433,columnNumber:5},this)}const Fe=["*/5 * * * *","*/15 * * * *","0 * * * *","0 */4 * * *","0 7 * * *","0 9 * * 1-5"];function F(s){return{"* * * * *":"Every minute","*/5 * * * *":"Every 5 min","*/15 * * * *":"Every 15 min","0 * * * *":"Hourly","0 */4 * * *":"Every 4 hours","0 7 * * *":"Daily 7 AM UTC","0 9 * * 1-5":"Weekdays 9 AM UTC","0 0 * * 1":"Weekly Monday"}[s]||s}function Je({form:s,set:t}){const[l,o]=N.useState(0),p=(c,h,n)=>{const m=[...s.schedules];m[c]={...m[c],[h]:n},t("schedules",m)},u=()=>{t("schedules",[...s.schedules,{..._e}]),o(s.schedules.length)},i=c=>{t("schedules",s.schedules.filter((h,n)=>n!==c)),l>=s.schedules.length-1&&o(Math.max(0,s.schedules.length-2))},x=s.schedules,d=x[l];return x.length===0?e.jsxDEV("div",{children:[e.jsxDEV("div",{className:"border-l-2 border-accent/30 pl-3 py-1 mb-8 flex items-start justify-between",children:[e.jsxDEV("p",{className:"text-[12px] text-text-secondary italic leading-relaxed",children:"Optional. Each schedule runs a workflow on a cron timer."},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/ScheduleStep.tsx",lineNumber:62,columnNumber:11},this),e.jsxDEV("button",{onClick:()=>{window.location.hash="#docs:agents.md:schedule"},className:"text-text-quaternary hover:text-accent transition-colors shrink-0 ml-3",title:"Docs: Schedule",children:e.jsxDEV(R,{className:"w-3 h-3",strokeWidth:1.5},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/ScheduleStep.tsx",lineNumber:65,columnNumber:196},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/ScheduleStep.tsx",lineNumber:65,columnNumber:11},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/agents/detail/ScheduleStep.tsx",lineNumber:61,columnNumber:9},this),e.jsxDEV("div",{className:"flex flex-col items-center justify-center py-12 text-center",children:[e.jsxDEV(B,{className:"w-8 h-8 text-text-quaternary/40 mb-3",strokeWidth:1},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/ScheduleStep.tsx",lineNumber:68,columnNumber:11},this),e.jsxDEV("p",{className:"text-sm text-text-tertiary mb-2",children:"No schedules"},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/ScheduleStep.tsx",lineNumber:69,columnNumber:11},this),e.jsxDEV("p",{className:"text-[11px] text-text-quaternary max-w-sm mb-6",children:"Add a schedule to run a workflow on a recurring cron timer."},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/ScheduleStep.tsx",lineNumber:70,columnNumber:11},this),e.jsxDEV("button",{onClick:u,className:"flex items-center gap-2 text-xs text-accent hover:text-accent-hover transition-colors",children:[e.jsxDEV($,{className:"w-3.5 h-3.5"},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/ScheduleStep.tsx",lineNumber:74,columnNumber:13},this)," Add schedule"]},void 0,!0,{fileName:"/app/dashboard/src/pages/agents/detail/ScheduleStep.tsx",lineNumber:73,columnNumber:11},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/agents/detail/ScheduleStep.tsx",lineNumber:67,columnNumber:9},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/agents/detail/ScheduleStep.tsx",lineNumber:60,columnNumber:7},this):e.jsxDEV("div",{children:[e.jsxDEV("div",{className:"border-l-2 border-accent/30 pl-3 py-1 mb-6 flex items-start justify-between",children:[e.jsxDEV("p",{className:"text-[12px] text-text-secondary italic leading-relaxed",children:"Each schedule runs a workflow on a timer. An automation can have multiple schedules targeting different workflows."},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/ScheduleStep.tsx",lineNumber:84,columnNumber:9},this),e.jsxDEV("button",{onClick:()=>{window.location.hash="#docs:agents.md:schedule"},className:"text-text-quaternary hover:text-accent transition-colors shrink-0 ml-3",title:"Docs: Schedule",children:e.jsxDEV(R,{className:"w-3 h-3",strokeWidth:1.5},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/ScheduleStep.tsx",lineNumber:87,columnNumber:194},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/ScheduleStep.tsx",lineNumber:87,columnNumber:9},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/agents/detail/ScheduleStep.tsx",lineNumber:83,columnNumber:7},this),e.jsxDEV("div",{className:"flex gap-8",children:[e.jsxDEV("div",{className:"w-48 shrink-0 space-y-0.5",children:[x.map((c,h)=>e.jsxDEV("div",{className:`group/sched flex items-center rounded-md transition-colors ${l===h?"bg-accent/10 text-accent":"text-text-tertiary hover:text-text-primary hover:bg-surface-hover"}`,children:[e.jsxDEV("button",{onClick:()=>o(h),className:"flex-1 text-left px-3 py-2 min-w-0",children:[e.jsxDEV("span",{className:"text-[11px] font-mono block",children:c.cron||"new schedule"},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/ScheduleStep.tsx",lineNumber:98,columnNumber:17},this),e.jsxDEV("span",{className:"text-[9px] text-text-quaternary",children:[(c.reaction_type==="pipeline"?c.pipeline_id:c.workflow_type)||"no target"," · ",F(c.cron)]},void 0,!0,{fileName:"/app/dashboard/src/pages/agents/detail/ScheduleStep.tsx",lineNumber:99,columnNumber:17},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/agents/detail/ScheduleStep.tsx",lineNumber:97,columnNumber:15},this),e.jsxDEV("button",{onClick:n=>{n.stopPropagation(),confirm(`Remove schedule "${c.cron||"new"}"?
|
|
12
|
+
|
|
13
|
+
This takes effect when you save.`)&&i(h)},className:"opacity-0 group-hover/sched:opacity-100 px-2 text-text-quaternary hover:text-red-400 transition-all",title:"Remove",children:e.jsxDEV(X,{className:"w-3 h-3"},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/ScheduleStep.tsx",lineNumber:102,columnNumber:17},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/ScheduleStep.tsx",lineNumber:101,columnNumber:15},this)]},h,!0,{fileName:"/app/dashboard/src/pages/agents/detail/ScheduleStep.tsx",lineNumber:94,columnNumber:13},this)),e.jsxDEV("button",{onClick:u,className:"w-full flex items-center gap-1.5 px-3 py-2 text-[11px] text-accent hover:text-accent-hover transition-colors",children:[e.jsxDEV($,{className:"w-3 h-3"},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/ScheduleStep.tsx",lineNumber:107,columnNumber:13},this)," Add"]},void 0,!0,{fileName:"/app/dashboard/src/pages/agents/detail/ScheduleStep.tsx",lineNumber:106,columnNumber:11},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/agents/detail/ScheduleStep.tsx",lineNumber:92,columnNumber:9},this),d&&e.jsxDEV("div",{className:"flex-1 min-w-0 space-y-12",children:[e.jsxDEV("div",{children:[e.jsxDEV("label",{className:V,children:"Run every"},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/ScheduleStep.tsx",lineNumber:117,columnNumber:15},this),e.jsxDEV("input",{type:"text",value:d.cron,onChange:c=>p(l,"cron",c.target.value),placeholder:"0 * * * *",className:`${k} font-mono`},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/ScheduleStep.tsx",lineNumber:118,columnNumber:15},this),d.cron&&e.jsxDEV("p",{className:"text-[11px] text-accent/80 mt-1",children:F(d.cron)},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/ScheduleStep.tsx",lineNumber:119,columnNumber:30},this),e.jsxDEV("div",{className:"flex gap-3 mt-2 overflow-x-auto",children:Fe.map(c=>e.jsxDEV("button",{type:"button",onClick:()=>p(l,"cron",c),className:`text-[10px] font-mono whitespace-nowrap transition-colors ${d.cron===c?"text-accent font-medium":"text-accent/50 hover:text-accent"}`,children:F(c)},c,!1,{fileName:"/app/dashboard/src/pages/agents/detail/ScheduleStep.tsx",lineNumber:122,columnNumber:19},this))},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/ScheduleStep.tsx",lineNumber:120,columnNumber:15},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/agents/detail/ScheduleStep.tsx",lineNumber:116,columnNumber:13},this),e.jsxDEV("div",{children:[e.jsxDEV("label",{className:V,children:"Run this reaction"},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/ScheduleStep.tsx",lineNumber:131,columnNumber:15},this),e.jsxDEV(te,{reactionType:d.reaction_type,onReactionTypeChange:c=>p(l,"reaction_type",c),workflowType:d.workflow_type,onWorkflowTypeChange:c=>p(l,"workflow_type",c),pipelineId:d.pipeline_id,onPipelineIdChange:c=>p(l,"pipeline_id",c),serverId:d.server_id,toolName:d.tool_name,onCapabilityChange:(c,h)=>{p(l,"server_id",c),p(l,"tool_name",h)},availableTypes:["durable","pipeline","capability"]},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/ScheduleStep.tsx",lineNumber:132,columnNumber:15},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/agents/detail/ScheduleStep.tsx",lineNumber:130,columnNumber:13},this),e.jsxDEV("div",{children:[e.jsxDEV("label",{className:V,children:"As identity"},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/ScheduleStep.tsx",lineNumber:149,columnNumber:15},this),e.jsxDEV(ae,{selected:d.execute_as,onChange:c=>p(l,"execute_as",c)},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/ScheduleStep.tsx",lineNumber:150,columnNumber:15},this),e.jsxDEV("p",{className:E,children:"Identity used when invoking."},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/ScheduleStep.tsx",lineNumber:151,columnNumber:15},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/agents/detail/ScheduleStep.tsx",lineNumber:148,columnNumber:13},this),e.jsxDEV("div",{children:[e.jsxDEV("label",{className:V,children:"With this data"},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/ScheduleStep.tsx",lineNumber:156,columnNumber:15},this),e.jsxDEV("textarea",{value:d.envelope,onChange:c=>p(l,"envelope",c.target.value),rows:10,className:O,placeholder:`{
|
|
14
|
+
"data": { "source": "cron" }
|
|
15
|
+
}`},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/ScheduleStep.tsx",lineNumber:157,columnNumber:15},this),e.jsxDEV("p",{className:E,children:"Static payload passed to the workflow on each invocation."},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/ScheduleStep.tsx",lineNumber:158,columnNumber:15},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/agents/detail/ScheduleStep.tsx",lineNumber:155,columnNumber:13},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/agents/detail/ScheduleStep.tsx",lineNumber:113,columnNumber:11},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/agents/detail/ScheduleStep.tsx",lineNumber:90,columnNumber:7},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/agents/detail/ScheduleStep.tsx",lineNumber:82,columnNumber:5},this)}function q({icon:s,color:t,title:l,children:o}){return e.jsxDEV("div",{className:"mb-10",children:[e.jsxDEV("div",{className:"flex items-center gap-2 mb-2 pb-1.5 border-b border-surface-border/40",children:[e.jsxDEV(s,{className:`w-3.5 h-3.5 ${t}`,strokeWidth:1.5},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/ReviewStep.tsx",lineNumber:15,columnNumber:9},this),e.jsxDEV("h3",{className:"text-xs font-semibold uppercase tracking-widest text-accent/80",children:l},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/ReviewStep.tsx",lineNumber:16,columnNumber:9},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/agents/detail/ReviewStep.tsx",lineNumber:14,columnNumber:7},this),e.jsxDEV("div",{className:"pl-5.5",children:o},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/ReviewStep.tsx",lineNumber:18,columnNumber:7},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/agents/detail/ReviewStep.tsx",lineNumber:13,columnNumber:5},this)}function W({label:s,children:t}){return e.jsxDEV("div",{className:"flex gap-3 py-0.5",children:[e.jsxDEV("span",{className:"text-[10px] text-text-quaternary w-20 shrink-0",children:s},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/ReviewStep.tsx",lineNumber:26,columnNumber:7},this),e.jsxDEV("span",{className:"text-xs text-text-primary",children:t},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/ReviewStep.tsx",lineNumber:27,columnNumber:7},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/agents/detail/ReviewStep.tsx",lineNumber:25,columnNumber:5},this)}function ze({form:s}){return e.jsxDEV("div",{children:[e.jsxDEV(q,{icon:Z,color:"text-accent",title:"Identity",children:[e.jsxDEV(W,{label:"Name",children:s.name||"—"},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/ReviewStep.tsx",lineNumber:36,columnNumber:9},this),s.description&&e.jsxDEV(W,{label:"Description",children:s.description},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/ReviewStep.tsx",lineNumber:37,columnNumber:30},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/agents/detail/ReviewStep.tsx",lineNumber:35,columnNumber:7},this),(s.goals||s.rules)&&e.jsxDEV(q,{icon:ee,color:"text-rose-400",title:"Motivation",children:[s.goals&&e.jsxDEV(W,{label:"Goals",children:s.goals},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/ReviewStep.tsx",lineNumber:42,columnNumber:26},this),s.rules&&e.jsxDEV(W,{label:"Rules",children:s.rules},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/ReviewStep.tsx",lineNumber:43,columnNumber:26},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/agents/detail/ReviewStep.tsx",lineNumber:41,columnNumber:9},this),e.jsxDEV(q,{icon:z,color:"text-emerald-400",title:"Knowledge",children:e.jsxDEV(W,{label:"Domain",children:s.knowledge_domain||"None"},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/ReviewStep.tsx",lineNumber:48,columnNumber:9},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/ReviewStep.tsx",lineNumber:47,columnNumber:7},this),e.jsxDEV("div",{className:"grid grid-cols-2 gap-x-10",children:[e.jsxDEV(q,{icon:Y,color:"text-cyan-400",title:`Subscriptions (${s.subscriptions.length})`,children:s.subscriptions.length===0?e.jsxDEV("span",{className:"text-[11px] text-text-quaternary",children:"None configured"},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/ReviewStep.tsx",lineNumber:55,columnNumber:13},this):e.jsxDEV("div",{className:"divide-y divide-surface-border/30",children:s.subscriptions.map((t,l)=>e.jsxDEV("div",{className:"flex items-center py-1.5",children:[e.jsxDEV("div",{className:"flex-1 min-w-0",children:e.jsxDEV(ye,{topic:t.topic||"unset"},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/ReviewStep.tsx",lineNumber:60,columnNumber:51},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/ReviewStep.tsx",lineNumber:60,columnNumber:19},this),e.jsxDEV("div",{className:"flex items-center gap-1.5 shrink-0",children:[e.jsxDEV("span",{className:"text-text-quaternary text-[10px]",children:"→"},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/ReviewStep.tsx",lineNumber:61,columnNumber:71},this),t.workflow_type?e.jsxDEV(H,{type:t.workflow_type},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/ReviewStep.tsx",lineNumber:61,columnNumber:151},this):e.jsxDEV("span",{className:"text-[11px] text-text-quaternary",children:t.reaction_type},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/ReviewStep.tsx",lineNumber:61,columnNumber:195},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/agents/detail/ReviewStep.tsx",lineNumber:61,columnNumber:19},this)]},l,!0,{fileName:"/app/dashboard/src/pages/agents/detail/ReviewStep.tsx",lineNumber:59,columnNumber:17},this))},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/ReviewStep.tsx",lineNumber:57,columnNumber:13},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/ReviewStep.tsx",lineNumber:53,columnNumber:9},this),e.jsxDEV(q,{icon:B,color:"text-amber-400",title:`Schedules (${s.schedules.length})`,children:s.schedules.length===0?e.jsxDEV("span",{className:"text-[11px] text-text-quaternary",children:"None configured"},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/ReviewStep.tsx",lineNumber:70,columnNumber:13},this):e.jsxDEV("div",{className:"divide-y divide-surface-border/30",children:s.schedules.map((t,l)=>e.jsxDEV("div",{className:"flex items-center py-1.5",children:[e.jsxDEV("div",{className:"flex-1 min-w-0",children:e.jsxDEV(pe,{cron:t.cron},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/ReviewStep.tsx",lineNumber:75,columnNumber:51},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/ReviewStep.tsx",lineNumber:75,columnNumber:19},this),e.jsxDEV("div",{className:"flex items-center gap-1.5 shrink-0",children:[e.jsxDEV("span",{className:"text-text-quaternary text-[10px]",children:"→"},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/ReviewStep.tsx",lineNumber:76,columnNumber:71},this),t.workflow_type?e.jsxDEV(H,{type:t.workflow_type},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/ReviewStep.tsx",lineNumber:76,columnNumber:149},this):e.jsxDEV("span",{className:"text-[11px] text-text-quaternary",children:"no workflow"},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/ReviewStep.tsx",lineNumber:76,columnNumber:191},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/agents/detail/ReviewStep.tsx",lineNumber:76,columnNumber:19},this)]},l,!0,{fileName:"/app/dashboard/src/pages/agents/detail/ReviewStep.tsx",lineNumber:74,columnNumber:17},this))},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/ReviewStep.tsx",lineNumber:72,columnNumber:13},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/ReviewStep.tsx",lineNumber:68,columnNumber:9},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/agents/detail/ReviewStep.tsx",lineNumber:52,columnNumber:7},this),e.jsxDEV("div",{className:"border-l-2 border-emerald-400/30 pl-3 py-2 mt-6",children:e.jsxDEV("p",{className:"text-[11px] text-text-tertiary leading-relaxed",children:"After saving, subscriptions and schedules activate immediately. You can pause the automation anytime."},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/ReviewStep.tsx",lineNumber:85,columnNumber:9},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/ReviewStep.tsx",lineNumber:84,columnNumber:7},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/agents/detail/ReviewStep.tsx",lineNumber:34,columnNumber:5},this)}const Ye=[{id:1,label:"Identity",icon:Z},{id:2,label:"Motivation",icon:ee},{id:3,label:"Knowledge",icon:z},{id:4,label:"Subscriptions",icon:Y},{id:5,label:"Schedules",icon:B},{id:6,label:"Review",icon:ge}];function da(){var G;const{id:s}=Ee(),t=!s,l=je(),{data:o}=le(),u=!!((G=o==null?void 0:o.ai)!=null&&G.enabled)?"Agent":"Automation",{data:i,isLoading:x}=oe(t?null:s),{data:d}=me(t?null:s),c=ce(),h=de(),n=ue(),m=be(),w=he(),[b,a]=N.useState(Q),[r,g]=N.useState(!1),[f,j]=N.useState(""),[P,C]=De(),S=parseInt(P.get("step")||"1",10),I=N.useCallback(v=>{C(y=>{const _=new URLSearchParams(y);return _.set("step",String(v)),_},{replace:!0})},[C]);N.useEffect(()=>{if(!r){if(t){a(Q),g(!0);return}i&&d&&(a(ke(i,d.subscriptions??[])),g(!0))}},[i,d,t,r]);const M=(v,y)=>a(_=>({..._,[v]:y})),ie=async()=>{j("");try{const v=Ce(b);let y=s;t?y=(await c.mutateAsync(v)).id:await h.mutateAsync({id:s,...v});const _=Re(b),re=(d==null?void 0:d.subscriptions)??[],T=new Set(re.map(D=>D.id));for(const D of _)if(D.id&&T.has(D.id)){const{id:L,...K}=D;await m.mutateAsync({agentId:y,subId:L,...K}),T.delete(L)}else{const{id:L,...K}=D;await n.mutateAsync({agentId:y,...K})}for(const D of T)await w.mutateAsync({agentId:y,subId:D});l(`/agents/${y}`)}catch(v){j(v.message)}};if(!t&&x)return e.jsxDEV("div",{className:"animate-pulse space-y-4",children:[e.jsxDEV("div",{className:"h-8 bg-surface-sunken rounded w-48"},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/AgentConfigPage.tsx",lineNumber:114,columnNumber:53},this),e.jsxDEV("div",{className:"h-60 bg-surface-sunken rounded"},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/AgentConfigPage.tsx",lineNumber:114,columnNumber:107},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/agents/detail/AgentConfigPage.tsx",lineNumber:114,columnNumber:12},this);const U=c.isPending||h.isPending;return e.jsxDEV("div",{children:[e.jsxDEV(Ne,{title:t?`New ${u}`:`${u}: ${(i==null?void 0:i.id)??""}`,docsHash:"#docs:agents.md"},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/AgentConfigPage.tsx",lineNumber:121,columnNumber:7},this),e.jsxDEV("div",{className:"flex gap-10",children:[e.jsxDEV("nav",{className:"w-44 shrink-0 sticky top-0 self-start pt-2",children:[e.jsxDEV("div",{className:"space-y-0.5",children:Ye.map(v=>{const y=v.icon,_=S===v.id;return e.jsxDEV("button",{onClick:()=>I(v.id),className:`w-full flex items-center gap-2.5 px-3 py-2 rounded-md text-left transition-colors ${_?"bg-accent/10 text-accent":"text-text-tertiary hover:text-text-primary hover:bg-surface-hover"}`,children:[e.jsxDEV(y,{className:"w-3.5 h-3.5 shrink-0",strokeWidth:1.5},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/AgentConfigPage.tsx",lineNumber:143,columnNumber:19},this),e.jsxDEV("span",{className:"text-xs font-medium",children:v.label},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/AgentConfigPage.tsx",lineNumber:144,columnNumber:19},this)]},v.id,!0,{fileName:"/app/dashboard/src/pages/agents/detail/AgentConfigPage.tsx",lineNumber:134,columnNumber:17},this)})},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/AgentConfigPage.tsx",lineNumber:129,columnNumber:11},this),e.jsxDEV("div",{className:"mt-8 pt-4 border-t border-surface-border space-y-2",children:[e.jsxDEV("button",{onClick:ie,disabled:!b.name.trim()||U,className:"w-full btn-primary text-xs disabled:opacity-50",children:U?"Saving...":t?`Create ${u}`:"Save"},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/AgentConfigPage.tsx",lineNumber:152,columnNumber:13},this),e.jsxDEV("button",{onClick:()=>l(t?"/agents":`/agents/${s}`),className:"w-full btn-ghost text-xs",children:"Cancel"},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/AgentConfigPage.tsx",lineNumber:159,columnNumber:13},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/agents/detail/AgentConfigPage.tsx",lineNumber:151,columnNumber:11},this),f&&e.jsxDEV("p",{className:"text-xs text-status-error mt-3",children:f},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/AgentConfigPage.tsx",lineNumber:167,columnNumber:25},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/agents/detail/AgentConfigPage.tsx",lineNumber:128,columnNumber:9},this),e.jsxDEV("div",{className:"flex-1 min-w-0 pt-2",children:[S===1&&e.jsxDEV(Pe,{form:b,set:M},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/AgentConfigPage.tsx",lineNumber:172,columnNumber:29},this),S===2&&e.jsxDEV(Ae,{form:b,set:M},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/AgentConfigPage.tsx",lineNumber:173,columnNumber:29},this),S===3&&e.jsxDEV(Ie,{form:b,set:M},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/AgentConfigPage.tsx",lineNumber:174,columnNumber:29},this),S===4&&e.jsxDEV(Oe,{form:b,set:M},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/AgentConfigPage.tsx",lineNumber:175,columnNumber:29},this),S===5&&e.jsxDEV(Je,{form:b,set:M},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/AgentConfigPage.tsx",lineNumber:176,columnNumber:29},this),S===6&&e.jsxDEV(ze,{form:b},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/AgentConfigPage.tsx",lineNumber:177,columnNumber:29},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/agents/detail/AgentConfigPage.tsx",lineNumber:171,columnNumber:9},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/agents/detail/AgentConfigPage.tsx",lineNumber:126,columnNumber:7},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/agents/detail/AgentConfigPage.tsx",lineNumber:120,columnNumber:5},this)}export{da as AgentConfigPage};
|
|
16
|
+
//# sourceMappingURL=AgentConfigPage-D27vWOI6.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AgentConfigPage-D27vWOI6.js","sources":["../../src/pages/agents/detail/agent-form-types.ts","../../src/pages/agents/detail/IdentityStep.tsx","../../src/pages/agents/detail/MotivationStep.tsx","../../src/pages/agents/detail/KnowledgeStep.tsx","../../src/components/common/form/CapabilityCombobox.tsx","../../src/components/common/form/ReactionSelector.tsx","../../src/pages/agents/detail/SubscriptionsStep.tsx","../../src/pages/agents/detail/ScheduleStep.tsx","../../src/pages/agents/detail/ReviewStep.tsx","../../src/pages/agents/detail/AgentConfigPage.tsx"],"sourcesContent":["import type { Agent, AgentBehaviors } from '../../../api/agents';\nimport type { AgentSubscription } from '../../../api/agent-subscriptions';\n\nexport interface SubscriptionFormState {\n id?: string;\n topic: string;\n filter: string;\n reaction_type: 'durable' | 'pipeline' | 'mcp_query' | 'capability';\n workflow_type: string;\n pipeline_id: string;\n mcp_prompt: string;\n server_id: string;\n tool_name: string;\n input_mapping: string;\n execute_as: string;\n enabled: boolean;\n}\n\nexport interface ScheduleFormState {\n cron: string;\n reaction_type: 'durable' | 'pipeline' | 'capability';\n workflow_type: string;\n pipeline_id: string;\n server_id: string;\n tool_name: string;\n envelope: string; // JSON string\n execute_as: string;\n}\n\nexport interface AgentFormState {\n name: string;\n description: string;\n goals: string;\n rules: string;\n user_id: string;\n knowledge_domain: string;\n subscriptions: SubscriptionFormState[];\n schedules: ScheduleFormState[];\n}\n\nexport const EMPTY_FORM: AgentFormState = {\n name: '',\n description: '',\n goals: '',\n rules: '',\n user_id: '',\n knowledge_domain: '',\n subscriptions: [],\n schedules: [],\n};\n\nexport const STEP_LABELS = ['Identity', 'Motivation', 'Knowledge', 'Subscriptions', 'Schedule', 'Review'];\n\nexport const EMPTY_SUBSCRIPTION: SubscriptionFormState = {\n topic: '',\n filter: '',\n reaction_type: 'durable',\n workflow_type: '',\n pipeline_id: '',\n mcp_prompt: '',\n server_id: '',\n tool_name: '',\n input_mapping: '{}',\n execute_as: '',\n enabled: true,\n};\n\nexport const EMPTY_SCHEDULE: ScheduleFormState = {\n cron: '0 * * * *',\n reaction_type: 'durable',\n workflow_type: '',\n pipeline_id: '',\n server_id: '',\n tool_name: '',\n envelope: '{}',\n execute_as: '',\n};\n\nexport function isStepValid(step: number, form: AgentFormState): boolean {\n switch (step) {\n case 1: return form.name.trim().length > 0;\n case 2: return true;\n case 3: return true;\n case 4: {\n return form.subscriptions.every((s) => {\n if (!s.topic.trim()) return false;\n if (s.reaction_type === 'durable' && !s.workflow_type) return false;\n if (s.reaction_type === 'pipeline' && !s.pipeline_id) return false;\n if (s.reaction_type === 'mcp_query' && !s.mcp_prompt) return false;\n if (s.reaction_type === 'capability' && (!s.server_id || !s.tool_name)) return false;\n return true;\n });\n }\n case 5: {\n return form.schedules.every((s) => {\n if (!s.cron) return false;\n if (s.reaction_type === 'pipeline') return !!s.pipeline_id;\n if (s.reaction_type === 'capability') return !!s.server_id && !!s.tool_name;\n return !!s.workflow_type;\n });\n }\n case 6: return true;\n default: return true;\n }\n}\n\nexport function agentToForm(\n agent: Agent,\n subscriptions: AgentSubscription[],\n): AgentFormState {\n // Parse schedules from behaviors.schedules or fall back to legacy single cron\n const schedules: ScheduleFormState[] = agent.behaviors?.schedules?.length\n ? (agent.behaviors.schedules as any[]).map((s: any) => ({\n cron: s.cron || '',\n reaction_type: s.reaction_type || 'durable',\n workflow_type: s.workflow_type || '',\n pipeline_id: s.pipeline_id || '',\n server_id: s.server_id || '',\n tool_name: s.tool_name || '',\n envelope: s.envelope ? JSON.stringify(s.envelope, null, 2) : '{}',\n execute_as: s.execute_as || '',\n }))\n : agent.behaviors?.cron\n ? [{ cron: agent.behaviors.cron, reaction_type: 'durable' as const, workflow_type: agent.workflow_type ?? '', pipeline_id: '', server_id: '', tool_name: '', envelope: '{}', execute_as: '' }]\n : [];\n\n return {\n name: agent.id,\n description: agent.description ?? '',\n goals: agent.goals ?? '',\n rules: agent.rules ?? '',\n user_id: agent.user_id ?? '',\n knowledge_domain: agent.knowledge_domain ?? '',\n subscriptions: subscriptions.map((s) => ({\n id: s.id,\n topic: s.topic,\n filter: s.filter ? JSON.stringify(s.filter, null, 2) : '',\n reaction_type: s.reaction_type,\n workflow_type: s.workflow_type ?? '',\n pipeline_id: s.pipeline_id ?? '',\n mcp_prompt: s.mcp_prompt ?? '',\n server_id: s.server_id ?? '',\n tool_name: s.tool_name ?? '',\n input_mapping: JSON.stringify(s.input_mapping ?? {}, null, 2),\n execute_as: s.execute_as ?? '',\n enabled: s.enabled,\n })),\n schedules,\n };\n}\n\nexport function formToAgentPayload(form: AgentFormState): Record<string, any> {\n const behaviors: AgentBehaviors = {};\n // Store schedules array in behaviors\n if (form.schedules.length > 0) {\n (behaviors as any).schedules = form.schedules.map((s) => ({\n cron: s.cron,\n reaction_type: s.reaction_type || 'durable',\n workflow_type: s.reaction_type === 'pipeline' ? undefined : s.workflow_type,\n pipeline_id: s.reaction_type === 'pipeline' ? s.pipeline_id : undefined,\n envelope: tryParseJson(s.envelope) ?? {},\n execute_as: s.execute_as || undefined,\n }));\n // Legacy compat: also set top-level cron from first schedule\n behaviors.cron = form.schedules[0].cron;\n }\n\n return {\n id: form.name,\n description: form.description || undefined,\n goals: form.goals || undefined,\n rules: form.rules || undefined,\n user_id: form.user_id || undefined,\n knowledge_domain: form.knowledge_domain || undefined,\n behaviors,\n workflow_type: form.schedules[0]?.workflow_type || undefined,\n pipeline_id: undefined,\n };\n}\n\nexport function formToSubscriptionPayloads(form: AgentFormState): Array<{\n id?: string;\n topic: string;\n filter?: Record<string, any>;\n reaction_type: string;\n workflow_type?: string;\n pipeline_id?: string;\n mcp_prompt?: string;\n input_mapping: Record<string, any>;\n execute_as?: string;\n enabled: boolean;\n}> {\n return form.subscriptions.map((s) => ({\n id: s.id,\n topic: s.topic,\n filter: s.filter ? tryParseJson(s.filter) : undefined,\n reaction_type: s.reaction_type,\n workflow_type: s.workflow_type || undefined,\n pipeline_id: s.pipeline_id || undefined,\n mcp_prompt: s.mcp_prompt || undefined,\n server_id: s.server_id || undefined,\n tool_name: s.tool_name || undefined,\n input_mapping: tryParseJson(s.input_mapping) ?? {},\n execute_as: s.execute_as || undefined,\n enabled: s.enabled,\n }));\n}\n\nfunction tryParseJson(s: string): Record<string, any> | undefined {\n if (!s.trim()) return undefined;\n try { return JSON.parse(s); } catch { return undefined; }\n}\n\nexport const sectionCls = 'section-header mt-[3em] first:mt-0';\nexport const labelCls = 'label';\nexport const hintCls = 'hint';\nexport const inputCls = 'input';\nexport const jsonCls = 'input-json w-full';\n","import { BookOpen } from 'lucide-react';\nimport type { AgentFormState } from './agent-form-types';\nimport { labelCls, hintCls, inputCls } from './agent-form-types';\n\ninterface Props {\n form: AgentFormState;\n set: (field: keyof AgentFormState, value: any) => void;\n}\n\nexport function IdentityStep({ form, set }: Props) {\n return (\n <div className=\"space-y-8\">\n <div className=\"border-l-2 border-accent/30 pl-3 py-1 flex items-start justify-between\">\n <p className=\"text-[12px] text-text-secondary italic leading-relaxed\">\n Give your automation a name and describe what it does. The name appears everywhere — in events, logs, and the dashboard.\n </p>\n <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\"><BookOpen className=\"w-3 h-3\" strokeWidth={1.5} /></button>\n </div>\n\n <div>\n <label className={labelCls}>Name *</label>\n <input type=\"text\" value={form.name} onChange={(e) => set('name', e.target.value)} placeholder=\"health-monitor\" className={inputCls} />\n <p className={hintCls}>Lowercase, kebab-case. This appears everywhere.</p>\n </div>\n\n <div>\n <label className={labelCls}>Description</label>\n <input type=\"text\" value={form.description} onChange={(e) => set('description', e.target.value)} placeholder=\"Watches for workflow failures and captures diagnostics\" className={inputCls} />\n <p className={hintCls}>One sentence that explains what this automation does.</p>\n </div>\n </div>\n );\n}\n","import { BookOpen } from 'lucide-react';\nimport type { AgentFormState } from './agent-form-types';\nimport { labelCls, hintCls, inputCls } from './agent-form-types';\n\ninterface Props {\n form: AgentFormState;\n set: (field: keyof AgentFormState, value: any) => void;\n}\n\nexport function MotivationStep({ form, set }: Props) {\n return (\n <div className=\"space-y-8\">\n <div className=\"border-l-2 border-accent/30 pl-3 py-1 flex items-start justify-between\">\n <p className=\"text-[12px] text-text-secondary italic leading-relaxed\">\n Goals define what drives the automation. Rules define what constrains it.\n </p>\n <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\"><BookOpen className=\"w-3 h-3\" strokeWidth={1.5} /></button>\n </div>\n\n <div className=\"grid grid-cols-2 gap-8\">\n <div>\n <label className={labelCls}>Goals</label>\n <textarea value={form.goals} onChange={(e) => set('goals', e.target.value)} placeholder=\"Detect failures early, capture diagnostics, alert before cascading\" rows={4} className={`${inputCls} resize-none`} />\n <p className={hintCls}>Primary motivation. What the automation is trying to achieve.</p>\n </div>\n <div>\n <label className={labelCls}>Rules</label>\n <textarea value={form.rules} onChange={(e) => set('rules', e.target.value)} placeholder=\"Never auto-restart failed workflows. Always escalate to humans.\" rows={4} className={`${inputCls} resize-none`} />\n <p className={hintCls}>Guardrails. What it must never do, even when goals suggest it should.</p>\n </div>\n </div>\n </div>\n );\n}\n","import { Brain, BookOpen } from 'lucide-react';\nimport { useListDomains } from '../../../api/knowledge';\nimport { DateValue } from '../../../components/common/display/DateValue';\nimport type { AgentFormState } from './agent-form-types';\nimport { labelCls, hintCls, inputCls } from './agent-form-types';\n\ninterface Props {\n form: AgentFormState;\n set: (field: keyof AgentFormState, value: any) => void;\n}\n\nexport function KnowledgeStep({ form, set }: Props) {\n const { data: domainData } = useListDomains();\n const domains = domainData?.domains ?? [];\n\n return (\n <div className=\"space-y-6\">\n <div className=\"border-l-2 border-accent/30 pl-3 py-1 flex items-start justify-between\">\n <p className=\"text-[12px] text-text-secondary italic leading-relaxed\">\n Assign a knowledge domain — the automation's memory. It stores context here over time.\n </p>\n <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\"><BookOpen className=\"w-3 h-3\" strokeWidth={1.5} /></button>\n </div>\n\n <div>\n <label className={labelCls}>Knowledge Domain</label>\n <input\n type=\"text\"\n value={form.knowledge_domain}\n onChange={(e) => set('knowledge_domain', e.target.value)}\n placeholder=\"e.g., system-health, content-review, vendor-data\"\n className={inputCls}\n list=\"domain-suggestions\"\n />\n <datalist id=\"domain-suggestions\">\n {domains.map((d) => <option key={d.domain} value={d.domain} />)}\n </datalist>\n <p className={hintCls}>Choose an existing domain to share memory, or type a new name to create one.</p>\n </div>\n\n {domains.length > 0 && (\n <div>\n <label className={labelCls}>Existing Domains</label>\n <div className=\"space-y-0.5 mt-2\">\n {domains.map((d) => (\n <button\n key={d.domain}\n type=\"button\"\n onClick={() => set('knowledge_domain', d.domain)}\n className={`w-full flex items-center gap-3 px-3 py-2 rounded-md text-left transition-colors ${\n form.knowledge_domain === d.domain ? 'border-l-2 border-l-accent bg-accent/5' : 'hover:bg-surface-hover border-l-2 border-l-transparent'\n }`}\n >\n <Brain className=\"w-3.5 h-3.5 text-text-quaternary shrink-0\" strokeWidth={1.5} />\n <span className=\"text-sm text-text-primary flex-1\">{d.domain}</span>\n <span className=\"text-[10px] text-text-quaternary\">{d.count} entries</span>\n <span className=\"text-[9px] text-text-quaternary\"><DateValue date={d.latest} /></span>\n </button>\n ))}\n </div>\n </div>\n )}\n </div>\n );\n}\n","import { useState, useRef, useEffect, useMemo } from 'react';\nimport { Server } from 'lucide-react';\nimport { useCapabilities } from '../../../api/capabilities';\n\n/**\n * Searchable combobox for selecting a capability (MCP server tool).\n *\n * Searches across ALL tools from all servers in a single flat list.\n * Selecting a tool sets both serverId and toolName in one action.\n * Styled to match the TopicCombobox used for event topic selection.\n */\nexport function CapabilityCombobox({ serverId, toolName, onChange }: {\n serverId: string;\n toolName: string;\n onChange: (serverId: string, toolName: string) => void;\n}) {\n const { data } = useCapabilities();\n const allTools = useMemo(\n () => data?.categories?.flatMap((c) => c.tools) ?? [],\n [data],\n );\n\n const [open, setOpen] = useState(false);\n const [filter, setFilter] = useState('');\n const inputRef = useRef<HTMLInputElement>(null);\n const containerRef = useRef<HTMLDivElement>(null);\n\n // Close on outside click\n useEffect(() => {\n if (!open) return;\n function handleClick(e: MouseEvent) {\n if (containerRef.current && !containerRef.current.contains(e.target as Node)) {\n setOpen(false);\n }\n }\n document.addEventListener('mousedown', handleClick);\n return () => document.removeEventListener('mousedown', handleClick);\n }, [open]);\n\n const displayValue = toolName ? `${toolName}` : '';\n const filterText = open ? filter : displayValue;\n\n const filtered = useMemo(() => {\n const q = (open ? filter : '').toLowerCase();\n if (!q) return allTools;\n return allTools.filter((t) =>\n t.name.toLowerCase().includes(q) ||\n t.serverName.toLowerCase().includes(q) ||\n (t.description ?? '').toLowerCase().includes(q),\n );\n }, [allTools, filter, open]);\n\n const selectedTool = toolName\n ? allTools.find((t) => t.serverId === serverId && t.name === toolName)\n : undefined;\n\n return (\n <div ref={containerRef} className=\"relative\">\n <input\n ref={inputRef}\n type=\"text\"\n value={filterText}\n onFocus={() => { setOpen(true); setFilter(displayValue); }}\n onChange={(e) => {\n const v = e.target.value;\n setFilter(v);\n if (!v) onChange('', '');\n if (!open) setOpen(true);\n }}\n placeholder=\"Search capabilities...\"\n className=\"input font-mono text-sm w-full\"\n />\n\n {/* Selected tool description */}\n {!open && selectedTool?.description && (\n <p className=\"text-[10px] text-text-tertiary mt-1 italic\">{selectedTool.description}</p>\n )}\n\n {open && filtered.length > 0 && (\n <div className=\"absolute z-50 left-0 right-0 mt-1 max-h-64 overflow-y-auto rounded-md border border-surface-border bg-surface shadow-lg\">\n {filtered.map((t) => (\n <button\n key={`${t.serverId}:${t.name}`}\n type=\"button\"\n onClick={() => {\n onChange(t.serverId, t.name);\n setFilter(t.name);\n setOpen(false);\n }}\n className={`w-full text-left px-3 py-2 hover:bg-surface-hover transition-colors flex items-center gap-3 ${\n serverId === t.serverId && toolName === t.name ? 'bg-accent/5' : ''\n }`}\n >\n <span className=\"text-[11px] font-mono text-text-primary shrink-0\">{t.name}</span>\n <span className=\"inline-flex items-center gap-1 px-1.5 py-0.5 rounded text-[9px] font-medium shrink-0 bg-accent/10 text-accent\">\n <Server className=\"w-2 h-2\" strokeWidth={1.5} />\n {t.serverName}\n </span>\n {t.description && (\n <span className=\"text-[10px] text-text-quaternary truncate\">{t.description}</span>\n )}\n </button>\n ))}\n </div>\n )}\n\n {open && filtered.length === 0 && filter && (\n <div className=\"absolute z-50 left-0 right-0 mt-1 rounded-md border border-surface-border bg-surface shadow-lg px-3 py-4 text-center\">\n <p className=\"text-[11px] text-text-quaternary\">No capabilities match \"{filter}\"</p>\n </div>\n )}\n </div>\n );\n}\n","import { useWorkflowConfigs } from '../../../api/workflows';\nimport { useYamlWorkflows } from '../../../api/yaml-workflows';\nimport { CapabilityCombobox } from './CapabilityCombobox';\n\nconst LABELS: Record<string, string> = {\n durable: 'Workflow',\n pipeline: 'Pipeline',\n capability: 'Capability',\n mcp_query: 'MCP Query',\n};\n\nconst ALL_TYPES = ['durable', 'pipeline', 'capability', 'mcp_query'] as const;\n\nexport interface ReactionSelectorProps {\n reactionType: string;\n onReactionTypeChange: (type: string) => void;\n workflowType: string;\n onWorkflowTypeChange: (v: string) => void;\n pipelineId: string;\n onPipelineIdChange: (v: string) => void;\n serverId: string;\n toolName: string;\n onCapabilityChange: (serverId: string, toolName: string) => void;\n mcpPrompt?: string;\n onMcpPromptChange?: (v: string) => void;\n availableTypes?: typeof ALL_TYPES[number][];\n}\n\nexport function ReactionSelector({\n reactionType,\n onReactionTypeChange,\n workflowType,\n onWorkflowTypeChange,\n pipelineId,\n onPipelineIdChange,\n serverId,\n toolName,\n onCapabilityChange,\n mcpPrompt,\n onMcpPromptChange,\n availableTypes = [...ALL_TYPES],\n}: ReactionSelectorProps) {\n const { data: configs } = useWorkflowConfigs();\n const invocableWorkflows = (configs ?? []).filter((c: any) => c.invocable).map((c: any) => c.workflow_type as string);\n const { data: pipelineData } = useYamlWorkflows({ status: 'active' });\n const pipelines = (pipelineData?.workflows ?? []).map((w: any) => ({ id: w.id as string, name: (w.graph_topic || w.id) as string }));\n\n return (\n <div className=\"space-y-4\">\n {/* Type tabs */}\n <div className=\"flex gap-1\">\n {availableTypes.map((rt) => {\n const active = reactionType === rt;\n return (\n <button\n key={rt}\n type=\"button\"\n onClick={() => onReactionTypeChange(rt)}\n className={`px-3 py-1.5 text-[11px] font-medium rounded-md transition-colors ${\n active\n ? 'bg-accent/10 text-accent'\n : 'text-text-tertiary hover:text-text-primary hover:bg-surface-hover'\n }`}\n >\n {LABELS[rt]}\n </button>\n );\n })}\n </div>\n\n {/* Target selector per type */}\n {reactionType === 'durable' && (\n <div>\n <label className=\"label\">Workflow *</label>\n <select value={workflowType} onChange={(e) => onWorkflowTypeChange(e.target.value)} className=\"input\">\n <option value=\"\">Select workflow...</option>\n {invocableWorkflows.map((wt) => <option key={wt} value={wt}>{wt}</option>)}\n </select>\n </div>\n )}\n\n {reactionType === 'pipeline' && (\n <div>\n <label className=\"label\">Pipeline *</label>\n <select value={pipelineId} onChange={(e) => onPipelineIdChange(e.target.value)} className=\"input\">\n <option value=\"\">Select pipeline...</option>\n {pipelines.map((p) => <option key={p.id} value={p.id}>{p.name}</option>)}\n </select>\n </div>\n )}\n\n {reactionType === 'capability' && (\n <div>\n <label className=\"label\">Capability *</label>\n <CapabilityCombobox\n serverId={serverId}\n toolName={toolName}\n onChange={onCapabilityChange}\n />\n </div>\n )}\n\n {reactionType === 'mcp_query' && onMcpPromptChange && (\n <div>\n <label className=\"label\">Prompt *</label>\n <textarea\n value={mcpPrompt ?? ''}\n onChange={(e) => onMcpPromptChange(e.target.value)}\n placeholder=\"Analyze the error and suggest remediation...\"\n rows={3}\n className=\"input resize-none\"\n />\n </div>\n )}\n </div>\n );\n}\n","import { useState, useRef, useEffect, useMemo } from 'react';\nimport { Plus, Trash2, Radio, BookOpen } from 'lucide-react';\nimport { RunAsSelector } from '../../../components/common/form/RunAsSelector';\nimport { ReactionSelector } from '../../../components/common/form/ReactionSelector';\nimport { useTopics, type TopicCatalogEntry } from '../../../api/topics';\nimport { useCapabilities } from '../../../api/capabilities';\nimport type { AgentFormState, SubscriptionFormState } from './agent-form-types';\nimport { EMPTY_SUBSCRIPTION, sectionCls, hintCls, inputCls, jsonCls } from './agent-form-types';\n\nconst CATEGORY_COLORS: Record<string, string> = {\n task: 'bg-blue-400/15 text-blue-400',\n workflow: 'bg-accent/15 text-accent',\n escalation: 'bg-amber-400/15 text-amber-400',\n activity: 'bg-cyan-400/15 text-cyan-400',\n knowledge: 'bg-violet-400/15 text-violet-400',\n file: 'bg-orange-400/15 text-orange-400',\n agent: 'bg-emerald-400/15 text-emerald-400',\n app: 'bg-rose-400/15 text-rose-400',\n milestone: 'bg-violet-400/15 text-violet-400',\n};\n\ninterface Props {\n form: AgentFormState;\n set: (field: keyof AgentFormState, value: any) => void;\n}\n\nexport function SubscriptionsStep({ form, set }: Props) {\n const { data: topicsData } = useTopics({ limit: 200 });\n const { data: capData } = useCapabilities();\n const catalogTopics = topicsData?.topics ?? [];\n const allTools = useMemo(() => capData?.categories?.flatMap((c) => c.tools) ?? [], [capData]);\n const [selected, setSelected] = useState(0);\n\n const updateSub = (index: number, field: keyof SubscriptionFormState, value: any) => {\n const next = [...form.subscriptions];\n next[index] = { ...next[index], [field]: value };\n set('subscriptions', next);\n };\n\n const addSub = () => {\n set('subscriptions', [...form.subscriptions, { ...EMPTY_SUBSCRIPTION }]);\n setSelected(form.subscriptions.length);\n };\n\n const removeSub = (index: number) => {\n set('subscriptions', form.subscriptions.filter((_, i) => i !== index));\n if (selected >= form.subscriptions.length - 1) setSelected(Math.max(0, form.subscriptions.length - 2));\n };\n\n const subs = form.subscriptions;\n const sub = subs[selected];\n const isComplete = (s: SubscriptionFormState) => {\n if (!s.topic) return false;\n if (s.reaction_type === 'durable') return !!s.workflow_type;\n if (s.reaction_type === 'pipeline') return !!s.pipeline_id;\n if (s.reaction_type === 'mcp_query') return !!s.mcp_prompt;\n if (s.reaction_type === 'capability') return !!s.server_id && !!s.tool_name;\n return false;\n };\n\n // Find the selected topic's catalog entry for schema preview\n const selectedCatalogEntry = sub ? catalogTopics.find((t) => t.topic === sub.topic) : undefined;\n\n if (subs.length === 0) {\n return (\n <div className=\"max-w-xl\">\n <div className=\"border-l-2 border-accent/30 pl-3 py-1 flex items-start justify-between mb-8\">\n <p className=\"text-[12px] text-text-secondary italic leading-relaxed\">\n Optional. When a matching event is published, the automation runs the configured workflow with the event payload.\n </p>\n <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\"><BookOpen className=\"w-3 h-3\" strokeWidth={1.5} /></button>\n </div>\n <div className=\"flex flex-col items-center justify-center py-12 text-center\">\n <Radio className=\"w-8 h-8 text-text-quaternary/40 mb-3\" strokeWidth={1} />\n <p className=\"text-sm text-text-tertiary mb-2\">No event subscriptions yet</p>\n <p className=\"text-[11px] text-text-quaternary max-w-sm mb-6\">\n Each subscription listens for a topic pattern and runs a workflow when it matches.\n </p>\n <button onClick={addSub} className=\"flex items-center gap-2 text-xs text-accent hover:text-accent-hover transition-colors\">\n <Plus className=\"w-3.5 h-3.5\" /> Add first subscription\n </button>\n </div>\n </div>\n );\n }\n\n return (\n <div>\n <div className=\"border-l-2 border-accent/30 pl-3 py-1 flex items-start justify-between mb-6\">\n <p className=\"text-[12px] text-text-secondary italic leading-relaxed\">\n Optional. When a matching event is published, the automation runs the configured workflow with the event payload.\n </p>\n <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\"><BookOpen className=\"w-3 h-3\" strokeWidth={1.5} /></button>\n </div>\n\n <div className=\"flex gap-8\">\n {/* Sub-index */}\n <div className=\"w-52 shrink-0 space-y-0.5\">\n {subs.map((s, i) => (\n <div key={i} className={`group/sub flex items-center rounded-md transition-colors ${\n selected === i ? 'bg-accent/10 text-accent' : 'text-text-tertiary hover:text-text-primary hover:bg-surface-hover'\n }`}>\n <button onClick={() => setSelected(i)} className=\"flex-1 text-left px-3 py-2 min-w-0\">\n <div className=\"flex items-center gap-1.5\">\n <span className={`w-1.5 h-1.5 rounded-full shrink-0 ${isComplete(s) ? 'bg-emerald-400' : 'bg-zinc-500'}`} />\n <span className=\"text-[11px] font-mono truncate\">{s.topic || 'new subscription'}</span>\n </div>\n <span className=\"text-[9px] text-text-quaternary ml-3\">→ {s.workflow_type || s.tool_name || s.reaction_type}</span>\n </button>\n <button onClick={(e) => { e.stopPropagation(); if (confirm(`Remove subscription \"${s.topic || 'new'}\"?\\n\\nThis takes effect when you save.`)) removeSub(i); }} className=\"opacity-0 group-hover/sub:opacity-100 px-2 text-text-quaternary hover:text-red-400 transition-all\" title=\"Remove\">\n <Trash2 className=\"w-3 h-3\" />\n </button>\n </div>\n ))}\n <button onClick={addSub} className=\"w-full flex items-center gap-1.5 px-3 py-2 text-[11px] text-accent hover:text-accent-hover transition-colors\">\n <Plus className=\"w-3 h-3\" /> Add\n </button>\n </div>\n\n {/* Detail form */}\n {sub && (\n <div className=\"flex-1 min-w-0 space-y-12\">\n\n {/* When — topic combobox */}\n <div>\n <label className={sectionCls}>When this event fires</label>\n <TopicCombobox\n value={sub.topic}\n onChange={(v) => updateSub(selected, 'topic', v)}\n topics={catalogTopics}\n />\n\n {/* Schema preview when a catalog topic is selected */}\n {selectedCatalogEntry?.payload_schema && (\n <div className=\"mt-3 p-3 rounded-md bg-surface-sunken border border-surface-border\">\n <p className=\"text-[10px] text-text-quaternary mb-1 uppercase tracking-wider font-medium\">Payload Schema</p>\n <pre className=\"text-[11px] font-mono text-text-secondary whitespace-pre-wrap overflow-x-auto max-h-40\">\n {JSON.stringify(selectedCatalogEntry.payload_schema.properties ?? selectedCatalogEntry.payload_schema, null, 2)}\n </pre>\n {selectedCatalogEntry.description && (\n <p className=\"text-[10px] text-text-tertiary mt-2 italic\">{selectedCatalogEntry.description}</p>\n )}\n </div>\n )}\n </div>\n\n {/* Reaction selector — full width */}\n <div>\n <label className={sectionCls}>Run this reaction</label>\n <ReactionSelector\n reactionType={sub.reaction_type}\n onReactionTypeChange={(v) => updateSub(selected, 'reaction_type', v)}\n workflowType={sub.workflow_type}\n onWorkflowTypeChange={(v) => updateSub(selected, 'workflow_type', v)}\n pipelineId={sub.pipeline_id}\n onPipelineIdChange={(v) => updateSub(selected, 'pipeline_id', v)}\n serverId={sub.server_id}\n toolName={sub.tool_name}\n onCapabilityChange={(sid, tn) => {\n const next = [...form.subscriptions];\n const entry = { ...next[selected], server_id: sid, tool_name: tn };\n // Auto-generate mapping template from tool schema\n const tool = allTools.find((t) => t.serverId === sid && t.name === tn);\n const props = tool?.inputSchema?.properties as Record<string, any> | undefined;\n if (props && tn) {\n const template: Record<string, string> = {};\n for (const key of Object.keys(props)) {\n if (key.startsWith('_')) continue;\n template[key] = `{event.data.${key}}`;\n }\n entry.input_mapping = JSON.stringify(template, null, 2);\n }\n next[selected] = entry;\n set('subscriptions', next);\n }}\n mcpPrompt={sub.mcp_prompt}\n onMcpPromptChange={(v) => updateSub(selected, 'mcp_prompt', v)}\n\n />\n </div>\n\n {/* Identity + Filter — 2 col */}\n <div className=\"grid grid-cols-2 gap-6\">\n <div>\n <label className={sectionCls}>As identity</label>\n <RunAsSelector selected={sub.execute_as} onChange={(v) => updateSub(selected, 'execute_as', v)} />\n <p className={hintCls}>Identity used when invoking the workflow.</p>\n </div>\n <div>\n <label className={sectionCls}>But only if</label>\n <input type=\"text\" value={sub.filter} onChange={(e) => updateSub(selected, 'filter', e.target.value)} placeholder=\"No filter (all matching events)\" className={`${inputCls} font-mono text-xs`} />\n <p className={hintCls}>JSON filter against event.data, e.g. {`{\"status\": 422}`}</p>\n </div>\n </div>\n\n {/* Input Mapping full width */}\n <div>\n <label className={sectionCls}>With this data</label>\n {sub.reaction_type === 'capability' && sub.tool_name ? (\n <CapabilityMappingForm\n tool={allTools.find((t) => t.serverId === sub.server_id && t.name === sub.tool_name)}\n value={sub.input_mapping}\n onChange={(v) => updateSub(selected, 'input_mapping', v)}\n eventSchema={selectedCatalogEntry?.payload_schema}\n />\n ) : (\n <>\n <textarea value={sub.input_mapping} onChange={(e) => updateSub(selected, 'input_mapping', e.target.value)} rows={10} className={jsonCls} placeholder={'{\\n \"data\": {\\n \"orderId\": \"{event.data.orderId}\",\\n \"error\": \"{event.data.error}\"\\n }\\n}'} />\n <p className={hintCls}>Maps event fields to workflow input. {'{event.data.fieldName}'} resolves at runtime.</p>\n </>\n )}\n </div>\n </div>\n )}\n </div>\n </div>\n );\n}\n\n// ── Capability Mapping Form ─────────────────────────────────────────────────\n\nfunction CapabilityMappingForm({ tool, value, onChange, eventSchema }: {\n tool?: { name: string; description?: string; inputSchema: Record<string, any> };\n value: string;\n onChange: (v: string) => void;\n eventSchema?: Record<string, any>;\n}) {\n const [jsonMode, setJsonMode] = useState(false);\n const props = (tool?.inputSchema?.properties ?? {}) as Record<string, any>;\n const required = (tool?.inputSchema?.required as string[]) ?? [];\n const allFields = Object.entries(props).filter(([k]) => !k.startsWith('_'));\n\n // Required fields first (in declared required-array order), then optional alphabetically\n const fields = useMemo(() =>\n [...allFields].sort(([a], [b]) => {\n const ai = required.indexOf(a);\n const bi = required.indexOf(b);\n if (ai !== -1 && bi !== -1) return ai - bi;\n if (ai !== -1) return -1;\n if (bi !== -1) return 1;\n return a.localeCompare(b);\n }),\n [allFields, required]);\n\n // Build event field suggestions from the topic's payload schema\n const eventSuggestions = useMemo(() => {\n const suggestions: Array<{ value: string; label: string }> = [\n { value: '{event.type}', label: 'event type' },\n { value: '{event.source}', label: 'event source' },\n { value: '{event.timestamp}', label: 'ISO timestamp' },\n { value: '{event.workflowId}', label: 'workflow ID' },\n { value: '{event.workflowName}', label: 'workflow name' },\n ];\n const schemaProps = eventSchema?.properties as Record<string, any> | undefined;\n if (schemaProps) {\n for (const [key, def] of Object.entries(schemaProps)) {\n suggestions.push({\n value: `{event.data.${key}}`,\n label: (def as any).description || key,\n });\n }\n }\n return suggestions;\n }, [eventSchema]);\n\n const parsed = useMemo(() => {\n try { return JSON.parse(value) as Record<string, any>; }\n catch { return {} as Record<string, any>; }\n }, [value]);\n\n const updateField = (key: string, fieldValue: any) => {\n const next = { ...parsed, [key]: fieldValue };\n onChange(JSON.stringify(next, null, 2));\n };\n\n if (fields.length === 0 || jsonMode) {\n return (\n <div>\n {fields.length > 0 && (\n <div className=\"flex justify-end mb-1\">\n <button type=\"button\" onClick={() => setJsonMode(false)} className=\"text-[10px] text-accent hover:text-accent-hover transition-colors\">Form view</button>\n </div>\n )}\n <textarea value={value} onChange={(e) => onChange(e.target.value)} rows={8} className={jsonCls} placeholder={'{\\n \"domain\": \"{event.data.name}\",\\n \"key\": \"{event.data.path}\"\\n}'} />\n <p className={hintCls}>Maps event fields to capability inputs. {'{event.data.fieldName}'} resolves at runtime.</p>\n </div>\n );\n }\n\n return (\n <div>\n <div className=\"flex items-center justify-between mb-3\">\n <p className=\"text-[11px] text-text-tertiary\">\n Map each input to an event field or enter a static value.\n </p>\n <button type=\"button\" onClick={() => setJsonMode(true)} className=\"text-[10px] text-text-tertiary hover:text-accent transition-colors\">Raw JSON</button>\n </div>\n\n <div className=\"space-y-4\">\n {fields.map(([key, def]) => {\n const isReq = required.includes(key);\n const desc = (def as any).description;\n const fieldType = (def as any).type;\n const currentVal = typeof parsed[key] === 'string' ? parsed[key]\n : typeof parsed[key] === 'object' ? JSON.stringify(parsed[key])\n : parsed[key] != null ? String(parsed[key]) : '';\n\n return (\n <div key={key} className=\"bg-surface-sunken/30 rounded-md px-4 py-3\">\n <div className=\"flex items-baseline gap-2 mb-0.5\">\n <label className=\"text-[11px] font-semibold uppercase tracking-wider text-text-secondary\">\n {key.replace(/[_-]/g, ' ')}\n {isReq && <span className=\"text-status-error ml-0.5\">*</span>}\n </label>\n {fieldType && <span className=\"text-[9px] text-text-quaternary\">{fieldType}</span>}\n </div>\n {desc && <p className=\"text-[10px] text-text-quaternary mb-2\">{desc}</p>}\n <MappingFieldInput\n value={currentVal}\n onChange={(v) => updateField(key, v)}\n suggestions={eventSuggestions}\n fieldType={fieldType}\n placeholder={`{event.data.${key}}`}\n />\n </div>\n );\n })}\n </div>\n </div>\n );\n}\n\n/** Input with dropdown suggestions for event field references */\nfunction MappingFieldInput({ value, onChange, suggestions, fieldType, placeholder }: {\n value: string;\n onChange: (v: string) => void;\n suggestions: Array<{ value: string; label: string }>;\n fieldType?: string;\n placeholder: string;\n}) {\n const [open, setOpen] = useState(false);\n const [filter, setFilter] = useState('');\n const containerRef = useRef<HTMLDivElement>(null);\n\n useEffect(() => {\n if (!open) return;\n function handleClick(e: MouseEvent) {\n if (containerRef.current && !containerRef.current.contains(e.target as Node)) setOpen(false);\n }\n document.addEventListener('mousedown', handleClick);\n return () => document.removeEventListener('mousedown', handleClick);\n }, [open]);\n\n const filtered = suggestions.filter((s) =>\n s.value.toLowerCase().includes(filter.toLowerCase()) ||\n s.label.toLowerCase().includes(filter.toLowerCase()),\n );\n\n if (fieldType === 'object') {\n return (\n <textarea\n value={value}\n onChange={(e) => {\n try { onChange(JSON.parse(e.target.value)); }\n catch { onChange(e.target.value); }\n }}\n rows={3}\n className={`${jsonCls} text-xs`}\n placeholder={`{ \"source\": \"{event.source}\" }`}\n />\n );\n }\n\n return (\n <div ref={containerRef} className=\"relative\">\n <input\n type=\"text\"\n value={value}\n onFocus={() => { setOpen(true); setFilter(''); }}\n onChange={(e) => { onChange(e.target.value); setFilter(e.target.value); if (!open) setOpen(true); }}\n className=\"input font-mono text-xs w-full\"\n placeholder={placeholder}\n />\n {open && filtered.length > 0 && (\n <div className=\"absolute z-50 left-0 right-0 mt-1 max-h-48 overflow-y-auto rounded-md border border-surface-border bg-surface shadow-lg\">\n {filtered.map((s) => (\n <button\n key={s.value}\n type=\"button\"\n onClick={() => { onChange(s.value); setOpen(false); }}\n className={`w-full text-left px-3 py-1.5 hover:bg-surface-hover transition-colors flex items-center gap-3 ${value === s.value ? 'bg-accent/5' : ''}`}\n >\n <span className=\"text-[11px] font-mono text-accent shrink-0\">{s.value}</span>\n <span className=\"text-[10px] text-text-quaternary truncate\">{s.label}</span>\n </button>\n ))}\n </div>\n )}\n </div>\n );\n}\n\n// ── Topic Combobox ──────────────────────────────────────────────────────────\n\nfunction TopicCombobox({ value, onChange, topics }: {\n value: string;\n onChange: (v: string) => void;\n topics: TopicCatalogEntry[];\n}) {\n const [open, setOpen] = useState(false);\n const [filter, setFilter] = useState('');\n const inputRef = useRef<HTMLInputElement>(null);\n const containerRef = useRef<HTMLDivElement>(null);\n\n // Close on outside click\n useEffect(() => {\n function handleClick(e: MouseEvent) {\n if (containerRef.current && !containerRef.current.contains(e.target as Node)) {\n setOpen(false);\n }\n }\n if (open) document.addEventListener('mousedown', handleClick);\n return () => document.removeEventListener('mousedown', handleClick);\n }, [open]);\n\n const filterText = open ? filter : value;\n const filtered = topics.filter((t) =>\n t.topic.toLowerCase().includes((open ? filter : '').toLowerCase()) ||\n (t.description ?? '').toLowerCase().includes((open ? filter : '').toLowerCase()),\n );\n\n return (\n <div ref={containerRef} className=\"relative\">\n <input\n ref={inputRef}\n type=\"text\"\n value={filterText}\n onFocus={() => { setOpen(true); setFilter(value); }}\n onChange={(e) => {\n const v = e.target.value;\n setFilter(v);\n onChange(v);\n if (!open) setOpen(true);\n }}\n placeholder=\"workflow.failed or app.>\"\n className={`${inputCls} font-mono`}\n />\n\n {open && filtered.length > 0 && (\n <div className=\"absolute z-50 left-0 right-0 mt-1 max-h-64 overflow-y-auto rounded-md border border-surface-border bg-surface shadow-lg\">\n {filtered.map((t) => {\n const catCls = CATEGORY_COLORS[t.category] ?? 'bg-zinc-400/15 text-zinc-400';\n return (\n <button\n key={t.topic}\n type=\"button\"\n onClick={() => {\n onChange(t.topic);\n setFilter(t.topic);\n setOpen(false);\n }}\n className={`w-full text-left px-3 py-2 hover:bg-surface-hover transition-colors flex items-center gap-3 ${\n value === t.topic ? 'bg-accent/5' : ''\n }`}\n >\n <span className=\"text-[11px] font-mono text-text-primary shrink-0\">{t.topic}</span>\n <span className={`inline-flex items-center px-1.5 py-0.5 rounded text-[9px] font-medium shrink-0 ${catCls}`}>{t.category}</span>\n {t.description && (\n <span className=\"text-[10px] text-text-quaternary truncate\">{t.description}</span>\n )}\n </button>\n );\n })}\n </div>\n )}\n </div>\n );\n}\n","import { useState } from 'react';\nimport { Plus, Trash2, Clock, BookOpen } from 'lucide-react';\nimport { RunAsSelector } from '../../../components/common/form/RunAsSelector';\nimport { ReactionSelector } from '../../../components/common/form/ReactionSelector';\nimport type { AgentFormState, ScheduleFormState } from './agent-form-types';\nimport { EMPTY_SCHEDULE, sectionCls, hintCls, inputCls, jsonCls } from './agent-form-types';\n\nconst CRON_PRESETS = [\n '*/5 * * * *',\n '*/15 * * * *',\n '0 * * * *',\n '0 */4 * * *',\n '0 7 * * *',\n '0 9 * * 1-5',\n];\n\nfunction describeCron(expr: string): string {\n const m: Record<string, string> = {\n '* * * * *': 'Every minute',\n '*/5 * * * *': 'Every 5 min',\n '*/15 * * * *': 'Every 15 min',\n '0 * * * *': 'Hourly',\n '0 */4 * * *': 'Every 4 hours',\n '0 7 * * *': 'Daily 7 AM UTC',\n '0 9 * * 1-5': 'Weekdays 9 AM UTC',\n '0 0 * * 1': 'Weekly Monday',\n };\n return m[expr] || expr;\n}\n\ninterface Props {\n form: AgentFormState;\n set: (field: keyof AgentFormState, value: any) => void;\n}\n\nexport function ScheduleStep({ form, set }: Props) {\n const [selected, setSelected] = useState(0);\n\n const updateSched = (index: number, field: keyof ScheduleFormState, value: any) => {\n const next = [...form.schedules];\n next[index] = { ...next[index], [field]: value };\n set('schedules', next);\n };\n\n const addSched = () => {\n set('schedules', [...form.schedules, { ...EMPTY_SCHEDULE }]);\n setSelected(form.schedules.length);\n };\n\n const removeSched = (index: number) => {\n set('schedules', form.schedules.filter((_: any, i: number) => i !== index));\n if (selected >= form.schedules.length - 1) setSelected(Math.max(0, form.schedules.length - 2));\n };\n\n const scheds = form.schedules;\n const sched = scheds[selected];\n\n if (scheds.length === 0) {\n return (\n <div>\n <div className=\"border-l-2 border-accent/30 pl-3 py-1 mb-8 flex items-start justify-between\">\n <p className=\"text-[12px] text-text-secondary italic leading-relaxed\">\n Optional. Each schedule runs a workflow on a cron timer.\n </p>\n <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\"><BookOpen className=\"w-3 h-3\" strokeWidth={1.5} /></button>\n </div>\n <div className=\"flex flex-col items-center justify-center py-12 text-center\">\n <Clock className=\"w-8 h-8 text-text-quaternary/40 mb-3\" strokeWidth={1} />\n <p className=\"text-sm text-text-tertiary mb-2\">No schedules</p>\n <p className=\"text-[11px] text-text-quaternary max-w-sm mb-6\">\n Add a schedule to run a workflow on a recurring cron timer.\n </p>\n <button onClick={addSched} className=\"flex items-center gap-2 text-xs text-accent hover:text-accent-hover transition-colors\">\n <Plus className=\"w-3.5 h-3.5\" /> Add schedule\n </button>\n </div>\n </div>\n );\n }\n\n return (\n <div>\n <div className=\"border-l-2 border-accent/30 pl-3 py-1 mb-6 flex items-start justify-between\">\n <p className=\"text-[12px] text-text-secondary italic leading-relaxed\">\n Each schedule runs a workflow on a timer. An automation can have multiple schedules targeting different workflows.\n </p>\n <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\"><BookOpen className=\"w-3 h-3\" strokeWidth={1.5} /></button>\n </div>\n\n <div className=\"flex gap-8\">\n {/* Sub-index */}\n <div className=\"w-48 shrink-0 space-y-0.5\">\n {scheds.map((s, i) => (\n <div key={i} className={`group/sched flex items-center rounded-md transition-colors ${\n selected === i ? 'bg-accent/10 text-accent' : 'text-text-tertiary hover:text-text-primary hover:bg-surface-hover'\n }`}>\n <button onClick={() => setSelected(i)} className=\"flex-1 text-left px-3 py-2 min-w-0\">\n <span className=\"text-[11px] font-mono block\">{s.cron || 'new schedule'}</span>\n <span className=\"text-[9px] text-text-quaternary\">{(s.reaction_type === 'pipeline' ? s.pipeline_id : s.workflow_type) || 'no target'} · {describeCron(s.cron)}</span>\n </button>\n <button onClick={(e) => { e.stopPropagation(); if (confirm(`Remove schedule \"${s.cron || 'new'}\"?\\n\\nThis takes effect when you save.`)) removeSched(i); }} className=\"opacity-0 group-hover/sched:opacity-100 px-2 text-text-quaternary hover:text-red-400 transition-all\" title=\"Remove\">\n <Trash2 className=\"w-3 h-3\" />\n </button>\n </div>\n ))}\n <button onClick={addSched} className=\"w-full flex items-center gap-1.5 px-3 py-2 text-[11px] text-accent hover:text-accent-hover transition-colors\">\n <Plus className=\"w-3 h-3\" /> Add\n </button>\n </div>\n\n {/* Detail form */}\n {sched && (\n <div className=\"flex-1 min-w-0 space-y-12\">\n\n {/* Every — cron + presets */}\n <div>\n <label className={sectionCls}>Run every</label>\n <input type=\"text\" value={sched.cron} onChange={(e) => updateSched(selected, 'cron', e.target.value)} placeholder=\"0 * * * *\" className={`${inputCls} font-mono`} />\n {sched.cron && <p className=\"text-[11px] text-accent/80 mt-1\">{describeCron(sched.cron)}</p>}\n <div className=\"flex gap-3 mt-2 overflow-x-auto\">\n {CRON_PRESETS.map((p) => (\n <button key={p} type=\"button\" onClick={() => updateSched(selected, 'cron', p)}\n className={`text-[10px] font-mono whitespace-nowrap transition-colors ${sched.cron === p ? 'text-accent font-medium' : 'text-accent/50 hover:text-accent'}`}\n >{describeCron(p)}</button>\n ))}\n </div>\n </div>\n\n {/* Run this reaction */}\n <div>\n <label className={sectionCls}>Run this reaction</label>\n <ReactionSelector\n reactionType={sched.reaction_type}\n onReactionTypeChange={(v) => updateSched(selected, 'reaction_type', v)}\n workflowType={sched.workflow_type}\n onWorkflowTypeChange={(v) => updateSched(selected, 'workflow_type', v)}\n pipelineId={sched.pipeline_id}\n onPipelineIdChange={(v) => updateSched(selected, 'pipeline_id', v)}\n serverId={sched.server_id}\n toolName={sched.tool_name}\n onCapabilityChange={(sid, tn) => { updateSched(selected, 'server_id', sid); updateSched(selected, 'tool_name', tn); }}\n availableTypes={['durable', 'pipeline', 'capability']}\n\n />\n </div>\n\n {/* As identity */}\n <div>\n <label className={sectionCls}>As identity</label>\n <RunAsSelector selected={sched.execute_as} onChange={(v) => updateSched(selected, 'execute_as', v)} />\n <p className={hintCls}>Identity used when invoking.</p>\n </div>\n\n {/* Envelope */}\n <div>\n <label className={sectionCls}>With this data</label>\n <textarea value={sched.envelope} onChange={(e) => updateSched(selected, 'envelope', e.target.value)} rows={10} className={jsonCls} placeholder={'{\\n \"data\": { \"source\": \"cron\" }\\n}'} />\n <p className={hintCls}>Static payload passed to the workflow on each invocation.</p>\n </div>\n </div>\n )}\n </div>\n </div>\n );\n}\n","import { Bot, Compass, Brain, Radio, Clock } from 'lucide-react';\nimport { EventTopicPill } from '../../../components/common/display/EventTopicPill';\nimport { CronLabel } from '../../../components/common/display/CronLabel';\nimport { WorkflowPill } from '../../../components/common/display/WorkflowPill';\nimport type { AgentFormState } from './agent-form-types';\n\ninterface Props {\n form: AgentFormState;\n}\n\nfunction Section({ icon: Icon, color, title, children }: { icon: React.ElementType; color: string; title: string; children: React.ReactNode }) {\n return (\n <div className=\"mb-10\">\n <div className=\"flex items-center gap-2 mb-2 pb-1.5 border-b border-surface-border/40\">\n <Icon className={`w-3.5 h-3.5 ${color}`} strokeWidth={1.5} />\n <h3 className=\"text-xs font-semibold uppercase tracking-widest text-accent/80\">{title}</h3>\n </div>\n <div className=\"pl-5.5\">{children}</div>\n </div>\n );\n}\n\nfunction Field({ label, children }: { label: string; children: React.ReactNode }) {\n return (\n <div className=\"flex gap-3 py-0.5\">\n <span className=\"text-[10px] text-text-quaternary w-20 shrink-0\">{label}</span>\n <span className=\"text-xs text-text-primary\">{children}</span>\n </div>\n );\n}\n\nexport function ReviewStep({ form }: Props) {\n return (\n <div>\n <Section icon={Bot} color=\"text-accent\" title=\"Identity\">\n <Field label=\"Name\">{form.name || '—'}</Field>\n {form.description && <Field label=\"Description\">{form.description}</Field>}\n </Section>\n\n {(form.goals || form.rules) && (\n <Section icon={Compass} color=\"text-rose-400\" title=\"Motivation\">\n {form.goals && <Field label=\"Goals\">{form.goals}</Field>}\n {form.rules && <Field label=\"Rules\">{form.rules}</Field>}\n </Section>\n )}\n\n <Section icon={Brain} color=\"text-emerald-400\" title=\"Knowledge\">\n <Field label=\"Domain\">{form.knowledge_domain || 'None'}</Field>\n </Section>\n\n {/* Subscriptions + Schedule side by side */}\n <div className=\"grid grid-cols-2 gap-x-10\">\n <Section icon={Radio} color=\"text-cyan-400\" title={`Subscriptions (${form.subscriptions.length})`}>\n {form.subscriptions.length === 0 ? (\n <span className=\"text-[11px] text-text-quaternary\">None configured</span>\n ) : (\n <div className=\"divide-y divide-surface-border/30\">\n {form.subscriptions.map((sub, i) => (\n <div key={i} className=\"flex items-center py-1.5\">\n <div className=\"flex-1 min-w-0\"><EventTopicPill topic={sub.topic || 'unset'} /></div>\n <div className=\"flex items-center gap-1.5 shrink-0\"><span className=\"text-text-quaternary text-[10px]\">→</span>{sub.workflow_type ? <WorkflowPill type={sub.workflow_type} /> : <span className=\"text-[11px] text-text-quaternary\">{sub.reaction_type}</span>}</div>\n </div>\n ))}\n </div>\n )}\n </Section>\n\n <Section icon={Clock} color=\"text-amber-400\" title={`Schedules (${form.schedules.length})`}>\n {form.schedules.length === 0 ? (\n <span className=\"text-[11px] text-text-quaternary\">None configured</span>\n ) : (\n <div className=\"divide-y divide-surface-border/30\">\n {form.schedules.map((s, i) => (\n <div key={i} className=\"flex items-center py-1.5\">\n <div className=\"flex-1 min-w-0\"><CronLabel cron={s.cron} /></div>\n <div className=\"flex items-center gap-1.5 shrink-0\"><span className=\"text-text-quaternary text-[10px]\">→</span>{s.workflow_type ? <WorkflowPill type={s.workflow_type} /> : <span className=\"text-[11px] text-text-quaternary\">no workflow</span>}</div>\n </div>\n ))}\n </div>\n )}\n </Section>\n </div>\n\n <div className=\"border-l-2 border-emerald-400/30 pl-3 py-2 mt-6\">\n <p className=\"text-[11px] text-text-tertiary leading-relaxed\">\n After saving, subscriptions and schedules activate immediately. You can pause the automation anytime.\n </p>\n </div>\n </div>\n );\n}\n","import { useState, useEffect, useCallback } from 'react';\nimport { useParams, useNavigate, useSearchParams } from 'react-router-dom';\nimport {\n Bot, Brain, Radio, Clock, Check, Compass,\n} from 'lucide-react';\nimport { useAgent, useCreateAgent, useUpdateAgent } from '../../../api/agents';\nimport { useAgentSubscriptions, useCreateSubscription, useUpdateSubscription, useDeleteSubscription } from '../../../api/agent-subscriptions';\nimport { useSettings } from '../../../api/settings';\nimport { PageHeader } from '../../../components/common/layout/PageHeader';\nimport {\n EMPTY_FORM,\n agentToForm,\n formToAgentPayload,\n formToSubscriptionPayloads,\n} from './agent-form-types';\nimport type { AgentFormState } from './agent-form-types';\nimport { IdentityStep } from './IdentityStep';\nimport { MotivationStep } from './MotivationStep';\nimport { KnowledgeStep } from './KnowledgeStep';\nimport { SubscriptionsStep } from './SubscriptionsStep';\nimport { ScheduleStep } from './ScheduleStep';\nimport { ReviewStep } from './ReviewStep';\n\nconst SECTIONS = [\n { id: 1, label: 'Identity', icon: Bot },\n { id: 2, label: 'Motivation', icon: Compass },\n { id: 3, label: 'Knowledge', icon: Brain },\n { id: 4, label: 'Subscriptions', icon: Radio },\n { id: 5, label: 'Schedules', icon: Clock },\n { id: 6, label: 'Review', icon: Check },\n];\n\nexport function AgentConfigPage() {\n const { id } = useParams<{ id: string }>();\n const isNew = !id;\n const navigate = useNavigate();\n const { data: settings } = useSettings();\n const aiEnabled = !!settings?.ai?.enabled;\n const noun = aiEnabled ? 'Agent' : 'Automation';\n const { data: existing, isLoading } = useAgent(isNew ? null : id!);\n const { data: subsData } = useAgentSubscriptions(isNew ? null : id!);\n\n const createAgent = useCreateAgent();\n const updateAgent = useUpdateAgent();\n const createSub = useCreateSubscription();\n const updateSub = useUpdateSubscription();\n const deleteSub = useDeleteSubscription();\n\n const [form, setForm] = useState<AgentFormState>(EMPTY_FORM);\n const [initialized, setInitialized] = useState(false);\n const [saveError, setSaveError] = useState('');\n\n const [searchParams, setSearchParams] = useSearchParams();\n const section = parseInt(searchParams.get('step') || '1', 10);\n const setSection = useCallback((s: number) => {\n setSearchParams((prev) => {\n const next = new URLSearchParams(prev);\n next.set('step', String(s));\n return next;\n }, { replace: true });\n }, [setSearchParams]);\n\n useEffect(() => {\n if (initialized) return;\n if (isNew) { setForm(EMPTY_FORM); setInitialized(true); return; }\n if (existing && subsData) {\n setForm(agentToForm(existing, subsData.subscriptions ?? []));\n setInitialized(true);\n }\n }, [existing, subsData, isNew, initialized]);\n\n const set = (field: keyof AgentFormState, value: any) =>\n setForm((f) => ({ ...f, [field]: value }));\n\n const handleSave = async () => {\n setSaveError('');\n try {\n const payload = formToAgentPayload(form);\n let agentId = id;\n\n if (isNew) {\n const created = await createAgent.mutateAsync(payload as any);\n agentId = created.id;\n } else {\n await updateAgent.mutateAsync({ id: id!, ...payload } as any);\n }\n\n const subPayloads = formToSubscriptionPayloads(form);\n const existingSubs = subsData?.subscriptions ?? [];\n const existingIds = new Set(existingSubs.map((s) => s.id));\n\n for (const sub of subPayloads) {\n if (sub.id && existingIds.has(sub.id)) {\n const { id: subId, ...rest } = sub;\n await updateSub.mutateAsync({ agentId: agentId!, subId: subId!, ...rest } as any);\n existingIds.delete(subId!);\n } else {\n const { id: _ignored, ...rest } = sub;\n await createSub.mutateAsync({ agentId: agentId!, ...rest } as any);\n }\n }\n\n for (const removedId of existingIds) {\n await deleteSub.mutateAsync({ agentId: agentId!, subId: removedId });\n }\n\n navigate(`/agents/${agentId}`);\n } catch (err: any) {\n setSaveError(err.message);\n }\n };\n\n if (!isNew && isLoading) {\n return <div className=\"animate-pulse space-y-4\"><div className=\"h-8 bg-surface-sunken rounded w-48\" /><div className=\"h-60 bg-surface-sunken rounded\" /></div>;\n }\n\n const isPending = createAgent.isPending || updateAgent.isPending;\n\n return (\n <div>\n <PageHeader\n title={isNew ? `New ${noun}` : `${noun}: ${existing?.id ?? ''}`}\n docsHash=\"#docs:agents.md\"\n />\n\n <div className=\"flex gap-10\">\n {/* Section nav — sticky left sidebar */}\n <nav className=\"w-44 shrink-0 sticky top-0 self-start pt-2\">\n <div className=\"space-y-0.5\">\n {SECTIONS.map((s) => {\n const Icon = s.icon;\n const active = section === s.id;\n return (\n <button\n key={s.id}\n onClick={() => setSection(s.id)}\n className={`w-full flex items-center gap-2.5 px-3 py-2 rounded-md text-left transition-colors ${\n active\n ? 'bg-accent/10 text-accent'\n : 'text-text-tertiary hover:text-text-primary hover:bg-surface-hover'\n }`}\n >\n <Icon className=\"w-3.5 h-3.5 shrink-0\" strokeWidth={1.5} />\n <span className=\"text-xs font-medium\">{s.label}</span>\n </button>\n );\n })}\n </div>\n\n {/* Save / Cancel — always visible */}\n <div className=\"mt-8 pt-4 border-t border-surface-border space-y-2\">\n <button\n onClick={handleSave}\n disabled={!form.name.trim() || isPending}\n className=\"w-full btn-primary text-xs disabled:opacity-50\"\n >\n {isPending ? 'Saving...' : isNew ? `Create ${noun}` : 'Save'}\n </button>\n <button\n onClick={() => navigate(isNew ? '/agents' : `/agents/${id}`)}\n className=\"w-full btn-ghost text-xs\"\n >\n Cancel\n </button>\n </div>\n\n {saveError && <p className=\"text-xs text-status-error mt-3\">{saveError}</p>}\n </nav>\n\n {/* Section content */}\n <div className=\"flex-1 min-w-0 pt-2\">\n {section === 1 && <IdentityStep form={form} set={set} />}\n {section === 2 && <MotivationStep form={form} set={set} />}\n {section === 3 && <KnowledgeStep form={form} set={set} />}\n {section === 4 && <SubscriptionsStep form={form} set={set} />}\n {section === 5 && <ScheduleStep form={form} set={set} />}\n {section === 6 && <ReviewStep form={form} />}\n </div>\n </div>\n </div>\n );\n}\n"],"names":["EMPTY_FORM","EMPTY_SUBSCRIPTION","EMPTY_SCHEDULE","agentToForm","agent","subscriptions","schedules","_b","_a","s","_c","formToAgentPayload","form","behaviors","tryParseJson","formToSubscriptionPayloads","sectionCls","labelCls","hintCls","inputCls","jsonCls","IdentityStep","set","jsxDEV","BookOpen","e","MotivationStep","KnowledgeStep","domainData","useListDomains","domains","d","Brain","DateValue","CapabilityCombobox","serverId","toolName","onChange","data","useCapabilities","allTools","useMemo","c","open","setOpen","useState","filter","setFilter","inputRef","useRef","containerRef","useEffect","handleClick","displayValue","filterText","filtered","q","t","selectedTool","v","Server","LABELS","ALL_TYPES","ReactionSelector","reactionType","onReactionTypeChange","workflowType","onWorkflowTypeChange","pipelineId","onPipelineIdChange","onCapabilityChange","mcpPrompt","onMcpPromptChange","availableTypes","configs","useWorkflowConfigs","invocableWorkflows","pipelineData","useYamlWorkflows","pipelines","w","rt","active","wt","p","CATEGORY_COLORS","SubscriptionsStep","topicsData","useTopics","capData","catalogTopics","selected","setSelected","updateSub","index","field","value","next","addSub","removeSub","_","i","subs","sub","isComplete","selectedCatalogEntry","Radio","Plus","Trash2","TopicCombobox","sid","tn","entry","tool","props","template","key","RunAsSelector","CapabilityMappingForm","Fragment","eventSchema","jsonMode","setJsonMode","required","allFields","k","fields","b","ai","bi","eventSuggestions","suggestions","schemaProps","def","parsed","updateField","fieldValue","isReq","desc","fieldType","currentVal","MappingFieldInput","placeholder","topics","catCls","CRON_PRESETS","describeCron","expr","ScheduleStep","updateSched","addSched","removeSched","scheds","sched","Clock","Section","Icon","color","title","children","Field","label","ReviewStep","Bot","Compass","EventTopicPill","WorkflowPill","CronLabel","SECTIONS","Check","AgentConfigPage","id","useParams","isNew","navigate","useNavigate","settings","useSettings","noun","existing","isLoading","useAgent","subsData","useAgentSubscriptions","createAgent","useCreateAgent","updateAgent","useUpdateAgent","createSub","useCreateSubscription","useUpdateSubscription","deleteSub","useDeleteSubscription","setForm","initialized","setInitialized","saveError","setSaveError","searchParams","setSearchParams","useSearchParams","section","setSection","useCallback","prev","f","handleSave","payload","agentId","subPayloads","existingSubs","existingIds","subId","rest","_ignored","removedId","err","isPending","PageHeader"],"mappings":"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"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import{u as T,j as e,c as B,N as L}from"./index-4T7Z_gQ4.js";import{a as D}from"./vendor-query-DLp59M9_.js";import{a as R,b as W,c as z}from"./agents-B5wvILeV.js";import{u as F,C as y}from"./CronLabel-nycfAefc.js";import{i as I}from"./useEventHooks-C6c618cj.js";import{E as w}from"./EventTopicPill-CnHFBglc.js";import{W as v}from"./WorkflowPill-B5B3yGlh.js";import{a as K,B as M,J as U,P as G,aE as H,n as J,aF as O,R as k,a4 as X,d as Y,aG as Q}from"./vendor-icons-D8-ZINAH.js";import{e as Z,c as ee}from"./vendor-react-Co3Y8ikm.js";function ae(t){return new Date(t).toLocaleTimeString("en-US",{hour12:!1,hour:"2-digit",minute:"2-digit",second:"2-digit"})}function p({icon:t,color:n,children:l,actions:N}){return e.jsxDEV("div",{className:"flex items-center justify-between mb-3 pb-2 border-b border-surface-border",children:[e.jsxDEV("div",{className:"flex items-center gap-2",children:[e.jsxDEV(t,{className:`w-4 h-4 ${n}`,strokeWidth:1.5},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/AgentDetailPage.tsx",lineNumber:27,columnNumber:9},this),e.jsxDEV("h2",{className:"text-xs font-semibold uppercase tracking-widest text-accent/80",children:l},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/AgentDetailPage.tsx",lineNumber:28,columnNumber:9},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/agents/AgentDetailPage.tsx",lineNumber:26,columnNumber:7},this),N]},void 0,!0,{fileName:"/app/dashboard/src/pages/agents/AgentDetailPage.tsx",lineNumber:25,columnNumber:5},this)}function x({text:t}){return e.jsxDEV("p",{className:"text-[11px] text-text-quaternary py-2",children:t},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/AgentDetailPage.tsx",lineNumber:36,columnNumber:10},this)}let se=0;function te(t){const[n,l]=D.useState([]),[N,d]=D.useState(!1),a=D.useCallback(i=>{var g,b,u;if((g=i.type)!=null&&g.startsWith("mesh.")||t&&i.workflowName!==t)return;const c=i.activityName||((b=i.data)==null?void 0:b.domain)||((u=i.workflowId)==null?void 0:u.slice(0,16))||"";l(h=>[{id:++se,type:i.type,timestamp:i.timestamp,label:c},...h].slice(0,10)),d(!0),setTimeout(()=>d(!1),2e3)},[t]);return B(`${L}.>`,a),{events:n,pulse:N}}function ue(){var E,A,P,j,V;const{id:t}=Z(),n=ee(),{data:l}=T(),d=!!((E=l==null?void 0:l.ai)!=null&&E.enabled)?"Agent":"Automation",{data:a,isLoading:i}=R(t??null),{data:c}=F(t??null),g=W(),b=z(),{events:u,pulse:h}=te((a==null?void 0:a.workflow_type)??void 0);if(I(),i)return e.jsxDEV("div",{className:"animate-pulse space-y-4",children:[e.jsxDEV("div",{className:"h-8 bg-surface-sunken rounded w-48"},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/AgentDetailPage.tsx",lineNumber:75,columnNumber:53},this),e.jsxDEV("div",{className:"h-40 bg-surface-sunken rounded"},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/AgentDetailPage.tsx",lineNumber:75,columnNumber:107},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/agents/AgentDetailPage.tsx",lineNumber:75,columnNumber:12},this);if(!a)return e.jsxDEV("div",{className:"flex flex-col items-center justify-center py-20 text-center",children:[e.jsxDEV(K,{className:"w-12 h-12 text-text-quaternary mb-4",strokeWidth:1},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/AgentDetailPage.tsx",lineNumber:81,columnNumber:9},this),e.jsxDEV("h2",{className:"text-lg font-medium text-text-primary mb-2",children:[d," not found"]},void 0,!0,{fileName:"/app/dashboard/src/pages/agents/AgentDetailPage.tsx",lineNumber:82,columnNumber:9},this),e.jsxDEV("button",{onClick:()=>n("/agents"),className:"text-sm text-accent hover:text-accent-hover transition-colors",children:["Back to ",d.toLowerCase(),"s"]},void 0,!0,{fileName:"/app/dashboard/src/pages/agents/AgentDetailPage.tsx",lineNumber:83,columnNumber:9},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/agents/AgentDetailPage.tsx",lineNumber:80,columnNumber:7},this);const C=a.status==="active"?"bg-emerald-400":a.status==="paused"?"bg-amber-400":a.status==="error"?"bg-red-400":"bg-zinc-500",r=(c==null?void 0:c.subscriptions)??[],S=a.status==="active"?"Active":a.status==="paused"?"Paused":a.status==="error"?"Error":"Inactive",o=(A=a.behaviors)==null?void 0:A.schedules,f=(P=a.behaviors)==null?void 0:P.cron,m=(o==null?void 0:o.length)||(f?1:0),_=()=>{const s=[`Pause "${a.id}"?`,"","This will:",r.length>0?`• Stop ${r.length} event subscription${r.length!==1?"s":""}`:null,m>0?`• Stop ${m} schedule${m!==1?"s":""}`:null,"","Knowledge and workflow history are preserved. You can reactivate anytime."].filter(Boolean).join(`
|
|
2
|
+
`);confirm(s)&&g.mutate({id:a.id,status:"paused"})},$=()=>{const s=[`Delete "${a.id}"?`,"","This permanently removes:","• The agent configuration",r.length>0?`• ${r.length} event subscription${r.length!==1?"s":""}`:null,m>0?`• ${m} schedule${m!==1?"s":""}`:null,"","Knowledge entries and workflow history are preserved."].filter(Boolean).join(`
|
|
3
|
+
`);confirm(s)&&b.mutate(a.id,{onSuccess:()=>n("/agents")})};return e.jsxDEV("div",{children:[e.jsxDEV("div",{className:"flex items-start justify-between mb-3",children:[e.jsxDEV("div",{className:"flex items-center gap-2",children:[e.jsxDEV("h1",{className:"text-3xl font-light text-text-primary",children:[d,": ",a.id]},void 0,!0,{fileName:"/app/dashboard/src/pages/agents/AgentDetailPage.tsx",lineNumber:127,columnNumber:11},this),e.jsxDEV("button",{onClick:()=>{window.location.hash="#docs:agents.md"},className:"text-text-quaternary hover:text-accent transition-colors mt-1",title:"Docs",children:e.jsxDEV(M,{className:"w-4 h-4",strokeWidth:1.5},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/AgentDetailPage.tsx",lineNumber:129,columnNumber:13},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/AgentDetailPage.tsx",lineNumber:128,columnNumber:11},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/agents/AgentDetailPage.tsx",lineNumber:126,columnNumber:9},this),e.jsxDEV("div",{className:"flex items-center gap-3",children:[e.jsxDEV("div",{className:"flex items-center gap-1.5 mr-2",children:[e.jsxDEV("span",{className:`w-2 h-2 rounded-full ${C}`},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/AgentDetailPage.tsx",lineNumber:134,columnNumber:13},this),e.jsxDEV("span",{className:"text-xs text-text-secondary capitalize",children:S},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/AgentDetailPage.tsx",lineNumber:135,columnNumber:13},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/agents/AgentDetailPage.tsx",lineNumber:133,columnNumber:11},this),e.jsxDEV("button",{onClick:()=>n(`/agents/${a.id}/edit`),className:"flex items-center gap-1.5 px-4 py-1.5 text-xs rounded-md bg-accent text-text-inverse hover:bg-accent-hover transition-colors",children:[e.jsxDEV(U,{className:"w-3 h-3"},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/AgentDetailPage.tsx",lineNumber:138,columnNumber:13},this)," Edit"]},void 0,!0,{fileName:"/app/dashboard/src/pages/agents/AgentDetailPage.tsx",lineNumber:137,columnNumber:11},this),a.status!=="active"&&e.jsxDEV("button",{onClick:()=>g.mutate({id:a.id,status:"active"}),className:"flex items-center gap-1.5 px-3 py-1.5 text-xs rounded-md text-emerald-400 hover:bg-emerald-600/10 transition-colors",children:[e.jsxDEV(G,{className:"w-3 h-3"},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/AgentDetailPage.tsx",lineNumber:142,columnNumber:15},this)," Activate"]},void 0,!0,{fileName:"/app/dashboard/src/pages/agents/AgentDetailPage.tsx",lineNumber:141,columnNumber:13},this),a.status==="active"&&e.jsxDEV("button",{onClick:_,className:"flex items-center gap-1.5 px-3 py-1.5 text-xs rounded-md text-text-tertiary hover:text-text-primary hover:bg-surface-hover transition-colors",children:[e.jsxDEV(H,{className:"w-3 h-3"},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/AgentDetailPage.tsx",lineNumber:147,columnNumber:15},this)," Pause"]},void 0,!0,{fileName:"/app/dashboard/src/pages/agents/AgentDetailPage.tsx",lineNumber:146,columnNumber:13},this),e.jsxDEV("button",{onClick:$,className:"flex items-center gap-1.5 px-3 py-1.5 text-xs rounded-md text-red-400/60 hover:text-red-400 hover:bg-red-600/10 transition-colors",children:[e.jsxDEV(J,{className:"w-3 h-3"},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/AgentDetailPage.tsx",lineNumber:151,columnNumber:13},this)," Delete"]},void 0,!0,{fileName:"/app/dashboard/src/pages/agents/AgentDetailPage.tsx",lineNumber:150,columnNumber:11},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/agents/AgentDetailPage.tsx",lineNumber:132,columnNumber:9},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/agents/AgentDetailPage.tsx",lineNumber:125,columnNumber:7},this),a.description&&e.jsxDEV("div",{className:"border-l-2 border-accent/30 pl-4 py-1 mb-10",children:e.jsxDEV("p",{className:"text-[13px] text-text-secondary italic leading-relaxed",children:a.description},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/AgentDetailPage.tsx",lineNumber:159,columnNumber:11},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/AgentDetailPage.tsx",lineNumber:158,columnNumber:9},this),(a.goals||a.rules)&&e.jsxDEV("div",{className:"mb-10",children:[e.jsxDEV(p,{icon:O,color:"text-rose-400",children:"Motivation"},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/AgentDetailPage.tsx",lineNumber:166,columnNumber:11},this),e.jsxDEV("div",{className:"grid grid-cols-2 gap-x-14 bg-surface-sunken/20 rounded-lg px-5 py-4",children:[a.goals&&e.jsxDEV("div",{children:[e.jsxDEV("p",{className:"text-[9px] text-text-quaternary uppercase tracking-widest mb-1.5",children:"Goals"},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/AgentDetailPage.tsx",lineNumber:170,columnNumber:17},this),e.jsxDEV("p",{className:"text-[13px] text-text-primary leading-relaxed",children:a.goals},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/AgentDetailPage.tsx",lineNumber:171,columnNumber:17},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/agents/AgentDetailPage.tsx",lineNumber:169,columnNumber:15},this),a.rules&&e.jsxDEV("div",{children:[e.jsxDEV("p",{className:"text-[9px] text-text-quaternary uppercase tracking-widest mb-1.5",children:"Rules"},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/AgentDetailPage.tsx",lineNumber:176,columnNumber:17},this),e.jsxDEV("p",{className:"text-[13px] text-text-primary leading-relaxed",children:a.rules},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/AgentDetailPage.tsx",lineNumber:177,columnNumber:17},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/agents/AgentDetailPage.tsx",lineNumber:175,columnNumber:15},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/agents/AgentDetailPage.tsx",lineNumber:167,columnNumber:11},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/agents/AgentDetailPage.tsx",lineNumber:165,columnNumber:9},this),e.jsxDEV("div",{className:"grid grid-cols-1 lg:grid-cols-3 gap-x-14 gap-y-10",children:[e.jsxDEV("div",{children:[e.jsxDEV(p,{icon:k,color:"text-cyan-400",children:["Subscriptions (",r.length,")"]},void 0,!0,{fileName:"/app/dashboard/src/pages/agents/AgentDetailPage.tsx",lineNumber:189,columnNumber:11},this),r.length===0?e.jsxDEV(x,{text:"No event subscriptions"},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/AgentDetailPage.tsx",lineNumber:193,columnNumber:13},this):e.jsxDEV("div",{className:"divide-y divide-surface-border/30",children:r.map(s=>e.jsxDEV("div",{className:"flex items-center py-2",children:[e.jsxDEV("div",{className:"flex-1 min-w-0",children:e.jsxDEV(w,{topic:s.topic},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/AgentDetailPage.tsx",lineNumber:198,columnNumber:51},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/AgentDetailPage.tsx",lineNumber:198,columnNumber:19},this),e.jsxDEV("div",{className:"flex items-center gap-1.5 shrink-0",children:[e.jsxDEV("span",{className:"text-text-quaternary text-[10px]",children:"→"},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/AgentDetailPage.tsx",lineNumber:200,columnNumber:21},this),e.jsxDEV(v,{type:s.reaction_type==="capability"?s.tool_name:s.workflow_type||s.reaction_type,variant:s.reaction_type==="pipeline"?"pipeline":s.reaction_type==="capability"?"capability":"durable"},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/AgentDetailPage.tsx",lineNumber:201,columnNumber:21},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/agents/AgentDetailPage.tsx",lineNumber:199,columnNumber:19},this)]},s.id,!0,{fileName:"/app/dashboard/src/pages/agents/AgentDetailPage.tsx",lineNumber:197,columnNumber:17},this))},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/AgentDetailPage.tsx",lineNumber:195,columnNumber:13},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/agents/AgentDetailPage.tsx",lineNumber:188,columnNumber:9},this),e.jsxDEV("div",{children:[e.jsxDEV(p,{icon:X,color:"text-amber-400",children:["Schedules (",m,")"]},void 0,!0,{fileName:"/app/dashboard/src/pages/agents/AgentDetailPage.tsx",lineNumber:214,columnNumber:11},this),o!=null&&o.length?e.jsxDEV("div",{className:"divide-y divide-surface-border/30",children:o.map((s,q)=>e.jsxDEV("div",{className:"flex items-center py-2",children:[e.jsxDEV("div",{className:"flex-1 min-w-0",children:e.jsxDEV(y,{cron:s.cron},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/AgentDetailPage.tsx",lineNumber:219,columnNumber:51},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/AgentDetailPage.tsx",lineNumber:219,columnNumber:19},this),e.jsxDEV("div",{className:"flex items-center gap-1.5 shrink-0",children:[e.jsxDEV("span",{className:"text-text-quaternary text-[10px]",children:"→"},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/AgentDetailPage.tsx",lineNumber:220,columnNumber:71},this),e.jsxDEV(v,{type:s.workflow_type||"workflow"},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/AgentDetailPage.tsx",lineNumber:220,columnNumber:130},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/agents/AgentDetailPage.tsx",lineNumber:220,columnNumber:19},this)]},q,!0,{fileName:"/app/dashboard/src/pages/agents/AgentDetailPage.tsx",lineNumber:218,columnNumber:17},this))},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/AgentDetailPage.tsx",lineNumber:216,columnNumber:13},this):f?e.jsxDEV("div",{className:"flex items-center py-1",children:[e.jsxDEV("div",{className:"flex-1 min-w-0",children:e.jsxDEV(y,{cron:f},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/AgentDetailPage.tsx",lineNumber:226,columnNumber:47},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/AgentDetailPage.tsx",lineNumber:226,columnNumber:15},this),a.workflow_type&&e.jsxDEV("div",{className:"flex items-center gap-1.5 shrink-0",children:[e.jsxDEV("span",{className:"text-text-quaternary text-[10px]",children:"→"},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/AgentDetailPage.tsx",lineNumber:227,columnNumber:91},this),e.jsxDEV(v,{type:a.workflow_type},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/AgentDetailPage.tsx",lineNumber:227,columnNumber:150},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/agents/AgentDetailPage.tsx",lineNumber:227,columnNumber:39},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/agents/AgentDetailPage.tsx",lineNumber:225,columnNumber:13},this):e.jsxDEV(x,{text:"No schedules configured"},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/AgentDetailPage.tsx",lineNumber:230,columnNumber:13},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/agents/AgentDetailPage.tsx",lineNumber:213,columnNumber:9},this),e.jsxDEV("div",{className:"space-y-10",children:[e.jsxDEV("div",{children:[e.jsxDEV(p,{icon:Y,color:"text-emerald-400",children:"Knowledge"},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/AgentDetailPage.tsx",lineNumber:237,columnNumber:13},this),a.knowledge_domain?e.jsxDEV("button",{onClick:()=>n(`/knowledge?domain=${a.knowledge_domain}`),className:"group text-left flex items-center gap-3",children:[e.jsxDEV("span",{className:"text-sm font-mono text-text-primary group-hover:text-accent transition-colors",children:a.knowledge_domain},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/AgentDetailPage.tsx",lineNumber:240,columnNumber:17},this),e.jsxDEV("span",{className:"text-[10px] text-text-quaternary",children:[((V=(j=a.stats)==null?void 0:j.knowledge_count)==null?void 0:V.toLocaleString())??0," entries"]},void 0,!0,{fileName:"/app/dashboard/src/pages/agents/AgentDetailPage.tsx",lineNumber:241,columnNumber:17},this),e.jsxDEV(Q,{className:"w-3 h-3 text-accent opacity-0 group-hover:opacity-100 transition-opacity"},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/AgentDetailPage.tsx",lineNumber:242,columnNumber:17},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/agents/AgentDetailPage.tsx",lineNumber:239,columnNumber:15},this):e.jsxDEV(x,{text:"No knowledge domain"},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/AgentDetailPage.tsx",lineNumber:245,columnNumber:15},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/agents/AgentDetailPage.tsx",lineNumber:236,columnNumber:11},this),e.jsxDEV("div",{children:[e.jsxDEV(p,{icon:k,color:"text-cyan-400",actions:e.jsxDEV("div",{className:"flex items-center gap-1.5",children:[e.jsxDEV("span",{className:`w-1.5 h-1.5 rounded-full transition-colors duration-500 ${h?"bg-emerald-400":"bg-zinc-600"}`},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/AgentDetailPage.tsx",lineNumber:253,columnNumber:19},this),e.jsxDEV("span",{className:"text-[10px] text-text-quaternary",children:"live"},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/AgentDetailPage.tsx",lineNumber:254,columnNumber:19},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/agents/AgentDetailPage.tsx",lineNumber:252,columnNumber:17},this),children:"Activity"},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/AgentDetailPage.tsx",lineNumber:250,columnNumber:13},this),u.length===0?e.jsxDEV(x,{text:"Events appear here as the agent runs"},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/AgentDetailPage.tsx",lineNumber:261,columnNumber:15},this):e.jsxDEV("div",{className:"space-y-1.5",children:u.map(s=>e.jsxDEV("div",{children:[e.jsxDEV("div",{className:"flex items-center justify-between mb-0.5",children:[e.jsxDEV("span",{className:"text-[11px] text-text-primary font-mono truncate flex-1",children:s.label||"—"},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/AgentDetailPage.tsx",lineNumber:267,columnNumber:23},this),e.jsxDEV("span",{className:"text-[10px] text-text-quaternary shrink-0 ml-2",children:ae(s.timestamp)},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/AgentDetailPage.tsx",lineNumber:268,columnNumber:23},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/agents/AgentDetailPage.tsx",lineNumber:266,columnNumber:21},this),e.jsxDEV(w,{topic:s.type},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/AgentDetailPage.tsx",lineNumber:270,columnNumber:21},this)]},s.id,!0,{fileName:"/app/dashboard/src/pages/agents/AgentDetailPage.tsx",lineNumber:265,columnNumber:19},this))},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/AgentDetailPage.tsx",lineNumber:263,columnNumber:15},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/agents/AgentDetailPage.tsx",lineNumber:249,columnNumber:11},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/agents/AgentDetailPage.tsx",lineNumber:235,columnNumber:9},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/agents/AgentDetailPage.tsx",lineNumber:185,columnNumber:7},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/agents/AgentDetailPage.tsx",lineNumber:123,columnNumber:5},this)}export{ue as AgentDetailPage};
|
|
4
|
+
//# sourceMappingURL=AgentDetailPage-Cm2KFR4O.js.map
|