@hotmeshio/long-tail 0.1.12 → 0.1.14
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 +1 -1
- package/build/api/files.d.ts +13 -0
- package/build/api/files.js +44 -0
- package/build/api/mcp-runs.d.ts +2 -0
- package/build/api/mcp-runs.js +2 -0
- package/build/api/workflow-sets.d.ts +11 -0
- package/build/api/workflow-sets.js +62 -0
- package/build/api/yaml-workflows.d.ts +9 -0
- package/build/api/yaml-workflows.js +40 -11
- package/build/examples/seed.js +50 -0
- package/build/lib/db/schemas/001_schema.sql +281 -106
- package/build/lib/db/schemas/002_seed.sql +56 -39
- package/build/lib/storage/local.d.ts +15 -0
- package/build/lib/storage/local.js +63 -0
- package/build/lib/storage/mime.d.ts +4 -0
- package/build/lib/storage/mime.js +31 -0
- package/build/lib/storage/s3.d.ts +16 -0
- package/build/lib/storage/s3.js +70 -0
- package/build/lib/storage/types.d.ts +18 -0
- package/build/modules/utils.d.ts +73 -0
- package/build/modules/utils.js +84 -0
- package/build/routes/file-browser.d.ts +2 -0
- package/build/routes/file-browser.js +112 -0
- package/build/routes/files.js +25 -17
- package/build/routes/index.js +2 -0
- package/build/routes/mcp-runs.js +2 -0
- package/build/routes/workflow-sets.js +9 -0
- package/build/routes/yaml-workflows/deployment.js +8 -0
- package/build/services/insight/index.d.ts +13 -0
- package/build/services/insight/index.js +4 -7
- package/build/services/insight/prompts.d.ts +1 -1
- package/build/services/insight/prompts.js +1 -1
- package/build/services/mcp/server.js +31 -0
- package/build/services/mcp-runs/queries.d.ts +2 -0
- package/build/services/mcp-runs/queries.js +11 -1
- package/build/services/mcp-runs/sql.d.ts +1 -1
- package/build/services/mcp-runs/sql.js +2 -2
- package/build/services/workflow-sets/db.d.ts +1 -0
- package/build/services/workflow-sets/db.js +6 -0
- package/build/services/workflow-sets/index.d.ts +1 -1
- package/build/services/workflow-sets/index.js +2 -1
- package/build/services/workflow-sets/sql.d.ts +1 -0
- package/build/services/workflow-sets/sql.js +6 -1
- package/build/services/yaml-workflow/db.d.ts +12 -0
- package/build/services/yaml-workflow/db.js +18 -0
- package/build/services/yaml-workflow/generator.js +4 -4
- package/build/services/yaml-workflow/pipeline/build/index.d.ts +2 -1
- package/build/services/yaml-workflow/pipeline/build/index.js +3 -2
- package/build/services/yaml-workflow/pipeline/build/utils.d.ts +0 -2
- package/build/services/yaml-workflow/pipeline/build/utils.js +0 -8
- package/build/services/yaml-workflow/sql.d.ts +2 -1
- package/build/services/yaml-workflow/sql.js +10 -3
- package/build/system/activities/schema-exchange.d.ts +50 -0
- package/build/system/activities/schema-exchange.js +210 -0
- package/build/system/activities/sql.d.ts +1 -1
- package/build/system/activities/sql.js +12 -1
- package/build/system/index.js +1 -0
- package/build/system/mcp-servers/human-queue.js +31 -0
- package/build/system/mcp-servers/knowledge.js +35 -6
- package/build/system/mcp-servers/schema-exchange.d.ts +4 -0
- package/build/system/mcp-servers/schema-exchange.js +93 -0
- package/build/system/seed/server-definitions.d.ts +112 -1
- package/build/system/seed/server-definitions.js +37 -0
- package/build/system/seed/tool-manifests-data.d.ts +87 -0
- package/build/system/seed/tool-manifests-data.js +37 -1
- package/build/system/seed/tool-manifests-knowledge.d.ts +9 -1
- package/build/system/seed/tool-manifests-knowledge.js +6 -5
- package/build/system/workflows/mcp-workflow-builder/prompts.d.ts +1 -1
- package/build/system/workflows/mcp-workflow-builder/prompts.js +21 -20
- package/build/system/workflows/mcp-workflow-planner/activities/persist.d.ts +1 -1
- package/build/system/workflows/mcp-workflow-planner/activities/persist.js +3 -3
- package/build/system/workflows/mcp-workflow-planner/index.js +39 -5
- package/build/system/workflows/mcp-workflow-planner/prompts.d.ts +1 -1
- package/build/system/workflows/mcp-workflow-planner/prompts.js +3 -3
- package/build/tsconfig.tsbuildinfo +1 -1
- package/dashboard/dist/assets/{AdminDashboard-DUrSBQOl.js → AdminDashboard-Cngijp4Q.js} +2 -2
- package/dashboard/dist/assets/{AdminDashboard-DUrSBQOl.js.map → AdminDashboard-Cngijp4Q.js.map} +1 -1
- package/dashboard/dist/assets/{AvailableEscalationsPage-Dbd1qUK_.js → AvailableEscalationsPage-CpBfGV1h.js} +2 -2
- package/dashboard/dist/assets/{AvailableEscalationsPage-Dbd1qUK_.js.map → AvailableEscalationsPage-CpBfGV1h.js.map} +1 -1
- package/dashboard/dist/assets/{BotPicker-Cg5iNEkm.js → BotPicker-B8Uvw9Si.js} +2 -2
- package/dashboard/dist/assets/{BotPicker-Cg5iNEkm.js.map → BotPicker-B8Uvw9Si.js.map} +1 -1
- package/dashboard/dist/assets/{CollapsibleSection-Kd9UIyeU.js → CollapsibleSection-DiFPuWOY.js} +2 -2
- package/dashboard/dist/assets/{CollapsibleSection-Kd9UIyeU.js.map → CollapsibleSection-DiFPuWOY.js.map} +1 -1
- package/dashboard/dist/assets/{ConfirmDeleteModal-DZMgmlof.js → ConfirmDeleteModal-CpXG9uyu.js} +2 -2
- package/dashboard/dist/assets/{ConfirmDeleteModal-DZMgmlof.js.map → ConfirmDeleteModal-CpXG9uyu.js.map} +1 -1
- package/dashboard/dist/assets/{CopyableId-cPFTRm8q.js → CopyableId-DKsTR9lK.js} +2 -2
- package/dashboard/dist/assets/{CopyableId-cPFTRm8q.js.map → CopyableId-DKsTR9lK.js.map} +1 -1
- package/dashboard/dist/assets/CredentialsPage-DlS7Kf40.js +2 -0
- package/dashboard/dist/assets/{CredentialsPage-DJablIbs.js.map → CredentialsPage-DlS7Kf40.js.map} +1 -1
- package/dashboard/dist/assets/{CustomDurationPicker-NgIP6YDW.js → CustomDurationPicker-B-9eW3pm.js} +2 -2
- package/dashboard/dist/assets/{CustomDurationPicker-NgIP6YDW.js.map → CustomDurationPicker-B-9eW3pm.js.map} +1 -1
- package/dashboard/dist/assets/{DataTable-CTRhTAfT.js → DataTable-DkOokbtL.js} +2 -2
- package/dashboard/dist/assets/{DataTable-CTRhTAfT.js.map → DataTable-DkOokbtL.js.map} +1 -1
- package/dashboard/dist/assets/{ElapsedCell-HcSJ_MMs.js → ElapsedCell-DVtHqM-5.js} +2 -2
- package/dashboard/dist/assets/{ElapsedCell-HcSJ_MMs.js.map → ElapsedCell-DVtHqM-5.js.map} +1 -1
- package/dashboard/dist/assets/{EmptyState-joNbd4gg.js → EmptyState-C7KIMIbE.js} +2 -2
- package/dashboard/dist/assets/{EmptyState-joNbd4gg.js.map → EmptyState-C7KIMIbE.js.map} +1 -1
- package/dashboard/dist/assets/{EscalationsOverview-DpXDnQux.js → EscalationsOverview-BMKBlkPx.js} +2 -2
- package/dashboard/dist/assets/{EscalationsOverview-DpXDnQux.js.map → EscalationsOverview-BMKBlkPx.js.map} +1 -1
- package/dashboard/dist/assets/{EventTable-CYem3v8n.js → EventTable-BYZ5OVdQ.js} +2 -2
- package/dashboard/dist/assets/{EventTable-CYem3v8n.js.map → EventTable-BYZ5OVdQ.js.map} +1 -1
- package/dashboard/dist/assets/{FilterBar-BiO8SOzc.js → FilterBar-C5r3n6YO.js} +2 -2
- package/dashboard/dist/assets/{FilterBar-BiO8SOzc.js.map → FilterBar-C5r3n6YO.js.map} +1 -1
- package/dashboard/dist/assets/{ListToolbar-6yRDh2e9.js → ListToolbar-BGUajIsW.js} +2 -2
- package/dashboard/dist/assets/{ListToolbar-6yRDh2e9.js.map → ListToolbar-BGUajIsW.js.map} +1 -1
- package/dashboard/dist/assets/{McpOverview-CUgSxkQe.js → McpOverview-B_kJYHea.js} +2 -2
- package/dashboard/dist/assets/{McpOverview-CUgSxkQe.js.map → McpOverview-B_kJYHea.js.map} +1 -1
- package/dashboard/dist/assets/McpQueryDetailPage-Czsmovqw.js +5 -0
- package/dashboard/dist/assets/McpQueryDetailPage-Czsmovqw.js.map +1 -0
- package/dashboard/dist/assets/McpQueryPage-BgAq_bQg.js +2 -0
- package/dashboard/dist/assets/{McpQueryPage-lV6kfDG5.js.map → McpQueryPage-BgAq_bQg.js.map} +1 -1
- package/dashboard/dist/assets/McpRunDetailPage-B8c0OszR.js +2 -0
- package/dashboard/dist/assets/McpRunDetailPage-B8c0OszR.js.map +1 -0
- package/dashboard/dist/assets/McpRunsPage-BY8C6k78.js +2 -0
- package/dashboard/dist/assets/McpRunsPage-BY8C6k78.js.map +1 -0
- package/dashboard/dist/assets/{Modal-BuTvD0pz.js → Modal-E1yRnCeW.js} +2 -2
- package/dashboard/dist/assets/{Modal-BuTvD0pz.js.map → Modal-E1yRnCeW.js.map} +1 -1
- package/dashboard/dist/assets/OperatorDashboard-C8MSTzey.js +2 -0
- package/dashboard/dist/assets/{OperatorDashboard-C9SSV96T.js.map → OperatorDashboard-C8MSTzey.js.map} +1 -1
- package/dashboard/dist/assets/{PageHeader-BcTVF9ul.js → PageHeader-Cm5HBQF_.js} +2 -2
- package/dashboard/dist/assets/{PageHeader-BcTVF9ul.js.map → PageHeader-Cm5HBQF_.js.map} +1 -1
- package/dashboard/dist/assets/{PageHeaderWithStats-BI7JG5x6.js → PageHeaderWithStats-CNmWJFSN.js} +2 -2
- package/dashboard/dist/assets/{PageHeaderWithStats-BI7JG5x6.js.map → PageHeaderWithStats-CNmWJFSN.js.map} +1 -1
- package/dashboard/dist/assets/{PriorityBadge-DqVaOU65.js → PriorityBadge-HSI4RVhs.js} +2 -2
- package/dashboard/dist/assets/{PriorityBadge-DqVaOU65.js.map → PriorityBadge-HSI4RVhs.js.map} +1 -1
- package/dashboard/dist/assets/{ProcessDetailPage-hFMhf9qa.js → ProcessDetailPage-Dln8622H.js} +2 -2
- package/dashboard/dist/assets/{ProcessDetailPage-hFMhf9qa.js.map → ProcessDetailPage-Dln8622H.js.map} +1 -1
- package/dashboard/dist/assets/{ProcessesListPage-ByVoBCQ3.js → ProcessesListPage-bIsd9N_h.js} +2 -2
- package/dashboard/dist/assets/{ProcessesListPage-ByVoBCQ3.js.map → ProcessesListPage-bIsd9N_h.js.map} +1 -1
- package/dashboard/dist/assets/{RolePill-D9ZIkYiu.js → RolePill-BVUp2bF0.js} +2 -2
- package/dashboard/dist/assets/{RolePill-D9ZIkYiu.js.map → RolePill-BVUp2bF0.js.map} +1 -1
- package/dashboard/dist/assets/RolesPage-kH-Njt25.js +2 -0
- package/dashboard/dist/assets/{RolesPage-SMedMuqa.js.map → RolesPage-kH-Njt25.js.map} +1 -1
- package/dashboard/dist/assets/{RowActions-yDhwwDbU.js → RowActions-DbUJPfaW.js} +2 -2
- package/dashboard/dist/assets/{RowActions-yDhwwDbU.js.map → RowActions-DbUJPfaW.js.map} +1 -1
- package/dashboard/dist/assets/{StatCard-BrBnQFxh.js → StatCard-Bs3JbyAz.js} +2 -2
- package/dashboard/dist/assets/{StatCard-BrBnQFxh.js.map → StatCard-Bs3JbyAz.js.map} +1 -1
- package/dashboard/dist/assets/{StatusBadge-xgb-lZku.js → StatusBadge-CakDdsCw.js} +2 -2
- package/dashboard/dist/assets/{StatusBadge-xgb-lZku.js.map → StatusBadge-CakDdsCw.js.map} +1 -1
- package/dashboard/dist/assets/{StepIndicator-B9ps2SvM.js → StepIndicator-Cd_SG_yA.js} +2 -2
- package/dashboard/dist/assets/{StepIndicator-B9ps2SvM.js.map → StepIndicator-Cd_SG_yA.js.map} +1 -1
- package/dashboard/dist/assets/{StickyPagination-DTIjBKN3.js → StickyPagination-Bz0C18nC.js} +2 -2
- package/dashboard/dist/assets/{StickyPagination-DTIjBKN3.js.map → StickyPagination-Bz0C18nC.js.map} +1 -1
- package/dashboard/dist/assets/{SwimlaneTimeline-RK4Yu66z.js → SwimlaneTimeline-Cfe-xQRX.js} +2 -2
- package/dashboard/dist/assets/{SwimlaneTimeline-RK4Yu66z.js.map → SwimlaneTimeline-Cfe-xQRX.js.map} +1 -1
- package/dashboard/dist/assets/{TagInput-CdNUuqk4.js → TagInput-ClFhXG-U.js} +2 -2
- package/dashboard/dist/assets/{TagInput-CdNUuqk4.js.map → TagInput-ClFhXG-U.js.map} +1 -1
- package/dashboard/dist/assets/{TaskDetailPage-C-nzaNea.js → TaskDetailPage-SuMBdARt.js} +2 -2
- package/dashboard/dist/assets/{TaskDetailPage-C-nzaNea.js.map → TaskDetailPage-SuMBdARt.js.map} +1 -1
- package/dashboard/dist/assets/{TaskQueuePill-Lvr2-NzS.js → TaskQueuePill-lJR1JW_W.js} +2 -2
- package/dashboard/dist/assets/{TaskQueuePill-Lvr2-NzS.js.map → TaskQueuePill-lJR1JW_W.js.map} +1 -1
- package/dashboard/dist/assets/{TasksListPage-DSUmD84y.js → TasksListPage-Dkq1Vtbt.js} +2 -2
- package/dashboard/dist/assets/{TasksListPage-DSUmD84y.js.map → TasksListPage-Dkq1Vtbt.js.map} +1 -1
- package/dashboard/dist/assets/{TimeAgo-BZdLdrIh.js → TimeAgo-DgfDZ1pl.js} +2 -2
- package/dashboard/dist/assets/{TimeAgo-BZdLdrIh.js.map → TimeAgo-DgfDZ1pl.js.map} +1 -1
- package/dashboard/dist/assets/{TimestampCell-QX_0i5FK.js → TimestampCell-MpHZ1hMD.js} +2 -2
- package/dashboard/dist/assets/{TimestampCell-QX_0i5FK.js.map → TimestampCell-MpHZ1hMD.js.map} +1 -1
- package/dashboard/dist/assets/{UserName-DyZMXcBm.js → UserName-DqsosA4B.js} +2 -2
- package/dashboard/dist/assets/{UserName-DyZMXcBm.js.map → UserName-DqsosA4B.js.map} +1 -1
- package/dashboard/dist/assets/{WorkflowExecutionPage-DjVxfZaF.js → WorkflowExecutionPage-CVlg38C3.js} +2 -2
- package/dashboard/dist/assets/{WorkflowExecutionPage-DjVxfZaF.js.map → WorkflowExecutionPage-CVlg38C3.js.map} +1 -1
- package/dashboard/dist/assets/WorkflowPill-CRpZhjGR.js +2 -0
- package/dashboard/dist/assets/WorkflowPill-CRpZhjGR.js.map +1 -0
- package/dashboard/dist/assets/{WorkflowsDashboard-DZjuiFZ0.js → WorkflowsDashboard-Ugzbs8mV.js} +2 -2
- package/dashboard/dist/assets/{WorkflowsDashboard-DZjuiFZ0.js.map → WorkflowsDashboard-Ugzbs8mV.js.map} +1 -1
- package/dashboard/dist/assets/{WorkflowsOverview-CLnLRpOu.js → WorkflowsOverview-CIp_lTNl.js} +2 -2
- package/dashboard/dist/assets/{WorkflowsOverview-CLnLRpOu.js.map → WorkflowsOverview-CIp_lTNl.js.map} +1 -1
- package/dashboard/dist/assets/YamlWorkflowsPage-BICF0fRO.js +2 -0
- package/dashboard/dist/assets/YamlWorkflowsPage-BICF0fRO.js.map +1 -0
- package/dashboard/dist/assets/{bots-DIM6lBoY.js → bots-DPfUpVqI.js} +2 -2
- package/dashboard/dist/assets/{bots-DIM6lBoY.js.map → bots-DPfUpVqI.js.map} +1 -1
- package/dashboard/dist/assets/{escalation-JOTuOqjq.js → escalation-RrCDbMC3.js} +2 -2
- package/dashboard/dist/assets/{escalation-JOTuOqjq.js.map → escalation-RrCDbMC3.js.map} +1 -1
- package/dashboard/dist/assets/escalation-columns-CDGa9wsD.js +2 -0
- package/dashboard/dist/assets/{escalation-columns-Cyg58nkg.js.map → escalation-columns-CDGa9wsD.js.map} +1 -1
- package/dashboard/dist/assets/{helpers-B1BDxBZd.js → helpers-ZSKqdkdS.js} +2 -2
- package/dashboard/dist/assets/{helpers-B1BDxBZd.js.map → helpers-ZSKqdkdS.js.map} +1 -1
- package/dashboard/dist/assets/helpers-rMEcLwKs.js +2 -0
- package/dashboard/dist/assets/helpers-rMEcLwKs.js.map +1 -0
- package/dashboard/dist/assets/{index-DDYFpi4l.js → index-ABcJHHlN.js} +2 -2
- package/dashboard/dist/assets/{index-DDYFpi4l.js.map → index-ABcJHHlN.js.map} +1 -1
- package/dashboard/dist/assets/{index-D1wVX50Z.js → index-B91h_jZ0.js} +2 -2
- package/dashboard/dist/assets/{index-D1wVX50Z.js.map → index-B91h_jZ0.js.map} +1 -1
- package/dashboard/dist/assets/{index-BcR6PfpY.js → index-BbI2dzhJ.js} +2 -2
- package/dashboard/dist/assets/{index-BcR6PfpY.js.map → index-BbI2dzhJ.js.map} +1 -1
- package/dashboard/dist/assets/{index-BizfauqT.js → index-BmVCyB6C.js} +4 -4
- package/dashboard/dist/assets/{index-BizfauqT.js.map → index-BmVCyB6C.js.map} +1 -1
- package/dashboard/dist/assets/index-C1E5GTs9.js +2 -0
- package/dashboard/dist/assets/index-C1E5GTs9.js.map +1 -0
- package/dashboard/dist/assets/{index-Cf60K3x9.js → index-C90ZPzXk.js} +2 -2
- package/dashboard/dist/assets/{index-Cf60K3x9.js.map → index-C90ZPzXk.js.map} +1 -1
- package/dashboard/dist/assets/{index-BYZX9tOb.js → index-Cmgrk7PQ.js} +58 -58
- package/dashboard/dist/assets/index-Cmgrk7PQ.js.map +1 -0
- package/dashboard/dist/assets/{index-Ds0JoXS2.js → index-DNytWfSZ.js} +2 -2
- package/dashboard/dist/assets/{index-Ds0JoXS2.js.map → index-DNytWfSZ.js.map} +1 -1
- package/dashboard/dist/assets/index-DX6zxr6t.js +2 -0
- package/dashboard/dist/assets/{index-Cg5nfiYX.js.map → index-DX6zxr6t.js.map} +1 -1
- package/dashboard/dist/assets/index-DeX-ezqf.css +1 -0
- package/dashboard/dist/assets/index-K40Qw1tk.js +2 -0
- package/dashboard/dist/assets/{index-Di12t56M.js.map → index-K40Qw1tk.js.map} +1 -1
- package/dashboard/dist/assets/{index-BUK3qR-1.js → index-lCyNr5Xk.js} +2 -2
- package/dashboard/dist/assets/{index-BUK3qR-1.js.map → index-lCyNr5Xk.js.map} +1 -1
- package/dashboard/dist/assets/{mcp-B_xbczAt.js → mcp-CNE44TSp.js} +2 -2
- package/dashboard/dist/assets/{mcp-B_xbczAt.js.map → mcp-CNE44TSp.js.map} +1 -1
- package/dashboard/dist/assets/mcp-query-RQX0uN-5.js +2 -0
- package/dashboard/dist/assets/mcp-query-RQX0uN-5.js.map +1 -0
- package/dashboard/dist/assets/mcp-runs-0w40bdz-.js +2 -0
- package/dashboard/dist/assets/mcp-runs-0w40bdz-.js.map +1 -0
- package/dashboard/dist/assets/{namespaces-C3WtdO_9.js → namespaces-BbmdXuPp.js} +2 -2
- package/dashboard/dist/assets/{namespaces-C3WtdO_9.js.map → namespaces-BbmdXuPp.js.map} +1 -1
- package/dashboard/dist/assets/{roles-BDAsPpZG.js → roles-DoHYlhWH.js} +2 -2
- package/dashboard/dist/assets/{roles-BDAsPpZG.js.map → roles-DoHYlhWH.js.map} +1 -1
- package/dashboard/dist/assets/{settings-Ife_UwAp.js → settings-BAiJiCHS.js} +2 -2
- package/dashboard/dist/assets/{settings-Ife_UwAp.js.map → settings-BAiJiCHS.js.map} +1 -1
- package/dashboard/dist/assets/{tasks-BquNDHDI.js → tasks-CvroqHtm.js} +2 -2
- package/dashboard/dist/assets/{tasks-BquNDHDI.js.map → tasks-CvroqHtm.js.map} +1 -1
- package/dashboard/dist/assets/{useEventHooks-anv_B2Yy.js → useEventHooks-BHMbzR_y.js} +2 -2
- package/dashboard/dist/assets/{useEventHooks-anv_B2Yy.js.map → useEventHooks-BHMbzR_y.js.map} +1 -1
- package/dashboard/dist/assets/useFilterParams-CGRYFw_A.js +2 -0
- package/dashboard/dist/assets/useFilterParams-CGRYFw_A.js.map +1 -0
- package/dashboard/dist/assets/useYamlActivityEvents-D56KV14X.js +2 -0
- package/dashboard/dist/assets/useYamlActivityEvents-D56KV14X.js.map +1 -0
- package/dashboard/dist/assets/{users-CFcxB4v6.js → users-CxIMy_xw.js} +2 -2
- package/dashboard/dist/assets/{users-CFcxB4v6.js.map → users-CxIMy_xw.js.map} +1 -1
- package/dashboard/dist/assets/{vendor-icons-T4r2DSPD.js → vendor-icons-AFGxSeQS.js} +132 -82
- package/dashboard/dist/assets/vendor-icons-AFGxSeQS.js.map +1 -0
- package/dashboard/dist/assets/{workflows-CeRci9z3.js → workflows-yR9yais7.js} +2 -2
- package/dashboard/dist/assets/{workflows-CeRci9z3.js.map → workflows-yR9yais7.js.map} +1 -1
- package/dashboard/dist/assets/yaml-workflows-QVF2MZ0l.js +2 -0
- package/dashboard/dist/assets/yaml-workflows-QVF2MZ0l.js.map +1 -0
- package/dashboard/dist/index.html +3 -3
- package/docs/schema-exchange.md +173 -0
- package/docs/self-test.md +106 -0
- package/package.json +4 -2
- package/build/lib/db/schemas/003_workflow_discovery.sql +0 -39
- package/build/lib/db/schemas/004_query_router.sql +0 -38
- package/build/lib/db/schemas/004_workflow_sets.sql +0 -29
- package/build/lib/db/schemas/005_triage_router.sql +0 -37
- package/build/lib/db/schemas/005_unique_graph_topic.sql +0 -7
- package/build/lib/db/schemas/006_oauth.sql +0 -50
- package/build/lib/db/schemas/007_security.sql +0 -27
- package/build/lib/db/schemas/008_bot_accounts.sql +0 -30
- package/build/lib/db/schemas/009_audit_trail.sql +0 -7
- package/build/lib/db/schemas/010_credential_providers.sql +0 -4
- package/build/lib/db/schemas/011_system_workflow_configs.sql +0 -37
- package/build/lib/db/schemas/012_drop_modality.sql +0 -6
- package/build/lib/db/schemas/013_execute_as.sql +0 -9
- package/build/lib/db/schemas/014_ephemeral_credentials.sql +0 -16
- package/build/lib/db/schemas/015_knowledge.sql +0 -23
- package/build/lib/db/schemas/016_streamable_http.sql +0 -7
- package/dashboard/dist/assets/CredentialsPage-DJablIbs.js +0 -2
- package/dashboard/dist/assets/McpQueryDetailPage-BWbinTM_.js +0 -5
- package/dashboard/dist/assets/McpQueryDetailPage-BWbinTM_.js.map +0 -1
- package/dashboard/dist/assets/McpQueryPage-lV6kfDG5.js +0 -2
- package/dashboard/dist/assets/McpRunDetailPage-D6gaxH3_.js +0 -2
- package/dashboard/dist/assets/McpRunDetailPage-D6gaxH3_.js.map +0 -1
- package/dashboard/dist/assets/McpRunsPage-DKvTklh9.js +0 -2
- package/dashboard/dist/assets/McpRunsPage-DKvTklh9.js.map +0 -1
- package/dashboard/dist/assets/OperatorDashboard-C9SSV96T.js +0 -2
- package/dashboard/dist/assets/RolesPage-SMedMuqa.js +0 -2
- package/dashboard/dist/assets/WorkflowPill-CZqGslD6.js +0 -2
- package/dashboard/dist/assets/WorkflowPill-CZqGslD6.js.map +0 -1
- package/dashboard/dist/assets/YamlWorkflowsPage-VjdhnLmO.js +0 -2
- package/dashboard/dist/assets/YamlWorkflowsPage-VjdhnLmO.js.map +0 -1
- package/dashboard/dist/assets/escalation-columns-Cyg58nkg.js +0 -2
- package/dashboard/dist/assets/helpers-BCix9c_m.js +0 -2
- package/dashboard/dist/assets/helpers-BCix9c_m.js.map +0 -1
- package/dashboard/dist/assets/index-BYZX9tOb.js.map +0 -1
- package/dashboard/dist/assets/index-Cg5nfiYX.js +0 -2
- package/dashboard/dist/assets/index-DcIKW-cZ.css +0 -1
- package/dashboard/dist/assets/index-Di12t56M.js +0 -2
- package/dashboard/dist/assets/mcp-query-B8-P_QoG.js +0 -2
- package/dashboard/dist/assets/mcp-query-B8-P_QoG.js.map +0 -1
- package/dashboard/dist/assets/mcp-runs-CWeZinoF.js +0 -2
- package/dashboard/dist/assets/mcp-runs-CWeZinoF.js.map +0 -1
- package/dashboard/dist/assets/useFilterParams-BUyLHcx_.js +0 -2
- package/dashboard/dist/assets/useFilterParams-BUyLHcx_.js.map +0 -1
- package/dashboard/dist/assets/useYamlActivityEvents-DN-PTgVx.js +0 -2
- package/dashboard/dist/assets/useYamlActivityEvents-DN-PTgVx.js.map +0 -1
- package/dashboard/dist/assets/vendor-icons-T4r2DSPD.js.map +0 -1
- package/dashboard/dist/assets/yaml-workflows-DLwd2BOX.js +0 -2
- package/dashboard/dist/assets/yaml-workflows-DLwd2BOX.js.map +0 -1
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
-- Long Tail Workflows: Schema
|
|
2
|
-
--
|
|
2
|
+
-- All tables, indexes, triggers, and functions.
|
|
3
3
|
|
|
4
4
|
-- ─── updated_at trigger ─────────────────────────────────────────────────────
|
|
5
5
|
|
|
@@ -28,28 +28,31 @@ ON CONFLICT DO NOTHING;
|
|
|
28
28
|
-- ─── lt_tasks ────────────────────────────────────────────────────────────────
|
|
29
29
|
|
|
30
30
|
CREATE TABLE IF NOT EXISTS lt_tasks (
|
|
31
|
-
id
|
|
32
|
-
workflow_id
|
|
33
|
-
workflow_type
|
|
34
|
-
lt_type
|
|
35
|
-
task_queue
|
|
36
|
-
status
|
|
37
|
-
priority
|
|
38
|
-
signal_id
|
|
31
|
+
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
|
32
|
+
workflow_id TEXT NOT NULL,
|
|
33
|
+
workflow_type TEXT NOT NULL,
|
|
34
|
+
lt_type TEXT NOT NULL,
|
|
35
|
+
task_queue TEXT,
|
|
36
|
+
status TEXT NOT NULL DEFAULT 'pending',
|
|
37
|
+
priority INTEGER NOT NULL DEFAULT 2,
|
|
38
|
+
signal_id TEXT NOT NULL,
|
|
39
39
|
parent_workflow_id TEXT NOT NULL,
|
|
40
|
-
origin_id
|
|
41
|
-
parent_id
|
|
42
|
-
started_at
|
|
43
|
-
completed_at
|
|
44
|
-
envelope
|
|
45
|
-
metadata
|
|
46
|
-
error
|
|
47
|
-
milestones
|
|
48
|
-
data
|
|
49
|
-
trace_id
|
|
50
|
-
span_id
|
|
51
|
-
|
|
52
|
-
|
|
40
|
+
origin_id TEXT,
|
|
41
|
+
parent_id TEXT,
|
|
42
|
+
started_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
|
|
43
|
+
completed_at TIMESTAMPTZ,
|
|
44
|
+
envelope TEXT NOT NULL,
|
|
45
|
+
metadata JSONB,
|
|
46
|
+
error TEXT,
|
|
47
|
+
milestones JSONB NOT NULL DEFAULT '[]'::JSONB,
|
|
48
|
+
data TEXT,
|
|
49
|
+
trace_id TEXT,
|
|
50
|
+
span_id TEXT,
|
|
51
|
+
initiated_by UUID,
|
|
52
|
+
principal_type TEXT DEFAULT 'user',
|
|
53
|
+
executing_as TEXT,
|
|
54
|
+
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
|
|
55
|
+
updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
|
|
53
56
|
);
|
|
54
57
|
|
|
55
58
|
CREATE INDEX IF NOT EXISTS idx_lt_tasks_status_type ON lt_tasks (status, workflow_type, created_at DESC);
|
|
@@ -61,39 +64,80 @@ CREATE INDEX IF NOT EXISTS idx_lt_tasks_origin ON lt_tasks (origin_id, created_a
|
|
|
61
64
|
CREATE INDEX IF NOT EXISTS idx_lt_tasks_workflow_id ON lt_tasks (workflow_id);
|
|
62
65
|
CREATE INDEX IF NOT EXISTS idx_lt_tasks_origin_id ON lt_tasks (origin_id) WHERE origin_id IS NOT NULL;
|
|
63
66
|
CREATE INDEX IF NOT EXISTS idx_lt_tasks_trace ON lt_tasks (trace_id) WHERE trace_id IS NOT NULL;
|
|
67
|
+
CREATE INDEX IF NOT EXISTS idx_lt_tasks_initiated_by ON lt_tasks (initiated_by) WHERE initiated_by IS NOT NULL;
|
|
64
68
|
|
|
65
69
|
CREATE OR REPLACE TRIGGER trg_lt_tasks_updated_at
|
|
66
70
|
BEFORE UPDATE ON lt_tasks
|
|
67
71
|
FOR EACH ROW EXECUTE FUNCTION lt_set_updated_at();
|
|
68
72
|
|
|
73
|
+
-- ─── lt_users ────────────────────────────────────────────────────────────────
|
|
74
|
+
|
|
75
|
+
CREATE TABLE IF NOT EXISTS lt_users (
|
|
76
|
+
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
|
77
|
+
external_id TEXT UNIQUE NOT NULL,
|
|
78
|
+
email TEXT,
|
|
79
|
+
display_name TEXT,
|
|
80
|
+
password_hash TEXT,
|
|
81
|
+
status TEXT NOT NULL DEFAULT 'active' CHECK (status IN ('active', 'inactive', 'suspended')),
|
|
82
|
+
account_type TEXT NOT NULL DEFAULT 'user' CHECK (account_type IN ('user', 'bot')),
|
|
83
|
+
oauth_provider TEXT,
|
|
84
|
+
oauth_provider_id TEXT,
|
|
85
|
+
metadata JSONB,
|
|
86
|
+
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
|
|
87
|
+
updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
|
|
88
|
+
);
|
|
89
|
+
|
|
90
|
+
CREATE INDEX IF NOT EXISTS idx_lt_users_status ON lt_users (status);
|
|
91
|
+
CREATE INDEX IF NOT EXISTS idx_lt_users_oauth
|
|
92
|
+
ON lt_users (oauth_provider, oauth_provider_id)
|
|
93
|
+
WHERE oauth_provider IS NOT NULL;
|
|
94
|
+
|
|
95
|
+
CREATE TRIGGER lt_users_updated_at
|
|
96
|
+
BEFORE UPDATE ON lt_users
|
|
97
|
+
FOR EACH ROW EXECUTE FUNCTION lt_set_updated_at();
|
|
98
|
+
|
|
99
|
+
-- ─── lt_user_roles ───────────────────────────────────────────────────────────
|
|
100
|
+
|
|
101
|
+
CREATE TABLE IF NOT EXISTS lt_user_roles (
|
|
102
|
+
user_id UUID NOT NULL REFERENCES lt_users(id) ON DELETE CASCADE,
|
|
103
|
+
role TEXT NOT NULL REFERENCES lt_roles(role),
|
|
104
|
+
type TEXT NOT NULL DEFAULT 'member' CHECK (type IN ('superadmin', 'admin', 'member')),
|
|
105
|
+
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
|
|
106
|
+
PRIMARY KEY (user_id, role)
|
|
107
|
+
);
|
|
108
|
+
|
|
109
|
+
CREATE INDEX IF NOT EXISTS idx_lt_user_roles_type ON lt_user_roles (type);
|
|
110
|
+
CREATE INDEX IF NOT EXISTS idx_lt_user_roles_user_id ON lt_user_roles (user_id);
|
|
111
|
+
|
|
69
112
|
-- ─── lt_escalations ─────────────────────────────────────────────────────────
|
|
70
113
|
|
|
71
114
|
CREATE TABLE IF NOT EXISTS lt_escalations (
|
|
72
|
-
id
|
|
73
|
-
type
|
|
74
|
-
subtype
|
|
75
|
-
description
|
|
76
|
-
status
|
|
77
|
-
priority
|
|
78
|
-
task_id
|
|
79
|
-
origin_id
|
|
80
|
-
parent_id
|
|
81
|
-
workflow_id
|
|
82
|
-
task_queue
|
|
83
|
-
workflow_type
|
|
84
|
-
role
|
|
85
|
-
assigned_to
|
|
86
|
-
assigned_until
|
|
87
|
-
resolved_at
|
|
88
|
-
claimed_at
|
|
89
|
-
|
|
90
|
-
|
|
115
|
+
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
|
116
|
+
type TEXT NOT NULL,
|
|
117
|
+
subtype TEXT NOT NULL,
|
|
118
|
+
description TEXT,
|
|
119
|
+
status TEXT NOT NULL DEFAULT 'pending',
|
|
120
|
+
priority INTEGER NOT NULL DEFAULT 2,
|
|
121
|
+
task_id UUID REFERENCES lt_tasks(id),
|
|
122
|
+
origin_id TEXT,
|
|
123
|
+
parent_id TEXT,
|
|
124
|
+
workflow_id TEXT,
|
|
125
|
+
task_queue TEXT,
|
|
126
|
+
workflow_type TEXT,
|
|
127
|
+
role TEXT NOT NULL REFERENCES lt_roles(role),
|
|
128
|
+
assigned_to TEXT,
|
|
129
|
+
assigned_until TIMESTAMPTZ,
|
|
130
|
+
resolved_at TIMESTAMPTZ,
|
|
131
|
+
claimed_at TIMESTAMPTZ,
|
|
132
|
+
created_by UUID,
|
|
133
|
+
envelope TEXT NOT NULL,
|
|
134
|
+
metadata JSONB,
|
|
91
135
|
escalation_payload TEXT,
|
|
92
|
-
resolver_payload
|
|
93
|
-
trace_id
|
|
94
|
-
span_id
|
|
95
|
-
created_at
|
|
96
|
-
updated_at
|
|
136
|
+
resolver_payload TEXT,
|
|
137
|
+
trace_id TEXT,
|
|
138
|
+
span_id TEXT,
|
|
139
|
+
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
|
|
140
|
+
updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
|
|
97
141
|
);
|
|
98
142
|
|
|
99
143
|
CREATE INDEX IF NOT EXISTS idx_lt_escalations_available ON lt_escalations (status, role, assigned_until, created_at DESC);
|
|
@@ -113,44 +157,12 @@ CREATE INDEX IF NOT EXISTS idx_lt_escalations_trace ON lt_escalations (trace_id)
|
|
|
113
157
|
CREATE INDEX IF NOT EXISTS idx_lt_escalations_created_desc ON lt_escalations (created_at DESC);
|
|
114
158
|
CREATE INDEX IF NOT EXISTS idx_lt_escalations_updated_desc ON lt_escalations (updated_at DESC);
|
|
115
159
|
CREATE INDEX IF NOT EXISTS idx_lt_escalations_priority_desc ON lt_escalations (priority DESC, created_at DESC);
|
|
160
|
+
CREATE INDEX IF NOT EXISTS idx_lt_escalations_created_by ON lt_escalations (created_by) WHERE created_by IS NOT NULL;
|
|
116
161
|
|
|
117
162
|
CREATE OR REPLACE TRIGGER trg_lt_escalations_updated_at
|
|
118
163
|
BEFORE UPDATE ON lt_escalations
|
|
119
164
|
FOR EACH ROW EXECUTE FUNCTION lt_set_updated_at();
|
|
120
165
|
|
|
121
|
-
-- ─── lt_users ────────────────────────────────────────────────────────────────
|
|
122
|
-
|
|
123
|
-
CREATE TABLE IF NOT EXISTS lt_users (
|
|
124
|
-
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
|
125
|
-
external_id TEXT UNIQUE NOT NULL,
|
|
126
|
-
email TEXT,
|
|
127
|
-
display_name TEXT,
|
|
128
|
-
password_hash TEXT,
|
|
129
|
-
status TEXT NOT NULL DEFAULT 'active' CHECK (status IN ('active', 'inactive', 'suspended')),
|
|
130
|
-
metadata JSONB,
|
|
131
|
-
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
|
|
132
|
-
updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
|
|
133
|
-
);
|
|
134
|
-
|
|
135
|
-
CREATE TRIGGER lt_users_updated_at
|
|
136
|
-
BEFORE UPDATE ON lt_users
|
|
137
|
-
FOR EACH ROW EXECUTE FUNCTION lt_set_updated_at();
|
|
138
|
-
|
|
139
|
-
CREATE INDEX IF NOT EXISTS idx_lt_users_status ON lt_users (status);
|
|
140
|
-
|
|
141
|
-
-- ─── lt_user_roles ───────────────────────────────────────────────────────────
|
|
142
|
-
|
|
143
|
-
CREATE TABLE IF NOT EXISTS lt_user_roles (
|
|
144
|
-
user_id UUID NOT NULL REFERENCES lt_users(id) ON DELETE CASCADE,
|
|
145
|
-
role TEXT NOT NULL REFERENCES lt_roles(role),
|
|
146
|
-
type TEXT NOT NULL DEFAULT 'member' CHECK (type IN ('superadmin', 'admin', 'member')),
|
|
147
|
-
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
|
|
148
|
-
PRIMARY KEY (user_id, role)
|
|
149
|
-
);
|
|
150
|
-
|
|
151
|
-
CREATE INDEX IF NOT EXISTS idx_lt_user_roles_type ON lt_user_roles (type);
|
|
152
|
-
CREATE INDEX IF NOT EXISTS idx_lt_user_roles_user_id ON lt_user_roles (user_id);
|
|
153
|
-
|
|
154
166
|
-- ─── lt_config_workflows ────────────────────────────────────────────────────
|
|
155
167
|
|
|
156
168
|
CREATE TABLE IF NOT EXISTS lt_config_workflows (
|
|
@@ -193,24 +205,38 @@ CREATE TABLE IF NOT EXISTS lt_config_invocation_roles (
|
|
|
193
205
|
UNIQUE(workflow_type, role)
|
|
194
206
|
);
|
|
195
207
|
|
|
208
|
+
-- ─── lt_config_role_escalations ─────────────────────────────────────────────
|
|
209
|
+
|
|
210
|
+
CREATE TABLE IF NOT EXISTS lt_config_role_escalations (
|
|
211
|
+
source_role TEXT NOT NULL REFERENCES lt_roles(role),
|
|
212
|
+
target_role TEXT NOT NULL REFERENCES lt_roles(role),
|
|
213
|
+
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
|
|
214
|
+
PRIMARY KEY (source_role, target_role)
|
|
215
|
+
);
|
|
216
|
+
|
|
217
|
+
CREATE INDEX IF NOT EXISTS idx_lt_config_role_escalations_source
|
|
218
|
+
ON lt_config_role_escalations (source_role);
|
|
219
|
+
|
|
196
220
|
-- ─── lt_mcp_servers ─────────────────────────────────────────────────────────
|
|
197
221
|
|
|
198
222
|
CREATE TABLE IF NOT EXISTS lt_mcp_servers (
|
|
199
|
-
id
|
|
200
|
-
name
|
|
201
|
-
description
|
|
202
|
-
transport_type
|
|
203
|
-
transport_config
|
|
204
|
-
auto_connect
|
|
205
|
-
tool_manifest
|
|
206
|
-
status
|
|
207
|
-
|
|
208
|
-
last_connected_at
|
|
209
|
-
metadata
|
|
210
|
-
tags
|
|
211
|
-
compile_hints
|
|
212
|
-
|
|
213
|
-
|
|
223
|
+
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
|
224
|
+
name TEXT UNIQUE NOT NULL,
|
|
225
|
+
description TEXT,
|
|
226
|
+
transport_type TEXT NOT NULL CHECK (transport_type IN ('stdio', 'sse', 'streamable-http')),
|
|
227
|
+
transport_config JSONB NOT NULL DEFAULT '{}'::JSONB,
|
|
228
|
+
auto_connect BOOLEAN NOT NULL DEFAULT false,
|
|
229
|
+
tool_manifest JSONB,
|
|
230
|
+
status TEXT NOT NULL DEFAULT 'registered'
|
|
231
|
+
CHECK (status IN ('registered', 'connected', 'error', 'disconnected')),
|
|
232
|
+
last_connected_at TIMESTAMPTZ,
|
|
233
|
+
metadata JSONB,
|
|
234
|
+
tags TEXT[] NOT NULL DEFAULT '{}',
|
|
235
|
+
compile_hints TEXT,
|
|
236
|
+
required_scopes TEXT[] NOT NULL DEFAULT '{}',
|
|
237
|
+
credential_providers TEXT[] NOT NULL DEFAULT '{}',
|
|
238
|
+
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
|
|
239
|
+
updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
|
|
214
240
|
);
|
|
215
241
|
|
|
216
242
|
CREATE INDEX IF NOT EXISTS idx_lt_mcp_servers_name ON lt_mcp_servers (name);
|
|
@@ -222,18 +248,6 @@ CREATE OR REPLACE TRIGGER trg_lt_mcp_servers_updated_at
|
|
|
222
248
|
BEFORE UPDATE ON lt_mcp_servers
|
|
223
249
|
FOR EACH ROW EXECUTE FUNCTION lt_set_updated_at();
|
|
224
250
|
|
|
225
|
-
-- ─── lt_config_role_escalations ─────────────────────────────────────────────
|
|
226
|
-
|
|
227
|
-
CREATE TABLE IF NOT EXISTS lt_config_role_escalations (
|
|
228
|
-
source_role TEXT NOT NULL REFERENCES lt_roles(role),
|
|
229
|
-
target_role TEXT NOT NULL REFERENCES lt_roles(role),
|
|
230
|
-
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
|
|
231
|
-
PRIMARY KEY (source_role, target_role)
|
|
232
|
-
);
|
|
233
|
-
|
|
234
|
-
CREATE INDEX IF NOT EXISTS idx_lt_config_role_escalations_source
|
|
235
|
-
ON lt_config_role_escalations (source_role);
|
|
236
|
-
|
|
237
251
|
-- ─── lt_yaml_workflows ──────────────────────────────────────────────────────
|
|
238
252
|
|
|
239
253
|
CREATE TABLE IF NOT EXISTS lt_yaml_workflows (
|
|
@@ -261,6 +275,12 @@ CREATE TABLE IF NOT EXISTS lt_yaml_workflows (
|
|
|
261
275
|
cron_schedule TEXT,
|
|
262
276
|
cron_envelope JSONB,
|
|
263
277
|
execute_as TEXT,
|
|
278
|
+
original_prompt TEXT,
|
|
279
|
+
category TEXT,
|
|
280
|
+
search_vector TSVECTOR,
|
|
281
|
+
set_id UUID,
|
|
282
|
+
set_role TEXT CHECK (set_role IN ('leaf', 'composition', 'router')),
|
|
283
|
+
set_build_order INTEGER,
|
|
264
284
|
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
|
|
265
285
|
updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
|
|
266
286
|
);
|
|
@@ -268,11 +288,36 @@ CREATE TABLE IF NOT EXISTS lt_yaml_workflows (
|
|
|
268
288
|
CREATE INDEX IF NOT EXISTS idx_lt_yaml_workflows_status ON lt_yaml_workflows (status);
|
|
269
289
|
CREATE INDEX IF NOT EXISTS idx_lt_yaml_workflows_app_id ON lt_yaml_workflows (app_id);
|
|
270
290
|
CREATE INDEX IF NOT EXISTS idx_lt_yaml_workflows_tags ON lt_yaml_workflows USING GIN (tags);
|
|
291
|
+
CREATE INDEX IF NOT EXISTS idx_lt_yaml_workflows_search ON lt_yaml_workflows USING GIN (search_vector);
|
|
292
|
+
CREATE INDEX IF NOT EXISTS idx_lt_yaml_workflows_category ON lt_yaml_workflows (category) WHERE category IS NOT NULL;
|
|
293
|
+
CREATE INDEX IF NOT EXISTS idx_lt_yaml_workflows_set_id ON lt_yaml_workflows (set_id) WHERE set_id IS NOT NULL;
|
|
294
|
+
|
|
295
|
+
CREATE UNIQUE INDEX IF NOT EXISTS idx_lt_yaml_workflows_app_topic_unique
|
|
296
|
+
ON lt_yaml_workflows (app_id, graph_topic)
|
|
297
|
+
WHERE status != 'archived';
|
|
271
298
|
|
|
272
299
|
CREATE OR REPLACE TRIGGER trg_lt_yaml_workflows_updated_at
|
|
273
300
|
BEFORE UPDATE ON lt_yaml_workflows
|
|
274
301
|
FOR EACH ROW EXECUTE FUNCTION lt_set_updated_at();
|
|
275
302
|
|
|
303
|
+
-- Full-text search trigger
|
|
304
|
+
CREATE OR REPLACE FUNCTION lt_yaml_workflows_search_vector_update()
|
|
305
|
+
RETURNS TRIGGER AS $$
|
|
306
|
+
BEGIN
|
|
307
|
+
NEW.search_vector :=
|
|
308
|
+
setweight(to_tsvector('english', coalesce(NEW.name, '')), 'A') ||
|
|
309
|
+
setweight(to_tsvector('english', coalesce(NEW.original_prompt, '')), 'A') ||
|
|
310
|
+
setweight(to_tsvector('english', coalesce(NEW.description, '')), 'B') ||
|
|
311
|
+
setweight(to_tsvector('english', coalesce(NEW.category, '')), 'C') ||
|
|
312
|
+
setweight(to_tsvector('english', coalesce(array_to_string(NEW.tags, ' '), '')), 'C');
|
|
313
|
+
RETURN NEW;
|
|
314
|
+
END;
|
|
315
|
+
$$ LANGUAGE plpgsql;
|
|
316
|
+
|
|
317
|
+
CREATE OR REPLACE TRIGGER trg_lt_yaml_workflows_search_vector
|
|
318
|
+
BEFORE INSERT OR UPDATE ON lt_yaml_workflows
|
|
319
|
+
FOR EACH ROW EXECUTE FUNCTION lt_yaml_workflows_search_vector_update();
|
|
320
|
+
|
|
276
321
|
-- ─── lt_yaml_workflow_versions ──────────────────────────────────────────────
|
|
277
322
|
|
|
278
323
|
CREATE TABLE IF NOT EXISTS lt_yaml_workflow_versions (
|
|
@@ -292,6 +337,136 @@ CREATE TABLE IF NOT EXISTS lt_yaml_workflow_versions (
|
|
|
292
337
|
CREATE INDEX IF NOT EXISTS idx_lt_yaml_wf_versions_workflow
|
|
293
338
|
ON lt_yaml_workflow_versions (workflow_id, version DESC);
|
|
294
339
|
|
|
340
|
+
-- ─── lt_workflow_sets ───────────────────────────────────────────────────────
|
|
341
|
+
|
|
342
|
+
CREATE TABLE IF NOT EXISTS lt_workflow_sets (
|
|
343
|
+
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
|
344
|
+
name TEXT UNIQUE NOT NULL,
|
|
345
|
+
description TEXT,
|
|
346
|
+
specification TEXT NOT NULL,
|
|
347
|
+
plan JSONB NOT NULL DEFAULT '[]'::JSONB,
|
|
348
|
+
namespaces TEXT[] NOT NULL DEFAULT '{}',
|
|
349
|
+
status TEXT NOT NULL DEFAULT 'planning'
|
|
350
|
+
CHECK (status IN ('planning','planned','building','deploying','completed','failed')),
|
|
351
|
+
source_workflow_id TEXT,
|
|
352
|
+
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
|
|
353
|
+
updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
|
|
354
|
+
);
|
|
355
|
+
|
|
356
|
+
CREATE OR REPLACE TRIGGER trg_lt_workflow_sets_updated_at
|
|
357
|
+
BEFORE UPDATE ON lt_workflow_sets
|
|
358
|
+
FOR EACH ROW EXECUTE FUNCTION lt_set_updated_at();
|
|
359
|
+
|
|
360
|
+
-- Add FK for lt_yaml_workflows.set_id (table already exists, add constraint)
|
|
361
|
+
DO $$ BEGIN
|
|
362
|
+
ALTER TABLE lt_yaml_workflows ADD CONSTRAINT fk_lt_yaml_workflows_set_id
|
|
363
|
+
FOREIGN KEY (set_id) REFERENCES lt_workflow_sets(id) ON DELETE SET NULL;
|
|
364
|
+
EXCEPTION
|
|
365
|
+
WHEN duplicate_object THEN NULL;
|
|
366
|
+
END $$;
|
|
367
|
+
|
|
368
|
+
-- ─── lt_oauth_tokens ────────────────────────────────────────────────────────
|
|
369
|
+
|
|
370
|
+
CREATE TABLE IF NOT EXISTS lt_oauth_tokens (
|
|
371
|
+
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
|
372
|
+
user_id UUID NOT NULL REFERENCES lt_users(id) ON DELETE CASCADE,
|
|
373
|
+
provider TEXT NOT NULL,
|
|
374
|
+
label TEXT NOT NULL DEFAULT 'default',
|
|
375
|
+
access_token_enc TEXT NOT NULL,
|
|
376
|
+
refresh_token_enc TEXT,
|
|
377
|
+
token_type TEXT NOT NULL DEFAULT 'bearer',
|
|
378
|
+
scopes TEXT[] NOT NULL DEFAULT '{}',
|
|
379
|
+
expires_at TIMESTAMPTZ,
|
|
380
|
+
provider_user_id TEXT NOT NULL,
|
|
381
|
+
provider_email TEXT,
|
|
382
|
+
metadata JSONB,
|
|
383
|
+
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
|
|
384
|
+
updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
|
|
385
|
+
UNIQUE (user_id, provider, label)
|
|
386
|
+
);
|
|
387
|
+
|
|
388
|
+
CREATE INDEX IF NOT EXISTS idx_lt_oauth_tokens_provider
|
|
389
|
+
ON lt_oauth_tokens (provider, user_id);
|
|
390
|
+
|
|
391
|
+
CREATE OR REPLACE TRIGGER trg_lt_oauth_tokens_updated_at
|
|
392
|
+
BEFORE UPDATE ON lt_oauth_tokens
|
|
393
|
+
FOR EACH ROW EXECUTE FUNCTION lt_set_updated_at();
|
|
394
|
+
|
|
395
|
+
-- ─── lt_service_tokens ──────────────────────────────────────────────────────
|
|
396
|
+
|
|
397
|
+
CREATE TABLE IF NOT EXISTS lt_service_tokens (
|
|
398
|
+
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
|
399
|
+
name TEXT UNIQUE NOT NULL,
|
|
400
|
+
token_hash TEXT NOT NULL,
|
|
401
|
+
server_id UUID REFERENCES lt_mcp_servers(id) ON DELETE CASCADE,
|
|
402
|
+
scopes TEXT[] NOT NULL DEFAULT '{}',
|
|
403
|
+
expires_at TIMESTAMPTZ,
|
|
404
|
+
last_used_at TIMESTAMPTZ,
|
|
405
|
+
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
|
|
406
|
+
updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
|
|
407
|
+
);
|
|
408
|
+
|
|
409
|
+
CREATE INDEX IF NOT EXISTS idx_lt_service_tokens_server
|
|
410
|
+
ON lt_service_tokens (server_id);
|
|
411
|
+
|
|
412
|
+
CREATE OR REPLACE TRIGGER trg_lt_service_tokens_updated_at
|
|
413
|
+
BEFORE UPDATE ON lt_service_tokens
|
|
414
|
+
FOR EACH ROW EXECUTE FUNCTION lt_set_updated_at();
|
|
415
|
+
|
|
416
|
+
-- ─── lt_bot_api_keys ────────────────────────────────────────────────────────
|
|
417
|
+
|
|
418
|
+
CREATE TABLE IF NOT EXISTS lt_bot_api_keys (
|
|
419
|
+
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
|
420
|
+
name TEXT NOT NULL,
|
|
421
|
+
user_id UUID NOT NULL REFERENCES lt_users(id) ON DELETE CASCADE,
|
|
422
|
+
key_hash TEXT NOT NULL,
|
|
423
|
+
scopes TEXT[] NOT NULL DEFAULT '{}',
|
|
424
|
+
expires_at TIMESTAMPTZ,
|
|
425
|
+
last_used_at TIMESTAMPTZ,
|
|
426
|
+
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
|
|
427
|
+
updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
|
|
428
|
+
UNIQUE (user_id, name)
|
|
429
|
+
);
|
|
430
|
+
|
|
431
|
+
CREATE INDEX IF NOT EXISTS idx_bot_api_keys_user_id ON lt_bot_api_keys (user_id);
|
|
432
|
+
|
|
433
|
+
-- ─── lt_ephemeral_credentials ───────────────────────────────────────────────
|
|
434
|
+
|
|
435
|
+
CREATE TABLE IF NOT EXISTS lt_ephemeral_credentials (
|
|
436
|
+
token UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
|
437
|
+
value BYTEA NOT NULL,
|
|
438
|
+
label TEXT,
|
|
439
|
+
max_uses INTEGER NOT NULL DEFAULT 0,
|
|
440
|
+
use_count INTEGER NOT NULL DEFAULT 0,
|
|
441
|
+
expires_at TIMESTAMPTZ,
|
|
442
|
+
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
|
|
443
|
+
);
|
|
444
|
+
|
|
445
|
+
CREATE INDEX IF NOT EXISTS idx_lt_ephemeral_expiry
|
|
446
|
+
ON lt_ephemeral_credentials (expires_at)
|
|
447
|
+
WHERE expires_at IS NOT NULL;
|
|
448
|
+
|
|
449
|
+
-- ─── lt_knowledge ───────────────────────────────────────────────────────────
|
|
450
|
+
|
|
451
|
+
CREATE TABLE IF NOT EXISTS lt_knowledge (
|
|
452
|
+
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
|
453
|
+
domain TEXT NOT NULL,
|
|
454
|
+
key TEXT NOT NULL,
|
|
455
|
+
data JSONB NOT NULL DEFAULT '{}',
|
|
456
|
+
tags TEXT[] NOT NULL DEFAULT '{}',
|
|
457
|
+
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
|
|
458
|
+
updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
|
|
459
|
+
UNIQUE(domain, key)
|
|
460
|
+
);
|
|
461
|
+
|
|
462
|
+
CREATE INDEX IF NOT EXISTS idx_lt_knowledge_domain ON lt_knowledge (domain);
|
|
463
|
+
CREATE INDEX IF NOT EXISTS idx_lt_knowledge_tags ON lt_knowledge USING GIN (tags);
|
|
464
|
+
CREATE INDEX IF NOT EXISTS idx_lt_knowledge_data ON lt_knowledge USING GIN (data);
|
|
465
|
+
|
|
466
|
+
CREATE TRIGGER lt_knowledge_updated_at
|
|
467
|
+
BEFORE UPDATE ON lt_knowledge
|
|
468
|
+
FOR EACH ROW EXECUTE FUNCTION lt_set_updated_at();
|
|
469
|
+
|
|
295
470
|
-- ─── lt_namespaces ──────────────────────────────────────────────────────────
|
|
296
471
|
|
|
297
472
|
CREATE TABLE IF NOT EXISTS lt_namespaces (
|
|
@@ -1,6 +1,7 @@
|
|
|
1
|
-
--
|
|
1
|
+
-- System seed data: built-in MCP server, system workflow configs, escalation chains.
|
|
2
|
+
-- Example workflow configs are seeded at runtime when examples: true.
|
|
2
3
|
|
|
3
|
-
-- ─── MCP
|
|
4
|
+
-- ─── Built-in MCP server ───────────────────────────────────────────────────
|
|
4
5
|
|
|
5
6
|
INSERT INTO lt_mcp_servers (name, description, transport_type, transport_config, auto_connect, status)
|
|
6
7
|
VALUES (
|
|
@@ -24,52 +25,68 @@ INSERT INTO lt_config_role_escalations (source_role, target_role) VALUES
|
|
|
24
25
|
('admin', 'superadmin')
|
|
25
26
|
ON CONFLICT DO NOTHING;
|
|
26
27
|
|
|
27
|
-
-- ───
|
|
28
|
+
-- ─── System workflow configs ────────────────────────────────────────────────
|
|
28
29
|
|
|
29
30
|
INSERT INTO lt_config_workflows
|
|
30
|
-
(workflow_type, task_queue, default_role, invocable, description, tool_tags
|
|
31
|
+
(workflow_type, task_queue, default_role, invocable, description, tool_tags)
|
|
31
32
|
VALUES
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
'
|
|
35
|
-
|
|
36
|
-
'
|
|
37
|
-
'{
|
|
33
|
+
('mcpQuery', 'long-tail-system', 'engineer', false,
|
|
34
|
+
'Dynamic MCP tool orchestration — LLM agentic loop with raw MCP tools',
|
|
35
|
+
'{}'),
|
|
36
|
+
('mcpTriage', 'long-tail-system', 'engineer', false,
|
|
37
|
+
'Dynamic MCP triage — LLM agentic loop for escalation remediation',
|
|
38
|
+
'{}'),
|
|
39
|
+
('mcpWorkflowBuilder', 'long-tail-system', 'engineer', false,
|
|
40
|
+
'Direct pipeline builder — LLM constructs DAG from tool schemas',
|
|
41
|
+
'{}'),
|
|
42
|
+
('mcpWorkflowPlanner', 'long-tail-system', 'engineer', false,
|
|
43
|
+
'Plan mode — decomposes specifications into multi-workflow sets',
|
|
44
|
+
'{}')
|
|
45
|
+
ON CONFLICT (workflow_type) DO NOTHING;
|
|
38
46
|
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
'
|
|
47
|
+
-- Query router (orchestrator entry point)
|
|
48
|
+
INSERT INTO lt_config_workflows
|
|
49
|
+
(workflow_type, task_queue, default_role, invocable, description, tool_tags, envelope_schema)
|
|
50
|
+
VALUES
|
|
51
|
+
('mcpQueryRouter', 'long-tail-system', 'engineer', true,
|
|
52
|
+
'Do anything with tools — browser automation, file operations, HTTP requests, database queries, document processing, and more',
|
|
53
|
+
'{}',
|
|
54
|
+
'{"data": {"prompt": "Describe what you want to accomplish using available tools..."}, "metadata": {"source": "dashboard"}}'::jsonb)
|
|
55
|
+
ON CONFLICT (workflow_type) DO NOTHING;
|
|
45
56
|
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
'
|
|
57
|
+
-- Deterministic execution (compiled YAML workflows)
|
|
58
|
+
INSERT INTO lt_config_workflows
|
|
59
|
+
(workflow_type, task_queue, default_role, invocable, description, tool_tags)
|
|
60
|
+
VALUES
|
|
61
|
+
('mcpDeterministic', 'long-tail-system', 'engineer', false,
|
|
62
|
+
'Deterministic execution — invokes matched compiled YAML workflows with extracted inputs',
|
|
63
|
+
'{}')
|
|
64
|
+
ON CONFLICT (workflow_type) DO NOTHING;
|
|
52
65
|
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
66
|
+
-- Triage router
|
|
67
|
+
INSERT INTO lt_config_workflows
|
|
68
|
+
(workflow_type, task_queue, default_role, invocable, description, tool_tags)
|
|
69
|
+
VALUES
|
|
70
|
+
('mcpTriageRouter', 'long-tail-system', 'engineer', false,
|
|
71
|
+
'Triage router — discovers compiled workflows for remediation, routes to deterministic or dynamic triage',
|
|
72
|
+
'{}')
|
|
73
|
+
ON CONFLICT (workflow_type) DO NOTHING;
|
|
59
74
|
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
'
|
|
75
|
+
-- Triage deterministic
|
|
76
|
+
INSERT INTO lt_config_workflows
|
|
77
|
+
(workflow_type, task_queue, default_role, invocable, description, tool_tags)
|
|
78
|
+
VALUES
|
|
79
|
+
('mcpTriageDeterministic', 'long-tail-system', 'engineer', false,
|
|
80
|
+
'Deterministic triage — invokes matched compiled workflows for escalation remediation',
|
|
81
|
+
'{}')
|
|
66
82
|
ON CONFLICT (workflow_type) DO NOTHING;
|
|
67
83
|
|
|
68
|
-
-- ─── Assign roles to all workflows
|
|
84
|
+
-- ─── Assign roles to all system workflows ──────────────────────────────────
|
|
69
85
|
|
|
70
86
|
INSERT INTO lt_config_roles (workflow_type, role)
|
|
71
|
-
SELECT
|
|
72
|
-
FROM
|
|
73
|
-
|
|
87
|
+
SELECT wt, unnest(ARRAY['reviewer', 'engineer', 'admin'])
|
|
88
|
+
FROM unnest(ARRAY[
|
|
89
|
+
'mcpQuery', 'mcpTriage', 'mcpWorkflowBuilder', 'mcpWorkflowPlanner',
|
|
90
|
+
'mcpQueryRouter', 'mcpDeterministic', 'mcpTriageRouter', 'mcpTriageDeterministic'
|
|
91
|
+
]) AS wt
|
|
74
92
|
ON CONFLICT (workflow_type, role) DO NOTHING;
|
|
75
|
-
|
|
@@ -23,4 +23,19 @@ export declare class LocalStorageBackend implements StorageBackend {
|
|
|
23
23
|
size: number;
|
|
24
24
|
}>;
|
|
25
25
|
createReadStream(key: string): Promise<NodeJS.ReadableStream>;
|
|
26
|
+
listWithPrefixes(prefix?: string, pageSize?: number, continuationToken?: string): Promise<{
|
|
27
|
+
files: Array<{
|
|
28
|
+
path: string;
|
|
29
|
+
size: number;
|
|
30
|
+
modified_at: string;
|
|
31
|
+
}>;
|
|
32
|
+
directories: string[];
|
|
33
|
+
nextToken?: string;
|
|
34
|
+
}>;
|
|
35
|
+
getMetadata(key: string): Promise<{
|
|
36
|
+
size: number;
|
|
37
|
+
modified_at: string;
|
|
38
|
+
content_type: string;
|
|
39
|
+
}>;
|
|
40
|
+
getSignedUrl(key: string, expiresInSeconds: number): Promise<string>;
|
|
26
41
|
}
|