@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
|
@@ -39,10 +39,11 @@ const zod_1 = require("zod");
|
|
|
39
39
|
const logger_1 = require("../../lib/logger");
|
|
40
40
|
const knowledge = __importStar(require("../activities/knowledge"));
|
|
41
41
|
const storeSchema = zod_1.z.object({
|
|
42
|
-
domain: zod_1.z.string().describe('
|
|
43
|
-
key: zod_1.z.string().describe('Unique
|
|
44
|
-
|
|
45
|
-
|
|
42
|
+
domain: zod_1.z.string().describe('Namespace grouping related entries (e.g. "screenshots", "config", "analysis").'),
|
|
43
|
+
key: zod_1.z.string().describe('Unique identifier within the domain (e.g. "google", "user_profile").'),
|
|
44
|
+
field: zod_1.z.string().optional().describe('RECOMMENDED. Names a specific field to set within the entry (e.g. "2026-05-09", "url", "score"). Using field is additive — it merges into existing data without clobbering other fields. Without field, the entire data object is merged at the top level, which can overwrite existing fields with the same keys. Always use field when adding to an entry that may already have data.'),
|
|
45
|
+
data: zod_1.z.any().describe('The value to store. When field is provided, this can be any type (string, number, boolean, object, array) and is stored as { [field]: data }. When field is omitted, data must be a JSON object whose keys merge into existing data.'),
|
|
46
|
+
tags: zod_1.z.array(zod_1.z.string()).optional().describe('Categorization tags (unioned on upsert)'),
|
|
46
47
|
});
|
|
47
48
|
const getSchema = zod_1.z.object({
|
|
48
49
|
domain: zod_1.z.string().describe('Knowledge domain'),
|
|
@@ -53,9 +54,11 @@ const searchSchema = zod_1.z.object({
|
|
|
53
54
|
query: zod_1.z.record(zod_1.z.any()).describe('JSONB containment query (e.g. {"type":"screenshot"})'),
|
|
54
55
|
tags: zod_1.z.array(zod_1.z.string()).optional().describe('Filter by tags (any match)'),
|
|
55
56
|
limit: zod_1.z.number().optional().describe('Max results (default 50, max 200)'),
|
|
57
|
+
offset: zod_1.z.number().optional().describe('Pagination offset'),
|
|
56
58
|
});
|
|
57
59
|
const listSchema = zod_1.z.object({
|
|
58
60
|
domain: zod_1.z.string().describe('Knowledge domain'),
|
|
61
|
+
search: zod_1.z.string().optional().describe('Search by key name or tag (partial match)'),
|
|
59
62
|
tags: zod_1.z.array(zod_1.z.string()).optional().describe('Filter by tags (any match)'),
|
|
60
63
|
limit: zod_1.z.number().optional().describe('Max results (default 50, max 200)'),
|
|
61
64
|
offset: zod_1.z.number().optional().describe('Pagination offset'),
|
|
@@ -64,6 +67,18 @@ const deleteSchema = zod_1.z.object({
|
|
|
64
67
|
domain: zod_1.z.string().describe('Knowledge domain'),
|
|
65
68
|
key: zod_1.z.string().describe('Document key to delete'),
|
|
66
69
|
});
|
|
70
|
+
const setFieldSchema = zod_1.z.object({
|
|
71
|
+
domain: zod_1.z.string().describe('Knowledge domain'),
|
|
72
|
+
key: zod_1.z.string().describe('Document key'),
|
|
73
|
+
path: zod_1.z.string().describe('Dot-notation path to the field (e.g. "google.holiday", "config.retries"). Sets the value at this exact path without overwriting sibling fields.'),
|
|
74
|
+
value: zod_1.z.any().refine((v) => v !== undefined, 'value is required').describe('Value to set — any JSON type (string, number, boolean, object, array)'),
|
|
75
|
+
tags: zod_1.z.array(zod_1.z.string()).optional().describe('Tags to union with existing tags'),
|
|
76
|
+
});
|
|
77
|
+
const removeFieldSchema = zod_1.z.object({
|
|
78
|
+
domain: zod_1.z.string().describe('Knowledge domain'),
|
|
79
|
+
key: zod_1.z.string().describe('Document key'),
|
|
80
|
+
path: zod_1.z.string().describe('Dot-notation path to remove (e.g. "google.legacy_data", "temp.cache")'),
|
|
81
|
+
});
|
|
67
82
|
const appendSchema = zod_1.z.object({
|
|
68
83
|
domain: zod_1.z.string().describe('Knowledge domain'),
|
|
69
84
|
key: zod_1.z.string().describe('Document key'),
|
|
@@ -73,10 +88,38 @@ const appendSchema = zod_1.z.object({
|
|
|
73
88
|
function registerTools(server) {
|
|
74
89
|
server.registerTool('store_knowledge', {
|
|
75
90
|
title: 'Store Knowledge',
|
|
76
|
-
description: 'Store
|
|
91
|
+
description: 'Store a value in the knowledge base using a 3-level hierarchy: domain > key > field. ' +
|
|
92
|
+
'IMPORTANT: Always use the field parameter when adding data to an existing entry — ' +
|
|
93
|
+
'it merges additively without clobbering other fields. Without field, top-level keys ' +
|
|
94
|
+
'in data overwrite existing keys with the same name. ' +
|
|
95
|
+
'Example: domain="screenshots", key="google", field="2026-05-10", data="description text".',
|
|
77
96
|
inputSchema: storeSchema,
|
|
78
97
|
}, async (args) => {
|
|
79
|
-
|
|
98
|
+
// When field is provided, wrap the data value as { [field]: data }
|
|
99
|
+
// so it merges into the JSONB column at the field level.
|
|
100
|
+
// When field is omitted, data must be a plain object — reject strings,
|
|
101
|
+
// arrays, and primitives that would corrupt the JSONB merge
|
|
102
|
+
// (Postgres `object || string` produces an array, not a merge).
|
|
103
|
+
let dataObj;
|
|
104
|
+
if (args.field != null) {
|
|
105
|
+
dataObj = { [args.field]: args.data };
|
|
106
|
+
}
|
|
107
|
+
else {
|
|
108
|
+
if (args.data == null || typeof args.data !== 'object' || Array.isArray(args.data)) {
|
|
109
|
+
return {
|
|
110
|
+
content: [{
|
|
111
|
+
type: 'text',
|
|
112
|
+
text: JSON.stringify({
|
|
113
|
+
error: 'When field is omitted, data must be a JSON object. Use the field parameter to store strings and other primitives.',
|
|
114
|
+
}),
|
|
115
|
+
}],
|
|
116
|
+
};
|
|
117
|
+
}
|
|
118
|
+
dataObj = args.data;
|
|
119
|
+
}
|
|
120
|
+
const result = await knowledge.storeKnowledge({
|
|
121
|
+
domain: args.domain, key: args.key, data: dataObj, tags: args.tags,
|
|
122
|
+
});
|
|
80
123
|
return { content: [{ type: 'text', text: JSON.stringify(result) }] };
|
|
81
124
|
});
|
|
82
125
|
server.registerTool('get_knowledge', {
|
|
@@ -127,6 +170,26 @@ function registerTools(server) {
|
|
|
127
170
|
const result = await knowledge.appendKnowledge(args);
|
|
128
171
|
return { content: [{ type: 'text', text: JSON.stringify(result) }] };
|
|
129
172
|
});
|
|
173
|
+
server.registerTool('set_knowledge_field', {
|
|
174
|
+
title: 'Set Knowledge Field',
|
|
175
|
+
description: 'RECOMMENDED for updating existing entries. Set a value at a specific path within a knowledge entry ' +
|
|
176
|
+
'without overwriting sibling fields. Use dot-notation for nested paths (e.g. "google.holiday" sets ' +
|
|
177
|
+
'data.google.holiday while preserving data.google.description). Creates the entry if it does not exist. ' +
|
|
178
|
+
'Use this instead of store_knowledge when the entry may already have data you want to preserve.',
|
|
179
|
+
inputSchema: setFieldSchema,
|
|
180
|
+
}, async (args) => {
|
|
181
|
+
const result = await knowledge.setKnowledgeField(args);
|
|
182
|
+
return { content: [{ type: 'text', text: JSON.stringify(result) }] };
|
|
183
|
+
});
|
|
184
|
+
server.registerTool('remove_knowledge_field', {
|
|
185
|
+
title: 'Remove Knowledge Field',
|
|
186
|
+
description: 'Remove a specific field from a knowledge entry by dot-path. The entry survives — only the targeted ' +
|
|
187
|
+
'path is deleted. Use this for intentional cleanup of obsolete or incorrect fields.',
|
|
188
|
+
inputSchema: removeFieldSchema,
|
|
189
|
+
}, async (args) => {
|
|
190
|
+
const result = await knowledge.removeKnowledgeField(args);
|
|
191
|
+
return { content: [{ type: 'text', text: JSON.stringify(result) }] };
|
|
192
|
+
});
|
|
130
193
|
}
|
|
131
194
|
async function createKnowledgeServer(options) {
|
|
132
195
|
const name = options?.name || 'long-tail-knowledge';
|
|
@@ -0,0 +1,93 @@
|
|
|
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.createSchemaExchangeServer = createSchemaExchangeServer;
|
|
37
|
+
const mcp_js_1 = require("@modelcontextprotocol/sdk/server/mcp.js");
|
|
38
|
+
const zod_1 = require("zod");
|
|
39
|
+
const logger_1 = require("../../lib/logger");
|
|
40
|
+
const schemaExchange = __importStar(require("../activities/schema-exchange"));
|
|
41
|
+
const exchangeSchema = zod_1.z.object({
|
|
42
|
+
endpoint: zod_1.z.string().optional().describe('Service endpoint URL. Supports template variables resolved by the caller (e.g. /Patient/{id}).'),
|
|
43
|
+
url: zod_1.z.string().optional().describe('Alias for endpoint (either endpoint or url is required).'),
|
|
44
|
+
method: zod_1.z.string().describe('HTTP method: GET, POST, PUT, DELETE, PATCH.'),
|
|
45
|
+
headers: zod_1.z.record(zod_1.z.string()).optional().describe('Request headers (e.g. Authorization, Accept, Content-Type).'),
|
|
46
|
+
query: zod_1.z.record(zod_1.z.string()).optional().describe('Query parameters appended to the URL.'),
|
|
47
|
+
body: zod_1.z.any().optional().describe('Request body. Validated against request_schema before sending (if provided).'),
|
|
48
|
+
request_schema: zod_1.z.record(zod_1.z.any()).optional().describe('JSON Schema for the request body. When provided, the body is validated before the request is sent. Validation failure returns immediately — the request is never made.'),
|
|
49
|
+
response_schema: zod_1.z.record(zod_1.z.any()).optional().describe('JSON Schema for the expected response body. When provided, the response is validated after receiving. The validated flag and validation_errors in the output indicate whether the response matched.'),
|
|
50
|
+
timeout_ms: zod_1.z.number().optional().describe('Request timeout in milliseconds (default: 30000).'),
|
|
51
|
+
credential_provider: zod_1.z.string().optional().describe('Credential provider name (e.g. "stripe", "epic", "google"). When set, resolves authentication from the connection store using the calling principal\'s identity. No manual token input needed.'),
|
|
52
|
+
credential_label: zod_1.z.string().optional().describe('Credential label for multi-credential accounts (default: "default").'),
|
|
53
|
+
auth_scheme: zod_1.z.string().optional().describe('Authentication scheme (default: "Bearer"). Used with credential_provider to build the auth header value.'),
|
|
54
|
+
auth_header: zod_1.z.string().optional().describe('Header name for the credential (default: "Authorization"). Some APIs use X-API-Key instead.'),
|
|
55
|
+
});
|
|
56
|
+
const validateSchema = zod_1.z.object({
|
|
57
|
+
data: zod_1.z.any().describe('The value to validate against the schema.'),
|
|
58
|
+
schema: zod_1.z.record(zod_1.z.any()).describe('JSON Schema to validate against.'),
|
|
59
|
+
});
|
|
60
|
+
async function createSchemaExchangeServer(options) {
|
|
61
|
+
const name = options?.name || 'long-tail-schema-exchange';
|
|
62
|
+
const instance = new mcp_js_1.McpServer({ name, version: '1.0.0' });
|
|
63
|
+
instance.registerTool('exchange', {
|
|
64
|
+
title: 'Schema Exchange',
|
|
65
|
+
description: 'Exchange data with an external service endpoint under schema enforcement. ' +
|
|
66
|
+
'Validates the request body against request_schema before sending and the response ' +
|
|
67
|
+
'body against response_schema after receiving. Transport is an implementation detail — ' +
|
|
68
|
+
'the principle is endpoint + schema + validated data exchange. ' +
|
|
69
|
+
'Use response_schema to detect API drift: schedule on cron and the validated flag ' +
|
|
70
|
+
'tells you immediately when the API shape changes.',
|
|
71
|
+
inputSchema: exchangeSchema,
|
|
72
|
+
}, async (args) => {
|
|
73
|
+
try {
|
|
74
|
+
const result = await schemaExchange.exchange(args);
|
|
75
|
+
return { content: [{ type: 'text', text: JSON.stringify(result) }] };
|
|
76
|
+
}
|
|
77
|
+
catch (err) {
|
|
78
|
+
return { content: [{ type: 'text', text: JSON.stringify({ error: err.message }) }], isError: true };
|
|
79
|
+
}
|
|
80
|
+
});
|
|
81
|
+
instance.registerTool('validate_schema', {
|
|
82
|
+
title: 'Validate Schema',
|
|
83
|
+
description: 'Validate any value against a JSON Schema without making a network call. ' +
|
|
84
|
+
'Useful for pre-validating data before storage, checking API response shapes in tests, ' +
|
|
85
|
+
'or verifying that transforms produce correct output.',
|
|
86
|
+
inputSchema: validateSchema,
|
|
87
|
+
}, async (args) => {
|
|
88
|
+
const result = schemaExchange.validateSchema(args.data, args.schema);
|
|
89
|
+
return { content: [{ type: 'text', text: JSON.stringify(result) }] };
|
|
90
|
+
});
|
|
91
|
+
logger_1.loggerRegistry.info(`[lt-mcp:schema-exchange] ${name} ready (2 tools registered)`);
|
|
92
|
+
return instance;
|
|
93
|
+
}
|
|
@@ -40,6 +40,7 @@ const mcp_js_1 = require("@modelcontextprotocol/sdk/server/mcp.js");
|
|
|
40
40
|
const zod_1 = require("zod");
|
|
41
41
|
const logger_1 = require("../../lib/logger");
|
|
42
42
|
const yamlGenerator = __importStar(require("../../services/yaml-workflow/generator"));
|
|
43
|
+
const durable_compiler_1 = require("../../services/yaml-workflow/durable-compiler");
|
|
43
44
|
const yamlDb = __importStar(require("../../services/yaml-workflow/db"));
|
|
44
45
|
const yamlDeployer = __importStar(require("../../services/yaml-workflow/deployer"));
|
|
45
46
|
const yamlWorkers = __importStar(require("../../services/yaml-workflow/workers"));
|
|
@@ -65,6 +66,13 @@ const listSchema = zod_1.z.object({
|
|
|
65
66
|
offset: zod_1.z.number().int().min(0).optional().default(0)
|
|
66
67
|
.describe('Pagination offset'),
|
|
67
68
|
});
|
|
69
|
+
const compileDurableSchema = zod_1.z.object({
|
|
70
|
+
source: zod_1.z.string().describe('TypeScript source code of the durable workflow function (inline source, not a file path)'),
|
|
71
|
+
workflow_name: zod_1.z.string().describe('Name of the exported workflow function to compile (e.g., "assemblyLine", "basicSignal")'),
|
|
72
|
+
yaml_name: zod_1.z.string().describe('Name for the generated YAML workflow (becomes graph topic)'),
|
|
73
|
+
description: zod_1.z.string().optional().describe('Optional description of what the workflow does'),
|
|
74
|
+
app_id: zod_1.z.string().optional().describe('Target namespace (defaults to "longtail")'),
|
|
75
|
+
});
|
|
68
76
|
/**
|
|
69
77
|
* Create the Workflow Compiler MCP server.
|
|
70
78
|
*
|
|
@@ -216,6 +224,52 @@ async function createWorkflowCompilerServer(options) {
|
|
|
216
224
|
}],
|
|
217
225
|
};
|
|
218
226
|
});
|
|
227
|
+
// ── compile_durable_to_yaml ────────────────────────────────────────
|
|
228
|
+
server.registerTool('compile_durable_to_yaml', {
|
|
229
|
+
title: 'Compile Durable Workflow to YAML',
|
|
230
|
+
description: 'Convert a procedural durable TypeScript workflow (Temporal-like API) into an equivalent ' +
|
|
231
|
+
'HotMesh YAML DAG. The generated YAML runs without replay overhead and achieves the same ' +
|
|
232
|
+
'orchestration behavior. Handles proxyActivities, sleep, condition/signal, escalation, ' +
|
|
233
|
+
'startChild composition, parallel execution, and loop patterns.',
|
|
234
|
+
inputSchema: compileDurableSchema,
|
|
235
|
+
}, async (args) => {
|
|
236
|
+
const result = await (0, durable_compiler_1.compileDurableToYaml)({
|
|
237
|
+
source: args.source,
|
|
238
|
+
isFilePath: false,
|
|
239
|
+
workflowName: args.workflow_name,
|
|
240
|
+
name: args.yaml_name,
|
|
241
|
+
description: args.description,
|
|
242
|
+
appId: args.app_id,
|
|
243
|
+
});
|
|
244
|
+
const record = await yamlDb.createYamlWorkflow({
|
|
245
|
+
name: args.yaml_name,
|
|
246
|
+
description: args.description,
|
|
247
|
+
app_id: result.appId,
|
|
248
|
+
yaml_content: result.yaml,
|
|
249
|
+
graph_topic: result.graphTopic,
|
|
250
|
+
input_schema: result.inputSchema,
|
|
251
|
+
output_schema: result.outputSchema,
|
|
252
|
+
activity_manifest: result.activityManifest,
|
|
253
|
+
tags: result.tags,
|
|
254
|
+
source_workflow_type: 'durable',
|
|
255
|
+
original_prompt: args.description,
|
|
256
|
+
category: result.category,
|
|
257
|
+
metadata: { durable_source: args.source },
|
|
258
|
+
});
|
|
259
|
+
return {
|
|
260
|
+
content: [{
|
|
261
|
+
type: 'text',
|
|
262
|
+
text: JSON.stringify({
|
|
263
|
+
yaml_workflow_id: record.id,
|
|
264
|
+
app_id: record.app_id,
|
|
265
|
+
graph_topic: result.graphTopic,
|
|
266
|
+
activity_count: result.activityManifest.filter((a) => a.type === 'worker').length,
|
|
267
|
+
input_schema: result.inputSchema,
|
|
268
|
+
yaml_preview: result.yaml.slice(0, 500),
|
|
269
|
+
}),
|
|
270
|
+
}],
|
|
271
|
+
};
|
|
272
|
+
});
|
|
219
273
|
logger_1.loggerRegistry.info(`[lt-mcp] workflow compiler server created: ${name}`);
|
|
220
274
|
return server;
|
|
221
275
|
}
|
|
@@ -2931,10 +2931,13 @@ export declare const SEED_MCP_SERVERS: ({
|
|
|
2931
2931
|
type: string;
|
|
2932
2932
|
description: string;
|
|
2933
2933
|
};
|
|
2934
|
-
|
|
2934
|
+
field: {
|
|
2935
2935
|
type: string;
|
|
2936
2936
|
description: string;
|
|
2937
2937
|
};
|
|
2938
|
+
data: {
|
|
2939
|
+
description: string;
|
|
2940
|
+
};
|
|
2938
2941
|
tags: {
|
|
2939
2942
|
type: string;
|
|
2940
2943
|
items: {
|
|
@@ -2964,6 +2967,7 @@ export declare const SEED_MCP_SERVERS: ({
|
|
|
2964
2967
|
type: string;
|
|
2965
2968
|
description: string;
|
|
2966
2969
|
};
|
|
2970
|
+
field?: undefined;
|
|
2967
2971
|
data?: undefined;
|
|
2968
2972
|
tags?: undefined;
|
|
2969
2973
|
query?: undefined;
|
|
@@ -3000,6 +3004,7 @@ export declare const SEED_MCP_SERVERS: ({
|
|
|
3000
3004
|
description: string;
|
|
3001
3005
|
};
|
|
3002
3006
|
key?: undefined;
|
|
3007
|
+
field?: undefined;
|
|
3003
3008
|
data?: undefined;
|
|
3004
3009
|
offset?: undefined;
|
|
3005
3010
|
path?: undefined;
|
|
@@ -3033,6 +3038,7 @@ export declare const SEED_MCP_SERVERS: ({
|
|
|
3033
3038
|
description: string;
|
|
3034
3039
|
};
|
|
3035
3040
|
key?: undefined;
|
|
3041
|
+
field?: undefined;
|
|
3036
3042
|
data?: undefined;
|
|
3037
3043
|
query?: undefined;
|
|
3038
3044
|
path?: undefined;
|
|
@@ -3048,6 +3054,7 @@ export declare const SEED_MCP_SERVERS: ({
|
|
|
3048
3054
|
properties: {
|
|
3049
3055
|
domain?: undefined;
|
|
3050
3056
|
key?: undefined;
|
|
3057
|
+
field?: undefined;
|
|
3051
3058
|
data?: undefined;
|
|
3052
3059
|
tags?: undefined;
|
|
3053
3060
|
query?: undefined;
|
|
@@ -3079,6 +3086,7 @@ export declare const SEED_MCP_SERVERS: ({
|
|
|
3079
3086
|
value: {
|
|
3080
3087
|
description: string;
|
|
3081
3088
|
};
|
|
3089
|
+
field?: undefined;
|
|
3082
3090
|
data?: undefined;
|
|
3083
3091
|
tags?: undefined;
|
|
3084
3092
|
query?: undefined;
|
|
@@ -3096,4 +3104,107 @@ export declare const SEED_MCP_SERVERS: ({
|
|
|
3096
3104
|
tags: string[];
|
|
3097
3105
|
compile_hints: string;
|
|
3098
3106
|
credential_providers: never[];
|
|
3107
|
+
} | {
|
|
3108
|
+
name: string;
|
|
3109
|
+
description: string;
|
|
3110
|
+
transport_type: string;
|
|
3111
|
+
transport_config: {
|
|
3112
|
+
builtin: boolean;
|
|
3113
|
+
process: string;
|
|
3114
|
+
};
|
|
3115
|
+
tool_manifest: ({
|
|
3116
|
+
name: string;
|
|
3117
|
+
description: string;
|
|
3118
|
+
inputSchema: {
|
|
3119
|
+
type: string;
|
|
3120
|
+
properties: {
|
|
3121
|
+
endpoint: {
|
|
3122
|
+
type: string;
|
|
3123
|
+
description: string;
|
|
3124
|
+
};
|
|
3125
|
+
method: {
|
|
3126
|
+
type: string;
|
|
3127
|
+
description: string;
|
|
3128
|
+
};
|
|
3129
|
+
headers: {
|
|
3130
|
+
type: string;
|
|
3131
|
+
description: string;
|
|
3132
|
+
};
|
|
3133
|
+
query: {
|
|
3134
|
+
type: string;
|
|
3135
|
+
description: string;
|
|
3136
|
+
};
|
|
3137
|
+
body: {
|
|
3138
|
+
description: string;
|
|
3139
|
+
};
|
|
3140
|
+
request_schema: {
|
|
3141
|
+
type: string;
|
|
3142
|
+
description: string;
|
|
3143
|
+
};
|
|
3144
|
+
response_schema: {
|
|
3145
|
+
type: string;
|
|
3146
|
+
description: string;
|
|
3147
|
+
};
|
|
3148
|
+
timeout_ms: {
|
|
3149
|
+
type: string;
|
|
3150
|
+
description: string;
|
|
3151
|
+
};
|
|
3152
|
+
credential_provider: {
|
|
3153
|
+
type: string;
|
|
3154
|
+
description: string;
|
|
3155
|
+
};
|
|
3156
|
+
credential_label: {
|
|
3157
|
+
type: string;
|
|
3158
|
+
description: string;
|
|
3159
|
+
};
|
|
3160
|
+
auth_scheme: {
|
|
3161
|
+
type: string;
|
|
3162
|
+
description: string;
|
|
3163
|
+
};
|
|
3164
|
+
auth_header: {
|
|
3165
|
+
type: string;
|
|
3166
|
+
description: string;
|
|
3167
|
+
};
|
|
3168
|
+
data?: undefined;
|
|
3169
|
+
schema?: undefined;
|
|
3170
|
+
};
|
|
3171
|
+
required: string[];
|
|
3172
|
+
};
|
|
3173
|
+
} | {
|
|
3174
|
+
name: string;
|
|
3175
|
+
description: string;
|
|
3176
|
+
inputSchema: {
|
|
3177
|
+
type: string;
|
|
3178
|
+
properties: {
|
|
3179
|
+
data: {
|
|
3180
|
+
description: string;
|
|
3181
|
+
};
|
|
3182
|
+
schema: {
|
|
3183
|
+
type: string;
|
|
3184
|
+
description: string;
|
|
3185
|
+
};
|
|
3186
|
+
endpoint?: undefined;
|
|
3187
|
+
method?: undefined;
|
|
3188
|
+
headers?: undefined;
|
|
3189
|
+
query?: undefined;
|
|
3190
|
+
body?: undefined;
|
|
3191
|
+
request_schema?: undefined;
|
|
3192
|
+
response_schema?: undefined;
|
|
3193
|
+
timeout_ms?: undefined;
|
|
3194
|
+
credential_provider?: undefined;
|
|
3195
|
+
credential_label?: undefined;
|
|
3196
|
+
auth_scheme?: undefined;
|
|
3197
|
+
auth_header?: undefined;
|
|
3198
|
+
};
|
|
3199
|
+
required: string[];
|
|
3200
|
+
};
|
|
3201
|
+
})[];
|
|
3202
|
+
metadata: {
|
|
3203
|
+
builtin: boolean;
|
|
3204
|
+
category: string;
|
|
3205
|
+
level?: undefined;
|
|
3206
|
+
};
|
|
3207
|
+
tags: string[];
|
|
3208
|
+
compile_hints: string;
|
|
3209
|
+
credential_providers: never[];
|
|
3099
3210
|
})[];
|
|
@@ -192,4 +192,41 @@ exports.SEED_MCP_SERVERS = [
|
|
|
192
192
|
'list_domains returns all domains with counts, useful for discovering what knowledge exists.',
|
|
193
193
|
credential_providers: [],
|
|
194
194
|
},
|
|
195
|
+
{
|
|
196
|
+
name: 'long-tail-schema-exchange',
|
|
197
|
+
description: 'Schema-driven data exchange with external service endpoints. Validates requests and responses ' +
|
|
198
|
+
'against JSON Schema. Transport is an implementation detail — the principle is endpoint + schema + ' +
|
|
199
|
+
'validated exchange. Use this as the building block for wrapping any external API.',
|
|
200
|
+
transport_type: 'stdio',
|
|
201
|
+
transport_config: { builtin: true, process: 'in-memory' },
|
|
202
|
+
tool_manifest: tool_manifests_data_1.SCHEMA_EXCHANGE_TOOLS,
|
|
203
|
+
metadata: { builtin: true, category: 'data' },
|
|
204
|
+
tags: ['api', 'schema', 'exchange', 'validation', 'fetch'],
|
|
205
|
+
compile_hints: 'Schema-driven data exchange for external API endpoints. Validates requests before sending and responses after receiving against JSON Schema. ' +
|
|
206
|
+
'When building a workflow that calls an external API endpoint, use exchange as the worker activity. ' +
|
|
207
|
+
'Embed request_schema and response_schema as STATIC values in input.maps (not dynamic inputs — schemas are fixed per endpoint). ' +
|
|
208
|
+
'Build the endpoint URL using @pipe concat for template variables. Use "url" for the endpoint field name. ' +
|
|
209
|
+
'CRITICAL — Authorization headers: when the trigger provides a token and you need to build "Bearer {token}", use this EXACT YAML structure for the headers field in input.maps:\n' +
|
|
210
|
+
' headers:\n' +
|
|
211
|
+
' Authorization:\n' +
|
|
212
|
+
' \'@pipe\':\n' +
|
|
213
|
+
' - [\'Bearer \', \'{trigger_XXXX.output.data.token}\']\n' +
|
|
214
|
+
' - [\'{@string.concat}\']\n' +
|
|
215
|
+
'NEVER nest @pipe inside @pipe for headers. NEVER use @object.fromEntries for headers. The headers field is a plain object — each header name is a key, and its value can be a static string or a single @pipe expression. ' +
|
|
216
|
+
'The trigger input_schema should reflect the endpoint\'s dynamic parameters (IDs, search terms, pagination) plus base_url and credentials. ' +
|
|
217
|
+
'CRITICAL — exchange output structure: the exchange tool returns { status, data, headers, elapsed_ms, validated, validation_errors }. ' +
|
|
218
|
+
'The actual API response body is inside the "data" field. So to reference a response field like "token", ' +
|
|
219
|
+
'use {activity.output.data.data.token} (NOT {activity.output.data.token}). ' +
|
|
220
|
+
'The double .data is because HotMesh wraps activity output in .output.data, and the exchange tool puts the API response in its own .data field. ' +
|
|
221
|
+
'For job.maps on the last activity: job.maps.token: \'{exchange_xxxx.output.data.data.token}\'. ' +
|
|
222
|
+
'Also surface validated and status: job.maps.validated: \'{exchange_xxxx.output.data.validated}\', job.maps.status: \'{exchange_xxxx.output.data.status}\'. ' +
|
|
223
|
+
'response_schema enables self-testing: schedule the compiled tool on cron against a dev/staging server — if validation fails, the API schema changed. ' +
|
|
224
|
+
'request_schema prevents malformed requests from ever leaving the system. ' +
|
|
225
|
+
'Both schemas are optional — use response_schema alone for read endpoints, both for write endpoints, neither for exploratory calls. ' +
|
|
226
|
+
'For authentication, prefer credential_provider over manually wiring tokens in headers. ' +
|
|
227
|
+
'Set credential_provider to the provider name registered in the connection store (e.g. "stripe", "epic", "google"). ' +
|
|
228
|
+
'The tool resolves the credential from the calling principal\'s stored connections at the last mile — no token input needed, auto-refreshes expired tokens. ' +
|
|
229
|
+
'Use auth_scheme for non-Bearer schemes (e.g. "Basic", "Token") and auth_header for APIs that use X-API-Key instead of Authorization.',
|
|
230
|
+
credential_providers: [],
|
|
231
|
+
},
|
|
195
232
|
];
|
|
@@ -284,6 +284,93 @@ export declare const HTTP_FETCH_TOOLS: ({
|
|
|
284
284
|
required: string[];
|
|
285
285
|
};
|
|
286
286
|
})[];
|
|
287
|
+
export declare const SCHEMA_EXCHANGE_TOOLS: ({
|
|
288
|
+
name: string;
|
|
289
|
+
description: string;
|
|
290
|
+
inputSchema: {
|
|
291
|
+
type: string;
|
|
292
|
+
properties: {
|
|
293
|
+
endpoint: {
|
|
294
|
+
type: string;
|
|
295
|
+
description: string;
|
|
296
|
+
};
|
|
297
|
+
method: {
|
|
298
|
+
type: string;
|
|
299
|
+
description: string;
|
|
300
|
+
};
|
|
301
|
+
headers: {
|
|
302
|
+
type: string;
|
|
303
|
+
description: string;
|
|
304
|
+
};
|
|
305
|
+
query: {
|
|
306
|
+
type: string;
|
|
307
|
+
description: string;
|
|
308
|
+
};
|
|
309
|
+
body: {
|
|
310
|
+
description: string;
|
|
311
|
+
};
|
|
312
|
+
request_schema: {
|
|
313
|
+
type: string;
|
|
314
|
+
description: string;
|
|
315
|
+
};
|
|
316
|
+
response_schema: {
|
|
317
|
+
type: string;
|
|
318
|
+
description: string;
|
|
319
|
+
};
|
|
320
|
+
timeout_ms: {
|
|
321
|
+
type: string;
|
|
322
|
+
description: string;
|
|
323
|
+
};
|
|
324
|
+
credential_provider: {
|
|
325
|
+
type: string;
|
|
326
|
+
description: string;
|
|
327
|
+
};
|
|
328
|
+
credential_label: {
|
|
329
|
+
type: string;
|
|
330
|
+
description: string;
|
|
331
|
+
};
|
|
332
|
+
auth_scheme: {
|
|
333
|
+
type: string;
|
|
334
|
+
description: string;
|
|
335
|
+
};
|
|
336
|
+
auth_header: {
|
|
337
|
+
type: string;
|
|
338
|
+
description: string;
|
|
339
|
+
};
|
|
340
|
+
data?: undefined;
|
|
341
|
+
schema?: undefined;
|
|
342
|
+
};
|
|
343
|
+
required: string[];
|
|
344
|
+
};
|
|
345
|
+
} | {
|
|
346
|
+
name: string;
|
|
347
|
+
description: string;
|
|
348
|
+
inputSchema: {
|
|
349
|
+
type: string;
|
|
350
|
+
properties: {
|
|
351
|
+
data: {
|
|
352
|
+
description: string;
|
|
353
|
+
};
|
|
354
|
+
schema: {
|
|
355
|
+
type: string;
|
|
356
|
+
description: string;
|
|
357
|
+
};
|
|
358
|
+
endpoint?: undefined;
|
|
359
|
+
method?: undefined;
|
|
360
|
+
headers?: undefined;
|
|
361
|
+
query?: undefined;
|
|
362
|
+
body?: undefined;
|
|
363
|
+
request_schema?: undefined;
|
|
364
|
+
response_schema?: undefined;
|
|
365
|
+
timeout_ms?: undefined;
|
|
366
|
+
credential_provider?: undefined;
|
|
367
|
+
credential_label?: undefined;
|
|
368
|
+
auth_scheme?: undefined;
|
|
369
|
+
auth_header?: undefined;
|
|
370
|
+
};
|
|
371
|
+
required: string[];
|
|
372
|
+
};
|
|
373
|
+
})[];
|
|
287
374
|
export declare const DOCS_TOOLS: ({
|
|
288
375
|
name: string;
|
|
289
376
|
description: string;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
// ── Data, storage, HTTP, and OAuth tool manifests ───────────────────────────
|
|
3
3
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
-
exports.OAUTH_TOOLS = exports.DOCS_TOOLS = exports.HTTP_FETCH_TOOLS = exports.FILE_STORAGE_TOOLS = exports.DB_QUERY_TOOLS = exports.VISION_ANALYSIS_TOOLS = exports.TRANSLATION_TOOLS = void 0;
|
|
4
|
+
exports.OAUTH_TOOLS = exports.DOCS_TOOLS = exports.SCHEMA_EXCHANGE_TOOLS = exports.HTTP_FETCH_TOOLS = exports.FILE_STORAGE_TOOLS = exports.DB_QUERY_TOOLS = exports.VISION_ANALYSIS_TOOLS = exports.TRANSLATION_TOOLS = void 0;
|
|
5
5
|
exports.TRANSLATION_TOOLS = [
|
|
6
6
|
{
|
|
7
7
|
name: 'translate_content',
|
|
@@ -141,6 +141,42 @@ exports.HTTP_FETCH_TOOLS = [
|
|
|
141
141
|
},
|
|
142
142
|
},
|
|
143
143
|
];
|
|
144
|
+
exports.SCHEMA_EXCHANGE_TOOLS = [
|
|
145
|
+
{
|
|
146
|
+
name: 'exchange',
|
|
147
|
+
description: 'Exchange data with an external service endpoint under schema enforcement. Validates request body against request_schema before sending and response body against response_schema after receiving. Transport is hidden — the principle is endpoint + schema + validated exchange.',
|
|
148
|
+
inputSchema: {
|
|
149
|
+
type: 'object',
|
|
150
|
+
properties: {
|
|
151
|
+
endpoint: { type: 'string', description: 'Service endpoint URL' },
|
|
152
|
+
method: { type: 'string', description: 'HTTP method: GET, POST, PUT, DELETE, PATCH' },
|
|
153
|
+
headers: { type: 'object', description: 'Request headers' },
|
|
154
|
+
query: { type: 'object', description: 'Query parameters' },
|
|
155
|
+
body: { description: 'Request body (validated against request_schema if provided)' },
|
|
156
|
+
request_schema: { type: 'object', description: 'JSON Schema for request body validation' },
|
|
157
|
+
response_schema: { type: 'object', description: 'JSON Schema for response body validation' },
|
|
158
|
+
timeout_ms: { type: 'number', description: 'Request timeout in milliseconds' },
|
|
159
|
+
credential_provider: { type: 'string', description: 'Credential provider name — resolves auth from the connection store automatically' },
|
|
160
|
+
credential_label: { type: 'string', description: 'Credential label for multi-credential accounts' },
|
|
161
|
+
auth_scheme: { type: 'string', description: 'Auth scheme (default: Bearer)' },
|
|
162
|
+
auth_header: { type: 'string', description: 'Header name for credential (default: Authorization)' },
|
|
163
|
+
},
|
|
164
|
+
required: ['endpoint', 'method'],
|
|
165
|
+
},
|
|
166
|
+
},
|
|
167
|
+
{
|
|
168
|
+
name: 'validate_schema',
|
|
169
|
+
description: 'Validate any value against a JSON Schema without making a network call. Useful for pre-validation, testing, and transform verification.',
|
|
170
|
+
inputSchema: {
|
|
171
|
+
type: 'object',
|
|
172
|
+
properties: {
|
|
173
|
+
data: { description: 'The value to validate' },
|
|
174
|
+
schema: { type: 'object', description: 'JSON Schema to validate against' },
|
|
175
|
+
},
|
|
176
|
+
required: ['data', 'schema'],
|
|
177
|
+
},
|
|
178
|
+
},
|
|
179
|
+
];
|
|
144
180
|
exports.DOCS_TOOLS = [
|
|
145
181
|
{
|
|
146
182
|
name: 'list_docs',
|