@hotmeshio/long-tail 0.1.0
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/LICENSE +202 -0
- package/README.md +262 -0
- package/build/examples/external-mcp-server/server.d.ts +17 -0
- package/build/examples/external-mcp-server/server.js +116 -0
- package/build/examples/index.d.ts +2 -0
- package/build/examples/index.js +7 -0
- package/build/examples/seed.d.ts +5 -0
- package/build/examples/seed.js +221 -0
- package/build/examples/types/envelopes.d.ts +34 -0
- package/build/examples/types/envelopes.js +8 -0
- package/build/examples/types/index.d.ts +10 -0
- package/build/examples/types/index.js +9 -0
- package/build/examples/types/resolvers.d.ts +27 -0
- package/build/examples/types/resolvers.js +9 -0
- package/build/examples/workers.d.ts +10 -0
- package/build/examples/workers.js +49 -0
- package/build/examples/workflows/basic-echo/activities.d.ts +20 -0
- package/build/examples/workflows/basic-echo/activities.js +55 -0
- package/build/examples/workflows/basic-echo/index.d.ts +14 -0
- package/build/examples/workflows/basic-echo/index.js +66 -0
- package/build/examples/workflows/kitchen-sink/activities.d.ts +40 -0
- package/build/examples/workflows/kitchen-sink/activities.js +46 -0
- package/build/examples/workflows/kitchen-sink/index.d.ts +22 -0
- package/build/examples/workflows/kitchen-sink/index.js +123 -0
- package/build/examples/workflows/review-content/activities.d.ts +10 -0
- package/build/examples/workflows/review-content/activities.js +44 -0
- package/build/examples/workflows/review-content/index.d.ts +10 -0
- package/build/examples/workflows/review-content/index.js +95 -0
- package/build/examples/workflows/review-content/types.d.ts +28 -0
- package/build/examples/workflows/review-content/types.js +2 -0
- package/build/index.d.ts +37 -0
- package/build/index.js +151 -0
- package/build/modules/auth.d.ts +58 -0
- package/build/modules/auth.js +163 -0
- package/build/modules/config.d.ts +19 -0
- package/build/modules/config.js +26 -0
- package/build/modules/defaults.d.ts +58 -0
- package/build/modules/defaults.js +95 -0
- package/build/modules/ltconfig.d.ts +21 -0
- package/build/modules/ltconfig.js +110 -0
- package/build/modules/maintenance.d.ts +18 -0
- package/build/modules/maintenance.js +47 -0
- package/build/routes/auth.d.ts +2 -0
- package/build/routes/auth.js +48 -0
- package/build/routes/bot-accounts.d.ts +2 -0
- package/build/routes/bot-accounts.js +280 -0
- package/build/routes/controlplane.d.ts +2 -0
- package/build/routes/controlplane.js +144 -0
- package/build/routes/dba.d.ts +2 -0
- package/build/routes/dba.js +86 -0
- package/build/routes/delegation.d.ts +2 -0
- package/build/routes/delegation.js +81 -0
- package/build/routes/escalations/bulk.d.ts +2 -0
- package/build/routes/escalations/bulk.js +324 -0
- package/build/routes/escalations/helpers.d.ts +5 -0
- package/build/routes/escalations/helpers.js +48 -0
- package/build/routes/escalations/index.d.ts +2 -0
- package/build/routes/escalations/index.js +20 -0
- package/build/routes/escalations/list.d.ts +2 -0
- package/build/routes/escalations/list.js +140 -0
- package/build/routes/escalations/resolve.d.ts +2 -0
- package/build/routes/escalations/resolve.js +240 -0
- package/build/routes/escalations/single.d.ts +2 -0
- package/build/routes/escalations/single.js +195 -0
- package/build/routes/exports.d.ts +2 -0
- package/build/routes/exports.js +163 -0
- package/build/routes/files.d.ts +2 -0
- package/build/routes/files.js +47 -0
- package/build/routes/index.d.ts +2 -0
- package/build/routes/index.js +52 -0
- package/build/routes/insight.d.ts +2 -0
- package/build/routes/insight.js +58 -0
- package/build/routes/maintenance.d.ts +2 -0
- package/build/routes/maintenance.js +38 -0
- package/build/routes/mcp-runs.d.ts +2 -0
- package/build/routes/mcp-runs.js +85 -0
- package/build/routes/mcp.d.ts +2 -0
- package/build/routes/mcp.js +264 -0
- package/build/routes/namespaces.d.ts +2 -0
- package/build/routes/namespaces.js +71 -0
- package/build/routes/oauth.d.ts +7 -0
- package/build/routes/oauth.js +217 -0
- package/build/routes/resolve.d.ts +9 -0
- package/build/routes/resolve.js +19 -0
- package/build/routes/roles.d.ts +2 -0
- package/build/routes/roles.js +195 -0
- package/build/routes/settings.d.ts +2 -0
- package/build/routes/settings.js +35 -0
- package/build/routes/tasks.d.ts +2 -0
- package/build/routes/tasks.js +133 -0
- package/build/routes/users.d.ts +2 -0
- package/build/routes/users.js +206 -0
- package/build/routes/workflows/config.d.ts +2 -0
- package/build/routes/workflows/config.js +123 -0
- package/build/routes/workflows/discovery.d.ts +2 -0
- package/build/routes/workflows/discovery.js +146 -0
- package/build/routes/workflows/index.d.ts +2 -0
- package/build/routes/workflows/index.js +18 -0
- package/build/routes/workflows/invocation.d.ts +2 -0
- package/build/routes/workflows/invocation.js +162 -0
- package/build/routes/yaml-workflows/crud.d.ts +2 -0
- package/build/routes/yaml-workflows/crud.js +276 -0
- package/build/routes/yaml-workflows/deployment.d.ts +2 -0
- package/build/routes/yaml-workflows/deployment.js +179 -0
- package/build/routes/yaml-workflows/helpers.d.ts +2 -0
- package/build/routes/yaml-workflows/helpers.js +8 -0
- package/build/routes/yaml-workflows/index.d.ts +2 -0
- package/build/routes/yaml-workflows/index.js +21 -0
- package/build/routes/yaml-workflows/versions.d.ts +2 -0
- package/build/routes/yaml-workflows/versions.js +116 -0
- package/build/scripts/process-helpers.d.ts +11 -0
- package/build/scripts/process-helpers.js +59 -0
- package/build/scripts/process.d.ts +18 -0
- package/build/scripts/process.js +191 -0
- package/build/scripts/token.d.ts +13 -0
- package/build/scripts/token.js +42 -0
- package/build/services/auth/bot-api-key.d.ts +32 -0
- package/build/services/auth/bot-api-key.js +112 -0
- package/build/services/auth/delegation.d.ts +20 -0
- package/build/services/auth/delegation.js +53 -0
- package/build/services/auth/service-token.d.ts +23 -0
- package/build/services/auth/service-token.js +105 -0
- package/build/services/config/cache.d.ts +2 -0
- package/build/services/config/cache.js +24 -0
- package/build/services/config/index.d.ts +4 -0
- package/build/services/config/index.js +13 -0
- package/build/services/config/provider.d.ts +2 -0
- package/build/services/config/provider.js +30 -0
- package/build/services/config/read.d.ts +3 -0
- package/build/services/config/read.js +68 -0
- package/build/services/config/sql.d.ts +14 -0
- package/build/services/config/sql.js +58 -0
- package/build/services/config/write.d.ts +5 -0
- package/build/services/config/write.js +61 -0
- package/build/services/controlplane/index.d.ts +47 -0
- package/build/services/controlplane/index.js +124 -0
- package/build/services/controlplane/quorum-bridge.d.ts +15 -0
- package/build/services/controlplane/quorum-bridge.js +62 -0
- package/build/services/controlplane/sql.d.ts +21 -0
- package/build/services/controlplane/sql.js +70 -0
- package/build/services/controlplane/types.d.ts +13 -0
- package/build/services/controlplane/types.js +3 -0
- package/build/services/cron/index.d.ts +46 -0
- package/build/services/cron/index.js +199 -0
- package/build/services/db/index.d.ts +3 -0
- package/build/services/db/index.js +19 -0
- package/build/services/db/migrate.d.ts +1 -0
- package/build/services/db/migrate.js +78 -0
- package/build/services/dba.d.ts +28 -0
- package/build/services/dba.js +32 -0
- package/build/services/escalation/bulk.d.ts +27 -0
- package/build/services/escalation/bulk.js +57 -0
- package/build/services/escalation/crud.d.ts +47 -0
- package/build/services/escalation/crud.js +150 -0
- package/build/services/escalation/index.d.ts +4 -0
- package/build/services/escalation/index.js +20 -0
- package/build/services/escalation/queries.d.ts +37 -0
- package/build/services/escalation/queries.js +163 -0
- package/build/services/escalation/sql.d.ts +21 -0
- package/build/services/escalation/sql.js +135 -0
- package/build/services/escalation/types.d.ts +43 -0
- package/build/services/escalation/types.js +13 -0
- package/build/services/escalation-strategy/default.d.ts +12 -0
- package/build/services/escalation-strategy/default.js +17 -0
- package/build/services/escalation-strategy/index.d.ts +21 -0
- package/build/services/escalation-strategy/index.js +32 -0
- package/build/services/escalation-strategy/mcp.d.ts +13 -0
- package/build/services/escalation-strategy/mcp.js +51 -0
- package/build/services/events/index.d.ts +37 -0
- package/build/services/events/index.js +64 -0
- package/build/services/events/memory.d.ts +27 -0
- package/build/services/events/memory.js +40 -0
- package/build/services/events/nats.d.ts +29 -0
- package/build/services/events/nats.js +50 -0
- package/build/services/events/publish.d.ts +72 -0
- package/build/services/events/publish.js +106 -0
- package/build/services/events/socketio.d.ts +33 -0
- package/build/services/events/socketio.js +70 -0
- package/build/services/export/client.d.ts +2 -0
- package/build/services/export/client.js +16 -0
- package/build/services/export/index.d.ts +39 -0
- package/build/services/export/index.js +158 -0
- package/build/services/export/post-process.d.ts +16 -0
- package/build/services/export/post-process.js +133 -0
- package/build/services/export/types.d.ts +25 -0
- package/build/services/export/types.js +2 -0
- package/build/services/hotmesh-utils.d.ts +61 -0
- package/build/services/hotmesh-utils.js +204 -0
- package/build/services/iam/activity.d.ts +52 -0
- package/build/services/iam/activity.js +59 -0
- package/build/services/iam/bots.d.ts +83 -0
- package/build/services/iam/bots.js +157 -0
- package/build/services/iam/context.d.ts +14 -0
- package/build/services/iam/context.js +61 -0
- package/build/services/iam/credentials.d.ts +42 -0
- package/build/services/iam/credentials.js +86 -0
- package/build/services/iam/envelope.d.ts +10 -0
- package/build/services/iam/envelope.js +32 -0
- package/build/services/iam/ephemeral.d.ts +50 -0
- package/build/services/iam/ephemeral.js +131 -0
- package/build/services/iam/index.d.ts +19 -0
- package/build/services/iam/index.js +37 -0
- package/build/services/iam/principal.d.ts +12 -0
- package/build/services/iam/principal.js +53 -0
- package/build/services/iam/resolve.d.ts +48 -0
- package/build/services/iam/resolve.js +89 -0
- package/build/services/insight/index.d.ts +30 -0
- package/build/services/insight/index.js +81 -0
- package/build/services/insight/prompts.d.ts +4 -0
- package/build/services/insight/prompts.js +15 -0
- package/build/services/interceptor/activities/config.d.ts +21 -0
- package/build/services/interceptor/activities/config.js +26 -0
- package/build/services/interceptor/activities/escalation.d.ts +58 -0
- package/build/services/interceptor/activities/escalation.js +110 -0
- package/build/services/interceptor/activities/index.d.ts +4 -0
- package/build/services/interceptor/activities/index.js +23 -0
- package/build/services/interceptor/activities/task.d.ts +65 -0
- package/build/services/interceptor/activities/task.js +168 -0
- package/build/services/interceptor/activities/workflow.d.ts +26 -0
- package/build/services/interceptor/activities/workflow.js +41 -0
- package/build/services/interceptor/activity-interceptor.d.ts +32 -0
- package/build/services/interceptor/activity-interceptor.js +86 -0
- package/build/services/interceptor/completion.d.ts +16 -0
- package/build/services/interceptor/completion.js +149 -0
- package/build/services/interceptor/context.d.ts +11 -0
- package/build/services/interceptor/context.js +20 -0
- package/build/services/interceptor/escalation.d.ts +26 -0
- package/build/services/interceptor/escalation.js +150 -0
- package/build/services/interceptor/index.d.ts +45 -0
- package/build/services/interceptor/index.js +160 -0
- package/build/services/interceptor/lifecycle.d.ts +44 -0
- package/build/services/interceptor/lifecycle.js +174 -0
- package/build/services/interceptor/state.d.ts +22 -0
- package/build/services/interceptor/state.js +36 -0
- package/build/services/interceptor/types.d.ts +43 -0
- package/build/services/interceptor/types.js +3 -0
- package/build/services/llm/detect.d.ts +16 -0
- package/build/services/llm/detect.js +33 -0
- package/build/services/llm/index.d.ts +34 -0
- package/build/services/llm/index.js +106 -0
- package/build/services/llm/providers/anthropic.d.ts +11 -0
- package/build/services/llm/providers/anthropic.js +85 -0
- package/build/services/llm/providers/openai.d.ts +9 -0
- package/build/services/llm/providers/openai.js +46 -0
- package/build/services/llm/translate.d.ts +66 -0
- package/build/services/llm/translate.js +192 -0
- package/build/services/llm/types.d.ts +64 -0
- package/build/services/llm/types.js +8 -0
- package/build/services/logger/index.d.ts +32 -0
- package/build/services/logger/index.js +69 -0
- package/build/services/logger/pino.d.ts +24 -0
- package/build/services/logger/pino.js +59 -0
- package/build/services/maintenance/index.d.ts +43 -0
- package/build/services/maintenance/index.js +183 -0
- package/build/services/mcp/adapter.d.ts +23 -0
- package/build/services/mcp/adapter.js +119 -0
- package/build/services/mcp/client/connection.d.ts +46 -0
- package/build/services/mcp/client/connection.js +280 -0
- package/build/services/mcp/client/index.d.ts +2 -0
- package/build/services/mcp/client/index.js +16 -0
- package/build/services/mcp/client/tools.d.ts +22 -0
- package/build/services/mcp/client/tools.js +118 -0
- package/build/services/mcp/db-server/index.d.ts +25 -0
- package/build/services/mcp/db-server/index.js +49 -0
- package/build/services/mcp/db-server/schemas.d.ts +52 -0
- package/build/services/mcp/db-server/schemas.js +34 -0
- package/build/services/mcp/db-server/tools.d.ts +5 -0
- package/build/services/mcp/db-server/tools.js +224 -0
- package/build/services/mcp/db.d.ts +26 -0
- package/build/services/mcp/db.js +141 -0
- package/build/services/mcp/index.d.ts +25 -0
- package/build/services/mcp/index.js +47 -0
- package/build/services/mcp/playwright-server/index.d.ts +14 -0
- package/build/services/mcp/playwright-server/index.js +25 -0
- package/build/services/mcp/playwright-server/lifecycle.d.ts +7 -0
- package/build/services/mcp/playwright-server/lifecycle.js +63 -0
- package/build/services/mcp/playwright-server/schemas.d.ts +81 -0
- package/build/services/mcp/playwright-server/schemas.js +48 -0
- package/build/services/mcp/playwright-server/tools.d.ts +2 -0
- package/build/services/mcp/playwright-server/tools.js +224 -0
- package/build/services/mcp/server.d.ts +26 -0
- package/build/services/mcp/server.js +286 -0
- package/build/services/mcp/sql.d.ts +12 -0
- package/build/services/mcp/sql.js +59 -0
- package/build/services/mcp/types.d.ts +17 -0
- package/build/services/mcp/types.js +3 -0
- package/build/services/mcp/vision-server.d.ts +15 -0
- package/build/services/mcp/vision-server.js +214 -0
- package/build/services/mcp/workflow-compiler-server.d.ts +15 -0
- package/build/services/mcp/workflow-compiler-server.js +206 -0
- package/build/services/mcp/workflow-server.d.ts +24 -0
- package/build/services/mcp/workflow-server.js +230 -0
- package/build/services/mcp-runs/enrichment.d.ts +12 -0
- package/build/services/mcp-runs/enrichment.js +39 -0
- package/build/services/mcp-runs/events.d.ts +6 -0
- package/build/services/mcp-runs/events.js +126 -0
- package/build/services/mcp-runs/execution-builder.d.ts +12 -0
- package/build/services/mcp-runs/execution-builder.js +100 -0
- package/build/services/mcp-runs/index.d.ts +4 -0
- package/build/services/mcp-runs/index.js +8 -0
- package/build/services/mcp-runs/queries.d.ts +28 -0
- package/build/services/mcp-runs/queries.js +71 -0
- package/build/services/mcp-runs/sql.d.ts +4 -0
- package/build/services/mcp-runs/sql.js +17 -0
- package/build/services/mcp-runs/types.d.ts +65 -0
- package/build/services/mcp-runs/types.js +2 -0
- package/build/services/namespace/index.d.ts +17 -0
- package/build/services/namespace/index.js +41 -0
- package/build/services/namespace/sql.d.ts +4 -0
- package/build/services/namespace/sql.js +23 -0
- package/build/services/namespace/types.d.ts +11 -0
- package/build/services/namespace/types.js +3 -0
- package/build/services/oauth/crypto.d.ts +19 -0
- package/build/services/oauth/crypto.js +95 -0
- package/build/services/oauth/db.d.ts +20 -0
- package/build/services/oauth/db.js +140 -0
- package/build/services/oauth/index.d.ts +12 -0
- package/build/services/oauth/index.js +77 -0
- package/build/services/oauth/providers/anthropic.d.ts +3 -0
- package/build/services/oauth/providers/anthropic.js +111 -0
- package/build/services/oauth/providers/github.d.ts +3 -0
- package/build/services/oauth/providers/github.js +46 -0
- package/build/services/oauth/providers/google.d.ts +3 -0
- package/build/services/oauth/providers/google.js +44 -0
- package/build/services/oauth/providers/index.d.ts +2 -0
- package/build/services/oauth/providers/index.js +7 -0
- package/build/services/oauth/providers/microsoft.d.ts +3 -0
- package/build/services/oauth/providers/microsoft.js +46 -0
- package/build/services/oauth/providers/mock.d.ts +3 -0
- package/build/services/oauth/providers/mock.js +76 -0
- package/build/services/oauth/providers/registry.d.ts +8 -0
- package/build/services/oauth/providers/registry.js +46 -0
- package/build/services/oauth/providers/types.d.ts +13 -0
- package/build/services/oauth/providers/types.js +2 -0
- package/build/services/oauth/state.d.ts +30 -0
- package/build/services/oauth/state.js +83 -0
- package/build/services/orchestrator/index.d.ts +23 -0
- package/build/services/orchestrator/index.js +156 -0
- package/build/services/orchestrator/types.d.ts +15 -0
- package/build/services/orchestrator/types.js +3 -0
- package/build/services/role/index.d.ts +47 -0
- package/build/services/role/index.js +136 -0
- package/build/services/role/sql.d.ts +14 -0
- package/build/services/role/sql.js +80 -0
- package/build/services/role/types.d.ts +11 -0
- package/build/services/role/types.js +3 -0
- package/build/services/storage/index.d.ts +12 -0
- package/build/services/storage/index.js +31 -0
- package/build/services/storage/local.d.ts +26 -0
- package/build/services/storage/local.js +129 -0
- package/build/services/storage/s3.d.ts +31 -0
- package/build/services/storage/s3.js +180 -0
- package/build/services/storage/types.d.ts +41 -0
- package/build/services/storage/types.js +2 -0
- package/build/services/task/crud.d.ts +21 -0
- package/build/services/task/crud.js +123 -0
- package/build/services/task/index.d.ts +4 -0
- package/build/services/task/index.js +20 -0
- package/build/services/task/process.d.ts +14 -0
- package/build/services/task/process.js +98 -0
- package/build/services/task/resolve.d.ts +12 -0
- package/build/services/task/resolve.js +49 -0
- package/build/services/task/sql.d.ts +19 -0
- package/build/services/task/sql.js +92 -0
- package/build/services/task/types.d.ts +56 -0
- package/build/services/task/types.js +9 -0
- package/build/services/telemetry/honeycomb.d.ts +53 -0
- package/build/services/telemetry/honeycomb.js +79 -0
- package/build/services/telemetry/index.d.ts +46 -0
- package/build/services/telemetry/index.js +68 -0
- package/build/services/user/auth.d.ts +7 -0
- package/build/services/user/auth.js +26 -0
- package/build/services/user/crud.d.ts +19 -0
- package/build/services/user/crud.js +151 -0
- package/build/services/user/index.d.ts +5 -0
- package/build/services/user/index.js +26 -0
- package/build/services/user/rbac.d.ts +15 -0
- package/build/services/user/rbac.js +32 -0
- package/build/services/user/roles.d.ts +7 -0
- package/build/services/user/roles.js +42 -0
- package/build/services/user/sql.d.ts +22 -0
- package/build/services/user/sql.js +45 -0
- package/build/services/user/types.d.ts +23 -0
- package/build/services/user/types.js +4 -0
- package/build/services/workers/registry.d.ts +10 -0
- package/build/services/workers/registry.js +26 -0
- package/build/services/workflow-invocation.d.ts +46 -0
- package/build/services/workflow-invocation.js +184 -0
- package/build/services/yaml-workflow/db-utils.d.ts +25 -0
- package/build/services/yaml-workflow/db-utils.js +93 -0
- package/build/services/yaml-workflow/db.d.ts +27 -0
- package/build/services/yaml-workflow/db.js +196 -0
- package/build/services/yaml-workflow/deployer-helpers.d.ts +13 -0
- package/build/services/yaml-workflow/deployer-helpers.js +133 -0
- package/build/services/yaml-workflow/deployer.d.ts +54 -0
- package/build/services/yaml-workflow/deployer.js +203 -0
- package/build/services/yaml-workflow/generator.d.ts +21 -0
- package/build/services/yaml-workflow/generator.js +117 -0
- package/build/services/yaml-workflow/index.d.ts +4 -0
- package/build/services/yaml-workflow/index.js +20 -0
- package/build/services/yaml-workflow/input-analyzer-helpers.d.ts +48 -0
- package/build/services/yaml-workflow/input-analyzer-helpers.js +183 -0
- package/build/services/yaml-workflow/input-analyzer.d.ts +30 -0
- package/build/services/yaml-workflow/input-analyzer.js +109 -0
- package/build/services/yaml-workflow/pattern-detector/array-source.d.ts +22 -0
- package/build/services/yaml-workflow/pattern-detector/array-source.js +120 -0
- package/build/services/yaml-workflow/pattern-detector/collapse.d.ts +27 -0
- package/build/services/yaml-workflow/pattern-detector/collapse.js +92 -0
- package/build/services/yaml-workflow/pattern-detector/index.d.ts +18 -0
- package/build/services/yaml-workflow/pattern-detector/index.js +22 -0
- package/build/services/yaml-workflow/pattern-detector/run-detection.d.ts +28 -0
- package/build/services/yaml-workflow/pattern-detector/run-detection.js +81 -0
- package/build/services/yaml-workflow/pattern-detector/types.d.ts +29 -0
- package/build/services/yaml-workflow/pattern-detector/types.js +8 -0
- package/build/services/yaml-workflow/pipeline/analyze.d.ts +11 -0
- package/build/services/yaml-workflow/pipeline/analyze.js +64 -0
- package/build/services/yaml-workflow/pipeline/build/dag.d.ts +25 -0
- package/build/services/yaml-workflow/pipeline/build/dag.js +254 -0
- package/build/services/yaml-workflow/pipeline/build/index.d.ts +20 -0
- package/build/services/yaml-workflow/pipeline/build/index.js +115 -0
- package/build/services/yaml-workflow/pipeline/build/iteration.d.ts +25 -0
- package/build/services/yaml-workflow/pipeline/build/iteration.js +231 -0
- package/build/services/yaml-workflow/pipeline/build/metadata.d.ts +15 -0
- package/build/services/yaml-workflow/pipeline/build/metadata.js +126 -0
- package/build/services/yaml-workflow/pipeline/build/transform.d.ts +17 -0
- package/build/services/yaml-workflow/pipeline/build/transform.js +94 -0
- package/build/services/yaml-workflow/pipeline/build/utils.d.ts +22 -0
- package/build/services/yaml-workflow/pipeline/build/utils.js +129 -0
- package/build/services/yaml-workflow/pipeline/build/wiring.d.ts +9 -0
- package/build/services/yaml-workflow/pipeline/build/wiring.js +148 -0
- package/build/services/yaml-workflow/pipeline/compile/index.d.ts +17 -0
- package/build/services/yaml-workflow/pipeline/compile/index.js +64 -0
- package/build/services/yaml-workflow/pipeline/compile/llm-call.d.ts +14 -0
- package/build/services/yaml-workflow/pipeline/compile/llm-call.js +153 -0
- package/build/services/yaml-workflow/pipeline/compile/parse-plan.d.ts +12 -0
- package/build/services/yaml-workflow/pipeline/compile/parse-plan.js +88 -0
- package/build/services/yaml-workflow/pipeline/compile/summarize.d.ts +39 -0
- package/build/services/yaml-workflow/pipeline/compile/summarize.js +174 -0
- package/build/services/yaml-workflow/pipeline/extract-helpers.d.ts +42 -0
- package/build/services/yaml-workflow/pipeline/extract-helpers.js +88 -0
- package/build/services/yaml-workflow/pipeline/extract.d.ts +24 -0
- package/build/services/yaml-workflow/pipeline/extract.js +235 -0
- package/build/services/yaml-workflow/pipeline/prompts.d.ts +15 -0
- package/build/services/yaml-workflow/pipeline/prompts.js +254 -0
- package/build/services/yaml-workflow/pipeline/validate.d.ts +12 -0
- package/build/services/yaml-workflow/pipeline/validate.js +111 -0
- package/build/services/yaml-workflow/sql.d.ts +19 -0
- package/build/services/yaml-workflow/sql.js +83 -0
- package/build/services/yaml-workflow/types.d.ts +223 -0
- package/build/services/yaml-workflow/types.js +8 -0
- package/build/services/yaml-workflow/workers/callbacks.d.ts +17 -0
- package/build/services/yaml-workflow/workers/callbacks.js +194 -0
- package/build/services/yaml-workflow/workers/events.d.ts +7 -0
- package/build/services/yaml-workflow/workers/events.js +49 -0
- package/build/services/yaml-workflow/workers/index.d.ts +4 -0
- package/build/services/yaml-workflow/workers/index.js +15 -0
- package/build/services/yaml-workflow/workers/register.d.ts +15 -0
- package/build/services/yaml-workflow/workers/register.js +233 -0
- package/build/services/yaml-workflow/workers/scope.d.ts +13 -0
- package/build/services/yaml-workflow/workers/scope.js +37 -0
- package/build/start/adapters.d.ts +6 -0
- package/build/start/adapters.js +80 -0
- package/build/start/config.d.ts +10 -0
- package/build/start/config.js +88 -0
- package/build/start/index.d.ts +21 -0
- package/build/start/index.js +87 -0
- package/build/start/server.d.ts +6 -0
- package/build/start/server.js +46 -0
- package/build/start/workers.d.ts +32 -0
- package/build/start/workers.js +144 -0
- package/build/system/activities/claude-code.d.ts +56 -0
- package/build/system/activities/claude-code.js +258 -0
- package/build/system/activities/file-storage.d.ts +31 -0
- package/build/system/activities/file-storage.js +71 -0
- package/build/system/activities/http.d.ts +27 -0
- package/build/system/activities/http.js +56 -0
- package/build/system/activities/oauth.d.ts +39 -0
- package/build/system/activities/oauth.js +33 -0
- package/build/system/activities/triage/cache.d.ts +7 -0
- package/build/system/activities/triage/cache.js +10 -0
- package/build/system/activities/triage/context.d.ts +21 -0
- package/build/system/activities/triage/context.js +92 -0
- package/build/system/activities/triage/discovery.d.ts +25 -0
- package/build/system/activities/triage/discovery.js +170 -0
- package/build/system/activities/triage/index.d.ts +5 -0
- package/build/system/activities/triage/index.js +22 -0
- package/build/system/activities/triage/llm.d.ts +9 -0
- package/build/system/activities/triage/llm.js +34 -0
- package/build/system/activities/triage/tools.d.ts +24 -0
- package/build/system/activities/triage/tools.js +178 -0
- package/build/system/index.d.ts +16 -0
- package/build/system/index.js +100 -0
- package/build/system/mcp-servers/claude-code.d.ts +17 -0
- package/build/system/mcp-servers/claude-code.js +110 -0
- package/build/system/mcp-servers/db-query/index.d.ts +25 -0
- package/build/system/mcp-servers/db-query/index.js +49 -0
- package/build/system/mcp-servers/db-query/schemas.d.ts +52 -0
- package/build/system/mcp-servers/db-query/schemas.js +34 -0
- package/build/system/mcp-servers/db-query/tools.d.ts +5 -0
- package/build/system/mcp-servers/db-query/tools.js +224 -0
- package/build/system/mcp-servers/document-vision.d.ts +15 -0
- package/build/system/mcp-servers/document-vision.js +228 -0
- package/build/system/mcp-servers/file-storage.d.ts +4 -0
- package/build/system/mcp-servers/file-storage.js +101 -0
- package/build/system/mcp-servers/http-fetch.d.ts +4 -0
- package/build/system/mcp-servers/http-fetch.js +100 -0
- package/build/system/mcp-servers/human-queue.d.ts +26 -0
- package/build/system/mcp-servers/human-queue.js +287 -0
- package/build/system/mcp-servers/oauth.d.ts +11 -0
- package/build/system/mcp-servers/oauth.js +100 -0
- package/build/system/mcp-servers/playwright/browser-lifecycle.d.ts +26 -0
- package/build/system/mcp-servers/playwright/browser-lifecycle.js +125 -0
- package/build/system/mcp-servers/playwright/index.d.ts +25 -0
- package/build/system/mcp-servers/playwright/index.js +42 -0
- package/build/system/mcp-servers/playwright/schemas.d.ts +383 -0
- package/build/system/mcp-servers/playwright/schemas.js +87 -0
- package/build/system/mcp-servers/playwright/tools-atomic.d.ts +2 -0
- package/build/system/mcp-servers/playwright/tools-atomic.js +9 -0
- package/build/system/mcp-servers/playwright/tools-navigation.d.ts +2 -0
- package/build/system/mcp-servers/playwright/tools-navigation.js +140 -0
- package/build/system/mcp-servers/playwright/tools-page-interaction.d.ts +2 -0
- package/build/system/mcp-servers/playwright/tools-page-interaction.js +162 -0
- package/build/system/mcp-servers/playwright/tools-run-script.d.ts +2 -0
- package/build/system/mcp-servers/playwright/tools-run-script.js +190 -0
- package/build/system/mcp-servers/playwright/types.d.ts +8 -0
- package/build/system/mcp-servers/playwright/types.js +30 -0
- package/build/system/mcp-servers/playwright-cli/helpers.d.ts +11 -0
- package/build/system/mcp-servers/playwright-cli/helpers.js +20 -0
- package/build/system/mcp-servers/playwright-cli/index.d.ts +4 -0
- package/build/system/mcp-servers/playwright-cli/index.js +15 -0
- package/build/system/mcp-servers/playwright-cli/schemas.d.ts +219 -0
- package/build/system/mcp-servers/playwright-cli/schemas.js +75 -0
- package/build/system/mcp-servers/playwright-cli/tools-auth.d.ts +2 -0
- package/build/system/mcp-servers/playwright-cli/tools-auth.js +183 -0
- package/build/system/mcp-servers/playwright-cli/tools-capture.d.ts +2 -0
- package/build/system/mcp-servers/playwright-cli/tools-capture.js +267 -0
- package/build/system/mcp-servers/prompts.d.ts +4 -0
- package/build/system/mcp-servers/prompts.js +10 -0
- package/build/system/mcp-servers/workflow-compiler.d.ts +15 -0
- package/build/system/mcp-servers/workflow-compiler.js +230 -0
- package/build/system/mcp-servers/workflow.d.ts +24 -0
- package/build/system/mcp-servers/workflow.js +231 -0
- package/build/system/seed/index.d.ts +7 -0
- package/build/system/seed/index.js +36 -0
- package/build/system/seed/server-definitions.d.ts +1460 -0
- package/build/system/seed/server-definitions.js +160 -0
- package/build/system/seed/tool-manifests-browser.d.ts +577 -0
- package/build/system/seed/tool-manifests-browser.js +158 -0
- package/build/system/seed/tool-manifests-data.d.ts +322 -0
- package/build/system/seed/tool-manifests-data.js +173 -0
- package/build/system/seed/tool-manifests-escalation.d.ts +173 -0
- package/build/system/seed/tool-manifests-escalation.js +76 -0
- package/build/system/seed/tool-manifests-workflows.d.ts +211 -0
- package/build/system/seed/tool-manifests-workflows.js +136 -0
- package/build/system/workflows/mcp-deterministic/activities.d.ts +6 -0
- package/build/system/workflows/mcp-deterministic/activities.js +56 -0
- package/build/system/workflows/mcp-deterministic/index.d.ts +9 -0
- package/build/system/workflows/mcp-deterministic/index.js +72 -0
- package/build/system/workflows/mcp-query/activities/caches.d.ts +7 -0
- package/build/system/workflows/mcp-query/activities/caches.js +10 -0
- package/build/system/workflows/mcp-query/activities/discovery.d.ts +31 -0
- package/build/system/workflows/mcp-query/activities/discovery.js +172 -0
- package/build/system/workflows/mcp-query/activities/index.d.ts +4 -0
- package/build/system/workflows/mcp-query/activities/index.js +13 -0
- package/build/system/workflows/mcp-query/activities/llm.d.ts +8 -0
- package/build/system/workflows/mcp-query/activities/llm.js +33 -0
- package/build/system/workflows/mcp-query/activities/tool-executor.d.ts +5 -0
- package/build/system/workflows/mcp-query/activities/tool-executor.js +112 -0
- package/build/system/workflows/mcp-query/activities/tool-loader.d.ts +14 -0
- package/build/system/workflows/mcp-query/activities/tool-loader.js +93 -0
- package/build/system/workflows/mcp-query/index.d.ts +14 -0
- package/build/system/workflows/mcp-query/index.js +227 -0
- package/build/system/workflows/mcp-query/prompts.d.ts +4 -0
- package/build/system/workflows/mcp-query/prompts.js +101 -0
- package/build/system/workflows/mcp-query/strategy-advisors.d.ts +14 -0
- package/build/system/workflows/mcp-query/strategy-advisors.js +109 -0
- package/build/system/workflows/mcp-query/types.d.ts +10 -0
- package/build/system/workflows/mcp-query/types.js +3 -0
- package/build/system/workflows/mcp-query-router/activities.d.ts +6 -0
- package/build/system/workflows/mcp-query-router/activities.js +12 -0
- package/build/system/workflows/mcp-query-router/index.d.ts +13 -0
- package/build/system/workflows/mcp-query-router/index.js +107 -0
- package/build/system/workflows/mcp-query-router/prompts.d.ts +1 -0
- package/build/system/workflows/mcp-query-router/prompts.js +8 -0
- package/build/system/workflows/mcp-triage/index.d.ts +31 -0
- package/build/system/workflows/mcp-triage/index.js +222 -0
- package/build/system/workflows/mcp-triage/prompts.d.ts +7 -0
- package/build/system/workflows/mcp-triage/prompts.js +159 -0
- package/build/system/workflows/mcp-triage/response-builders.d.ts +17 -0
- package/build/system/workflows/mcp-triage/response-builders.js +96 -0
- package/build/system/workflows/mcp-triage/response.d.ts +8 -0
- package/build/system/workflows/mcp-triage/response.js +157 -0
- package/build/system/workflows/mcp-triage/types.d.ts +20 -0
- package/build/system/workflows/mcp-triage/types.js +3 -0
- package/build/system/workflows/mcp-triage-deterministic/activities.d.ts +4 -0
- package/build/system/workflows/mcp-triage-deterministic/activities.js +8 -0
- package/build/system/workflows/mcp-triage-deterministic/index.d.ts +12 -0
- package/build/system/workflows/mcp-triage-deterministic/index.js +83 -0
- package/build/system/workflows/mcp-triage-router/activities.d.ts +9 -0
- package/build/system/workflows/mcp-triage-router/activities.js +15 -0
- package/build/system/workflows/mcp-triage-router/index.d.ts +13 -0
- package/build/system/workflows/mcp-triage-router/index.js +122 -0
- package/build/tsconfig.tsbuildinfo +1 -0
- package/build/types/auth.d.ts +34 -0
- package/build/types/auth.js +2 -0
- package/build/types/config.d.ts +48 -0
- package/build/types/config.js +2 -0
- package/build/types/delegation.d.ts +41 -0
- package/build/types/delegation.js +2 -0
- package/build/types/discovery.d.ts +12 -0
- package/build/types/discovery.js +3 -0
- package/build/types/envelope.d.ts +53 -0
- package/build/types/envelope.js +2 -0
- package/build/types/escalation-strategy.d.ts +37 -0
- package/build/types/escalation-strategy.js +2 -0
- package/build/types/escalation.d.ts +39 -0
- package/build/types/escalation.js +21 -0
- package/build/types/events.d.ts +65 -0
- package/build/types/events.js +2 -0
- package/build/types/export.d.ts +78 -0
- package/build/types/export.js +11 -0
- package/build/types/index.d.ts +21 -0
- package/build/types/index.js +6 -0
- package/build/types/logger.d.ts +26 -0
- package/build/types/logger.js +2 -0
- package/build/types/maintenance.d.ts +24 -0
- package/build/types/maintenance.js +2 -0
- package/build/types/mcp.d.ts +80 -0
- package/build/types/mcp.js +2 -0
- package/build/types/oauth.d.ts +74 -0
- package/build/types/oauth.js +2 -0
- package/build/types/startup.d.ts +110 -0
- package/build/types/startup.js +2 -0
- package/build/types/task.d.ts +39 -0
- package/build/types/task.js +2 -0
- package/build/types/telemetry.d.ts +32 -0
- package/build/types/telemetry.js +2 -0
- package/build/types/tool-context.d.ts +68 -0
- package/build/types/tool-context.js +14 -0
- package/build/types/user.d.ts +18 -0
- package/build/types/user.js +2 -0
- package/build/types/workflow.d.ts +35 -0
- package/build/types/workflow.js +2 -0
- package/build/types/yaml-workflow.d.ts +101 -0
- package/build/types/yaml-workflow.js +5 -0
- package/build/vitest.config.d.ts +2 -0
- package/build/vitest.config.js +32 -0
- package/build/vitest.integration.config.d.ts +2 -0
- package/build/vitest.integration.config.js +25 -0
- package/build/workers/index.d.ts +6 -0
- package/build/workers/index.js +20 -0
- package/dashboard/dist/assets/AdminDashboard-jfacvOC7.js +2 -0
- package/dashboard/dist/assets/AdminDashboard-jfacvOC7.js.map +1 -0
- package/dashboard/dist/assets/AvailableEscalationsPage-BglLDoT8.js +2 -0
- package/dashboard/dist/assets/AvailableEscalationsPage-BglLDoT8.js.map +1 -0
- package/dashboard/dist/assets/BotPicker-D6FYW1Gt.js +2 -0
- package/dashboard/dist/assets/BotPicker-D6FYW1Gt.js.map +1 -0
- package/dashboard/dist/assets/CollapsibleSection-Cxk4wvjT.js +2 -0
- package/dashboard/dist/assets/CollapsibleSection-Cxk4wvjT.js.map +1 -0
- package/dashboard/dist/assets/ConfirmDeleteModal-FSXyKjaB.js +2 -0
- package/dashboard/dist/assets/ConfirmDeleteModal-FSXyKjaB.js.map +1 -0
- package/dashboard/dist/assets/CopyableId-CBdxWfp8.js +2 -0
- package/dashboard/dist/assets/CopyableId-CBdxWfp8.js.map +1 -0
- package/dashboard/dist/assets/CredentialsPage-Ikzsot0w.js +2 -0
- package/dashboard/dist/assets/CredentialsPage-Ikzsot0w.js.map +1 -0
- package/dashboard/dist/assets/CustomDurationPicker-CAninCbl.js +2 -0
- package/dashboard/dist/assets/CustomDurationPicker-CAninCbl.js.map +1 -0
- package/dashboard/dist/assets/DataTable-BDn1WBHS.js +2 -0
- package/dashboard/dist/assets/DataTable-BDn1WBHS.js.map +1 -0
- package/dashboard/dist/assets/EmptyState-2CmV-IaS.js +2 -0
- package/dashboard/dist/assets/EmptyState-2CmV-IaS.js.map +1 -0
- package/dashboard/dist/assets/EscalationsOverview-GXYFPASS.js +2 -0
- package/dashboard/dist/assets/EscalationsOverview-GXYFPASS.js.map +1 -0
- package/dashboard/dist/assets/EventTable-B01oJf6Y.js +2 -0
- package/dashboard/dist/assets/EventTable-B01oJf6Y.js.map +1 -0
- package/dashboard/dist/assets/Field-DuFBAYhu.js +2 -0
- package/dashboard/dist/assets/Field-DuFBAYhu.js.map +1 -0
- package/dashboard/dist/assets/FilterBar-Ck4K4rzu.js +2 -0
- package/dashboard/dist/assets/FilterBar-Ck4K4rzu.js.map +1 -0
- package/dashboard/dist/assets/McpOverview-JkvRcX2e.js +2 -0
- package/dashboard/dist/assets/McpOverview-JkvRcX2e.js.map +1 -0
- package/dashboard/dist/assets/McpQueryDetailPage-CUMqhQdS.js +2 -0
- package/dashboard/dist/assets/McpQueryDetailPage-CUMqhQdS.js.map +1 -0
- package/dashboard/dist/assets/McpQueryPage-DRRhw4nN.js +2 -0
- package/dashboard/dist/assets/McpQueryPage-DRRhw4nN.js.map +1 -0
- package/dashboard/dist/assets/McpRunDetailPage-CmPs5EvE.js +2 -0
- package/dashboard/dist/assets/McpRunDetailPage-CmPs5EvE.js.map +1 -0
- package/dashboard/dist/assets/McpRunsPage-Dl5Y2u6k.js +2 -0
- package/dashboard/dist/assets/McpRunsPage-Dl5Y2u6k.js.map +1 -0
- package/dashboard/dist/assets/Modal-B4rbIVAn.js +2 -0
- package/dashboard/dist/assets/Modal-B4rbIVAn.js.map +1 -0
- package/dashboard/dist/assets/OperatorDashboard-B56il28q.js +2 -0
- package/dashboard/dist/assets/OperatorDashboard-B56il28q.js.map +1 -0
- package/dashboard/dist/assets/PageHeader-CpWFly5S.js +2 -0
- package/dashboard/dist/assets/PageHeader-CpWFly5S.js.map +1 -0
- package/dashboard/dist/assets/PriorityBadge-DfQY9St9.js +2 -0
- package/dashboard/dist/assets/PriorityBadge-DfQY9St9.js.map +1 -0
- package/dashboard/dist/assets/ProcessDetailPage-CMLq4M7D.js +2 -0
- package/dashboard/dist/assets/ProcessDetailPage-CMLq4M7D.js.map +1 -0
- package/dashboard/dist/assets/ProcessesListPage-CZ_HF06v.js +2 -0
- package/dashboard/dist/assets/ProcessesListPage-CZ_HF06v.js.map +1 -0
- package/dashboard/dist/assets/RolePill-BTPa8L-P.js +2 -0
- package/dashboard/dist/assets/RolePill-BTPa8L-P.js.map +1 -0
- package/dashboard/dist/assets/RolesPage-9grZW7yR.js +2 -0
- package/dashboard/dist/assets/RolesPage-9grZW7yR.js.map +1 -0
- package/dashboard/dist/assets/RowActions-Dg-Fsm5O.js +2 -0
- package/dashboard/dist/assets/RowActions-Dg-Fsm5O.js.map +1 -0
- package/dashboard/dist/assets/SimpleMarkdown-CBlvaWP4.js +4 -0
- package/dashboard/dist/assets/SimpleMarkdown-CBlvaWP4.js.map +1 -0
- package/dashboard/dist/assets/StatCard-DlgF0CJC.js +2 -0
- package/dashboard/dist/assets/StatCard-DlgF0CJC.js.map +1 -0
- package/dashboard/dist/assets/StatusBadge-TlC4jiig.js +2 -0
- package/dashboard/dist/assets/StatusBadge-TlC4jiig.js.map +1 -0
- package/dashboard/dist/assets/StickyPagination-F9FZsRy9.js +2 -0
- package/dashboard/dist/assets/StickyPagination-F9FZsRy9.js.map +1 -0
- package/dashboard/dist/assets/SwimlaneTimeline-7SiwATsZ.js +2 -0
- package/dashboard/dist/assets/SwimlaneTimeline-7SiwATsZ.js.map +1 -0
- package/dashboard/dist/assets/TaskDetailPage-CbPVTakt.js +2 -0
- package/dashboard/dist/assets/TaskDetailPage-CbPVTakt.js.map +1 -0
- package/dashboard/dist/assets/TaskQueuePill-awmtb0qw.js +2 -0
- package/dashboard/dist/assets/TaskQueuePill-awmtb0qw.js.map +1 -0
- package/dashboard/dist/assets/TasksListPage-C_QF23c1.js +2 -0
- package/dashboard/dist/assets/TasksListPage-C_QF23c1.js.map +1 -0
- package/dashboard/dist/assets/TimeAgo-UPG6DoH8.js +2 -0
- package/dashboard/dist/assets/TimeAgo-UPG6DoH8.js.map +1 -0
- package/dashboard/dist/assets/TimestampCell-DoWMKg6w.js +2 -0
- package/dashboard/dist/assets/TimestampCell-DoWMKg6w.js.map +1 -0
- package/dashboard/dist/assets/UserName-DaP4YAKr.js +2 -0
- package/dashboard/dist/assets/UserName-DaP4YAKr.js.map +1 -0
- package/dashboard/dist/assets/VersionHistory-Bt7WBr6m.js +5 -0
- package/dashboard/dist/assets/VersionHistory-Bt7WBr6m.js.map +1 -0
- package/dashboard/dist/assets/WorkflowExecutionPage-DjtAQ3hy.js +2 -0
- package/dashboard/dist/assets/WorkflowExecutionPage-DjtAQ3hy.js.map +1 -0
- package/dashboard/dist/assets/WorkflowPill-CCDSVaQj.js +2 -0
- package/dashboard/dist/assets/WorkflowPill-CCDSVaQj.js.map +1 -0
- package/dashboard/dist/assets/WorkflowsDashboard-D8z9uBNB.js +2 -0
- package/dashboard/dist/assets/WorkflowsDashboard-D8z9uBNB.js.map +1 -0
- package/dashboard/dist/assets/WorkflowsOverview-D9OzzQqw.js +2 -0
- package/dashboard/dist/assets/WorkflowsOverview-D9OzzQqw.js.map +1 -0
- package/dashboard/dist/assets/YamlWorkflowDetailPage-DrDvvP62.js +3 -0
- package/dashboard/dist/assets/YamlWorkflowDetailPage-DrDvvP62.js.map +1 -0
- package/dashboard/dist/assets/YamlWorkflowsPage-COqiNCQK.js +2 -0
- package/dashboard/dist/assets/YamlWorkflowsPage-COqiNCQK.js.map +1 -0
- package/dashboard/dist/assets/bots-BkKVMbUW.js +2 -0
- package/dashboard/dist/assets/bots-BkKVMbUW.js.map +1 -0
- package/dashboard/dist/assets/constants-CgaZfe5d.js +2 -0
- package/dashboard/dist/assets/constants-CgaZfe5d.js.map +1 -0
- package/dashboard/dist/assets/escalation-columns-D6aqStaY.js +2 -0
- package/dashboard/dist/assets/escalation-columns-D6aqStaY.js.map +1 -0
- package/dashboard/dist/assets/escalation-qalymbKB.js +2 -0
- package/dashboard/dist/assets/escalation-qalymbKB.js.map +1 -0
- package/dashboard/dist/assets/format-gXZXQ-HJ.js +2 -0
- package/dashboard/dist/assets/format-gXZXQ-HJ.js.map +1 -0
- package/dashboard/dist/assets/helpers-0gSleuzT.js +2 -0
- package/dashboard/dist/assets/helpers-0gSleuzT.js.map +1 -0
- package/dashboard/dist/assets/index-BWvMHed7.js +6 -0
- package/dashboard/dist/assets/index-BWvMHed7.js.map +1 -0
- package/dashboard/dist/assets/index-BaszoPO_.css +1 -0
- package/dashboard/dist/assets/index-Cn2jyj9A.js +2 -0
- package/dashboard/dist/assets/index-Cn2jyj9A.js.map +1 -0
- package/dashboard/dist/assets/index-D8VH6K8B.js +54 -0
- package/dashboard/dist/assets/index-D8VH6K8B.js.map +1 -0
- package/dashboard/dist/assets/index-D9SYwJsi.js +3 -0
- package/dashboard/dist/assets/index-D9SYwJsi.js.map +1 -0
- package/dashboard/dist/assets/index-DTPzZr_X.js +2 -0
- package/dashboard/dist/assets/index-DTPzZr_X.js.map +1 -0
- package/dashboard/dist/assets/index-D_6AB5BE.js +2 -0
- package/dashboard/dist/assets/index-D_6AB5BE.js.map +1 -0
- package/dashboard/dist/assets/index-S9Ks2Lj2.js +2 -0
- package/dashboard/dist/assets/index-S9Ks2Lj2.js.map +1 -0
- package/dashboard/dist/assets/index-X85K5bHC.js +17 -0
- package/dashboard/dist/assets/index-X85K5bHC.js.map +1 -0
- package/dashboard/dist/assets/index-rjmgHlSH.js +2 -0
- package/dashboard/dist/assets/index-rjmgHlSH.js.map +1 -0
- package/dashboard/dist/assets/mcp-blCW6IL7.js +2 -0
- package/dashboard/dist/assets/mcp-blCW6IL7.js.map +1 -0
- package/dashboard/dist/assets/mcp-query-DoAyPbjC.js +2 -0
- package/dashboard/dist/assets/mcp-query-DoAyPbjC.js.map +1 -0
- package/dashboard/dist/assets/mcp-runs-ChPbpvXK.js +2 -0
- package/dashboard/dist/assets/mcp-runs-ChPbpvXK.js.map +1 -0
- package/dashboard/dist/assets/namespaces-BgbaC3ow.js +2 -0
- package/dashboard/dist/assets/namespaces-BgbaC3ow.js.map +1 -0
- package/dashboard/dist/assets/roles-ZNrqqnQl.js +2 -0
- package/dashboard/dist/assets/roles-ZNrqqnQl.js.map +1 -0
- package/dashboard/dist/assets/settings-eBRSE0mQ.js +2 -0
- package/dashboard/dist/assets/settings-eBRSE0mQ.js.map +1 -0
- package/dashboard/dist/assets/tasks-tRqClPns.js +2 -0
- package/dashboard/dist/assets/tasks-tRqClPns.js.map +1 -0
- package/dashboard/dist/assets/useFilterParams-BaXUAkYK.js +2 -0
- package/dashboard/dist/assets/useFilterParams-BaXUAkYK.js.map +1 -0
- package/dashboard/dist/assets/useNatsEvents-Xr43X1fG.js +2 -0
- package/dashboard/dist/assets/useNatsEvents-Xr43X1fG.js.map +1 -0
- package/dashboard/dist/assets/useYamlActivityEvents-BO51u8tm.js +2 -0
- package/dashboard/dist/assets/useYamlActivityEvents-BO51u8tm.js.map +1 -0
- package/dashboard/dist/assets/users-tMvNyOo8.js +2 -0
- package/dashboard/dist/assets/users-tMvNyOo8.js.map +1 -0
- package/dashboard/dist/assets/vendor-icons-ZTAKVwGc.js +292 -0
- package/dashboard/dist/assets/vendor-icons-ZTAKVwGc.js.map +1 -0
- package/dashboard/dist/assets/vendor-query-B2UbickB.js +18 -0
- package/dashboard/dist/assets/vendor-query-B2UbickB.js.map +1 -0
- package/dashboard/dist/assets/vendor-react-Cw8Gy8NJ.js +22 -0
- package/dashboard/dist/assets/vendor-react-Cw8Gy8NJ.js.map +1 -0
- package/dashboard/dist/assets/workflows-Cc4VHcrp.js +2 -0
- package/dashboard/dist/assets/workflows-Cc4VHcrp.js.map +1 -0
- package/dashboard/dist/assets/yaml-workflows-BL4V5CQy.js +2 -0
- package/dashboard/dist/assets/yaml-workflows-BL4V5CQy.js.map +1 -0
- package/dashboard/dist/index.html +20 -0
- package/dashboard/dist/logo512.png +0 -0
- package/package.json +96 -0
|
@@ -0,0 +1,151 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.attachRoles = attachRoles;
|
|
7
|
+
exports.createUser = createUser;
|
|
8
|
+
exports.getUser = getUser;
|
|
9
|
+
exports.getUserByExternalId = getUserByExternalId;
|
|
10
|
+
exports.getUserByEmail = getUserByEmail;
|
|
11
|
+
exports.updateUser = updateUser;
|
|
12
|
+
exports.deleteUser = deleteUser;
|
|
13
|
+
exports.listUsers = listUsers;
|
|
14
|
+
const bcryptjs_1 = __importDefault(require("bcryptjs"));
|
|
15
|
+
const db_1 = require("../db");
|
|
16
|
+
const sql_1 = require("./sql");
|
|
17
|
+
// ─── Private helpers (exported for internal use by auth.ts) ──────────────────
|
|
18
|
+
async function attachRoles(user) {
|
|
19
|
+
const pool = (0, db_1.getPool)();
|
|
20
|
+
const { rows } = await pool.query(sql_1.GET_ROLES_BY_USER_ID, [user.id]);
|
|
21
|
+
return { ...user, roles: rows };
|
|
22
|
+
}
|
|
23
|
+
async function attachRolesToMany(users) {
|
|
24
|
+
if (users.length === 0)
|
|
25
|
+
return [];
|
|
26
|
+
const pool = (0, db_1.getPool)();
|
|
27
|
+
const ids = users.map((u) => u.id);
|
|
28
|
+
const { rows } = await pool.query(sql_1.GET_ROLES_BY_USER_IDS, [ids]);
|
|
29
|
+
const roleMap = new Map();
|
|
30
|
+
for (const row of rows) {
|
|
31
|
+
const list = roleMap.get(row.user_id) || [];
|
|
32
|
+
list.push({ role: row.role, type: row.type, created_at: row.created_at });
|
|
33
|
+
roleMap.set(row.user_id, list);
|
|
34
|
+
}
|
|
35
|
+
return users.map((u) => ({ ...u, roles: roleMap.get(u.id) || [] }));
|
|
36
|
+
}
|
|
37
|
+
// ─── CRUD ─────────────────────────────────────────────────────────────────────
|
|
38
|
+
async function createUser(input) {
|
|
39
|
+
const pool = (0, db_1.getPool)();
|
|
40
|
+
const passwordHash = input.password
|
|
41
|
+
? await bcryptjs_1.default.hash(input.password, 10)
|
|
42
|
+
: null;
|
|
43
|
+
const { rows } = await pool.query(sql_1.INSERT_USER, [
|
|
44
|
+
input.external_id,
|
|
45
|
+
input.email || null,
|
|
46
|
+
input.display_name || null,
|
|
47
|
+
input.status || 'active',
|
|
48
|
+
input.metadata ? JSON.stringify(input.metadata) : null,
|
|
49
|
+
passwordHash,
|
|
50
|
+
input.oauth_provider || null,
|
|
51
|
+
input.oauth_provider_id || null,
|
|
52
|
+
]);
|
|
53
|
+
const user = rows[0];
|
|
54
|
+
if (input.roles && input.roles.length > 0) {
|
|
55
|
+
for (const r of input.roles) {
|
|
56
|
+
// Ensure the role exists in lt_roles (FK constraint)
|
|
57
|
+
await pool.query(sql_1.ENSURE_ROLE_EXISTS, [r.role]);
|
|
58
|
+
await pool.query(sql_1.INSERT_USER_ROLE_IGNORE, [user.id, r.role, r.type]);
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
return attachRoles(user);
|
|
62
|
+
}
|
|
63
|
+
async function getUser(id) {
|
|
64
|
+
const pool = (0, db_1.getPool)();
|
|
65
|
+
const { rows } = await pool.query(sql_1.GET_USER_BY_ID, [id]);
|
|
66
|
+
if (!rows[0])
|
|
67
|
+
return null;
|
|
68
|
+
return attachRoles(rows[0]);
|
|
69
|
+
}
|
|
70
|
+
async function getUserByExternalId(externalId) {
|
|
71
|
+
const pool = (0, db_1.getPool)();
|
|
72
|
+
const { rows } = await pool.query(sql_1.GET_USER_BY_EXTERNAL_ID, [externalId]);
|
|
73
|
+
if (!rows[0])
|
|
74
|
+
return null;
|
|
75
|
+
return attachRoles(rows[0]);
|
|
76
|
+
}
|
|
77
|
+
async function getUserByEmail(email) {
|
|
78
|
+
const pool = (0, db_1.getPool)();
|
|
79
|
+
const { rows } = await pool.query(sql_1.GET_USER_BY_EMAIL, [email]);
|
|
80
|
+
if (!rows[0])
|
|
81
|
+
return null;
|
|
82
|
+
return attachRoles(rows[0]);
|
|
83
|
+
}
|
|
84
|
+
async function updateUser(id, input) {
|
|
85
|
+
const pool = (0, db_1.getPool)();
|
|
86
|
+
const sets = [];
|
|
87
|
+
const values = [];
|
|
88
|
+
let idx = 1;
|
|
89
|
+
if (input.email !== undefined) {
|
|
90
|
+
sets.push(`email = $${idx++}`);
|
|
91
|
+
values.push(input.email);
|
|
92
|
+
}
|
|
93
|
+
if (input.display_name !== undefined) {
|
|
94
|
+
sets.push(`display_name = $${idx++}`);
|
|
95
|
+
values.push(input.display_name);
|
|
96
|
+
}
|
|
97
|
+
if (input.status !== undefined) {
|
|
98
|
+
sets.push(`status = $${idx++}`);
|
|
99
|
+
values.push(input.status);
|
|
100
|
+
}
|
|
101
|
+
if (input.metadata !== undefined) {
|
|
102
|
+
sets.push(`metadata = $${idx++}`);
|
|
103
|
+
values.push(JSON.stringify(input.metadata));
|
|
104
|
+
}
|
|
105
|
+
if (sets.length === 0) {
|
|
106
|
+
return getUser(id);
|
|
107
|
+
}
|
|
108
|
+
values.push(id);
|
|
109
|
+
const { rows } = await pool.query(`UPDATE lt_users SET ${sets.join(', ')} WHERE id = $${idx} RETURNING *`, values);
|
|
110
|
+
if (!rows[0])
|
|
111
|
+
return null;
|
|
112
|
+
return attachRoles(rows[0]);
|
|
113
|
+
}
|
|
114
|
+
async function deleteUser(id) {
|
|
115
|
+
const pool = (0, db_1.getPool)();
|
|
116
|
+
const { rowCount } = await pool.query(sql_1.DELETE_USER_BY_ID, [id]);
|
|
117
|
+
return (rowCount ?? 0) > 0;
|
|
118
|
+
}
|
|
119
|
+
async function listUsers(filters) {
|
|
120
|
+
const pool = (0, db_1.getPool)();
|
|
121
|
+
const conditions = [];
|
|
122
|
+
const values = [];
|
|
123
|
+
let idx = 1;
|
|
124
|
+
let needsJoin = false;
|
|
125
|
+
if (filters.role) {
|
|
126
|
+
needsJoin = true;
|
|
127
|
+
conditions.push(`r.role = $${idx++}`);
|
|
128
|
+
values.push(filters.role);
|
|
129
|
+
}
|
|
130
|
+
if (filters.roleType) {
|
|
131
|
+
needsJoin = true;
|
|
132
|
+
conditions.push(`r.type = $${idx++}`);
|
|
133
|
+
values.push(filters.roleType);
|
|
134
|
+
}
|
|
135
|
+
if (filters.status) {
|
|
136
|
+
conditions.push(`u.status = $${idx++}`);
|
|
137
|
+
values.push(filters.status);
|
|
138
|
+
}
|
|
139
|
+
const join = needsJoin ? 'INNER JOIN lt_user_roles r ON r.user_id = u.id' : '';
|
|
140
|
+
const where = conditions.length ? `WHERE ${conditions.join(' AND ')}` : '';
|
|
141
|
+
const limit = filters.limit || 50;
|
|
142
|
+
const offset = filters.offset || 0;
|
|
143
|
+
const [countResult, dataResult] = await Promise.all([
|
|
144
|
+
pool.query(`SELECT COUNT(DISTINCT u.id) FROM lt_users u ${join} ${where}`, values),
|
|
145
|
+
pool.query(`SELECT DISTINCT u.* FROM lt_users u ${join} ${where} ORDER BY u.created_at DESC LIMIT $${idx++} OFFSET $${idx++}`, [...values, limit, offset]),
|
|
146
|
+
]);
|
|
147
|
+
return {
|
|
148
|
+
users: await attachRolesToMany(dataResult.rows),
|
|
149
|
+
total: parseInt(countResult.rows[0].count, 10),
|
|
150
|
+
};
|
|
151
|
+
}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export { CreateUserInput, UpdateUserInput, VALID_ROLE_TYPES } from './types';
|
|
2
|
+
export { createUser, getUser, getUserByExternalId, getUserByEmail, updateUser, deleteUser, listUsers, } from './crud';
|
|
3
|
+
export { isValidRoleType, addUserRole, removeUserRole, getUserRoles, hasRole, hasRoleType, } from './roles';
|
|
4
|
+
export { isSuperAdmin, isGroupAdmin, canManageRole } from './rbac';
|
|
5
|
+
export { verifyPassword } from './auth';
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.verifyPassword = exports.canManageRole = exports.isGroupAdmin = exports.isSuperAdmin = exports.hasRoleType = exports.hasRole = exports.getUserRoles = exports.removeUserRole = exports.addUserRole = exports.isValidRoleType = exports.listUsers = exports.deleteUser = exports.updateUser = exports.getUserByEmail = exports.getUserByExternalId = exports.getUser = exports.createUser = exports.VALID_ROLE_TYPES = void 0;
|
|
4
|
+
var types_1 = require("./types");
|
|
5
|
+
Object.defineProperty(exports, "VALID_ROLE_TYPES", { enumerable: true, get: function () { return types_1.VALID_ROLE_TYPES; } });
|
|
6
|
+
var crud_1 = require("./crud");
|
|
7
|
+
Object.defineProperty(exports, "createUser", { enumerable: true, get: function () { return crud_1.createUser; } });
|
|
8
|
+
Object.defineProperty(exports, "getUser", { enumerable: true, get: function () { return crud_1.getUser; } });
|
|
9
|
+
Object.defineProperty(exports, "getUserByExternalId", { enumerable: true, get: function () { return crud_1.getUserByExternalId; } });
|
|
10
|
+
Object.defineProperty(exports, "getUserByEmail", { enumerable: true, get: function () { return crud_1.getUserByEmail; } });
|
|
11
|
+
Object.defineProperty(exports, "updateUser", { enumerable: true, get: function () { return crud_1.updateUser; } });
|
|
12
|
+
Object.defineProperty(exports, "deleteUser", { enumerable: true, get: function () { return crud_1.deleteUser; } });
|
|
13
|
+
Object.defineProperty(exports, "listUsers", { enumerable: true, get: function () { return crud_1.listUsers; } });
|
|
14
|
+
var roles_1 = require("./roles");
|
|
15
|
+
Object.defineProperty(exports, "isValidRoleType", { enumerable: true, get: function () { return roles_1.isValidRoleType; } });
|
|
16
|
+
Object.defineProperty(exports, "addUserRole", { enumerable: true, get: function () { return roles_1.addUserRole; } });
|
|
17
|
+
Object.defineProperty(exports, "removeUserRole", { enumerable: true, get: function () { return roles_1.removeUserRole; } });
|
|
18
|
+
Object.defineProperty(exports, "getUserRoles", { enumerable: true, get: function () { return roles_1.getUserRoles; } });
|
|
19
|
+
Object.defineProperty(exports, "hasRole", { enumerable: true, get: function () { return roles_1.hasRole; } });
|
|
20
|
+
Object.defineProperty(exports, "hasRoleType", { enumerable: true, get: function () { return roles_1.hasRoleType; } });
|
|
21
|
+
var rbac_1 = require("./rbac");
|
|
22
|
+
Object.defineProperty(exports, "isSuperAdmin", { enumerable: true, get: function () { return rbac_1.isSuperAdmin; } });
|
|
23
|
+
Object.defineProperty(exports, "isGroupAdmin", { enumerable: true, get: function () { return rbac_1.isGroupAdmin; } });
|
|
24
|
+
Object.defineProperty(exports, "canManageRole", { enumerable: true, get: function () { return rbac_1.canManageRole; } });
|
|
25
|
+
var auth_1 = require("./auth");
|
|
26
|
+
Object.defineProperty(exports, "verifyPassword", { enumerable: true, get: function () { return auth_1.verifyPassword; } });
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Is the user a superadmin? (global — can manage all users and roles)
|
|
3
|
+
*/
|
|
4
|
+
export declare function isSuperAdmin(userId: string): Promise<boolean>;
|
|
5
|
+
/**
|
|
6
|
+
* Is the user an admin of a specific role group?
|
|
7
|
+
* Returns true if the user has `type = 'admin'` or `type = 'superadmin'` for that role,
|
|
8
|
+
* OR if the user is a global superadmin (superadmin on any role).
|
|
9
|
+
*/
|
|
10
|
+
export declare function isGroupAdmin(userId: string, role: string): Promise<boolean>;
|
|
11
|
+
/**
|
|
12
|
+
* Can the actor manage members of the given role?
|
|
13
|
+
* Superadmins can manage any role. Admins can manage roles they belong to.
|
|
14
|
+
*/
|
|
15
|
+
export declare function canManageRole(actorId: string, role: string): Promise<boolean>;
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.isSuperAdmin = isSuperAdmin;
|
|
4
|
+
exports.isGroupAdmin = isGroupAdmin;
|
|
5
|
+
exports.canManageRole = canManageRole;
|
|
6
|
+
const db_1 = require("../db");
|
|
7
|
+
const roles_1 = require("./roles");
|
|
8
|
+
const sql_1 = require("./sql");
|
|
9
|
+
// ─── RBAC helpers ─────────────────────────────────────────────────────────────
|
|
10
|
+
/**
|
|
11
|
+
* Is the user a superadmin? (global — can manage all users and roles)
|
|
12
|
+
*/
|
|
13
|
+
async function isSuperAdmin(userId) {
|
|
14
|
+
return (0, roles_1.hasRoleType)(userId, 'superadmin');
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Is the user an admin of a specific role group?
|
|
18
|
+
* Returns true if the user has `type = 'admin'` or `type = 'superadmin'` for that role,
|
|
19
|
+
* OR if the user is a global superadmin (superadmin on any role).
|
|
20
|
+
*/
|
|
21
|
+
async function isGroupAdmin(userId, role) {
|
|
22
|
+
const pool = (0, db_1.getPool)();
|
|
23
|
+
const { rows } = await pool.query(sql_1.IS_GROUP_ADMIN, [userId, role]);
|
|
24
|
+
return rows.length > 0;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Can the actor manage members of the given role?
|
|
28
|
+
* Superadmins can manage any role. Admins can manage roles they belong to.
|
|
29
|
+
*/
|
|
30
|
+
async function canManageRole(actorId, role) {
|
|
31
|
+
return isGroupAdmin(actorId, role);
|
|
32
|
+
}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { LTUserRole, LTRoleType } from '../../types';
|
|
2
|
+
export declare function isValidRoleType(type: string): type is LTRoleType;
|
|
3
|
+
export declare function addUserRole(userId: string, role: string, type: LTRoleType): Promise<LTUserRole>;
|
|
4
|
+
export declare function removeUserRole(userId: string, role: string): Promise<boolean>;
|
|
5
|
+
export declare function getUserRoles(userId: string): Promise<LTUserRole[]>;
|
|
6
|
+
export declare function hasRole(userId: string, role: string): Promise<boolean>;
|
|
7
|
+
export declare function hasRoleType(userId: string, type: LTRoleType): Promise<boolean>;
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.isValidRoleType = isValidRoleType;
|
|
4
|
+
exports.addUserRole = addUserRole;
|
|
5
|
+
exports.removeUserRole = removeUserRole;
|
|
6
|
+
exports.getUserRoles = getUserRoles;
|
|
7
|
+
exports.hasRole = hasRole;
|
|
8
|
+
exports.hasRoleType = hasRoleType;
|
|
9
|
+
const db_1 = require("../db");
|
|
10
|
+
const sql_1 = require("./sql");
|
|
11
|
+
const types_1 = require("./types");
|
|
12
|
+
// ─── Role management ──────────────────────────────────────────────────────────
|
|
13
|
+
function isValidRoleType(type) {
|
|
14
|
+
return types_1.VALID_ROLE_TYPES.includes(type);
|
|
15
|
+
}
|
|
16
|
+
async function addUserRole(userId, role, type) {
|
|
17
|
+
const pool = (0, db_1.getPool)();
|
|
18
|
+
// Ensure the role exists in lt_roles (FK constraint)
|
|
19
|
+
await pool.query(sql_1.ENSURE_ROLE_EXISTS, [role]);
|
|
20
|
+
const { rows } = await pool.query(sql_1.UPSERT_USER_ROLE, [userId, role, type]);
|
|
21
|
+
return rows[0];
|
|
22
|
+
}
|
|
23
|
+
async function removeUserRole(userId, role) {
|
|
24
|
+
const pool = (0, db_1.getPool)();
|
|
25
|
+
const { rowCount } = await pool.query(sql_1.DELETE_USER_ROLE, [userId, role]);
|
|
26
|
+
return (rowCount ?? 0) > 0;
|
|
27
|
+
}
|
|
28
|
+
async function getUserRoles(userId) {
|
|
29
|
+
const pool = (0, db_1.getPool)();
|
|
30
|
+
const { rows } = await pool.query(sql_1.GET_ROLES_BY_USER_ID, [userId]);
|
|
31
|
+
return rows;
|
|
32
|
+
}
|
|
33
|
+
async function hasRole(userId, role) {
|
|
34
|
+
const pool = (0, db_1.getPool)();
|
|
35
|
+
const { rows } = await pool.query(sql_1.HAS_ROLE, [userId, role]);
|
|
36
|
+
return rows.length > 0;
|
|
37
|
+
}
|
|
38
|
+
async function hasRoleType(userId, type) {
|
|
39
|
+
const pool = (0, db_1.getPool)();
|
|
40
|
+
const { rows } = await pool.query(sql_1.HAS_ROLE_TYPE, [userId, type]);
|
|
41
|
+
return rows.length > 0;
|
|
42
|
+
}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/** Ensure a role name exists in the lt_roles lookup table (FK target). */
|
|
2
|
+
export declare const ENSURE_ROLE_EXISTS = "INSERT INTO lt_roles (role) VALUES ($1) ON CONFLICT DO NOTHING";
|
|
3
|
+
/** Fetch roles for a single user, ordered by creation time. */
|
|
4
|
+
export declare const GET_ROLES_BY_USER_ID = "SELECT role, type, created_at FROM lt_user_roles WHERE user_id = $1 ORDER BY created_at";
|
|
5
|
+
/** Fetch a user row by external_id. */
|
|
6
|
+
export declare const GET_USER_BY_EXTERNAL_ID = "SELECT * FROM lt_users WHERE external_id = $1";
|
|
7
|
+
export declare const INSERT_USER = "INSERT INTO lt_users (external_id, email, display_name, status, metadata, password_hash, oauth_provider, oauth_provider_id)\n VALUES ($1, $2, $3, $4, $5, $6, $7, $8)\n RETURNING *";
|
|
8
|
+
export declare const GET_USER_BY_EMAIL = "SELECT * FROM lt_users WHERE email = $1 LIMIT 1";
|
|
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
|
+
export declare const GET_USER_BY_ID = "SELECT * FROM lt_users WHERE id = $1";
|
|
11
|
+
/** Fetch user + roles in a single query. Returns one row per role (or one row with nulls if no roles). */
|
|
12
|
+
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
|
+
export declare const DELETE_USER_BY_ID = "DELETE FROM lt_users WHERE id = $1";
|
|
14
|
+
/** Batch-load roles for many users (avoids N+1). */
|
|
15
|
+
export declare const GET_ROLES_BY_USER_IDS = "SELECT user_id, role, type, created_at FROM lt_user_roles WHERE user_id = ANY($1) ORDER BY created_at";
|
|
16
|
+
/** Upsert a user–role assignment, promoting the type if the row exists. */
|
|
17
|
+
export declare const UPSERT_USER_ROLE = "INSERT INTO lt_user_roles (user_id, role, type) VALUES ($1, $2, $3)\n ON CONFLICT (user_id, role) DO UPDATE SET type = EXCLUDED.type\n RETURNING role, type, created_at";
|
|
18
|
+
export declare const DELETE_USER_ROLE = "DELETE FROM lt_user_roles WHERE user_id = $1 AND role = $2";
|
|
19
|
+
export declare const HAS_ROLE = "SELECT 1 FROM lt_user_roles WHERE user_id = $1 AND role = $2 LIMIT 1";
|
|
20
|
+
export declare const HAS_ROLE_TYPE = "SELECT 1 FROM lt_user_roles WHERE user_id = $1 AND type = $2 LIMIT 1";
|
|
21
|
+
/** Check if a user is an admin (or superadmin) of a specific role group. */
|
|
22
|
+
export declare const IS_GROUP_ADMIN = "SELECT 1 FROM lt_user_roles\n WHERE user_id = $1\n AND (\n (role = $2 AND type IN ('admin', 'superadmin'))\n OR type = 'superadmin'\n )\n LIMIT 1";
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// ─── Shared queries (used by multiple modules) ──────────────────────────────
|
|
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;
|
|
5
|
+
/** Ensure a role name exists in the lt_roles lookup table (FK target). */
|
|
6
|
+
exports.ENSURE_ROLE_EXISTS = 'INSERT INTO lt_roles (role) VALUES ($1) ON CONFLICT DO NOTHING';
|
|
7
|
+
/** Fetch roles for a single user, ordered by creation time. */
|
|
8
|
+
exports.GET_ROLES_BY_USER_ID = 'SELECT role, type, created_at FROM lt_user_roles WHERE user_id = $1 ORDER BY created_at';
|
|
9
|
+
/** Fetch a user row by external_id. */
|
|
10
|
+
exports.GET_USER_BY_EXTERNAL_ID = 'SELECT * FROM lt_users WHERE external_id = $1';
|
|
11
|
+
// ─── User CRUD ───────────────────────────────────────────────────────────────
|
|
12
|
+
exports.INSERT_USER = `INSERT INTO lt_users (external_id, email, display_name, status, metadata, password_hash, oauth_provider, oauth_provider_id)
|
|
13
|
+
VALUES ($1, $2, $3, $4, $5, $6, $7, $8)
|
|
14
|
+
RETURNING *`;
|
|
15
|
+
exports.GET_USER_BY_EMAIL = `SELECT * FROM lt_users WHERE email = $1 LIMIT 1`;
|
|
16
|
+
exports.INSERT_USER_ROLE_IGNORE = `INSERT INTO lt_user_roles (user_id, role, type) VALUES ($1, $2, $3)
|
|
17
|
+
ON CONFLICT DO NOTHING`;
|
|
18
|
+
exports.GET_USER_BY_ID = 'SELECT * FROM lt_users WHERE id = $1';
|
|
19
|
+
/** Fetch user + roles in a single query. Returns one row per role (or one row with nulls if no roles). */
|
|
20
|
+
exports.GET_USER_WITH_ROLES = `SELECT u.id, u.external_id, u.display_name, u.status, u.metadata,
|
|
21
|
+
r.role, r.type AS role_type
|
|
22
|
+
FROM lt_users u
|
|
23
|
+
LEFT JOIN lt_user_roles r ON r.user_id = u.id
|
|
24
|
+
WHERE u.external_id = $1
|
|
25
|
+
ORDER BY r.created_at`;
|
|
26
|
+
exports.DELETE_USER_BY_ID = 'DELETE FROM lt_users WHERE id = $1';
|
|
27
|
+
// ─── Role management ─────────────────────────────────────────────────────────
|
|
28
|
+
/** Batch-load roles for many users (avoids N+1). */
|
|
29
|
+
exports.GET_ROLES_BY_USER_IDS = 'SELECT user_id, role, type, created_at FROM lt_user_roles WHERE user_id = ANY($1) ORDER BY created_at';
|
|
30
|
+
/** Upsert a user–role assignment, promoting the type if the row exists. */
|
|
31
|
+
exports.UPSERT_USER_ROLE = `INSERT INTO lt_user_roles (user_id, role, type) VALUES ($1, $2, $3)
|
|
32
|
+
ON CONFLICT (user_id, role) DO UPDATE SET type = EXCLUDED.type
|
|
33
|
+
RETURNING role, type, created_at`;
|
|
34
|
+
exports.DELETE_USER_ROLE = 'DELETE FROM lt_user_roles WHERE user_id = $1 AND role = $2';
|
|
35
|
+
exports.HAS_ROLE = 'SELECT 1 FROM lt_user_roles WHERE user_id = $1 AND role = $2 LIMIT 1';
|
|
36
|
+
exports.HAS_ROLE_TYPE = 'SELECT 1 FROM lt_user_roles WHERE user_id = $1 AND type = $2 LIMIT 1';
|
|
37
|
+
// ─── RBAC ────────────────────────────────────────────────────────────────────
|
|
38
|
+
/** Check if a user is an admin (or superadmin) of a specific role group. */
|
|
39
|
+
exports.IS_GROUP_ADMIN = `SELECT 1 FROM lt_user_roles
|
|
40
|
+
WHERE user_id = $1
|
|
41
|
+
AND (
|
|
42
|
+
(role = $2 AND type IN ('admin', 'superadmin'))
|
|
43
|
+
OR type = 'superadmin'
|
|
44
|
+
)
|
|
45
|
+
LIMIT 1`;
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import type { LTRoleType, LTUserStatus } from '../../types';
|
|
2
|
+
export declare const VALID_ROLE_TYPES: LTRoleType[];
|
|
3
|
+
export interface CreateUserInput {
|
|
4
|
+
external_id: string;
|
|
5
|
+
email?: string;
|
|
6
|
+
display_name?: string;
|
|
7
|
+
password?: string;
|
|
8
|
+
status?: LTUserStatus;
|
|
9
|
+
metadata?: Record<string, any>;
|
|
10
|
+
roles?: {
|
|
11
|
+
role: string;
|
|
12
|
+
type: LTRoleType;
|
|
13
|
+
}[];
|
|
14
|
+
/** OAuth identity link (set during OAuth auto-provisioning). */
|
|
15
|
+
oauth_provider?: string;
|
|
16
|
+
oauth_provider_id?: string;
|
|
17
|
+
}
|
|
18
|
+
export interface UpdateUserInput {
|
|
19
|
+
email?: string;
|
|
20
|
+
display_name?: string;
|
|
21
|
+
status?: LTUserStatus;
|
|
22
|
+
metadata?: Record<string, any>;
|
|
23
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* In-memory registry of active durable workers.
|
|
3
|
+
* Populated at startup after `Durable.Worker.create()`.
|
|
4
|
+
*/
|
|
5
|
+
export declare function registerWorker(name: string, taskQueue: string): void;
|
|
6
|
+
export declare function getRegisteredWorkers(): Map<string, {
|
|
7
|
+
taskQueue: string;
|
|
8
|
+
}>;
|
|
9
|
+
/** System workflows excluded from the overview by default. */
|
|
10
|
+
export declare const SYSTEM_WORKFLOWS: Set<string>;
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* In-memory registry of active durable workers.
|
|
4
|
+
* Populated at startup after `Durable.Worker.create()`.
|
|
5
|
+
*/
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
exports.SYSTEM_WORKFLOWS = void 0;
|
|
8
|
+
exports.registerWorker = registerWorker;
|
|
9
|
+
exports.getRegisteredWorkers = getRegisteredWorkers;
|
|
10
|
+
const workers = new Map();
|
|
11
|
+
function registerWorker(name, taskQueue) {
|
|
12
|
+
workers.set(name, { taskQueue });
|
|
13
|
+
}
|
|
14
|
+
function getRegisteredWorkers() {
|
|
15
|
+
return workers;
|
|
16
|
+
}
|
|
17
|
+
/** System workflows excluded from the overview by default. */
|
|
18
|
+
exports.SYSTEM_WORKFLOWS = new Set([
|
|
19
|
+
'mcpQuery',
|
|
20
|
+
'mcpDeterministic',
|
|
21
|
+
'mcpQueryRouter',
|
|
22
|
+
'mcpTriage',
|
|
23
|
+
'mcpTriageRouter',
|
|
24
|
+
'mcpTriageDeterministic',
|
|
25
|
+
'insightQuery',
|
|
26
|
+
]);
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Workflow invocation service.
|
|
3
|
+
*
|
|
4
|
+
* Encapsulates the business logic for starting a workflow by type:
|
|
5
|
+
* config lookup, role/scope enforcement, principal resolution,
|
|
6
|
+
* envelope building, and Durable client start.
|
|
7
|
+
*
|
|
8
|
+
* Transport-agnostic — called by HTTP routes, CLI, or other transports.
|
|
9
|
+
*/
|
|
10
|
+
export interface InvocationAuthContext {
|
|
11
|
+
/** JWT or API-key userId (external_id or UUID). */
|
|
12
|
+
userId: string;
|
|
13
|
+
/** High-level role from auth middleware (e.g. 'admin', 'superadmin'). */
|
|
14
|
+
role?: string;
|
|
15
|
+
/** Bot API key scopes (empty for human JWTs). */
|
|
16
|
+
scopes?: string[];
|
|
17
|
+
}
|
|
18
|
+
export interface InvokeWorkflowInput {
|
|
19
|
+
workflowType: string;
|
|
20
|
+
data: Record<string, any>;
|
|
21
|
+
metadata?: Record<string, any>;
|
|
22
|
+
/** Per-request execute_as override (admin-only). */
|
|
23
|
+
executeAs?: string;
|
|
24
|
+
auth: InvocationAuthContext;
|
|
25
|
+
}
|
|
26
|
+
export interface InvokeWorkflowResult {
|
|
27
|
+
workflowId: string;
|
|
28
|
+
}
|
|
29
|
+
export declare class InvocationError extends Error {
|
|
30
|
+
readonly statusCode: number;
|
|
31
|
+
constructor(message: string, statusCode: number);
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Start a workflow by its registered type.
|
|
35
|
+
*
|
|
36
|
+
* Validates config, roles, scopes, resolves principals, builds the
|
|
37
|
+
* LTEnvelope, and starts the workflow via the Durable client.
|
|
38
|
+
*
|
|
39
|
+
* Throws `InvocationError` with an appropriate status code on failure.
|
|
40
|
+
*/
|
|
41
|
+
export declare function invokeWorkflow(input: InvokeWorkflowInput): Promise<InvokeWorkflowResult>;
|
|
42
|
+
/**
|
|
43
|
+
* Check invocation_roles when present on a workflow config.
|
|
44
|
+
* Throws InvocationError if the user lacks the required role.
|
|
45
|
+
*/
|
|
46
|
+
export declare function checkInvocationRoles(workflowType: string, userId: string): Promise<void>;
|
|
@@ -0,0 +1,184 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Workflow invocation service.
|
|
4
|
+
*
|
|
5
|
+
* Encapsulates the business logic for starting a workflow by type:
|
|
6
|
+
* config lookup, role/scope enforcement, principal resolution,
|
|
7
|
+
* envelope building, and Durable client start.
|
|
8
|
+
*
|
|
9
|
+
* Transport-agnostic — called by HTTP routes, CLI, or other transports.
|
|
10
|
+
*/
|
|
11
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
12
|
+
if (k2 === undefined) k2 = k;
|
|
13
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
14
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
15
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
16
|
+
}
|
|
17
|
+
Object.defineProperty(o, k2, desc);
|
|
18
|
+
}) : (function(o, m, k, k2) {
|
|
19
|
+
if (k2 === undefined) k2 = k;
|
|
20
|
+
o[k2] = m[k];
|
|
21
|
+
}));
|
|
22
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
23
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
24
|
+
}) : function(o, v) {
|
|
25
|
+
o["default"] = v;
|
|
26
|
+
});
|
|
27
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
28
|
+
var ownKeys = function(o) {
|
|
29
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
30
|
+
var ar = [];
|
|
31
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
32
|
+
return ar;
|
|
33
|
+
};
|
|
34
|
+
return ownKeys(o);
|
|
35
|
+
};
|
|
36
|
+
return function (mod) {
|
|
37
|
+
if (mod && mod.__esModule) return mod;
|
|
38
|
+
var result = {};
|
|
39
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
40
|
+
__setModuleDefault(result, mod);
|
|
41
|
+
return result;
|
|
42
|
+
};
|
|
43
|
+
})();
|
|
44
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
45
|
+
exports.InvocationError = void 0;
|
|
46
|
+
exports.invokeWorkflow = invokeWorkflow;
|
|
47
|
+
exports.checkInvocationRoles = checkInvocationRoles;
|
|
48
|
+
const hotmesh_1 = require("@hotmeshio/hotmesh");
|
|
49
|
+
const workers_1 = require("../workers");
|
|
50
|
+
const configService = __importStar(require("./config"));
|
|
51
|
+
const userService = __importStar(require("./user"));
|
|
52
|
+
const defaults_1 = require("../modules/defaults");
|
|
53
|
+
const registry_1 = require("./workers/registry");
|
|
54
|
+
const principal_1 = require("./iam/principal");
|
|
55
|
+
// ── Error types ─────────────────────────────────────────────────────────────
|
|
56
|
+
class InvocationError extends Error {
|
|
57
|
+
constructor(message, statusCode) {
|
|
58
|
+
super(message);
|
|
59
|
+
this.statusCode = statusCode;
|
|
60
|
+
this.name = 'InvocationError';
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
exports.InvocationError = InvocationError;
|
|
64
|
+
// ── Service ─────────────────────────────────────────────────────────────────
|
|
65
|
+
/**
|
|
66
|
+
* Start a workflow by its registered type.
|
|
67
|
+
*
|
|
68
|
+
* Validates config, roles, scopes, resolves principals, builds the
|
|
69
|
+
* LTEnvelope, and starts the workflow via the Durable client.
|
|
70
|
+
*
|
|
71
|
+
* Throws `InvocationError` with an appropriate status code on failure.
|
|
72
|
+
*/
|
|
73
|
+
async function invokeWorkflow(input) {
|
|
74
|
+
const { workflowType, data, metadata, executeAs: executeAsOverride, auth } = input;
|
|
75
|
+
// 1. Look up workflow config and resolve task queue
|
|
76
|
+
const taskQueue = await resolveTaskQueue(workflowType);
|
|
77
|
+
// 2. Enforce bot API key scopes
|
|
78
|
+
const authScopes = auth.scopes ?? [];
|
|
79
|
+
if (authScopes.length > 0 && !authScopes.includes('workflow:invoke')) {
|
|
80
|
+
throw new InvocationError('API key scope does not include workflow:invoke', 403);
|
|
81
|
+
}
|
|
82
|
+
// 3. Validate inputs
|
|
83
|
+
if (!data || typeof data !== 'object') {
|
|
84
|
+
throw new InvocationError('Request body must include a data object', 400);
|
|
85
|
+
}
|
|
86
|
+
if (executeAsOverride && auth.role !== 'admin' && auth.role !== 'superadmin') {
|
|
87
|
+
throw new InvocationError('execute_as override requires admin role', 403);
|
|
88
|
+
}
|
|
89
|
+
// 4. Resolve principals and build envelope
|
|
90
|
+
const wfConfig = await configService.getWorkflowConfig(workflowType);
|
|
91
|
+
const envelope = await buildEnvelope(data, metadata ?? {}, auth.userId, executeAsOverride, wfConfig?.execute_as ?? undefined);
|
|
92
|
+
// 5. Start workflow
|
|
93
|
+
const client = (0, workers_1.createClient)();
|
|
94
|
+
const workflowId = `${workflowType}-${hotmesh_1.Durable.guid()}`;
|
|
95
|
+
await client.workflow.start({
|
|
96
|
+
args: [envelope],
|
|
97
|
+
taskQueue,
|
|
98
|
+
workflowName: workflowType,
|
|
99
|
+
workflowId,
|
|
100
|
+
expire: defaults_1.JOB_EXPIRE_SECS,
|
|
101
|
+
entity: workflowType,
|
|
102
|
+
});
|
|
103
|
+
return { workflowId };
|
|
104
|
+
}
|
|
105
|
+
// ── Internal helpers ────────────────────────────────────────────────────────
|
|
106
|
+
/**
|
|
107
|
+
* Resolve the task queue for a workflow type. Checks the config table
|
|
108
|
+
* first (with invocable/role guards), then falls back to active workers.
|
|
109
|
+
*/
|
|
110
|
+
async function resolveTaskQueue(workflowType) {
|
|
111
|
+
const wfConfig = await configService.getWorkflowConfig(workflowType);
|
|
112
|
+
if (wfConfig) {
|
|
113
|
+
if (!wfConfig.invocable) {
|
|
114
|
+
throw new InvocationError('Workflow is not invocable', 403);
|
|
115
|
+
}
|
|
116
|
+
if (!wfConfig.task_queue) {
|
|
117
|
+
throw new InvocationError('Workflow has no task_queue configured', 400);
|
|
118
|
+
}
|
|
119
|
+
return wfConfig.task_queue;
|
|
120
|
+
}
|
|
121
|
+
// No config — fall back to active worker registry
|
|
122
|
+
const worker = (0, registry_1.getRegisteredWorkers)().get(workflowType);
|
|
123
|
+
if (!worker) {
|
|
124
|
+
throw new InvocationError('Workflow not found (no config and no active worker)', 404);
|
|
125
|
+
}
|
|
126
|
+
return worker.taskQueue;
|
|
127
|
+
}
|
|
128
|
+
/**
|
|
129
|
+
* Check invocation_roles when present on a workflow config.
|
|
130
|
+
* Throws InvocationError if the user lacks the required role.
|
|
131
|
+
*/
|
|
132
|
+
async function checkInvocationRoles(workflowType, userId) {
|
|
133
|
+
const wfConfig = await configService.getWorkflowConfig(workflowType);
|
|
134
|
+
if (!wfConfig || wfConfig.invocation_roles.length === 0)
|
|
135
|
+
return;
|
|
136
|
+
const user = await userService.getUserByExternalId(userId);
|
|
137
|
+
if (!user) {
|
|
138
|
+
throw new InvocationError('User not registered', 403);
|
|
139
|
+
}
|
|
140
|
+
const userRoles = user.roles.map((r) => r.role);
|
|
141
|
+
const hasInvocationRole = wfConfig.invocation_roles.some((r) => userRoles.includes(r));
|
|
142
|
+
if (!hasInvocationRole) {
|
|
143
|
+
const isSuperAdmin = user.roles.some((r) => r.type === 'superadmin');
|
|
144
|
+
if (!isSuperAdmin) {
|
|
145
|
+
throw new InvocationError('Insufficient role for invocation', 403);
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
/**
|
|
150
|
+
* Build the LTEnvelope with IAM context.
|
|
151
|
+
*/
|
|
152
|
+
async function buildEnvelope(data, metadata, userId, executeAsOverride, configExecuteAs) {
|
|
153
|
+
const executeAs = executeAsOverride ?? configExecuteAs;
|
|
154
|
+
let principal;
|
|
155
|
+
let initiatingPrincipal;
|
|
156
|
+
if (executeAs) {
|
|
157
|
+
const [botP, userP] = await Promise.all([
|
|
158
|
+
(0, principal_1.resolvePrincipal)(executeAs),
|
|
159
|
+
userId ? (0, principal_1.resolvePrincipal)(userId) : Promise.resolve(null),
|
|
160
|
+
]);
|
|
161
|
+
principal = botP ?? undefined;
|
|
162
|
+
initiatingPrincipal = userP ?? undefined;
|
|
163
|
+
}
|
|
164
|
+
else if (userId) {
|
|
165
|
+
principal = (await (0, principal_1.resolvePrincipal)(userId)) ?? undefined;
|
|
166
|
+
}
|
|
167
|
+
const resolvedUserId = principal?.id ?? userId;
|
|
168
|
+
const resolvedInitiatorId = initiatingPrincipal?.id ?? userId;
|
|
169
|
+
return {
|
|
170
|
+
data,
|
|
171
|
+
metadata,
|
|
172
|
+
lt: {
|
|
173
|
+
userId: executeAs ? principal?.id ?? executeAs : resolvedUserId,
|
|
174
|
+
principal: principal ?? undefined,
|
|
175
|
+
scopes: ['workflow:invoke'],
|
|
176
|
+
...(executeAs && userId
|
|
177
|
+
? {
|
|
178
|
+
initiatedBy: resolvedInitiatorId,
|
|
179
|
+
initiatingPrincipal: initiatingPrincipal ?? undefined,
|
|
180
|
+
}
|
|
181
|
+
: {}),
|
|
182
|
+
},
|
|
183
|
+
};
|
|
184
|
+
}
|