@hotmeshio/long-tail 0.3.2 → 0.4.0
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/agents.d.ts +1 -1
- package/build/api/agents.js +1 -1
- package/build/api/controlplane.d.ts +33 -0
- package/build/api/controlplane.js +46 -0
- package/build/bin/ltc.js +16 -0
- package/build/lib/cli/commands/streams.d.ts +20 -0
- package/build/lib/cli/commands/streams.js +134 -0
- package/build/lib/db/schemas/003_agents.sql +1 -2
- package/build/lib/db/schemas/004_agent_subscriptions.sql +1 -1
- package/build/routes/agents.js +3 -3
- package/build/routes/controlplane.js +28 -0
- package/build/sdk/index.d.ts +1 -0
- package/build/sdk/index.js +1 -0
- package/build/services/agent/index.d.ts +2 -3
- package/build/services/agent/index.js +5 -12
- package/build/services/agent/sql.d.ts +3 -4
- package/build/services/agent/sql.js +16 -20
- package/build/services/agent/subscription-sql.d.ts +1 -1
- package/build/services/agent/subscription-sql.js +1 -1
- package/build/services/agent/trigger-registry.js +1 -1
- package/build/services/controlplane/index.d.ts +9 -1
- package/build/services/controlplane/index.js +39 -0
- package/build/services/controlplane/stream-messages-sql.d.ts +21 -0
- package/build/services/controlplane/stream-messages-sql.js +108 -0
- package/build/services/controlplane/types.d.ts +44 -0
- package/build/services/cron/index.js +5 -5
- package/build/services/export/post-process.js +14 -6
- package/build/services/mcp-runs/execution-builder.js +9 -4
- package/build/services/topics/index.js +1 -4
- package/build/services/topics/sql.d.ts +2 -2
- package/build/services/topics/sql.js +9 -2
- package/build/services/topics/system-topics.js +2 -3
- package/build/start/workers.js +11 -14
- package/build/tsconfig.tsbuildinfo +1 -1
- package/build/types/agent.d.ts +1 -1
- package/dashboard/dist/assets/AdminDashboard-CR0FtTE6.js +2 -0
- package/dashboard/dist/assets/{AdminDashboard-CbeSejVX.js.map → AdminDashboard-CR0FtTE6.js.map} +1 -1
- package/dashboard/dist/assets/AgentConfigPage-BVypgq9m.js +13 -0
- package/dashboard/dist/assets/AgentConfigPage-BVypgq9m.js.map +1 -0
- package/dashboard/dist/assets/AgentDetailPage-D64ath8c.js +4 -0
- package/dashboard/dist/assets/AgentDetailPage-D64ath8c.js.map +1 -0
- package/dashboard/dist/assets/AgentsPage-j-zblMNR.js +2 -0
- package/dashboard/dist/assets/AgentsPage-j-zblMNR.js.map +1 -0
- package/dashboard/dist/assets/AvailableEscalationsPage-DmUid1h0.js +2 -0
- package/dashboard/dist/assets/{AvailableEscalationsPage-DdrzePy4.js.map → AvailableEscalationsPage-DmUid1h0.js.map} +1 -1
- package/dashboard/dist/assets/BotPicker-DCScT8BN.js +2 -0
- package/dashboard/dist/assets/{BotPicker-kKBifD1w.js.map → BotPicker-DCScT8BN.js.map} +1 -1
- package/dashboard/dist/assets/CapabilitiesPage-g5iUvHRL.js +2 -0
- package/dashboard/dist/assets/{CapabilitiesPage-Ch5qY0I7.js.map → CapabilitiesPage-g5iUvHRL.js.map} +1 -1
- package/dashboard/dist/assets/CollapsibleSection-Dj1YOsVG.js +2 -0
- package/dashboard/dist/assets/{CollapsibleSection-kYTBL7dT.js.map → CollapsibleSection-Dj1YOsVG.js.map} +1 -1
- package/dashboard/dist/assets/ConfirmDeleteModal-dOxidrSR.js +2 -0
- package/dashboard/dist/assets/{ConfirmDeleteModal-CcaAapMl.js.map → ConfirmDeleteModal-dOxidrSR.js.map} +1 -1
- package/dashboard/dist/assets/CopyableId-DmLF-RqZ.js +2 -0
- package/dashboard/dist/assets/{CopyableId-B4CL12pv.js.map → CopyableId-DmLF-RqZ.js.map} +1 -1
- package/dashboard/dist/assets/CredentialsPage-Dvb4QelY.js +2 -0
- package/dashboard/dist/assets/{CredentialsPage-D1VAlwid.js.map → CredentialsPage-Dvb4QelY.js.map} +1 -1
- package/dashboard/dist/assets/CronLabel-sk1BkcJd.js +2 -0
- package/dashboard/dist/assets/{CronLabel-DRmO5rH0.js.map → CronLabel-sk1BkcJd.js.map} +1 -1
- package/dashboard/dist/assets/CustomDurationPicker-C0MV2Q06.js +2 -0
- package/dashboard/dist/assets/{CustomDurationPicker-C06QDDir.js.map → CustomDurationPicker-C0MV2Q06.js.map} +1 -1
- package/dashboard/dist/assets/DataTable-D9yuBv0w.js +2 -0
- package/dashboard/dist/assets/{DataTable-J5R6mepB.js.map → DataTable-D9yuBv0w.js.map} +1 -1
- package/dashboard/dist/assets/DropZone-DN8uwUtf.js +2 -0
- package/dashboard/dist/assets/{DropZone-DwNj3GiG.js.map → DropZone-DN8uwUtf.js.map} +1 -1
- package/dashboard/dist/assets/ElapsedCell-CFXhhKKc.js +2 -0
- package/dashboard/dist/assets/{ElapsedCell-ChyMzl9n.js.map → ElapsedCell-CFXhhKKc.js.map} +1 -1
- package/dashboard/dist/assets/EmptyState-BcsfPq9T.js +2 -0
- package/dashboard/dist/assets/{EmptyState-BXGvOADa.js.map → EmptyState-BcsfPq9T.js.map} +1 -1
- package/dashboard/dist/assets/EscalationsOverview-BEuUFGwC.js +2 -0
- package/dashboard/dist/assets/{EscalationsOverview-DM6zmE4g.js.map → EscalationsOverview-BEuUFGwC.js.map} +1 -1
- package/dashboard/dist/assets/EventTable-DcwVWOKb.js +2 -0
- package/dashboard/dist/assets/{EventTable-CvJ98E8s.js.map → EventTable-DcwVWOKb.js.map} +1 -1
- package/dashboard/dist/assets/EventTopicPill-CWCP1v1O.js +2 -0
- package/dashboard/dist/assets/{EventTopicPill-CB_rIGlL.js.map → EventTopicPill-CWCP1v1O.js.map} +1 -1
- package/dashboard/dist/assets/FilterBar-Ck4K4rzu.js +2 -0
- package/dashboard/dist/assets/{FilterBar-Bdssa-Xn.js.map → FilterBar-Ck4K4rzu.js.map} +1 -1
- package/dashboard/dist/assets/HomePage-BH-F5ws9.js +2 -0
- package/dashboard/dist/assets/HomePage-BH-F5ws9.js.map +1 -0
- package/dashboard/dist/assets/ListToolbar-CUxJlz__.js +2 -0
- package/dashboard/dist/assets/{ListToolbar-jy8NL6ll.js.map → ListToolbar-CUxJlz__.js.map} +1 -1
- package/dashboard/dist/assets/McpOverview-O8XrOzy0.js +2 -0
- package/dashboard/dist/assets/{McpOverview-xkaKuHbX.js.map → McpOverview-O8XrOzy0.js.map} +1 -1
- package/dashboard/dist/assets/McpQueryDetailPage-DhiR0Xrx.js +5 -0
- package/dashboard/dist/assets/{McpQueryDetailPage-D5ICn6cR.js.map → McpQueryDetailPage-DhiR0Xrx.js.map} +1 -1
- package/dashboard/dist/assets/McpQueryPage-Czot0nfl.js +2 -0
- package/dashboard/dist/assets/{McpQueryPage-C46fzfm5.js.map → McpQueryPage-Czot0nfl.js.map} +1 -1
- package/dashboard/dist/assets/McpRunDetailPage-B1kNnD_t.js +2 -0
- package/dashboard/dist/assets/{McpRunDetailPage-Znsl4Yc-.js.map → McpRunDetailPage-B1kNnD_t.js.map} +1 -1
- package/dashboard/dist/assets/McpRunsPage-QUY3pWp9.js +2 -0
- package/dashboard/dist/assets/McpRunsPage-QUY3pWp9.js.map +1 -0
- package/dashboard/dist/assets/Modal-DEODGeqx.js +2 -0
- package/dashboard/dist/assets/{Modal-C6k6_5KB.js.map → Modal-DEODGeqx.js.map} +1 -1
- package/dashboard/dist/assets/OperatorDashboard-BG1Q9qZk.js +2 -0
- package/dashboard/dist/assets/{OperatorDashboard-e5N3_dVl.js.map → OperatorDashboard-BG1Q9qZk.js.map} +1 -1
- package/dashboard/dist/assets/PageHeader-DlzOOM4Y.js +2 -0
- package/dashboard/dist/assets/{PageHeader-COcgWWf-.js.map → PageHeader-DlzOOM4Y.js.map} +1 -1
- package/dashboard/dist/assets/PageHeaderWithStats-C5cZ3IOO.js +2 -0
- package/dashboard/dist/assets/{PageHeaderWithStats-C0PCY3aJ.js.map → PageHeaderWithStats-C5cZ3IOO.js.map} +1 -1
- package/dashboard/dist/assets/PriorityBadge-DfQY9St9.js +2 -0
- package/dashboard/dist/assets/{PriorityBadge-BQCsYMpM.js.map → PriorityBadge-DfQY9St9.js.map} +1 -1
- package/dashboard/dist/assets/ProcessDetailPage-DS1AwTso.js +2 -0
- package/dashboard/dist/assets/{ProcessDetailPage-C03LOgI0.js.map → ProcessDetailPage-DS1AwTso.js.map} +1 -1
- package/dashboard/dist/assets/ProcessesListPage-CAmVcn1P.js +2 -0
- package/dashboard/dist/assets/{ProcessesListPage-iyPsmlhm.js.map → ProcessesListPage-CAmVcn1P.js.map} +1 -1
- package/dashboard/dist/assets/RolePill-BZaUpkHg.js +2 -0
- package/dashboard/dist/assets/{RolePill-CHwys1f9.js.map → RolePill-BZaUpkHg.js.map} +1 -1
- package/dashboard/dist/assets/RolesPage-CFdIXfmv.js +2 -0
- package/dashboard/dist/assets/{RolesPage-Bmc3XaUk.js.map → RolesPage-CFdIXfmv.js.map} +1 -1
- package/dashboard/dist/assets/RowActions-Dg-Fsm5O.js +2 -0
- package/dashboard/dist/assets/{RowActions-Bs4PF-Gd.js.map → RowActions-Dg-Fsm5O.js.map} +1 -1
- package/dashboard/dist/assets/RunAsSelector-BGww9lta.js +2 -0
- package/dashboard/dist/assets/{RunAsSelector-DXzAr2WW.js.map → RunAsSelector-BGww9lta.js.map} +1 -1
- package/dashboard/dist/assets/ServerName-DfS3pfon.js +2 -0
- package/dashboard/dist/assets/{ServerName-BIdLC1Ay.js.map → ServerName-DfS3pfon.js.map} +1 -1
- package/dashboard/dist/assets/StatCard-DlgF0CJC.js +2 -0
- package/dashboard/dist/assets/{StatCard-OKzRSSx4.js.map → StatCard-DlgF0CJC.js.map} +1 -1
- package/dashboard/dist/assets/StatusBadge-XQlNFwmH.js +2 -0
- package/dashboard/dist/assets/{StatusBadge-CQlF46RR.js.map → StatusBadge-XQlNFwmH.js.map} +1 -1
- package/dashboard/dist/assets/StepIndicator-CuUIGxKk.js +2 -0
- package/dashboard/dist/assets/{StepIndicator-CP7eycjI.js.map → StepIndicator-CuUIGxKk.js.map} +1 -1
- package/dashboard/dist/assets/StickyPagination-F9FZsRy9.js +2 -0
- package/dashboard/dist/assets/{StickyPagination-CGk8VAKt.js.map → StickyPagination-F9FZsRy9.js.map} +1 -1
- package/dashboard/dist/assets/SwimlaneTimeline-C2hGjy0V.js +2 -0
- package/dashboard/dist/assets/{SwimlaneTimeline-MEUPc3yJ.js.map → SwimlaneTimeline-C2hGjy0V.js.map} +1 -1
- package/dashboard/dist/assets/TagInput-D21mrQx6.js +2 -0
- package/dashboard/dist/assets/{TagInput-BGxXKiWD.js.map → TagInput-D21mrQx6.js.map} +1 -1
- package/dashboard/dist/assets/TaskDetailPage-B49WQj8W.js +2 -0
- package/dashboard/dist/assets/TaskDetailPage-B49WQj8W.js.map +1 -0
- package/dashboard/dist/assets/TaskQueuePill-D8UMH1rd.js +2 -0
- package/dashboard/dist/assets/{TaskQueuePill-bw8ieKsf.js.map → TaskQueuePill-D8UMH1rd.js.map} +1 -1
- package/dashboard/dist/assets/TasksListPage-CJB-EvKX.js +2 -0
- package/dashboard/dist/assets/{TasksListPage-D1INzcrA.js.map → TasksListPage-CJB-EvKX.js.map} +1 -1
- package/dashboard/dist/assets/TimeAgo-CnjY3XDt.js +2 -0
- package/dashboard/dist/assets/{TimeAgo-CywLVIBA.js.map → TimeAgo-CnjY3XDt.js.map} +1 -1
- package/dashboard/dist/assets/TimestampCell-u1YA8eA3.js +2 -0
- package/dashboard/dist/assets/{TimestampCell-B4Pc6f3A.js.map → TimestampCell-u1YA8eA3.js.map} +1 -1
- package/dashboard/dist/assets/ToolPill-Dmcwmqh2.js +2 -0
- package/dashboard/dist/assets/{ToolPill-DdLN3JOT.js.map → ToolPill-Dmcwmqh2.js.map} +1 -1
- package/dashboard/dist/assets/ToolTestPanel-B1T4Hk0t.js +2 -0
- package/dashboard/dist/assets/{ToolTestPanel-DusbUka5.js.map → ToolTestPanel-B1T4Hk0t.js.map} +1 -1
- package/dashboard/dist/assets/TopicDetailPage-ClibbST4.js +9 -0
- package/dashboard/dist/assets/TopicDetailPage-ClibbST4.js.map +1 -0
- package/dashboard/dist/assets/TopicsPage-KjODhitc.js +2 -0
- package/dashboard/dist/assets/{TopicsPage-DbtrnQON.js.map → TopicsPage-KjODhitc.js.map} +1 -1
- package/dashboard/dist/assets/UserName-DVqimwsO.js +2 -0
- package/dashboard/dist/assets/{UserName-CLbusknU.js.map → UserName-DVqimwsO.js.map} +1 -1
- package/dashboard/dist/assets/WorkflowExecutionPage-DYNPy7Gk.js +2 -0
- package/dashboard/dist/assets/{WorkflowExecutionPage-C61R-3Gg.js.map → WorkflowExecutionPage-DYNPy7Gk.js.map} +1 -1
- package/dashboard/dist/assets/WorkflowPill-h43nlUmM.js +2 -0
- package/dashboard/dist/assets/{WorkflowPill-7vt2F6wR.js.map → WorkflowPill-h43nlUmM.js.map} +1 -1
- package/dashboard/dist/assets/WorkflowsDashboard-DdJm6X7x.js +2 -0
- package/dashboard/dist/assets/{WorkflowsDashboard-BWiUNvyl.js.map → WorkflowsDashboard-DdJm6X7x.js.map} +1 -1
- package/dashboard/dist/assets/WorkflowsOverview-CBOYkfpD.js +2 -0
- package/dashboard/dist/assets/{WorkflowsOverview-DA2ZOs7D.js.map → WorkflowsOverview-CBOYkfpD.js.map} +1 -1
- package/dashboard/dist/assets/YamlWorkflowsPage-BZnD_hMw.js +2 -0
- package/dashboard/dist/assets/{YamlWorkflowsPage-CLebf2eL.js.map → YamlWorkflowsPage-BZnD_hMw.js.map} +1 -1
- package/dashboard/dist/assets/{agents-Dga6NU7U.js → agents-oHMkS1GD.js} +2 -2
- package/dashboard/dist/assets/agents-oHMkS1GD.js.map +1 -0
- package/dashboard/dist/assets/{bots-CtU4i4OQ.js → bots-BispbsY3.js} +2 -2
- package/dashboard/dist/assets/{bots-CtU4i4OQ.js.map → bots-BispbsY3.js.map} +1 -1
- package/dashboard/dist/assets/{controlplane-BVoALhbL.js → controlplane-CIbrx5rX.js} +2 -2
- package/dashboard/dist/assets/{controlplane-BVoALhbL.js.map → controlplane-CIbrx5rX.js.map} +1 -1
- package/dashboard/dist/assets/escalation-columns-Dh_0iVTH.js +2 -0
- package/dashboard/dist/assets/{escalation-columns-CoTmTpHp.js.map → escalation-columns-Dh_0iVTH.js.map} +1 -1
- package/dashboard/dist/assets/escalation-qhj4TxA3.js +2 -0
- package/dashboard/dist/assets/{escalation-_N5GfuIi.js.map → escalation-qhj4TxA3.js.map} +1 -1
- package/dashboard/dist/assets/helpers-BYw1qqKV.js +2 -0
- package/dashboard/dist/assets/{helpers-Dz2U3Ctb.js.map → helpers-BYw1qqKV.js.map} +1 -1
- package/dashboard/dist/assets/index-B9t_vpam.js +2 -0
- package/dashboard/dist/assets/{index-Dpjguclc.js.map → index-B9t_vpam.js.map} +1 -1
- package/dashboard/dist/assets/index-Bh9g-EOF.js +2 -0
- package/dashboard/dist/assets/{index-CS61sh5q.js.map → index-Bh9g-EOF.js.map} +1 -1
- package/dashboard/dist/assets/index-BhhWCADo.js +63 -0
- package/dashboard/dist/assets/index-BhhWCADo.js.map +1 -0
- package/dashboard/dist/assets/index-Bn-VSH41.js +2 -0
- package/dashboard/dist/assets/index-Bn-VSH41.js.map +1 -0
- package/dashboard/dist/assets/index-C2yJWps6.js +6 -0
- package/dashboard/dist/assets/{index-B9ealjkt.js.map → index-C2yJWps6.js.map} +1 -1
- package/dashboard/dist/assets/index-C4W1_Rfk.js +5 -0
- package/dashboard/dist/assets/{index-CtbG3UN-.js.map → index-C4W1_Rfk.js.map} +1 -1
- package/dashboard/dist/assets/index-CEF3Idec.js +2 -0
- package/dashboard/dist/assets/{index-6Kd78p_v.js.map → index-CEF3Idec.js.map} +1 -1
- package/dashboard/dist/assets/index-CHxvfc97.css +1 -0
- package/dashboard/dist/assets/index-CVRVw3g_.js +2 -0
- package/dashboard/dist/assets/{index-dM-OgCY3.js.map → index-CVRVw3g_.js.map} +1 -1
- package/dashboard/dist/assets/index-CY3EhrEA.js +2 -0
- package/dashboard/dist/assets/{index-QicYdUsl.js.map → index-CY3EhrEA.js.map} +1 -1
- package/dashboard/dist/assets/index-D-q2lzup.js +2 -0
- package/dashboard/dist/assets/{index-DWUunWxh.js.map → index-D-q2lzup.js.map} +1 -1
- package/dashboard/dist/assets/index-D6YjH5uG.js +15 -0
- package/dashboard/dist/assets/{index-BYwPVJv0.js.map → index-D6YjH5uG.js.map} +1 -1
- package/dashboard/dist/assets/index-ht5r_7jQ.js +2 -0
- package/dashboard/dist/assets/index-ht5r_7jQ.js.map +1 -0
- package/dashboard/dist/assets/index-zHicKKh9.js +2 -0
- package/dashboard/dist/assets/{index-D_H_Prht.js.map → index-zHicKKh9.js.map} +1 -1
- package/dashboard/dist/assets/{knowledge-DJlebU82.js → knowledge-B23TU6JN.js} +2 -2
- package/dashboard/dist/assets/{knowledge-DJlebU82.js.map → knowledge-B23TU6JN.js.map} +1 -1
- package/dashboard/dist/assets/{mcp-CsLJ5SRm.js → mcp-Cew_Sb-Q.js} +2 -2
- package/dashboard/dist/assets/{mcp-CsLJ5SRm.js.map → mcp-Cew_Sb-Q.js.map} +1 -1
- package/dashboard/dist/assets/{mcp-query-WNK1ItRV.js → mcp-query-So0Oz5Lx.js} +2 -2
- package/dashboard/dist/assets/{mcp-query-WNK1ItRV.js.map → mcp-query-So0Oz5Lx.js.map} +1 -1
- package/dashboard/dist/assets/{mcp-runs-DtTTsuPH.js → mcp-runs-4176y3SA.js} +2 -2
- package/dashboard/dist/assets/{mcp-runs-DtTTsuPH.js.map → mcp-runs-4176y3SA.js.map} +1 -1
- package/dashboard/dist/assets/namespaces-CqBbWsJx.js +2 -0
- package/dashboard/dist/assets/{namespaces-iRejH3_A.js.map → namespaces-CqBbWsJx.js.map} +1 -1
- package/dashboard/dist/assets/{roles-3Jm5KtKc.js → roles-BTxMgLE6.js} +2 -2
- package/dashboard/dist/assets/{roles-3Jm5KtKc.js.map → roles-BTxMgLE6.js.map} +1 -1
- package/dashboard/dist/assets/settings-CtQNxacL.js +2 -0
- package/dashboard/dist/assets/{settings-DmN2I-c6.js.map → settings-CtQNxacL.js.map} +1 -1
- package/dashboard/dist/assets/{tasks-Cc-QoITQ.js → tasks-CIRlUTbo.js} +2 -2
- package/dashboard/dist/assets/{tasks-Cc-QoITQ.js.map → tasks-CIRlUTbo.js.map} +1 -1
- package/dashboard/dist/assets/{topics-p8anbgi0.js → topics-C8YmK_j2.js} +2 -2
- package/dashboard/dist/assets/topics-C8YmK_j2.js.map +1 -0
- package/dashboard/dist/assets/{useEventHooks-VaJ52jMm.js → useEventHooks-BvMUy36X.js} +2 -2
- package/dashboard/dist/assets/{useEventHooks-VaJ52jMm.js.map → useEventHooks-BvMUy36X.js.map} +1 -1
- package/dashboard/dist/assets/{useExpandedRows-Cg9iq6Vy.js → useExpandedRows-CkcEntB-.js} +2 -2
- package/dashboard/dist/assets/{useExpandedRows-Cg9iq6Vy.js.map → useExpandedRows-CkcEntB-.js.map} +1 -1
- package/dashboard/dist/assets/{useFilterParams-CGRYFw_A.js → useFilterParams-DZCAaBC7.js} +2 -2
- package/dashboard/dist/assets/{useFilterParams-CGRYFw_A.js.map → useFilterParams-DZCAaBC7.js.map} +1 -1
- package/dashboard/dist/assets/{useYamlActivityEvents-BU4Uhksl.js → useYamlActivityEvents-DLEzqv-z.js} +2 -2
- package/dashboard/dist/assets/{useYamlActivityEvents-BU4Uhksl.js.map → useYamlActivityEvents-DLEzqv-z.js.map} +1 -1
- package/dashboard/dist/assets/{users-oXOlnold.js → users-C_bD6mzW.js} +2 -2
- package/dashboard/dist/assets/{users-oXOlnold.js.map → users-C_bD6mzW.js.map} +1 -1
- package/dashboard/dist/assets/{vendor-icons-CBOM6Es0.js → vendor-icons-DY1ctJgc.js} +111 -101
- package/dashboard/dist/assets/vendor-icons-DY1ctJgc.js.map +1 -0
- package/dashboard/dist/assets/vendor-query-B2UbickB.js +18 -0
- package/dashboard/dist/assets/vendor-query-B2UbickB.js.map +1 -0
- package/dashboard/dist/assets/vendor-react-CX88sFS5.js +22 -0
- package/dashboard/dist/assets/vendor-react-CX88sFS5.js.map +1 -0
- package/dashboard/dist/assets/{workflows-Yq7cK-vR.js → workflows-DFR0-hI3.js} +2 -2
- package/dashboard/dist/assets/{workflows-Yq7cK-vR.js.map → workflows-DFR0-hI3.js.map} +1 -1
- package/dashboard/dist/assets/{yaml-workflows-Ch53yD43.js → yaml-workflows-wXURdyjP.js} +2 -2
- package/dashboard/dist/assets/{yaml-workflows-Ch53yD43.js.map → yaml-workflows-wXURdyjP.js.map} +1 -1
- package/dashboard/dist/index.html +5 -5
- package/docs/agents.md +1 -1
- package/docs/api/http/agents.md +5 -7
- package/docs/api/http/controlplane.md +193 -0
- package/docs/api/sdk/agents.md +5 -5
- package/docs/api/sdk/controlplane.md +36 -0
- package/docs/dashboard.md +13 -0
- package/package.json +2 -2
- package/dashboard/dist/assets/AdminDashboard-CbeSejVX.js +0 -2
- package/dashboard/dist/assets/AgentConfigPage-CFJNOrlg.js +0 -13
- package/dashboard/dist/assets/AgentConfigPage-CFJNOrlg.js.map +0 -1
- package/dashboard/dist/assets/AgentDetailPage-Dbx2t-Uk.js +0 -4
- package/dashboard/dist/assets/AgentDetailPage-Dbx2t-Uk.js.map +0 -1
- package/dashboard/dist/assets/AgentsPage-Bz61Nl-x.js +0 -2
- package/dashboard/dist/assets/AgentsPage-Bz61Nl-x.js.map +0 -1
- package/dashboard/dist/assets/AvailableEscalationsPage-DdrzePy4.js +0 -2
- package/dashboard/dist/assets/BotPicker-kKBifD1w.js +0 -2
- package/dashboard/dist/assets/CapabilitiesPage-Ch5qY0I7.js +0 -2
- package/dashboard/dist/assets/CollapsibleSection-kYTBL7dT.js +0 -2
- package/dashboard/dist/assets/ConfirmDeleteModal-CcaAapMl.js +0 -2
- package/dashboard/dist/assets/CopyableId-B4CL12pv.js +0 -2
- package/dashboard/dist/assets/CredentialsPage-D1VAlwid.js +0 -2
- package/dashboard/dist/assets/CronLabel-DRmO5rH0.js +0 -2
- package/dashboard/dist/assets/CustomDurationPicker-C06QDDir.js +0 -2
- package/dashboard/dist/assets/DataTable-J5R6mepB.js +0 -2
- package/dashboard/dist/assets/DropZone-DwNj3GiG.js +0 -2
- package/dashboard/dist/assets/ElapsedCell-ChyMzl9n.js +0 -2
- package/dashboard/dist/assets/EmptyState-BXGvOADa.js +0 -2
- package/dashboard/dist/assets/EscalationsOverview-DM6zmE4g.js +0 -2
- package/dashboard/dist/assets/EventTable-CvJ98E8s.js +0 -2
- package/dashboard/dist/assets/EventTopicPill-CB_rIGlL.js +0 -2
- package/dashboard/dist/assets/FilterBar-Bdssa-Xn.js +0 -2
- package/dashboard/dist/assets/HomePage-BuZkdXZt.js +0 -2
- package/dashboard/dist/assets/HomePage-BuZkdXZt.js.map +0 -1
- package/dashboard/dist/assets/ListToolbar-jy8NL6ll.js +0 -2
- package/dashboard/dist/assets/McpOverview-xkaKuHbX.js +0 -2
- package/dashboard/dist/assets/McpQueryDetailPage-D5ICn6cR.js +0 -5
- package/dashboard/dist/assets/McpQueryPage-C46fzfm5.js +0 -2
- package/dashboard/dist/assets/McpRunDetailPage-Znsl4Yc-.js +0 -2
- package/dashboard/dist/assets/McpRunsPage-DT-armx5.js +0 -2
- package/dashboard/dist/assets/McpRunsPage-DT-armx5.js.map +0 -1
- package/dashboard/dist/assets/Modal-C6k6_5KB.js +0 -2
- package/dashboard/dist/assets/OperatorDashboard-e5N3_dVl.js +0 -2
- package/dashboard/dist/assets/PageHeader-COcgWWf-.js +0 -2
- package/dashboard/dist/assets/PageHeaderWithStats-C0PCY3aJ.js +0 -2
- package/dashboard/dist/assets/PriorityBadge-BQCsYMpM.js +0 -2
- package/dashboard/dist/assets/ProcessDetailPage-C03LOgI0.js +0 -2
- package/dashboard/dist/assets/ProcessesListPage-iyPsmlhm.js +0 -2
- package/dashboard/dist/assets/RolePill-CHwys1f9.js +0 -2
- package/dashboard/dist/assets/RolesPage-Bmc3XaUk.js +0 -2
- package/dashboard/dist/assets/RowActions-Bs4PF-Gd.js +0 -2
- package/dashboard/dist/assets/RunAsSelector-DXzAr2WW.js +0 -2
- package/dashboard/dist/assets/ServerName-BIdLC1Ay.js +0 -2
- package/dashboard/dist/assets/StatCard-OKzRSSx4.js +0 -2
- package/dashboard/dist/assets/StatusBadge-CQlF46RR.js +0 -2
- package/dashboard/dist/assets/StepIndicator-CP7eycjI.js +0 -2
- package/dashboard/dist/assets/StickyPagination-CGk8VAKt.js +0 -2
- package/dashboard/dist/assets/SwimlaneTimeline-MEUPc3yJ.js +0 -2
- package/dashboard/dist/assets/TagInput-BGxXKiWD.js +0 -2
- package/dashboard/dist/assets/TaskDetailPage-pN5BXzYA.js +0 -2
- package/dashboard/dist/assets/TaskDetailPage-pN5BXzYA.js.map +0 -1
- package/dashboard/dist/assets/TaskQueuePill-bw8ieKsf.js +0 -2
- package/dashboard/dist/assets/TasksListPage-D1INzcrA.js +0 -2
- package/dashboard/dist/assets/TimeAgo-CywLVIBA.js +0 -2
- package/dashboard/dist/assets/TimestampCell-B4Pc6f3A.js +0 -2
- package/dashboard/dist/assets/ToolPill-DdLN3JOT.js +0 -2
- package/dashboard/dist/assets/ToolTestPanel-DusbUka5.js +0 -2
- package/dashboard/dist/assets/TopicDetailPage-DadwM52Y.js +0 -9
- package/dashboard/dist/assets/TopicDetailPage-DadwM52Y.js.map +0 -1
- package/dashboard/dist/assets/TopicsPage-DbtrnQON.js +0 -2
- package/dashboard/dist/assets/UserName-CLbusknU.js +0 -2
- package/dashboard/dist/assets/WorkflowExecutionPage-C61R-3Gg.js +0 -2
- package/dashboard/dist/assets/WorkflowPill-7vt2F6wR.js +0 -2
- package/dashboard/dist/assets/WorkflowsDashboard-BWiUNvyl.js +0 -2
- package/dashboard/dist/assets/WorkflowsOverview-DA2ZOs7D.js +0 -2
- package/dashboard/dist/assets/YamlWorkflowsPage-CLebf2eL.js +0 -2
- package/dashboard/dist/assets/agents-Dga6NU7U.js.map +0 -1
- package/dashboard/dist/assets/escalation-_N5GfuIi.js +0 -2
- package/dashboard/dist/assets/escalation-columns-CoTmTpHp.js +0 -2
- package/dashboard/dist/assets/helpers-Dz2U3Ctb.js +0 -2
- package/dashboard/dist/assets/index-6Kd78p_v.js +0 -2
- package/dashboard/dist/assets/index-B9ealjkt.js +0 -6
- package/dashboard/dist/assets/index-BIUHY2Jz.css +0 -1
- package/dashboard/dist/assets/index-BWHDW_CF.js +0 -2
- package/dashboard/dist/assets/index-BWHDW_CF.js.map +0 -1
- package/dashboard/dist/assets/index-BYwPVJv0.js +0 -15
- package/dashboard/dist/assets/index-CCOSf1PY.js +0 -281
- package/dashboard/dist/assets/index-CCOSf1PY.js.map +0 -1
- package/dashboard/dist/assets/index-CS61sh5q.js +0 -2
- package/dashboard/dist/assets/index-CtbG3UN-.js +0 -5
- package/dashboard/dist/assets/index-DWUunWxh.js +0 -2
- package/dashboard/dist/assets/index-D_H_Prht.js +0 -2
- package/dashboard/dist/assets/index-Dpjguclc.js +0 -2
- package/dashboard/dist/assets/index-QicYdUsl.js +0 -2
- package/dashboard/dist/assets/index-dM-OgCY3.js +0 -2
- package/dashboard/dist/assets/namespaces-iRejH3_A.js +0 -2
- package/dashboard/dist/assets/settings-DmN2I-c6.js +0 -2
- package/dashboard/dist/assets/topics-p8anbgi0.js.map +0 -1
- package/dashboard/dist/assets/vendor-icons-CBOM6Es0.js.map +0 -1
- package/dashboard/dist/assets/vendor-query-DLp59M9_.js +0 -35
- package/dashboard/dist/assets/vendor-query-DLp59M9_.js.map +0 -1
- package/dashboard/dist/assets/vendor-react-Co3Y8ikm.js +0 -26
- package/dashboard/dist/assets/vendor-react-Co3Y8ikm.js.map +0 -1
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
import{j as e,c as ae}from"./index-CCOSf1PY.js";import{a as g}from"./vendor-query-DLp59M9_.js";import{a as se,d as te,b as ie}from"./agents-Dga6NU7U.js";import{C as le,u as re,a as ne,b as oe,c as de}from"./CronLabel-DRmO5rH0.js";import{P as ce}from"./PageHeader-COcgWWf-.js";import{B as _,d as T,R as O,O as I,m as J,a1 as L,a as Y,aB as F,H as pe}from"./vendor-icons-CBOM6Es0.js";import{e as me}from"./knowledge-DJlebU82.js";import{R as G}from"./RunAsSelector-DXzAr2WW.js";import{u as H}from"./workflows-Yq7cK-vR.js";import{u as ue}from"./topics-p8anbgi0.js";import{u as be}from"./yaml-workflows-Ch53yD43.js";import{E as he}from"./EventTopicPill-CB_rIGlL.js";import{W as U}from"./WorkflowPill-7vt2F6wR.js";import{e as Ne,c as xe,f as ge}from"./vendor-react-Co3Y8ikm.js";import"./BotPicker-kKBifD1w.js";import"./bots-CtU4i4OQ.js";const B={name:"",description:"",goals:"",rules:"",user_id:"",knowledge_domain:"",subscriptions:[],schedules:[]},fe={topic:"",filter:"",reaction_type:"durable",workflow_type:"",pipeline_id:"",mcp_prompt:"",input_mapping:"{}",execute_as:"",enabled:!0},ve={cron:"0 * * * *",reaction_type:"durable",workflow_type:"",pipeline_id:"",envelope:"{}",execute_as:""};function Se(a,s){var r,c,u;const d=(c=(r=a.behaviors)==null?void 0:r.schedules)!=null&&c.length?a.behaviors.schedules.map(l=>({cron:l.cron||"",reaction_type:l.reaction_type||"durable",workflow_type:l.workflow_type||"",pipeline_id:l.pipeline_id||"",envelope:l.envelope?JSON.stringify(l.envelope,null,2):"{}",execute_as:l.execute_as||""})):(u=a.behaviors)!=null&&u.cron?[{cron:a.behaviors.cron,reaction_type:"durable",workflow_type:a.workflow_type??"",pipeline_id:"",envelope:"{}",execute_as:""}]:[];return{name:a.name,description:a.description??"",goals:a.goals??"",rules:a.rules??"",user_id:a.user_id??"",knowledge_domain:a.knowledge_domain??"",subscriptions:s.map(l=>({id:l.id,topic:l.topic,filter:l.filter?JSON.stringify(l.filter,null,2):"",reaction_type:l.reaction_type,workflow_type:l.workflow_type??"",pipeline_id:l.pipeline_id??"",mcp_prompt:l.mcp_prompt??"",input_mapping:JSON.stringify(l.input_mapping??{},null,2),execute_as:l.execute_as??"",enabled:l.enabled})),schedules:d}}function we(a){var d;const s={};return a.schedules.length>0&&(s.schedules=a.schedules.map(r=>({cron:r.cron,reaction_type:r.reaction_type||"durable",workflow_type:r.reaction_type==="pipeline"?void 0:r.workflow_type,pipeline_id:r.reaction_type==="pipeline"?r.pipeline_id:void 0,envelope:$(r.envelope)??{},execute_as:r.execute_as||void 0})),s.cron=a.schedules[0].cron),{name:a.name,description:a.description||void 0,goals:a.goals||void 0,rules:a.rules||void 0,user_id:a.user_id||void 0,knowledge_domain:a.knowledge_domain||void 0,behaviors:s,workflow_type:((d=a.schedules[0])==null?void 0:d.workflow_type)||void 0,pipeline_id:void 0}}function Ee(a){return a.subscriptions.map(s=>({id:s.id,topic:s.topic,filter:s.filter?$(s.filter):void 0,reaction_type:s.reaction_type,workflow_type:s.workflow_type||void 0,pipeline_id:s.pipeline_id||void 0,mcp_prompt:s.mcp_prompt||void 0,input_mapping:$(s.input_mapping)??{},execute_as:s.execute_as||void 0,enabled:s.enabled}))}function $(a){if(a.trim())try{return JSON.parse(a)}catch{return}}const D="section-header mt-[3em] first:mt-0",S="label",f="hint",N="input",Q="input-json w-full";function De({form:a,set:s}){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 agent 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(_,{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:S,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:a.name,onChange:d=>s("name",d.target.value),placeholder:"health-monitor",className:N},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/IdentityStep.tsx",lineNumber:22,columnNumber:9},this),e.jsxDEV("p",{className:f,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:S,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:a.description,onChange:d=>s("description",d.target.value),placeholder:"Watches for workflow failures and captures diagnostics",className:N},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/IdentityStep.tsx",lineNumber:28,columnNumber:9},this),e.jsxDEV("p",{className:f,children:"One sentence that explains what this agent 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 je({form:a,set:s}){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 agent. Rules define what constrains it. Together they give automation judgment."},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(_,{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:S,children:"Goals"},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/MotivationStep.tsx",lineNumber:22,columnNumber:11},this),e.jsxDEV("textarea",{value:a.goals,onChange:d=>s("goals",d.target.value),placeholder:"Detect failures early, capture diagnostics, alert before cascading",rows:4,className:`${N} resize-none`},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/MotivationStep.tsx",lineNumber:23,columnNumber:11},this),e.jsxDEV("p",{className:f,children:"Primary motivation. What the agent 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:S,children:"Rules"},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/MotivationStep.tsx",lineNumber:27,columnNumber:11},this),e.jsxDEV("textarea",{value:a.rules,onChange:d=>s("rules",d.target.value),placeholder:"Never auto-restart failed workflows. Always escalate to humans.",rows:4,className:`${N} resize-none`},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/MotivationStep.tsx",lineNumber:28,columnNumber:11},this),e.jsxDEV("p",{className:f,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 ye({form:a,set:s}){const{data:d}=me(),r=(d==null?void 0:d.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 agent's memory. It stores context here over time, learning from every interaction."},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(_,{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:S,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:a.knowledge_domain,onChange:c=>s("knowledge_domain",c.target.value),placeholder:"e.g., system-health, content-review, vendor-data",className:N,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:r.map(c=>e.jsxDEV("option",{value:c.domain},c.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:f,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),r.length>0&&e.jsxDEV("div",{children:[e.jsxDEV("label",{className:S,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:r.map(c=>e.jsxDEV("button",{type:"button",onClick:()=>s("knowledge_domain",c.domain),className:`w-full flex items-center gap-3 px-3 py-2 rounded-md text-left transition-colors ${a.knowledge_domain===c.domain?"border-l-2 border-l-accent bg-accent/5":"hover:bg-surface-hover border-l-2 border-l-transparent"}`,children:[e.jsxDEV(T,{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:c.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:[c.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(ae,{date:c.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)]},c.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)}const Ve={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",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 ke({form:a,set:s}){const{data:d}=H(),{data:r}=ue({limit:200}),c=(r==null?void 0:r.topics)??[],u=(d??[]).filter(t=>t.invocable).map(t=>t.workflow_type),[l,x]=g.useState(0),p=(t,b,V)=>{const C=[...a.subscriptions];C[t]={...C[t],[b]:V},s("subscriptions",C)},w=()=>{s("subscriptions",[...a.subscriptions,{...fe}]),x(a.subscriptions.length)},j=t=>{s("subscriptions",a.subscriptions.filter((b,V)=>V!==t)),l>=a.subscriptions.length-1&&x(Math.max(0,a.subscriptions.length-2))},o=a.subscriptions,n=o[l],i=t=>!!t.topic&&(t.reaction_type==="durable"?!!t.workflow_type:t.reaction_type==="pipeline"?!!t.pipeline_id:!!t.mcp_prompt),m=n?c.find(t=>t.topic===n.topic):void 0;return o.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 agent runs the configured workflow with the event payload."},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/SubscriptionsStep.tsx",lineNumber:60,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(_,{className:"w-3 h-3",strokeWidth:1.5},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/SubscriptionsStep.tsx",lineNumber:63,columnNumber:206},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/SubscriptionsStep.tsx",lineNumber:63,columnNumber:11},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/agents/detail/SubscriptionsStep.tsx",lineNumber:59,columnNumber:9},this),e.jsxDEV("div",{className:"flex flex-col items-center justify-center py-12 text-center",children:[e.jsxDEV(O,{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:66,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:67,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:68,columnNumber:11},this),e.jsxDEV("button",{onClick:w,className:"flex items-center gap-2 text-xs text-accent hover:text-accent-hover transition-colors",children:[e.jsxDEV(I,{className:"w-3.5 h-3.5"},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/SubscriptionsStep.tsx",lineNumber:72,columnNumber:13},this)," Add first subscription"]},void 0,!0,{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:65,columnNumber:9},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/agents/detail/SubscriptionsStep.tsx",lineNumber:58,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 agent runs the configured workflow with the event payload."},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/SubscriptionsStep.tsx",lineNumber:82,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(_,{className:"w-3 h-3",strokeWidth:1.5},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/SubscriptionsStep.tsx",lineNumber:85,columnNumber:204},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/SubscriptionsStep.tsx",lineNumber:85,columnNumber:9},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/agents/detail/SubscriptionsStep.tsx",lineNumber:81,columnNumber:7},this),e.jsxDEV("div",{className:"flex gap-8",children:[e.jsxDEV("div",{className:"w-52 shrink-0 space-y-0.5",children:[o.map((t,b)=>e.jsxDEV("div",{className:`group/sub flex items-center rounded-md transition-colors ${l===b?"bg-accent/10 text-accent":"text-text-tertiary hover:text-text-primary hover:bg-surface-hover"}`,children:[e.jsxDEV("button",{onClick:()=>x(b),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 ${i(t)?"bg-emerald-400":"bg-zinc-500"}`},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/SubscriptionsStep.tsx",lineNumber:97,columnNumber:19},this),e.jsxDEV("span",{className:"text-[11px] font-mono truncate",children:t.topic||"new subscription"},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/SubscriptionsStep.tsx",lineNumber:98,columnNumber:19},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/agents/detail/SubscriptionsStep.tsx",lineNumber:96,columnNumber:17},this),e.jsxDEV("span",{className:"text-[9px] text-text-quaternary ml-3",children:["→ ",t.workflow_type||t.reaction_type]},void 0,!0,{fileName:"/app/dashboard/src/pages/agents/detail/SubscriptionsStep.tsx",lineNumber:100,columnNumber:17},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/agents/detail/SubscriptionsStep.tsx",lineNumber:95,columnNumber:15},this),e.jsxDEV("button",{onClick:V=>{V.stopPropagation(),confirm(`Remove subscription "${t.topic||"new"}"?
|
|
2
|
-
|
|
3
|
-
This takes effect when you save.`)&&j(b)},className:"opacity-0 group-hover/sub:opacity-100 px-2 text-text-quaternary hover:text-red-400 transition-all",title:"Remove",children:e.jsxDEV(J,{className:"w-3 h-3"},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/SubscriptionsStep.tsx",lineNumber:103,columnNumber:17},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/SubscriptionsStep.tsx",lineNumber:102,columnNumber:15},this)]},b,!0,{fileName:"/app/dashboard/src/pages/agents/detail/SubscriptionsStep.tsx",lineNumber:92,columnNumber:13},this)),e.jsxDEV("button",{onClick:w,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(I,{className:"w-3 h-3"},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/SubscriptionsStep.tsx",lineNumber:108,columnNumber:13},this)," Add"]},void 0,!0,{fileName:"/app/dashboard/src/pages/agents/detail/SubscriptionsStep.tsx",lineNumber:107,columnNumber:11},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/agents/detail/SubscriptionsStep.tsx",lineNumber:90,columnNumber:9},this),n&&e.jsxDEV("div",{className:"flex-1 min-w-0 space-y-12",children:[e.jsxDEV("div",{children:[e.jsxDEV("label",{className:D,children:"When this event fires"},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/SubscriptionsStep.tsx",lineNumber:118,columnNumber:15},this),e.jsxDEV(_e,{value:n.topic,onChange:t=>p(l,"topic",t),topics:c},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/SubscriptionsStep.tsx",lineNumber:119,columnNumber:15},this),(m==null?void 0:m.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:128,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(m.payload_schema.properties??m.payload_schema,null,2)},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/SubscriptionsStep.tsx",lineNumber:129,columnNumber:19},this),m.description&&e.jsxDEV("p",{className:"text-[10px] text-text-tertiary mt-2 italic",children:m.description},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/SubscriptionsStep.tsx",lineNumber:133,columnNumber:21},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/agents/detail/SubscriptionsStep.tsx",lineNumber:127,columnNumber:17},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/agents/detail/SubscriptionsStep.tsx",lineNumber:117,columnNumber:13},this),e.jsxDEV("div",{className:"grid grid-cols-3 gap-6",children:[e.jsxDEV("div",{className:"space-y-4",children:[e.jsxDEV("label",{className:D,children:"Run this workflow"},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/SubscriptionsStep.tsx",lineNumber:142,columnNumber:17},this),e.jsxDEV("div",{className:"flex gap-3",children:["durable","pipeline","mcp_query"].map(t=>e.jsxDEV("label",{className:"flex items-center gap-1 text-[11px] text-text-secondary cursor-pointer",children:[e.jsxDEV("input",{type:"radio",name:"reaction",checked:n.reaction_type===t,onChange:()=>p(l,"reaction_type",t),className:"accent-accent w-3 h-3"},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/SubscriptionsStep.tsx",lineNumber:146,columnNumber:23},this),t==="durable"?"Workflow":t==="pipeline"?"Pipeline":"MCP Query"]},t,!0,{fileName:"/app/dashboard/src/pages/agents/detail/SubscriptionsStep.tsx",lineNumber:145,columnNumber:21},this))},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/SubscriptionsStep.tsx",lineNumber:143,columnNumber:17},this),n.reaction_type==="durable"&&e.jsxDEV("div",{children:[e.jsxDEV("label",{className:S,children:"Workflow *"},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/SubscriptionsStep.tsx",lineNumber:153,columnNumber:21},this),e.jsxDEV("select",{value:n.workflow_type,onChange:t=>p(l,"workflow_type",t.target.value),className:N,children:[e.jsxDEV("option",{value:"",children:"Select..."},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/SubscriptionsStep.tsx",lineNumber:155,columnNumber:23},this),u.map(t=>e.jsxDEV("option",{value:t,children:t},t,!1,{fileName:"/app/dashboard/src/pages/agents/detail/SubscriptionsStep.tsx",lineNumber:156,columnNumber:63},this))]},void 0,!0,{fileName:"/app/dashboard/src/pages/agents/detail/SubscriptionsStep.tsx",lineNumber:154,columnNumber:21},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/agents/detail/SubscriptionsStep.tsx",lineNumber:152,columnNumber:19},this),n.reaction_type==="pipeline"&&e.jsxDEV("div",{children:[e.jsxDEV("label",{className:S,children:"Pipeline ID *"},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/SubscriptionsStep.tsx",lineNumber:162,columnNumber:21},this),e.jsxDEV("input",{type:"text",value:n.pipeline_id,onChange:t=>p(l,"pipeline_id",t.target.value),placeholder:"UUID",className:`${N} font-mono text-xs`},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/SubscriptionsStep.tsx",lineNumber:163,columnNumber:21},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/agents/detail/SubscriptionsStep.tsx",lineNumber:161,columnNumber:19},this),n.reaction_type==="mcp_query"&&e.jsxDEV("div",{children:[e.jsxDEV("label",{className:S,children:"Prompt *"},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/SubscriptionsStep.tsx",lineNumber:168,columnNumber:21},this),e.jsxDEV("textarea",{value:n.mcp_prompt,onChange:t=>p(l,"mcp_prompt",t.target.value),placeholder:"Analyze the error...",rows:2,className:`${N} resize-none`},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/SubscriptionsStep.tsx",lineNumber:169,columnNumber:21},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/agents/detail/SubscriptionsStep.tsx",lineNumber:167,columnNumber:19},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/agents/detail/SubscriptionsStep.tsx",lineNumber:141,columnNumber:15},this),e.jsxDEV("div",{children:[e.jsxDEV("label",{className:D,children:"As identity"},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/SubscriptionsStep.tsx",lineNumber:174,columnNumber:17},this),e.jsxDEV(G,{selected:n.execute_as,onChange:t=>p(l,"execute_as",t)},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/SubscriptionsStep.tsx",lineNumber:175,columnNumber:17},this),e.jsxDEV("p",{className:f,children:"Identity used when invoking the workflow."},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/SubscriptionsStep.tsx",lineNumber:176,columnNumber:17},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/agents/detail/SubscriptionsStep.tsx",lineNumber:173,columnNumber:15},this),e.jsxDEV("div",{children:[e.jsxDEV("label",{className:D,children:"But only if"},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/SubscriptionsStep.tsx",lineNumber:179,columnNumber:17},this),e.jsxDEV("input",{type:"text",value:n.filter,onChange:t=>p(l,"filter",t.target.value),placeholder:"No filter (all matching events)",className:`${N} font-mono text-xs`},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/SubscriptionsStep.tsx",lineNumber:180,columnNumber:17},this),e.jsxDEV("p",{className:f,children:["JSON filter against event.data, e.g. ",'{"status": 422}']},void 0,!0,{fileName:"/app/dashboard/src/pages/agents/detail/SubscriptionsStep.tsx",lineNumber:181,columnNumber:17},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/agents/detail/SubscriptionsStep.tsx",lineNumber:178,columnNumber:15},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/agents/detail/SubscriptionsStep.tsx",lineNumber:140,columnNumber:13},this),e.jsxDEV("div",{children:[e.jsxDEV("label",{className:D,children:"With this data"},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/SubscriptionsStep.tsx",lineNumber:187,columnNumber:15},this),e.jsxDEV("textarea",{value:n.input_mapping,onChange:t=>p(l,"input_mapping",t.target.value),rows:10,className:Q,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:188,columnNumber:15},this),e.jsxDEV("p",{className:f,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:189,columnNumber:15},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/agents/detail/SubscriptionsStep.tsx",lineNumber:186,columnNumber:13},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/agents/detail/SubscriptionsStep.tsx",lineNumber:114,columnNumber:11},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/agents/detail/SubscriptionsStep.tsx",lineNumber:88,columnNumber:7},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/agents/detail/SubscriptionsStep.tsx",lineNumber:80,columnNumber:5},this)}function _e({value:a,onChange:s,topics:d}){const[r,c]=g.useState(!1),[u,l]=g.useState(""),x=g.useRef(null),p=g.useRef(null);g.useEffect(()=>{function o(n){p.current&&!p.current.contains(n.target)&&c(!1)}return r&&document.addEventListener("mousedown",o),()=>document.removeEventListener("mousedown",o)},[r]);const w=r?u:a,j=d.filter(o=>o.topic.toLowerCase().includes((r?u:"").toLowerCase())||(o.description??"").toLowerCase().includes((r?u:"").toLowerCase()));return e.jsxDEV("div",{ref:p,className:"relative",children:[e.jsxDEV("input",{ref:x,type:"text",value:w,onFocus:()=>{c(!0),l(a)},onChange:o=>{const n=o.target.value;l(n),s(n),r||c(!0)},placeholder:"workflow.failed or app.>",className:`${N} font-mono`},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/SubscriptionsStep.tsx",lineNumber:229,columnNumber:7},this),r&&j.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:j.map(o=>{const n=Ve[o.category]??"bg-zinc-400/15 text-zinc-400";return e.jsxDEV("button",{type:"button",onClick:()=>{s(o.topic),l(o.topic),c(!1)},className:`w-full text-left px-3 py-2 hover:bg-surface-hover transition-colors flex items-center gap-3 ${a===o.topic?"bg-accent/5":""}`,children:[e.jsxDEV("span",{className:"text-[11px] font-mono text-text-primary shrink-0",children:o.topic},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/SubscriptionsStep.tsx",lineNumber:261,columnNumber:17},this),e.jsxDEV("span",{className:`inline-flex items-center px-1.5 py-0.5 rounded text-[9px] font-medium shrink-0 ${n}`,children:o.category},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/SubscriptionsStep.tsx",lineNumber:262,columnNumber:17},this),o.description&&e.jsxDEV("span",{className:"text-[10px] text-text-quaternary truncate",children:o.description},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/SubscriptionsStep.tsx",lineNumber:264,columnNumber:19},this)]},o.topic,!0,{fileName:"/app/dashboard/src/pages/agents/detail/SubscriptionsStep.tsx",lineNumber:249,columnNumber:15},this)})},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/SubscriptionsStep.tsx",lineNumber:245,columnNumber:9},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/agents/detail/SubscriptionsStep.tsx",lineNumber:228,columnNumber:5},this)}const Ce=["*/5 * * * *","*/15 * * * *","0 * * * *","0 */4 * * *","0 7 * * *","0 9 * * 1-5"];function K(a){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"}[a]||a}function Re({form:a,set:s}){const{data:d}=H(),r=(d??[]).filter(i=>i.invocable).map(i=>i.workflow_type),{data:c}=be({status:"active"}),u=((c==null?void 0:c.workflows)??[]).map(i=>({id:i.id,name:i.graph_topic||i.id})),[l,x]=g.useState(0),p=(i,m,t)=>{const b=[...a.schedules];b[i]={...b[i],[m]:t},s("schedules",b)},w=()=>{s("schedules",[...a.schedules,{...ve}]),x(a.schedules.length)},j=i=>{s("schedules",a.schedules.filter((m,t)=>t!==i)),l>=a.schedules.length-1&&x(Math.max(0,a.schedules.length-2))},o=a.schedules,n=o[l];return o.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:67,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(_,{className:"w-3 h-3",strokeWidth:1.5},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/ScheduleStep.tsx",lineNumber:70,columnNumber:196},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/ScheduleStep.tsx",lineNumber:70,columnNumber:11},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/agents/detail/ScheduleStep.tsx",lineNumber:66,columnNumber:9},this),e.jsxDEV("div",{className:"flex flex-col items-center justify-center py-12 text-center",children:[e.jsxDEV(L,{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:73,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:74,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:75,columnNumber:11},this),e.jsxDEV("button",{onClick:w,className:"flex items-center gap-2 text-xs text-accent hover:text-accent-hover transition-colors",children:[e.jsxDEV(I,{className:"w-3.5 h-3.5"},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/ScheduleStep.tsx",lineNumber:79,columnNumber:13},this)," Add schedule"]},void 0,!0,{fileName:"/app/dashboard/src/pages/agents/detail/ScheduleStep.tsx",lineNumber:78,columnNumber:11},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/agents/detail/ScheduleStep.tsx",lineNumber:72,columnNumber:9},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/agents/detail/ScheduleStep.tsx",lineNumber:65,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 agent can have multiple schedules targeting different workflows."},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/ScheduleStep.tsx",lineNumber:89,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(_,{className:"w-3 h-3",strokeWidth:1.5},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/ScheduleStep.tsx",lineNumber:92,columnNumber:194},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/ScheduleStep.tsx",lineNumber:92,columnNumber:9},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/agents/detail/ScheduleStep.tsx",lineNumber:88,columnNumber:7},this),e.jsxDEV("div",{className:"flex gap-8",children:[e.jsxDEV("div",{className:"w-48 shrink-0 space-y-0.5",children:[o.map((i,m)=>e.jsxDEV("div",{className:`group/sched flex items-center rounded-md transition-colors ${l===m?"bg-accent/10 text-accent":"text-text-tertiary hover:text-text-primary hover:bg-surface-hover"}`,children:[e.jsxDEV("button",{onClick:()=>x(m),className:"flex-1 text-left px-3 py-2 min-w-0",children:[e.jsxDEV("span",{className:"text-[11px] font-mono block",children:i.cron||"new schedule"},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/ScheduleStep.tsx",lineNumber:103,columnNumber:17},this),e.jsxDEV("span",{className:"text-[9px] text-text-quaternary",children:[(i.reaction_type==="pipeline"?i.pipeline_id:i.workflow_type)||"no target"," · ",K(i.cron)]},void 0,!0,{fileName:"/app/dashboard/src/pages/agents/detail/ScheduleStep.tsx",lineNumber:104,columnNumber:17},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/agents/detail/ScheduleStep.tsx",lineNumber:102,columnNumber:15},this),e.jsxDEV("button",{onClick:t=>{t.stopPropagation(),confirm(`Remove schedule "${i.cron||"new"}"?
|
|
9
|
-
|
|
10
|
-
This takes effect when you save.`)&&j(m)},className:"opacity-0 group-hover/sched:opacity-100 px-2 text-text-quaternary hover:text-red-400 transition-all",title:"Remove",children:e.jsxDEV(J,{className:"w-3 h-3"},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/ScheduleStep.tsx",lineNumber:107,columnNumber:17},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/ScheduleStep.tsx",lineNumber:106,columnNumber:15},this)]},m,!0,{fileName:"/app/dashboard/src/pages/agents/detail/ScheduleStep.tsx",lineNumber:99,columnNumber:13},this)),e.jsxDEV("button",{onClick:w,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(I,{className:"w-3 h-3"},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/ScheduleStep.tsx",lineNumber:112,columnNumber:13},this)," Add"]},void 0,!0,{fileName:"/app/dashboard/src/pages/agents/detail/ScheduleStep.tsx",lineNumber:111,columnNumber:11},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/agents/detail/ScheduleStep.tsx",lineNumber:97,columnNumber:9},this),n&&e.jsxDEV("div",{className:"flex-1 min-w-0 space-y-12",children:[e.jsxDEV("div",{children:[e.jsxDEV("label",{className:D,children:"Run every"},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/ScheduleStep.tsx",lineNumber:122,columnNumber:15},this),e.jsxDEV("input",{type:"text",value:n.cron,onChange:i=>p(l,"cron",i.target.value),placeholder:"0 * * * *",className:`${N} font-mono`},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/ScheduleStep.tsx",lineNumber:123,columnNumber:15},this),n.cron&&e.jsxDEV("p",{className:"text-[11px] text-accent/80 mt-1",children:K(n.cron)},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/ScheduleStep.tsx",lineNumber:124,columnNumber:30},this),e.jsxDEV("div",{className:"flex gap-3 mt-2 overflow-x-auto",children:Ce.map(i=>e.jsxDEV("button",{type:"button",onClick:()=>p(l,"cron",i),className:`text-[10px] font-mono whitespace-nowrap transition-colors ${n.cron===i?"text-accent font-medium":"text-accent/50 hover:text-accent"}`,children:K(i)},i,!1,{fileName:"/app/dashboard/src/pages/agents/detail/ScheduleStep.tsx",lineNumber:127,columnNumber:19},this))},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/ScheduleStep.tsx",lineNumber:125,columnNumber:15},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/agents/detail/ScheduleStep.tsx",lineNumber:121,columnNumber:13},this),e.jsxDEV("div",{className:"grid grid-cols-2 gap-6",children:[e.jsxDEV("div",{className:"space-y-4",children:[e.jsxDEV("label",{className:D,children:"Run this workflow"},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/ScheduleStep.tsx",lineNumber:137,columnNumber:17},this),e.jsxDEV("div",{className:"flex gap-3",children:["durable","pipeline"].map(i=>e.jsxDEV("label",{className:"flex items-center gap-1 text-[11px] text-text-secondary cursor-pointer",children:[e.jsxDEV("input",{type:"radio",name:`sched-reaction-${l}`,checked:n.reaction_type===i,onChange:()=>p(l,"reaction_type",i),className:"accent-accent w-3 h-3"},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/ScheduleStep.tsx",lineNumber:141,columnNumber:23},this),i==="durable"?"Workflow":"Pipeline"]},i,!0,{fileName:"/app/dashboard/src/pages/agents/detail/ScheduleStep.tsx",lineNumber:140,columnNumber:21},this))},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/ScheduleStep.tsx",lineNumber:138,columnNumber:17},this),n.reaction_type==="pipeline"?e.jsxDEV("div",{children:[e.jsxDEV("label",{className:S,children:"Pipeline *"},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/ScheduleStep.tsx",lineNumber:148,columnNumber:21},this),e.jsxDEV("select",{value:n.pipeline_id,onChange:i=>p(l,"pipeline_id",i.target.value),className:N,children:[e.jsxDEV("option",{value:"",children:"Select..."},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/ScheduleStep.tsx",lineNumber:150,columnNumber:23},this),u.map(i=>e.jsxDEV("option",{value:i.id,children:i.name},i.id,!1,{fileName:"/app/dashboard/src/pages/agents/detail/ScheduleStep.tsx",lineNumber:151,columnNumber:75},this))]},void 0,!0,{fileName:"/app/dashboard/src/pages/agents/detail/ScheduleStep.tsx",lineNumber:149,columnNumber:21},this),e.jsxDEV("p",{className:f,children:"YAML pipeline invoked on each cron tick."},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/ScheduleStep.tsx",lineNumber:153,columnNumber:21},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/agents/detail/ScheduleStep.tsx",lineNumber:147,columnNumber:19},this):e.jsxDEV("div",{children:[e.jsxDEV("label",{className:S,children:"Workflow *"},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/ScheduleStep.tsx",lineNumber:157,columnNumber:21},this),e.jsxDEV("select",{value:n.workflow_type,onChange:i=>p(l,"workflow_type",i.target.value),className:N,children:[e.jsxDEV("option",{value:"",children:"Select..."},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/ScheduleStep.tsx",lineNumber:159,columnNumber:23},this),r.map(i=>e.jsxDEV("option",{value:i,children:i},i,!1,{fileName:"/app/dashboard/src/pages/agents/detail/ScheduleStep.tsx",lineNumber:160,columnNumber:63},this))]},void 0,!0,{fileName:"/app/dashboard/src/pages/agents/detail/ScheduleStep.tsx",lineNumber:158,columnNumber:21},this),e.jsxDEV("p",{className:f,children:"Invoked on each cron tick."},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/ScheduleStep.tsx",lineNumber:162,columnNumber:21},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/agents/detail/ScheduleStep.tsx",lineNumber:156,columnNumber:19},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/agents/detail/ScheduleStep.tsx",lineNumber:136,columnNumber:15},this),e.jsxDEV("div",{children:[e.jsxDEV("label",{className:D,children:"As identity"},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/ScheduleStep.tsx",lineNumber:167,columnNumber:17},this),e.jsxDEV(G,{selected:n.execute_as,onChange:i=>p(l,"execute_as",i)},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/ScheduleStep.tsx",lineNumber:168,columnNumber:17},this),e.jsxDEV("p",{className:f,children:"Identity used when invoking."},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/ScheduleStep.tsx",lineNumber:169,columnNumber:17},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/agents/detail/ScheduleStep.tsx",lineNumber:166,columnNumber:15},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/agents/detail/ScheduleStep.tsx",lineNumber:135,columnNumber:13},this),e.jsxDEV("div",{children:[e.jsxDEV("label",{className:D,children:"With this data"},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/ScheduleStep.tsx",lineNumber:175,columnNumber:15},this),e.jsxDEV("textarea",{value:n.envelope,onChange:i=>p(l,"envelope",i.target.value),rows:10,className:Q,placeholder:`{
|
|
11
|
-
"data": { "source": "cron" }
|
|
12
|
-
}`},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/ScheduleStep.tsx",lineNumber:176,columnNumber:15},this),e.jsxDEV("p",{className:f,children:"Static payload passed to the workflow on each invocation."},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/ScheduleStep.tsx",lineNumber:177,columnNumber:15},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/agents/detail/ScheduleStep.tsx",lineNumber:174,columnNumber:13},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/agents/detail/ScheduleStep.tsx",lineNumber:118,columnNumber:11},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/agents/detail/ScheduleStep.tsx",lineNumber:95,columnNumber:7},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/agents/detail/ScheduleStep.tsx",lineNumber:87,columnNumber:5},this)}function A({icon:a,color:s,title:d,children:r}){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(a,{className:`w-3.5 h-3.5 ${s}`,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:d},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:r},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 P({label:a,children:s}){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:a},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:s},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 Ae({form:a}){return e.jsxDEV("div",{children:[e.jsxDEV(A,{icon:Y,color:"text-accent",title:"Identity",children:[e.jsxDEV(P,{label:"Name",children:a.name||"—"},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/ReviewStep.tsx",lineNumber:36,columnNumber:9},this),a.description&&e.jsxDEV(P,{label:"Description",children:a.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),(a.goals||a.rules)&&e.jsxDEV(A,{icon:F,color:"text-rose-400",title:"Motivation",children:[a.goals&&e.jsxDEV(P,{label:"Goals",children:a.goals},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/ReviewStep.tsx",lineNumber:42,columnNumber:26},this),a.rules&&e.jsxDEV(P,{label:"Rules",children:a.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(A,{icon:T,color:"text-emerald-400",title:"Knowledge",children:e.jsxDEV(P,{label:"Domain",children:a.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(A,{icon:O,color:"text-cyan-400",title:`Subscriptions (${a.subscriptions.length})`,children:a.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:a.subscriptions.map((s,d)=>e.jsxDEV("div",{className:"flex items-center py-1.5",children:[e.jsxDEV("div",{className:"flex-1 min-w-0",children:e.jsxDEV(he,{topic:s.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),s.workflow_type?e.jsxDEV(U,{type:s.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:s.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)]},d,!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(A,{icon:L,color:"text-amber-400",title:`Schedules (${a.schedules.length})`,children:a.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:a.schedules.map((s,d)=>e.jsxDEV("div",{className:"flex items-center py-1.5",children:[e.jsxDEV("div",{className:"flex-1 min-w-0",children:e.jsxDEV(le,{cron:s.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),s.workflow_type?e.jsxDEV(U,{type:s.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)]},d,!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 agent 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 Pe=[{id:1,label:"Identity",icon:Y},{id:2,label:"Motivation",icon:F},{id:3,label:"Knowledge",icon:T},{id:4,label:"Subscriptions",icon:O},{id:5,label:"Schedules",icon:L},{id:6,label:"Review",icon:pe}];function He(){const{id:a}=Ne(),s=!a,d=xe(),{data:r,isLoading:c}=se(s?null:a),{data:u}=re(s?null:a),l=te(),x=ie(),p=ne(),w=oe(),j=de(),[o,n]=g.useState(B),[i,m]=g.useState(!1),[t,b]=g.useState(""),[V,C]=ge(),k=parseInt(V.get("step")||"1",10),X=g.useCallback(h=>{C(v=>{const y=new URLSearchParams(v);return y.set("step",String(h)),y},{replace:!0})},[C]);g.useEffect(()=>{if(!i){if(s){n(B),m(!0);return}r&&u&&(n(Se(r,u.subscriptions??[])),m(!0))}},[r,u,s,i]);const R=(h,v)=>n(y=>({...y,[h]:v})),Z=async()=>{b("");try{const h=we(o);let v=a;s?v=(await l.mutateAsync(h)).id:await x.mutateAsync({id:a,...h});const y=Ee(o),ee=(u==null?void 0:u.subscriptions)??[],W=new Set(ee.map(E=>E.id));for(const E of y)if(E.id&&W.has(E.id)){const{id:M,...q}=E;await w.mutateAsync({agentId:v,subId:M,...q}),W.delete(M)}else{const{id:M,...q}=E;await p.mutateAsync({agentId:v,...q})}for(const E of W)await j.mutateAsync({agentId:v,subId:E});d(`/agents/${v}`)}catch(h){b(h.message)}};if(!s&&c)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:110,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:110,columnNumber:107},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/agents/detail/AgentConfigPage.tsx",lineNumber:110,columnNumber:12},this);const z=l.isPending||x.isPending;return e.jsxDEV("div",{children:[e.jsxDEV(ce,{title:s?"New Agent":`Agent: ${(r==null?void 0:r.name)??""}`,docsHash:"#docs:agents.md"},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/AgentConfigPage.tsx",lineNumber:117,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:Pe.map(h=>{const v=h.icon,y=k===h.id;return e.jsxDEV("button",{onClick:()=>X(h.id),className:`w-full flex items-center gap-2.5 px-3 py-2 rounded-md text-left transition-colors ${y?"bg-accent/10 text-accent":"text-text-tertiary hover:text-text-primary hover:bg-surface-hover"}`,children:[e.jsxDEV(v,{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:139,columnNumber:19},this),e.jsxDEV("span",{className:"text-xs font-medium",children:h.label},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/AgentConfigPage.tsx",lineNumber:140,columnNumber:19},this)]},h.id,!0,{fileName:"/app/dashboard/src/pages/agents/detail/AgentConfigPage.tsx",lineNumber:130,columnNumber:17},this)})},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/AgentConfigPage.tsx",lineNumber:125,columnNumber:11},this),e.jsxDEV("div",{className:"mt-8 pt-4 border-t border-surface-border space-y-2",children:[e.jsxDEV("button",{onClick:Z,disabled:!o.name.trim()||z,className:"w-full btn-primary text-xs disabled:opacity-50",children:z?"Saving...":s?"Create Agent":"Save"},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/AgentConfigPage.tsx",lineNumber:148,columnNumber:13},this),e.jsxDEV("button",{onClick:()=>d(s?"/agents":`/agents/${a}`),className:"w-full btn-ghost text-xs",children:"Cancel"},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/AgentConfigPage.tsx",lineNumber:155,columnNumber:13},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/agents/detail/AgentConfigPage.tsx",lineNumber:147,columnNumber:11},this),t&&e.jsxDEV("p",{className:"text-xs text-status-error mt-3",children:t},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/AgentConfigPage.tsx",lineNumber:163,columnNumber:25},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/agents/detail/AgentConfigPage.tsx",lineNumber:124,columnNumber:9},this),e.jsxDEV("div",{className:"flex-1 min-w-0 pt-2",children:[k===1&&e.jsxDEV(De,{form:o,set:R},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/AgentConfigPage.tsx",lineNumber:168,columnNumber:29},this),k===2&&e.jsxDEV(je,{form:o,set:R},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/AgentConfigPage.tsx",lineNumber:169,columnNumber:29},this),k===3&&e.jsxDEV(ye,{form:o,set:R},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/AgentConfigPage.tsx",lineNumber:170,columnNumber:29},this),k===4&&e.jsxDEV(ke,{form:o,set:R},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/AgentConfigPage.tsx",lineNumber:171,columnNumber:29},this),k===5&&e.jsxDEV(Re,{form:o,set:R},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/AgentConfigPage.tsx",lineNumber:172,columnNumber:29},this),k===6&&e.jsxDEV(Ae,{form:o},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/AgentConfigPage.tsx",lineNumber:173,columnNumber:29},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/agents/detail/AgentConfigPage.tsx",lineNumber:167,columnNumber:9},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/agents/detail/AgentConfigPage.tsx",lineNumber:122,columnNumber:7},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/agents/detail/AgentConfigPage.tsx",lineNumber:116,columnNumber:5},this)}export{He as AgentConfigPage};
|
|
13
|
-
//# sourceMappingURL=AgentConfigPage-CFJNOrlg.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"AgentConfigPage-CFJNOrlg.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/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';\n workflow_type: string;\n pipeline_id: string;\n mcp_prompt: 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';\n workflow_type: string;\n pipeline_id: 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 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 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 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 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 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: '', envelope: '{}', execute_as: '' }]\n : [];\n\n return {\n name: agent.name,\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 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 name: 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 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 agent 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 agent 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 agent. Rules define what constrains it. Together they give automation judgment.\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 agent 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 agent's memory. It stores context here over time, learning from every interaction.\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 } from 'react';\nimport { Plus, Trash2, Radio, BookOpen } from 'lucide-react';\nimport { RunAsSelector } from '../../../components/common/form/RunAsSelector';\nimport { useWorkflowConfigs } from '../../../api/workflows';\nimport { useTopics, type TopicCatalogEntry } from '../../../api/topics';\nimport type { AgentFormState, SubscriptionFormState } from './agent-form-types';\nimport { EMPTY_SUBSCRIPTION, sectionCls, labelCls, 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 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: configs } = useWorkflowConfigs();\n const { data: topicsData } = useTopics({ limit: 200 });\n const catalogTopics = topicsData?.topics ?? [];\n\n const invocableWorkflows = (configs ?? []).filter((c: any) => c.invocable).map((c: any) => c.workflow_type);\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) => !!s.topic && (s.reaction_type === 'durable' ? !!s.workflow_type : s.reaction_type === 'pipeline' ? !!s.pipeline_id : !!s.mcp_prompt);\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 agent 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 agent 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.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 {/* Run this workflow + As identity + But only if — 3 col */}\n <div className=\"grid grid-cols-3 gap-6\">\n <div className=\"space-y-4\">\n <label className={sectionCls}>Run this workflow</label>\n <div className=\"flex gap-3\">\n {(['durable', 'pipeline', 'mcp_query'] as const).map((rt) => (\n <label key={rt} className=\"flex items-center gap-1 text-[11px] text-text-secondary cursor-pointer\">\n <input type=\"radio\" name=\"reaction\" checked={sub.reaction_type === rt} onChange={() => updateSub(selected, 'reaction_type', rt)} className=\"accent-accent w-3 h-3\" />\n {rt === 'durable' ? 'Workflow' : rt === 'pipeline' ? 'Pipeline' : 'MCP Query'}\n </label>\n ))}\n </div>\n {sub.reaction_type === 'durable' && (\n <div>\n <label className={labelCls}>Workflow *</label>\n <select value={sub.workflow_type} onChange={(e) => updateSub(selected, 'workflow_type', e.target.value)} className={inputCls}>\n <option value=\"\">Select...</option>\n {invocableWorkflows.map((wt: string) => <option key={wt} value={wt}>{wt}</option>)}\n </select>\n </div>\n )}\n {sub.reaction_type === 'pipeline' && (\n <div>\n <label className={labelCls}>Pipeline ID *</label>\n <input type=\"text\" value={sub.pipeline_id} onChange={(e) => updateSub(selected, 'pipeline_id', e.target.value)} placeholder=\"UUID\" className={`${inputCls} font-mono text-xs`} />\n </div>\n )}\n {sub.reaction_type === 'mcp_query' && (\n <div>\n <label className={labelCls}>Prompt *</label>\n <textarea value={sub.mcp_prompt} onChange={(e) => updateSub(selected, 'mcp_prompt', e.target.value)} placeholder=\"Analyze the error...\" rows={2} className={`${inputCls} resize-none`} />\n </div>\n )}\n </div>\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 <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 </div>\n </div>\n )}\n </div>\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 { useWorkflowConfigs } from '../../../api/workflows';\nimport { useYamlWorkflows } from '../../../api/yaml-workflows';\nimport type { AgentFormState, ScheduleFormState } from './agent-form-types';\nimport { EMPTY_SCHEDULE, sectionCls, labelCls, 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 { data: configs } = useWorkflowConfigs();\n const invocableWorkflows = (configs ?? []).filter((c: any) => c.invocable).map((c: any) => c.workflow_type);\n const { data: pipelineData } = useYamlWorkflows({ status: 'active' });\n const pipelines = (pipelineData?.workflows ?? []).map((w: any) => ({ id: w.id, name: w.graph_topic || w.id }));\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 agent 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 workflow + As identity — 2 col */}\n <div className=\"grid grid-cols-2 gap-6\">\n <div className=\"space-y-4\">\n <label className={sectionCls}>Run this workflow</label>\n <div className=\"flex gap-3\">\n {(['durable', 'pipeline'] as const).map((rt) => (\n <label key={rt} className=\"flex items-center gap-1 text-[11px] text-text-secondary cursor-pointer\">\n <input type=\"radio\" name={`sched-reaction-${selected}`} checked={sched.reaction_type === rt} onChange={() => updateSched(selected, 'reaction_type', rt)} className=\"accent-accent w-3 h-3\" />\n {rt === 'durable' ? 'Workflow' : 'Pipeline'}\n </label>\n ))}\n </div>\n {sched.reaction_type === 'pipeline' ? (\n <div>\n <label className={labelCls}>Pipeline *</label>\n <select value={sched.pipeline_id} onChange={(e) => updateSched(selected, 'pipeline_id', e.target.value)} className={inputCls}>\n <option value=\"\">Select...</option>\n {pipelines.map((p: { id: string; name: string }) => <option key={p.id} value={p.id}>{p.name}</option>)}\n </select>\n <p className={hintCls}>YAML pipeline invoked on each cron tick.</p>\n </div>\n ) : (\n <div>\n <label className={labelCls}>Workflow *</label>\n <select value={sched.workflow_type} onChange={(e) => updateSched(selected, 'workflow_type', e.target.value)} className={inputCls}>\n <option value=\"\">Select...</option>\n {invocableWorkflows.map((wt: string) => <option key={wt} value={wt}>{wt}</option>)}\n </select>\n <p className={hintCls}>Invoked on each cron tick.</p>\n </div>\n )}\n </div>\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 </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 agent 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 { 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: 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 Agent' : `Agent: ${existing?.name ?? ''}`}\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 Agent' : '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","CATEGORY_COLORS","SubscriptionsStep","configs","useWorkflowConfigs","topicsData","useTopics","catalogTopics","invocableWorkflows","c","selected","setSelected","useState","updateSub","index","field","value","next","addSub","removeSub","_","i","subs","sub","isComplete","selectedCatalogEntry","Radio","Plus","Trash2","TopicCombobox","v","rt","wt","RunAsSelector","onChange","topics","open","setOpen","filter","setFilter","inputRef","useRef","containerRef","useEffect","handleClick","filterText","filtered","t","catCls","CRON_PRESETS","describeCron","expr","ScheduleStep","pipelineData","useYamlWorkflows","pipelines","w","updateSched","addSched","removeSched","scheds","sched","Clock","p","Section","Icon","color","title","children","Field","label","ReviewStep","Bot","Compass","EventTopicPill","WorkflowPill","CronLabel","SECTIONS","Check","AgentConfigPage","id","useParams","isNew","navigate","useNavigate","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","active"],"mappings":"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"}
|
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
import{j as e,u as $,N as S}from"./index-CCOSf1PY.js";import{a as f}from"./vendor-query-DLp59M9_.js";import{a as q,b as _,c as T}from"./agents-Dga6NU7U.js";import{u as B,C as j}from"./CronLabel-DRmO5rH0.js";import{i as R}from"./useEventHooks-VaJ52jMm.js";import{E as V}from"./EventTopicPill-CB_rIGlL.js";import{W as D}from"./WorkflowPill-7vt2F6wR.js";import{a as W,B as L,D as z,P as I,aA as K,m as M,aB as U,R as y,a1 as F,d as H,aC as G}from"./vendor-icons-CBOM6Es0.js";import{e as J,c as O}from"./vendor-react-Co3Y8ikm.js";function X(t){return new Date(t).toLocaleTimeString("en-US",{hour12:!1,hour:"2-digit",minute:"2-digit",second:"2-digit"})}function c({icon:t,color:n,children:a,actions:d}){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:26,columnNumber:9},this),e.jsxDEV("h2",{className:"text-xs font-semibold uppercase tracking-widest text-accent/80",children:a},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/AgentDetailPage.tsx",lineNumber:27,columnNumber:9},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/agents/AgentDetailPage.tsx",lineNumber:25,columnNumber:7},this),d]},void 0,!0,{fileName:"/app/dashboard/src/pages/agents/AgentDetailPage.tsx",lineNumber:24,columnNumber:5},this)}function b({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:35,columnNumber:10},this)}let Y=0;function Q(t){const[n,a]=f.useState([]),[d,m]=f.useState(!1),g=f.useCallback(r=>{var p,N,i;if((p=r.type)!=null&&p.startsWith("mesh.")||t&&r.workflowName!==t)return;const u=r.activityName||((N=r.data)==null?void 0:N.domain)||((i=r.workflowId)==null?void 0:i.slice(0,16))||"";a(x=>[{id:++Y,type:r.type,timestamp:r.timestamp,label:u},...x].slice(0,10)),m(!0),setTimeout(()=>m(!1),2e3)},[t]);return $(`${S}.>`,g),{events:n,pulse:d}}function oe(){var v,A,E,P;const{id:t}=J(),n=O(),{data:a,isLoading:d}=q(t??null),{data:m}=B(t??null),g=_(),r=T(),{events:u,pulse:p}=Q((a==null?void 0:a.workflow_type)??void 0);if(R(),d)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:71,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:71,columnNumber:107},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/agents/AgentDetailPage.tsx",lineNumber:71,columnNumber:12},this);if(!a)return e.jsxDEV("div",{className:"flex flex-col items-center justify-center py-20 text-center",children:[e.jsxDEV(W,{className:"w-12 h-12 text-text-quaternary mb-4",strokeWidth:1},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/AgentDetailPage.tsx",lineNumber:77,columnNumber:9},this),e.jsxDEV("h2",{className:"text-lg font-medium text-text-primary mb-2",children:"Agent not found"},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/AgentDetailPage.tsx",lineNumber:78,columnNumber:9},this),e.jsxDEV("button",{onClick:()=>n("/agents"),className:"text-sm text-accent hover:text-accent-hover transition-colors",children:"Back to agents"},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/AgentDetailPage.tsx",lineNumber:79,columnNumber:9},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/agents/AgentDetailPage.tsx",lineNumber:76,columnNumber:7},this);const N=a.status==="active"?"bg-emerald-400":a.status==="paused"?"bg-amber-400":a.status==="error"?"bg-red-400":"bg-zinc-500",i=(m==null?void 0:m.subscriptions)??[],x=a.status==="active"?"Active":a.status==="paused"?"Paused":a.status==="error"?"Error":"Inactive",l=(v=a.behaviors)==null?void 0:v.schedules,h=(A=a.behaviors)==null?void 0:A.cron,o=(l==null?void 0:l.length)||(h?1:0),w=()=>{const s=[`Pause "${a.name}"?`,"","This will:",i.length>0?`• Stop ${i.length} event subscription${i.length!==1?"s":""}`:null,o>0?`• Stop ${o} schedule${o!==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"})},k=()=>{const s=[`Delete "${a.name}"?`,"","This permanently removes:","• The agent configuration",i.length>0?`• ${i.length} event subscription${i.length!==1?"s":""}`:null,o>0?`• ${o} schedule${o!==1?"s":""}`:null,"","Knowledge entries and workflow history are preserved."].filter(Boolean).join(`
|
|
3
|
-
`);confirm(s)&&r.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:["Agent: ",a.name]},void 0,!0,{fileName:"/app/dashboard/src/pages/agents/AgentDetailPage.tsx",lineNumber:123,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:"Agent docs",children:e.jsxDEV(L,{className:"w-4 h-4",strokeWidth:1.5},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/AgentDetailPage.tsx",lineNumber:125,columnNumber:13},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/AgentDetailPage.tsx",lineNumber:124,columnNumber:11},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/agents/AgentDetailPage.tsx",lineNumber:122,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 ${N}`},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/AgentDetailPage.tsx",lineNumber:130,columnNumber:13},this),e.jsxDEV("span",{className:"text-xs text-text-secondary capitalize",children:x},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/AgentDetailPage.tsx",lineNumber:131,columnNumber:13},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/agents/AgentDetailPage.tsx",lineNumber:129,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(z,{className:"w-3 h-3"},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/AgentDetailPage.tsx",lineNumber:134,columnNumber:13},this)," Edit"]},void 0,!0,{fileName:"/app/dashboard/src/pages/agents/AgentDetailPage.tsx",lineNumber:133,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(I,{className:"w-3 h-3"},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/AgentDetailPage.tsx",lineNumber:138,columnNumber:15},this)," Activate"]},void 0,!0,{fileName:"/app/dashboard/src/pages/agents/AgentDetailPage.tsx",lineNumber:137,columnNumber:13},this),a.status==="active"&&e.jsxDEV("button",{onClick:w,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(K,{className:"w-3 h-3"},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/AgentDetailPage.tsx",lineNumber:143,columnNumber:15},this)," Pause"]},void 0,!0,{fileName:"/app/dashboard/src/pages/agents/AgentDetailPage.tsx",lineNumber:142,columnNumber:13},this),e.jsxDEV("button",{onClick:k,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(M,{className:"w-3 h-3"},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/AgentDetailPage.tsx",lineNumber:147,columnNumber:13},this)," Delete"]},void 0,!0,{fileName:"/app/dashboard/src/pages/agents/AgentDetailPage.tsx",lineNumber:146,columnNumber:11},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/agents/AgentDetailPage.tsx",lineNumber:128,columnNumber:9},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/agents/AgentDetailPage.tsx",lineNumber:121,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:155,columnNumber:11},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/AgentDetailPage.tsx",lineNumber:154,columnNumber:9},this),(a.goals||a.rules)&&e.jsxDEV("div",{className:"mb-10",children:[e.jsxDEV(c,{icon:U,color:"text-rose-400",children:"Motivation"},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/AgentDetailPage.tsx",lineNumber:162,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:166,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:167,columnNumber:17},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/agents/AgentDetailPage.tsx",lineNumber:165,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:172,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:173,columnNumber:17},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/agents/AgentDetailPage.tsx",lineNumber:171,columnNumber:15},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/agents/AgentDetailPage.tsx",lineNumber:163,columnNumber:11},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/agents/AgentDetailPage.tsx",lineNumber:161,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(c,{icon:y,color:"text-cyan-400",children:["Subscriptions (",i.length,")"]},void 0,!0,{fileName:"/app/dashboard/src/pages/agents/AgentDetailPage.tsx",lineNumber:185,columnNumber:11},this),i.length===0?e.jsxDEV(b,{text:"No event subscriptions"},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/AgentDetailPage.tsx",lineNumber:189,columnNumber:13},this):e.jsxDEV("div",{className:"divide-y divide-surface-border/30",children:i.map(s=>e.jsxDEV("div",{className:"flex items-center py-2",children:[e.jsxDEV("div",{className:"flex-1 min-w-0",children:e.jsxDEV(V,{topic:s.topic},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/AgentDetailPage.tsx",lineNumber:194,columnNumber:51},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/AgentDetailPage.tsx",lineNumber:194,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:196,columnNumber:21},this),e.jsxDEV(D,{type:s.workflow_type||"mcp-query",variant:s.reaction_type==="pipeline"?"pipeline":"durable"},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/AgentDetailPage.tsx",lineNumber:197,columnNumber:21},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/agents/AgentDetailPage.tsx",lineNumber:195,columnNumber:19},this)]},s.id,!0,{fileName:"/app/dashboard/src/pages/agents/AgentDetailPage.tsx",lineNumber:193,columnNumber:17},this))},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/AgentDetailPage.tsx",lineNumber:191,columnNumber:13},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/agents/AgentDetailPage.tsx",lineNumber:184,columnNumber:9},this),e.jsxDEV("div",{children:[e.jsxDEV(c,{icon:F,color:"text-amber-400",children:["Schedules (",o,")"]},void 0,!0,{fileName:"/app/dashboard/src/pages/agents/AgentDetailPage.tsx",lineNumber:207,columnNumber:11},this),l!=null&&l.length?e.jsxDEV("div",{className:"divide-y divide-surface-border/30",children:l.map((s,C)=>e.jsxDEV("div",{className:"flex items-center py-2",children:[e.jsxDEV("div",{className:"flex-1 min-w-0",children:e.jsxDEV(j,{cron:s.cron},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/AgentDetailPage.tsx",lineNumber:212,columnNumber:51},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/AgentDetailPage.tsx",lineNumber:212,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:213,columnNumber:71},this),e.jsxDEV(D,{type:s.workflow_type||"workflow"},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/AgentDetailPage.tsx",lineNumber:213,columnNumber:130},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/agents/AgentDetailPage.tsx",lineNumber:213,columnNumber:19},this)]},C,!0,{fileName:"/app/dashboard/src/pages/agents/AgentDetailPage.tsx",lineNumber:211,columnNumber:17},this))},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/AgentDetailPage.tsx",lineNumber:209,columnNumber:13},this):h?e.jsxDEV("div",{className:"flex items-center py-1",children:[e.jsxDEV("div",{className:"flex-1 min-w-0",children:e.jsxDEV(j,{cron:h},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/AgentDetailPage.tsx",lineNumber:219,columnNumber:47},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/AgentDetailPage.tsx",lineNumber:219,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:220,columnNumber:91},this),e.jsxDEV(D,{type:a.workflow_type},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/AgentDetailPage.tsx",lineNumber:220,columnNumber:150},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/agents/AgentDetailPage.tsx",lineNumber:220,columnNumber:39},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/agents/AgentDetailPage.tsx",lineNumber:218,columnNumber:13},this):e.jsxDEV(b,{text:"No schedules configured"},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/AgentDetailPage.tsx",lineNumber:223,columnNumber:13},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/agents/AgentDetailPage.tsx",lineNumber:206,columnNumber:9},this),e.jsxDEV("div",{className:"space-y-10",children:[e.jsxDEV("div",{children:[e.jsxDEV(c,{icon:H,color:"text-emerald-400",children:"Knowledge"},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/AgentDetailPage.tsx",lineNumber:230,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:233,columnNumber:17},this),e.jsxDEV("span",{className:"text-[10px] text-text-quaternary",children:[((P=(E=a.stats)==null?void 0:E.knowledge_count)==null?void 0:P.toLocaleString())??0," entries"]},void 0,!0,{fileName:"/app/dashboard/src/pages/agents/AgentDetailPage.tsx",lineNumber:234,columnNumber:17},this),e.jsxDEV(G,{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:235,columnNumber:17},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/agents/AgentDetailPage.tsx",lineNumber:232,columnNumber:15},this):e.jsxDEV(b,{text:"No knowledge domain"},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/AgentDetailPage.tsx",lineNumber:238,columnNumber:15},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/agents/AgentDetailPage.tsx",lineNumber:229,columnNumber:11},this),e.jsxDEV("div",{children:[e.jsxDEV(c,{icon:y,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 ${p?"bg-emerald-400":"bg-zinc-600"}`},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/AgentDetailPage.tsx",lineNumber:246,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:247,columnNumber:19},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/agents/AgentDetailPage.tsx",lineNumber:245,columnNumber:17},this),children:"Activity"},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/AgentDetailPage.tsx",lineNumber:243,columnNumber:13},this),u.length===0?e.jsxDEV(b,{text:"Events appear here as the agent runs"},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/AgentDetailPage.tsx",lineNumber:254,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:260,columnNumber:23},this),e.jsxDEV("span",{className:"text-[10px] text-text-quaternary shrink-0 ml-2",children:X(s.timestamp)},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/AgentDetailPage.tsx",lineNumber:261,columnNumber:23},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/agents/AgentDetailPage.tsx",lineNumber:259,columnNumber:21},this),e.jsxDEV(V,{topic:s.type},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/AgentDetailPage.tsx",lineNumber:263,columnNumber:21},this)]},s.id,!0,{fileName:"/app/dashboard/src/pages/agents/AgentDetailPage.tsx",lineNumber:258,columnNumber:19},this))},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/AgentDetailPage.tsx",lineNumber:256,columnNumber:15},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/agents/AgentDetailPage.tsx",lineNumber:242,columnNumber:11},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/agents/AgentDetailPage.tsx",lineNumber:228,columnNumber:9},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/agents/AgentDetailPage.tsx",lineNumber:181,columnNumber:7},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/agents/AgentDetailPage.tsx",lineNumber:119,columnNumber:5},this)}export{oe as AgentDetailPage};
|
|
4
|
-
//# sourceMappingURL=AgentDetailPage-Dbx2t-Uk.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"AgentDetailPage-Dbx2t-Uk.js","sources":["../../src/pages/agents/AgentDetailPage.tsx"],"sourcesContent":["import { useState, useCallback } from 'react';\nimport { useParams, useNavigate } from 'react-router-dom';\nimport {\n Bot, Play, Pause, Trash2, ArrowRight, Pencil, BookOpen,\n Radio, Clock, Brain, Compass,\n} from 'lucide-react';\nimport { useAgent, useUpdateAgent, useDeleteAgent } from '../../api/agents';\nimport { useAgentSubscriptions } from '../../api/agent-subscriptions';\nimport { useAgentEvents } from '../../hooks/useEventHooks';\nimport { useEventSubscription } from '../../hooks/useEventContext';\nimport { NATS_SUBJECT_PREFIX } from '../../lib/nats/config';\nimport { EventTopicPill } from '../../components/common/display/EventTopicPill';\nimport { CronLabel } from '../../components/common/display/CronLabel';\nimport { WorkflowPill } from '../../components/common/display/WorkflowPill';\n\n// ── Helpers ─────────────────────────────────────────────────────────────────\n\nfunction formatTime(iso: string): string {\n return new Date(iso).toLocaleTimeString('en-US', { hour12: false, hour: '2-digit', minute: '2-digit', second: '2-digit' });\n}\n\nfunction SectionHeader({ icon: Icon, color, children, actions }: { icon: React.ElementType; color: string; children: React.ReactNode; actions?: React.ReactNode }) {\n return (\n <div className=\"flex items-center justify-between mb-3 pb-2 border-b border-surface-border\">\n <div className=\"flex items-center gap-2\">\n <Icon className={`w-4 h-4 ${color}`} strokeWidth={1.5} />\n <h2 className=\"text-xs font-semibold uppercase tracking-widest text-accent/80\">{children}</h2>\n </div>\n {actions}\n </div>\n );\n}\n\nfunction EmptyHint({ text }: { text: string }) {\n return <p className=\"text-[11px] text-text-quaternary py-2\">{text}</p>;\n}\n\n// ── Live feed ───────────────────────────────────────────────────────────────\n\ninterface FeedEvent { id: number; type: string; timestamp: string; label: string; }\nlet feedCounter = 0;\n\nfunction useAgentFeed(workflowName?: string) {\n const [events, setEvents] = useState<FeedEvent[]>([]);\n const [pulse, setPulse] = useState(false);\n const handler = useCallback((event: any) => {\n if (event.type?.startsWith('mesh.')) return;\n if (workflowName && event.workflowName !== workflowName) return;\n const label = event.activityName || event.data?.domain || event.workflowId?.slice(0, 16) || '';\n setEvents((prev) => [{ id: ++feedCounter, type: event.type, timestamp: event.timestamp, label }, ...prev].slice(0, 10));\n setPulse(true);\n setTimeout(() => setPulse(false), 2000);\n }, [workflowName]);\n useEventSubscription(`${NATS_SUBJECT_PREFIX}.>`, handler);\n return { events, pulse };\n}\n\n// ── Page ─────────────────────────────────────────────────────────────────────\n\nexport function AgentDetailPage() {\n const { id } = useParams<{ id: string }>();\n const navigate = useNavigate();\n const { data: agent, isLoading } = useAgent(id ?? null);\n const { data: subsData } = useAgentSubscriptions(id ?? null);\n const updateMutation = useUpdateAgent();\n const deleteMutation = useDeleteAgent();\n const { events: liveEvents, pulse } = useAgentFeed(agent?.workflow_type ?? undefined);\n useAgentEvents();\n\n if (isLoading) {\n return <div className=\"animate-pulse space-y-4\"><div className=\"h-8 bg-surface-sunken rounded w-48\" /><div className=\"h-40 bg-surface-sunken rounded\" /></div>;\n }\n\n if (!agent) {\n return (\n <div className=\"flex flex-col items-center justify-center py-20 text-center\">\n <Bot className=\"w-12 h-12 text-text-quaternary mb-4\" strokeWidth={1} />\n <h2 className=\"text-lg font-medium text-text-primary mb-2\">Agent not found</h2>\n <button onClick={() => navigate('/agents')} className=\"text-sm text-accent hover:text-accent-hover transition-colors\">Back to agents</button>\n </div>\n );\n }\n\n const statusDot = agent.status === 'active' ? 'bg-emerald-400' : agent.status === 'paused' ? 'bg-amber-400' : agent.status === 'error' ? 'bg-red-400' : 'bg-zinc-500';\n const subs = subsData?.subscriptions ?? [];\n const statusLabel = agent.status === 'active' ? 'Active' : agent.status === 'paused' ? 'Paused' : agent.status === 'error' ? 'Error' : 'Inactive';\n const schedules = (agent.behaviors as any)?.schedules as any[] | undefined;\n const legacyCron = agent.behaviors?.cron;\n const schedCount = schedules?.length || (legacyCron ? 1 : 0);\n\n const handlePause = () => {\n const msg = [\n `Pause \"${agent.name}\"?`,\n '',\n 'This will:',\n subs.length > 0 ? `• Stop ${subs.length} event subscription${subs.length !== 1 ? 's' : ''}` : null,\n schedCount > 0 ? `• Stop ${schedCount} schedule${schedCount !== 1 ? 's' : ''}` : null,\n '',\n 'Knowledge and workflow history are preserved. You can reactivate anytime.',\n ].filter(Boolean).join('\\n');\n if (confirm(msg)) updateMutation.mutate({ id: agent.id, status: 'paused' as any });\n };\n\n const handleDelete = () => {\n const msg = [\n `Delete \"${agent.name}\"?`,\n '',\n 'This permanently removes:',\n '• The agent configuration',\n subs.length > 0 ? `• ${subs.length} event subscription${subs.length !== 1 ? 's' : ''}` : null,\n schedCount > 0 ? `• ${schedCount} schedule${schedCount !== 1 ? 's' : ''}` : null,\n '',\n 'Knowledge entries and workflow history are preserved.',\n ].filter(Boolean).join('\\n');\n if (confirm(msg)) deleteMutation.mutate(agent.id, { onSuccess: () => navigate('/agents') });\n };\n\n return (\n <div>\n {/* ── Hero ──────────────────────────────────────────────────────────── */}\n <div className=\"flex items-start justify-between mb-3\">\n <div className=\"flex items-center gap-2\">\n <h1 className=\"text-3xl font-light text-text-primary\">Agent: {agent.name}</h1>\n <button onClick={() => { window.location.hash = '#docs:agents.md'; }} className=\"text-text-quaternary hover:text-accent transition-colors mt-1\" title=\"Agent docs\">\n <BookOpen className=\"w-4 h-4\" strokeWidth={1.5} />\n </button>\n </div>\n <div className=\"flex items-center gap-3\">\n <div className=\"flex items-center gap-1.5 mr-2\">\n <span className={`w-2 h-2 rounded-full ${statusDot}`} />\n <span className=\"text-xs text-text-secondary capitalize\">{statusLabel}</span>\n </div>\n <button onClick={() => navigate(`/agents/${agent.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\">\n <Pencil className=\"w-3 h-3\" /> Edit\n </button>\n {agent.status !== 'active' && (\n <button onClick={() => updateMutation.mutate({ id: agent.id, status: 'active' as any })} 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\">\n <Play className=\"w-3 h-3\" /> Activate\n </button>\n )}\n {agent.status === 'active' && (\n <button onClick={handlePause} 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\">\n <Pause className=\"w-3 h-3\" /> Pause\n </button>\n )}\n <button onClick={handleDelete} 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\">\n <Trash2 className=\"w-3 h-3\" /> Delete\n </button>\n </div>\n </div>\n\n {/* Description callout */}\n {agent.description && (\n <div className=\"border-l-2 border-accent/30 pl-4 py-1 mb-10\">\n <p className=\"text-[13px] text-text-secondary italic leading-relaxed\">{agent.description}</p>\n </div>\n )}\n\n {/* Motivation */}\n {(agent.goals || agent.rules) && (\n <div className=\"mb-10\">\n <SectionHeader icon={Compass} color=\"text-rose-400\">Motivation</SectionHeader>\n <div className=\"grid grid-cols-2 gap-x-14 bg-surface-sunken/20 rounded-lg px-5 py-4\">\n {agent.goals && (\n <div>\n <p className=\"text-[9px] text-text-quaternary uppercase tracking-widest mb-1.5\">Goals</p>\n <p className=\"text-[13px] text-text-primary leading-relaxed\">{agent.goals}</p>\n </div>\n )}\n {agent.rules && (\n <div>\n <p className=\"text-[9px] text-text-quaternary uppercase tracking-widest mb-1.5\">Rules</p>\n <p className=\"text-[13px] text-text-primary leading-relaxed\">{agent.rules}</p>\n </div>\n )}\n </div>\n </div>\n )}\n\n {/* ── 3-column grid ─────────────────────────────────────────────────── */}\n <div className=\"grid grid-cols-1 lg:grid-cols-3 gap-x-14 gap-y-10\">\n\n {/* Col 1: Subscriptions */}\n <div>\n <SectionHeader icon={Radio} color=\"text-cyan-400\">\n Subscriptions ({subs.length})\n </SectionHeader>\n {subs.length === 0 ? (\n <EmptyHint text=\"No event subscriptions\" />\n ) : (\n <div className=\"divide-y divide-surface-border/30\">\n {subs.map((sub: any) => (\n <div key={sub.id} className=\"flex items-center py-2\">\n <div className=\"flex-1 min-w-0\"><EventTopicPill topic={sub.topic} /></div>\n <div className=\"flex items-center gap-1.5 shrink-0\">\n <span className=\"text-text-quaternary text-[10px]\">→</span>\n <WorkflowPill type={sub.workflow_type || 'mcp-query'} variant={sub.reaction_type === 'pipeline' ? 'pipeline' : 'durable'} />\n </div>\n </div>\n ))}\n </div>\n )}\n </div>\n\n {/* Col 2: Schedules */}\n <div>\n <SectionHeader icon={Clock} color=\"text-amber-400\">Schedules ({schedCount})</SectionHeader>\n {schedules?.length ? (\n <div className=\"divide-y divide-surface-border/30\">\n {schedules.map((s: any, i: number) => (\n <div key={i} className=\"flex items-center py-2\">\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><WorkflowPill type={s.workflow_type || 'workflow'} /></div>\n </div>\n ))}\n </div>\n ) : legacyCron ? (\n <div className=\"flex items-center py-1\">\n <div className=\"flex-1 min-w-0\"><CronLabel cron={legacyCron} /></div>\n {agent.workflow_type && <div className=\"flex items-center gap-1.5 shrink-0\"><span className=\"text-text-quaternary text-[10px]\">→</span><WorkflowPill type={agent.workflow_type} /></div>}\n </div>\n ) : (\n <EmptyHint text=\"No schedules configured\" />\n )}\n </div>\n\n {/* Col 3: Knowledge + Activity */}\n <div className=\"space-y-10\">\n <div>\n <SectionHeader icon={Brain} color=\"text-emerald-400\">Knowledge</SectionHeader>\n {agent.knowledge_domain ? (\n <button onClick={() => navigate(`/knowledge?domain=${agent.knowledge_domain}`)} className=\"group text-left flex items-center gap-3\">\n <span className=\"text-sm font-mono text-text-primary group-hover:text-accent transition-colors\">{agent.knowledge_domain}</span>\n <span className=\"text-[10px] text-text-quaternary\">{agent.stats?.knowledge_count?.toLocaleString() ?? 0} entries</span>\n <ArrowRight className=\"w-3 h-3 text-accent opacity-0 group-hover:opacity-100 transition-opacity\" />\n </button>\n ) : (\n <EmptyHint text=\"No knowledge domain\" />\n )}\n </div>\n\n <div>\n <SectionHeader icon={Radio} color=\"text-cyan-400\"\n actions={\n <div className=\"flex items-center gap-1.5\">\n <span className={`w-1.5 h-1.5 rounded-full transition-colors duration-500 ${pulse ? 'bg-emerald-400' : 'bg-zinc-600'}`} />\n <span className=\"text-[10px] text-text-quaternary\">live</span>\n </div>\n }\n >\n Activity\n </SectionHeader>\n {liveEvents.length === 0 ? (\n <EmptyHint text=\"Events appear here as the agent runs\" />\n ) : (\n <div className=\"space-y-1.5\">\n {liveEvents.map((ev) => (\n <div key={ev.id}>\n <div className=\"flex items-center justify-between mb-0.5\">\n <span className=\"text-[11px] text-text-primary font-mono truncate flex-1\">{ev.label || '—'}</span>\n <span className=\"text-[10px] text-text-quaternary shrink-0 ml-2\">{formatTime(ev.timestamp)}</span>\n </div>\n <EventTopicPill topic={ev.type} />\n </div>\n ))}\n </div>\n )}\n </div>\n </div>\n </div>\n </div>\n );\n}\n"],"names":["formatTime","iso","SectionHeader","Icon","color","children","actions","jsxDEV","EmptyHint","text","feedCounter","useAgentFeed","workflowName","events","setEvents","useState","pulse","setPulse","handler","useCallback","event","_a","label","_b","_c","prev","useEventSubscription","NATS_SUBJECT_PREFIX","AgentDetailPage","id","useParams","navigate","useNavigate","agent","isLoading","useAgent","subsData","useAgentSubscriptions","updateMutation","useUpdateAgent","deleteMutation","useDeleteAgent","liveEvents","useAgentEvents","Bot","statusDot","subs","statusLabel","schedules","legacyCron","schedCount","handlePause","msg","handleDelete","BookOpen","Pencil","Play","Pause","Trash2","Compass","Radio","sub","EventTopicPill","WorkflowPill","Clock","i","CronLabel","Brain","_d","ArrowRight","ev"],"mappings":"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"}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{j as e,c as u}from"./index-CCOSf1PY.js";import{u as g}from"./agents-Dga6NU7U.js";import{i as c}from"./useEventHooks-VaJ52jMm.js";import{u as p}from"./useFilterParams-CGRYFw_A.js";import{D as b}from"./DataTable-J5R6mepB.js";import{S as N}from"./StickyPagination-CGk8VAKt.js";import{F as f,b as x}from"./FilterBar-Bdssa-Xn.js";import{P as h}from"./PageHeader-COcgWWf-.js";import{L as v}from"./ListToolbar-jy8NL6ll.js";import{O as P}from"./vendor-icons-CBOM6Es0.js";import{c as A}from"./vendor-react-Co3Y8ikm.js";import"./vendor-query-DLp59M9_.js";import"./EmptyState-BXGvOADa.js";const D=[{value:"active",label:"Active"},{value:"inactive",label:"Inactive"},{value:"paused",label:"Paused"},{value:"error",label:"Error"}],E=[{key:"name",label:"Agent",render:a=>e.jsxDEV("div",{className:"flex items-center gap-2",children:[e.jsxDEV("span",{className:`w-1.5 h-1.5 rounded-full shrink-0 ${a.status==="active"?"bg-emerald-400":a.status==="paused"?"bg-amber-400":a.status==="error"?"bg-red-400":"bg-zinc-500"}`},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/AgentsPage.tsx",lineNumber:26,columnNumber:9},void 0),e.jsxDEV("div",{className:"min-w-0",children:[e.jsxDEV("span",{className:"text-xs font-medium text-text-primary block",children:a.name},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/AgentsPage.tsx",lineNumber:28,columnNumber:11},void 0),a.description&&e.jsxDEV("p",{className:"text-[10px] text-text-tertiary truncate",children:a.description},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/AgentsPage.tsx",lineNumber:29,columnNumber:31},void 0)]},void 0,!0,{fileName:"/app/dashboard/src/pages/agents/AgentsPage.tsx",lineNumber:27,columnNumber:9},void 0)]},void 0,!0,{fileName:"/app/dashboard/src/pages/agents/AgentsPage.tsx",lineNumber:25,columnNumber:7},void 0)},{key:"knowledge_domain",label:"Knowledge",render:a=>a.knowledge_domain?e.jsxDEV("span",{className:"text-[10px] font-mono text-text-secondary whitespace-nowrap",children:a.knowledge_domain},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/AgentsPage.tsx",lineNumber:38,columnNumber:9},void 0):e.jsxDEV("span",{className:"text-text-quaternary",children:"—"},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/AgentsPage.tsx",lineNumber:39,columnNumber:9},void 0),className:"w-28"},{key:"schedules",label:"Schedules",render:a=>{var s,n;const t=(s=a.behaviors)==null?void 0:s.schedules,r=t!=null&&t.length?t.map(l=>l.cron):(n=a.behaviors)!=null&&n.cron?[a.behaviors.cron]:[];return r.length?e.jsxDEV("span",{className:"text-[10px] font-mono text-text-secondary whitespace-nowrap",children:[r[0],r.length>1?` +${r.length-1}`:""]},void 0,!0,{fileName:"/app/dashboard/src/pages/agents/AgentsPage.tsx",lineNumber:49,columnNumber:14},void 0):e.jsxDEV("span",{className:"text-text-quaternary",children:"—"},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/AgentsPage.tsx",lineNumber:48,columnNumber:33},void 0)},className:"w-28"},{key:"subscriptions",label:"Subscriptions",render:a=>{var n;const t=a.subscription_count??0,r=a.sub_topics??[];if(!t)return e.jsxDEV("span",{className:"text-text-quaternary",children:"—"},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/AgentsPage.tsx",lineNumber:59,columnNumber:26},void 0);const s=((n=r[0])==null?void 0:n.replace(/^lt\.events\./,""))??"";return e.jsxDEV("span",{className:"text-[10px] font-mono text-text-secondary whitespace-nowrap",children:[s,t>1?` +${t-1}`:""]},void 0,!0,{fileName:"/app/dashboard/src/pages/agents/AgentsPage.tsx",lineNumber:61,columnNumber:14},void 0)},className:"w-36"},{key:"last_run_at",label:"Last Run",render:a=>a.last_run_at?e.jsxDEV("span",{className:"whitespace-nowrap",children:e.jsxDEV(u,{date:a.last_run_at},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/AgentsPage.tsx",lineNumber:69,columnNumber:45},void 0)},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/AgentsPage.tsx",lineNumber:69,columnNumber:9},void 0):e.jsxDEV("span",{className:"text-text-quaternary",children:"—"},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/AgentsPage.tsx",lineNumber:70,columnNumber:9},void 0),className:"w-32"}];function L(){const a=A();c();const{filters:t,setFilter:r,pagination:s}=p({filters:{status:""}}),{data:n,isLoading:l,refetch:m,isFetching:d}=g({status:t.status||void 0,limit:s.pageSize,offset:s.offset}),o=(n==null?void 0:n.total)??0;return e.jsxDEV("div",{children:[e.jsxDEV(h,{title:"Agents",docsHash:"#docs:agents.md",actions:e.jsxDEV("button",{onClick:()=>a("/agents/new"),className:"flex items-center gap-2 px-4 py-2 text-sm rounded-md bg-accent text-text-inverse hover:bg-accent-hover transition-colors",children:[e.jsxDEV(P,{className:"w-4 h-4"},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/AgentsPage.tsx",lineNumber:101,columnNumber:13},this)," Create Agent"]},void 0,!0,{fileName:"/app/dashboard/src/pages/agents/AgentsPage.tsx",lineNumber:97,columnNumber:11},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/AgentsPage.tsx",lineNumber:93,columnNumber:7},this),e.jsxDEV(f,{actions:e.jsxDEV(v,{onRefresh:()=>m(),isFetching:d,apiPath:`/agents?limit=${s.pageSize}&offset=${s.offset}${t.status?`&status=${t.status}`:""}`},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/AgentsPage.tsx",lineNumber:107,columnNumber:9},this),children:e.jsxDEV(x,{label:"Status",value:t.status,onChange:i=>r("status",i),options:D},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/AgentsPage.tsx",lineNumber:113,columnNumber:9},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/AgentsPage.tsx",lineNumber:106,columnNumber:7},this),e.jsxDEV(b,{columns:E,data:(n==null?void 0:n.agents)??[],keyFn:i=>i.id,onRowClick:i=>a(`/agents/${i.id}`),isLoading:l,emptyMessage:"No agents found"},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/AgentsPage.tsx",lineNumber:121,columnNumber:7},this),e.jsxDEV(N,{page:s.page,totalPages:s.totalPages(o),onPageChange:s.setPage,total:o,pageSize:s.pageSize,onPageSizeChange:s.setPageSize},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/AgentsPage.tsx",lineNumber:130,columnNumber:7},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/agents/AgentsPage.tsx",lineNumber:92,columnNumber:5},this)}export{L as AgentsPage};
|
|
2
|
-
//# sourceMappingURL=AgentsPage-Bz61Nl-x.js.map
|