@hotmeshio/long-tail 0.1.14 → 0.1.16
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 +15 -0
- package/build/api/escalations/bulk.d.ts +78 -0
- package/build/api/escalations/bulk.js +279 -0
- package/build/api/escalations/claim.d.ts +30 -0
- package/build/api/escalations/claim.js +121 -0
- package/build/api/escalations/create.d.ts +29 -0
- package/build/api/escalations/create.js +101 -0
- package/build/api/escalations/helpers.d.ts +10 -0
- package/build/api/escalations/helpers.js +80 -0
- package/build/api/escalations/index.d.ts +6 -0
- package/build/api/escalations/index.js +26 -0
- package/build/api/escalations/list.d.ts +75 -0
- package/build/api/escalations/list.js +170 -0
- package/build/api/escalations/resolve.d.ts +18 -0
- package/build/api/escalations/resolve.js +243 -0
- package/build/api/escalations/single.d.ts +37 -0
- package/build/api/escalations/single.js +123 -0
- package/build/api/files.d.ts +3 -0
- package/build/api/files.js +18 -1
- package/build/api/knowledge.d.ts +36 -0
- package/build/api/knowledge.js +112 -0
- package/build/api/mcp/index.d.ts +2 -0
- package/build/api/mcp/index.js +16 -0
- package/build/api/{mcp.d.ts → mcp/servers.d.ts} +1 -33
- package/build/api/{mcp.js → mcp/servers.js} +4 -65
- package/build/api/mcp/tools.d.ts +33 -0
- package/build/api/mcp/tools.js +64 -0
- package/build/api/settings.js +6 -1
- package/build/api/workflows/config.d.ts +64 -0
- package/build/api/workflows/config.js +142 -0
- package/build/api/workflows/discovery.d.ts +29 -0
- package/build/api/workflows/discovery.js +153 -0
- package/build/api/workflows/index.d.ts +3 -0
- package/build/api/workflows/index.js +18 -0
- package/build/api/workflows/invocation.d.ts +67 -0
- package/build/api/workflows/invocation.js +188 -0
- package/build/api/yaml-workflows/cron.d.ts +39 -0
- package/build/api/yaml-workflows/cron.js +127 -0
- package/build/api/{yaml-workflows.d.ts → yaml-workflows/crud.d.ts} +22 -146
- package/build/api/{yaml-workflows.js → yaml-workflows/crud.js} +99 -380
- package/build/api/yaml-workflows/deploy.d.ts +71 -0
- package/build/api/yaml-workflows/deploy.js +223 -0
- package/build/api/yaml-workflows/helpers.d.ts +2 -0
- package/build/api/yaml-workflows/helpers.js +8 -0
- package/build/api/yaml-workflows/index.d.ts +4 -0
- package/build/api/yaml-workflows/index.js +27 -0
- package/build/api/yaml-workflows/versions.d.ts +43 -0
- package/build/api/yaml-workflows/versions.js +124 -0
- package/build/bin/ltc.d.ts +2 -0
- package/build/bin/ltc.js +220 -0
- package/build/examples/seed-data.d.ts +55 -0
- package/build/examples/seed-data.js +161 -0
- package/build/examples/seed.js +7 -164
- package/build/index.d.ts +1 -1
- package/build/lib/cli/auth.d.ts +23 -0
- package/build/lib/cli/auth.js +167 -0
- package/build/lib/cli/client.d.ts +6 -0
- package/build/lib/cli/client.js +31 -0
- package/build/lib/cli/commands/escalations.d.ts +19 -0
- package/build/lib/cli/commands/escalations.js +69 -0
- package/build/lib/cli/commands/knowledge.d.ts +18 -0
- package/build/lib/cli/commands/knowledge.js +87 -0
- package/build/lib/cli/commands/mcp.d.ts +8 -0
- package/build/lib/cli/commands/mcp.js +33 -0
- package/build/lib/cli/commands/pipelines.d.ts +16 -0
- package/build/lib/cli/commands/pipelines.js +67 -0
- package/build/lib/cli/commands/status.d.ts +1 -0
- package/build/lib/cli/commands/status.js +28 -0
- package/build/lib/cli/commands/users.d.ts +7 -0
- package/build/lib/cli/commands/users.js +25 -0
- package/build/lib/cli/commands/workflows.d.ts +16 -0
- package/build/lib/cli/commands/workflows.js +104 -0
- package/build/lib/cli/compile.d.ts +2 -0
- package/build/lib/cli/compile.js +165 -0
- package/build/lib/cli/format.d.ts +23 -0
- package/build/lib/cli/format.js +94 -0
- package/build/lib/cli/init.d.ts +1 -0
- package/build/lib/cli/init.js +61 -0
- package/build/lib/cli/output.d.ts +27 -0
- package/build/lib/cli/output.js +126 -0
- package/build/lib/cli/scanner.d.ts +10 -0
- package/build/lib/cli/scanner.js +164 -0
- package/build/lib/cli/types.d.ts +16 -0
- package/build/lib/cli/types.js +2 -0
- package/build/lib/db/schemas/schemas/001_schema.sql +485 -0
- package/build/lib/db/schemas/schemas/002_seed.sql +92 -0
- package/build/lib/events/socketio.d.ts +12 -0
- package/build/lib/events/socketio.js +24 -1
- package/build/lib/logger/index.d.ts +0 -9
- package/build/lib/logger/index.js +9 -4
- package/build/lib/storage/index.js +2 -2
- package/build/routes/file-browser.js +14 -0
- package/build/routes/index.js +4 -0
- package/build/routes/knowledge.d.ts +2 -0
- package/build/routes/knowledge.js +141 -0
- package/build/routes/nats-credentials.d.ts +2 -0
- package/build/routes/nats-credentials.js +22 -0
- package/build/routes/yaml-workflows/crud.js +9 -0
- package/build/sdk/index.d.ts +17 -0
- package/build/sdk/index.js +19 -0
- package/build/services/mcp/client/connection-dispatch.d.ts +18 -0
- package/build/services/mcp/client/connection-dispatch.js +78 -0
- package/build/services/mcp/client/connection-lifecycle.d.ts +48 -0
- package/build/services/mcp/client/connection-lifecycle.js +296 -0
- package/build/services/mcp/client/connection-test.d.ts +10 -0
- package/build/services/mcp/client/connection-test.js +49 -0
- package/build/services/mcp/client/connection.d.ts +3 -68
- package/build/services/mcp/client/connection.js +15 -393
- package/build/services/mcp/server-lifecycle.d.ts +27 -0
- package/build/services/mcp/server-lifecycle.js +49 -0
- package/build/services/mcp/server-tools.d.ts +13 -0
- package/build/services/mcp/server-tools.js +287 -0
- package/build/services/mcp/server.d.ts +2 -26
- package/build/services/mcp/server.js +7 -315
- package/build/services/yaml-workflow/builder-regenerate.d.ts +25 -0
- package/build/services/yaml-workflow/builder-regenerate.js +111 -0
- package/build/services/yaml-workflow/db-versions.d.ts +17 -0
- package/build/services/yaml-workflow/db-versions.js +76 -0
- package/build/services/yaml-workflow/db.d.ts +3 -13
- package/build/services/yaml-workflow/db.js +15 -71
- package/build/services/yaml-workflow/deployer-helpers.js +48 -17
- package/build/services/yaml-workflow/durable-compiler/index.d.ts +22 -0
- package/build/services/yaml-workflow/durable-compiler/index.js +168 -0
- package/build/services/yaml-workflow/durable-compiler/parser.d.ts +12 -0
- package/build/services/yaml-workflow/durable-compiler/parser.js +110 -0
- package/build/services/yaml-workflow/durable-compiler/prompts.d.ts +18 -0
- package/build/services/yaml-workflow/durable-compiler/prompts.js +570 -0
- package/build/services/yaml-workflow/durable-compiler/types.d.ts +51 -0
- package/build/services/yaml-workflow/durable-compiler/types.js +5 -0
- package/build/services/yaml-workflow/pipeline/build/dag-assembly.d.ts +17 -0
- package/build/services/yaml-workflow/pipeline/build/dag-assembly.js +192 -0
- package/build/services/yaml-workflow/pipeline/build/dag.d.ts +4 -13
- package/build/services/yaml-workflow/pipeline/build/dag.js +9 -185
- package/build/services/yaml-workflow/pipeline/prompt-templates.d.ts +10 -0
- package/build/services/yaml-workflow/pipeline/prompt-templates.js +270 -0
- package/build/services/yaml-workflow/pipeline/prompts.d.ts +3 -6
- package/build/services/yaml-workflow/pipeline/prompts.js +8 -263
- package/build/services/yaml-workflow/workers/register.js +4 -2
- package/build/start/adapters.js +4 -1
- package/build/start/socket-auth.d.ts +13 -0
- package/build/start/socket-auth.js +32 -0
- package/build/start/workers.js +6 -5
- package/build/system/activities/file-storage.d.ts +4 -0
- package/build/system/activities/file-storage.js +7 -1
- package/build/system/activities/knowledge.d.ts +23 -0
- package/build/system/activities/knowledge.js +50 -10
- package/build/system/activities/sql.d.ts +3 -0
- package/build/system/activities/sql.js +25 -1
- package/build/system/mcp-servers/file-storage.js +3 -1
- package/build/system/mcp-servers/human-queue-schemas.d.ts +91 -0
- package/build/system/mcp-servers/human-queue-schemas.js +42 -0
- package/build/system/mcp-servers/human-queue.d.ts +2 -6
- package/build/system/mcp-servers/human-queue.js +9 -51
- package/build/system/mcp-servers/knowledge.js +43 -9
- package/build/system/mcp-servers/workflow-compiler.js +54 -0
- package/build/system/workflows/mcp-triage/activities-proxy.d.ts +21 -0
- package/build/system/workflows/mcp-triage/activities-proxy.js +70 -0
- package/build/system/workflows/mcp-triage/index.js +17 -75
- package/build/system/workflows/mcp-workflow-planner/activities/persist.d.ts +1 -0
- package/build/system/workflows/mcp-workflow-planner/activities/persist.js +1 -0
- package/build/system/workflows/mcp-workflow-planner/index.js +2 -0
- package/build/tsconfig.tsbuildinfo +1 -1
- package/dashboard/dist/assets/{AdminDashboard-Cngijp4Q.js → AdminDashboard-Bprul9Eb.js} +2 -2
- package/dashboard/dist/assets/{AdminDashboard-Cngijp4Q.js.map → AdminDashboard-Bprul9Eb.js.map} +1 -1
- package/dashboard/dist/assets/AvailableEscalationsPage-H_z5mC10.js +2 -0
- package/dashboard/dist/assets/AvailableEscalationsPage-H_z5mC10.js.map +1 -0
- package/dashboard/dist/assets/{BotPicker-B8Uvw9Si.js → BotPicker-DcvILNUf.js} +2 -2
- package/dashboard/dist/assets/{BotPicker-B8Uvw9Si.js.map → BotPicker-DcvILNUf.js.map} +1 -1
- package/dashboard/dist/assets/{CollapsibleSection-DiFPuWOY.js → CollapsibleSection-BWPbzgEe.js} +2 -2
- package/dashboard/dist/assets/{CollapsibleSection-DiFPuWOY.js.map → CollapsibleSection-BWPbzgEe.js.map} +1 -1
- package/dashboard/dist/assets/{ConfirmDeleteModal-CpXG9uyu.js → ConfirmDeleteModal-Cy6KVLfC.js} +2 -2
- package/dashboard/dist/assets/{ConfirmDeleteModal-CpXG9uyu.js.map → ConfirmDeleteModal-Cy6KVLfC.js.map} +1 -1
- package/dashboard/dist/assets/{CopyableId-DKsTR9lK.js → CopyableId-CRED8hvk.js} +2 -2
- package/dashboard/dist/assets/{CopyableId-DKsTR9lK.js.map → CopyableId-CRED8hvk.js.map} +1 -1
- package/dashboard/dist/assets/{CredentialsPage-DlS7Kf40.js → CredentialsPage-BUdvxiE3.js} +2 -2
- package/dashboard/dist/assets/{CredentialsPage-DlS7Kf40.js.map → CredentialsPage-BUdvxiE3.js.map} +1 -1
- package/dashboard/dist/assets/{CustomDurationPicker-B-9eW3pm.js → CustomDurationPicker-eOk2EqQ5.js} +2 -2
- package/dashboard/dist/assets/{CustomDurationPicker-B-9eW3pm.js.map → CustomDurationPicker-eOk2EqQ5.js.map} +1 -1
- package/dashboard/dist/assets/{DataTable-DkOokbtL.js → DataTable-bd2PTBJd.js} +2 -2
- package/dashboard/dist/assets/{DataTable-DkOokbtL.js.map → DataTable-bd2PTBJd.js.map} +1 -1
- package/dashboard/dist/assets/{ElapsedCell-DVtHqM-5.js → ElapsedCell-BGo8vyus.js} +2 -2
- package/dashboard/dist/assets/{ElapsedCell-DVtHqM-5.js.map → ElapsedCell-BGo8vyus.js.map} +1 -1
- package/dashboard/dist/assets/{EmptyState-C7KIMIbE.js → EmptyState-BygtU-Rh.js} +2 -2
- package/dashboard/dist/assets/{EmptyState-C7KIMIbE.js.map → EmptyState-BygtU-Rh.js.map} +1 -1
- package/dashboard/dist/assets/{EscalationsOverview-BMKBlkPx.js → EscalationsOverview-DUEcN5MP.js} +2 -2
- package/dashboard/dist/assets/{EscalationsOverview-BMKBlkPx.js.map → EscalationsOverview-DUEcN5MP.js.map} +1 -1
- package/dashboard/dist/assets/{EventTable-BYZ5OVdQ.js → EventTable-CmFhswLW.js} +2 -2
- package/dashboard/dist/assets/{EventTable-BYZ5OVdQ.js.map → EventTable-CmFhswLW.js.map} +1 -1
- package/dashboard/dist/assets/{FilterBar-C5r3n6YO.js → FilterBar-BQNzsd3A.js} +2 -2
- package/dashboard/dist/assets/{FilterBar-C5r3n6YO.js.map → FilterBar-BQNzsd3A.js.map} +1 -1
- package/dashboard/dist/assets/{ListToolbar-BGUajIsW.js → ListToolbar-OWOn-HiC.js} +2 -2
- package/dashboard/dist/assets/{ListToolbar-BGUajIsW.js.map → ListToolbar-OWOn-HiC.js.map} +1 -1
- package/dashboard/dist/assets/{McpOverview-B_kJYHea.js → McpOverview-OkEzvClD.js} +2 -2
- package/dashboard/dist/assets/{McpOverview-B_kJYHea.js.map → McpOverview-OkEzvClD.js.map} +1 -1
- package/dashboard/dist/assets/McpQueryDetailPage-C6Ih5sC_.js +5 -0
- package/dashboard/dist/assets/McpQueryDetailPage-C6Ih5sC_.js.map +1 -0
- package/dashboard/dist/assets/{McpQueryPage-BgAq_bQg.js → McpQueryPage-BAuOf5TL.js} +2 -2
- package/dashboard/dist/assets/{McpQueryPage-BgAq_bQg.js.map → McpQueryPage-BAuOf5TL.js.map} +1 -1
- package/dashboard/dist/assets/{McpRunDetailPage-B8c0OszR.js → McpRunDetailPage-DMeiG4i_.js} +2 -2
- package/dashboard/dist/assets/{McpRunDetailPage-B8c0OszR.js.map → McpRunDetailPage-DMeiG4i_.js.map} +1 -1
- package/dashboard/dist/assets/{McpRunsPage-BY8C6k78.js → McpRunsPage-CG3cNJh8.js} +2 -2
- package/dashboard/dist/assets/{McpRunsPage-BY8C6k78.js.map → McpRunsPage-CG3cNJh8.js.map} +1 -1
- package/dashboard/dist/assets/{Modal-E1yRnCeW.js → Modal-Dir9Rlnx.js} +2 -2
- package/dashboard/dist/assets/{Modal-E1yRnCeW.js.map → Modal-Dir9Rlnx.js.map} +1 -1
- package/dashboard/dist/assets/{OperatorDashboard-C8MSTzey.js → OperatorDashboard-OqWC6Azy.js} +2 -2
- package/dashboard/dist/assets/{OperatorDashboard-C8MSTzey.js.map → OperatorDashboard-OqWC6Azy.js.map} +1 -1
- package/dashboard/dist/assets/{PageHeader-Cm5HBQF_.js → PageHeader-FJIemmrC.js} +2 -2
- package/dashboard/dist/assets/{PageHeader-Cm5HBQF_.js.map → PageHeader-FJIemmrC.js.map} +1 -1
- package/dashboard/dist/assets/{PageHeaderWithStats-CNmWJFSN.js → PageHeaderWithStats-Br5y9qNO.js} +2 -2
- package/dashboard/dist/assets/{PageHeaderWithStats-CNmWJFSN.js.map → PageHeaderWithStats-Br5y9qNO.js.map} +1 -1
- package/dashboard/dist/assets/{PriorityBadge-HSI4RVhs.js → PriorityBadge-C7D5d_HY.js} +2 -2
- package/dashboard/dist/assets/{PriorityBadge-HSI4RVhs.js.map → PriorityBadge-C7D5d_HY.js.map} +1 -1
- package/dashboard/dist/assets/{ProcessDetailPage-Dln8622H.js → ProcessDetailPage-DZIP6grw.js} +2 -2
- package/dashboard/dist/assets/{ProcessDetailPage-Dln8622H.js.map → ProcessDetailPage-DZIP6grw.js.map} +1 -1
- package/dashboard/dist/assets/{ProcessesListPage-bIsd9N_h.js → ProcessesListPage-BQoPYkeB.js} +2 -2
- package/dashboard/dist/assets/{ProcessesListPage-bIsd9N_h.js.map → ProcessesListPage-BQoPYkeB.js.map} +1 -1
- package/dashboard/dist/assets/{RolePill-BVUp2bF0.js → RolePill-D6nMxMvp.js} +2 -2
- package/dashboard/dist/assets/{RolePill-BVUp2bF0.js.map → RolePill-D6nMxMvp.js.map} +1 -1
- package/dashboard/dist/assets/RolesPage-CwLnJFhy.js +2 -0
- package/dashboard/dist/assets/{RolesPage-kH-Njt25.js.map → RolesPage-CwLnJFhy.js.map} +1 -1
- package/dashboard/dist/assets/{RowActions-DbUJPfaW.js → RowActions-JqgAB0p3.js} +2 -2
- package/dashboard/dist/assets/{RowActions-DbUJPfaW.js.map → RowActions-JqgAB0p3.js.map} +1 -1
- package/dashboard/dist/assets/RunAsSelector-KAlKtitB.js +2 -0
- package/dashboard/dist/assets/RunAsSelector-KAlKtitB.js.map +1 -0
- package/dashboard/dist/assets/{StatCard-Bs3JbyAz.js → StatCard-B-WLhOaH.js} +2 -2
- package/dashboard/dist/assets/{StatCard-Bs3JbyAz.js.map → StatCard-B-WLhOaH.js.map} +1 -1
- package/dashboard/dist/assets/{StatusBadge-CakDdsCw.js → StatusBadge-DVCf2ncM.js} +2 -2
- package/dashboard/dist/assets/{StatusBadge-CakDdsCw.js.map → StatusBadge-DVCf2ncM.js.map} +1 -1
- package/dashboard/dist/assets/{StepIndicator-Cd_SG_yA.js → StepIndicator-D9Xvdf18.js} +2 -2
- package/dashboard/dist/assets/{StepIndicator-Cd_SG_yA.js.map → StepIndicator-D9Xvdf18.js.map} +1 -1
- package/dashboard/dist/assets/{StickyPagination-Bz0C18nC.js → StickyPagination-CJHMzYJj.js} +2 -2
- package/dashboard/dist/assets/{StickyPagination-Bz0C18nC.js.map → StickyPagination-CJHMzYJj.js.map} +1 -1
- package/dashboard/dist/assets/SwimlaneTimeline-YiXPDyEL.js +2 -0
- package/dashboard/dist/assets/SwimlaneTimeline-YiXPDyEL.js.map +1 -0
- package/dashboard/dist/assets/{TagInput-ClFhXG-U.js → TagInput-DcPnUnSJ.js} +2 -2
- package/dashboard/dist/assets/{TagInput-ClFhXG-U.js.map → TagInput-DcPnUnSJ.js.map} +1 -1
- package/dashboard/dist/assets/{TaskDetailPage-SuMBdARt.js → TaskDetailPage-DftmYWD7.js} +2 -2
- package/dashboard/dist/assets/{TaskDetailPage-SuMBdARt.js.map → TaskDetailPage-DftmYWD7.js.map} +1 -1
- package/dashboard/dist/assets/{TaskQueuePill-lJR1JW_W.js → TaskQueuePill-BzduBqwy.js} +2 -2
- package/dashboard/dist/assets/{TaskQueuePill-lJR1JW_W.js.map → TaskQueuePill-BzduBqwy.js.map} +1 -1
- package/dashboard/dist/assets/{TasksListPage-Dkq1Vtbt.js → TasksListPage-DeewV4Gp.js} +2 -2
- package/dashboard/dist/assets/{TasksListPage-Dkq1Vtbt.js.map → TasksListPage-DeewV4Gp.js.map} +1 -1
- package/dashboard/dist/assets/{TimeAgo-DgfDZ1pl.js → TimeAgo-DJZq-e4R.js} +2 -2
- package/dashboard/dist/assets/{TimeAgo-DgfDZ1pl.js.map → TimeAgo-DJZq-e4R.js.map} +1 -1
- package/dashboard/dist/assets/{TimestampCell-MpHZ1hMD.js → TimestampCell-Dx5uwGfS.js} +2 -2
- package/dashboard/dist/assets/{TimestampCell-MpHZ1hMD.js.map → TimestampCell-Dx5uwGfS.js.map} +1 -1
- package/dashboard/dist/assets/{UserName-DqsosA4B.js → UserName-CnGk7MgL.js} +2 -2
- package/dashboard/dist/assets/{UserName-DqsosA4B.js.map → UserName-CnGk7MgL.js.map} +1 -1
- package/dashboard/dist/assets/{WorkflowExecutionPage-CVlg38C3.js → WorkflowExecutionPage-CPQ0fIwf.js} +2 -2
- package/dashboard/dist/assets/{WorkflowExecutionPage-CVlg38C3.js.map → WorkflowExecutionPage-CPQ0fIwf.js.map} +1 -1
- package/dashboard/dist/assets/{WorkflowPill-CRpZhjGR.js → WorkflowPill-BrD5d1AG.js} +2 -2
- package/dashboard/dist/assets/{WorkflowPill-CRpZhjGR.js.map → WorkflowPill-BrD5d1AG.js.map} +1 -1
- package/dashboard/dist/assets/{WorkflowsDashboard-Ugzbs8mV.js → WorkflowsDashboard-BzjhABZP.js} +2 -2
- package/dashboard/dist/assets/{WorkflowsDashboard-Ugzbs8mV.js.map → WorkflowsDashboard-BzjhABZP.js.map} +1 -1
- package/dashboard/dist/assets/{WorkflowsOverview-CIp_lTNl.js → WorkflowsOverview-lBp2E6rN.js} +2 -2
- package/dashboard/dist/assets/{WorkflowsOverview-CIp_lTNl.js.map → WorkflowsOverview-lBp2E6rN.js.map} +1 -1
- package/dashboard/dist/assets/YamlWorkflowsPage-C_MkAp2i.js +2 -0
- package/dashboard/dist/assets/YamlWorkflowsPage-C_MkAp2i.js.map +1 -0
- package/dashboard/dist/assets/{bots-DPfUpVqI.js → bots-fc_O_YIq.js} +2 -2
- package/dashboard/dist/assets/{bots-DPfUpVqI.js.map → bots-fc_O_YIq.js.map} +1 -1
- package/dashboard/dist/assets/{escalation-RrCDbMC3.js → escalation-BYhLYHBz.js} +2 -2
- package/dashboard/dist/assets/{escalation-RrCDbMC3.js.map → escalation-BYhLYHBz.js.map} +1 -1
- package/dashboard/dist/assets/{escalation-columns-CDGa9wsD.js → escalation-columns-DjJyuC1g.js} +2 -2
- package/dashboard/dist/assets/{escalation-columns-CDGa9wsD.js.map → escalation-columns-DjJyuC1g.js.map} +1 -1
- package/dashboard/dist/assets/{helpers-ZSKqdkdS.js → helpers-CQG3Rh2y.js} +2 -2
- package/dashboard/dist/assets/{helpers-ZSKqdkdS.js.map → helpers-CQG3Rh2y.js.map} +1 -1
- package/dashboard/dist/assets/{index-DX6zxr6t.js → index-2nBhR7Dg.js} +2 -2
- package/dashboard/dist/assets/{index-DX6zxr6t.js.map → index-2nBhR7Dg.js.map} +1 -1
- package/dashboard/dist/assets/index-4IUoh_hd.js +2 -0
- package/dashboard/dist/assets/{index-K40Qw1tk.js.map → index-4IUoh_hd.js.map} +1 -1
- package/dashboard/dist/assets/index-B2CqPzLK.js +2 -0
- package/dashboard/dist/assets/index-B2CqPzLK.js.map +1 -0
- package/dashboard/dist/assets/index-B78xalb4.js +2 -0
- package/dashboard/dist/assets/index-B78xalb4.js.map +1 -0
- package/dashboard/dist/assets/index-BI8r69O_.js +2 -0
- package/dashboard/dist/assets/{index-C90ZPzXk.js.map → index-BI8r69O_.js.map} +1 -1
- package/dashboard/dist/assets/index-C5TUqJu0.css +1 -0
- package/dashboard/dist/assets/{index-BmVCyB6C.js → index-CUqCBBZG.js} +2 -2
- package/dashboard/dist/assets/{index-BmVCyB6C.js.map → index-CUqCBBZG.js.map} +1 -1
- package/dashboard/dist/assets/index-D51PaQZY.js +2 -0
- package/dashboard/dist/assets/index-D51PaQZY.js.map +1 -0
- package/dashboard/dist/assets/{index-BbI2dzhJ.js → index-DNtXXy1o.js} +2 -2
- package/dashboard/dist/assets/{index-BbI2dzhJ.js.map → index-DNtXXy1o.js.map} +1 -1
- package/dashboard/dist/assets/{index-DNytWfSZ.js → index-DR4qQvlW.js} +2 -2
- package/dashboard/dist/assets/{index-DNytWfSZ.js.map → index-DR4qQvlW.js.map} +1 -1
- package/dashboard/dist/assets/index-Dh0PCbR-.js +15 -0
- package/dashboard/dist/assets/index-Dh0PCbR-.js.map +1 -0
- package/dashboard/dist/assets/index-KYpLvJKB.js +5 -0
- package/dashboard/dist/assets/index-KYpLvJKB.js.map +1 -0
- package/dashboard/dist/assets/{index-Cmgrk7PQ.js → index-sNrqYt0Q.js} +73 -73
- package/dashboard/dist/assets/index-sNrqYt0Q.js.map +1 -0
- package/dashboard/dist/assets/{mcp-CNE44TSp.js → mcp-D2XfRh8v.js} +2 -2
- package/dashboard/dist/assets/{mcp-CNE44TSp.js.map → mcp-D2XfRh8v.js.map} +1 -1
- package/dashboard/dist/assets/{mcp-query-RQX0uN-5.js → mcp-query-CIx_mIC7.js} +2 -2
- package/dashboard/dist/assets/{mcp-query-RQX0uN-5.js.map → mcp-query-CIx_mIC7.js.map} +1 -1
- package/dashboard/dist/assets/{mcp-runs-0w40bdz-.js → mcp-runs-C9_J4LIH.js} +2 -2
- package/dashboard/dist/assets/{mcp-runs-0w40bdz-.js.map → mcp-runs-C9_J4LIH.js.map} +1 -1
- package/dashboard/dist/assets/{namespaces-BbmdXuPp.js → namespaces-BwMljx6f.js} +2 -2
- package/dashboard/dist/assets/{namespaces-BbmdXuPp.js.map → namespaces-BwMljx6f.js.map} +1 -1
- package/dashboard/dist/assets/{roles-DoHYlhWH.js → roles-Bd_sTV6I.js} +2 -2
- package/dashboard/dist/assets/{roles-DoHYlhWH.js.map → roles-Bd_sTV6I.js.map} +1 -1
- package/dashboard/dist/assets/{settings-BAiJiCHS.js → settings-BCb8eFyA.js} +2 -2
- package/dashboard/dist/assets/{settings-BAiJiCHS.js.map → settings-BCb8eFyA.js.map} +1 -1
- package/dashboard/dist/assets/{tasks-CvroqHtm.js → tasks-Bq54qGGq.js} +2 -2
- package/dashboard/dist/assets/{tasks-CvroqHtm.js.map → tasks-Bq54qGGq.js.map} +1 -1
- package/dashboard/dist/assets/useEventHooks-BTbGf536.js +2 -0
- package/dashboard/dist/assets/{useEventHooks-BHMbzR_y.js.map → useEventHooks-BTbGf536.js.map} +1 -1
- package/dashboard/dist/assets/useYamlActivityEvents-CsYP09W5.js +2 -0
- package/dashboard/dist/assets/{useYamlActivityEvents-D56KV14X.js.map → useYamlActivityEvents-CsYP09W5.js.map} +1 -1
- package/dashboard/dist/assets/{users-CxIMy_xw.js → users-BTBhafGc.js} +2 -2
- package/dashboard/dist/assets/{users-CxIMy_xw.js.map → users-BTBhafGc.js.map} +1 -1
- package/dashboard/dist/assets/{vendor-icons-AFGxSeQS.js → vendor-icons-CWl44VA6.js} +77 -77
- package/dashboard/dist/assets/vendor-icons-CWl44VA6.js.map +1 -0
- package/dashboard/dist/assets/{workflows-yR9yais7.js → workflows-BkzA4ahe.js} +2 -2
- package/dashboard/dist/assets/{workflows-yR9yais7.js.map → workflows-BkzA4ahe.js.map} +1 -1
- package/dashboard/dist/assets/{yaml-workflows-QVF2MZ0l.js → yaml-workflows-Cs0EYp0F.js} +2 -2
- package/dashboard/dist/assets/{yaml-workflows-QVF2MZ0l.js.map → yaml-workflows-Cs0EYp0F.js.map} +1 -1
- package/dashboard/dist/index.html +3 -3
- package/docs/api/http/file-browser.md +101 -0
- package/docs/api/http/knowledge.md +203 -0
- package/docs/api/http/settings.md +6 -4
- package/docs/api/sdk/files.md +68 -0
- package/docs/api/sdk/knowledge.md +126 -0
- package/docs/api/sdk/settings.md +3 -2
- package/docs/cli.md +171 -0
- package/docs/compilation.md +16 -0
- package/docs/compiler.md +311 -0
- package/docs/events.md +19 -0
- package/docs/workflows.md +19 -0
- package/package.json +13 -2
- package/build/api/escalations.d.ts +0 -271
- package/build/api/escalations.js +0 -932
- package/build/api/workflows.d.ts +0 -158
- package/build/api/workflows.js +0 -414
- package/dashboard/dist/assets/AvailableEscalationsPage-CpBfGV1h.js +0 -2
- package/dashboard/dist/assets/AvailableEscalationsPage-CpBfGV1h.js.map +0 -1
- package/dashboard/dist/assets/McpQueryDetailPage-Czsmovqw.js +0 -5
- package/dashboard/dist/assets/McpQueryDetailPage-Czsmovqw.js.map +0 -1
- package/dashboard/dist/assets/RolesPage-kH-Njt25.js +0 -2
- package/dashboard/dist/assets/SwimlaneTimeline-Cfe-xQRX.js +0 -2
- package/dashboard/dist/assets/SwimlaneTimeline-Cfe-xQRX.js.map +0 -1
- package/dashboard/dist/assets/YamlWorkflowsPage-BICF0fRO.js +0 -2
- package/dashboard/dist/assets/YamlWorkflowsPage-BICF0fRO.js.map +0 -1
- package/dashboard/dist/assets/helpers-rMEcLwKs.js +0 -2
- package/dashboard/dist/assets/helpers-rMEcLwKs.js.map +0 -1
- package/dashboard/dist/assets/index-ABcJHHlN.js +0 -5
- package/dashboard/dist/assets/index-ABcJHHlN.js.map +0 -1
- package/dashboard/dist/assets/index-B91h_jZ0.js +0 -15
- package/dashboard/dist/assets/index-B91h_jZ0.js.map +0 -1
- package/dashboard/dist/assets/index-C1E5GTs9.js +0 -2
- package/dashboard/dist/assets/index-C1E5GTs9.js.map +0 -1
- package/dashboard/dist/assets/index-C90ZPzXk.js +0 -2
- package/dashboard/dist/assets/index-Cmgrk7PQ.js.map +0 -1
- package/dashboard/dist/assets/index-DeX-ezqf.css +0 -1
- package/dashboard/dist/assets/index-K40Qw1tk.js +0 -2
- package/dashboard/dist/assets/index-lCyNr5Xk.js +0 -2
- package/dashboard/dist/assets/index-lCyNr5Xk.js.map +0 -1
- package/dashboard/dist/assets/useEventHooks-BHMbzR_y.js +0 -2
- package/dashboard/dist/assets/useYamlActivityEvents-D56KV14X.js +0 -2
- package/dashboard/dist/assets/vendor-icons-AFGxSeQS.js.map +0 -1
|
@@ -0,0 +1,296 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.getClients = getClients;
|
|
37
|
+
exports.getBuiltinFactories = getBuiltinFactories;
|
|
38
|
+
exports.getBuiltinServers = getBuiltinServers;
|
|
39
|
+
exports.registerBuiltinServer = registerBuiltinServer;
|
|
40
|
+
exports.connectToServer = connectToServer;
|
|
41
|
+
exports.disconnectFromServer = disconnectFromServer;
|
|
42
|
+
exports.resolveClient = resolveClient;
|
|
43
|
+
exports.connectAutoServers = connectAutoServers;
|
|
44
|
+
exports.disconnectAll = disconnectAll;
|
|
45
|
+
exports.isConnected = isConnected;
|
|
46
|
+
exports.clear = clear;
|
|
47
|
+
const index_js_1 = require("@modelcontextprotocol/sdk/client/index.js");
|
|
48
|
+
const stdio_js_1 = require("@modelcontextprotocol/sdk/client/stdio.js");
|
|
49
|
+
const sse_js_1 = require("@modelcontextprotocol/sdk/client/sse.js");
|
|
50
|
+
const streamableHttp_js_1 = require("@modelcontextprotocol/sdk/client/streamableHttp.js");
|
|
51
|
+
const inMemory_js_1 = require("@modelcontextprotocol/sdk/inMemory.js");
|
|
52
|
+
const logger_1 = require("../../../lib/logger");
|
|
53
|
+
const mcpDbService = __importStar(require("../db"));
|
|
54
|
+
/** In-memory map of server ID/name to active MCP client */
|
|
55
|
+
const clients = new Map();
|
|
56
|
+
/**
|
|
57
|
+
* Built-in server factories -- keyed by server name.
|
|
58
|
+
* These are in-process MCP servers that connect via InMemoryTransport
|
|
59
|
+
* rather than external stdio/SSE connections.
|
|
60
|
+
*/
|
|
61
|
+
const builtinFactories = new Map();
|
|
62
|
+
/**
|
|
63
|
+
* Cached built-in McpServer instances -- keyed by canonical server name.
|
|
64
|
+
* Used by dispatchBuiltinTool() to call tool handlers directly without
|
|
65
|
+
* going through MCP Client/Transport. One instance per server.
|
|
66
|
+
*/
|
|
67
|
+
const builtinServers = new Map();
|
|
68
|
+
/** Read-only access to the clients map for sibling modules. */
|
|
69
|
+
function getClients() {
|
|
70
|
+
return clients;
|
|
71
|
+
}
|
|
72
|
+
/** Read-only access to the builtin factories map for sibling modules. */
|
|
73
|
+
function getBuiltinFactories() {
|
|
74
|
+
return builtinFactories;
|
|
75
|
+
}
|
|
76
|
+
/** Read-only access to the builtin servers map for sibling modules. */
|
|
77
|
+
function getBuiltinServers() {
|
|
78
|
+
return builtinServers;
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* Register a built-in server factory so it can be auto-connected
|
|
82
|
+
* when callServerTool is invoked with its name.
|
|
83
|
+
*/
|
|
84
|
+
function registerBuiltinServer(name, factory) {
|
|
85
|
+
builtinFactories.set(name, factory);
|
|
86
|
+
}
|
|
87
|
+
/**
|
|
88
|
+
* Connect to a registered MCP server.
|
|
89
|
+
* Creates the appropriate transport based on transport_type,
|
|
90
|
+
* connects, and caches tool manifest in DB.
|
|
91
|
+
*/
|
|
92
|
+
async function connectToServer(server) {
|
|
93
|
+
if (clients.has(server.id)) {
|
|
94
|
+
return clients.get(server.id);
|
|
95
|
+
}
|
|
96
|
+
// Built-in servers use InMemoryTransport via their registered factory
|
|
97
|
+
if (server.transport_config?.builtin) {
|
|
98
|
+
// Find matching factory by server name
|
|
99
|
+
for (const [name, factory] of builtinFactories) {
|
|
100
|
+
if (server.name === name || name.includes(server.name) || server.name.includes(name)) {
|
|
101
|
+
// Reuse existing client if factory was already connected
|
|
102
|
+
if (clients.has(name)) {
|
|
103
|
+
clients.set(server.id, clients.get(name));
|
|
104
|
+
await mcpDbService.updateMcpServerStatus(server.id, 'connected');
|
|
105
|
+
return clients.get(name);
|
|
106
|
+
}
|
|
107
|
+
const srv = await factory();
|
|
108
|
+
const [clientTransport, serverTransport] = inMemory_js_1.InMemoryTransport.createLinkedPair();
|
|
109
|
+
await srv.connect(serverTransport);
|
|
110
|
+
const client = new index_js_1.Client({ name: `builtin-${name}`, version: '1.0.0' });
|
|
111
|
+
await client.connect(clientTransport);
|
|
112
|
+
clients.set(name, client);
|
|
113
|
+
clients.set(server.id, client);
|
|
114
|
+
// Cache the tool manifest
|
|
115
|
+
const { tools } = await client.listTools();
|
|
116
|
+
const manifest = tools.map((t) => ({
|
|
117
|
+
name: t.name,
|
|
118
|
+
description: t.description || '',
|
|
119
|
+
inputSchema: t.inputSchema || {},
|
|
120
|
+
}));
|
|
121
|
+
await mcpDbService.updateMcpServerStatus(server.id, 'connected', manifest);
|
|
122
|
+
logger_1.loggerRegistry.info(`[lt-mcp:client] connected builtin server: ${name} (${manifest.length} tools)`);
|
|
123
|
+
return client;
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
throw new Error(`No builtin factory registered for server: ${server.name}`);
|
|
127
|
+
}
|
|
128
|
+
const client = new index_js_1.Client({ name: 'long-tail', version: '1.0.0' });
|
|
129
|
+
let transport;
|
|
130
|
+
const ttype = server.transport_type;
|
|
131
|
+
if (ttype === 'stdio') {
|
|
132
|
+
transport = new stdio_js_1.StdioClientTransport({
|
|
133
|
+
command: server.transport_config.command,
|
|
134
|
+
args: server.transport_config.args || [],
|
|
135
|
+
env: server.transport_config.env,
|
|
136
|
+
});
|
|
137
|
+
}
|
|
138
|
+
else if (ttype === 'streamable-http') {
|
|
139
|
+
transport = new streamableHttp_js_1.StreamableHTTPClientTransport(new URL(server.transport_config.url));
|
|
140
|
+
}
|
|
141
|
+
else {
|
|
142
|
+
transport = new sse_js_1.SSEClientTransport(new URL(server.transport_config.url));
|
|
143
|
+
}
|
|
144
|
+
await client.connect(transport);
|
|
145
|
+
clients.set(server.id, client);
|
|
146
|
+
// Cache the tool manifest
|
|
147
|
+
const { tools } = await client.listTools();
|
|
148
|
+
const manifest = tools.map((t) => ({
|
|
149
|
+
name: t.name,
|
|
150
|
+
description: t.description || '',
|
|
151
|
+
inputSchema: t.inputSchema || {},
|
|
152
|
+
}));
|
|
153
|
+
await mcpDbService.updateMcpServerStatus(server.id, 'connected', manifest);
|
|
154
|
+
logger_1.loggerRegistry.info(`[lt-mcp:client] connected to ${server.name} (${manifest.length} tools)`);
|
|
155
|
+
return client;
|
|
156
|
+
}
|
|
157
|
+
/**
|
|
158
|
+
* Disconnect from a specific server.
|
|
159
|
+
*/
|
|
160
|
+
async function disconnectFromServer(serverId) {
|
|
161
|
+
const client = clients.get(serverId);
|
|
162
|
+
if (client) {
|
|
163
|
+
await client.close();
|
|
164
|
+
clients.delete(serverId);
|
|
165
|
+
await mcpDbService.updateMcpServerStatus(serverId, 'disconnected');
|
|
166
|
+
logger_1.loggerRegistry.info(`[lt-mcp:client] disconnected from ${serverId}`);
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
/**
|
|
170
|
+
* Resolve a server by ID or name, auto-connecting built-in servers if needed.
|
|
171
|
+
* Returns the client or null if not found.
|
|
172
|
+
*
|
|
173
|
+
* Built-in servers are connected once under their canonical factory name.
|
|
174
|
+
* Alias lookups (e.g. 'translation' matching 'long-tail-translation') reuse
|
|
175
|
+
* the same client instance to avoid double-connecting the singleton server.
|
|
176
|
+
*/
|
|
177
|
+
async function resolveClient(serverId) {
|
|
178
|
+
// 1. Direct lookup (by UUID or name)
|
|
179
|
+
if (clients.has(serverId))
|
|
180
|
+
return clients.get(serverId);
|
|
181
|
+
// 2. Check built-in server factories -- exact match first, then fuzzy
|
|
182
|
+
// Normalize strips non-alphanumeric chars so hyphens and underscores
|
|
183
|
+
// match (e.g., "long_tail_vision" matches "long-tail-vision").
|
|
184
|
+
const norm = (s) => s.replace(/[^a-zA-Z0-9]/g, '').toLowerCase();
|
|
185
|
+
let matchedName = null;
|
|
186
|
+
if (builtinFactories.has(serverId)) {
|
|
187
|
+
matchedName = serverId;
|
|
188
|
+
}
|
|
189
|
+
else {
|
|
190
|
+
const normId = norm(serverId);
|
|
191
|
+
for (const [name] of builtinFactories) {
|
|
192
|
+
const normName = norm(name);
|
|
193
|
+
if (normName.includes(normId) || normId.includes(normName)) {
|
|
194
|
+
matchedName = name;
|
|
195
|
+
break;
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
if (matchedName) {
|
|
200
|
+
const factory = builtinFactories.get(matchedName);
|
|
201
|
+
// Check if we already connected this factory under its canonical name
|
|
202
|
+
if (clients.has(matchedName)) {
|
|
203
|
+
// Alias the serverId to the existing client so future lookups are instant
|
|
204
|
+
clients.set(serverId, clients.get(matchedName));
|
|
205
|
+
return clients.get(matchedName);
|
|
206
|
+
}
|
|
207
|
+
const server = await factory();
|
|
208
|
+
const [clientTransport, serverTransport] = inMemory_js_1.InMemoryTransport.createLinkedPair();
|
|
209
|
+
await server.connect(serverTransport);
|
|
210
|
+
const client = new index_js_1.Client({ name: `builtin-${matchedName}`, version: '1.0.0' });
|
|
211
|
+
await client.connect(clientTransport);
|
|
212
|
+
// Cache under both the canonical name and the requested serverId
|
|
213
|
+
clients.set(matchedName, client);
|
|
214
|
+
if (serverId !== matchedName)
|
|
215
|
+
clients.set(serverId, client);
|
|
216
|
+
logger_1.loggerRegistry.info(`[lt-mcp:client] auto-connected built-in server: ${matchedName} (as '${serverId}')`);
|
|
217
|
+
return client;
|
|
218
|
+
}
|
|
219
|
+
// 3. Look up in DB by ID or name, then try to match a built-in factory
|
|
220
|
+
try {
|
|
221
|
+
const dbServer = (await mcpDbService.getMcpServer(serverId)) ||
|
|
222
|
+
(await mcpDbService.getMcpServerByName(serverId));
|
|
223
|
+
if (dbServer) {
|
|
224
|
+
// Already connected under its DB id?
|
|
225
|
+
if (clients.has(dbServer.id)) {
|
|
226
|
+
clients.set(serverId, clients.get(dbServer.id));
|
|
227
|
+
return clients.get(dbServer.id);
|
|
228
|
+
}
|
|
229
|
+
// Match DB server name to a built-in factory
|
|
230
|
+
for (const [name, factory] of builtinFactories) {
|
|
231
|
+
if (dbServer.name === name || name.includes(dbServer.name) || dbServer.name.includes(name)) {
|
|
232
|
+
if (clients.has(name)) {
|
|
233
|
+
clients.set(serverId, clients.get(name));
|
|
234
|
+
return clients.get(name);
|
|
235
|
+
}
|
|
236
|
+
const srv = await factory();
|
|
237
|
+
const [clientTransport, serverTransport] = inMemory_js_1.InMemoryTransport.createLinkedPair();
|
|
238
|
+
await srv.connect(serverTransport);
|
|
239
|
+
const client = new index_js_1.Client({ name: `builtin-${name}`, version: '1.0.0' });
|
|
240
|
+
await client.connect(clientTransport);
|
|
241
|
+
clients.set(name, client);
|
|
242
|
+
clients.set(dbServer.id, client);
|
|
243
|
+
if (serverId !== name && serverId !== dbServer.id)
|
|
244
|
+
clients.set(serverId, client);
|
|
245
|
+
logger_1.loggerRegistry.info(`[lt-mcp:client] auto-connected built-in server: ${name} (via DB id '${serverId}')`);
|
|
246
|
+
return client;
|
|
247
|
+
}
|
|
248
|
+
}
|
|
249
|
+
}
|
|
250
|
+
}
|
|
251
|
+
catch {
|
|
252
|
+
// DB lookup failed -- not critical
|
|
253
|
+
}
|
|
254
|
+
return null;
|
|
255
|
+
}
|
|
256
|
+
/**
|
|
257
|
+
* Connect to all auto-connect servers.
|
|
258
|
+
*/
|
|
259
|
+
async function connectAutoServers() {
|
|
260
|
+
const servers = await mcpDbService.getAutoConnectServers();
|
|
261
|
+
for (const server of servers) {
|
|
262
|
+
// Skip built-in servers -- they auto-connect lazily via resolveClient()
|
|
263
|
+
// on first tool call using InMemoryTransport, not stdio/SSE.
|
|
264
|
+
if (server.transport_config?.builtin) {
|
|
265
|
+
continue;
|
|
266
|
+
}
|
|
267
|
+
try {
|
|
268
|
+
await connectToServer(server);
|
|
269
|
+
}
|
|
270
|
+
catch (err) {
|
|
271
|
+
logger_1.loggerRegistry.error(`[lt-mcp:client] failed to connect to ${server.name}: ${err.message}`);
|
|
272
|
+
await mcpDbService.updateMcpServerStatus(server.id, 'error');
|
|
273
|
+
}
|
|
274
|
+
}
|
|
275
|
+
}
|
|
276
|
+
/**
|
|
277
|
+
* Disconnect all clients.
|
|
278
|
+
*/
|
|
279
|
+
async function disconnectAll() {
|
|
280
|
+
for (const [serverId] of clients) {
|
|
281
|
+
await disconnectFromServer(serverId);
|
|
282
|
+
}
|
|
283
|
+
}
|
|
284
|
+
/**
|
|
285
|
+
* Check if a server is connected.
|
|
286
|
+
*/
|
|
287
|
+
function isConnected(serverId) {
|
|
288
|
+
return clients.has(serverId);
|
|
289
|
+
}
|
|
290
|
+
/**
|
|
291
|
+
* Clear all state. Used in tests.
|
|
292
|
+
*/
|
|
293
|
+
function clear() {
|
|
294
|
+
clients.clear();
|
|
295
|
+
builtinServers.clear();
|
|
296
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { LTMcpToolManifest } from '../../../types';
|
|
2
|
+
/**
|
|
3
|
+
* Test connectivity to an MCP server without persisting.
|
|
4
|
+
* Creates a temporary client, connects, lists tools, then disconnects.
|
|
5
|
+
*/
|
|
6
|
+
export declare function testConnection(transportType: 'stdio' | 'sse' | 'streamable-http', transportConfig: Record<string, any>): Promise<{
|
|
7
|
+
success: boolean;
|
|
8
|
+
tools: LTMcpToolManifest[];
|
|
9
|
+
error?: string;
|
|
10
|
+
}>;
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.testConnection = testConnection;
|
|
4
|
+
const index_js_1 = require("@modelcontextprotocol/sdk/client/index.js");
|
|
5
|
+
const stdio_js_1 = require("@modelcontextprotocol/sdk/client/stdio.js");
|
|
6
|
+
const sse_js_1 = require("@modelcontextprotocol/sdk/client/sse.js");
|
|
7
|
+
const streamableHttp_js_1 = require("@modelcontextprotocol/sdk/client/streamableHttp.js");
|
|
8
|
+
/**
|
|
9
|
+
* Test connectivity to an MCP server without persisting.
|
|
10
|
+
* Creates a temporary client, connects, lists tools, then disconnects.
|
|
11
|
+
*/
|
|
12
|
+
async function testConnection(transportType, transportConfig) {
|
|
13
|
+
const client = new index_js_1.Client({ name: 'long-tail-test', version: '1.0.0' });
|
|
14
|
+
const timeout = setTimeout(() => { throw new Error('Connection timed out (10s)'); }, 10_000);
|
|
15
|
+
try {
|
|
16
|
+
let transport;
|
|
17
|
+
if (transportType === 'stdio') {
|
|
18
|
+
transport = new stdio_js_1.StdioClientTransport({
|
|
19
|
+
command: transportConfig.command,
|
|
20
|
+
args: transportConfig.args || [],
|
|
21
|
+
env: transportConfig.env,
|
|
22
|
+
});
|
|
23
|
+
}
|
|
24
|
+
else if (transportType === 'streamable-http') {
|
|
25
|
+
transport = new streamableHttp_js_1.StreamableHTTPClientTransport(new URL(transportConfig.url));
|
|
26
|
+
}
|
|
27
|
+
else {
|
|
28
|
+
transport = new sse_js_1.SSEClientTransport(new URL(transportConfig.url));
|
|
29
|
+
}
|
|
30
|
+
await client.connect(transport);
|
|
31
|
+
const { tools } = await client.listTools();
|
|
32
|
+
const manifest = tools.map((t) => ({
|
|
33
|
+
name: t.name,
|
|
34
|
+
description: t.description || '',
|
|
35
|
+
inputSchema: t.inputSchema || {},
|
|
36
|
+
}));
|
|
37
|
+
return { success: true, tools: manifest };
|
|
38
|
+
}
|
|
39
|
+
catch (err) {
|
|
40
|
+
return { success: false, tools: [], error: err.message };
|
|
41
|
+
}
|
|
42
|
+
finally {
|
|
43
|
+
clearTimeout(timeout);
|
|
44
|
+
try {
|
|
45
|
+
await client.close();
|
|
46
|
+
}
|
|
47
|
+
catch { /* ignore close errors */ }
|
|
48
|
+
}
|
|
49
|
+
}
|
|
@@ -1,68 +1,3 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
* Register a built-in server factory so it can be auto-connected
|
|
5
|
-
* when callServerTool is invoked with its name.
|
|
6
|
-
*/
|
|
7
|
-
export declare function registerBuiltinServer(name: string, factory: () => Promise<any>): void;
|
|
8
|
-
/**
|
|
9
|
-
* Dispatch a tool call directly to a built-in server's handler,
|
|
10
|
-
* bypassing MCP Client/Transport entirely. Returns null if the server
|
|
11
|
-
* or tool is not a built-in — caller should fall through to MCP transport.
|
|
12
|
-
*
|
|
13
|
-
* Each built-in server is lazily instantiated once and cached. Tool handlers
|
|
14
|
-
* are called via server._registeredTools[toolName].handler(args). This
|
|
15
|
-
* eliminates the InMemoryTransport bottleneck under concurrent load.
|
|
16
|
-
*/
|
|
17
|
-
export declare function dispatchBuiltinTool(serverId: string, toolName: string, args: Record<string, any>): Promise<{
|
|
18
|
-
dispatched: true;
|
|
19
|
-
result: any;
|
|
20
|
-
} | null>;
|
|
21
|
-
/**
|
|
22
|
-
* Connect to a registered MCP server.
|
|
23
|
-
* Creates the appropriate transport based on transport_type,
|
|
24
|
-
* connects, and caches tool manifest in DB.
|
|
25
|
-
*/
|
|
26
|
-
export declare function connectToServer(server: LTMcpServerRecord): Promise<Client>;
|
|
27
|
-
/**
|
|
28
|
-
* Disconnect from a specific server.
|
|
29
|
-
*/
|
|
30
|
-
export declare function disconnectFromServer(serverId: string): Promise<void>;
|
|
31
|
-
/**
|
|
32
|
-
* Resolve a server by ID or name, auto-connecting built-in servers if needed.
|
|
33
|
-
* Returns the client or null if not found.
|
|
34
|
-
*
|
|
35
|
-
* Built-in servers are connected once under their canonical factory name.
|
|
36
|
-
* Alias lookups (e.g. 'translation' matching 'long-tail-translation') reuse
|
|
37
|
-
* the same client instance to avoid double-connecting the singleton server.
|
|
38
|
-
*/
|
|
39
|
-
export declare function resolveClient(serverId: string): Promise<Client | null>;
|
|
40
|
-
/**
|
|
41
|
-
* Connect to all auto-connect servers.
|
|
42
|
-
*/
|
|
43
|
-
export declare function connectAutoServers(): Promise<void>;
|
|
44
|
-
/**
|
|
45
|
-
* Disconnect all clients.
|
|
46
|
-
*/
|
|
47
|
-
export declare function disconnectAll(): Promise<void>;
|
|
48
|
-
/**
|
|
49
|
-
* List tools from a connected server.
|
|
50
|
-
*/
|
|
51
|
-
export declare function listServerTools(serverId: string): Promise<LTMcpToolManifest[]>;
|
|
52
|
-
/**
|
|
53
|
-
* Check if a server is connected.
|
|
54
|
-
*/
|
|
55
|
-
export declare function isConnected(serverId: string): boolean;
|
|
56
|
-
/**
|
|
57
|
-
* Test connectivity to an MCP server without persisting.
|
|
58
|
-
* Creates a temporary client, connects, lists tools, then disconnects.
|
|
59
|
-
*/
|
|
60
|
-
export declare function testConnection(transportType: 'stdio' | 'sse' | 'streamable-http', transportConfig: Record<string, any>): Promise<{
|
|
61
|
-
success: boolean;
|
|
62
|
-
tools: LTMcpToolManifest[];
|
|
63
|
-
error?: string;
|
|
64
|
-
}>;
|
|
65
|
-
/**
|
|
66
|
-
* Clear all state. Used in tests.
|
|
67
|
-
*/
|
|
68
|
-
export declare function clear(): void;
|
|
1
|
+
export { registerBuiltinServer, connectToServer, disconnectFromServer, resolveClient, connectAutoServers, disconnectAll, isConnected, clear, } from './connection-lifecycle';
|
|
2
|
+
export { testConnection } from './connection-test';
|
|
3
|
+
export { dispatchBuiltinTool, listServerTools, } from './connection-dispatch';
|