@hotmeshio/long-tail 0.1.13 → 0.1.15
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 +16 -0
- package/build/api/files.js +61 -0
- 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/mcp-runs.d.ts +2 -0
- package/build/api/mcp-runs.js +2 -0
- package/build/api/settings.js +9 -1
- package/build/api/workflow-sets.d.ts +11 -0
- package/build/api/workflow-sets.js +62 -0
- 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 -137
- package/build/api/{yaml-workflows.js → yaml-workflows/crud.js} +86 -358
- 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/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/logger/index.d.ts +0 -9
- package/build/lib/logger/index.js +9 -4
- package/build/lib/storage/index.js +2 -2
- 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 +126 -0
- package/build/routes/files.js +25 -17
- 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/mcp-runs.js +2 -0
- package/build/routes/workflow-sets.js +9 -0
- package/build/routes/yaml-workflows/crud.js +9 -0
- package/build/routes/yaml-workflows/deployment.js +8 -0
- package/build/sdk/index.d.ts +17 -0
- package/build/sdk/index.js +19 -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/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/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/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 +14 -12
- package/build/services/yaml-workflow/db.js +32 -70
- 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/generator.js +4 -4
- 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/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/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/sql.d.ts +2 -1
- package/build/services/yaml-workflow/sql.js +10 -3
- 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/schema-exchange.d.ts +50 -0
- package/build/system/activities/schema-exchange.js +210 -0
- package/build/system/activities/sql.d.ts +4 -1
- package/build/system/activities/sql.js +37 -2
- package/build/system/index.js +1 -0
- 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 +69 -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/mcp-servers/workflow-compiler.js +54 -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-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-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 +2 -1
- package/build/system/workflows/mcp-workflow-planner/activities/persist.js +4 -3
- package/build/system/workflows/mcp-workflow-planner/index.js +41 -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-NLryl1_B.js} +2 -2
- package/dashboard/dist/assets/{AdminDashboard-DUrSBQOl.js.map → AdminDashboard-NLryl1_B.js.map} +1 -1
- package/dashboard/dist/assets/AvailableEscalationsPage-6vexlrk3.js +2 -0
- package/dashboard/dist/assets/AvailableEscalationsPage-6vexlrk3.js.map +1 -0
- package/dashboard/dist/assets/{BotPicker-Cg5iNEkm.js → BotPicker-DWhn0tr1.js} +2 -2
- package/dashboard/dist/assets/{BotPicker-Cg5iNEkm.js.map → BotPicker-DWhn0tr1.js.map} +1 -1
- package/dashboard/dist/assets/{CollapsibleSection-Kd9UIyeU.js → CollapsibleSection-CgYgQiOc.js} +2 -2
- package/dashboard/dist/assets/{CollapsibleSection-Kd9UIyeU.js.map → CollapsibleSection-CgYgQiOc.js.map} +1 -1
- package/dashboard/dist/assets/{ConfirmDeleteModal-DZMgmlof.js → ConfirmDeleteModal-DCKAPXD3.js} +2 -2
- package/dashboard/dist/assets/{ConfirmDeleteModal-DZMgmlof.js.map → ConfirmDeleteModal-DCKAPXD3.js.map} +1 -1
- package/dashboard/dist/assets/{CopyableId-cPFTRm8q.js → CopyableId-DXkaAOYk.js} +2 -2
- package/dashboard/dist/assets/{CopyableId-cPFTRm8q.js.map → CopyableId-DXkaAOYk.js.map} +1 -1
- package/dashboard/dist/assets/CredentialsPage-B361BOfU.js +2 -0
- package/dashboard/dist/assets/{CredentialsPage-DJablIbs.js.map → CredentialsPage-B361BOfU.js.map} +1 -1
- package/dashboard/dist/assets/{CustomDurationPicker-NgIP6YDW.js → CustomDurationPicker-D2G1ldiF.js} +2 -2
- package/dashboard/dist/assets/{CustomDurationPicker-NgIP6YDW.js.map → CustomDurationPicker-D2G1ldiF.js.map} +1 -1
- package/dashboard/dist/assets/{DataTable-CTRhTAfT.js → DataTable-DXSUbA26.js} +2 -2
- package/dashboard/dist/assets/{DataTable-CTRhTAfT.js.map → DataTable-DXSUbA26.js.map} +1 -1
- package/dashboard/dist/assets/{ElapsedCell-HcSJ_MMs.js → ElapsedCell-CQGqkXP_.js} +2 -2
- package/dashboard/dist/assets/{ElapsedCell-HcSJ_MMs.js.map → ElapsedCell-CQGqkXP_.js.map} +1 -1
- package/dashboard/dist/assets/{EmptyState-joNbd4gg.js → EmptyState-Dep92Wkg.js} +2 -2
- package/dashboard/dist/assets/{EmptyState-joNbd4gg.js.map → EmptyState-Dep92Wkg.js.map} +1 -1
- package/dashboard/dist/assets/{EscalationsOverview-DpXDnQux.js → EscalationsOverview-DVEFVjs7.js} +2 -2
- package/dashboard/dist/assets/{EscalationsOverview-DpXDnQux.js.map → EscalationsOverview-DVEFVjs7.js.map} +1 -1
- package/dashboard/dist/assets/{EventTable-CYem3v8n.js → EventTable-BMJAPkMi.js} +2 -2
- package/dashboard/dist/assets/{EventTable-CYem3v8n.js.map → EventTable-BMJAPkMi.js.map} +1 -1
- package/dashboard/dist/assets/{FilterBar-BiO8SOzc.js → FilterBar-DbVbCzH2.js} +2 -2
- package/dashboard/dist/assets/{FilterBar-BiO8SOzc.js.map → FilterBar-DbVbCzH2.js.map} +1 -1
- package/dashboard/dist/assets/{ListToolbar-6yRDh2e9.js → ListToolbar-0XNuXj0M.js} +2 -2
- package/dashboard/dist/assets/{ListToolbar-6yRDh2e9.js.map → ListToolbar-0XNuXj0M.js.map} +1 -1
- package/dashboard/dist/assets/{McpOverview-CUgSxkQe.js → McpOverview-CeYnCzBN.js} +2 -2
- package/dashboard/dist/assets/{McpOverview-CUgSxkQe.js.map → McpOverview-CeYnCzBN.js.map} +1 -1
- package/dashboard/dist/assets/McpQueryDetailPage-t3qW3QNa.js +5 -0
- package/dashboard/dist/assets/McpQueryDetailPage-t3qW3QNa.js.map +1 -0
- package/dashboard/dist/assets/McpQueryPage-CfUcdzaj.js +2 -0
- package/dashboard/dist/assets/{McpQueryPage-lV6kfDG5.js.map → McpQueryPage-CfUcdzaj.js.map} +1 -1
- package/dashboard/dist/assets/McpRunDetailPage-CZtodW_Z.js +2 -0
- package/dashboard/dist/assets/McpRunDetailPage-CZtodW_Z.js.map +1 -0
- package/dashboard/dist/assets/McpRunsPage-Dzgq7HGt.js +2 -0
- package/dashboard/dist/assets/McpRunsPage-Dzgq7HGt.js.map +1 -0
- package/dashboard/dist/assets/{Modal-BuTvD0pz.js → Modal-yyhUeKoA.js} +2 -2
- package/dashboard/dist/assets/{Modal-BuTvD0pz.js.map → Modal-yyhUeKoA.js.map} +1 -1
- package/dashboard/dist/assets/OperatorDashboard-Ceh7OQtZ.js +2 -0
- package/dashboard/dist/assets/{OperatorDashboard-C9SSV96T.js.map → OperatorDashboard-Ceh7OQtZ.js.map} +1 -1
- package/dashboard/dist/assets/{PageHeader-BcTVF9ul.js → PageHeader-CZ9a8cpr.js} +2 -2
- package/dashboard/dist/assets/{PageHeader-BcTVF9ul.js.map → PageHeader-CZ9a8cpr.js.map} +1 -1
- package/dashboard/dist/assets/{PageHeaderWithStats-BI7JG5x6.js → PageHeaderWithStats-BJuNs5NM.js} +2 -2
- package/dashboard/dist/assets/{PageHeaderWithStats-BI7JG5x6.js.map → PageHeaderWithStats-BJuNs5NM.js.map} +1 -1
- package/dashboard/dist/assets/{PriorityBadge-DqVaOU65.js → PriorityBadge-BrPikMFy.js} +2 -2
- package/dashboard/dist/assets/{PriorityBadge-DqVaOU65.js.map → PriorityBadge-BrPikMFy.js.map} +1 -1
- package/dashboard/dist/assets/{ProcessDetailPage-hFMhf9qa.js → ProcessDetailPage-2miaYd8G.js} +2 -2
- package/dashboard/dist/assets/{ProcessDetailPage-hFMhf9qa.js.map → ProcessDetailPage-2miaYd8G.js.map} +1 -1
- package/dashboard/dist/assets/{ProcessesListPage-ByVoBCQ3.js → ProcessesListPage-DqpRDqjk.js} +2 -2
- package/dashboard/dist/assets/{ProcessesListPage-ByVoBCQ3.js.map → ProcessesListPage-DqpRDqjk.js.map} +1 -1
- package/dashboard/dist/assets/{RolePill-D9ZIkYiu.js → RolePill-DxbJMfJu.js} +2 -2
- package/dashboard/dist/assets/{RolePill-D9ZIkYiu.js.map → RolePill-DxbJMfJu.js.map} +1 -1
- package/dashboard/dist/assets/{RolesPage-SMedMuqa.js → RolesPage-CYHRo21-.js} +2 -2
- package/dashboard/dist/assets/{RolesPage-SMedMuqa.js.map → RolesPage-CYHRo21-.js.map} +1 -1
- package/dashboard/dist/assets/{RowActions-yDhwwDbU.js → RowActions-DurFwIwe.js} +2 -2
- package/dashboard/dist/assets/{RowActions-yDhwwDbU.js.map → RowActions-DurFwIwe.js.map} +1 -1
- package/dashboard/dist/assets/RunAsSelector-CNKraP6u.js +2 -0
- package/dashboard/dist/assets/RunAsSelector-CNKraP6u.js.map +1 -0
- package/dashboard/dist/assets/{StatCard-BrBnQFxh.js → StatCard-CKplpK3w.js} +2 -2
- package/dashboard/dist/assets/{StatCard-BrBnQFxh.js.map → StatCard-CKplpK3w.js.map} +1 -1
- package/dashboard/dist/assets/{StatusBadge-xgb-lZku.js → StatusBadge-Dm0V1dNN.js} +2 -2
- package/dashboard/dist/assets/{StatusBadge-xgb-lZku.js.map → StatusBadge-Dm0V1dNN.js.map} +1 -1
- package/dashboard/dist/assets/{StepIndicator-B9ps2SvM.js → StepIndicator-Dicx0WTZ.js} +2 -2
- package/dashboard/dist/assets/{StepIndicator-B9ps2SvM.js.map → StepIndicator-Dicx0WTZ.js.map} +1 -1
- package/dashboard/dist/assets/{StickyPagination-DTIjBKN3.js → StickyPagination-B2jYvU3-.js} +2 -2
- package/dashboard/dist/assets/{StickyPagination-DTIjBKN3.js.map → StickyPagination-B2jYvU3-.js.map} +1 -1
- package/dashboard/dist/assets/SwimlaneTimeline-ClwumkT1.js +2 -0
- package/dashboard/dist/assets/SwimlaneTimeline-ClwumkT1.js.map +1 -0
- package/dashboard/dist/assets/{TagInput-CdNUuqk4.js → TagInput-CypDZ6Kl.js} +2 -2
- package/dashboard/dist/assets/{TagInput-CdNUuqk4.js.map → TagInput-CypDZ6Kl.js.map} +1 -1
- package/dashboard/dist/assets/{TaskDetailPage-C-nzaNea.js → TaskDetailPage-DooDNJGT.js} +2 -2
- package/dashboard/dist/assets/{TaskDetailPage-C-nzaNea.js.map → TaskDetailPage-DooDNJGT.js.map} +1 -1
- package/dashboard/dist/assets/{TaskQueuePill-Lvr2-NzS.js → TaskQueuePill-C1hZ-j31.js} +2 -2
- package/dashboard/dist/assets/{TaskQueuePill-Lvr2-NzS.js.map → TaskQueuePill-C1hZ-j31.js.map} +1 -1
- package/dashboard/dist/assets/{TasksListPage-DSUmD84y.js → TasksListPage-D7CdkAeg.js} +2 -2
- package/dashboard/dist/assets/{TasksListPage-DSUmD84y.js.map → TasksListPage-D7CdkAeg.js.map} +1 -1
- package/dashboard/dist/assets/{TimeAgo-BZdLdrIh.js → TimeAgo-B5LXB2aj.js} +2 -2
- package/dashboard/dist/assets/{TimeAgo-BZdLdrIh.js.map → TimeAgo-B5LXB2aj.js.map} +1 -1
- package/dashboard/dist/assets/{TimestampCell-QX_0i5FK.js → TimestampCell-Crb9b0Gw.js} +2 -2
- package/dashboard/dist/assets/{TimestampCell-QX_0i5FK.js.map → TimestampCell-Crb9b0Gw.js.map} +1 -1
- package/dashboard/dist/assets/{UserName-DyZMXcBm.js → UserName-OPg-nkRa.js} +2 -2
- package/dashboard/dist/assets/{UserName-DyZMXcBm.js.map → UserName-OPg-nkRa.js.map} +1 -1
- package/dashboard/dist/assets/{WorkflowExecutionPage-DjVxfZaF.js → WorkflowExecutionPage-CcLVrs9b.js} +2 -2
- package/dashboard/dist/assets/{WorkflowExecutionPage-DjVxfZaF.js.map → WorkflowExecutionPage-CcLVrs9b.js.map} +1 -1
- package/dashboard/dist/assets/WorkflowPill-CCV4MMj7.js +2 -0
- package/dashboard/dist/assets/WorkflowPill-CCV4MMj7.js.map +1 -0
- package/dashboard/dist/assets/{WorkflowsDashboard-DZjuiFZ0.js → WorkflowsDashboard-DB1SncBi.js} +2 -2
- package/dashboard/dist/assets/{WorkflowsDashboard-DZjuiFZ0.js.map → WorkflowsDashboard-DB1SncBi.js.map} +1 -1
- package/dashboard/dist/assets/{WorkflowsOverview-CLnLRpOu.js → WorkflowsOverview-DvShiYJV.js} +2 -2
- package/dashboard/dist/assets/{WorkflowsOverview-CLnLRpOu.js.map → WorkflowsOverview-DvShiYJV.js.map} +1 -1
- package/dashboard/dist/assets/YamlWorkflowsPage-DCBoMeGI.js +2 -0
- package/dashboard/dist/assets/YamlWorkflowsPage-DCBoMeGI.js.map +1 -0
- package/dashboard/dist/assets/{bots-DIM6lBoY.js → bots-Dqos20NE.js} +2 -2
- package/dashboard/dist/assets/{bots-DIM6lBoY.js.map → bots-Dqos20NE.js.map} +1 -1
- package/dashboard/dist/assets/{escalation-JOTuOqjq.js → escalation-A0CsbvNV.js} +2 -2
- package/dashboard/dist/assets/{escalation-JOTuOqjq.js.map → escalation-A0CsbvNV.js.map} +1 -1
- package/dashboard/dist/assets/escalation-columns-BpBJN6k4.js +2 -0
- package/dashboard/dist/assets/{escalation-columns-Cyg58nkg.js.map → escalation-columns-BpBJN6k4.js.map} +1 -1
- package/dashboard/dist/assets/{helpers-B1BDxBZd.js → helpers-CmznCuAx.js} +2 -2
- package/dashboard/dist/assets/{helpers-B1BDxBZd.js.map → helpers-CmznCuAx.js.map} +1 -1
- package/dashboard/dist/assets/index-BIeYV5QK.js +2 -0
- package/dashboard/dist/assets/index-BIeYV5QK.js.map +1 -0
- package/dashboard/dist/assets/index-BYwD3kHN.js +5 -0
- package/dashboard/dist/assets/index-BYwD3kHN.js.map +1 -0
- package/dashboard/dist/assets/index-C5TUqJu0.css +1 -0
- package/dashboard/dist/assets/index-C8-UaN4N.js +2 -0
- package/dashboard/dist/assets/{index-Cg5nfiYX.js.map → index-C8-UaN4N.js.map} +1 -1
- package/dashboard/dist/assets/index-CAj5LT9H.js +15 -0
- package/dashboard/dist/assets/index-CAj5LT9H.js.map +1 -0
- package/dashboard/dist/assets/index-CjxHCVxl.js +2 -0
- package/dashboard/dist/assets/{index-Cf60K3x9.js.map → index-CjxHCVxl.js.map} +1 -1
- package/dashboard/dist/assets/index-Cr0Rqsj7.js +2 -0
- package/dashboard/dist/assets/index-Cr0Rqsj7.js.map +1 -0
- package/dashboard/dist/assets/index-DZHNte4o.js +2 -0
- package/dashboard/dist/assets/{index-Di12t56M.js.map → index-DZHNte4o.js.map} +1 -1
- package/dashboard/dist/assets/{index-Ds0JoXS2.js → index-VnYkWW8r.js} +2 -2
- package/dashboard/dist/assets/{index-Ds0JoXS2.js.map → index-VnYkWW8r.js.map} +1 -1
- package/dashboard/dist/assets/{index-BcR6PfpY.js → index-XGOmZ117.js} +2 -2
- package/dashboard/dist/assets/{index-BcR6PfpY.js.map → index-XGOmZ117.js.map} +1 -1
- package/dashboard/dist/assets/index-ZjOUzWhc.js +2 -0
- package/dashboard/dist/assets/index-ZjOUzWhc.js.map +1 -0
- package/dashboard/dist/assets/{index-BYZX9tOb.js → index-puKKZ5l8.js} +77 -77
- package/dashboard/dist/assets/index-puKKZ5l8.js.map +1 -0
- package/dashboard/dist/assets/{index-BizfauqT.js → index-t5frSddy.js} +4 -4
- package/dashboard/dist/assets/{index-BizfauqT.js.map → index-t5frSddy.js.map} +1 -1
- package/dashboard/dist/assets/{mcp-B_xbczAt.js → mcp-DrWymhSu.js} +2 -2
- package/dashboard/dist/assets/{mcp-B_xbczAt.js.map → mcp-DrWymhSu.js.map} +1 -1
- package/dashboard/dist/assets/mcp-query-BhUxVEMS.js +2 -0
- package/dashboard/dist/assets/mcp-query-BhUxVEMS.js.map +1 -0
- package/dashboard/dist/assets/mcp-runs-DUfz4mLd.js +2 -0
- package/dashboard/dist/assets/mcp-runs-DUfz4mLd.js.map +1 -0
- package/dashboard/dist/assets/{namespaces-C3WtdO_9.js → namespaces-Cm6AY5sh.js} +2 -2
- package/dashboard/dist/assets/{namespaces-C3WtdO_9.js.map → namespaces-Cm6AY5sh.js.map} +1 -1
- package/dashboard/dist/assets/{roles-BDAsPpZG.js → roles-2v1Kc7BJ.js} +2 -2
- package/dashboard/dist/assets/{roles-BDAsPpZG.js.map → roles-2v1Kc7BJ.js.map} +1 -1
- package/dashboard/dist/assets/{settings-Ife_UwAp.js → settings-DTQNp6tH.js} +2 -2
- package/dashboard/dist/assets/{settings-Ife_UwAp.js.map → settings-DTQNp6tH.js.map} +1 -1
- package/dashboard/dist/assets/{tasks-BquNDHDI.js → tasks-CS1rgG1s.js} +2 -2
- package/dashboard/dist/assets/{tasks-BquNDHDI.js.map → tasks-CS1rgG1s.js.map} +1 -1
- package/dashboard/dist/assets/useEventHooks-BjXX8x3a.js +2 -0
- package/dashboard/dist/assets/{useEventHooks-anv_B2Yy.js.map → useEventHooks-BjXX8x3a.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-BeR-nVWQ.js +2 -0
- package/dashboard/dist/assets/useYamlActivityEvents-BeR-nVWQ.js.map +1 -0
- package/dashboard/dist/assets/{users-CFcxB4v6.js → users-DYsdQ7Md.js} +2 -2
- package/dashboard/dist/assets/{users-CFcxB4v6.js.map → users-DYsdQ7Md.js.map} +1 -1
- package/dashboard/dist/assets/{vendor-icons-T4r2DSPD.js → vendor-icons-CWl44VA6.js} +132 -82
- package/dashboard/dist/assets/vendor-icons-CWl44VA6.js.map +1 -0
- package/dashboard/dist/assets/{workflows-CeRci9z3.js → workflows-2QAXh3UD.js} +2 -2
- package/dashboard/dist/assets/{workflows-CeRci9z3.js.map → workflows-2QAXh3UD.js.map} +1 -1
- package/dashboard/dist/assets/yaml-workflows-sx8-UEE3.js +2 -0
- package/dashboard/dist/assets/yaml-workflows-sx8-UEE3.js.map +1 -0
- 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/schema-exchange.md +173 -0
- package/docs/self-test.md +106 -0
- package/docs/workflows.md +19 -0
- package/package.json +15 -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-Dbd1qUK_.js +0 -2
- package/dashboard/dist/assets/AvailableEscalationsPage-Dbd1qUK_.js.map +0 -1
- 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/SwimlaneTimeline-RK4Yu66z.js +0 -2
- package/dashboard/dist/assets/SwimlaneTimeline-RK4Yu66z.js.map +0 -1
- 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-BUK3qR-1.js +0 -2
- package/dashboard/dist/assets/index-BUK3qR-1.js.map +0 -1
- package/dashboard/dist/assets/index-BYZX9tOb.js.map +0 -1
- package/dashboard/dist/assets/index-Cf60K3x9.js +0 -2
- package/dashboard/dist/assets/index-Cg5nfiYX.js +0 -2
- package/dashboard/dist/assets/index-D1wVX50Z.js +0 -15
- package/dashboard/dist/assets/index-D1wVX50Z.js.map +0 -1
- package/dashboard/dist/assets/index-DDYFpi4l.js +0 -5
- package/dashboard/dist/assets/index-DDYFpi4l.js.map +0 -1
- 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/useEventHooks-anv_B2Yy.js +0 -2
- 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
|
@@ -0,0 +1,141 @@
|
|
|
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
|
+
const express_1 = require("express");
|
|
37
|
+
const api = __importStar(require("../api/knowledge"));
|
|
38
|
+
const router = (0, express_1.Router)();
|
|
39
|
+
/**
|
|
40
|
+
* GET /api/knowledge/domains
|
|
41
|
+
* List all knowledge domains with entry counts.
|
|
42
|
+
*/
|
|
43
|
+
router.get('/domains', async (_req, res) => {
|
|
44
|
+
const result = await api.listDomains();
|
|
45
|
+
res.status(result.status).json(result.data ?? { error: result.error });
|
|
46
|
+
});
|
|
47
|
+
/**
|
|
48
|
+
* GET /api/knowledge/entries
|
|
49
|
+
* List entries within a domain.
|
|
50
|
+
* Query: ?domain=...&tags=a,b&limit=50&offset=0
|
|
51
|
+
*/
|
|
52
|
+
router.get('/entries', async (req, res) => {
|
|
53
|
+
const domain = req.query.domain;
|
|
54
|
+
if (!domain) {
|
|
55
|
+
res.status(400).json({ error: 'domain is required' });
|
|
56
|
+
return;
|
|
57
|
+
}
|
|
58
|
+
const tags = req.query.tags
|
|
59
|
+
? req.query.tags.split(',').map((t) => t.trim()).filter(Boolean)
|
|
60
|
+
: undefined;
|
|
61
|
+
const search = req.query.search || undefined;
|
|
62
|
+
const limit = req.query.limit ? parseInt(req.query.limit, 10) : undefined;
|
|
63
|
+
const offset = req.query.offset ? parseInt(req.query.offset, 10) : undefined;
|
|
64
|
+
const result = await api.listEntries({ domain, tags, search, limit, offset });
|
|
65
|
+
res.status(result.status).json(result.data ?? { error: result.error });
|
|
66
|
+
});
|
|
67
|
+
/**
|
|
68
|
+
* GET /api/knowledge/entry
|
|
69
|
+
* Get a single knowledge entry.
|
|
70
|
+
* Query: ?domain=...&key=...
|
|
71
|
+
*/
|
|
72
|
+
router.get('/entry', async (req, res) => {
|
|
73
|
+
const domain = req.query.domain;
|
|
74
|
+
const key = req.query.key;
|
|
75
|
+
if (!domain || !key) {
|
|
76
|
+
res.status(400).json({ error: 'domain and key are required' });
|
|
77
|
+
return;
|
|
78
|
+
}
|
|
79
|
+
const result = await api.getEntry({ domain, key });
|
|
80
|
+
res.status(result.status).json(result.data ?? { error: result.error });
|
|
81
|
+
});
|
|
82
|
+
/**
|
|
83
|
+
* POST /api/knowledge/entry
|
|
84
|
+
* Create or update a knowledge entry.
|
|
85
|
+
* Body: { domain, key, data, tags? }
|
|
86
|
+
*/
|
|
87
|
+
router.post('/entry', async (req, res) => {
|
|
88
|
+
const { domain, key, data, tags, replace } = req.body;
|
|
89
|
+
if (!domain || !key || !data) {
|
|
90
|
+
res.status(400).json({ error: 'domain, key, and data are required' });
|
|
91
|
+
return;
|
|
92
|
+
}
|
|
93
|
+
const result = await api.storeEntry({ domain, key, data, tags, replace: !!replace });
|
|
94
|
+
res.status(result.status).json(result.data ?? { error: result.error });
|
|
95
|
+
});
|
|
96
|
+
/**
|
|
97
|
+
* DELETE /api/knowledge/entry
|
|
98
|
+
* Delete a knowledge entry.
|
|
99
|
+
* Query: ?domain=...&key=...
|
|
100
|
+
*/
|
|
101
|
+
router.delete('/entry', async (req, res) => {
|
|
102
|
+
const domain = req.query.domain;
|
|
103
|
+
const key = req.query.key;
|
|
104
|
+
if (!domain || !key) {
|
|
105
|
+
res.status(400).json({ error: 'domain and key are required' });
|
|
106
|
+
return;
|
|
107
|
+
}
|
|
108
|
+
const result = await api.deleteEntry({ domain, key });
|
|
109
|
+
res.status(result.status).json(result.data ?? { error: result.error });
|
|
110
|
+
});
|
|
111
|
+
/**
|
|
112
|
+
* PUT /api/knowledge/field
|
|
113
|
+
* Set a value at a specific JSONB path without clobbering siblings.
|
|
114
|
+
* Body: { domain, key, path, value, tags? }
|
|
115
|
+
*/
|
|
116
|
+
router.put('/field', async (req, res) => {
|
|
117
|
+
const { domain, key, path, value, tags } = req.body;
|
|
118
|
+
if (!domain || !key || !path || value === undefined) {
|
|
119
|
+
res.status(400).json({ error: 'domain, key, path, and value are required' });
|
|
120
|
+
return;
|
|
121
|
+
}
|
|
122
|
+
const result = await api.setField({ domain, key, path, value, tags });
|
|
123
|
+
res.status(result.status).json(result.data ?? { error: result.error });
|
|
124
|
+
});
|
|
125
|
+
/**
|
|
126
|
+
* DELETE /api/knowledge/field
|
|
127
|
+
* Remove a specific field at a JSONB path.
|
|
128
|
+
* Query: ?domain=...&key=...&path=...
|
|
129
|
+
*/
|
|
130
|
+
router.delete('/field', async (req, res) => {
|
|
131
|
+
const domain = req.query.domain;
|
|
132
|
+
const key = req.query.key;
|
|
133
|
+
const path = req.query.path;
|
|
134
|
+
if (!domain || !key || !path) {
|
|
135
|
+
res.status(400).json({ error: 'domain, key, and path are required' });
|
|
136
|
+
return;
|
|
137
|
+
}
|
|
138
|
+
const result = await api.removeField({ domain, key, path });
|
|
139
|
+
res.status(result.status).json(result.data ?? { error: result.error });
|
|
140
|
+
});
|
|
141
|
+
exports.default = router;
|
package/build/routes/mcp-runs.js
CHANGED
|
@@ -60,6 +60,8 @@ router.get('/', async (req, res) => {
|
|
|
60
60
|
entity: req.query.entity || undefined,
|
|
61
61
|
search: req.query.search || undefined,
|
|
62
62
|
status: req.query.status || undefined,
|
|
63
|
+
sort_by: req.query.sort_by || undefined,
|
|
64
|
+
order: req.query.order || undefined,
|
|
63
65
|
});
|
|
64
66
|
res.status(result.status).json(result.data ?? { error: result.error });
|
|
65
67
|
});
|
|
@@ -79,6 +79,15 @@ router.put('/:id/plan', async (req, res) => {
|
|
|
79
79
|
});
|
|
80
80
|
res.status(result.status).json(result.data ?? { error: result.error });
|
|
81
81
|
});
|
|
82
|
+
/**
|
|
83
|
+
* POST /api/workflow-sets/:id/add
|
|
84
|
+
* Add additional workflows to an existing set from a new specification.
|
|
85
|
+
*/
|
|
86
|
+
router.post('/:id/add', async (req, res) => {
|
|
87
|
+
const { specification } = req.body;
|
|
88
|
+
const result = await api.addToWorkflowSet({ id: req.params.id, specification }, req.auth ? { userId: req.auth.userId } : undefined);
|
|
89
|
+
res.status(result.status).json(result.data ?? { error: result.error });
|
|
90
|
+
});
|
|
82
91
|
/**
|
|
83
92
|
* POST /api/workflow-sets/:id/build
|
|
84
93
|
* Trigger the build phase (resume the planner workflow).
|
|
@@ -80,6 +80,15 @@ router.post('/direct', async (req, res) => {
|
|
|
80
80
|
const result = await api.createYamlWorkflowDirect(req.body);
|
|
81
81
|
res.status(result.status).json(result.data ?? { error: result.error });
|
|
82
82
|
});
|
|
83
|
+
/**
|
|
84
|
+
* POST /api/yaml-workflows/from-durable
|
|
85
|
+
* Compile a durable TypeScript workflow into a YAML DAG.
|
|
86
|
+
* Body: { source, is_file_path?, workflow_name, name, description?, app_id?, subscribes?, tags? }
|
|
87
|
+
*/
|
|
88
|
+
router.post('/from-durable', async (req, res) => {
|
|
89
|
+
const result = await api.createYamlWorkflowFromDurable(req.body);
|
|
90
|
+
res.status(result.status).json(result.data ?? { error: result.error });
|
|
91
|
+
});
|
|
83
92
|
// -- Parameterized routes --
|
|
84
93
|
/**
|
|
85
94
|
* GET /api/yaml-workflows/:id
|
|
@@ -76,4 +76,12 @@ router.post('/:id/archive', async (req, res) => {
|
|
|
76
76
|
const result = await api.archiveYamlWorkflow({ id: req.params.id });
|
|
77
77
|
res.status(result.status).json(result.data ?? { error: result.error });
|
|
78
78
|
});
|
|
79
|
+
/**
|
|
80
|
+
* POST /api/yaml-workflows/:id/restore
|
|
81
|
+
* Restore an archived YAML workflow back to draft status for redeployment.
|
|
82
|
+
*/
|
|
83
|
+
router.post('/:id/restore', async (req, res) => {
|
|
84
|
+
const result = await api.restoreYamlWorkflow({ id: req.params.id });
|
|
85
|
+
res.status(result.status).json(result.data ?? { error: result.error });
|
|
86
|
+
});
|
|
79
87
|
exports.default = router;
|
package/build/sdk/index.d.ts
CHANGED
|
@@ -16,6 +16,8 @@ import * as workflowSetsApi from '../api/workflow-sets';
|
|
|
16
16
|
import * as dbaApi from '../api/dba';
|
|
17
17
|
import * as namespacesApi from '../api/namespaces';
|
|
18
18
|
import * as maintenanceApi from '../api/maintenance';
|
|
19
|
+
import * as filesApi from '../api/files';
|
|
20
|
+
import * as knowledgeApi from '../api/knowledge';
|
|
19
21
|
import type { LTApiAuth, LTApiResult } from '../types/sdk';
|
|
20
22
|
import type { LTEvent, LTEventType } from '../types/events';
|
|
21
23
|
/**
|
|
@@ -330,6 +332,21 @@ export declare function createClient(options?: LTClientOptions): {
|
|
|
330
332
|
getConfig: typeof maintenanceApi.getMaintenanceConfig;
|
|
331
333
|
updateConfig: typeof maintenanceApi.updateMaintenanceConfig;
|
|
332
334
|
};
|
|
335
|
+
files: {
|
|
336
|
+
browse: typeof filesApi.browseFiles;
|
|
337
|
+
getMetadata: typeof filesApi.getFileMetadata;
|
|
338
|
+
delete: typeof filesApi.deleteFile;
|
|
339
|
+
generateSignedUrl: typeof filesApi.generateSignedUrl;
|
|
340
|
+
};
|
|
341
|
+
knowledge: {
|
|
342
|
+
listDomains: typeof knowledgeApi.listDomains;
|
|
343
|
+
listEntries: typeof knowledgeApi.listEntries;
|
|
344
|
+
getEntry: typeof knowledgeApi.getEntry;
|
|
345
|
+
storeEntry: typeof knowledgeApi.storeEntry;
|
|
346
|
+
setField: typeof knowledgeApi.setField;
|
|
347
|
+
removeField: typeof knowledgeApi.removeField;
|
|
348
|
+
deleteEntry: typeof knowledgeApi.deleteEntry;
|
|
349
|
+
};
|
|
333
350
|
events: {
|
|
334
351
|
/**
|
|
335
352
|
* Subscribe to Long Tail events.
|
package/build/sdk/index.js
CHANGED
|
@@ -52,6 +52,8 @@ const workflowSetsApi = __importStar(require("../api/workflow-sets"));
|
|
|
52
52
|
const dbaApi = __importStar(require("../api/dba"));
|
|
53
53
|
const namespacesApi = __importStar(require("../api/namespaces"));
|
|
54
54
|
const maintenanceApi = __importStar(require("../api/maintenance"));
|
|
55
|
+
const filesApi = __importStar(require("../api/files"));
|
|
56
|
+
const knowledgeApi = __importStar(require("../api/knowledge"));
|
|
55
57
|
const events_1 = require("../lib/events");
|
|
56
58
|
const callback_1 = require("../lib/events/callback");
|
|
57
59
|
/** Bind auth context to a function that expects it as the last argument. */
|
|
@@ -275,6 +277,23 @@ function createClient(options = {}) {
|
|
|
275
277
|
getConfig: maintenanceApi.getMaintenanceConfig,
|
|
276
278
|
updateConfig: maintenanceApi.updateMaintenanceConfig,
|
|
277
279
|
},
|
|
280
|
+
// ── Files ──────────────────────────────────────────────────────────────
|
|
281
|
+
files: {
|
|
282
|
+
browse: filesApi.browseFiles,
|
|
283
|
+
getMetadata: filesApi.getFileMetadata,
|
|
284
|
+
delete: filesApi.deleteFile,
|
|
285
|
+
generateSignedUrl: filesApi.generateSignedUrl,
|
|
286
|
+
},
|
|
287
|
+
// ── Knowledge ─────────────────────────────────────────────────────────
|
|
288
|
+
knowledge: {
|
|
289
|
+
listDomains: knowledgeApi.listDomains,
|
|
290
|
+
listEntries: knowledgeApi.listEntries,
|
|
291
|
+
getEntry: knowledgeApi.getEntry,
|
|
292
|
+
storeEntry: knowledgeApi.storeEntry,
|
|
293
|
+
setField: knowledgeApi.setField,
|
|
294
|
+
removeField: knowledgeApi.removeField,
|
|
295
|
+
deleteEntry: knowledgeApi.deleteEntry,
|
|
296
|
+
},
|
|
278
297
|
// ── Events ─────────────────────────────────────────────────────────────
|
|
279
298
|
events: {
|
|
280
299
|
/**
|
|
@@ -44,6 +44,19 @@ export interface WorkflowPlannerInput {
|
|
|
44
44
|
setId: string;
|
|
45
45
|
wait?: boolean;
|
|
46
46
|
userId?: string;
|
|
47
|
+
/** When adding to an existing set, pass the current plan items so the planner avoids duplicates. */
|
|
48
|
+
existingPlan?: Array<{
|
|
49
|
+
name: string;
|
|
50
|
+
description: string;
|
|
51
|
+
namespace: string;
|
|
52
|
+
}>;
|
|
53
|
+
/** Sibling schemas from already-built workflows for composition context. */
|
|
54
|
+
existingSchemas?: Array<{
|
|
55
|
+
name: string;
|
|
56
|
+
input_schema: Record<string, unknown>;
|
|
57
|
+
output_schema: Record<string, unknown>;
|
|
58
|
+
graph_topic: string;
|
|
59
|
+
}>;
|
|
47
60
|
}
|
|
48
61
|
export declare function startWorkflowPlanner(input: WorkflowPlannerInput): Promise<McpQueryResult>;
|
|
49
62
|
export declare function describeWorkflow(input: DescribeInput): Promise<DescribeResult>;
|
|
@@ -11,6 +11,7 @@ exports.describeWorkflow = describeWorkflow;
|
|
|
11
11
|
const hotmesh_1 = require("@hotmeshio/hotmesh");
|
|
12
12
|
const db_1 = require("../../lib/db");
|
|
13
13
|
const defaults_1 = require("../../modules/defaults");
|
|
14
|
+
const utils_1 = require("../../modules/utils");
|
|
14
15
|
const llm_1 = require("../llm");
|
|
15
16
|
const prompts_1 = require("./prompts");
|
|
16
17
|
// ── MCP query invocation ─────────────────────────────────────────────────────
|
|
@@ -76,13 +77,13 @@ async function startWorkflowBuilder(input) {
|
|
|
76
77
|
};
|
|
77
78
|
}
|
|
78
79
|
async function startWorkflowPlanner(input) {
|
|
79
|
-
const { specification, setId, wait = true, userId } = input;
|
|
80
|
+
const { specification, setId, wait = true, userId, existingPlan, existingSchemas } = input;
|
|
80
81
|
const startTime = Date.now();
|
|
81
82
|
const client = new hotmesh_1.Durable.Client({ connection: (0, db_1.getConnection)() });
|
|
82
83
|
const workflowId = `wf-planner-${Date.now()}-${Math.random().toString(36).slice(2, 8)}`;
|
|
83
84
|
const handle = await client.workflow.start({
|
|
84
85
|
args: [{
|
|
85
|
-
data: { specification, setId },
|
|
86
|
+
data: { specification, setId, existingPlan, existingSchemas },
|
|
86
87
|
metadata: { source: 'dashboard' },
|
|
87
88
|
lt: { userId },
|
|
88
89
|
}],
|
|
@@ -126,11 +127,7 @@ async function describeWorkflow(input) {
|
|
|
126
127
|
const raw = response.content || '{}';
|
|
127
128
|
const cleaned = raw.replace(/^```(?:json)?\s*/m, '').replace(/\s*```$/m, '').trim();
|
|
128
129
|
const parsed = JSON.parse(cleaned);
|
|
129
|
-
const toolName = (parsed.tool_name || '')
|
|
130
|
-
.toLowerCase()
|
|
131
|
-
.replace(/[^a-z0-9]+/g, '-')
|
|
132
|
-
.replace(/^-|-$/g, '')
|
|
133
|
-
.slice(0, 60);
|
|
130
|
+
const toolName = (0, utils_1.sanitizeToolName)(parsed.tool_name || '').slice(0, 60);
|
|
134
131
|
return {
|
|
135
132
|
tool_name: toolName || undefined,
|
|
136
133
|
description: parsed.description || prompt,
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Externalized LLM prompt constants for the insight service.
|
|
3
3
|
*/
|
|
4
|
-
export declare const DESCRIBE_WORKFLOW_SYSTEM_PROMPT = "You generate concise workflow descriptions, tool names, and discovery tags.\n\nGiven a user's original query and the execution result, produce:\n1. A short, descriptive tool name
|
|
4
|
+
export declare const DESCRIBE_WORKFLOW_SYSTEM_PROMPT = "You generate concise workflow descriptions, tool names, and discovery tags.\n\nGiven a user's original query and the execution result, produce:\n1. A short, descriptive tool name in snake_case (e.g. \"screenshot_all_nav_pages\", \"fetch_order_status\", \"translate_content\"). Only lowercase letters, digits, and underscores. The name should describe what the workflow does, not be generic like \"query_complete\".\n2. A clear, reusable description of what this workflow does (not what the user asked, but what the workflow accomplishes as a reusable tool). Write it as if describing a tool in a catalog. 2-3 sentences max.\n3. Discovery tags \u2014 lowercase keywords that help find this workflow when similar future queries are made.\n\nReturn ONLY a JSON object:\n{ \"tool_name\": \"...\", \"description\": \"...\", \"tags\": [\"tag1\", \"tag2\", ...] }";
|
|
@@ -7,7 +7,7 @@ exports.DESCRIBE_WORKFLOW_SYSTEM_PROMPT = void 0;
|
|
|
7
7
|
exports.DESCRIBE_WORKFLOW_SYSTEM_PROMPT = `You generate concise workflow descriptions, tool names, and discovery tags.
|
|
8
8
|
|
|
9
9
|
Given a user's original query and the execution result, produce:
|
|
10
|
-
1. A short, descriptive tool name
|
|
10
|
+
1. A short, descriptive tool name in snake_case (e.g. "screenshot_all_nav_pages", "fetch_order_status", "translate_content"). Only lowercase letters, digits, and underscores. The name should describe what the workflow does, not be generic like "query_complete".
|
|
11
11
|
2. A clear, reusable description of what this workflow does (not what the user asked, but what the workflow accomplishes as a reusable tool). Write it as if describing a tool in a catalog. 2-3 sentences max.
|
|
12
12
|
3. Discovery tags — lowercase keywords that help find this workflow when similar future queries are made.
|
|
13
13
|
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { LTMcpToolManifest } from '../../../types';
|
|
2
|
+
/**
|
|
3
|
+
* Dispatch a tool call directly to a built-in server's handler,
|
|
4
|
+
* bypassing MCP Client/Transport entirely. Returns null if the server
|
|
5
|
+
* or tool is not a built-in — caller should fall through to MCP transport.
|
|
6
|
+
*
|
|
7
|
+
* Each built-in server is lazily instantiated once and cached. Tool handlers
|
|
8
|
+
* are called via server._registeredTools[toolName].handler(args). This
|
|
9
|
+
* eliminates the InMemoryTransport bottleneck under concurrent load.
|
|
10
|
+
*/
|
|
11
|
+
export declare function dispatchBuiltinTool(serverId: string, toolName: string, args: Record<string, any>): Promise<{
|
|
12
|
+
dispatched: true;
|
|
13
|
+
result: any;
|
|
14
|
+
} | null>;
|
|
15
|
+
/**
|
|
16
|
+
* List tools from a connected server.
|
|
17
|
+
*/
|
|
18
|
+
export declare function listServerTools(serverId: string): Promise<LTMcpToolManifest[]>;
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.dispatchBuiltinTool = dispatchBuiltinTool;
|
|
4
|
+
exports.listServerTools = listServerTools;
|
|
5
|
+
const logger_1 = require("../../../lib/logger");
|
|
6
|
+
const connection_lifecycle_1 = require("./connection-lifecycle");
|
|
7
|
+
/**
|
|
8
|
+
* Dispatch a tool call directly to a built-in server's handler,
|
|
9
|
+
* bypassing MCP Client/Transport entirely. Returns null if the server
|
|
10
|
+
* or tool is not a built-in — caller should fall through to MCP transport.
|
|
11
|
+
*
|
|
12
|
+
* Each built-in server is lazily instantiated once and cached. Tool handlers
|
|
13
|
+
* are called via server._registeredTools[toolName].handler(args). This
|
|
14
|
+
* eliminates the InMemoryTransport bottleneck under concurrent load.
|
|
15
|
+
*/
|
|
16
|
+
async function dispatchBuiltinTool(serverId, toolName, args) {
|
|
17
|
+
const builtinFactories = (0, connection_lifecycle_1.getBuiltinFactories)();
|
|
18
|
+
const builtinServers = (0, connection_lifecycle_1.getBuiltinServers)();
|
|
19
|
+
// Normalize and match against builtin factories
|
|
20
|
+
const norm = (s) => s.replace(/[^a-zA-Z0-9]/g, '').toLowerCase();
|
|
21
|
+
const normId = norm(serverId);
|
|
22
|
+
let matchedName = null;
|
|
23
|
+
for (const [name] of builtinFactories) {
|
|
24
|
+
const normName = norm(name);
|
|
25
|
+
if (normName === normId || normName.includes(normId) || normId.includes(normName)) {
|
|
26
|
+
matchedName = name;
|
|
27
|
+
break;
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
if (!matchedName)
|
|
31
|
+
return null;
|
|
32
|
+
// Lazily create and cache the server instance
|
|
33
|
+
if (!builtinServers.has(matchedName)) {
|
|
34
|
+
const factory = builtinFactories.get(matchedName);
|
|
35
|
+
const server = await factory();
|
|
36
|
+
builtinServers.set(matchedName, server);
|
|
37
|
+
logger_1.loggerRegistry.info(`[lt-mcp:builtin] ${matchedName} ready (direct dispatch)`);
|
|
38
|
+
}
|
|
39
|
+
const server = builtinServers.get(matchedName);
|
|
40
|
+
const tool = server._registeredTools?.[toolName];
|
|
41
|
+
if (!tool?.handler)
|
|
42
|
+
return null;
|
|
43
|
+
// Call the handler directly — no transport, no JSON-RPC.
|
|
44
|
+
// Tool handlers return MCP-shaped responses: { content: [{ type: 'text', text: '...' }] }
|
|
45
|
+
// Parse the text content the same way callServerTool does.
|
|
46
|
+
const mcpResponse = await tool.handler(args);
|
|
47
|
+
let parsed = mcpResponse;
|
|
48
|
+
if (mcpResponse && Array.isArray(mcpResponse.content)) {
|
|
49
|
+
const textContent = mcpResponse.content.find((c) => c.type === 'text');
|
|
50
|
+
if (textContent && 'text' in textContent) {
|
|
51
|
+
try {
|
|
52
|
+
parsed = JSON.parse(textContent.text);
|
|
53
|
+
}
|
|
54
|
+
catch {
|
|
55
|
+
parsed = mcpResponse.isError ? { error: textContent.text } : textContent.text;
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
const isError = parsed && typeof parsed === 'object' && 'error' in parsed;
|
|
60
|
+
logger_1.loggerRegistry.debug(`[lt-mcp:builtin] ${matchedName}/${toolName} ok=${!isError} resultKeys=[${typeof parsed === 'object' && parsed ? Object.keys(parsed).join(',') : 'raw'}]`);
|
|
61
|
+
return { dispatched: true, result: parsed };
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* List tools from a connected server.
|
|
65
|
+
*/
|
|
66
|
+
async function listServerTools(serverId) {
|
|
67
|
+
const clients = (0, connection_lifecycle_1.getClients)();
|
|
68
|
+
const client = clients.get(serverId);
|
|
69
|
+
if (!client) {
|
|
70
|
+
throw new Error(`MCP server ${serverId} is not connected`);
|
|
71
|
+
}
|
|
72
|
+
const { tools } = await client.listTools();
|
|
73
|
+
return tools.map((t) => ({
|
|
74
|
+
name: t.name,
|
|
75
|
+
description: t.description || '',
|
|
76
|
+
inputSchema: t.inputSchema || {},
|
|
77
|
+
}));
|
|
78
|
+
}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { Client } from '@modelcontextprotocol/sdk/client/index.js';
|
|
2
|
+
import type { LTMcpServerRecord } from '../../../types';
|
|
3
|
+
/** Read-only access to the clients map for sibling modules. */
|
|
4
|
+
export declare function getClients(): Map<string, Client>;
|
|
5
|
+
/** Read-only access to the builtin factories map for sibling modules. */
|
|
6
|
+
export declare function getBuiltinFactories(): Map<string, () => Promise<any>>;
|
|
7
|
+
/** Read-only access to the builtin servers map for sibling modules. */
|
|
8
|
+
export declare function getBuiltinServers(): Map<string, any>;
|
|
9
|
+
/**
|
|
10
|
+
* Register a built-in server factory so it can be auto-connected
|
|
11
|
+
* when callServerTool is invoked with its name.
|
|
12
|
+
*/
|
|
13
|
+
export declare function registerBuiltinServer(name: string, factory: () => Promise<any>): void;
|
|
14
|
+
/**
|
|
15
|
+
* Connect to a registered MCP server.
|
|
16
|
+
* Creates the appropriate transport based on transport_type,
|
|
17
|
+
* connects, and caches tool manifest in DB.
|
|
18
|
+
*/
|
|
19
|
+
export declare function connectToServer(server: LTMcpServerRecord): Promise<Client>;
|
|
20
|
+
/**
|
|
21
|
+
* Disconnect from a specific server.
|
|
22
|
+
*/
|
|
23
|
+
export declare function disconnectFromServer(serverId: string): Promise<void>;
|
|
24
|
+
/**
|
|
25
|
+
* Resolve a server by ID or name, auto-connecting built-in servers if needed.
|
|
26
|
+
* Returns the client or null if not found.
|
|
27
|
+
*
|
|
28
|
+
* Built-in servers are connected once under their canonical factory name.
|
|
29
|
+
* Alias lookups (e.g. 'translation' matching 'long-tail-translation') reuse
|
|
30
|
+
* the same client instance to avoid double-connecting the singleton server.
|
|
31
|
+
*/
|
|
32
|
+
export declare function resolveClient(serverId: string): Promise<Client | null>;
|
|
33
|
+
/**
|
|
34
|
+
* Connect to all auto-connect servers.
|
|
35
|
+
*/
|
|
36
|
+
export declare function connectAutoServers(): Promise<void>;
|
|
37
|
+
/**
|
|
38
|
+
* Disconnect all clients.
|
|
39
|
+
*/
|
|
40
|
+
export declare function disconnectAll(): Promise<void>;
|
|
41
|
+
/**
|
|
42
|
+
* Check if a server is connected.
|
|
43
|
+
*/
|
|
44
|
+
export declare function isConnected(serverId: string): boolean;
|
|
45
|
+
/**
|
|
46
|
+
* Clear all state. Used in tests.
|
|
47
|
+
*/
|
|
48
|
+
export declare function clear(): void;
|