@hotmeshio/long-tail 0.1.3 → 0.1.5
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 +118 -173
- package/build/examples/seed.js +1 -1
- package/build/examples/workflows/basic-echo/activities.d.ts +2 -2
- package/build/examples/workflows/basic-echo/activities.js +7 -7
- package/build/examples/workflows/basic-echo/index.js +1 -1
- package/build/examples/workflows/kitchen-sink/index.js +2 -2
- package/build/index.d.ts +12 -10
- package/build/index.js +15 -12
- package/build/lib/db/index.d.ts +18 -0
- package/build/{services → lib}/db/index.js +9 -0
- package/build/{services → lib}/db/migrate.js +3 -3
- package/build/{services → lib}/telemetry/honeycomb.d.ts +2 -2
- package/build/{services → lib}/telemetry/honeycomb.js +2 -2
- package/build/modules/defaults.d.ts +2 -0
- package/build/modules/defaults.js +3 -1
- package/build/routes/controlplane.js +1 -1
- package/build/routes/dba.js +4 -0
- package/build/routes/docs.d.ts +2 -0
- package/build/routes/docs.js +87 -0
- package/build/routes/escalations/bulk.js +120 -202
- package/build/routes/escalations/resolve.js +1 -1
- package/build/routes/escalations/single.js +1 -1
- package/build/routes/files.js +1 -1
- package/build/routes/index.js +2 -0
- package/build/routes/insight.js +2 -1
- package/build/routes/mcp.js +3 -2
- package/build/routes/oauth.js +1 -1
- package/build/routes/settings.js +4 -4
- package/build/routes/workflows/discovery.js +3 -3
- package/build/routes/workflows/invocation.js +1 -1
- package/build/routes/yaml-workflows/crud.js +1 -1
- package/build/routes/yaml-workflows/deployment.js +25 -0
- package/build/services/auth/bot-api-key.js +1 -1
- package/build/services/auth/index.d.ts +4 -0
- package/build/services/auth/index.js +17 -0
- package/build/services/auth/service-token.js +1 -1
- package/build/services/config/provider.js +1 -1
- package/build/services/config/read.js +1 -1
- package/build/services/config/write.js +1 -1
- package/build/services/controlplane/index.js +3 -4
- package/build/services/controlplane/quorum-bridge.js +2 -2
- package/build/services/cron/index.js +4 -5
- package/build/services/dba.d.ts +4 -0
- package/build/services/dba.js +3 -6
- package/build/services/escalation/bulk.js +1 -1
- package/build/services/escalation/crud.js +1 -1
- package/build/services/escalation/queries.js +1 -1
- package/build/services/export/client.js +2 -5
- package/build/services/export/index.js +14 -2
- package/build/services/hotmesh-utils.js +1 -1
- package/build/services/iam/bots.js +6 -12
- package/build/services/iam/context.d.ts +1 -1
- package/build/services/iam/context.js +5 -5
- package/build/services/iam/credentials.js +1 -1
- package/build/services/iam/ephemeral.js +8 -15
- package/build/services/iam/principal.js +3 -10
- package/build/services/iam/resolve.js +1 -1
- package/build/services/iam/sql.d.ts +10 -0
- package/build/services/iam/sql.js +42 -0
- package/build/services/insight/index.d.ts +1 -0
- package/build/services/insight/index.js +4 -6
- package/build/services/interceptor/activities/escalation.js +1 -1
- package/build/services/interceptor/activities/task.js +9 -6
- package/build/services/interceptor/activities/workflow.js +4 -5
- package/build/services/interceptor/activity-interceptor.d.ts +1 -1
- package/build/services/interceptor/activity-interceptor.js +5 -5
- package/build/services/interceptor/completion.js +1 -1
- package/build/services/interceptor/escalation.js +1 -1
- package/build/services/interceptor/index.js +4 -4
- package/build/services/interceptor/lifecycle.js +1 -1
- package/build/services/maintenance/index.js +4 -5
- package/build/services/mcp/adapter.js +1 -16
- package/build/services/mcp/client/connection.d.ts +1 -1
- package/build/services/mcp/client/connection.js +2 -2
- package/build/services/mcp/client/tools.js +1 -1
- package/build/services/mcp/db-server/index.js +1 -1
- package/build/services/mcp/db-server/tools.js +17 -4
- package/build/services/mcp/db.js +1 -1
- package/build/services/mcp/playwright-server/index.js +1 -1
- package/build/services/mcp/playwright-server/lifecycle.js +1 -1
- package/build/services/mcp/playwright-server/schemas.d.ts +2 -2
- package/build/services/mcp/playwright-server/tools.js +1 -1
- package/build/services/mcp/register-tool.d.ts +11 -0
- package/build/services/mcp/register-tool.js +15 -0
- package/build/services/mcp/server.js +1 -1
- package/build/services/mcp/sql.d.ts +6 -0
- package/build/services/mcp/sql.js +34 -1
- package/build/services/mcp/workflow-compiler-server.js +1 -1
- package/build/services/mcp/workflow-server.js +1 -1
- package/build/services/mcp-runs/execution-builder.js +8 -6
- package/build/services/mcp-runs/queries.js +2 -2
- package/build/services/mcp-runs/sql.d.ts +4 -1
- package/build/services/mcp-runs/sql.js +23 -2
- package/build/services/namespace/index.js +1 -1
- package/build/services/oauth/db.js +9 -37
- package/build/services/oauth/index.js +1 -1
- package/build/services/oauth/providers/registry.js +1 -1
- package/build/services/oauth/sql.d.ts +7 -0
- package/build/services/oauth/sql.js +32 -0
- package/build/services/orchestrator/index.js +3 -3
- package/build/services/role/index.js +1 -1
- package/build/services/task/crud.js +1 -1
- package/build/services/task/process.js +1 -1
- package/build/services/task/resolve.js +1 -1
- package/build/services/user/auth.js +1 -1
- package/build/services/user/crud.js +1 -1
- package/build/services/user/rbac.js +1 -1
- package/build/services/user/roles.js +1 -1
- package/build/services/user/sql.d.ts +2 -0
- package/build/services/user/sql.js +3 -1
- package/build/services/yaml-workflow/db-utils.js +1 -1
- package/build/services/yaml-workflow/db.js +1 -1
- package/build/services/yaml-workflow/deployer-helpers.js +1 -1
- package/build/services/yaml-workflow/deployer.js +4 -4
- package/build/services/yaml-workflow/generator.js +1 -1
- package/build/services/yaml-workflow/input-analyzer-helpers.d.ts +6 -0
- package/build/services/yaml-workflow/input-analyzer-helpers.js +36 -7
- package/build/services/yaml-workflow/input-analyzer.js +16 -3
- package/build/services/yaml-workflow/pipeline/analyze.js +1 -1
- package/build/services/yaml-workflow/pipeline/build/dag.js +10 -5
- package/build/services/yaml-workflow/pipeline/compile/llm-call.js +1 -1
- package/build/services/yaml-workflow/pipeline/extract.js +5 -3
- package/build/services/yaml-workflow/pipeline/index.d.ts +5 -0
- package/build/services/yaml-workflow/pipeline/index.js +22 -0
- package/build/services/yaml-workflow/pipeline/validate.js +2 -2
- package/build/services/yaml-workflow/workers/callbacks.js +1 -1
- package/build/services/yaml-workflow/workers/events.js +2 -2
- package/build/services/yaml-workflow/workers/register.js +8 -8
- package/build/start/adapters.js +7 -7
- package/build/start/index.js +4 -4
- package/build/start/server.js +1 -1
- package/build/start/workers.d.ts +1 -2
- package/build/start/workers.js +8 -7
- package/build/system/activities/claude-code.js +1 -1
- package/build/system/activities/file-storage.js +1 -1
- package/build/system/activities/knowledge.d.ts +58 -0
- package/build/system/activities/knowledge.js +128 -0
- package/build/system/activities/sql.d.ts +9 -0
- package/build/system/activities/sql.js +41 -0
- package/build/system/activities/triage/context.js +1 -1
- package/build/system/activities/triage/discovery.d.ts +2 -14
- package/build/system/activities/triage/discovery.js +5 -161
- package/build/system/activities/triage/llm.d.ts +1 -8
- package/build/system/activities/triage/llm.js +2 -28
- package/build/system/activities/triage/tools.d.ts +1 -17
- package/build/system/activities/triage/tools.js +8 -167
- package/build/system/index.js +5 -4
- package/build/system/mcp-servers/admin/escalations.d.ts +5 -0
- package/build/system/mcp-servers/admin/escalations.js +149 -0
- package/build/system/mcp-servers/admin/index.d.ts +31 -0
- package/build/system/mcp-servers/admin/index.js +80 -0
- package/build/system/mcp-servers/admin/maintenance.d.ts +5 -0
- package/build/system/mcp-servers/admin/maintenance.js +58 -0
- package/build/system/mcp-servers/admin/mcp-servers.d.ts +5 -0
- package/build/system/mcp-servers/admin/mcp-servers.js +146 -0
- package/build/system/mcp-servers/admin/schemas.d.ts +411 -0
- package/build/system/mcp-servers/admin/schemas.js +177 -0
- package/build/system/mcp-servers/admin/tasks.d.ts +5 -0
- package/build/system/mcp-servers/admin/tasks.js +112 -0
- package/build/system/mcp-servers/admin/users.d.ts +5 -0
- package/build/system/mcp-servers/admin/users.js +167 -0
- package/build/system/mcp-servers/admin/workflow-config.d.ts +9 -0
- package/build/system/mcp-servers/admin/workflow-config.js +118 -0
- package/build/system/mcp-servers/admin/workflows.d.ts +6 -0
- package/build/system/mcp-servers/admin/workflows.js +138 -0
- package/build/system/mcp-servers/admin/yaml-workflows.d.ts +8 -0
- package/build/system/mcp-servers/admin/yaml-workflows.js +237 -0
- package/build/system/mcp-servers/claude-code.js +1 -1
- package/build/system/mcp-servers/db-query/index.js +1 -1
- package/build/system/mcp-servers/db-query/tools.js +17 -4
- package/build/system/mcp-servers/docs.d.ts +5 -0
- package/build/system/mcp-servers/docs.js +147 -0
- package/build/system/mcp-servers/file-storage.js +1 -1
- package/build/system/mcp-servers/http-fetch.js +1 -1
- package/build/system/mcp-servers/human-queue.js +1 -1
- package/build/system/mcp-servers/knowledge.d.ts +4 -0
- package/build/system/mcp-servers/knowledge.js +137 -0
- package/build/system/mcp-servers/oauth.js +1 -1
- package/build/system/mcp-servers/playwright/browser-lifecycle.js +1 -1
- package/build/system/mcp-servers/playwright/index.js +1 -1
- package/build/system/mcp-servers/playwright/schemas.d.ts +19 -8
- package/build/system/mcp-servers/playwright/schemas.js +3 -0
- package/build/system/mcp-servers/playwright/tools-navigation.js +22 -9
- package/build/system/mcp-servers/playwright/tools-run-script.js +20 -3
- package/build/system/mcp-servers/playwright/vision-helper.d.ts +12 -0
- package/build/system/mcp-servers/playwright/vision-helper.js +81 -0
- package/build/system/mcp-servers/playwright-cli/helpers.js +2 -2
- package/build/system/mcp-servers/playwright-cli/index.js +1 -1
- package/build/system/mcp-servers/playwright-cli/schemas.d.ts +28 -28
- package/build/system/mcp-servers/playwright-cli/schemas.js +1 -1
- package/build/system/mcp-servers/playwright-cli/tools-auth.js +1 -1
- package/build/system/mcp-servers/playwright-cli/tools-capture.js +4 -2
- package/build/system/mcp-servers/translation.d.ts +14 -0
- package/build/system/mcp-servers/translation.js +130 -0
- package/build/system/mcp-servers/vision-prompts.d.ts +2 -0
- package/build/system/mcp-servers/vision-prompts.js +9 -0
- package/build/system/mcp-servers/{document-vision.d.ts → vision.d.ts} +3 -4
- package/build/system/mcp-servers/vision.js +221 -0
- package/build/system/mcp-servers/workflow-compiler.js +1 -1
- package/build/system/mcp-servers/workflow.js +1 -1
- package/build/system/seed/index.js +13 -2
- package/build/system/seed/server-definitions.d.ts +1954 -322
- package/build/system/seed/server-definitions.js +65 -34
- package/build/system/seed/tool-manifests-admin.d.ts +1645 -0
- package/build/system/seed/tool-manifests-admin.js +45 -0
- package/build/system/seed/tool-manifests-browser.d.ts +1 -1
- package/build/system/seed/tool-manifests-browser.js +3 -3
- package/build/system/seed/tool-manifests-data.d.ts +62 -21
- package/build/system/seed/tool-manifests-data.js +55 -17
- package/build/system/seed/tool-manifests-knowledge.d.ts +171 -0
- package/build/system/seed/tool-manifests-knowledge.js +94 -0
- package/build/system/workflows/mcp-deterministic/index.js +1 -1
- package/build/system/workflows/mcp-query/activities/discovery.d.ts +2 -20
- package/build/system/workflows/mcp-query/activities/discovery.js +5 -163
- package/build/system/workflows/mcp-query/activities/llm.d.ts +1 -7
- package/build/system/workflows/mcp-query/activities/llm.js +2 -27
- package/build/system/workflows/mcp-query/activities/tool-executor.d.ts +0 -4
- package/build/system/workflows/mcp-query/activities/tool-executor.js +2 -106
- package/build/system/workflows/mcp-query/activities/tool-loader.d.ts +0 -9
- package/build/system/workflows/mcp-query/activities/tool-loader.js +2 -87
- package/build/system/workflows/mcp-query/index.js +55 -5
- package/build/system/workflows/mcp-query/prompts.d.ts +1 -2
- package/build/system/workflows/mcp-query/prompts.js +5 -32
- package/build/system/workflows/mcp-query/strategy-advisors.d.ts +3 -14
- package/build/system/workflows/mcp-query/strategy-advisors.js +4 -107
- package/build/system/workflows/mcp-query/types.d.ts +2 -10
- package/build/system/workflows/mcp-query/types.js +0 -1
- package/build/system/workflows/mcp-query-router/index.js +1 -1
- package/build/system/workflows/mcp-triage/index.d.ts +2 -2
- package/build/system/workflows/mcp-triage/index.js +39 -7
- package/build/system/workflows/mcp-triage/prompts.js +7 -14
- package/build/system/workflows/mcp-triage-deterministic/index.js +1 -1
- package/build/system/workflows/mcp-triage-router/index.js +1 -1
- package/build/system/workflows/shared/discovery.d.ts +35 -0
- package/build/system/workflows/shared/discovery.js +175 -0
- package/build/system/workflows/shared/index.d.ts +7 -0
- package/build/system/workflows/shared/index.js +18 -0
- package/build/system/workflows/shared/llm-caller.d.ts +8 -0
- package/build/system/workflows/shared/llm-caller.js +31 -0
- package/build/system/workflows/shared/prompts.d.ts +2 -0
- package/build/system/workflows/shared/prompts.js +32 -0
- package/build/system/workflows/shared/strategy-advisors.d.ts +14 -0
- package/build/system/workflows/shared/strategy-advisors.js +109 -0
- package/build/system/workflows/shared/tool-executor.d.ts +11 -0
- package/build/system/workflows/shared/tool-executor.js +111 -0
- package/build/system/workflows/shared/tool-loader.d.ts +19 -0
- package/build/system/workflows/shared/tool-loader.js +94 -0
- package/build/system/workflows/shared/types.d.ts +9 -0
- package/build/system/workflows/shared/types.js +2 -0
- package/build/system/workflows/tool-result-guard.d.ts +14 -0
- package/build/system/workflows/tool-result-guard.js +78 -0
- package/build/tsconfig.tsbuildinfo +1 -1
- package/build/types/user.d.ts +2 -0
- package/build/vitest.config.d.ts +1 -1
- package/build/vitest.integration.config.d.ts +1 -1
- package/build/workers/index.js +2 -8
- package/dashboard/dist/assets/AdminDashboard-CTyAMUJR.js +2 -0
- package/dashboard/dist/assets/AdminDashboard-CTyAMUJR.js.map +1 -0
- package/dashboard/dist/assets/AvailableEscalationsPage-BMXV3Q4l.js +2 -0
- package/dashboard/dist/assets/AvailableEscalationsPage-BMXV3Q4l.js.map +1 -0
- package/dashboard/dist/assets/BotPicker-C51nKFEu.js +2 -0
- package/dashboard/dist/assets/{BotPicker-D6FYW1Gt.js.map → BotPicker-C51nKFEu.js.map} +1 -1
- package/dashboard/dist/assets/CollapsibleSection-BSyfd8uL.js +2 -0
- package/dashboard/dist/assets/{CollapsibleSection-Cxk4wvjT.js.map → CollapsibleSection-BSyfd8uL.js.map} +1 -1
- package/dashboard/dist/assets/ConfirmDeleteModal-CBdhia5T.js +2 -0
- package/dashboard/dist/assets/{ConfirmDeleteModal-FSXyKjaB.js.map → ConfirmDeleteModal-CBdhia5T.js.map} +1 -1
- package/dashboard/dist/assets/CopyableId-dGlewBCS.js +2 -0
- package/dashboard/dist/assets/{CopyableId-CBdxWfp8.js.map → CopyableId-dGlewBCS.js.map} +1 -1
- package/dashboard/dist/assets/CredentialsPage-CoBNFSAu.js +2 -0
- package/dashboard/dist/assets/{CredentialsPage-Ikzsot0w.js.map → CredentialsPage-CoBNFSAu.js.map} +1 -1
- package/dashboard/dist/assets/CustomDurationPicker-BataWFj8.js +2 -0
- package/dashboard/dist/assets/{CustomDurationPicker-CAninCbl.js.map → CustomDurationPicker-BataWFj8.js.map} +1 -1
- package/dashboard/dist/assets/DataTable-B3uf5CCo.js +2 -0
- package/dashboard/dist/assets/DataTable-B3uf5CCo.js.map +1 -0
- package/dashboard/dist/assets/ElapsedCell-G5oSwTpT.js +2 -0
- package/dashboard/dist/assets/ElapsedCell-G5oSwTpT.js.map +1 -0
- package/dashboard/dist/assets/EmptyState-BChBJNGS.js +2 -0
- package/dashboard/dist/assets/{EmptyState-2CmV-IaS.js.map → EmptyState-BChBJNGS.js.map} +1 -1
- package/dashboard/dist/assets/EscalationsOverview-CxUv8xjG.js +2 -0
- package/dashboard/dist/assets/{EscalationsOverview-GXYFPASS.js.map → EscalationsOverview-CxUv8xjG.js.map} +1 -1
- package/dashboard/dist/assets/EventTable-CVt8B0BZ.js +2 -0
- package/dashboard/dist/assets/{EventTable-B01oJf6Y.js.map → EventTable-CVt8B0BZ.js.map} +1 -1
- package/dashboard/dist/assets/FilterBar-CShf0oe7.js +2 -0
- package/dashboard/dist/assets/{FilterBar-Ck4K4rzu.js.map → FilterBar-CShf0oe7.js.map} +1 -1
- package/dashboard/dist/assets/McpOverview-CbaZRnJl.js +2 -0
- package/dashboard/dist/assets/{McpOverview-JkvRcX2e.js.map → McpOverview-CbaZRnJl.js.map} +1 -1
- package/dashboard/dist/assets/McpQueryDetailPage-CGoR9XK6.js +5 -0
- package/dashboard/dist/assets/McpQueryDetailPage-CGoR9XK6.js.map +1 -0
- package/dashboard/dist/assets/McpQueryPage-BjXoYQuU.js +2 -0
- package/dashboard/dist/assets/McpQueryPage-BjXoYQuU.js.map +1 -0
- package/dashboard/dist/assets/McpRunDetailPage-DLkA5Aar.js +2 -0
- package/dashboard/dist/assets/McpRunDetailPage-DLkA5Aar.js.map +1 -0
- package/dashboard/dist/assets/McpRunsPage-DCh9n11D.js +2 -0
- package/dashboard/dist/assets/McpRunsPage-DCh9n11D.js.map +1 -0
- package/dashboard/dist/assets/Modal-CI5RBPOQ.js +2 -0
- package/dashboard/dist/assets/{Modal-B4rbIVAn.js.map → Modal-CI5RBPOQ.js.map} +1 -1
- package/dashboard/dist/assets/OperatorDashboard-Dc80suXd.js +2 -0
- package/dashboard/dist/assets/OperatorDashboard-Dc80suXd.js.map +1 -0
- package/dashboard/dist/assets/PageHeader-SMD9qtOO.js +2 -0
- package/dashboard/dist/assets/PageHeader-SMD9qtOO.js.map +1 -0
- package/dashboard/dist/assets/PageHeaderWithStats-TikLQsTp.js +2 -0
- package/dashboard/dist/assets/PageHeaderWithStats-TikLQsTp.js.map +1 -0
- package/dashboard/dist/assets/PriorityBadge-CQ0EsLTA.js +2 -0
- package/dashboard/dist/assets/{PriorityBadge-DfQY9St9.js.map → PriorityBadge-CQ0EsLTA.js.map} +1 -1
- package/dashboard/dist/assets/ProcessDetailPage-B2GKuGzk.js +2 -0
- package/dashboard/dist/assets/ProcessDetailPage-B2GKuGzk.js.map +1 -0
- package/dashboard/dist/assets/ProcessesListPage-CTjI3Wn6.js +2 -0
- package/dashboard/dist/assets/ProcessesListPage-CTjI3Wn6.js.map +1 -0
- package/dashboard/dist/assets/RefreshButton-BcQDObrv.js +2 -0
- package/dashboard/dist/assets/RefreshButton-BcQDObrv.js.map +1 -0
- package/dashboard/dist/assets/RolePill-Crj4TH5p.js +2 -0
- package/dashboard/dist/assets/{RolePill-BTPa8L-P.js.map → RolePill-Crj4TH5p.js.map} +1 -1
- package/dashboard/dist/assets/RolesPage-C_RInUwS.js +2 -0
- package/dashboard/dist/assets/RolesPage-C_RInUwS.js.map +1 -0
- package/dashboard/dist/assets/RowActions-Cp5HyK_w.js +2 -0
- package/dashboard/dist/assets/{RowActions-Dg-Fsm5O.js.map → RowActions-Cp5HyK_w.js.map} +1 -1
- package/dashboard/dist/assets/RunAsSelector-BhyWtofX.js +2 -0
- package/dashboard/dist/assets/RunAsSelector-BhyWtofX.js.map +1 -0
- package/dashboard/dist/assets/StatCard-BKZLSgNV.js +2 -0
- package/dashboard/dist/assets/{StatCard-DlgF0CJC.js.map → StatCard-BKZLSgNV.js.map} +1 -1
- package/dashboard/dist/assets/StatusBadge-BYNGGZK5.js +2 -0
- package/dashboard/dist/assets/StatusBadge-BYNGGZK5.js.map +1 -0
- package/dashboard/dist/assets/StickyPagination-CTosgiU2.js +2 -0
- package/dashboard/dist/assets/{StickyPagination-F9FZsRy9.js.map → StickyPagination-CTosgiU2.js.map} +1 -1
- package/dashboard/dist/assets/SwimlaneTimeline-ylG5Ps1s.js +2 -0
- package/dashboard/dist/assets/SwimlaneTimeline-ylG5Ps1s.js.map +1 -0
- package/dashboard/dist/assets/TaskDetailPage-C9pDGdD2.js +2 -0
- package/dashboard/dist/assets/TaskDetailPage-C9pDGdD2.js.map +1 -0
- package/dashboard/dist/assets/TaskQueuePill-BtJbZTT0.js +2 -0
- package/dashboard/dist/assets/{TaskQueuePill-awmtb0qw.js.map → TaskQueuePill-BtJbZTT0.js.map} +1 -1
- package/dashboard/dist/assets/TasksListPage-DtFLUEhg.js +2 -0
- package/dashboard/dist/assets/{TasksListPage-C_QF23c1.js.map → TasksListPage-DtFLUEhg.js.map} +1 -1
- package/dashboard/dist/assets/TimeAgo-WuM6xImZ.js +2 -0
- package/dashboard/dist/assets/TimeAgo-WuM6xImZ.js.map +1 -0
- package/dashboard/dist/assets/TimestampCell-IVL_-Upy.js +2 -0
- package/dashboard/dist/assets/TimestampCell-IVL_-Upy.js.map +1 -0
- package/dashboard/dist/assets/UserName-DU9qeg13.js +2 -0
- package/dashboard/dist/assets/{UserName-DaP4YAKr.js.map → UserName-DU9qeg13.js.map} +1 -1
- package/dashboard/dist/assets/WorkflowExecutionPage-DOocX81f.js +2 -0
- package/dashboard/dist/assets/WorkflowExecutionPage-DOocX81f.js.map +1 -0
- package/dashboard/dist/assets/WorkflowPill-Diw8iWBP.js +2 -0
- package/dashboard/dist/assets/WorkflowPill-Diw8iWBP.js.map +1 -0
- package/dashboard/dist/assets/WorkflowsDashboard-DDtUIrTy.js +2 -0
- package/dashboard/dist/assets/WorkflowsDashboard-DDtUIrTy.js.map +1 -0
- package/dashboard/dist/assets/WorkflowsOverview-CPuvA4t3.js +2 -0
- package/dashboard/dist/assets/{WorkflowsOverview-D9OzzQqw.js.map → WorkflowsOverview-CPuvA4t3.js.map} +1 -1
- package/dashboard/dist/assets/YamlWorkflowsPage-DlwwkluN.js +2 -0
- package/dashboard/dist/assets/YamlWorkflowsPage-DlwwkluN.js.map +1 -0
- package/dashboard/dist/assets/{bots-BkKVMbUW.js → bots-BPiZXf2h.js} +2 -2
- package/dashboard/dist/assets/{bots-BkKVMbUW.js.map → bots-BPiZXf2h.js.map} +1 -1
- package/dashboard/dist/assets/constants-BHkpVaqx.js +2 -0
- package/dashboard/dist/assets/constants-BHkpVaqx.js.map +1 -0
- package/dashboard/dist/assets/escalation-DTY_OKRh.js +2 -0
- package/dashboard/dist/assets/escalation-DTY_OKRh.js.map +1 -0
- package/dashboard/dist/assets/escalation-columns-C91fHSkp.js +2 -0
- package/dashboard/dist/assets/{escalation-columns-D6aqStaY.js.map → escalation-columns-C91fHSkp.js.map} +1 -1
- package/dashboard/dist/assets/helpers-DBUZ9pnG.js +2 -0
- package/dashboard/dist/assets/helpers-DBUZ9pnG.js.map +1 -0
- package/dashboard/dist/assets/index-BOeA-gfK.js +17 -0
- package/dashboard/dist/assets/{index-X85K5bHC.js.map → index-BOeA-gfK.js.map} +1 -1
- package/dashboard/dist/assets/index-BZ6K_kmL.js +3 -0
- package/dashboard/dist/assets/index-BZ6K_kmL.js.map +1 -0
- package/dashboard/dist/assets/index-Bpm0yeoi.js +2 -0
- package/dashboard/dist/assets/index-Bpm0yeoi.js.map +1 -0
- package/dashboard/dist/assets/index-BtOwLI0K.js +2 -0
- package/dashboard/dist/assets/{index-DTPzZr_X.js.map → index-BtOwLI0K.js.map} +1 -1
- package/dashboard/dist/assets/index-CBF3ZvRZ.js +6 -0
- package/dashboard/dist/assets/index-CBF3ZvRZ.js.map +1 -0
- package/dashboard/dist/assets/index-CDWOfCmi.js +2 -0
- package/dashboard/dist/assets/index-CDWOfCmi.js.map +1 -0
- package/dashboard/dist/assets/index-Ce6sL__n.js +2 -0
- package/dashboard/dist/assets/index-Ce6sL__n.js.map +1 -0
- package/dashboard/dist/assets/index-DSzSoku1.js +283 -0
- package/dashboard/dist/assets/index-DSzSoku1.js.map +1 -0
- package/dashboard/dist/assets/index-D_qEAYrg.js +2 -0
- package/dashboard/dist/assets/index-D_qEAYrg.js.map +1 -0
- package/dashboard/dist/assets/index-gCy9XX3W.css +1 -0
- package/dashboard/dist/assets/mcp-BzVpaaKF.js +2 -0
- package/dashboard/dist/assets/{mcp-blCW6IL7.js.map → mcp-BzVpaaKF.js.map} +1 -1
- package/dashboard/dist/assets/mcp-query-wTuxTTCV.js +2 -0
- package/dashboard/dist/assets/mcp-query-wTuxTTCV.js.map +1 -0
- package/dashboard/dist/assets/{mcp-runs-ChPbpvXK.js → mcp-runs-DmXYJD19.js} +2 -2
- package/dashboard/dist/assets/{mcp-runs-ChPbpvXK.js.map → mcp-runs-DmXYJD19.js.map} +1 -1
- package/dashboard/dist/assets/namespaces-DoGa7jc7.js +2 -0
- package/dashboard/dist/assets/{namespaces-BgbaC3ow.js.map → namespaces-DoGa7jc7.js.map} +1 -1
- package/dashboard/dist/assets/{roles-ZNrqqnQl.js → roles-wCdQ2Z7k.js} +2 -2
- package/dashboard/dist/assets/{roles-ZNrqqnQl.js.map → roles-wCdQ2Z7k.js.map} +1 -1
- package/dashboard/dist/assets/settings-DDe_L7JT.js +2 -0
- package/dashboard/dist/assets/{settings-eBRSE0mQ.js.map → settings-DDe_L7JT.js.map} +1 -1
- package/dashboard/dist/assets/tasks-3Hih8Bt7.js +2 -0
- package/dashboard/dist/assets/{tasks-tRqClPns.js.map → tasks-3Hih8Bt7.js.map} +1 -1
- package/dashboard/dist/assets/{useFilterParams-BaXUAkYK.js → useFilterParams-BUyLHcx_.js} +2 -2
- package/dashboard/dist/assets/{useFilterParams-BaXUAkYK.js.map → useFilterParams-BUyLHcx_.js.map} +1 -1
- package/dashboard/dist/assets/{useNatsEvents-Xr43X1fG.js → useNatsEvents-DeGKHFTX.js} +2 -2
- package/dashboard/dist/assets/{useNatsEvents-Xr43X1fG.js.map → useNatsEvents-DeGKHFTX.js.map} +1 -1
- package/dashboard/dist/assets/{useYamlActivityEvents-BO51u8tm.js → useYamlActivityEvents-B5dHec6Y.js} +2 -2
- package/dashboard/dist/assets/{useYamlActivityEvents-BO51u8tm.js.map → useYamlActivityEvents-B5dHec6Y.js.map} +1 -1
- package/dashboard/dist/assets/{users-tMvNyOo8.js → users-BTagPmGW.js} +2 -2
- package/dashboard/dist/assets/{users-tMvNyOo8.js.map → users-BTagPmGW.js.map} +1 -1
- package/dashboard/dist/assets/{vendor-icons-ZTAKVwGc.js → vendor-icons-DCLlGYO9.js} +112 -57
- package/dashboard/dist/assets/vendor-icons-DCLlGYO9.js.map +1 -0
- package/dashboard/dist/assets/vendor-query-DLp59M9_.js +35 -0
- package/dashboard/dist/assets/vendor-query-DLp59M9_.js.map +1 -0
- package/dashboard/dist/assets/vendor-react-Co3Y8ikm.js +26 -0
- package/dashboard/dist/assets/vendor-react-Co3Y8ikm.js.map +1 -0
- package/dashboard/dist/assets/{workflows-Cc4VHcrp.js → workflows-B20dR3NE.js} +2 -2
- package/dashboard/dist/assets/{workflows-Cc4VHcrp.js.map → workflows-B20dR3NE.js.map} +1 -1
- package/dashboard/dist/assets/yaml-workflows-CaLPMQha.js +2 -0
- package/dashboard/dist/assets/yaml-workflows-CaLPMQha.js.map +1 -0
- package/dashboard/dist/index.html +5 -5
- package/docs/api/dba.md +81 -0
- package/docs/api/escalations.md +575 -0
- package/docs/api/exports.md +170 -0
- package/docs/api/maintenance.md +93 -0
- package/docs/api/mcp-runs.md +128 -0
- package/docs/api/mcp-servers.md +195 -0
- package/docs/api/namespaces.md +48 -0
- package/docs/api/roles.md +390 -0
- package/docs/api/service-accounts.md +188 -0
- package/docs/api/settings.md +33 -0
- package/docs/api/tasks.md +167 -0
- package/docs/api/users.md +180 -0
- package/docs/api/workflows.md +616 -0
- package/docs/api/yaml-workflows.md +312 -0
- package/docs/architecture.md +221 -0
- package/docs/auth.md +181 -0
- package/docs/cloud.md +272 -0
- package/docs/compilation.md +136 -0
- package/docs/contributing.md +56 -0
- package/docs/dashboard.md +145 -0
- package/docs/data.md +478 -0
- package/docs/escalation-strategies.md +264 -0
- package/docs/events.md +251 -0
- package/docs/iam.md +222 -0
- 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/docs/logging.md +110 -0
- package/docs/maintenance.md +221 -0
- package/docs/mcp.md +715 -0
- package/docs/oauth-and-delegation.md +469 -0
- package/docs/telemetry.md +144 -0
- package/docs/workflows.md +695 -0
- package/lib/db/schemas/015_knowledge.sql +23 -0
- package/package.json +8 -9
- package/build/services/db/index.d.ts +0 -3
- package/build/services/mcp/vision-server.d.ts +0 -15
- package/build/services/mcp/vision-server.js +0 -214
- package/build/system/mcp-servers/document-vision.js +0 -228
- package/build/system/mcp-servers/prompts.d.ts +0 -4
- package/build/system/mcp-servers/prompts.js +0 -10
- package/dashboard/dist/assets/AdminDashboard-jfacvOC7.js +0 -2
- package/dashboard/dist/assets/AdminDashboard-jfacvOC7.js.map +0 -1
- package/dashboard/dist/assets/AvailableEscalationsPage-BglLDoT8.js +0 -2
- package/dashboard/dist/assets/AvailableEscalationsPage-BglLDoT8.js.map +0 -1
- package/dashboard/dist/assets/BotPicker-D6FYW1Gt.js +0 -2
- package/dashboard/dist/assets/CollapsibleSection-Cxk4wvjT.js +0 -2
- package/dashboard/dist/assets/ConfirmDeleteModal-FSXyKjaB.js +0 -2
- package/dashboard/dist/assets/CopyableId-CBdxWfp8.js +0 -2
- package/dashboard/dist/assets/CredentialsPage-Ikzsot0w.js +0 -2
- package/dashboard/dist/assets/CustomDurationPicker-CAninCbl.js +0 -2
- package/dashboard/dist/assets/DataTable-BDn1WBHS.js +0 -2
- package/dashboard/dist/assets/DataTable-BDn1WBHS.js.map +0 -1
- package/dashboard/dist/assets/EmptyState-2CmV-IaS.js +0 -2
- package/dashboard/dist/assets/EscalationsOverview-GXYFPASS.js +0 -2
- package/dashboard/dist/assets/EventTable-B01oJf6Y.js +0 -2
- package/dashboard/dist/assets/Field-DuFBAYhu.js +0 -2
- package/dashboard/dist/assets/Field-DuFBAYhu.js.map +0 -1
- package/dashboard/dist/assets/FilterBar-Ck4K4rzu.js +0 -2
- package/dashboard/dist/assets/McpOverview-JkvRcX2e.js +0 -2
- package/dashboard/dist/assets/McpQueryDetailPage-CUMqhQdS.js +0 -2
- package/dashboard/dist/assets/McpQueryDetailPage-CUMqhQdS.js.map +0 -1
- package/dashboard/dist/assets/McpQueryPage-DRRhw4nN.js +0 -2
- package/dashboard/dist/assets/McpQueryPage-DRRhw4nN.js.map +0 -1
- package/dashboard/dist/assets/McpRunDetailPage-CmPs5EvE.js +0 -2
- package/dashboard/dist/assets/McpRunDetailPage-CmPs5EvE.js.map +0 -1
- package/dashboard/dist/assets/McpRunsPage-Dl5Y2u6k.js +0 -2
- package/dashboard/dist/assets/McpRunsPage-Dl5Y2u6k.js.map +0 -1
- package/dashboard/dist/assets/Modal-B4rbIVAn.js +0 -2
- package/dashboard/dist/assets/OperatorDashboard-B56il28q.js +0 -2
- package/dashboard/dist/assets/OperatorDashboard-B56il28q.js.map +0 -1
- package/dashboard/dist/assets/PageHeader-CpWFly5S.js +0 -2
- package/dashboard/dist/assets/PageHeader-CpWFly5S.js.map +0 -1
- package/dashboard/dist/assets/PriorityBadge-DfQY9St9.js +0 -2
- package/dashboard/dist/assets/ProcessDetailPage-CMLq4M7D.js +0 -2
- package/dashboard/dist/assets/ProcessDetailPage-CMLq4M7D.js.map +0 -1
- package/dashboard/dist/assets/ProcessesListPage-CZ_HF06v.js +0 -2
- package/dashboard/dist/assets/ProcessesListPage-CZ_HF06v.js.map +0 -1
- package/dashboard/dist/assets/RolePill-BTPa8L-P.js +0 -2
- package/dashboard/dist/assets/RolesPage-9grZW7yR.js +0 -2
- package/dashboard/dist/assets/RolesPage-9grZW7yR.js.map +0 -1
- package/dashboard/dist/assets/RowActions-Dg-Fsm5O.js +0 -2
- package/dashboard/dist/assets/SimpleMarkdown-CBlvaWP4.js +0 -4
- package/dashboard/dist/assets/SimpleMarkdown-CBlvaWP4.js.map +0 -1
- package/dashboard/dist/assets/StatCard-DlgF0CJC.js +0 -2
- package/dashboard/dist/assets/StatusBadge-TlC4jiig.js +0 -2
- package/dashboard/dist/assets/StatusBadge-TlC4jiig.js.map +0 -1
- package/dashboard/dist/assets/StickyPagination-F9FZsRy9.js +0 -2
- package/dashboard/dist/assets/SwimlaneTimeline-7SiwATsZ.js +0 -2
- package/dashboard/dist/assets/SwimlaneTimeline-7SiwATsZ.js.map +0 -1
- package/dashboard/dist/assets/TaskDetailPage-CbPVTakt.js +0 -2
- package/dashboard/dist/assets/TaskDetailPage-CbPVTakt.js.map +0 -1
- package/dashboard/dist/assets/TaskQueuePill-awmtb0qw.js +0 -2
- package/dashboard/dist/assets/TasksListPage-C_QF23c1.js +0 -2
- package/dashboard/dist/assets/TimeAgo-UPG6DoH8.js +0 -2
- package/dashboard/dist/assets/TimeAgo-UPG6DoH8.js.map +0 -1
- package/dashboard/dist/assets/TimestampCell-DoWMKg6w.js +0 -2
- package/dashboard/dist/assets/TimestampCell-DoWMKg6w.js.map +0 -1
- package/dashboard/dist/assets/UserName-DaP4YAKr.js +0 -2
- package/dashboard/dist/assets/VersionHistory-Bt7WBr6m.js +0 -5
- package/dashboard/dist/assets/VersionHistory-Bt7WBr6m.js.map +0 -1
- package/dashboard/dist/assets/WorkflowExecutionPage-DjtAQ3hy.js +0 -2
- package/dashboard/dist/assets/WorkflowExecutionPage-DjtAQ3hy.js.map +0 -1
- package/dashboard/dist/assets/WorkflowPill-CCDSVaQj.js +0 -2
- package/dashboard/dist/assets/WorkflowPill-CCDSVaQj.js.map +0 -1
- package/dashboard/dist/assets/WorkflowsDashboard-D8z9uBNB.js +0 -2
- package/dashboard/dist/assets/WorkflowsDashboard-D8z9uBNB.js.map +0 -1
- package/dashboard/dist/assets/WorkflowsOverview-D9OzzQqw.js +0 -2
- package/dashboard/dist/assets/YamlWorkflowDetailPage-DrDvvP62.js +0 -3
- package/dashboard/dist/assets/YamlWorkflowDetailPage-DrDvvP62.js.map +0 -1
- package/dashboard/dist/assets/YamlWorkflowsPage-COqiNCQK.js +0 -2
- package/dashboard/dist/assets/YamlWorkflowsPage-COqiNCQK.js.map +0 -1
- package/dashboard/dist/assets/constants-CgaZfe5d.js +0 -2
- package/dashboard/dist/assets/constants-CgaZfe5d.js.map +0 -1
- package/dashboard/dist/assets/escalation-columns-D6aqStaY.js +0 -2
- package/dashboard/dist/assets/escalation-qalymbKB.js +0 -2
- package/dashboard/dist/assets/escalation-qalymbKB.js.map +0 -1
- package/dashboard/dist/assets/format-gXZXQ-HJ.js +0 -2
- package/dashboard/dist/assets/format-gXZXQ-HJ.js.map +0 -1
- package/dashboard/dist/assets/helpers-0gSleuzT.js +0 -2
- package/dashboard/dist/assets/helpers-0gSleuzT.js.map +0 -1
- package/dashboard/dist/assets/index-BWvMHed7.js +0 -6
- package/dashboard/dist/assets/index-BWvMHed7.js.map +0 -1
- package/dashboard/dist/assets/index-BaszoPO_.css +0 -1
- package/dashboard/dist/assets/index-Cn2jyj9A.js +0 -2
- package/dashboard/dist/assets/index-Cn2jyj9A.js.map +0 -1
- package/dashboard/dist/assets/index-D8VH6K8B.js +0 -54
- package/dashboard/dist/assets/index-D8VH6K8B.js.map +0 -1
- package/dashboard/dist/assets/index-D9SYwJsi.js +0 -3
- package/dashboard/dist/assets/index-D9SYwJsi.js.map +0 -1
- package/dashboard/dist/assets/index-DTPzZr_X.js +0 -2
- package/dashboard/dist/assets/index-D_6AB5BE.js +0 -2
- package/dashboard/dist/assets/index-D_6AB5BE.js.map +0 -1
- package/dashboard/dist/assets/index-S9Ks2Lj2.js +0 -2
- package/dashboard/dist/assets/index-S9Ks2Lj2.js.map +0 -1
- package/dashboard/dist/assets/index-X85K5bHC.js +0 -17
- package/dashboard/dist/assets/index-rjmgHlSH.js +0 -2
- package/dashboard/dist/assets/index-rjmgHlSH.js.map +0 -1
- package/dashboard/dist/assets/mcp-blCW6IL7.js +0 -2
- package/dashboard/dist/assets/mcp-query-DoAyPbjC.js +0 -2
- package/dashboard/dist/assets/mcp-query-DoAyPbjC.js.map +0 -1
- package/dashboard/dist/assets/namespaces-BgbaC3ow.js +0 -2
- package/dashboard/dist/assets/settings-eBRSE0mQ.js +0 -2
- package/dashboard/dist/assets/tasks-tRqClPns.js +0 -2
- package/dashboard/dist/assets/vendor-icons-ZTAKVwGc.js.map +0 -1
- package/dashboard/dist/assets/vendor-query-B2UbickB.js +0 -18
- package/dashboard/dist/assets/vendor-query-B2UbickB.js.map +0 -1
- package/dashboard/dist/assets/vendor-react-Cw8Gy8NJ.js +0 -22
- package/dashboard/dist/assets/vendor-react-Cw8Gy8NJ.js.map +0 -1
- package/dashboard/dist/assets/yaml-workflows-BL4V5CQy.js +0 -2
- package/dashboard/dist/assets/yaml-workflows-BL4V5CQy.js.map +0 -1
- /package/build/{services → lib}/db/migrate.d.ts +0 -0
- /package/build/{services → lib}/events/index.d.ts +0 -0
- /package/build/{services → lib}/events/index.js +0 -0
- /package/build/{services → lib}/events/memory.d.ts +0 -0
- /package/build/{services → lib}/events/memory.js +0 -0
- /package/build/{services → lib}/events/nats.d.ts +0 -0
- /package/build/{services → lib}/events/nats.js +0 -0
- /package/build/{services → lib}/events/publish.d.ts +0 -0
- /package/build/{services → lib}/events/publish.js +0 -0
- /package/build/{services → lib}/events/socketio.d.ts +0 -0
- /package/build/{services → lib}/events/socketio.js +0 -0
- /package/build/{services → lib}/logger/index.d.ts +0 -0
- /package/build/{services → lib}/logger/index.js +0 -0
- /package/build/{services → lib}/logger/pino.d.ts +0 -0
- /package/build/{services → lib}/logger/pino.js +0 -0
- /package/build/{services → lib}/storage/index.d.ts +0 -0
- /package/build/{services → lib}/storage/index.js +0 -0
- /package/build/{services → lib}/storage/local.d.ts +0 -0
- /package/build/{services → lib}/storage/local.js +0 -0
- /package/build/{services → lib}/storage/s3.d.ts +0 -0
- /package/build/{services → lib}/storage/s3.js +0 -0
- /package/build/{services → lib}/storage/types.d.ts +0 -0
- /package/build/{services → lib}/storage/types.js +0 -0
- /package/build/{services → lib}/telemetry/index.d.ts +0 -0
- /package/build/{services → lib}/telemetry/index.js +0 -0
- /package/{services → lib}/db/README.md +0 -0
- /package/{services → lib}/db/schemas/001_schema.sql +0 -0
- /package/{services → lib}/db/schemas/002_seed.sql +0 -0
- /package/{services → lib}/db/schemas/003_workflow_discovery.sql +0 -0
- /package/{services → lib}/db/schemas/004_query_router.sql +0 -0
- /package/{services → lib}/db/schemas/005_triage_router.sql +0 -0
- /package/{services → lib}/db/schemas/006_oauth.sql +0 -0
- /package/{services → lib}/db/schemas/007_security.sql +0 -0
- /package/{services → lib}/db/schemas/008_bot_accounts.sql +0 -0
- /package/{services → lib}/db/schemas/009_audit_trail.sql +0 -0
- /package/{services → lib}/db/schemas/010_credential_providers.sql +0 -0
- /package/{services → lib}/db/schemas/011_system_workflow_configs.sql +0 -0
- /package/{services → lib}/db/schemas/012_drop_modality.sql +0 -0
- /package/{services → lib}/db/schemas/013_execute_as.sql +0 -0
- /package/{services → lib}/db/schemas/014_ephemeral_credentials.sql +0 -0
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.buildExecution = buildExecution;
|
|
4
|
-
const db_1 = require("
|
|
4
|
+
const db_1 = require("../../lib/db");
|
|
5
5
|
const hotmesh_utils_1 = require("../hotmesh-utils");
|
|
6
6
|
const enrichment_1 = require("./enrichment");
|
|
7
7
|
const events_1 = require("./events");
|
|
8
|
+
const sql_1 = require("./sql");
|
|
8
9
|
/**
|
|
9
10
|
* Build a complete execution export for a YAML engine workflow job.
|
|
10
11
|
*
|
|
@@ -34,8 +35,7 @@ async function loadJobContext(jobId, appId, schema) {
|
|
|
34
35
|
const jobKey = `hmsh:${appId}:j:${jobId}`;
|
|
35
36
|
const pool = (0, db_1.getPool)();
|
|
36
37
|
const [jobResult, symbolMap] = await Promise.all([
|
|
37
|
-
pool.query(
|
|
38
|
-
FROM ${schema}.jobs WHERE key = $1 LIMIT 1`, [jobKey]),
|
|
38
|
+
pool.query((0, sql_1.GET_JOB)(schema), [jobKey]),
|
|
39
39
|
(0, hotmesh_utils_1.loadSymbolMap)(schema, appId),
|
|
40
40
|
]);
|
|
41
41
|
if (jobResult.rows.length === 0) {
|
|
@@ -44,10 +44,12 @@ async function loadJobContext(jobId, appId, schema) {
|
|
|
44
44
|
throw err;
|
|
45
45
|
}
|
|
46
46
|
const job = jobResult.rows[0];
|
|
47
|
-
const attrRows = await pool.query(
|
|
47
|
+
const attrRows = await pool.query((0, sql_1.GET_JOB_ATTRIBUTES)(schema), [job.id]);
|
|
48
48
|
const rawAttrs = {};
|
|
49
|
-
for (const row of attrRows.rows)
|
|
50
|
-
|
|
49
|
+
for (const row of attrRows.rows) {
|
|
50
|
+
const field = row.dimension ? `${row.symbol}${row.dimension}` : row.symbol;
|
|
51
|
+
rawAttrs[field] = row.value;
|
|
52
|
+
}
|
|
51
53
|
const hierarchy = (0, hotmesh_utils_1.restoreHierarchy)((0, hotmesh_utils_1.inflateAttributes)(rawAttrs, symbolMap));
|
|
52
54
|
const meta = hierarchy['metadata'];
|
|
53
55
|
return {
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.listEntities = listEntities;
|
|
4
4
|
exports.listJobs = listJobs;
|
|
5
|
-
const db_1 = require("
|
|
5
|
+
const db_1 = require("../../lib/db");
|
|
6
6
|
const hotmesh_utils_1 = require("../hotmesh-utils");
|
|
7
7
|
const sql_1 = require("./sql");
|
|
8
8
|
/**
|
|
@@ -57,7 +57,7 @@ async function listJobs(params) {
|
|
|
57
57
|
const keyPrefix = `hmsh:${appId}:j:`;
|
|
58
58
|
const [countResult, dataResult] = await Promise.all([
|
|
59
59
|
pool.query((0, sql_1.COUNT_JOBS)(schema, where), values),
|
|
60
|
-
pool.query((0, sql_1.LIST_JOBS)(schema, where, idx++, idx++), [...values, limit, offset]),
|
|
60
|
+
pool.query((0, sql_1.LIST_JOBS)(schema, appId, where, idx++, idx++), [...values, limit, offset]),
|
|
61
61
|
]);
|
|
62
62
|
const jobs = dataResult.rows.map((row) => ({
|
|
63
63
|
workflow_id: row.key.startsWith(keyPrefix) ? row.key.slice(keyPrefix.length) : row.key,
|
|
@@ -1,4 +1,7 @@
|
|
|
1
|
+
export declare const DISTINCT_ENTITIES_DURABLE = "\n SELECT DISTINCT entity FROM durable.jobs WHERE entity IS NOT NULL AND entity != '' ORDER BY entity";
|
|
1
2
|
export declare const DISTINCT_ENTITIES: (schema: string) => string;
|
|
2
3
|
export declare const ACTIVE_GRAPH_TOPICS = "SELECT DISTINCT graph_topic FROM lt_yaml_workflows WHERE app_id = $1 AND status IN ('active', 'deployed')";
|
|
3
4
|
export declare const COUNT_JOBS: (schema: string, where: string) => string;
|
|
4
|
-
export declare const
|
|
5
|
+
export declare const GET_JOB: (schema: string) => string;
|
|
6
|
+
export declare const GET_JOB_ATTRIBUTES: (schema: string) => string;
|
|
7
|
+
export declare const LIST_JOBS: (schema: string, appId: string, where: string, limitIdx: number, offsetIdx: number) => string;
|
|
@@ -3,14 +3,35 @@
|
|
|
3
3
|
// Schema placeholders (${schema}) are interpolated at call time
|
|
4
4
|
// because Postgres does not support parameterized schema names.
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.LIST_JOBS = exports.COUNT_JOBS = exports.ACTIVE_GRAPH_TOPICS = exports.DISTINCT_ENTITIES = void 0;
|
|
6
|
+
exports.LIST_JOBS = exports.GET_JOB_ATTRIBUTES = exports.GET_JOB = exports.COUNT_JOBS = exports.ACTIVE_GRAPH_TOPICS = exports.DISTINCT_ENTITIES = exports.DISTINCT_ENTITIES_DURABLE = void 0;
|
|
7
|
+
exports.DISTINCT_ENTITIES_DURABLE = `
|
|
8
|
+
SELECT DISTINCT entity FROM durable.jobs WHERE entity IS NOT NULL AND entity != '' ORDER BY entity`;
|
|
7
9
|
const DISTINCT_ENTITIES = (schema) => `SELECT DISTINCT entity FROM ${schema}.jobs WHERE entity IS NOT NULL AND entity != '' ORDER BY entity`;
|
|
8
10
|
exports.DISTINCT_ENTITIES = DISTINCT_ENTITIES;
|
|
9
11
|
exports.ACTIVE_GRAPH_TOPICS = `SELECT DISTINCT graph_topic FROM lt_yaml_workflows WHERE app_id = $1 AND status IN ('active', 'deployed')`;
|
|
10
12
|
const COUNT_JOBS = (schema, where) => `SELECT COUNT(*) FROM ${schema}.jobs j ${where}`;
|
|
11
13
|
exports.COUNT_JOBS = COUNT_JOBS;
|
|
12
|
-
|
|
14
|
+
// ─── Execution builder ──────────────────────────────────────────���───────────
|
|
15
|
+
const GET_JOB = (schema) => `SELECT id, key, entity, status, created_at, updated_at, expired_at, is_live
|
|
16
|
+
FROM ${schema}.jobs WHERE key = $1 LIMIT 1`;
|
|
17
|
+
exports.GET_JOB = GET_JOB;
|
|
18
|
+
const GET_JOB_ATTRIBUTES = (schema) => `SELECT symbol, dimension, value FROM ${schema}.jobs_attributes WHERE job_id = $1 ORDER BY symbol, dimension`;
|
|
19
|
+
exports.GET_JOB_ATTRIBUTES = GET_JOB_ATTRIBUTES;
|
|
20
|
+
// ─── Queries (queries.ts) ───────────────────────────────────────────────────
|
|
21
|
+
const LIST_JOBS = (schema, appId, where, limitIdx, offsetIdx) => `WITH ju_symbols AS (
|
|
22
|
+
SELECT value FROM ${schema}.symbols
|
|
23
|
+
WHERE key LIKE 'hmsh:${appId}:sym:keys:%' AND field = 'metadata/ju'
|
|
24
|
+
)
|
|
25
|
+
SELECT j.key, j.entity, j.status, j.is_live, j.created_at,
|
|
26
|
+
CASE WHEN j.updated_at != j.created_at THEN j.updated_at
|
|
27
|
+
WHEN ju.value IS NOT NULL THEN to_timestamp(ju.value, 'YYYYMMDDHH24MISS.MS')
|
|
28
|
+
ELSE j.updated_at
|
|
29
|
+
END as updated_at
|
|
13
30
|
FROM ${schema}.jobs j
|
|
31
|
+
LEFT JOIN ${schema}.jobs_attributes ju
|
|
32
|
+
ON ju.job_id = j.id
|
|
33
|
+
AND ju.symbol IN (SELECT value FROM ju_symbols)
|
|
34
|
+
AND (ju.dimension IS NULL OR ju.dimension = '')
|
|
14
35
|
${where}
|
|
15
36
|
ORDER BY (CASE WHEN j.status > 0 THEN 0 ELSE 1 END), j.created_at DESC
|
|
16
37
|
LIMIT $${limitIdx} OFFSET $${offsetIdx}`;
|
|
@@ -4,7 +4,7 @@ exports.listNamespaces = listNamespaces;
|
|
|
4
4
|
exports.getDefaultNamespace = getDefaultNamespace;
|
|
5
5
|
exports.getNamespace = getNamespace;
|
|
6
6
|
exports.registerNamespace = registerNamespace;
|
|
7
|
-
const db_1 = require("
|
|
7
|
+
const db_1 = require("../../lib/db");
|
|
8
8
|
const sql_1 = require("./sql");
|
|
9
9
|
/**
|
|
10
10
|
* List all registered namespaces, ordered by default-first then name.
|
|
@@ -6,43 +6,15 @@ exports.getFreshAccessToken = getFreshAccessToken;
|
|
|
6
6
|
exports.listOAuthConnections = listOAuthConnections;
|
|
7
7
|
exports.deleteOAuthConnection = deleteOAuthConnection;
|
|
8
8
|
exports.getUserByOAuthProvider = getUserByOAuthProvider;
|
|
9
|
-
const db_1 = require("
|
|
9
|
+
const db_1 = require("../../lib/db");
|
|
10
10
|
const crypto_1 = require("./crypto");
|
|
11
11
|
const providers_1 = require("./providers");
|
|
12
12
|
const crud_1 = require("../user/crud");
|
|
13
|
-
|
|
14
|
-
const UPSERT_TOKEN = `
|
|
15
|
-
INSERT INTO lt_oauth_tokens
|
|
16
|
-
(user_id, provider, label, access_token_enc, refresh_token_enc, token_type, scopes,
|
|
17
|
-
expires_at, provider_user_id, provider_email, metadata)
|
|
18
|
-
VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11)
|
|
19
|
-
ON CONFLICT (user_id, provider, label) DO UPDATE SET
|
|
20
|
-
access_token_enc = EXCLUDED.access_token_enc,
|
|
21
|
-
refresh_token_enc = COALESCE(EXCLUDED.refresh_token_enc, lt_oauth_tokens.refresh_token_enc),
|
|
22
|
-
token_type = EXCLUDED.token_type,
|
|
23
|
-
scopes = EXCLUDED.scopes,
|
|
24
|
-
expires_at = EXCLUDED.expires_at,
|
|
25
|
-
provider_user_id = EXCLUDED.provider_user_id,
|
|
26
|
-
provider_email = COALESCE(EXCLUDED.provider_email, lt_oauth_tokens.provider_email),
|
|
27
|
-
metadata = COALESCE(EXCLUDED.metadata, lt_oauth_tokens.metadata)
|
|
28
|
-
RETURNING id`;
|
|
29
|
-
const GET_TOKEN = `
|
|
30
|
-
SELECT * FROM lt_oauth_tokens WHERE user_id = $1 AND provider = $2 AND label = $3`;
|
|
31
|
-
const GET_TOKEN_DEFAULT = `
|
|
32
|
-
SELECT * FROM lt_oauth_tokens WHERE user_id = $1 AND provider = $2 AND label = 'default'`;
|
|
33
|
-
const LIST_CONNECTIONS = `
|
|
34
|
-
SELECT provider, label, provider_email, scopes, expires_at, metadata
|
|
35
|
-
FROM lt_oauth_tokens WHERE user_id = $1 ORDER BY provider, label`;
|
|
36
|
-
const DELETE_TOKEN = `
|
|
37
|
-
DELETE FROM lt_oauth_tokens WHERE user_id = $1 AND provider = $2 AND label = $3`;
|
|
38
|
-
const DELETE_TOKEN_DEFAULT = `
|
|
39
|
-
DELETE FROM lt_oauth_tokens WHERE user_id = $1 AND provider = $2 AND label = 'default'`;
|
|
40
|
-
const GET_USER_BY_OAUTH = `
|
|
41
|
-
SELECT * FROM lt_users WHERE oauth_provider = $1 AND oauth_provider_id = $2`;
|
|
13
|
+
const sql_1 = require("./sql");
|
|
42
14
|
// ── Database operations ──────────────────────────────────────────────────────
|
|
43
15
|
async function upsertOAuthToken(userId, provider, tokens, scopes, providerUserId, providerEmail, metadata, label = 'default') {
|
|
44
16
|
const pool = await (0, db_1.getPool)();
|
|
45
|
-
const result = await pool.query(UPSERT_TOKEN, [
|
|
17
|
+
const result = await pool.query(sql_1.UPSERT_TOKEN, [
|
|
46
18
|
userId,
|
|
47
19
|
provider,
|
|
48
20
|
label,
|
|
@@ -60,8 +32,8 @@ async function upsertOAuthToken(userId, provider, tokens, scopes, providerUserId
|
|
|
60
32
|
async function getOAuthToken(userId, provider, label) {
|
|
61
33
|
const pool = await (0, db_1.getPool)();
|
|
62
34
|
const { rows } = label
|
|
63
|
-
? await pool.query(GET_TOKEN, [userId, provider, label])
|
|
64
|
-
: await pool.query(GET_TOKEN_DEFAULT, [userId, provider]);
|
|
35
|
+
? await pool.query(sql_1.GET_TOKEN, [userId, provider, label])
|
|
36
|
+
: await pool.query(sql_1.GET_TOKEN_DEFAULT, [userId, provider]);
|
|
65
37
|
if (rows.length === 0)
|
|
66
38
|
return null;
|
|
67
39
|
const row = rows[0];
|
|
@@ -114,7 +86,7 @@ async function getFreshAccessToken(userId, provider, label) {
|
|
|
114
86
|
}
|
|
115
87
|
async function listOAuthConnections(userId) {
|
|
116
88
|
const pool = await (0, db_1.getPool)();
|
|
117
|
-
const { rows } = await pool.query(LIST_CONNECTIONS, [userId]);
|
|
89
|
+
const { rows } = await pool.query(sql_1.LIST_CONNECTIONS, [userId]);
|
|
118
90
|
return rows.map((r) => ({
|
|
119
91
|
provider: r.provider,
|
|
120
92
|
label: r.label,
|
|
@@ -127,13 +99,13 @@ async function listOAuthConnections(userId) {
|
|
|
127
99
|
async function deleteOAuthConnection(userId, provider, label) {
|
|
128
100
|
const pool = await (0, db_1.getPool)();
|
|
129
101
|
const result = label
|
|
130
|
-
? await pool.query(DELETE_TOKEN, [userId, provider, label])
|
|
131
|
-
: await pool.query(DELETE_TOKEN_DEFAULT, [userId, provider]);
|
|
102
|
+
? await pool.query(sql_1.DELETE_TOKEN, [userId, provider, label])
|
|
103
|
+
: await pool.query(sql_1.DELETE_TOKEN_DEFAULT, [userId, provider]);
|
|
132
104
|
return (result.rowCount ?? 0) > 0;
|
|
133
105
|
}
|
|
134
106
|
async function getUserByOAuthProvider(provider, providerUserId) {
|
|
135
107
|
const pool = await (0, db_1.getPool)();
|
|
136
|
-
const { rows } = await pool.query(GET_USER_BY_OAUTH, [provider, providerUserId]);
|
|
108
|
+
const { rows } = await pool.query(sql_1.GET_USER_BY_OAUTH, [provider, providerUserId]);
|
|
137
109
|
if (!rows[0])
|
|
138
110
|
return null;
|
|
139
111
|
return (0, crud_1.attachRoles)(rows[0]);
|
|
@@ -4,7 +4,7 @@ exports.getUserByOAuthProvider = exports.deleteOAuthConnection = exports.listOAu
|
|
|
4
4
|
exports.initializeOAuth = initializeOAuth;
|
|
5
5
|
const crypto_1 = require("./crypto");
|
|
6
6
|
const providers_1 = require("./providers");
|
|
7
|
-
const logger_1 = require("
|
|
7
|
+
const logger_1 = require("../../lib/logger");
|
|
8
8
|
var crypto_2 = require("./crypto");
|
|
9
9
|
Object.defineProperty(exports, "encrypt", { enumerable: true, get: function () { return crypto_2.encrypt; } });
|
|
10
10
|
Object.defineProperty(exports, "decrypt", { enumerable: true, get: function () { return crypto_2.decrypt; } });
|
|
@@ -3,7 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.registerProvider = registerProvider;
|
|
4
4
|
exports.getProvider = getProvider;
|
|
5
5
|
exports.listProviders = listProviders;
|
|
6
|
-
const logger_1 = require("
|
|
6
|
+
const logger_1 = require("../../../lib/logger");
|
|
7
7
|
const anthropic_1 = require("./anthropic");
|
|
8
8
|
const github_1 = require("./github");
|
|
9
9
|
const google_1 = require("./google");
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export declare const UPSERT_TOKEN = "\n INSERT INTO lt_oauth_tokens\n (user_id, provider, label, access_token_enc, refresh_token_enc, token_type, scopes,\n expires_at, provider_user_id, provider_email, metadata)\n VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11)\n ON CONFLICT (user_id, provider, label) DO UPDATE SET\n access_token_enc = EXCLUDED.access_token_enc,\n refresh_token_enc = COALESCE(EXCLUDED.refresh_token_enc, lt_oauth_tokens.refresh_token_enc),\n token_type = EXCLUDED.token_type,\n scopes = EXCLUDED.scopes,\n expires_at = EXCLUDED.expires_at,\n provider_user_id = EXCLUDED.provider_user_id,\n provider_email = COALESCE(EXCLUDED.provider_email, lt_oauth_tokens.provider_email),\n metadata = COALESCE(EXCLUDED.metadata, lt_oauth_tokens.metadata)\n RETURNING id";
|
|
2
|
+
export declare const GET_TOKEN = "\n SELECT * FROM lt_oauth_tokens WHERE user_id = $1 AND provider = $2 AND label = $3";
|
|
3
|
+
export declare const GET_TOKEN_DEFAULT = "\n SELECT * FROM lt_oauth_tokens WHERE user_id = $1 AND provider = $2 AND label = 'default'";
|
|
4
|
+
export declare const LIST_CONNECTIONS = "\n SELECT provider, label, provider_email, scopes, expires_at, metadata\n FROM lt_oauth_tokens WHERE user_id = $1 ORDER BY provider, label";
|
|
5
|
+
export declare const DELETE_TOKEN = "\n DELETE FROM lt_oauth_tokens WHERE user_id = $1 AND provider = $2 AND label = $3";
|
|
6
|
+
export declare const DELETE_TOKEN_DEFAULT = "\n DELETE FROM lt_oauth_tokens WHERE user_id = $1 AND provider = $2 AND label = 'default'";
|
|
7
|
+
export declare const GET_USER_BY_OAUTH = "\n SELECT * FROM lt_users WHERE oauth_provider = $1 AND oauth_provider_id = $2";
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// ─── OAuth token CRUD ───────────────────────────────────────────────────────
|
|
3
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
+
exports.GET_USER_BY_OAUTH = exports.DELETE_TOKEN_DEFAULT = exports.DELETE_TOKEN = exports.LIST_CONNECTIONS = exports.GET_TOKEN_DEFAULT = exports.GET_TOKEN = exports.UPSERT_TOKEN = void 0;
|
|
5
|
+
exports.UPSERT_TOKEN = `
|
|
6
|
+
INSERT INTO lt_oauth_tokens
|
|
7
|
+
(user_id, provider, label, access_token_enc, refresh_token_enc, token_type, scopes,
|
|
8
|
+
expires_at, provider_user_id, provider_email, metadata)
|
|
9
|
+
VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11)
|
|
10
|
+
ON CONFLICT (user_id, provider, label) DO UPDATE SET
|
|
11
|
+
access_token_enc = EXCLUDED.access_token_enc,
|
|
12
|
+
refresh_token_enc = COALESCE(EXCLUDED.refresh_token_enc, lt_oauth_tokens.refresh_token_enc),
|
|
13
|
+
token_type = EXCLUDED.token_type,
|
|
14
|
+
scopes = EXCLUDED.scopes,
|
|
15
|
+
expires_at = EXCLUDED.expires_at,
|
|
16
|
+
provider_user_id = EXCLUDED.provider_user_id,
|
|
17
|
+
provider_email = COALESCE(EXCLUDED.provider_email, lt_oauth_tokens.provider_email),
|
|
18
|
+
metadata = COALESCE(EXCLUDED.metadata, lt_oauth_tokens.metadata)
|
|
19
|
+
RETURNING id`;
|
|
20
|
+
exports.GET_TOKEN = `
|
|
21
|
+
SELECT * FROM lt_oauth_tokens WHERE user_id = $1 AND provider = $2 AND label = $3`;
|
|
22
|
+
exports.GET_TOKEN_DEFAULT = `
|
|
23
|
+
SELECT * FROM lt_oauth_tokens WHERE user_id = $1 AND provider = $2 AND label = 'default'`;
|
|
24
|
+
exports.LIST_CONNECTIONS = `
|
|
25
|
+
SELECT provider, label, provider_email, scopes, expires_at, metadata
|
|
26
|
+
FROM lt_oauth_tokens WHERE user_id = $1 ORDER BY provider, label`;
|
|
27
|
+
exports.DELETE_TOKEN = `
|
|
28
|
+
DELETE FROM lt_oauth_tokens WHERE user_id = $1 AND provider = $2 AND label = $3`;
|
|
29
|
+
exports.DELETE_TOKEN_DEFAULT = `
|
|
30
|
+
DELETE FROM lt_oauth_tokens WHERE user_id = $1 AND provider = $2 AND label = 'default'`;
|
|
31
|
+
exports.GET_USER_BY_OAUTH = `
|
|
32
|
+
SELECT * FROM lt_users WHERE oauth_provider = $1 AND oauth_provider_id = $2`;
|
|
@@ -69,13 +69,13 @@ async function executeLT(options) {
|
|
|
69
69
|
const { ltCreateTask, ltStartTask, ltCompleteTask, ltGetWorkflowConfig, ltGetProviderData, } = hotmesh_1.Durable.workflow.proxyActivities({
|
|
70
70
|
activities: interceptorActivities,
|
|
71
71
|
taskQueue: LT_ACTIVITY_QUEUE,
|
|
72
|
-
|
|
72
|
+
retry: { maximumAttempts: 3 },
|
|
73
73
|
});
|
|
74
74
|
// Derive child workflow ID deterministically from the parent context.
|
|
75
75
|
// Combines parent workflowId (globally unique) with the execution
|
|
76
76
|
// counter (unique per step within this workflow) — zero-cost, fully
|
|
77
77
|
// replay-safe, and self-documents its lineage.
|
|
78
|
-
const ctx = hotmesh_1.Durable.workflow.
|
|
78
|
+
const ctx = hotmesh_1.Durable.workflow.workflowInfo();
|
|
79
79
|
const childWorkflowId = options.workflowId || `${workflowName}-${ctx.workflowId}-${ctx.counter}`;
|
|
80
80
|
const signalId = `lt-result-${childWorkflowId}`;
|
|
81
81
|
// Read orchestrator context (set by interceptor wrapping the container)
|
|
@@ -142,7 +142,7 @@ async function executeLT(options) {
|
|
|
142
142
|
entity: workflowName,
|
|
143
143
|
});
|
|
144
144
|
// 6. Wait for the child's interceptor to signal back with the result
|
|
145
|
-
const result = await hotmesh_1.Durable.workflow.
|
|
145
|
+
const result = await hotmesh_1.Durable.workflow.condition(signalId);
|
|
146
146
|
// 7. Complete the task — persist result data
|
|
147
147
|
await ltCompleteTask({
|
|
148
148
|
taskId,
|
|
@@ -10,7 +10,7 @@ exports.listDistinctRoles = listDistinctRoles;
|
|
|
10
10
|
exports.listRolesWithDetails = listRolesWithDetails;
|
|
11
11
|
exports.createRole = createRole;
|
|
12
12
|
exports.deleteRole = deleteRole;
|
|
13
|
-
const db_1 = require("
|
|
13
|
+
const db_1 = require("../../lib/db");
|
|
14
14
|
const user_1 = require("../user");
|
|
15
15
|
const sql_1 = require("./sql");
|
|
16
16
|
/**
|
|
@@ -7,7 +7,7 @@ exports.getTask = getTask;
|
|
|
7
7
|
exports.getTaskBySignalId = getTaskBySignalId;
|
|
8
8
|
exports.getTaskByWorkflowId = getTaskByWorkflowId;
|
|
9
9
|
exports.listTasks = listTasks;
|
|
10
|
-
const db_1 = require("
|
|
10
|
+
const db_1 = require("../../lib/db");
|
|
11
11
|
const sql_1 = require("./sql");
|
|
12
12
|
async function createTask(input) {
|
|
13
13
|
const pool = (0, db_1.getPool)();
|
|
@@ -3,7 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.listProcesses = listProcesses;
|
|
4
4
|
exports.getProcessStats = getProcessStats;
|
|
5
5
|
exports.getProcessTasks = getProcessTasks;
|
|
6
|
-
const db_1 = require("
|
|
6
|
+
const db_1 = require("../../lib/db");
|
|
7
7
|
const types_1 = require("./types");
|
|
8
8
|
const sql_1 = require("./sql");
|
|
9
9
|
async function listProcesses(filters) {
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.resolveWorkflowHandle = resolveWorkflowHandle;
|
|
4
|
-
const db_1 = require("
|
|
4
|
+
const db_1 = require("../../lib/db");
|
|
5
5
|
const registry_1 = require("../workers/registry");
|
|
6
6
|
const sql_1 = require("./sql");
|
|
7
7
|
/**
|
|
@@ -5,7 +5,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
exports.verifyPassword = verifyPassword;
|
|
7
7
|
const bcryptjs_1 = __importDefault(require("bcryptjs"));
|
|
8
|
-
const db_1 = require("
|
|
8
|
+
const db_1 = require("../../lib/db");
|
|
9
9
|
const crud_1 = require("./crud");
|
|
10
10
|
const sql_1 = require("./sql");
|
|
11
11
|
// ─── Password authentication ────────────────────────────────────────────────
|
|
@@ -12,7 +12,7 @@ exports.updateUser = updateUser;
|
|
|
12
12
|
exports.deleteUser = deleteUser;
|
|
13
13
|
exports.listUsers = listUsers;
|
|
14
14
|
const bcryptjs_1 = __importDefault(require("bcryptjs"));
|
|
15
|
-
const db_1 = require("
|
|
15
|
+
const db_1 = require("../../lib/db");
|
|
16
16
|
const sql_1 = require("./sql");
|
|
17
17
|
// ─── Private helpers (exported for internal use by auth.ts) ──────────────────
|
|
18
18
|
async function attachRoles(user) {
|
|
@@ -3,7 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.isSuperAdmin = isSuperAdmin;
|
|
4
4
|
exports.isGroupAdmin = isGroupAdmin;
|
|
5
5
|
exports.canManageRole = canManageRole;
|
|
6
|
-
const db_1 = require("
|
|
6
|
+
const db_1 = require("../../lib/db");
|
|
7
7
|
const roles_1 = require("./roles");
|
|
8
8
|
const sql_1 = require("./sql");
|
|
9
9
|
// ─── RBAC helpers ─────────────────────────────────────────────────────────────
|
|
@@ -6,7 +6,7 @@ exports.removeUserRole = removeUserRole;
|
|
|
6
6
|
exports.getUserRoles = getUserRoles;
|
|
7
7
|
exports.hasRole = hasRole;
|
|
8
8
|
exports.hasRoleType = hasRoleType;
|
|
9
|
-
const db_1 = require("
|
|
9
|
+
const db_1 = require("../../lib/db");
|
|
10
10
|
const sql_1 = require("./sql");
|
|
11
11
|
const types_1 = require("./types");
|
|
12
12
|
// ─── Role management ──────────────────────────────────────────────────────────
|
|
@@ -8,6 +8,8 @@ export declare const INSERT_USER = "INSERT INTO lt_users (external_id, email, di
|
|
|
8
8
|
export declare const GET_USER_BY_EMAIL = "SELECT * FROM lt_users WHERE email = $1 LIMIT 1";
|
|
9
9
|
export declare const INSERT_USER_ROLE_IGNORE = "INSERT INTO lt_user_roles (user_id, role, type) VALUES ($1, $2, $3)\n ON CONFLICT DO NOTHING";
|
|
10
10
|
export declare const GET_USER_BY_ID = "SELECT * FROM lt_users WHERE id = $1";
|
|
11
|
+
/** Check if a user exists by id. Lightweight — returns only the id column. */
|
|
12
|
+
export declare const VERIFY_USER_BY_ID = "SELECT id FROM lt_users WHERE id = $1 LIMIT 1";
|
|
11
13
|
/** Fetch user + roles in a single query. Returns one row per role (or one row with nulls if no roles). */
|
|
12
14
|
export declare const GET_USER_WITH_ROLES = "SELECT u.id, u.external_id, u.display_name, u.status, u.metadata,\n r.role, r.type AS role_type\n FROM lt_users u\n LEFT JOIN lt_user_roles r ON r.user_id = u.id\n WHERE u.external_id = $1\n ORDER BY r.created_at";
|
|
13
15
|
export declare const DELETE_USER_BY_ID = "DELETE FROM lt_users WHERE id = $1";
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
// ─── Shared queries (used by multiple modules) ──────────────────────────────
|
|
3
3
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
-
exports.IS_GROUP_ADMIN = exports.HAS_ROLE_TYPE = exports.HAS_ROLE = exports.DELETE_USER_ROLE = exports.UPSERT_USER_ROLE = exports.GET_ROLES_BY_USER_IDS = exports.DELETE_USER_BY_ID = exports.GET_USER_WITH_ROLES = exports.GET_USER_BY_ID = exports.INSERT_USER_ROLE_IGNORE = exports.GET_USER_BY_EMAIL = exports.INSERT_USER = exports.GET_USER_BY_EXTERNAL_ID = exports.GET_ROLES_BY_USER_ID = exports.ENSURE_ROLE_EXISTS = void 0;
|
|
4
|
+
exports.IS_GROUP_ADMIN = exports.HAS_ROLE_TYPE = exports.HAS_ROLE = exports.DELETE_USER_ROLE = exports.UPSERT_USER_ROLE = exports.GET_ROLES_BY_USER_IDS = exports.DELETE_USER_BY_ID = exports.GET_USER_WITH_ROLES = exports.VERIFY_USER_BY_ID = exports.GET_USER_BY_ID = exports.INSERT_USER_ROLE_IGNORE = exports.GET_USER_BY_EMAIL = exports.INSERT_USER = exports.GET_USER_BY_EXTERNAL_ID = exports.GET_ROLES_BY_USER_ID = exports.ENSURE_ROLE_EXISTS = void 0;
|
|
5
5
|
/** Ensure a role name exists in the lt_roles lookup table (FK target). */
|
|
6
6
|
exports.ENSURE_ROLE_EXISTS = 'INSERT INTO lt_roles (role) VALUES ($1) ON CONFLICT DO NOTHING';
|
|
7
7
|
/** Fetch roles for a single user, ordered by creation time. */
|
|
@@ -16,6 +16,8 @@ exports.GET_USER_BY_EMAIL = `SELECT * FROM lt_users WHERE email = $1 LIMIT 1`;
|
|
|
16
16
|
exports.INSERT_USER_ROLE_IGNORE = `INSERT INTO lt_user_roles (user_id, role, type) VALUES ($1, $2, $3)
|
|
17
17
|
ON CONFLICT DO NOTHING`;
|
|
18
18
|
exports.GET_USER_BY_ID = 'SELECT * FROM lt_users WHERE id = $1';
|
|
19
|
+
/** Check if a user exists by id. Lightweight — returns only the id column. */
|
|
20
|
+
exports.VERIFY_USER_BY_ID = 'SELECT id FROM lt_users WHERE id = $1 LIMIT 1';
|
|
19
21
|
/** Fetch user + roles in a single query. Returns one row per role (or one row with nulls if no roles). */
|
|
20
22
|
exports.GET_USER_WITH_ROLES = `SELECT u.id, u.external_id, u.display_name, u.status, u.metadata,
|
|
21
23
|
r.role, r.type AS role_type
|
|
@@ -4,7 +4,7 @@ exports.parseVersionFromYaml = parseVersionFromYaml;
|
|
|
4
4
|
exports.updateYamlWorkflowStatus = updateYamlWorkflowStatus;
|
|
5
5
|
exports.listYamlWorkflows = listYamlWorkflows;
|
|
6
6
|
exports.findYamlWorkflowsByTags = findYamlWorkflowsByTags;
|
|
7
|
-
const db_1 = require("
|
|
7
|
+
const db_1 = require("../../lib/db");
|
|
8
8
|
const defaults_1 = require("../../modules/defaults");
|
|
9
9
|
const sql_1 = require("./sql");
|
|
10
10
|
/**
|
|
@@ -16,7 +16,7 @@ exports.getVersionHistory = getVersionHistory;
|
|
|
16
16
|
exports.getVersionSnapshot = getVersionSnapshot;
|
|
17
17
|
exports.markContentDeployed = markContentDeployed;
|
|
18
18
|
exports.markAppIdContentDeployed = markAppIdContentDeployed;
|
|
19
|
-
const db_1 = require("
|
|
19
|
+
const db_1 = require("../../lib/db");
|
|
20
20
|
const defaults_1 = require("../../modules/defaults");
|
|
21
21
|
const sql_1 = require("./sql");
|
|
22
22
|
const db_utils_1 = require("./db-utils");
|
|
@@ -38,7 +38,7 @@ exports.recompileWithContext = recompileWithContext;
|
|
|
38
38
|
// eslint-disable-next-line @typescript-eslint/no-var-requires
|
|
39
39
|
const yaml = require('js-yaml');
|
|
40
40
|
const defaults_1 = require("../../modules/defaults");
|
|
41
|
-
const logger_1 = require("
|
|
41
|
+
const logger_1 = require("../../lib/logger");
|
|
42
42
|
const yamlDb = __importStar(require("./db"));
|
|
43
43
|
/**
|
|
44
44
|
* Merge all YAML graphs for an app_id into a single YAML document.
|
|
@@ -43,10 +43,9 @@ exports.invokeYamlWorkflowSync = invokeYamlWorkflowSync;
|
|
|
43
43
|
exports.stopEngine = stopEngine;
|
|
44
44
|
exports.stopAllEngines = stopAllEngines;
|
|
45
45
|
const hotmesh_1 = require("@hotmeshio/hotmesh");
|
|
46
|
-
const
|
|
47
|
-
const config_1 = require("../../modules/config");
|
|
46
|
+
const db_1 = require("../../lib/db");
|
|
48
47
|
const defaults_1 = require("../../modules/defaults");
|
|
49
|
-
const logger_1 = require("
|
|
48
|
+
const logger_1 = require("../../lib/logger");
|
|
50
49
|
const namespaceService = __importStar(require("../namespace"));
|
|
51
50
|
const deployer_helpers_1 = require("./deployer-helpers");
|
|
52
51
|
// Re-export helpers so existing `import * from './deployer'` consumers keep working
|
|
@@ -64,8 +63,9 @@ async function getEngine(appId) {
|
|
|
64
63
|
return cached;
|
|
65
64
|
const engine = await hotmesh_1.HotMesh.init({
|
|
66
65
|
appId,
|
|
66
|
+
guid: `deployer::${appId}-${hotmesh_1.HotMesh.guid()}`,
|
|
67
67
|
engine: {
|
|
68
|
-
connection:
|
|
68
|
+
connection: (0, db_1.getConnection)(),
|
|
69
69
|
},
|
|
70
70
|
});
|
|
71
71
|
engines.set(appId, engine);
|
|
@@ -96,7 +96,7 @@ async function generateYamlFromExecution(options) {
|
|
|
96
96
|
ctx = await (0, validate_1.validate)(ctx);
|
|
97
97
|
// 4. Log validation warnings (informational — do not recompile)
|
|
98
98
|
if (ctx.validationIssues.length > 0) {
|
|
99
|
-
const { loggerRegistry } = await Promise.resolve().then(() => __importStar(require('
|
|
99
|
+
const { loggerRegistry } = await Promise.resolve().then(() => __importStar(require('../../lib/logger')));
|
|
100
100
|
loggerRegistry.warn(`[yaml-workflow] Validation warnings (${ctx.validationIssues.length}): ${ctx.validationIssues.join('; ')}`);
|
|
101
101
|
}
|
|
102
102
|
// 5. Return result
|
|
@@ -21,6 +21,7 @@ export interface ExtractedStepLike {
|
|
|
21
21
|
kind: 'tool' | 'llm';
|
|
22
22
|
toolName: string;
|
|
23
23
|
arguments: Record<string, unknown>;
|
|
24
|
+
result?: unknown;
|
|
24
25
|
}
|
|
25
26
|
/**
|
|
26
27
|
* Classify a single argument key as dynamic, fixed, or wired.
|
|
@@ -29,6 +30,11 @@ export declare function classifyArgument(key: string, value: unknown, _context?:
|
|
|
29
30
|
stepIndex: number;
|
|
30
31
|
toolName: string;
|
|
31
32
|
}): 'dynamic' | 'fixed' | 'wired';
|
|
33
|
+
/**
|
|
34
|
+
* Check if an array argument was likely produced by a prior step's result.
|
|
35
|
+
* Compares the item keys of the argument array against result arrays from prior steps.
|
|
36
|
+
*/
|
|
37
|
+
export declare function isArrayWiredFromPriorStep(value: unknown[], priorSteps: ExtractedStepLike[]): boolean;
|
|
32
38
|
/** Convert a snake_case/camelCase field name to a readable description. */
|
|
33
39
|
export declare function humanize(name: string): string;
|
|
34
40
|
/** Infer a JSON Schema type string from a JS value. */
|
|
@@ -8,6 +8,7 @@
|
|
|
8
8
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
9
|
exports.WIRED_KEYS = exports.FIXED_KEYS = exports.DYNAMIC_KEYS = exports.MAX_DEFAULT_STRING_LENGTH = exports.MAX_DEFAULT_OBJECT_SIZE = exports.MAX_DEFAULT_ARRAY_LENGTH = void 0;
|
|
10
10
|
exports.classifyArgument = classifyArgument;
|
|
11
|
+
exports.isArrayWiredFromPriorStep = isArrayWiredFromPriorStep;
|
|
11
12
|
exports.humanize = humanize;
|
|
12
13
|
exports.inferType = inferType;
|
|
13
14
|
exports.capDefault = capDefault;
|
|
@@ -64,15 +65,11 @@ function classifyArgument(key, value, _context) {
|
|
|
64
65
|
return 'dynamic';
|
|
65
66
|
}
|
|
66
67
|
}
|
|
67
|
-
// Arrays
|
|
68
|
-
//
|
|
68
|
+
// Arrays of objects are always fixed (structured implementation details)
|
|
69
|
+
// or wired (from a prior step's output). Never user-provided dynamic inputs.
|
|
69
70
|
if (Array.isArray(value)) {
|
|
70
71
|
if (value.length > 0 && value[0] && typeof value[0] === 'object' && !Array.isArray(value[0])) {
|
|
71
|
-
|
|
72
|
-
const firstItem = value[0];
|
|
73
|
-
if ('action' in firstItem || 'step' in firstItem || 'type' in firstItem) {
|
|
74
|
-
return 'fixed'; // Implementation recipe — not user input
|
|
75
|
-
}
|
|
72
|
+
return 'fixed';
|
|
76
73
|
}
|
|
77
74
|
if (value.length > exports.MAX_DEFAULT_ARRAY_LENGTH) {
|
|
78
75
|
return 'dynamic';
|
|
@@ -99,6 +96,38 @@ function objectContainsDynamicKeys(obj) {
|
|
|
99
96
|
}
|
|
100
97
|
return false;
|
|
101
98
|
}
|
|
99
|
+
/**
|
|
100
|
+
* Check if an array argument was likely produced by a prior step's result.
|
|
101
|
+
* Compares the item keys of the argument array against result arrays from prior steps.
|
|
102
|
+
*/
|
|
103
|
+
function isArrayWiredFromPriorStep(value, priorSteps) {
|
|
104
|
+
if (value.length === 0 || !value[0] || typeof value[0] !== 'object')
|
|
105
|
+
return false;
|
|
106
|
+
const argKeys = new Set(Object.keys(value[0]));
|
|
107
|
+
if (argKeys.size === 0)
|
|
108
|
+
return false;
|
|
109
|
+
for (const step of priorSteps) {
|
|
110
|
+
if (!step.result || typeof step.result !== 'object')
|
|
111
|
+
continue;
|
|
112
|
+
const result = step.result;
|
|
113
|
+
for (const field of Object.values(result)) {
|
|
114
|
+
if (!Array.isArray(field) || field.length === 0)
|
|
115
|
+
continue;
|
|
116
|
+
const first = field[0];
|
|
117
|
+
if (!first || typeof first !== 'object')
|
|
118
|
+
continue;
|
|
119
|
+
const resultKeys = new Set(Object.keys(first));
|
|
120
|
+
// If the result array items share keys with the argument array items, it's wired
|
|
121
|
+
let overlap = 0;
|
|
122
|
+
for (const k of argKeys)
|
|
123
|
+
if (resultKeys.has(k))
|
|
124
|
+
overlap++;
|
|
125
|
+
if (overlap >= 2 || (overlap >= 1 && argKeys.size <= 3))
|
|
126
|
+
return true;
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
return false;
|
|
130
|
+
}
|
|
102
131
|
/** Convert a snake_case/camelCase field name to a readable description. */
|
|
103
132
|
function humanize(name) {
|
|
104
133
|
return name
|
|
@@ -37,6 +37,10 @@ function extractSemanticInputs(steps, originalPrompt) {
|
|
|
37
37
|
// First occurrence wins
|
|
38
38
|
if (seen.has(key))
|
|
39
39
|
continue;
|
|
40
|
+
// Arrays of objects that match a prior step's result are wired, not inputs
|
|
41
|
+
if (Array.isArray(value) && (0, input_analyzer_helpers_1.isArrayWiredFromPriorStep)(value, steps.slice(0, i))) {
|
|
42
|
+
continue;
|
|
43
|
+
}
|
|
40
44
|
const classification = (0, input_analyzer_helpers_1.classifyArgument)(key, value, {
|
|
41
45
|
stepIndex: i,
|
|
42
46
|
toolName: step.toolName,
|
|
@@ -44,10 +48,19 @@ function extractSemanticInputs(steps, originalPrompt) {
|
|
|
44
48
|
// Skip wired arguments — they come from step chaining
|
|
45
49
|
if (classification === 'wired')
|
|
46
50
|
continue;
|
|
47
|
-
// Flatten nested objects that contain dynamic keys
|
|
48
|
-
//
|
|
51
|
+
// Flatten nested objects that contain dynamic keys — but only if the
|
|
52
|
+
// dynamic children aren't already captured as top-level args from an
|
|
53
|
+
// earlier step. If all dynamic children are already seen, treat the
|
|
54
|
+
// whole object as fixed (structured implementation detail).
|
|
49
55
|
if (classification === 'dynamic' && value && typeof value === 'object' && !Array.isArray(value)) {
|
|
50
|
-
|
|
56
|
+
const obj = value;
|
|
57
|
+
const dynamicChildren = Object.keys(obj).filter((k) => (0, input_analyzer_helpers_1.classifyArgument)(k, obj[k], { stepIndex: i, toolName: step.toolName }) === 'dynamic');
|
|
58
|
+
const allDynamicAlreadySeen = dynamicChildren.length > 0 && dynamicChildren.every((k) => seen.has(k));
|
|
59
|
+
if (allDynamicAlreadySeen) {
|
|
60
|
+
// All dynamic values are already captured — treat as fixed, don't flatten
|
|
61
|
+
continue;
|
|
62
|
+
}
|
|
63
|
+
(0, input_analyzer_helpers_1.flattenDynamicObject)(key, obj, i, step.toolName, originalPrompt, seen);
|
|
51
64
|
continue;
|
|
52
65
|
}
|
|
53
66
|
let description = (0, input_analyzer_helpers_1.humanize)(key);
|
|
@@ -54,7 +54,7 @@ async function analyze(ctx) {
|
|
|
54
54
|
const consecutiveSameServer = ctx.collapsedSteps.filter((s, i) => s.kind === 'tool' && s.mcpServerId &&
|
|
55
55
|
i > 0 && ctx.collapsedSteps[i - 1].mcpServerId === s.mcpServerId);
|
|
56
56
|
if (consecutiveSameServer.length > 0) {
|
|
57
|
-
const { loggerRegistry } = await Promise.resolve().then(() => __importStar(require('
|
|
57
|
+
const { loggerRegistry } = await Promise.resolve().then(() => __importStar(require('../../../lib/logger')));
|
|
58
58
|
const serverIds = [...new Set(consecutiveSameServer.map(s => s.mcpServerId))];
|
|
59
59
|
loggerRegistry.info(`[yaml-workflow] hint: ${consecutiveSameServer.length + 1} consecutive same-server steps detected (${serverIds.join(', ')}) — pattern detector may collapse these`);
|
|
60
60
|
}
|
|
@@ -222,12 +222,17 @@ function extractOutputFields(step) {
|
|
|
222
222
|
return [];
|
|
223
223
|
}
|
|
224
224
|
function buildJobMaps(stepIdx, totalSteps, outputFields) {
|
|
225
|
-
if (stepIdx !== totalSteps - 1
|
|
225
|
+
if (stepIdx !== totalSteps - 1)
|
|
226
226
|
return undefined;
|
|
227
|
-
|
|
228
|
-
acc
|
|
229
|
-
|
|
230
|
-
|
|
227
|
+
if (outputFields.length > 0) {
|
|
228
|
+
return outputFields.reduce((acc, field) => {
|
|
229
|
+
acc[field] = `{$self.output.data.${field}}`;
|
|
230
|
+
return acc;
|
|
231
|
+
}, {});
|
|
232
|
+
}
|
|
233
|
+
// Final step with no structured output fields (e.g., string result) —
|
|
234
|
+
// persist the raw response so the workflow result isn't null
|
|
235
|
+
return { response: '{$self.output.data.response}' };
|
|
231
236
|
}
|
|
232
237
|
function buildManifestEntry(actId, title, step, topic, workflowName, inputMappings, outputFields) {
|
|
233
238
|
const promptTemplate = step.kind === 'llm' && step.promptMessages
|