@hotmeshio/long-tail 0.1.5 → 0.1.7
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 +78 -8
- package/build/api/auth.d.ts +5 -0
- package/build/api/auth.js +42 -0
- package/build/api/bot-accounts.d.ts +50 -0
- package/build/api/bot-accounts.js +215 -0
- package/build/api/controlplane.d.ts +20 -0
- package/build/api/controlplane.js +110 -0
- package/build/api/dba.d.ts +15 -0
- package/build/api/dba.js +68 -0
- package/build/api/escalations.d.ts +70 -0
- package/build/api/escalations.js +656 -0
- package/build/api/exports.d.ts +32 -0
- package/build/api/exports.js +146 -0
- package/build/api/index.d.ts +18 -0
- package/build/api/index.js +54 -0
- package/build/api/insight.d.ts +29 -0
- package/build/api/insight.js +90 -0
- package/build/api/maintenance.d.ts +7 -0
- package/build/api/maintenance.js +28 -0
- package/build/api/mcp-runs.d.ts +16 -0
- package/build/api/mcp-runs.js +62 -0
- package/build/api/mcp.d.ts +52 -0
- package/build/api/mcp.js +212 -0
- package/build/api/namespaces.d.ts +7 -0
- package/build/{routes/escalations/helpers.js → api/namespaces.js} +24 -12
- package/build/api/roles.d.ts +25 -0
- package/build/api/roles.js +159 -0
- package/build/api/settings.d.ts +2 -0
- package/build/api/settings.js +35 -0
- package/build/api/tasks.d.ts +27 -0
- package/build/api/tasks.js +96 -0
- package/build/api/users.d.ts +44 -0
- package/build/api/users.js +162 -0
- package/build/api/workflow-sets.d.ts +26 -0
- package/build/api/workflow-sets.js +119 -0
- package/build/api/workflows.d.ts +48 -0
- package/build/api/workflows.js +298 -0
- package/build/api/yaml-workflows.d.ts +87 -0
- package/build/api/yaml-workflows.js +556 -0
- package/build/index.d.ts +4 -0
- package/build/index.js +6 -1
- package/build/lib/db/migrate.js +3 -6
- package/{lib → build/lib}/db/schemas/001_schema.sql +3 -0
- package/build/lib/db/schemas/004_workflow_sets.sql +29 -0
- package/build/lib/db/schemas/005_unique_graph_topic.sql +7 -0
- package/{lib → build/lib}/db/schemas/011_system_workflow_configs.sql +14 -0
- package/build/lib/db/schemas/016_streamable_http.sql +7 -0
- package/build/lib/events/callback.d.ts +41 -0
- package/build/lib/events/callback.js +98 -0
- package/build/modules/config.js +1 -1
- package/build/routes/auth.js +37 -36
- package/build/routes/bot-accounts.js +34 -164
- package/build/routes/controlplane.js +20 -60
- package/build/routes/dba.js +18 -28
- package/build/routes/docs.js +25 -7
- package/build/routes/escalations/bulk.js +17 -192
- package/build/routes/escalations/list.js +29 -75
- package/build/routes/escalations/resolve.js +3 -193
- package/build/routes/escalations/single.js +13 -122
- package/build/routes/exports.js +44 -95
- package/build/routes/index.js +2 -0
- package/build/routes/insight.js +61 -40
- package/build/routes/maintenance.js +41 -17
- package/build/routes/mcp-runs.js +52 -60
- package/build/routes/mcp.js +55 -161
- package/build/routes/namespaces.js +9 -20
- package/build/routes/roles.js +23 -97
- package/build/routes/settings.js +37 -25
- package/build/routes/tasks.js +28 -64
- package/build/routes/users.js +24 -113
- package/build/routes/workflow-sets.d.ts +2 -0
- package/build/routes/workflow-sets.js +98 -0
- package/build/routes/workflows/config.js +23 -57
- package/build/routes/workflows/discovery.js +11 -85
- package/build/routes/workflows/invocation.js +16 -84
- package/build/routes/yaml-workflows/cron.d.ts +2 -0
- package/build/routes/yaml-workflows/cron.js +68 -0
- package/build/routes/yaml-workflows/crud.js +38 -193
- package/build/routes/yaml-workflows/deployment.js +15 -140
- package/build/routes/yaml-workflows/index.js +4 -1
- package/build/routes/yaml-workflows/versions.js +20 -58
- package/build/sdk/index.d.ts +327 -0
- package/build/sdk/index.js +298 -0
- package/build/services/controlplane/index.d.ts +1 -2
- package/build/services/controlplane/index.js +3 -3
- package/build/services/controlplane/sql.d.ts +2 -2
- package/build/services/controlplane/sql.js +4 -5
- package/build/services/controlplane/types.d.ts +1 -0
- package/build/services/cron/index.d.ts +17 -0
- package/build/services/cron/index.js +94 -1
- package/build/services/export/index.js +6 -1
- package/build/services/hotmesh-utils.js +2 -4
- package/build/services/insight/index.d.ts +18 -0
- package/build/services/insight/index.js +60 -0
- package/build/services/mcp/client/connection.d.ts +9 -0
- package/build/services/mcp/client/connection.js +49 -1
- package/build/services/mcp/client/tools.js +13 -1
- package/build/services/mcp/db-server/schemas.d.ts +2 -2
- package/build/services/mcp/db.d.ts +1 -1
- package/build/services/mcp/db.js +10 -0
- package/build/services/mcp/playwright-server/schemas.d.ts +4 -4
- package/build/services/mcp/sql.d.ts +1 -1
- package/build/services/mcp/sql.js +2 -2
- package/build/services/mcp/types.d.ts +3 -1
- package/build/services/mcp-runs/sql.js +1 -1
- package/build/services/workflow-sets/db.d.ts +16 -0
- package/build/services/workflow-sets/db.js +78 -0
- package/build/services/workflow-sets/index.d.ts +1 -0
- package/build/services/workflow-sets/index.js +11 -0
- package/build/services/workflow-sets/sql.d.ts +6 -0
- package/build/services/workflow-sets/sql.js +24 -0
- package/build/services/yaml-workflow/db-utils.d.ts +1 -0
- package/build/services/yaml-workflow/db-utils.js +4 -0
- package/build/services/yaml-workflow/db.d.ts +8 -0
- package/build/services/yaml-workflow/db.js +41 -0
- package/build/services/yaml-workflow/invoke.d.ts +19 -0
- package/build/services/yaml-workflow/invoke.js +80 -0
- package/build/services/yaml-workflow/pipeline/build/dag.js +1 -1
- package/build/services/yaml-workflow/pipeline/build/wiring.d.ts +1 -1
- package/build/services/yaml-workflow/pipeline/build/wiring.js +102 -2
- package/build/services/yaml-workflow/pipeline/prompts.d.ts +1 -1
- package/build/services/yaml-workflow/pipeline/prompts.js +44 -1
- package/build/services/yaml-workflow/sql.d.ts +5 -1
- package/build/services/yaml-workflow/sql.js +23 -3
- package/build/services/yaml-workflow/types.d.ts +16 -1
- package/build/services/yaml-workflow/workers/callbacks.js +16 -2
- package/build/services/yaml-workflow/workers/register.js +36 -1
- package/build/start/adapters.js +4 -0
- package/build/system/index.js +12 -0
- package/build/system/mcp-servers/admin/schemas.d.ts +12 -12
- package/build/system/mcp-servers/db-query/schemas.d.ts +2 -2
- package/build/system/mcp-servers/knowledge.js +1 -1
- package/build/system/mcp-servers/playwright/schemas.d.ts +18 -18
- package/build/system/mcp-servers/playwright-cli/schemas.d.ts +34 -34
- package/build/system/mcp-servers/playwright-cli/tools-capture.js +5 -1
- package/build/system/mcp-servers/vision.js +54 -17
- package/build/system/seed/server-definitions.d.ts +7 -0
- package/build/system/seed/server-definitions.js +6 -2
- package/build/system/seed/tool-manifests-workflows.d.ts +7 -0
- package/build/system/seed/tool-manifests-workflows.js +10 -3
- package/build/system/workflows/mcp-workflow-builder/activities/caches.d.ts +5 -0
- package/build/system/workflows/mcp-workflow-builder/activities/caches.js +8 -0
- package/build/system/workflows/mcp-workflow-builder/activities/index.d.ts +2 -0
- package/build/system/workflows/mcp-workflow-builder/activities/index.js +8 -0
- package/build/system/workflows/mcp-workflow-builder/activities/llm.d.ts +2 -0
- package/build/system/workflows/mcp-workflow-builder/activities/llm.js +25 -0
- package/build/system/workflows/mcp-workflow-builder/activities/tool-loader.d.ts +11 -0
- package/build/system/workflows/mcp-workflow-builder/activities/tool-loader.js +34 -0
- package/build/system/workflows/mcp-workflow-builder/index.d.ts +16 -0
- package/build/system/workflows/mcp-workflow-builder/index.js +253 -0
- package/build/system/workflows/mcp-workflow-builder/prompts.d.ts +8 -0
- package/build/system/workflows/mcp-workflow-builder/prompts.js +316 -0
- package/build/system/workflows/mcp-workflow-planner/activities/analyze.d.ts +11 -0
- package/build/system/workflows/mcp-workflow-planner/activities/analyze.js +36 -0
- package/build/system/workflows/mcp-workflow-planner/activities/index.d.ts +3 -0
- package/build/system/workflows/mcp-workflow-planner/activities/index.js +12 -0
- package/build/system/workflows/mcp-workflow-planner/activities/persist.d.ts +19 -0
- package/build/system/workflows/mcp-workflow-planner/activities/persist.js +55 -0
- package/build/system/workflows/mcp-workflow-planner/activities/plan.d.ts +10 -0
- package/build/system/workflows/mcp-workflow-planner/activities/plan.js +43 -0
- package/build/system/workflows/mcp-workflow-planner/index.d.ts +7 -0
- package/build/system/workflows/mcp-workflow-planner/index.js +152 -0
- package/build/system/workflows/mcp-workflow-planner/prompts.d.ts +7 -0
- package/build/system/workflows/mcp-workflow-planner/prompts.js +77 -0
- package/build/system/workflows/shared/tool-loader.js +3 -0
- package/build/tsconfig.tsbuildinfo +1 -1
- package/build/types/index.d.ts +1 -0
- package/build/types/mcp.d.ts +4 -3
- package/build/types/sdk.d.ts +27 -0
- package/build/types/sdk.js +2 -0
- package/build/types/workflow-set.d.ts +44 -0
- package/build/types/workflow-set.js +5 -0
- package/build/types/yaml-workflow.d.ts +6 -2
- package/dashboard/dist/assets/AdminDashboard-DRjkRSjJ.js +2 -0
- package/dashboard/dist/assets/{AdminDashboard-CTyAMUJR.js.map → AdminDashboard-DRjkRSjJ.js.map} +1 -1
- package/dashboard/dist/assets/AvailableEscalationsPage-CnivX4Tz.js +2 -0
- package/dashboard/dist/assets/AvailableEscalationsPage-CnivX4Tz.js.map +1 -0
- package/dashboard/dist/assets/BotPicker-DwwaBhTH.js +2 -0
- package/dashboard/dist/assets/{BotPicker-C51nKFEu.js.map → BotPicker-DwwaBhTH.js.map} +1 -1
- package/dashboard/dist/assets/{CollapsibleSection-BSyfd8uL.js → CollapsibleSection-DQpaVA0M.js} +2 -2
- package/dashboard/dist/assets/{CollapsibleSection-BSyfd8uL.js.map → CollapsibleSection-DQpaVA0M.js.map} +1 -1
- package/dashboard/dist/assets/{ConfirmDeleteModal-CBdhia5T.js → ConfirmDeleteModal-B7JoDNvt.js} +2 -2
- package/dashboard/dist/assets/{ConfirmDeleteModal-CBdhia5T.js.map → ConfirmDeleteModal-B7JoDNvt.js.map} +1 -1
- package/dashboard/dist/assets/{CopyableId-dGlewBCS.js → CopyableId-AqoZayBG.js} +2 -2
- package/dashboard/dist/assets/{CopyableId-dGlewBCS.js.map → CopyableId-AqoZayBG.js.map} +1 -1
- package/dashboard/dist/assets/CredentialsPage-qGw1kQzi.js +2 -0
- package/dashboard/dist/assets/CredentialsPage-qGw1kQzi.js.map +1 -0
- package/dashboard/dist/assets/{CustomDurationPicker-BataWFj8.js → CustomDurationPicker-D1HUQcd0.js} +2 -2
- package/dashboard/dist/assets/{CustomDurationPicker-BataWFj8.js.map → CustomDurationPicker-D1HUQcd0.js.map} +1 -1
- package/dashboard/dist/assets/{DataTable-B3uf5CCo.js → DataTable-DKvSKoVG.js} +2 -2
- package/dashboard/dist/assets/{DataTable-B3uf5CCo.js.map → DataTable-DKvSKoVG.js.map} +1 -1
- package/dashboard/dist/assets/{ElapsedCell-G5oSwTpT.js → ElapsedCell-B0yrReGQ.js} +2 -2
- package/dashboard/dist/assets/{ElapsedCell-G5oSwTpT.js.map → ElapsedCell-B0yrReGQ.js.map} +1 -1
- package/dashboard/dist/assets/{EmptyState-BChBJNGS.js → EmptyState-X0fIzYID.js} +2 -2
- package/dashboard/dist/assets/{EmptyState-BChBJNGS.js.map → EmptyState-X0fIzYID.js.map} +1 -1
- package/dashboard/dist/assets/{EscalationsOverview-CxUv8xjG.js → EscalationsOverview-BQAT9W7r.js} +2 -2
- package/dashboard/dist/assets/{EscalationsOverview-CxUv8xjG.js.map → EscalationsOverview-BQAT9W7r.js.map} +1 -1
- package/dashboard/dist/assets/{EventTable-CVt8B0BZ.js → EventTable-CX1KNLhZ.js} +2 -2
- package/dashboard/dist/assets/{EventTable-CVt8B0BZ.js.map → EventTable-CX1KNLhZ.js.map} +1 -1
- package/dashboard/dist/assets/{FilterBar-CShf0oe7.js → FilterBar-DMTvuQy-.js} +2 -2
- package/dashboard/dist/assets/{FilterBar-CShf0oe7.js.map → FilterBar-DMTvuQy-.js.map} +1 -1
- package/dashboard/dist/assets/ListToolbar-DTOSxoEy.js +2 -0
- package/dashboard/dist/assets/ListToolbar-DTOSxoEy.js.map +1 -0
- package/dashboard/dist/assets/{McpOverview-CbaZRnJl.js → McpOverview-BaKTIWrG.js} +2 -2
- package/dashboard/dist/assets/{McpOverview-CbaZRnJl.js.map → McpOverview-BaKTIWrG.js.map} +1 -1
- package/dashboard/dist/assets/McpQueryDetailPage-CC08T5k8.js +5 -0
- package/dashboard/dist/assets/McpQueryDetailPage-CC08T5k8.js.map +1 -0
- package/dashboard/dist/assets/McpQueryPage-CVfF9dYg.js +2 -0
- package/dashboard/dist/assets/McpQueryPage-CVfF9dYg.js.map +1 -0
- package/dashboard/dist/assets/McpRunDetailPage-CKs1RWeV.js +2 -0
- package/dashboard/dist/assets/McpRunDetailPage-CKs1RWeV.js.map +1 -0
- package/dashboard/dist/assets/McpRunsPage-CcPD_tY1.js +2 -0
- package/dashboard/dist/assets/McpRunsPage-CcPD_tY1.js.map +1 -0
- package/dashboard/dist/assets/{Modal-CI5RBPOQ.js → Modal-_2AbWxJT.js} +2 -2
- package/dashboard/dist/assets/{Modal-CI5RBPOQ.js.map → Modal-_2AbWxJT.js.map} +1 -1
- package/dashboard/dist/assets/OperatorDashboard-BGiRaRDr.js +2 -0
- package/dashboard/dist/assets/OperatorDashboard-BGiRaRDr.js.map +1 -0
- package/dashboard/dist/assets/{PageHeader-SMD9qtOO.js → PageHeader-DVr5Qyzm.js} +2 -2
- package/dashboard/dist/assets/{PageHeader-SMD9qtOO.js.map → PageHeader-DVr5Qyzm.js.map} +1 -1
- package/dashboard/dist/assets/{PageHeaderWithStats-TikLQsTp.js → PageHeaderWithStats-D0KRASML.js} +2 -2
- package/dashboard/dist/assets/{PageHeaderWithStats-TikLQsTp.js.map → PageHeaderWithStats-D0KRASML.js.map} +1 -1
- package/dashboard/dist/assets/{PriorityBadge-CQ0EsLTA.js → PriorityBadge-Bx2559OU.js} +2 -2
- package/dashboard/dist/assets/{PriorityBadge-CQ0EsLTA.js.map → PriorityBadge-Bx2559OU.js.map} +1 -1
- package/dashboard/dist/assets/ProcessDetailPage-69I--sry.js +2 -0
- package/dashboard/dist/assets/ProcessDetailPage-69I--sry.js.map +1 -0
- package/dashboard/dist/assets/ProcessesListPage-BDpUbua2.js +2 -0
- package/dashboard/dist/assets/ProcessesListPage-BDpUbua2.js.map +1 -0
- package/dashboard/dist/assets/{RolePill-Crj4TH5p.js → RolePill-CcAqEaSt.js} +2 -2
- package/dashboard/dist/assets/{RolePill-Crj4TH5p.js.map → RolePill-CcAqEaSt.js.map} +1 -1
- package/dashboard/dist/assets/{RolesPage-C_RInUwS.js → RolesPage-Cl23Hjet.js} +2 -2
- package/dashboard/dist/assets/{RolesPage-C_RInUwS.js.map → RolesPage-Cl23Hjet.js.map} +1 -1
- package/dashboard/dist/assets/{RowActions-Cp5HyK_w.js → RowActions-B4mqIt3Z.js} +2 -2
- package/dashboard/dist/assets/{RowActions-Cp5HyK_w.js.map → RowActions-B4mqIt3Z.js.map} +1 -1
- package/dashboard/dist/assets/{StatCard-BKZLSgNV.js → StatCard-Cz_2OjAZ.js} +2 -2
- package/dashboard/dist/assets/{StatCard-BKZLSgNV.js.map → StatCard-Cz_2OjAZ.js.map} +1 -1
- package/dashboard/dist/assets/{StatusBadge-BYNGGZK5.js → StatusBadge-Wi2FJZsn.js} +2 -2
- package/dashboard/dist/assets/{StatusBadge-BYNGGZK5.js.map → StatusBadge-Wi2FJZsn.js.map} +1 -1
- package/dashboard/dist/assets/StepIndicator-PW5NRDMb.js +2 -0
- package/dashboard/dist/assets/StepIndicator-PW5NRDMb.js.map +1 -0
- package/dashboard/dist/assets/{StickyPagination-CTosgiU2.js → StickyPagination-Bl2Uzz65.js} +2 -2
- package/dashboard/dist/assets/{StickyPagination-CTosgiU2.js.map → StickyPagination-Bl2Uzz65.js.map} +1 -1
- package/dashboard/dist/assets/{SwimlaneTimeline-ylG5Ps1s.js → SwimlaneTimeline-CUPqMd0z.js} +2 -2
- package/dashboard/dist/assets/{SwimlaneTimeline-ylG5Ps1s.js.map → SwimlaneTimeline-CUPqMd0z.js.map} +1 -1
- package/dashboard/dist/assets/TagInput-BLtf86Ly.js +2 -0
- package/dashboard/dist/assets/TagInput-BLtf86Ly.js.map +1 -0
- package/dashboard/dist/assets/{TaskDetailPage-C9pDGdD2.js → TaskDetailPage-BXJFX74D.js} +2 -2
- package/dashboard/dist/assets/{TaskDetailPage-C9pDGdD2.js.map → TaskDetailPage-BXJFX74D.js.map} +1 -1
- package/dashboard/dist/assets/{TaskQueuePill-BtJbZTT0.js → TaskQueuePill-CWYj3xKe.js} +2 -2
- package/dashboard/dist/assets/{TaskQueuePill-BtJbZTT0.js.map → TaskQueuePill-CWYj3xKe.js.map} +1 -1
- package/dashboard/dist/assets/{TasksListPage-DtFLUEhg.js → TasksListPage-C3cX94Mw.js} +2 -2
- package/dashboard/dist/assets/{TasksListPage-DtFLUEhg.js.map → TasksListPage-C3cX94Mw.js.map} +1 -1
- package/dashboard/dist/assets/{TimeAgo-WuM6xImZ.js → TimeAgo-B_5yDDHV.js} +2 -2
- package/dashboard/dist/assets/{TimeAgo-WuM6xImZ.js.map → TimeAgo-B_5yDDHV.js.map} +1 -1
- package/dashboard/dist/assets/{TimestampCell-IVL_-Upy.js → TimestampCell-DRX724uU.js} +2 -2
- package/dashboard/dist/assets/{TimestampCell-IVL_-Upy.js.map → TimestampCell-DRX724uU.js.map} +1 -1
- package/dashboard/dist/assets/{UserName-DU9qeg13.js → UserName-Ca8FA469.js} +2 -2
- package/dashboard/dist/assets/{UserName-DU9qeg13.js.map → UserName-Ca8FA469.js.map} +1 -1
- package/dashboard/dist/assets/WorkflowExecutionPage-BBYWEV2P.js +2 -0
- package/dashboard/dist/assets/WorkflowExecutionPage-BBYWEV2P.js.map +1 -0
- package/dashboard/dist/assets/WorkflowPill-BXifAuLi.js +2 -0
- package/dashboard/dist/assets/{WorkflowPill-Diw8iWBP.js.map → WorkflowPill-BXifAuLi.js.map} +1 -1
- package/dashboard/dist/assets/WorkflowsDashboard-Drl3juz9.js +2 -0
- package/dashboard/dist/assets/WorkflowsDashboard-Drl3juz9.js.map +1 -0
- package/dashboard/dist/assets/{WorkflowsOverview-CPuvA4t3.js → WorkflowsOverview-03IRrDLg.js} +2 -2
- package/dashboard/dist/assets/{WorkflowsOverview-CPuvA4t3.js.map → WorkflowsOverview-03IRrDLg.js.map} +1 -1
- package/dashboard/dist/assets/YamlWorkflowsPage-DC2cLxVi.js +2 -0
- package/dashboard/dist/assets/YamlWorkflowsPage-DC2cLxVi.js.map +1 -0
- package/dashboard/dist/assets/{bots-BPiZXf2h.js → bots-DZEXcgiJ.js} +2 -2
- package/dashboard/dist/assets/{bots-BPiZXf2h.js.map → bots-DZEXcgiJ.js.map} +1 -1
- package/dashboard/dist/assets/{escalation-DTY_OKRh.js → escalation-Cw48lNaF.js} +2 -2
- package/dashboard/dist/assets/{escalation-DTY_OKRh.js.map → escalation-Cw48lNaF.js.map} +1 -1
- package/dashboard/dist/assets/{escalation-columns-C91fHSkp.js → escalation-columns-NINpo3qf.js} +2 -2
- package/dashboard/dist/assets/{escalation-columns-C91fHSkp.js.map → escalation-columns-NINpo3qf.js.map} +1 -1
- package/dashboard/dist/assets/helpers-Cuu3xKfr.js +2 -0
- package/dashboard/dist/assets/helpers-Cuu3xKfr.js.map +1 -0
- package/dashboard/dist/assets/helpers-fk_qr729.js +2 -0
- package/dashboard/dist/assets/helpers-fk_qr729.js.map +1 -0
- package/dashboard/dist/assets/index-B98ipWxE.js +2 -0
- package/dashboard/dist/assets/{index-CDWOfCmi.js.map → index-B98ipWxE.js.map} +1 -1
- package/dashboard/dist/assets/{index-D_qEAYrg.js → index-BIG3KooI.js} +2 -2
- package/dashboard/dist/assets/{index-D_qEAYrg.js.map → index-BIG3KooI.js.map} +1 -1
- package/dashboard/dist/assets/{index-DSzSoku1.js → index-BwN3KP_L.js} +91 -93
- package/dashboard/dist/assets/index-BwN3KP_L.js.map +1 -0
- package/dashboard/dist/assets/index-Bxe8h1x4.js +17 -0
- package/dashboard/dist/assets/index-Bxe8h1x4.js.map +1 -0
- package/dashboard/dist/assets/index-CNI7k7oB.js +6 -0
- package/dashboard/dist/assets/index-CNI7k7oB.js.map +1 -0
- package/dashboard/dist/assets/index-CORHB0WC.js +2 -0
- package/dashboard/dist/assets/index-CORHB0WC.js.map +1 -0
- package/dashboard/dist/assets/index-DcIKW-cZ.css +1 -0
- package/dashboard/dist/assets/index-Dj-z-x8M.js +2 -0
- package/dashboard/dist/assets/index-Dj-z-x8M.js.map +1 -0
- package/dashboard/dist/assets/index-DwRytW9O.js +5 -0
- package/dashboard/dist/assets/index-DwRytW9O.js.map +1 -0
- package/dashboard/dist/assets/index-aRvL-dXp.js +2 -0
- package/dashboard/dist/assets/index-aRvL-dXp.js.map +1 -0
- package/dashboard/dist/assets/index-b03HlbnH.js +2 -0
- package/dashboard/dist/assets/{index-BtOwLI0K.js.map → index-b03HlbnH.js.map} +1 -1
- package/dashboard/dist/assets/mcp-BZoFryNc.js +2 -0
- package/dashboard/dist/assets/mcp-BZoFryNc.js.map +1 -0
- package/dashboard/dist/assets/mcp-query-wiw1kwm8.js +2 -0
- package/dashboard/dist/assets/mcp-query-wiw1kwm8.js.map +1 -0
- package/dashboard/dist/assets/{mcp-runs-DmXYJD19.js → mcp-runs-BaEKnf5v.js} +2 -2
- package/dashboard/dist/assets/{mcp-runs-DmXYJD19.js.map → mcp-runs-BaEKnf5v.js.map} +1 -1
- package/dashboard/dist/assets/{namespaces-DoGa7jc7.js → namespaces-BwnZI4_A.js} +2 -2
- package/dashboard/dist/assets/{namespaces-DoGa7jc7.js.map → namespaces-BwnZI4_A.js.map} +1 -1
- package/dashboard/dist/assets/{roles-wCdQ2Z7k.js → roles-Bgn1K8zU.js} +2 -2
- package/dashboard/dist/assets/{roles-wCdQ2Z7k.js.map → roles-Bgn1K8zU.js.map} +1 -1
- package/dashboard/dist/assets/{settings-DDe_L7JT.js → settings-CizYiutL.js} +2 -2
- package/dashboard/dist/assets/{settings-DDe_L7JT.js.map → settings-CizYiutL.js.map} +1 -1
- package/dashboard/dist/assets/{tasks-3Hih8Bt7.js → tasks-Bmte_hc4.js} +2 -2
- package/dashboard/dist/assets/{tasks-3Hih8Bt7.js.map → tasks-Bmte_hc4.js.map} +1 -1
- package/dashboard/dist/assets/useEventHooks-CUCxpiI2.js +2 -0
- package/dashboard/dist/assets/useEventHooks-CUCxpiI2.js.map +1 -0
- package/dashboard/dist/assets/useExpandedRows-Cg9iq6Vy.js +2 -0
- package/dashboard/dist/assets/useExpandedRows-Cg9iq6Vy.js.map +1 -0
- package/dashboard/dist/assets/{useYamlActivityEvents-B5dHec6Y.js → useYamlActivityEvents-Cum02Ej9.js} +2 -2
- package/dashboard/dist/assets/useYamlActivityEvents-Cum02Ej9.js.map +1 -0
- package/dashboard/dist/assets/{users-BTagPmGW.js → users-NSDgTt-z.js} +2 -2
- package/dashboard/dist/assets/{users-BTagPmGW.js.map → users-NSDgTt-z.js.map} +1 -1
- package/dashboard/dist/assets/{vendor-icons-DCLlGYO9.js → vendor-icons-D1DdudfH.js} +141 -66
- package/dashboard/dist/assets/vendor-icons-D1DdudfH.js.map +1 -0
- package/dashboard/dist/assets/{workflows-B20dR3NE.js → workflows-k0XRdGXx.js} +2 -2
- package/dashboard/dist/assets/{workflows-B20dR3NE.js.map → workflows-k0XRdGXx.js.map} +1 -1
- package/dashboard/dist/assets/yaml-workflows-DAre8I78.js +2 -0
- package/dashboard/dist/assets/yaml-workflows-DAre8I78.js.map +1 -0
- package/dashboard/dist/index.html +3 -3
- package/docs/api/mcp-servers.md +60 -2
- package/docs/architecture.md +3 -3
- package/docs/dashboard.md +1 -1
- package/docs/epic-integration.md +224 -0
- package/docs/escalation-strategies.md +2 -3
- package/docs/events.md +28 -0
- package/docs/mcp.md +301 -31
- package/docs/sdk.md +177 -0
- package/docs/story.md +157 -0
- package/docs/workflow-builder.md +371 -0
- package/package.json +5 -4
- package/build/routes/escalations/helpers.d.ts +0 -5
- package/build/routes/resolve.d.ts +0 -9
- package/build/routes/resolve.js +0 -19
- package/build/routes/yaml-workflows/helpers.d.ts +0 -2
- package/build/routes/yaml-workflows/helpers.js +0 -8
- package/dashboard/dist/assets/AdminDashboard-CTyAMUJR.js +0 -2
- package/dashboard/dist/assets/AvailableEscalationsPage-BMXV3Q4l.js +0 -2
- package/dashboard/dist/assets/AvailableEscalationsPage-BMXV3Q4l.js.map +0 -1
- package/dashboard/dist/assets/BotPicker-C51nKFEu.js +0 -2
- package/dashboard/dist/assets/CredentialsPage-CoBNFSAu.js +0 -2
- package/dashboard/dist/assets/CredentialsPage-CoBNFSAu.js.map +0 -1
- package/dashboard/dist/assets/McpQueryDetailPage-CGoR9XK6.js +0 -5
- package/dashboard/dist/assets/McpQueryDetailPage-CGoR9XK6.js.map +0 -1
- package/dashboard/dist/assets/McpQueryPage-BjXoYQuU.js +0 -2
- package/dashboard/dist/assets/McpQueryPage-BjXoYQuU.js.map +0 -1
- package/dashboard/dist/assets/McpRunDetailPage-DLkA5Aar.js +0 -2
- package/dashboard/dist/assets/McpRunDetailPage-DLkA5Aar.js.map +0 -1
- package/dashboard/dist/assets/McpRunsPage-DCh9n11D.js +0 -2
- package/dashboard/dist/assets/McpRunsPage-DCh9n11D.js.map +0 -1
- package/dashboard/dist/assets/OperatorDashboard-Dc80suXd.js +0 -2
- package/dashboard/dist/assets/OperatorDashboard-Dc80suXd.js.map +0 -1
- package/dashboard/dist/assets/ProcessDetailPage-B2GKuGzk.js +0 -2
- package/dashboard/dist/assets/ProcessDetailPage-B2GKuGzk.js.map +0 -1
- package/dashboard/dist/assets/ProcessesListPage-CTjI3Wn6.js +0 -2
- package/dashboard/dist/assets/ProcessesListPage-CTjI3Wn6.js.map +0 -1
- package/dashboard/dist/assets/RefreshButton-BcQDObrv.js +0 -2
- package/dashboard/dist/assets/RefreshButton-BcQDObrv.js.map +0 -1
- package/dashboard/dist/assets/RunAsSelector-BhyWtofX.js +0 -2
- package/dashboard/dist/assets/RunAsSelector-BhyWtofX.js.map +0 -1
- package/dashboard/dist/assets/WorkflowExecutionPage-DOocX81f.js +0 -2
- package/dashboard/dist/assets/WorkflowExecutionPage-DOocX81f.js.map +0 -1
- package/dashboard/dist/assets/WorkflowPill-Diw8iWBP.js +0 -2
- package/dashboard/dist/assets/WorkflowsDashboard-DDtUIrTy.js +0 -2
- package/dashboard/dist/assets/WorkflowsDashboard-DDtUIrTy.js.map +0 -1
- package/dashboard/dist/assets/YamlWorkflowsPage-DlwwkluN.js +0 -2
- package/dashboard/dist/assets/YamlWorkflowsPage-DlwwkluN.js.map +0 -1
- package/dashboard/dist/assets/helpers-DBUZ9pnG.js +0 -2
- package/dashboard/dist/assets/helpers-DBUZ9pnG.js.map +0 -1
- package/dashboard/dist/assets/index-BOeA-gfK.js +0 -17
- package/dashboard/dist/assets/index-BOeA-gfK.js.map +0 -1
- package/dashboard/dist/assets/index-BZ6K_kmL.js +0 -3
- package/dashboard/dist/assets/index-BZ6K_kmL.js.map +0 -1
- package/dashboard/dist/assets/index-Bpm0yeoi.js +0 -2
- package/dashboard/dist/assets/index-Bpm0yeoi.js.map +0 -1
- package/dashboard/dist/assets/index-BtOwLI0K.js +0 -2
- package/dashboard/dist/assets/index-CBF3ZvRZ.js +0 -6
- package/dashboard/dist/assets/index-CBF3ZvRZ.js.map +0 -1
- package/dashboard/dist/assets/index-CDWOfCmi.js +0 -2
- package/dashboard/dist/assets/index-Ce6sL__n.js +0 -2
- package/dashboard/dist/assets/index-Ce6sL__n.js.map +0 -1
- package/dashboard/dist/assets/index-DSzSoku1.js.map +0 -1
- package/dashboard/dist/assets/index-gCy9XX3W.css +0 -1
- package/dashboard/dist/assets/mcp-BzVpaaKF.js +0 -2
- package/dashboard/dist/assets/mcp-BzVpaaKF.js.map +0 -1
- package/dashboard/dist/assets/mcp-query-wTuxTTCV.js +0 -2
- package/dashboard/dist/assets/mcp-query-wTuxTTCV.js.map +0 -1
- package/dashboard/dist/assets/useNatsEvents-DeGKHFTX.js +0 -2
- package/dashboard/dist/assets/useNatsEvents-DeGKHFTX.js.map +0 -1
- package/dashboard/dist/assets/useYamlActivityEvents-B5dHec6Y.js.map +0 -1
- package/dashboard/dist/assets/vendor-icons-DCLlGYO9.js.map +0 -1
- package/dashboard/dist/assets/yaml-workflows-CaLPMQha.js +0 -2
- package/dashboard/dist/assets/yaml-workflows-CaLPMQha.js.map +0 -1
- package/docs/img/01-login.png +0 -0
- package/docs/img/02-dashboard-home.png +0 -0
- package/docs/img/03-processes-list.png +0 -0
- package/docs/img/04-escalations-list.png +0 -0
- package/docs/img/05-mcp-servers.png +0 -0
- package/docs/img/06-mcp-pipelines.png +0 -0
- package/docs/img/07-workflows-list.png +0 -0
- package/docs/img/compilation/01-query-submit.png +0 -0
- package/docs/img/compilation/02-mcp-servers.png +0 -0
- package/docs/img/compilation/03-query-completed.png +0 -0
- package/docs/img/compilation/04-wizard-original.png +0 -0
- package/docs/img/compilation/05-wizard-timeline.png +0 -0
- package/docs/img/compilation/06-wizard-profile.png +0 -0
- package/docs/img/compilation/07-wizard-deploy.png +0 -0
- package/docs/img/compilation/08-wizard-test-modal.png +0 -0
- package/docs/img/compilation/09-wizard-test-compare.png +0 -0
- package/docs/img/compilation/10-wizard-verify.png +0 -0
- package/lib/db/README.md +0 -8
- /package/{lib → build/lib}/db/schemas/002_seed.sql +0 -0
- /package/{lib → build/lib}/db/schemas/003_workflow_discovery.sql +0 -0
- /package/{lib → build/lib}/db/schemas/004_query_router.sql +0 -0
- /package/{lib → build/lib}/db/schemas/005_triage_router.sql +0 -0
- /package/{lib → build/lib}/db/schemas/006_oauth.sql +0 -0
- /package/{lib → build/lib}/db/schemas/007_security.sql +0 -0
- /package/{lib → build/lib}/db/schemas/008_bot_accounts.sql +0 -0
- /package/{lib → build/lib}/db/schemas/009_audit_trail.sql +0 -0
- /package/{lib → build/lib}/db/schemas/010_credential_providers.sql +0 -0
- /package/{lib → build/lib}/db/schemas/012_drop_modality.sql +0 -0
- /package/{lib → build/lib}/db/schemas/013_execute_as.sql +0 -0
- /package/{lib → build/lib}/db/schemas/014_ephemeral_credentials.sql +0 -0
- /package/{lib → build/lib}/db/schemas/015_knowledge.sql +0 -0
|
@@ -13,25 +13,25 @@ export declare const loginAndCaptureSchema: z.ZodObject<{
|
|
|
13
13
|
}, "strip", z.ZodTypeAny, {
|
|
14
14
|
password: string;
|
|
15
15
|
url: string;
|
|
16
|
-
username_selector: string;
|
|
17
|
-
password_selector: string;
|
|
18
16
|
username: string;
|
|
19
17
|
submit_selector: string;
|
|
18
|
+
username_selector: string;
|
|
19
|
+
password_selector: string;
|
|
20
|
+
screenshot_path?: string | undefined;
|
|
20
21
|
timeout?: number | undefined;
|
|
21
22
|
full_page?: boolean | undefined;
|
|
22
23
|
wait_after_login?: string | undefined;
|
|
23
|
-
screenshot_path?: string | undefined;
|
|
24
24
|
}, {
|
|
25
25
|
password: string;
|
|
26
26
|
url: string;
|
|
27
|
-
username_selector: string;
|
|
28
|
-
password_selector: string;
|
|
29
27
|
username: string;
|
|
30
28
|
submit_selector: string;
|
|
29
|
+
username_selector: string;
|
|
30
|
+
password_selector: string;
|
|
31
|
+
screenshot_path?: string | undefined;
|
|
31
32
|
timeout?: number | undefined;
|
|
32
33
|
full_page?: boolean | undefined;
|
|
33
34
|
wait_after_login?: string | undefined;
|
|
34
|
-
screenshot_path?: string | undefined;
|
|
35
35
|
}>;
|
|
36
36
|
export declare const capturePageSchema: z.ZodObject<{
|
|
37
37
|
url: z.ZodString;
|
|
@@ -44,22 +44,22 @@ export declare const capturePageSchema: z.ZodObject<{
|
|
|
44
44
|
timeout: z.ZodOptional<z.ZodNumber>;
|
|
45
45
|
}, "strip", z.ZodTypeAny, {
|
|
46
46
|
url: string;
|
|
47
|
-
timeout?: number | undefined;
|
|
48
47
|
page_id?: string | undefined;
|
|
48
|
+
screenshot_path?: string | undefined;
|
|
49
49
|
wait_until?: "load" | "domcontentloaded" | "networkidle" | undefined;
|
|
50
|
+
timeout?: number | undefined;
|
|
51
|
+
wait_ms?: number | undefined;
|
|
50
52
|
full_page?: boolean | undefined;
|
|
51
|
-
screenshot_path?: string | undefined;
|
|
52
53
|
wait_for_selector?: string | undefined;
|
|
53
|
-
wait_ms?: number | undefined;
|
|
54
54
|
}, {
|
|
55
55
|
url: string;
|
|
56
|
-
timeout?: number | undefined;
|
|
57
56
|
page_id?: string | undefined;
|
|
57
|
+
screenshot_path?: string | undefined;
|
|
58
58
|
wait_until?: "load" | "domcontentloaded" | "networkidle" | undefined;
|
|
59
|
+
timeout?: number | undefined;
|
|
60
|
+
wait_ms?: number | undefined;
|
|
59
61
|
full_page?: boolean | undefined;
|
|
60
|
-
screenshot_path?: string | undefined;
|
|
61
62
|
wait_for_selector?: string | undefined;
|
|
62
|
-
wait_ms?: number | undefined;
|
|
63
63
|
}>;
|
|
64
64
|
export declare const captureAuthenticatedPagesSchema: z.ZodObject<{
|
|
65
65
|
login: z.ZodObject<{
|
|
@@ -74,19 +74,19 @@ export declare const captureAuthenticatedPagesSchema: z.ZodObject<{
|
|
|
74
74
|
}, "strip", z.ZodTypeAny, {
|
|
75
75
|
password: string;
|
|
76
76
|
url: string;
|
|
77
|
-
username_selector: string;
|
|
78
|
-
password_selector: string;
|
|
79
77
|
username: string;
|
|
80
78
|
submit_selector: string;
|
|
79
|
+
username_selector: string;
|
|
80
|
+
password_selector: string;
|
|
81
81
|
timeout?: number | undefined;
|
|
82
82
|
wait_after_login?: string | undefined;
|
|
83
83
|
}, {
|
|
84
84
|
password: string;
|
|
85
85
|
url: string;
|
|
86
|
-
username_selector: string;
|
|
87
|
-
password_selector: string;
|
|
88
86
|
username: string;
|
|
89
87
|
submit_selector: string;
|
|
88
|
+
username_selector: string;
|
|
89
|
+
password_selector: string;
|
|
90
90
|
timeout?: number | undefined;
|
|
91
91
|
wait_after_login?: string | undefined;
|
|
92
92
|
}>;
|
|
@@ -99,51 +99,51 @@ export declare const captureAuthenticatedPagesSchema: z.ZodObject<{
|
|
|
99
99
|
}, "strip", z.ZodTypeAny, {
|
|
100
100
|
url: string;
|
|
101
101
|
screenshot_path: string;
|
|
102
|
+
wait_ms?: number | undefined;
|
|
102
103
|
full_page?: boolean | undefined;
|
|
103
104
|
wait_for_selector?: string | undefined;
|
|
104
|
-
wait_ms?: number | undefined;
|
|
105
105
|
}, {
|
|
106
106
|
url: string;
|
|
107
107
|
screenshot_path: string;
|
|
108
|
+
wait_ms?: number | undefined;
|
|
108
109
|
full_page?: boolean | undefined;
|
|
109
110
|
wait_for_selector?: string | undefined;
|
|
110
|
-
wait_ms?: number | undefined;
|
|
111
111
|
}>, "many">;
|
|
112
112
|
}, "strip", z.ZodTypeAny, {
|
|
113
113
|
login: {
|
|
114
114
|
password: string;
|
|
115
115
|
url: string;
|
|
116
|
-
username_selector: string;
|
|
117
|
-
password_selector: string;
|
|
118
116
|
username: string;
|
|
119
117
|
submit_selector: string;
|
|
118
|
+
username_selector: string;
|
|
119
|
+
password_selector: string;
|
|
120
120
|
timeout?: number | undefined;
|
|
121
121
|
wait_after_login?: string | undefined;
|
|
122
122
|
};
|
|
123
123
|
pages: {
|
|
124
124
|
url: string;
|
|
125
125
|
screenshot_path: string;
|
|
126
|
+
wait_ms?: number | undefined;
|
|
126
127
|
full_page?: boolean | undefined;
|
|
127
128
|
wait_for_selector?: string | undefined;
|
|
128
|
-
wait_ms?: number | undefined;
|
|
129
129
|
}[];
|
|
130
130
|
}, {
|
|
131
131
|
login: {
|
|
132
132
|
password: string;
|
|
133
133
|
url: string;
|
|
134
|
-
username_selector: string;
|
|
135
|
-
password_selector: string;
|
|
136
134
|
username: string;
|
|
137
135
|
submit_selector: string;
|
|
136
|
+
username_selector: string;
|
|
137
|
+
password_selector: string;
|
|
138
138
|
timeout?: number | undefined;
|
|
139
139
|
wait_after_login?: string | undefined;
|
|
140
140
|
};
|
|
141
141
|
pages: {
|
|
142
142
|
url: string;
|
|
143
143
|
screenshot_path: string;
|
|
144
|
+
wait_ms?: number | undefined;
|
|
144
145
|
full_page?: boolean | undefined;
|
|
145
146
|
wait_for_selector?: string | undefined;
|
|
146
|
-
wait_ms?: number | undefined;
|
|
147
147
|
}[];
|
|
148
148
|
}>;
|
|
149
149
|
export declare const extractContentSchema: z.ZodObject<{
|
|
@@ -157,25 +157,25 @@ export declare const extractContentSchema: z.ZodObject<{
|
|
|
157
157
|
wait_ms: z.ZodOptional<z.ZodNumber>;
|
|
158
158
|
timeout: z.ZodOptional<z.ZodNumber>;
|
|
159
159
|
}, "strip", z.ZodTypeAny, {
|
|
160
|
-
url?: string | undefined;
|
|
161
|
-
timeout?: number | undefined;
|
|
162
160
|
page_id?: string | undefined;
|
|
161
|
+
url?: string | undefined;
|
|
163
162
|
selector?: string | undefined;
|
|
164
|
-
|
|
165
|
-
wait_for_selector?: string | undefined;
|
|
163
|
+
timeout?: number | undefined;
|
|
166
164
|
wait_ms?: number | undefined;
|
|
167
165
|
extract_links?: boolean | undefined;
|
|
168
166
|
extract_metadata?: boolean | undefined;
|
|
167
|
+
script?: string | undefined;
|
|
168
|
+
wait_for_selector?: string | undefined;
|
|
169
169
|
}, {
|
|
170
|
-
url?: string | undefined;
|
|
171
|
-
timeout?: number | undefined;
|
|
172
170
|
page_id?: string | undefined;
|
|
171
|
+
url?: string | undefined;
|
|
173
172
|
selector?: string | undefined;
|
|
174
|
-
|
|
175
|
-
wait_for_selector?: string | undefined;
|
|
173
|
+
timeout?: number | undefined;
|
|
176
174
|
wait_ms?: number | undefined;
|
|
177
175
|
extract_links?: boolean | undefined;
|
|
178
176
|
extract_metadata?: boolean | undefined;
|
|
177
|
+
script?: string | undefined;
|
|
178
|
+
wait_for_selector?: string | undefined;
|
|
179
179
|
}>;
|
|
180
180
|
export declare const submitFormSchema: z.ZodObject<{
|
|
181
181
|
url: z.ZodString;
|
|
@@ -201,9 +201,9 @@ export declare const submitFormSchema: z.ZodObject<{
|
|
|
201
201
|
value: string;
|
|
202
202
|
selector: string;
|
|
203
203
|
}[];
|
|
204
|
+
screenshot_path?: string | undefined;
|
|
204
205
|
timeout?: number | undefined;
|
|
205
206
|
full_page?: boolean | undefined;
|
|
206
|
-
screenshot_path?: string | undefined;
|
|
207
207
|
wait_after_submit?: string | undefined;
|
|
208
208
|
}, {
|
|
209
209
|
url: string;
|
|
@@ -212,8 +212,8 @@ export declare const submitFormSchema: z.ZodObject<{
|
|
|
212
212
|
value: string;
|
|
213
213
|
selector: string;
|
|
214
214
|
}[];
|
|
215
|
+
screenshot_path?: string | undefined;
|
|
215
216
|
timeout?: number | undefined;
|
|
216
217
|
full_page?: boolean | undefined;
|
|
217
|
-
screenshot_path?: string | undefined;
|
|
218
218
|
wait_after_submit?: string | undefined;
|
|
219
219
|
}>;
|
|
@@ -84,7 +84,7 @@ function registerCaptureTools(srv) {
|
|
|
84
84
|
await page.waitForTimeout(args.wait_ms ?? 2000);
|
|
85
85
|
}
|
|
86
86
|
// Auto-derive screenshot path from URL if not provided
|
|
87
|
-
|
|
87
|
+
let screenshotPath = args.screenshot_path || (() => {
|
|
88
88
|
try {
|
|
89
89
|
const urlPath = new URL(args.url).pathname;
|
|
90
90
|
const slug = urlPath === '/' ? 'home' : urlPath.replace(/^\/+|\/+$/g, '').replace(/\//g, '-');
|
|
@@ -94,6 +94,10 @@ function registerCaptureTools(srv) {
|
|
|
94
94
|
return `screenshots/capture-${Date.now()}.png`;
|
|
95
95
|
}
|
|
96
96
|
})();
|
|
97
|
+
// Ensure file extension — storage backends require mime type
|
|
98
|
+
if (!path.extname(screenshotPath)) {
|
|
99
|
+
screenshotPath += '.png';
|
|
100
|
+
}
|
|
97
101
|
const screenshot = await (0, helpers_1.saveScreenshot)(page, screenshotPath, args.full_page ?? true);
|
|
98
102
|
return {
|
|
99
103
|
content: [{
|
|
@@ -32,12 +32,16 @@ var __importStar = (this && this.__importStar) || (function () {
|
|
|
32
32
|
return result;
|
|
33
33
|
};
|
|
34
34
|
})();
|
|
35
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
36
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
37
|
+
};
|
|
35
38
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
39
|
exports.createVisionServer = createVisionServer;
|
|
37
40
|
exports.stopVisionServer = stopVisionServer;
|
|
38
41
|
const path = __importStar(require("path"));
|
|
39
42
|
const mcp_js_1 = require("@modelcontextprotocol/sdk/server/mcp.js");
|
|
40
43
|
const zod_1 = require("zod");
|
|
44
|
+
const sharp_1 = __importDefault(require("sharp"));
|
|
41
45
|
const llm_1 = require("../../services/llm");
|
|
42
46
|
const defaults_1 = require("../../modules/defaults");
|
|
43
47
|
const logger_1 = require("../../lib/logger");
|
|
@@ -47,6 +51,8 @@ const MIME_MAP = {
|
|
|
47
51
|
'.png': 'image/png', '.jpg': 'image/jpeg', '.jpeg': 'image/jpeg',
|
|
48
52
|
'.gif': 'image/gif', '.webp': 'image/webp', '.svg': 'image/svg+xml',
|
|
49
53
|
};
|
|
54
|
+
/** Max dimension for LLM vision APIs (Anthropic limit is 8000px). */
|
|
55
|
+
const MAX_IMAGE_DIMENSION = 7680;
|
|
50
56
|
const analyzeImageSchema = zod_1.z.object({
|
|
51
57
|
image: zod_1.z.string().describe('Image source: a storage path (e.g. "amazon_initial.png"), ' +
|
|
52
58
|
'a data URI (data:image/png;base64,...), or an https:// URL.'),
|
|
@@ -77,10 +83,25 @@ async function resolveImageContent(image) {
|
|
|
77
83
|
const storagePath = image.replace(/^file:\/\//, '');
|
|
78
84
|
const backend = (0, storage_1.getStorageBackend)();
|
|
79
85
|
const { data } = await backend.read(storagePath);
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
86
|
+
// Downscale if any dimension exceeds the LLM vision limit
|
|
87
|
+
let imageBuffer = data;
|
|
88
|
+
let outputMime = MIME_MAP[path.extname(storagePath).toLowerCase()] || 'image/png';
|
|
89
|
+
try {
|
|
90
|
+
const meta = await (0, sharp_1.default)(data).metadata();
|
|
91
|
+
if (meta.width && meta.height && (meta.width > MAX_IMAGE_DIMENSION || meta.height > MAX_IMAGE_DIMENSION)) {
|
|
92
|
+
logger_1.loggerRegistry.info(`[lt-mcp:vision] resizing ${meta.width}x${meta.height} -> fit ${MAX_IMAGE_DIMENSION}px`);
|
|
93
|
+
imageBuffer = await (0, sharp_1.default)(data)
|
|
94
|
+
.resize({ width: MAX_IMAGE_DIMENSION, height: MAX_IMAGE_DIMENSION, fit: 'inside' })
|
|
95
|
+
.png()
|
|
96
|
+
.toBuffer();
|
|
97
|
+
outputMime = 'image/png';
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
catch (err) {
|
|
101
|
+
logger_1.loggerRegistry.warn(`[lt-mcp:vision] could not check/resize image: ${err.message}`);
|
|
102
|
+
}
|
|
103
|
+
const base64 = imageBuffer.toString('base64');
|
|
104
|
+
return { type: 'image_url', image_url: { url: `data:${outputMime};base64,${base64}` } };
|
|
84
105
|
}
|
|
85
106
|
function registerTools(srv) {
|
|
86
107
|
// ── analyze_image ───────────────────────────────────────────────
|
|
@@ -106,19 +127,35 @@ function registerTools(srv) {
|
|
|
106
127
|
const systemPrompt = args.prompt
|
|
107
128
|
? `${vision_prompts_1.ANALYZE_IMAGE_PROMPT}\n\nAdditional guidance: ${args.prompt}`
|
|
108
129
|
: vision_prompts_1.ANALYZE_IMAGE_PROMPT;
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
content:
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
130
|
+
let response;
|
|
131
|
+
try {
|
|
132
|
+
const imageContent = await resolveImageContent(args.image || args.image_path);
|
|
133
|
+
response = await (0, llm_1.callLLM)({
|
|
134
|
+
model: defaults_1.LLM_MODEL_SECONDARY,
|
|
135
|
+
messages: [
|
|
136
|
+
{ role: 'system', content: systemPrompt },
|
|
137
|
+
{ role: 'user', content: [imageContent] },
|
|
138
|
+
],
|
|
139
|
+
max_tokens: defaults_1.LLM_MAX_TOKENS_VISION,
|
|
140
|
+
temperature: 0,
|
|
141
|
+
});
|
|
142
|
+
}
|
|
143
|
+
catch (err) {
|
|
144
|
+
logger_1.loggerRegistry.error(`[lt-mcp:vision] analyze_image failed: ${err.message}`);
|
|
145
|
+
return {
|
|
146
|
+
content: [{
|
|
147
|
+
type: 'text',
|
|
148
|
+
text: JSON.stringify({
|
|
149
|
+
error: err.message,
|
|
150
|
+
description: null,
|
|
151
|
+
text_content: null,
|
|
152
|
+
objects: [],
|
|
153
|
+
}),
|
|
154
|
+
}],
|
|
155
|
+
};
|
|
156
|
+
}
|
|
121
157
|
const raw = response.content || '';
|
|
158
|
+
logger_1.loggerRegistry.info(`[lt-mcp:vision] analyze_image response length: ${raw.length}`);
|
|
122
159
|
try {
|
|
123
160
|
const cleaned = raw.replace(/^```json\n?|\n?```$/g, '').trim();
|
|
124
161
|
const parsed = JSON.parse(cleaned);
|
|
@@ -173,7 +210,7 @@ function registerTools(srv) {
|
|
|
173
210
|
{ role: 'system', content: systemPrompt },
|
|
174
211
|
{
|
|
175
212
|
role: 'user',
|
|
176
|
-
content: [await resolveImageContent(args.image)],
|
|
213
|
+
content: [await resolveImageContent(args.image || args.image_path)],
|
|
177
214
|
},
|
|
178
215
|
],
|
|
179
216
|
max_tokens: defaults_1.LLM_MAX_TOKENS_VISION,
|
|
@@ -1180,10 +1180,12 @@ export declare const SEED_MCP_SERVERS: ({
|
|
|
1180
1180
|
prompt: {
|
|
1181
1181
|
type: string;
|
|
1182
1182
|
description: string;
|
|
1183
|
+
default: string;
|
|
1183
1184
|
};
|
|
1184
1185
|
working_directory: {
|
|
1185
1186
|
type: string;
|
|
1186
1187
|
description: string;
|
|
1188
|
+
default: string;
|
|
1187
1189
|
};
|
|
1188
1190
|
allowed_tools: {
|
|
1189
1191
|
type: string;
|
|
@@ -1191,14 +1193,17 @@ export declare const SEED_MCP_SERVERS: ({
|
|
|
1191
1193
|
type: string;
|
|
1192
1194
|
};
|
|
1193
1195
|
description: string;
|
|
1196
|
+
default: string[];
|
|
1194
1197
|
};
|
|
1195
1198
|
max_turns: {
|
|
1196
1199
|
type: string;
|
|
1197
1200
|
description: string;
|
|
1201
|
+
default: number;
|
|
1198
1202
|
};
|
|
1199
1203
|
model: {
|
|
1200
1204
|
type: string;
|
|
1201
1205
|
description: string;
|
|
1206
|
+
default: string;
|
|
1202
1207
|
};
|
|
1203
1208
|
system_prompt: {
|
|
1204
1209
|
type: string;
|
|
@@ -1207,10 +1212,12 @@ export declare const SEED_MCP_SERVERS: ({
|
|
|
1207
1212
|
timeout_ms: {
|
|
1208
1213
|
type: string;
|
|
1209
1214
|
description: string;
|
|
1215
|
+
default: number;
|
|
1210
1216
|
};
|
|
1211
1217
|
credential_label: {
|
|
1212
1218
|
type: string;
|
|
1213
1219
|
description: string;
|
|
1220
|
+
default: string;
|
|
1214
1221
|
};
|
|
1215
1222
|
};
|
|
1216
1223
|
required: string[];
|
|
@@ -51,8 +51,9 @@ exports.SEED_MCP_SERVERS = [
|
|
|
51
51
|
tags: ['vision', 'image-analysis', 'multimodal'],
|
|
52
52
|
compile_hints: [
|
|
53
53
|
'Vision tools process one image at a time. When iterating over multiple images, each iteration should pass a single image URL or data URI.',
|
|
54
|
-
'The `image`
|
|
54
|
+
'The argument name is `image` (NOT `image_path`). It accepts a storage path (e.g., "screenshot.png"), a data URI, or an https:// URL. When following a screenshot or capture_page step, wire `image` from the producing step output field `path`. NEVER make `image` a trigger input when the image is produced by a prior step.',
|
|
55
55
|
'Vision tools do NOT use browser sessions. Do NOT wire page_id or _handle to vision tools — they read from storage, not from the browser.',
|
|
56
|
+
'analyze_image output fields: description (string), text_content (string), objects (array). The main analysis text is in `description` — NOT `analysis` or `content`.',
|
|
56
57
|
].join(' '),
|
|
57
58
|
credential_providers: ['anthropic'],
|
|
58
59
|
},
|
|
@@ -88,6 +89,7 @@ exports.SEED_MCP_SERVERS = [
|
|
|
88
89
|
'capture_authenticated_pages expects a `login` object and a `pages` array. The `login` object contains nested fields (url, username, password, selectors) — flatten credentials as dynamic trigger inputs but keep the object structure in stored tool_arguments. The `pages` array should flow from a transform edge that reshapes `links` into [{url, screenshot_path, wait_ms, full_page}].',
|
|
89
90
|
'For screenshot_path derivation in transforms, use the `screenshot_dir` trigger input as a dynamic prefix (not hardcoded). Derivation strategy: slugify the href, prepend screenshot_dir + "/", append ".png".',
|
|
90
91
|
'When login_and_capture follows a signal hook (human input), wire the password from the hook output to the `password` argument. Wire `url` and `username` from trigger inputs.',
|
|
92
|
+
'capture_page screenshot_path MUST include a file extension (e.g., .png). When deriving screenshot_path from a slug or identifier, always append ".png" using a concat derivation: { "strategy": "concat", "parts": ["{value}", ".png"] }. For date-stamped paths use: { "strategy": "concat", "parts": ["{value}", "-", "{date}", ".png"] }.',
|
|
91
93
|
].join(' '),
|
|
92
94
|
credential_providers: [],
|
|
93
95
|
},
|
|
@@ -181,7 +183,9 @@ exports.SEED_MCP_SERVERS = [
|
|
|
181
183
|
tool_manifest: tool_manifests_knowledge_1.KNOWLEDGE_TOOLS,
|
|
182
184
|
metadata: { builtin: true, category: 'knowledge' },
|
|
183
185
|
tags: ['knowledge', 'memory', 'state', 'storage'],
|
|
184
|
-
compile_hints: 'store_knowledge
|
|
186
|
+
compile_hints: 'store_knowledge arguments: domain (string), key (string), data (object — MUST be a JSON object, never a string), tags (optional string[]). ' +
|
|
187
|
+
'The data field is a JSONB object. When storing text content, wrap it: { "description": "the text" }. NEVER pass a bare string as data. ' +
|
|
188
|
+
'store_knowledge upserts by domain+key — it merges data if the entry exists. ' +
|
|
185
189
|
'Use a consistent domain name across related workflows to build shared context. ' +
|
|
186
190
|
'search_knowledge uses JSONB containment (@>) — the query object must be a subset of the stored data. ' +
|
|
187
191
|
'append_knowledge adds to arrays without replacing existing entries — ideal for catalogs and logs. ' +
|
|
@@ -156,10 +156,12 @@ export declare const CLAUDE_CODE_TOOLS: ({
|
|
|
156
156
|
prompt: {
|
|
157
157
|
type: string;
|
|
158
158
|
description: string;
|
|
159
|
+
default: string;
|
|
159
160
|
};
|
|
160
161
|
working_directory: {
|
|
161
162
|
type: string;
|
|
162
163
|
description: string;
|
|
164
|
+
default: string;
|
|
163
165
|
};
|
|
164
166
|
allowed_tools: {
|
|
165
167
|
type: string;
|
|
@@ -167,14 +169,17 @@ export declare const CLAUDE_CODE_TOOLS: ({
|
|
|
167
169
|
type: string;
|
|
168
170
|
};
|
|
169
171
|
description: string;
|
|
172
|
+
default: string[];
|
|
170
173
|
};
|
|
171
174
|
max_turns: {
|
|
172
175
|
type: string;
|
|
173
176
|
description: string;
|
|
177
|
+
default: number;
|
|
174
178
|
};
|
|
175
179
|
model: {
|
|
176
180
|
type: string;
|
|
177
181
|
description: string;
|
|
182
|
+
default: string;
|
|
178
183
|
};
|
|
179
184
|
system_prompt: {
|
|
180
185
|
type: string;
|
|
@@ -183,10 +188,12 @@ export declare const CLAUDE_CODE_TOOLS: ({
|
|
|
183
188
|
timeout_ms: {
|
|
184
189
|
type: string;
|
|
185
190
|
description: string;
|
|
191
|
+
default: number;
|
|
186
192
|
};
|
|
187
193
|
credential_label: {
|
|
188
194
|
type: string;
|
|
189
195
|
description: string;
|
|
196
|
+
default: string;
|
|
190
197
|
};
|
|
191
198
|
};
|
|
192
199
|
required: string[];
|
|
@@ -91,23 +91,28 @@ exports.CLAUDE_CODE_TOOLS = [
|
|
|
91
91
|
prompt: {
|
|
92
92
|
type: 'string',
|
|
93
93
|
description: 'The task prompt. Be specific and actionable.',
|
|
94
|
+
default: 'List the files in the current directory and describe what this project does in 2 sentences.',
|
|
94
95
|
},
|
|
95
96
|
working_directory: {
|
|
96
97
|
type: 'string',
|
|
97
|
-
description: 'Working directory for the task. Defaults to
|
|
98
|
+
description: 'Working directory for the task. Defaults to /app (container root).',
|
|
99
|
+
default: '/app',
|
|
98
100
|
},
|
|
99
101
|
allowed_tools: {
|
|
100
102
|
type: 'array',
|
|
101
103
|
items: { type: 'string' },
|
|
102
|
-
description: 'Restrict which tools Claude Code can use (e.g., ["Read", "Grep"]).',
|
|
104
|
+
description: 'Restrict which tools Claude Code can use (e.g., ["Read", "Grep", "Glob", "Bash"]).',
|
|
105
|
+
default: ['Read', 'Glob', 'Grep', 'Bash'],
|
|
103
106
|
},
|
|
104
107
|
max_turns: {
|
|
105
108
|
type: 'number',
|
|
106
109
|
description: 'Maximum agentic turns before stopping.',
|
|
110
|
+
default: 5,
|
|
107
111
|
},
|
|
108
112
|
model: {
|
|
109
113
|
type: 'string',
|
|
110
114
|
description: 'Override the Claude model (e.g., "claude-sonnet-4-6").',
|
|
115
|
+
default: 'claude-sonnet-4-6',
|
|
111
116
|
},
|
|
112
117
|
system_prompt: {
|
|
113
118
|
type: 'string',
|
|
@@ -116,10 +121,12 @@ exports.CLAUDE_CODE_TOOLS = [
|
|
|
116
121
|
timeout_ms: {
|
|
117
122
|
type: 'number',
|
|
118
123
|
description: 'Execution timeout in ms. Default: 120000, max: 300000.',
|
|
124
|
+
default: 120000,
|
|
119
125
|
},
|
|
120
126
|
credential_label: {
|
|
121
127
|
type: 'string',
|
|
122
|
-
description: 'Label of the stored Anthropic credential to use (e.g., "subscription", "api-batch").
|
|
128
|
+
description: 'Label of the stored Anthropic credential to use (e.g., "subscription", "api-batch").',
|
|
129
|
+
default: 'default',
|
|
123
130
|
},
|
|
124
131
|
},
|
|
125
132
|
required: ['prompt'],
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { ToolDefinition } from '../../../../services/llm';
|
|
2
|
+
/** Maps qualified tool name -> MCP server name for routing calls */
|
|
3
|
+
export declare const toolServerMap: Map<string, string>;
|
|
4
|
+
/** Maps qualified tool name -> full tool definition */
|
|
5
|
+
export declare const toolDefCache: Map<string, ToolDefinition>;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.toolDefCache = exports.toolServerMap = void 0;
|
|
4
|
+
// ── Tool caches (module-level, persist across proxy activity calls) ──
|
|
5
|
+
/** Maps qualified tool name -> MCP server name for routing calls */
|
|
6
|
+
exports.toolServerMap = new Map();
|
|
7
|
+
/** Maps qualified tool name -> full tool definition */
|
|
8
|
+
exports.toolDefCache = new Map();
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.callBuilderLLM = exports.loadReferenceSection = exports.loadBuilderTools = void 0;
|
|
4
|
+
var tool_loader_1 = require("./tool-loader");
|
|
5
|
+
Object.defineProperty(exports, "loadBuilderTools", { enumerable: true, get: function () { return tool_loader_1.loadBuilderTools; } });
|
|
6
|
+
Object.defineProperty(exports, "loadReferenceSection", { enumerable: true, get: function () { return tool_loader_1.loadReferenceSection; } });
|
|
7
|
+
var llm_1 = require("./llm");
|
|
8
|
+
Object.defineProperty(exports, "callBuilderLLM", { enumerable: true, get: function () { return llm_1.callBuilderLLM; } });
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.callBuilderLLM = callBuilderLLM;
|
|
4
|
+
const llm_1 = require("../../../../services/llm");
|
|
5
|
+
const defaults_1 = require("../../../../modules/defaults");
|
|
6
|
+
const logger_1 = require("../../../../lib/logger");
|
|
7
|
+
/**
|
|
8
|
+
* Call the LLM for workflow building.
|
|
9
|
+
*
|
|
10
|
+
* Uses a higher max_tokens than the shared caller because the builder
|
|
11
|
+
* returns complete YAML + manifest JSON (typically 2000-4000 tokens).
|
|
12
|
+
*/
|
|
13
|
+
const BUILDER_MAX_TOKENS = 4096;
|
|
14
|
+
async function callBuilderLLM(messages, _toolIds) {
|
|
15
|
+
const t0 = Date.now();
|
|
16
|
+
const response = await (0, llm_1.callLLM)({
|
|
17
|
+
model: defaults_1.LLM_MODEL_PRIMARY,
|
|
18
|
+
messages,
|
|
19
|
+
temperature: 0,
|
|
20
|
+
max_tokens: BUILDER_MAX_TOKENS,
|
|
21
|
+
});
|
|
22
|
+
const usage = response.usage;
|
|
23
|
+
logger_1.loggerRegistry.info(`[workflowBuilder:callLLM] ${Date.now() - t0}ms | in=${usage?.prompt_tokens} out=${usage?.completion_tokens} total=${usage?.total_tokens} | tool_calls=${response.tool_calls?.length || 0}`);
|
|
24
|
+
return response;
|
|
25
|
+
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export declare function loadBuilderTools(tags?: string[]): Promise<{
|
|
2
|
+
toolIds: string[];
|
|
3
|
+
inventory: string;
|
|
4
|
+
strategy: string;
|
|
5
|
+
}>;
|
|
6
|
+
/**
|
|
7
|
+
* Load a specific section from the activity-types reference file.
|
|
8
|
+
* Returns the markdown for the requested activity type (await, signal, interrupt).
|
|
9
|
+
* Returns empty string if the section or file is not found.
|
|
10
|
+
*/
|
|
11
|
+
export declare function loadReferenceSection(section: 'await' | 'signal' | 'interrupt'): Promise<string>;
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.loadBuilderTools = loadBuilderTools;
|
|
4
|
+
exports.loadReferenceSection = loadReferenceSection;
|
|
5
|
+
const promises_1 = require("fs/promises");
|
|
6
|
+
const path_1 = require("path");
|
|
7
|
+
const tool_loader_1 = require("../../shared/tool-loader");
|
|
8
|
+
const caches_1 = require("./caches");
|
|
9
|
+
async function loadBuilderTools(tags) {
|
|
10
|
+
return (0, tool_loader_1.loadToolsFromServers)(tags, { toolServerMap: caches_1.toolServerMap, toolDefCache: caches_1.toolDefCache }, { logPrefix: 'workflowBuilder' });
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Load a specific section from the activity-types reference file.
|
|
14
|
+
* Returns the markdown for the requested activity type (await, signal, interrupt).
|
|
15
|
+
* Returns empty string if the section or file is not found.
|
|
16
|
+
*/
|
|
17
|
+
async function loadReferenceSection(section) {
|
|
18
|
+
try {
|
|
19
|
+
const refPath = (0, path_1.join)(__dirname, '..', 'reference', 'activity-types.md');
|
|
20
|
+
const content = await (0, promises_1.readFile)(refPath, 'utf-8');
|
|
21
|
+
// Extract the section between ## <name> and the next ## or end of file
|
|
22
|
+
const sectionHeader = `## ${section}`;
|
|
23
|
+
const startIdx = content.indexOf(sectionHeader);
|
|
24
|
+
if (startIdx === -1)
|
|
25
|
+
return '';
|
|
26
|
+
const afterHeader = content.indexOf('\n', startIdx);
|
|
27
|
+
const nextSection = content.indexOf('\n## ', afterHeader + 1);
|
|
28
|
+
const endIdx = nextSection === -1 ? content.length : nextSection;
|
|
29
|
+
return content.slice(startIdx, endIdx).trim();
|
|
30
|
+
}
|
|
31
|
+
catch {
|
|
32
|
+
return '';
|
|
33
|
+
}
|
|
34
|
+
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { LTEnvelope, LTReturn } from '../../../types';
|
|
2
|
+
/**
|
|
3
|
+
* MCP Workflow Builder — constructs HotMesh YAML DAGs directly.
|
|
4
|
+
*
|
|
5
|
+
* Unlike mcpQuery (which executes tools then compiles traces), this workflow
|
|
6
|
+
* reasons about tool schemas and builds the YAML declaratively. The LLM
|
|
7
|
+
* knows HotMesh's activity types, mapping syntax, and @pipe operators.
|
|
8
|
+
*
|
|
9
|
+
* Supports conversational clarification: when the prompt is ambiguous,
|
|
10
|
+
* the LLM returns questions instead of YAML. The user answers, and the
|
|
11
|
+
* exchange continues until the LLM has enough to build.
|
|
12
|
+
*
|
|
13
|
+
* Returns the generated YAML, input schema, and activity manifest —
|
|
14
|
+
* ready for deployment via the existing yaml-workflow infrastructure.
|
|
15
|
+
*/
|
|
16
|
+
export declare function mcpWorkflowBuilder(envelope: LTEnvelope): Promise<LTReturn>;
|