@hotmeshio/long-tail 0.1.5 → 0.1.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +34 -4
- package/build/lib/db/migrate.js +3 -6
- package/{lib → build/lib}/db/schemas/001_schema.sql +3 -0
- package/{lib → build/lib}/db/schemas/011_system_workflow_configs.sql +7 -0
- package/build/lib/db/schemas/016_streamable_http.sql +7 -0
- package/build/routes/docs.js +25 -7
- package/build/routes/insight.js +63 -0
- package/build/routes/mcp.js +23 -1
- package/build/routes/yaml-workflows/cron.d.ts +2 -0
- package/build/routes/yaml-workflows/cron.js +117 -0
- package/build/routes/yaml-workflows/crud.js +38 -0
- package/build/routes/yaml-workflows/deployment.js +9 -34
- package/build/routes/yaml-workflows/index.js +4 -1
- package/build/services/cron/index.d.ts +17 -0
- package/build/services/cron/index.js +94 -1
- package/build/services/insight/index.d.ts +11 -0
- package/build/services/insight/index.js +30 -0
- package/build/services/mcp/client/connection.d.ts +9 -0
- package/build/services/mcp/client/connection.js +49 -1
- package/build/services/mcp/db-server/schemas.d.ts +2 -2
- package/build/services/mcp/db.d.ts +1 -1
- package/build/services/mcp/db.js +10 -0
- package/build/services/mcp/playwright-server/schemas.d.ts +4 -4
- package/build/services/mcp/sql.d.ts +1 -1
- package/build/services/mcp/sql.js +2 -2
- package/build/services/mcp/types.d.ts +3 -1
- package/build/services/yaml-workflow/db.d.ts +3 -0
- package/build/services/yaml-workflow/db.js +24 -0
- package/build/services/yaml-workflow/invoke.d.ts +19 -0
- package/build/services/yaml-workflow/invoke.js +80 -0
- package/build/services/yaml-workflow/pipeline/build/dag.js +1 -1
- package/build/services/yaml-workflow/pipeline/build/wiring.d.ts +1 -1
- package/build/services/yaml-workflow/pipeline/build/wiring.js +89 -2
- package/build/services/yaml-workflow/pipeline/prompts.d.ts +1 -1
- package/build/services/yaml-workflow/pipeline/prompts.js +44 -1
- package/build/services/yaml-workflow/sql.d.ts +3 -0
- package/build/services/yaml-workflow/sql.js +16 -1
- package/build/services/yaml-workflow/types.d.ts +13 -1
- package/build/services/yaml-workflow/workers/callbacks.js +9 -1
- package/build/services/yaml-workflow/workers/register.js +29 -1
- package/build/system/index.js +6 -0
- package/build/system/mcp-servers/admin/schemas.d.ts +12 -12
- package/build/system/mcp-servers/db-query/schemas.d.ts +2 -2
- package/build/system/mcp-servers/playwright/schemas.d.ts +18 -18
- package/build/system/mcp-servers/playwright-cli/schemas.d.ts +34 -34
- package/build/system/mcp-servers/playwright-cli/tools-capture.js +5 -1
- package/build/system/mcp-servers/vision.js +54 -17
- package/build/system/seed/server-definitions.d.ts +7 -0
- package/build/system/seed/server-definitions.js +5 -2
- package/build/system/seed/tool-manifests-workflows.d.ts +7 -0
- package/build/system/seed/tool-manifests-workflows.js +10 -3
- package/build/system/workflows/mcp-workflow-builder/activities/caches.d.ts +5 -0
- package/build/system/workflows/mcp-workflow-builder/activities/caches.js +8 -0
- package/build/system/workflows/mcp-workflow-builder/activities/index.d.ts +2 -0
- package/build/system/workflows/mcp-workflow-builder/activities/index.js +7 -0
- package/build/system/workflows/mcp-workflow-builder/activities/llm.d.ts +2 -0
- package/build/system/workflows/mcp-workflow-builder/activities/llm.js +25 -0
- package/build/system/workflows/mcp-workflow-builder/activities/tool-loader.d.ts +5 -0
- package/build/system/workflows/mcp-workflow-builder/activities/tool-loader.js +8 -0
- package/build/system/workflows/mcp-workflow-builder/index.d.ts +16 -0
- package/build/system/workflows/mcp-workflow-builder/index.js +229 -0
- package/build/system/workflows/mcp-workflow-builder/prompts.d.ts +8 -0
- package/build/system/workflows/mcp-workflow-builder/prompts.js +247 -0
- package/build/system/workflows/shared/tool-loader.js +3 -0
- package/build/tsconfig.tsbuildinfo +1 -1
- package/build/types/mcp.d.ts +4 -3
- package/build/types/yaml-workflow.d.ts +6 -2
- package/dashboard/dist/assets/AdminDashboard-BXkKGkb5.js +2 -0
- package/dashboard/dist/assets/{AdminDashboard-CTyAMUJR.js.map → AdminDashboard-BXkKGkb5.js.map} +1 -1
- package/dashboard/dist/assets/AvailableEscalationsPage-DcH592mc.js +2 -0
- package/dashboard/dist/assets/AvailableEscalationsPage-DcH592mc.js.map +1 -0
- package/dashboard/dist/assets/BotPicker-A6LtzyuO.js +2 -0
- package/dashboard/dist/assets/{BotPicker-C51nKFEu.js.map → BotPicker-A6LtzyuO.js.map} +1 -1
- package/dashboard/dist/assets/{CollapsibleSection-BSyfd8uL.js → CollapsibleSection-C7nL2_mv.js} +2 -2
- package/dashboard/dist/assets/{CollapsibleSection-BSyfd8uL.js.map → CollapsibleSection-C7nL2_mv.js.map} +1 -1
- package/dashboard/dist/assets/{ConfirmDeleteModal-CBdhia5T.js → ConfirmDeleteModal-CWFwJrSl.js} +2 -2
- package/dashboard/dist/assets/{ConfirmDeleteModal-CBdhia5T.js.map → ConfirmDeleteModal-CWFwJrSl.js.map} +1 -1
- package/dashboard/dist/assets/{CopyableId-dGlewBCS.js → CopyableId-DbZ5c3jh.js} +2 -2
- package/dashboard/dist/assets/{CopyableId-dGlewBCS.js.map → CopyableId-DbZ5c3jh.js.map} +1 -1
- package/dashboard/dist/assets/CredentialsPage-ClWkmLPu.js +2 -0
- package/dashboard/dist/assets/CredentialsPage-ClWkmLPu.js.map +1 -0
- package/dashboard/dist/assets/{CustomDurationPicker-BataWFj8.js → CustomDurationPicker-CtH2hReF.js} +2 -2
- package/dashboard/dist/assets/{CustomDurationPicker-BataWFj8.js.map → CustomDurationPicker-CtH2hReF.js.map} +1 -1
- package/dashboard/dist/assets/{DataTable-B3uf5CCo.js → DataTable-CM5ZcpPi.js} +2 -2
- package/dashboard/dist/assets/{DataTable-B3uf5CCo.js.map → DataTable-CM5ZcpPi.js.map} +1 -1
- package/dashboard/dist/assets/{ElapsedCell-G5oSwTpT.js → ElapsedCell-CwqavyeC.js} +2 -2
- package/dashboard/dist/assets/{ElapsedCell-G5oSwTpT.js.map → ElapsedCell-CwqavyeC.js.map} +1 -1
- package/dashboard/dist/assets/{EmptyState-BChBJNGS.js → EmptyState-BBn78pmm.js} +2 -2
- package/dashboard/dist/assets/{EmptyState-BChBJNGS.js.map → EmptyState-BBn78pmm.js.map} +1 -1
- package/dashboard/dist/assets/{EscalationsOverview-CxUv8xjG.js → EscalationsOverview-BcJ2E3X7.js} +2 -2
- package/dashboard/dist/assets/{EscalationsOverview-CxUv8xjG.js.map → EscalationsOverview-BcJ2E3X7.js.map} +1 -1
- package/dashboard/dist/assets/{EventTable-CVt8B0BZ.js → EventTable-C1en_KZ0.js} +2 -2
- package/dashboard/dist/assets/{EventTable-CVt8B0BZ.js.map → EventTable-C1en_KZ0.js.map} +1 -1
- package/dashboard/dist/assets/{FilterBar-CShf0oe7.js → FilterBar-CZTlrLQT.js} +2 -2
- package/dashboard/dist/assets/{FilterBar-CShf0oe7.js.map → FilterBar-CZTlrLQT.js.map} +1 -1
- package/dashboard/dist/assets/ListToolbar-Cdbsapig.js +2 -0
- package/dashboard/dist/assets/ListToolbar-Cdbsapig.js.map +1 -0
- package/dashboard/dist/assets/{McpOverview-CbaZRnJl.js → McpOverview-CSpEJxKa.js} +2 -2
- package/dashboard/dist/assets/{McpOverview-CbaZRnJl.js.map → McpOverview-CSpEJxKa.js.map} +1 -1
- package/dashboard/dist/assets/McpQueryDetailPage-DhqEI180.js +5 -0
- package/dashboard/dist/assets/McpQueryDetailPage-DhqEI180.js.map +1 -0
- package/dashboard/dist/assets/McpQueryPage-CIiVMlqo.js +2 -0
- package/dashboard/dist/assets/McpQueryPage-CIiVMlqo.js.map +1 -0
- package/dashboard/dist/assets/McpRunDetailPage-9xdxgG4d.js +2 -0
- package/dashboard/dist/assets/McpRunDetailPage-9xdxgG4d.js.map +1 -0
- package/dashboard/dist/assets/McpRunsPage-wWLqHsd4.js +2 -0
- package/dashboard/dist/assets/McpRunsPage-wWLqHsd4.js.map +1 -0
- package/dashboard/dist/assets/{Modal-CI5RBPOQ.js → Modal-kB_P7ZOr.js} +2 -2
- package/dashboard/dist/assets/{Modal-CI5RBPOQ.js.map → Modal-kB_P7ZOr.js.map} +1 -1
- package/dashboard/dist/assets/OperatorDashboard-jc0vrgDI.js +2 -0
- package/dashboard/dist/assets/OperatorDashboard-jc0vrgDI.js.map +1 -0
- package/dashboard/dist/assets/{PageHeader-SMD9qtOO.js → PageHeader-NkOeBR05.js} +2 -2
- package/dashboard/dist/assets/{PageHeader-SMD9qtOO.js.map → PageHeader-NkOeBR05.js.map} +1 -1
- package/dashboard/dist/assets/{PageHeaderWithStats-TikLQsTp.js → PageHeaderWithStats-ywNhrmFK.js} +2 -2
- package/dashboard/dist/assets/{PageHeaderWithStats-TikLQsTp.js.map → PageHeaderWithStats-ywNhrmFK.js.map} +1 -1
- package/dashboard/dist/assets/{PriorityBadge-CQ0EsLTA.js → PriorityBadge-B2MQbSxy.js} +2 -2
- package/dashboard/dist/assets/{PriorityBadge-CQ0EsLTA.js.map → PriorityBadge-B2MQbSxy.js.map} +1 -1
- package/dashboard/dist/assets/ProcessDetailPage-B7z7IdqE.js +2 -0
- package/dashboard/dist/assets/ProcessDetailPage-B7z7IdqE.js.map +1 -0
- package/dashboard/dist/assets/ProcessesListPage-C-uHadO6.js +2 -0
- package/dashboard/dist/assets/ProcessesListPage-C-uHadO6.js.map +1 -0
- package/dashboard/dist/assets/{RolePill-Crj4TH5p.js → RolePill-C1dgC-fK.js} +2 -2
- package/dashboard/dist/assets/{RolePill-Crj4TH5p.js.map → RolePill-C1dgC-fK.js.map} +1 -1
- package/dashboard/dist/assets/{RolesPage-C_RInUwS.js → RolesPage-BSxrD1vm.js} +2 -2
- package/dashboard/dist/assets/{RolesPage-C_RInUwS.js.map → RolesPage-BSxrD1vm.js.map} +1 -1
- package/dashboard/dist/assets/{RowActions-Cp5HyK_w.js → RowActions-lYaHGI-v.js} +2 -2
- package/dashboard/dist/assets/{RowActions-Cp5HyK_w.js.map → RowActions-lYaHGI-v.js.map} +1 -1
- package/dashboard/dist/assets/RunAsSelector-CJDnyp93.js +2 -0
- package/dashboard/dist/assets/RunAsSelector-CJDnyp93.js.map +1 -0
- package/dashboard/dist/assets/{StatCard-BKZLSgNV.js → StatCard-v2TiITVr.js} +2 -2
- package/dashboard/dist/assets/{StatCard-BKZLSgNV.js.map → StatCard-v2TiITVr.js.map} +1 -1
- package/dashboard/dist/assets/{StatusBadge-BYNGGZK5.js → StatusBadge-DWlxevgG.js} +2 -2
- package/dashboard/dist/assets/{StatusBadge-BYNGGZK5.js.map → StatusBadge-DWlxevgG.js.map} +1 -1
- package/dashboard/dist/assets/StepIndicator-CRM4ft28.js +2 -0
- package/dashboard/dist/assets/StepIndicator-CRM4ft28.js.map +1 -0
- package/dashboard/dist/assets/{StickyPagination-CTosgiU2.js → StickyPagination-CF0EToEU.js} +2 -2
- package/dashboard/dist/assets/{StickyPagination-CTosgiU2.js.map → StickyPagination-CF0EToEU.js.map} +1 -1
- package/dashboard/dist/assets/{SwimlaneTimeline-ylG5Ps1s.js → SwimlaneTimeline-CNlj7fgg.js} +2 -2
- package/dashboard/dist/assets/{SwimlaneTimeline-ylG5Ps1s.js.map → SwimlaneTimeline-CNlj7fgg.js.map} +1 -1
- package/dashboard/dist/assets/TagInput-CH8qMGhC.js +2 -0
- package/dashboard/dist/assets/TagInput-CH8qMGhC.js.map +1 -0
- package/dashboard/dist/assets/{TaskDetailPage-C9pDGdD2.js → TaskDetailPage-CdWo-6mu.js} +2 -2
- package/dashboard/dist/assets/{TaskDetailPage-C9pDGdD2.js.map → TaskDetailPage-CdWo-6mu.js.map} +1 -1
- package/dashboard/dist/assets/{TaskQueuePill-BtJbZTT0.js → TaskQueuePill-BPj4ogVG.js} +2 -2
- package/dashboard/dist/assets/{TaskQueuePill-BtJbZTT0.js.map → TaskQueuePill-BPj4ogVG.js.map} +1 -1
- package/dashboard/dist/assets/{TasksListPage-DtFLUEhg.js → TasksListPage-CtRkMpKU.js} +2 -2
- package/dashboard/dist/assets/{TasksListPage-DtFLUEhg.js.map → TasksListPage-CtRkMpKU.js.map} +1 -1
- package/dashboard/dist/assets/{TimeAgo-WuM6xImZ.js → TimeAgo-Di1a3X5P.js} +2 -2
- package/dashboard/dist/assets/{TimeAgo-WuM6xImZ.js.map → TimeAgo-Di1a3X5P.js.map} +1 -1
- package/dashboard/dist/assets/{TimestampCell-IVL_-Upy.js → TimestampCell-CqrXql-S.js} +2 -2
- package/dashboard/dist/assets/{TimestampCell-IVL_-Upy.js.map → TimestampCell-CqrXql-S.js.map} +1 -1
- package/dashboard/dist/assets/{UserName-DU9qeg13.js → UserName-BUFYCnRa.js} +2 -2
- package/dashboard/dist/assets/{UserName-DU9qeg13.js.map → UserName-BUFYCnRa.js.map} +1 -1
- package/dashboard/dist/assets/WorkflowExecutionPage-25iusMml.js +2 -0
- package/dashboard/dist/assets/WorkflowExecutionPage-25iusMml.js.map +1 -0
- package/dashboard/dist/assets/{WorkflowPill-Diw8iWBP.js → WorkflowPill-DPKOcbf4.js} +2 -2
- package/dashboard/dist/assets/{WorkflowPill-Diw8iWBP.js.map → WorkflowPill-DPKOcbf4.js.map} +1 -1
- package/dashboard/dist/assets/WorkflowsDashboard-BgxslssH.js +2 -0
- package/dashboard/dist/assets/WorkflowsDashboard-BgxslssH.js.map +1 -0
- package/dashboard/dist/assets/{WorkflowsOverview-CPuvA4t3.js → WorkflowsOverview-Doe5L-Re.js} +2 -2
- package/dashboard/dist/assets/{WorkflowsOverview-CPuvA4t3.js.map → WorkflowsOverview-Doe5L-Re.js.map} +1 -1
- package/dashboard/dist/assets/YamlWorkflowsPage-BliAckJ6.js +2 -0
- package/dashboard/dist/assets/YamlWorkflowsPage-BliAckJ6.js.map +1 -0
- package/dashboard/dist/assets/{bots-BPiZXf2h.js → bots-Bi2_O1Ts.js} +2 -2
- package/dashboard/dist/assets/{bots-BPiZXf2h.js.map → bots-Bi2_O1Ts.js.map} +1 -1
- package/dashboard/dist/assets/{escalation-DTY_OKRh.js → escalation-Ck1KlLkT.js} +2 -2
- package/dashboard/dist/assets/{escalation-DTY_OKRh.js.map → escalation-Ck1KlLkT.js.map} +1 -1
- package/dashboard/dist/assets/{escalation-columns-C91fHSkp.js → escalation-columns-ohDsj2eJ.js} +2 -2
- package/dashboard/dist/assets/{escalation-columns-C91fHSkp.js.map → escalation-columns-ohDsj2eJ.js.map} +1 -1
- package/dashboard/dist/assets/helpers-BoD2SgUY.js +2 -0
- package/dashboard/dist/assets/helpers-BoD2SgUY.js.map +1 -0
- package/dashboard/dist/assets/{index-D_qEAYrg.js → index-BEtLIsML.js} +2 -2
- package/dashboard/dist/assets/{index-D_qEAYrg.js.map → index-BEtLIsML.js.map} +1 -1
- package/dashboard/dist/assets/index-Bn2xHDr8.js +5 -0
- package/dashboard/dist/assets/index-Bn2xHDr8.js.map +1 -0
- package/dashboard/dist/assets/index-BpT-6WgJ.js +2 -0
- package/dashboard/dist/assets/{index-BtOwLI0K.js.map → index-BpT-6WgJ.js.map} +1 -1
- package/dashboard/dist/assets/index-CZrJ09p-.js +2 -0
- package/dashboard/dist/assets/index-CZrJ09p-.js.map +1 -0
- package/dashboard/dist/assets/index-D3NyVADW.js +2 -0
- package/dashboard/dist/assets/index-D3NyVADW.js.map +1 -0
- package/dashboard/dist/assets/index-D7zYZOnH.js +2 -0
- package/dashboard/dist/assets/{index-CDWOfCmi.js.map → index-D7zYZOnH.js.map} +1 -1
- package/dashboard/dist/assets/index-DOkHXmyf.js +17 -0
- package/dashboard/dist/assets/index-DOkHXmyf.js.map +1 -0
- package/dashboard/dist/assets/{index-DSzSoku1.js → index-DYyLF-Qb.js} +91 -93
- package/dashboard/dist/assets/index-DYyLF-Qb.js.map +1 -0
- package/dashboard/dist/assets/index-Dk2Q51o0.js +2 -0
- package/dashboard/dist/assets/index-Dk2Q51o0.js.map +1 -0
- package/dashboard/dist/assets/index-FuohTtaM.js +6 -0
- package/dashboard/dist/assets/index-FuohTtaM.js.map +1 -0
- package/dashboard/dist/assets/index-PyCTS05D.css +1 -0
- package/dashboard/dist/assets/mcp-CJtYjA7A.js +2 -0
- package/dashboard/dist/assets/mcp-CJtYjA7A.js.map +1 -0
- package/dashboard/dist/assets/mcp-query-jQJQrs_7.js +2 -0
- package/dashboard/dist/assets/mcp-query-jQJQrs_7.js.map +1 -0
- package/dashboard/dist/assets/{mcp-runs-DmXYJD19.js → mcp-runs-DUWm9Z4V.js} +2 -2
- package/dashboard/dist/assets/{mcp-runs-DmXYJD19.js.map → mcp-runs-DUWm9Z4V.js.map} +1 -1
- package/dashboard/dist/assets/{namespaces-DoGa7jc7.js → namespaces-BM5P2qmL.js} +2 -2
- package/dashboard/dist/assets/{namespaces-DoGa7jc7.js.map → namespaces-BM5P2qmL.js.map} +1 -1
- package/dashboard/dist/assets/{roles-wCdQ2Z7k.js → roles-lv0shpjJ.js} +2 -2
- package/dashboard/dist/assets/{roles-wCdQ2Z7k.js.map → roles-lv0shpjJ.js.map} +1 -1
- package/dashboard/dist/assets/{settings-DDe_L7JT.js → settings-Wlq92mRo.js} +2 -2
- package/dashboard/dist/assets/{settings-DDe_L7JT.js.map → settings-Wlq92mRo.js.map} +1 -1
- package/dashboard/dist/assets/{tasks-3Hih8Bt7.js → tasks-BFGm4PuE.js} +2 -2
- package/dashboard/dist/assets/{tasks-3Hih8Bt7.js.map → tasks-BFGm4PuE.js.map} +1 -1
- package/dashboard/dist/assets/useEventHooks-DIE6ue4x.js +2 -0
- package/dashboard/dist/assets/useEventHooks-DIE6ue4x.js.map +1 -0
- package/dashboard/dist/assets/useExpandedRows-Cg9iq6Vy.js +2 -0
- package/dashboard/dist/assets/useExpandedRows-Cg9iq6Vy.js.map +1 -0
- package/dashboard/dist/assets/{useYamlActivityEvents-B5dHec6Y.js → useYamlActivityEvents-DCwSO73t.js} +2 -2
- package/dashboard/dist/assets/useYamlActivityEvents-DCwSO73t.js.map +1 -0
- package/dashboard/dist/assets/{users-BTagPmGW.js → users-tA5-K0wA.js} +2 -2
- package/dashboard/dist/assets/{users-BTagPmGW.js.map → users-tA5-K0wA.js.map} +1 -1
- package/dashboard/dist/assets/{vendor-icons-DCLlGYO9.js → vendor-icons-BiIug1SK.js} +121 -66
- package/dashboard/dist/assets/vendor-icons-BiIug1SK.js.map +1 -0
- package/dashboard/dist/assets/{workflows-B20dR3NE.js → workflows-CfLc15Wr.js} +2 -2
- package/dashboard/dist/assets/{workflows-B20dR3NE.js.map → workflows-CfLc15Wr.js.map} +1 -1
- package/dashboard/dist/assets/yaml-workflows-D7JXNqbM.js +2 -0
- package/dashboard/dist/assets/{yaml-workflows-CaLPMQha.js.map → yaml-workflows-D7JXNqbM.js.map} +1 -1
- package/dashboard/dist/index.html +3 -3
- package/docs/api/mcp-servers.md +60 -2
- package/docs/architecture.md +3 -3
- package/docs/dashboard.md +1 -1
- package/docs/escalation-strategies.md +2 -3
- package/docs/mcp.md +301 -31
- package/package.json +4 -4
- package/dashboard/dist/assets/AdminDashboard-CTyAMUJR.js +0 -2
- package/dashboard/dist/assets/AvailableEscalationsPage-BMXV3Q4l.js +0 -2
- package/dashboard/dist/assets/AvailableEscalationsPage-BMXV3Q4l.js.map +0 -1
- package/dashboard/dist/assets/BotPicker-C51nKFEu.js +0 -2
- package/dashboard/dist/assets/CredentialsPage-CoBNFSAu.js +0 -2
- package/dashboard/dist/assets/CredentialsPage-CoBNFSAu.js.map +0 -1
- package/dashboard/dist/assets/McpQueryDetailPage-CGoR9XK6.js +0 -5
- package/dashboard/dist/assets/McpQueryDetailPage-CGoR9XK6.js.map +0 -1
- package/dashboard/dist/assets/McpQueryPage-BjXoYQuU.js +0 -2
- package/dashboard/dist/assets/McpQueryPage-BjXoYQuU.js.map +0 -1
- package/dashboard/dist/assets/McpRunDetailPage-DLkA5Aar.js +0 -2
- package/dashboard/dist/assets/McpRunDetailPage-DLkA5Aar.js.map +0 -1
- package/dashboard/dist/assets/McpRunsPage-DCh9n11D.js +0 -2
- package/dashboard/dist/assets/McpRunsPage-DCh9n11D.js.map +0 -1
- package/dashboard/dist/assets/OperatorDashboard-Dc80suXd.js +0 -2
- package/dashboard/dist/assets/OperatorDashboard-Dc80suXd.js.map +0 -1
- package/dashboard/dist/assets/ProcessDetailPage-B2GKuGzk.js +0 -2
- package/dashboard/dist/assets/ProcessDetailPage-B2GKuGzk.js.map +0 -1
- package/dashboard/dist/assets/ProcessesListPage-CTjI3Wn6.js +0 -2
- package/dashboard/dist/assets/ProcessesListPage-CTjI3Wn6.js.map +0 -1
- package/dashboard/dist/assets/RefreshButton-BcQDObrv.js +0 -2
- package/dashboard/dist/assets/RefreshButton-BcQDObrv.js.map +0 -1
- package/dashboard/dist/assets/RunAsSelector-BhyWtofX.js +0 -2
- package/dashboard/dist/assets/RunAsSelector-BhyWtofX.js.map +0 -1
- package/dashboard/dist/assets/WorkflowExecutionPage-DOocX81f.js +0 -2
- package/dashboard/dist/assets/WorkflowExecutionPage-DOocX81f.js.map +0 -1
- package/dashboard/dist/assets/WorkflowsDashboard-DDtUIrTy.js +0 -2
- package/dashboard/dist/assets/WorkflowsDashboard-DDtUIrTy.js.map +0 -1
- package/dashboard/dist/assets/YamlWorkflowsPage-DlwwkluN.js +0 -2
- package/dashboard/dist/assets/YamlWorkflowsPage-DlwwkluN.js.map +0 -1
- package/dashboard/dist/assets/helpers-DBUZ9pnG.js +0 -2
- package/dashboard/dist/assets/helpers-DBUZ9pnG.js.map +0 -1
- package/dashboard/dist/assets/index-BOeA-gfK.js +0 -17
- package/dashboard/dist/assets/index-BOeA-gfK.js.map +0 -1
- package/dashboard/dist/assets/index-BZ6K_kmL.js +0 -3
- package/dashboard/dist/assets/index-BZ6K_kmL.js.map +0 -1
- package/dashboard/dist/assets/index-Bpm0yeoi.js +0 -2
- package/dashboard/dist/assets/index-Bpm0yeoi.js.map +0 -1
- package/dashboard/dist/assets/index-BtOwLI0K.js +0 -2
- package/dashboard/dist/assets/index-CBF3ZvRZ.js +0 -6
- package/dashboard/dist/assets/index-CBF3ZvRZ.js.map +0 -1
- package/dashboard/dist/assets/index-CDWOfCmi.js +0 -2
- package/dashboard/dist/assets/index-Ce6sL__n.js +0 -2
- package/dashboard/dist/assets/index-Ce6sL__n.js.map +0 -1
- package/dashboard/dist/assets/index-DSzSoku1.js.map +0 -1
- package/dashboard/dist/assets/index-gCy9XX3W.css +0 -1
- package/dashboard/dist/assets/mcp-BzVpaaKF.js +0 -2
- package/dashboard/dist/assets/mcp-BzVpaaKF.js.map +0 -1
- package/dashboard/dist/assets/mcp-query-wTuxTTCV.js +0 -2
- package/dashboard/dist/assets/mcp-query-wTuxTTCV.js.map +0 -1
- package/dashboard/dist/assets/useNatsEvents-DeGKHFTX.js +0 -2
- package/dashboard/dist/assets/useNatsEvents-DeGKHFTX.js.map +0 -1
- package/dashboard/dist/assets/useYamlActivityEvents-B5dHec6Y.js.map +0 -1
- package/dashboard/dist/assets/vendor-icons-DCLlGYO9.js.map +0 -1
- package/dashboard/dist/assets/yaml-workflows-CaLPMQha.js +0 -2
- package/lib/db/README.md +0 -8
- /package/{lib → build/lib}/db/schemas/002_seed.sql +0 -0
- /package/{lib → build/lib}/db/schemas/003_workflow_discovery.sql +0 -0
- /package/{lib → build/lib}/db/schemas/004_query_router.sql +0 -0
- /package/{lib → build/lib}/db/schemas/005_triage_router.sql +0 -0
- /package/{lib → build/lib}/db/schemas/006_oauth.sql +0 -0
- /package/{lib → build/lib}/db/schemas/007_security.sql +0 -0
- /package/{lib → build/lib}/db/schemas/008_bot_accounts.sql +0 -0
- /package/{lib → build/lib}/db/schemas/009_audit_trail.sql +0 -0
- /package/{lib → build/lib}/db/schemas/010_credential_providers.sql +0 -0
- /package/{lib → build/lib}/db/schemas/012_drop_modality.sql +0 -0
- /package/{lib → build/lib}/db/schemas/013_execute_as.sql +0 -0
- /package/{lib → build/lib}/db/schemas/014_ephemeral_credentials.sql +0 -0
- /package/{lib → build/lib}/db/schemas/015_knowledge.sql +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index-DOkHXmyf.js","sources":["../../src/pages/workflows/registry/WorkflowConfigsPage.tsx","../../src/lib/parse.ts","../../src/pages/workflows/registry/config-form-types.ts","../../src/components/common/form/RolePicker.tsx","../../src/components/common/form/WorkflowPicker.tsx","../../src/pages/workflows/registry/ConfigWizardSteps.tsx","../../src/pages/workflows/registry/WorkflowConfigDetailPage.tsx"],"sourcesContent":["import { useState, useEffect, useMemo } from 'react';\nimport { useNavigate } from 'react-router-dom';\nimport {\n useDiscoveredWorkflows,\n useDeleteWorkflowConfig,\n} from '../../../api/workflows';\nimport { ShieldCheck, ShieldPlus, ShieldOff } from 'lucide-react';\nimport { DataTable, type Column } from '../../../components/common/data/DataTable';\nimport { ConfirmDeleteModal } from '../../../components/common/modal/ConfirmDeleteModal';\nimport { FilterBar, FilterSelect } from '../../../components/common/data/FilterBar';\nimport { RowAction, RowActionGroup } from '../../../components/common/layout/RowActions';\nimport { useFilterParams } from '../../../hooks/useFilterParams';\nimport type { DiscoveredWorkflow } from '../../../api/types';\nimport { PageHeader } from '../../../components/common/layout/PageHeader';\nimport { RolePill } from '../../../components/common/display/RolePill';\nimport { TaskQueuePill } from '../../../components/common/display/TaskQueuePill';\nimport { WorkflowPill } from '../../../components/common/display/WorkflowPill';\n\n// ── Helpers ───────────────────────────────────────────────────────────────────\n\nfunction matchesSearch(wf: DiscoveredWorkflow, search: string): boolean {\n const q = search.toLowerCase();\n return (\n wf.workflow_type.toLowerCase().includes(q) ||\n (wf.description ?? '').toLowerCase().includes(q)\n );\n}\n\n// ── Page ──────────────────────────────────────────────────────────────────────\n\nexport function WorkflowConfigsPage() {\n const navigate = useNavigate();\n const { data, isLoading } = useDiscoveredWorkflows();\n const deleteConfig = useDeleteWorkflowConfig();\n const { filters, setFilter } = useFilterParams({\n filters: { search: '', queue: '', role: '', tier: '' },\n });\n\n const [searchInput, setSearchInput] = useState(filters.search);\n const [confirmDelete, setConfirmDelete] = useState<string | null>(null);\n\n // Debounce search input\n useEffect(() => {\n if (searchInput === filters.search) return;\n const timer = setTimeout(() => setFilter('search', searchInput), 300);\n return () => clearTimeout(timer);\n }, [searchInput, setFilter, filters.search]);\n\n const allWorkflows = data ?? [];\n\n // Derive facet options from data\n const queues = useMemo(\n () => [...new Set(allWorkflows.map((w) => w.task_queue).filter(Boolean) as string[])].sort(),\n [allWorkflows],\n );\n const roles = useMemo(\n () => [...new Set(allWorkflows.flatMap((w) => w.roles ?? []))].sort(),\n [allWorkflows],\n );\n\n // Apply client-side filters\n const workflows = useMemo(() => {\n let result = allWorkflows;\n if (filters.search) result = result.filter((w) => matchesSearch(w, filters.search));\n if (filters.queue) result = result.filter((w) => w.task_queue === filters.queue);\n if (filters.role) result = result.filter((w) => (w.roles ?? []).includes(filters.role));\n if (filters.tier === 'certified') result = result.filter((w) => w.registered);\n if (filters.tier === 'durable') result = result.filter((w) => !w.registered);\n return result;\n }, [allWorkflows, filters]);\n\n const columns: Column<DiscoveredWorkflow>[] = [\n {\n key: 'workflow_type',\n label: 'Workflow',\n render: (row) => (\n <div className=\"min-w-0\">\n <WorkflowPill type={row.workflow_type} />\n {row.description && (\n <p className=\"text-[10px] text-text-tertiary mt-0.5 truncate\">{row.description}</p>\n )}\n </div>\n ),\n },\n {\n key: 'task_queue',\n label: 'Queue',\n render: (row) => row.task_queue ? <TaskQueuePill queue={row.task_queue} /> : <span className=\"text-xs text-text-tertiary\">—</span>,\n className: 'whitespace-nowrap',\n },\n {\n key: 'registered',\n label: 'Tier',\n render: (row) => row.registered\n ? <span className=\"inline-flex items-center gap-1 px-1.5 py-0.5 rounded text-[10px] font-medium bg-accent/10 text-accent\"><ShieldCheck className=\"w-3 h-3\" />Certified</span>\n : <span className=\"inline-flex items-center px-1.5 py-0.5 rounded text-[10px] font-medium bg-surface-sunken text-text-tertiary\">Durable</span>,\n className: 'whitespace-nowrap',\n },\n {\n key: 'roles',\n label: 'Roles',\n render: (row) => row.registered ? (\n <div className=\"flex gap-1 flex-wrap\">\n {(row.roles ?? []).map((r) => (\n <RolePill key={r} role={r} />\n ))}\n {(!row.roles || row.roles.length === 0) && <span className=\"text-xs text-text-tertiary\">—</span>}\n </div>\n ) : (\n <span className=\"text-xs text-text-tertiary\">—</span>\n ),\n },\n {\n key: 'actions',\n label: '',\n render: (row) => (\n <RowActionGroup>\n {row.registered ? (\n <RowAction\n icon={ShieldOff}\n title=\"De-certify workflow\"\n onClick={() => setConfirmDelete(row.workflow_type)}\n colorClass=\"text-text-tertiary hover:text-status-warning\"\n />\n ) : (\n <RowAction\n icon={ShieldPlus}\n title=\"Certify workflow\"\n onClick={() => navigate(`/workflows/registry/new?workflow_type=${encodeURIComponent(row.workflow_type)}&task_queue=${encodeURIComponent(row.task_queue ?? '')}`)}\n colorClass=\"text-text-tertiary hover:text-status-success\"\n />\n )}\n </RowActionGroup>\n ),\n className: 'w-16 text-right',\n },\n ];\n\n const handleDelete = () => {\n if (!confirmDelete) return;\n deleteConfig.mutate(confirmDelete, {\n onSuccess: () => setConfirmDelete(null),\n });\n };\n\n const handleRowClick = (row: DiscoveredWorkflow) => {\n if (row.registered) {\n navigate(`/workflows/registry/${encodeURIComponent(row.workflow_type)}`);\n } else {\n navigate(`/workflows/registry/new?workflow_type=${encodeURIComponent(row.workflow_type)}&task_queue=${encodeURIComponent(row.task_queue ?? '')}`);\n }\n };\n\n return (\n <div>\n <PageHeader\n title=\"Workflow Registry\"\n actions={\n <button\n onClick={() => navigate('/workflows/registry/new')}\n className=\"btn-primary text-xs\"\n >\n Register Workflow\n </button>\n }\n />\n\n <FilterBar>\n <input\n type=\"text\"\n placeholder=\"Search workflow type...\"\n value={searchInput}\n onChange={(e) => setSearchInput(e.target.value)}\n className=\"input text-[11px] py-1 px-2 w-56\"\n />\n <FilterSelect\n label=\"Queue\"\n value={filters.queue}\n onChange={(v) => setFilter('queue', v)}\n options={queues.map((q) => ({ value: q, label: q }))}\n />\n <FilterSelect\n label=\"Tier\"\n value={filters.tier}\n onChange={(v) => setFilter('tier', v)}\n options={[\n { value: 'certified', label: 'Certified' },\n { value: 'durable', label: 'Durable' },\n ]}\n />\n <FilterSelect\n label=\"Role\"\n value={filters.role}\n onChange={(v) => setFilter('role', v)}\n options={roles.map((r) => ({ value: r, label: r }))}\n />\n </FilterBar>\n\n <DataTable\n columns={columns}\n data={workflows}\n keyFn={(row) => row.workflow_type}\n onRowClick={handleRowClick}\n isLoading={isLoading}\n emptyMessage=\"No workflows found\"\n />\n\n {/* Delete confirmation modal */}\n <ConfirmDeleteModal\n open={!!confirmDelete}\n onClose={() => setConfirmDelete(null)}\n onConfirm={handleDelete}\n title=\"De-certify Workflow\"\n description={<>Remove certification from <span className=\"font-mono font-medium text-text-primary\">{confirmDelete}</span>? This removes interceptor guarantees, escalation chains, and invocation role constraints. The workflow will continue running as a standard durable workflow.</>}\n isPending={deleteConfig.isPending}\n error={deleteConfig.error as Error | null}\n />\n </div>\n );\n}\n","export function splitCsv(s: string): string[] {\n return s\n .split(',')\n .map((v) => v.trim())\n .filter(Boolean);\n}\n\nexport function safeParseJson<T = unknown>(\n json: string,\n): { ok: true; data: T } | { ok: false; error: string } {\n try {\n return { ok: true, data: JSON.parse(json) as T };\n } catch (e: unknown) {\n const message = e instanceof Error ? e.message : 'Invalid JSON';\n return { ok: false, error: message };\n }\n}\n","import type { LTWorkflowConfig } from '../../../api/types';\n\nexport interface ConfigFormState {\n workflow_type: string;\n description: string;\n task_queue: string;\n default_role: string;\n invocable: boolean;\n roles: string;\n invocation_roles: string;\n consumes: string;\n envelope_schema: string;\n resolver_schema: string;\n cron_schedule: string;\n execute_as: string;\n}\n\nexport const EMPTY_FORM: ConfigFormState = {\n workflow_type: '',\n description: '',\n task_queue: '',\n default_role: 'reviewer',\n invocable: false,\n roles: '',\n invocation_roles: '',\n consumes: '',\n envelope_schema: '',\n resolver_schema: '',\n cron_schedule: '',\n execute_as: '',\n};\n\nexport function configToForm(c: LTWorkflowConfig): ConfigFormState {\n return {\n workflow_type: c.workflow_type,\n description: c.description ?? '',\n task_queue: c.task_queue ?? '',\n default_role: c.default_role,\n invocable: c.invocable,\n roles: (c.roles ?? []).join(', '),\n invocation_roles: (c.invocation_roles ?? []).join(', '),\n consumes: (c.consumes ?? []).join(', '),\n envelope_schema: c.envelope_schema ? JSON.stringify(c.envelope_schema, null, 2) : '',\n resolver_schema: c.resolver_schema ? JSON.stringify(c.resolver_schema, null, 2) : '',\n cron_schedule: c.cron_schedule ?? '',\n execute_as: c.execute_as ?? '',\n };\n}\n\nexport const STEP_LABELS = ['Identity', 'Escalation', 'Invocation & Schemas'];\n\nexport function jsonValid(v: string): boolean {\n if (!v.trim()) return true;\n try { JSON.parse(v); return true; } catch { return false; }\n}\n\nexport function isStepValid(step: number, form: ConfigFormState): boolean {\n if (step === 1) return !!form.workflow_type.trim();\n if (step === 3) return jsonValid(form.envelope_schema) && jsonValid(form.resolver_schema);\n return true;\n}\n\nexport const labelCls = 'block text-[10px] font-semibold uppercase tracking-widest text-text-tertiary mb-1';\nexport const hintCls = 'text-[10px] text-text-tertiary mt-2 leading-relaxed';\nexport const jsonCls = 'input font-mono text-[11px] w-full leading-relaxed tabular-nums';\n\nexport const DEFAULT_ENVELOPE = '{\\n \"data\": {},\\n \"metadata\": {}\\n}';\n","import { useState, useRef, useEffect } from 'react';\nimport { User, X, ChevronDown, Check } from 'lucide-react';\nimport { useRoles } from '../../../api/roles';\n\ninterface RolePickerProps {\n selected: string[];\n onChange: (roles: string[]) => void;\n /** Only allow one selection */\n single?: boolean;\n placeholder?: string;\n}\n\nexport function RolePicker({ selected, onChange, single, placeholder }: RolePickerProps) {\n const { data } = useRoles();\n const allRoles = data?.roles ?? [];\n const [open, setOpen] = useState(false);\n const ref = useRef<HTMLDivElement>(null);\n\n useEffect(() => {\n const handler = (e: MouseEvent) => {\n if (ref.current && !ref.current.contains(e.target as Node)) setOpen(false);\n };\n document.addEventListener('mousedown', handler);\n return () => document.removeEventListener('mousedown', handler);\n }, []);\n\n const toggle = (role: string) => {\n if (single) {\n onChange(selected.includes(role) ? [] : [role]);\n setOpen(false);\n } else {\n onChange(\n selected.includes(role)\n ? selected.filter((r) => r !== role)\n : [...selected, role],\n );\n }\n };\n\n const remove = (role: string) => {\n onChange(selected.filter((r) => r !== role));\n };\n\n const placeholderText = placeholder ?? (single ? 'Select role...' : 'Add roles...');\n\n return (\n <div ref={ref} className=\"relative\">\n {/* Selected pills + trigger */}\n <button\n type=\"button\"\n onClick={() => setOpen(!open)}\n className=\"flex flex-wrap items-center gap-1.5 w-full min-h-[34px] px-2 py-1.5 bg-surface-sunken border border-surface-border rounded-md text-left cursor-pointer hover:border-accent/40 transition-colors focus:ring-1 focus:ring-accent focus:outline-none\"\n >\n {selected.length === 0 && (\n <span className=\"text-xs text-text-tertiary\">{placeholderText}</span>\n )}\n {selected.map((role) => (\n <span\n key={role}\n className=\"inline-flex items-center gap-1 px-2 py-0.5 rounded-lg bg-accent/[0.08] text-text-secondary text-[11px]\"\n >\n <User className=\"w-2.5 h-2.5 shrink-0 text-accent/75\" />\n {role}\n <span\n role=\"button\"\n onClick={(e) => { e.stopPropagation(); remove(role); }}\n className=\"ml-0.5 hover:text-status-error transition-colors\"\n >\n <X className=\"w-2.5 h-2.5\" />\n </span>\n </span>\n ))}\n <ChevronDown className={`w-3.5 h-3.5 ml-auto shrink-0 text-text-tertiary transition-transform ${open ? 'rotate-180' : ''}`} />\n </button>\n\n {/* Dropdown */}\n {open && (\n <div className=\"absolute z-20 mt-1 w-full bg-white border border-surface-border rounded-md shadow-lg max-h-48 overflow-y-auto\">\n {allRoles.length === 0 ? (\n <p className=\"px-3 py-2 text-xs text-text-tertiary\">No roles defined</p>\n ) : (\n allRoles.map((role) => {\n const isSelected = selected.includes(role);\n return (\n <button\n key={role}\n type=\"button\"\n onClick={() => toggle(role)}\n className={`flex items-center gap-2 w-full px-3 py-1.5 text-left text-xs transition-colors ${\n isSelected\n ? 'bg-accent/[0.06] text-accent'\n : 'text-text-primary hover:bg-surface-sunken'\n }`}\n >\n <User className=\"w-3 h-3 shrink-0 text-accent/60\" />\n <span className=\"flex-1\">{role}</span>\n {isSelected && <Check className=\"w-3 h-3 shrink-0\" />}\n </button>\n );\n })\n )}\n </div>\n )}\n </div>\n );\n}\n","import { useState, useRef, useEffect } from 'react';\nimport { Workflow, X, ChevronDown, Check } from 'lucide-react';\n\ninterface WorkflowPickerProps {\n options: string[];\n selected: string[];\n onChange: (workflows: string[]) => void;\n placeholder?: string;\n}\n\nexport function WorkflowPicker({ options, selected, onChange, placeholder }: WorkflowPickerProps) {\n const [open, setOpen] = useState(false);\n const ref = useRef<HTMLDivElement>(null);\n\n useEffect(() => {\n const handler = (e: MouseEvent) => {\n if (ref.current && !ref.current.contains(e.target as Node)) setOpen(false);\n };\n document.addEventListener('mousedown', handler);\n return () => document.removeEventListener('mousedown', handler);\n }, []);\n\n const toggle = (wfType: string) => {\n onChange(\n selected.includes(wfType)\n ? selected.filter((t) => t !== wfType)\n : [...selected, wfType],\n );\n };\n\n const remove = (wfType: string) => {\n onChange(selected.filter((t) => t !== wfType));\n };\n\n const placeholderText = placeholder ?? 'Add workflows...';\n\n return (\n <div ref={ref} className=\"relative\">\n <button\n type=\"button\"\n onClick={() => setOpen(!open)}\n className=\"flex flex-wrap items-center gap-1.5 w-full min-h-[34px] px-2 py-1.5 bg-surface-sunken border border-surface-border rounded-md text-left cursor-pointer hover:border-accent/40 transition-colors focus:ring-1 focus:ring-accent focus:outline-none\"\n >\n {selected.length === 0 && (\n <span className=\"text-xs text-text-tertiary\">{placeholderText}</span>\n )}\n {selected.map((wfType) => (\n <span\n key={wfType}\n className=\"inline-flex items-center gap-1 px-2 py-0.5 rounded-lg bg-accent/[0.08] text-text-secondary text-[11px] font-mono\"\n >\n <Workflow className=\"w-2.5 h-2.5 shrink-0 text-accent/75\" />\n {wfType}\n <span\n role=\"button\"\n onClick={(e) => { e.stopPropagation(); remove(wfType); }}\n className=\"ml-0.5 hover:text-status-error transition-colors\"\n >\n <X className=\"w-2.5 h-2.5\" />\n </span>\n </span>\n ))}\n <ChevronDown className={`w-3.5 h-3.5 ml-auto shrink-0 text-text-tertiary transition-transform ${open ? 'rotate-180' : ''}`} />\n </button>\n\n {open && (\n <div className=\"absolute z-20 mt-1 w-full bg-white border border-surface-border rounded-md shadow-lg max-h-48 overflow-y-auto\">\n {options.length === 0 ? (\n <p className=\"px-3 py-2 text-xs text-text-tertiary\">No registered workflows</p>\n ) : (\n options.map((wfType) => {\n const isSelected = selected.includes(wfType);\n return (\n <button\n key={wfType}\n type=\"button\"\n onClick={() => toggle(wfType)}\n className={`flex items-center gap-2 w-full px-3 py-1.5 text-left text-xs font-mono transition-colors ${\n isSelected\n ? 'bg-accent/[0.06] text-accent'\n : 'text-text-primary hover:bg-surface-sunken'\n }`}\n >\n <Workflow className=\"w-3 h-3 shrink-0 text-accent/60\" />\n <span className=\"flex-1\">{wfType}</span>\n {isSelected && <Check className=\"w-3 h-3 shrink-0\" />}\n </button>\n );\n })\n )}\n </div>\n )}\n </div>\n );\n}\n","import { labelCls, hintCls, jsonCls, jsonValid } from './config-form-types';\nimport type { ConfigFormState } from './config-form-types';\nimport { RolePicker } from '../../../components/common/form/RolePicker';\nimport { WorkflowPicker } from '../../../components/common/form/WorkflowPicker';\nimport { BotPicker } from '../../../components/common/form/BotPicker';\nimport { useWorkflowConfigs } from '../../../api/workflows';\nimport { splitCsv } from '../../../lib/parse';\n\ninterface StepProps {\n form: ConfigFormState;\n set: (field: keyof ConfigFormState, value: string | boolean) => void;\n}\n\ninterface BasicsStepProps extends StepProps {\n editing: boolean;\n durableTypes?: string[];\n}\n\n// ── Helpers ────────────────────────────────────────────────────────────────────\n\nfunction csvToArray(csv: string): string[] {\n return splitCsv(csv);\n}\n\nfunction arrayToCsv(arr: string[]): string {\n return arr.join(', ');\n}\n\n// ── Step 1: Identity ────────────────────────────────────────────────────────\n\nexport function BasicsStep({ form, set, editing, durableTypes = [] }: BasicsStepProps) {\n const showPickList = !editing && durableTypes.length > 0;\n\n return (\n <div className=\"space-y-5\">\n <div>\n <label className={labelCls}>Workflow Type</label>\n {showPickList && !form.workflow_type ? (\n <div className=\"space-y-2\">\n <p className=\"text-xs text-text-secondary\">\n Select a durable workflow to register as certified:\n </p>\n <div className=\"grid gap-1\">\n {durableTypes.map((type) => (\n <button\n key={type}\n onClick={() => set('workflow_type', type)}\n className=\"flex items-center gap-2 px-3 py-2 text-left text-xs font-mono rounded-md border border-surface-border hover:border-accent/50 hover:bg-accent/[0.04] transition-colors\"\n >\n {type}\n </button>\n ))}\n </div>\n <div className=\"flex items-center gap-2 pt-1\">\n <span className=\"text-[10px] text-text-tertiary\">or</span>\n <input\n type=\"text\"\n onChange={(e) => set('workflow_type', e.target.value)}\n placeholder=\"Enter a workflow type manually\"\n className=\"input font-mono text-xs flex-1\"\n />\n </div>\n </div>\n ) : (\n <>\n <input\n type=\"text\"\n value={form.workflow_type}\n onChange={(e) => set('workflow_type', e.target.value)}\n disabled={editing}\n placeholder=\"reviewContent\"\n className=\"input font-mono text-xs w-full\"\n />\n {!editing && form.workflow_type && durableTypes.length > 0 && (\n <button\n onClick={() => set('workflow_type', '')}\n className=\"text-[10px] text-accent hover:underline mt-1\"\n >\n Choose from durable workflows\n </button>\n )}\n </>\n )}\n <p className={hintCls}>\n Registering a durable workflow makes it certified — the interceptor wraps every execution so failures escalate instead of throwing.\n </p>\n </div>\n\n <div>\n <label className={labelCls}>Description</label>\n <input\n type=\"text\"\n value={form.description}\n onChange={(e) => set('description', e.target.value)}\n placeholder=\"AI-powered content moderation with human escalation\"\n className=\"input text-xs w-full\"\n />\n </div>\n\n <div>\n <label className={labelCls}>Task Queue</label>\n <input\n type=\"text\"\n value={form.task_queue}\n onChange={(e) => set('task_queue', e.target.value)}\n placeholder=\"lt-review\"\n className=\"input font-mono text-xs w-full\"\n />\n <p className={hintCls}>\n Durable task queue this workflow listens on\n </p>\n </div>\n </div>\n );\n}\n\n// ── Step 2: Escalation ──────────────────────────────────────────────────────\n\nexport function AccessStep({ form, set }: StepProps) {\n const { data: configs } = useWorkflowConfigs();\n const consumesOptions = (configs ?? [])\n .map((c) => c.workflow_type)\n .filter((t) => t !== form.workflow_type);\n\n return (\n <div className=\"space-y-5\">\n <p className=\"text-xs text-text-secondary leading-relaxed\">\n Configure how escalations are routed and who can interact with this workflow.\n </p>\n\n <div>\n <label className={labelCls}>Default Escalation Role</label>\n <RolePicker\n selected={csvToArray(form.default_role)}\n onChange={(roles) => set('default_role', roles[0] ?? '')}\n single\n placeholder=\"Select escalation role...\"\n />\n <p className={hintCls}>\n When this workflow escalates, assign to users with this role\n </p>\n </div>\n\n <div>\n <label className={labelCls}>Escalation Roles</label>\n <RolePicker\n selected={csvToArray(form.roles)}\n onChange={(roles) => set('roles', arrayToCsv(roles))}\n placeholder=\"Select who can resolve escalations...\"\n />\n <p className={hintCls}>\n Users with any of these roles can claim and resolve escalations from this workflow.\n </p>\n </div>\n\n <div>\n <label className={labelCls}>Consumes</label>\n <WorkflowPicker\n options={consumesOptions}\n selected={csvToArray(form.consumes)}\n onChange={(workflows) => set('consumes', arrayToCsv(workflows))}\n placeholder=\"Select workflow dependencies...\"\n />\n <p className={hintCls}>\n Output from these upstream workflows will be injected into the input envelope for this workflow.\n </p>\n </div>\n </div>\n );\n}\n\n// ── Step 3: Invocation & Schemas ────────────────────────────────────────────\n\nexport function SchemasStep({ form, set }: StepProps) {\n return (\n <div className=\"space-y-5\">\n {/* Invocable toggle */}\n <div className=\"flex gap-6 pt-1\">\n <label className=\"flex items-center gap-2 cursor-pointer\">\n <input\n type=\"checkbox\"\n checked={form.invocable}\n onChange={(e) => set('invocable', e.target.checked)}\n className=\"w-4 h-4 rounded border-border accent-accent\"\n />\n <span className=\"text-xs text-text-primary font-medium\">Invocable</span>\n </label>\n </div>\n <p className={hintCls}>\n Allow this workflow to be started from the dashboard or API.\n </p>\n\n {form.invocable && (\n <>\n {/* Run As */}\n <div>\n <label className={labelCls}>Run As</label>\n <BotPicker\n selected={form.execute_as}\n onChange={(botId) => set('execute_as', botId)}\n />\n <p className={hintCls}>\n Choose a bot to execute this workflow under its identity and credentials.\n Default runs as the invoking user.\n </p>\n </div>\n\n {/* Invocation roles */}\n <div>\n <label className={labelCls}>Invocation Roles</label>\n <RolePicker\n selected={csvToArray(form.invocation_roles)}\n onChange={(roles) => set('invocation_roles', arrayToCsv(roles))}\n placeholder=\"Select who can start this workflow...\"\n />\n <p className={hintCls}>\n Only users with these roles can start this workflow.\n Leave empty to allow all authenticated users.\n </p>\n </div>\n\n {/* Envelope schema */}\n <div>\n <label className={labelCls}>Envelope Schema</label>\n <textarea\n value={form.envelope_schema}\n onChange={(e) => set('envelope_schema', e.target.value)}\n placeholder={`{\\n \"data\": {\\n \"contentId\": \"example-123\",\\n \"content\": \"Text to review\"\\n },\\n \"metadata\": {\\n \"source\": \"dashboard\"\\n }\\n}`}\n className={jsonCls}\n rows={8}\n spellCheck={false}\n />\n <p className={hintCls}>\n Pre-fills the JSON editor when invoking this workflow.\n Should include <span className=\"font-mono\">data</span> (workflow input) and optional <span className=\"font-mono\">metadata</span> (context).\n </p>\n {form.envelope_schema.trim() && !jsonValid(form.envelope_schema) && (\n <p className=\"text-[10px] text-status-error mt-1\">Invalid JSON</p>\n )}\n </div>\n </>\n )}\n\n {!form.invocable && (\n <div className=\"py-4 px-4 bg-surface-sunken/50 rounded-md text-center\">\n <p className=\"text-xs text-text-tertiary\">\n Enable <span className=\"font-medium text-text-secondary\">Invocable</span> above to configure who can start this workflow and set an input template.\n </p>\n </div>\n )}\n\n {/* Resolver schema — always available */}\n <div>\n <label className={labelCls}>Resolver Schema</label>\n <textarea\n value={form.resolver_schema}\n onChange={(e) => set('resolver_schema', e.target.value)}\n placeholder={`{\\n \"approved\": true,\\n \"analysis\": {\\n \"confidence\": 0.95,\\n \"flags\": [],\\n \"summary\": \"Content meets guidelines\"\\n }\\n}`}\n className={jsonCls}\n rows={8}\n spellCheck={false}\n />\n <p className={hintCls}>\n The shape of data a human or AI provides when resolving an escalation from this workflow.\n Pre-fills the JSON editor in the escalation resolution form.\n </p>\n {form.resolver_schema.trim() && !jsonValid(form.resolver_schema) && (\n <p className=\"text-[10px] text-status-error mt-1\">Invalid JSON</p>\n )}\n </div>\n </div>\n );\n}\n","import { useState, useEffect, useCallback, useMemo } from 'react';\nimport { useParams, useNavigate, useSearchParams } from 'react-router-dom';\nimport { useWorkflowConfigs, useUpsertWorkflowConfig, useJobs } from '../../../api/workflows';\nimport { StepIndicator } from '../../../components/common/layout/StepIndicator';\nimport { PageHeader } from '../../../components/common/layout/PageHeader';\nimport { splitCsv } from '../../../lib/parse';\nimport { EMPTY_FORM, configToForm, STEP_LABELS, isStepValid } from './config-form-types';\nimport type { ConfigFormState } from './config-form-types';\nimport { BasicsStep, AccessStep, SchemasStep } from './ConfigWizardSteps';\n\nexport function WorkflowConfigDetailPage() {\n const { workflowType } = useParams<{ workflowType: string }>();\n const isNew = !workflowType;\n const navigate = useNavigate();\n const { data: configs, isLoading } = useWorkflowConfigs();\n const upsert = useUpsertWorkflowConfig();\n\n const editing = configs?.find((c) => c.workflow_type === workflowType) ?? null;\n\n // Fetch known workflow types from jobs to build the pick-list.\n // System workflows (triage, query, routing pipelines) are excluded —\n // they serve the discovery/compilation layer, not user-authored flows.\n const SYSTEM_WORKFLOWS = new Set([\n 'mcpQuery',\n 'mcpDeterministic',\n 'mcpQueryRouter',\n 'mcpTriage',\n 'mcpTriageRouter',\n 'mcpTriageDeterministic',\n 'insightQuery',\n ]);\n const { data: jobsData } = useJobs({ limit: 500 });\n const unregisteredTypes = useMemo(() => {\n const registeredSet = new Set((configs ?? []).map((c) => c.workflow_type));\n const allEntities = new Set((jobsData?.jobs ?? []).map((j) => j.entity));\n return [...allEntities]\n .filter((e) => !registeredSet.has(e) && !SYSTEM_WORKFLOWS.has(e))\n .sort();\n }, [configs, jobsData]);\n\n // Step via URL search param for browser history\n const [searchParams, setSearchParams] = useSearchParams();\n\n // Pre-fill from URL search params when creating new\n const prefillForm = useMemo((): ConfigFormState => {\n if (!isNew) return EMPTY_FORM;\n const prefillType = searchParams.get('workflow_type') ?? '';\n const prefillQueue = searchParams.get('task_queue') ?? '';\n if (!prefillType && !prefillQueue) return EMPTY_FORM;\n return { ...EMPTY_FORM, workflow_type: prefillType, task_queue: prefillQueue };\n }, [isNew, searchParams]);\n\n const [form, setForm] = useState<ConfigFormState>(prefillForm);\n const [schemaError, setSchemaError] = useState('');\n const [initialized, setInitialized] = useState(false);\n const step = parseInt(searchParams.get('step') || '1', 10);\n const setStep = useCallback((s: number) => {\n setSearchParams((prev) => {\n const next = new URLSearchParams(prev);\n next.set('step', String(s));\n return next;\n }, { replace: false });\n }, [setSearchParams]);\n\n\n useEffect(() => {\n if (initialized) return;\n if (isNew) {\n setForm(prefillForm);\n setInitialized(true);\n return;\n }\n if (editing) {\n setForm(configToForm(editing));\n setInitialized(true);\n }\n }, [editing, isNew, initialized, prefillForm]);\n\n const set = (field: keyof ConfigFormState, value: string | boolean) =>\n setForm((f) => ({ ...f, [field]: value }));\n\n // ── Save ────────────────────────────────────────────────────────────────\n\n const handleSave = () => {\n if (!form.workflow_type.trim()) return;\n setSchemaError('');\n\n let envelope_schema: Record<string, unknown> | null = null;\n let resolver_schema: Record<string, unknown> | null = null;\n\n try {\n if (form.envelope_schema.trim()) envelope_schema = JSON.parse(form.envelope_schema);\n } catch {\n setSchemaError('Invalid JSON in Envelope Schema');\n return;\n }\n try {\n if (form.resolver_schema.trim()) resolver_schema = JSON.parse(form.resolver_schema);\n } catch {\n setSchemaError('Invalid JSON in Resolver Schema');\n return;\n }\n\n upsert.mutate(\n {\n workflow_type: form.workflow_type.trim(),\n description: form.description.trim() || null,\n task_queue: form.task_queue.trim() || null,\n default_role: form.default_role.trim() || 'reviewer',\n invocable: form.invocable,\n roles: splitCsv(form.roles),\n invocation_roles: splitCsv(form.invocation_roles),\n consumes: splitCsv(form.consumes),\n envelope_schema,\n resolver_schema,\n cron_schedule: form.cron_schedule.trim() || null,\n execute_as: form.execute_as.trim() || null,\n },\n {\n onSuccess: () => {\n navigate('/workflows/registry');\n },\n },\n );\n };\n\n // ── Loading / Not found ──────────────────────────────────────────────────\n\n if (isLoading) {\n return (\n <div className=\"animate-pulse space-y-4\">\n <div className=\"h-8 bg-surface-sunken rounded w-48\" />\n <div className=\"h-60 bg-surface-sunken rounded\" />\n </div>\n );\n }\n\n if (!isNew && !editing) {\n return <p className=\"text-sm text-text-secondary\">Config not found.</p>;\n }\n\n // ── Render ──────────────────────────────────────────────────────────────\n\n const isLast = step === STEP_LABELS.length;\n return (\n <div>\n <PageHeader title={isNew ? 'Register Workflow' : editing?.workflow_type ?? ''} />\n\n <div className=\"max-w-3xl\">\n <StepIndicator steps={STEP_LABELS} currentStep={step - 1} onStepClick={(i) => setStep(i + 1)} />\n\n <div className=\"min-h-[360px] py-2\">\n {step === 1 && <BasicsStep form={form} set={set} editing={!!editing} durableTypes={unregisteredTypes} />}\n {step === 2 && <AccessStep form={form} set={set} />}\n {step === 3 && <SchemasStep form={form} set={set} />}\n </div>\n\n {(schemaError || upsert.error) && (\n <p className=\"text-xs text-status-error mt-4\">\n {schemaError || (upsert.error as Error).message}\n </p>\n )}\n\n {/* Navigation */}\n <div className=\"flex justify-between items-center pt-4 border-t border-surface-border mt-4\">\n <div>\n {step > 1 && (\n <button\n onClick={() => setStep(step - 1)}\n className=\"btn-secondary text-xs\"\n >\n Back\n </button>\n )}\n </div>\n <div className=\"flex gap-3\">\n <button onClick={() => navigate('/workflows/registry')} className=\"btn-ghost text-xs\">\n Cancel\n </button>\n {isLast ? (\n <button\n onClick={handleSave}\n disabled={!isStepValid(step, form) || upsert.isPending}\n className=\"btn-primary text-xs\"\n >\n {upsert.isPending ? 'Saving...' : editing ? 'Save' : 'Create'}\n </button>\n ) : (\n <button\n onClick={() => setStep(step + 1)}\n disabled={!isStepValid(step, form)}\n className=\"btn-primary text-xs\"\n >\n Next\n </button>\n )}\n </div>\n </div>\n\n </div>\n </div>\n );\n}\n"],"names":["matchesSearch","wf","search","q","WorkflowConfigsPage","navigate","useNavigate","data","isLoading","useDiscoveredWorkflows","deleteConfig","useDeleteWorkflowConfig","filters","setFilter","useFilterParams","searchInput","setSearchInput","useState","confirmDelete","setConfirmDelete","useEffect","timer","allWorkflows","queues","useMemo","w","roles","workflows","result","columns","row","jsxDEV","WorkflowPill","TaskQueuePill","ShieldCheck","r","RolePill","RowActionGroup","RowAction","ShieldOff","ShieldPlus","handleDelete","handleRowClick","PageHeader","FilterBar","e","FilterSelect","v","DataTable","ConfirmDeleteModal","Fragment","splitCsv","EMPTY_FORM","configToForm","c","STEP_LABELS","jsonValid","isStepValid","step","form","labelCls","hintCls","jsonCls","RolePicker","selected","onChange","single","placeholder","useRoles","allRoles","open","setOpen","ref","useRef","handler","toggle","role","remove","placeholderText","User","X","ChevronDown","isSelected","Check","WorkflowPicker","options","wfType","t","Workflow","csvToArray","csv","arrayToCsv","arr","BasicsStep","set","editing","durableTypes","showPickList","type","AccessStep","configs","useWorkflowConfigs","consumesOptions","SchemasStep","BotPicker","botId","WorkflowConfigDetailPage","workflowType","useParams","isNew","upsert","useUpsertWorkflowConfig","SYSTEM_WORKFLOWS","jobsData","useJobs","unregisteredTypes","registeredSet","j","searchParams","setSearchParams","useSearchParams","prefillForm","prefillType","prefillQueue","setForm","schemaError","setSchemaError","initialized","setInitialized","setStep","useCallback","s","prev","next","field","value","f","handleSave","envelope_schema","resolver_schema","isLast","StepIndicator","i"],"mappings":"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"}
|