n8n 2.19.1 → 2.20.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/dist/build.tsbuildinfo +1 -1
- package/dist/chat/chat-execution-manager.js +7 -1
- package/dist/chat/chat-execution-manager.js.map +1 -1
- package/dist/collaboration/collaboration.service.d.ts +1 -0
- package/dist/collaboration/collaboration.service.js +31 -0
- package/dist/collaboration/collaboration.service.js.map +1 -1
- package/dist/commands/execute.d.ts +2 -2
- package/dist/commands/export/credentials.d.ts +2 -2
- package/dist/commands/export/credentials.js +1 -1
- package/dist/commands/export/credentials.js.map +1 -1
- package/dist/commands/export/workflow.d.ts +4 -4
- package/dist/commands/import/credentials.d.ts +12 -2
- package/dist/commands/import/credentials.js +89 -11
- package/dist/commands/import/credentials.js.map +1 -1
- package/dist/commands/import/workflow.d.ts +2 -2
- package/dist/commands/ttwf/generate.d.ts +3 -3
- package/dist/controllers/e2e.controller.js +1 -1
- package/dist/controllers/e2e.controller.js.map +1 -1
- package/dist/controllers/oauth/oauth2-credential.controller.d.ts +6 -4
- package/dist/controllers/oauth/oauth2-credential.controller.js +12 -5
- package/dist/controllers/oauth/oauth2-credential.controller.js.map +1 -1
- package/dist/controllers/project.controller.d.ts +1 -0
- package/dist/controllers/project.controller.js +13 -0
- package/dist/controllers/project.controller.js.map +1 -1
- package/dist/credentials/credentials.controller.js +1 -1
- package/dist/credentials/credentials.controller.js.map +1 -1
- package/dist/credentials/credentials.service.d.ts +2 -2
- package/dist/credentials/credentials.service.ee.js +2 -2
- package/dist/credentials/credentials.service.ee.js.map +1 -1
- package/dist/credentials/credentials.service.js +13 -16
- package/dist/credentials/credentials.service.js.map +1 -1
- package/dist/credentials/dynamic-credentials-proxy.js +1 -1
- package/dist/credentials/dynamic-credentials-proxy.js.map +1 -1
- package/dist/credentials-helper.d.ts +1 -0
- package/dist/credentials-helper.js +12 -4
- package/dist/credentials-helper.js.map +1 -1
- package/dist/credentials-overwrites.js +2 -2
- package/dist/credentials-overwrites.js.map +1 -1
- package/dist/evaluation.ee/test-runner/evaluation-metrics.ee.d.ts +5 -0
- package/dist/evaluation.ee/test-runner/evaluation-metrics.ee.js +22 -12
- package/dist/evaluation.ee/test-runner/evaluation-metrics.ee.js.map +1 -1
- package/dist/evaluation.ee/test-runner/test-runner.service.ee.d.ts +4 -2
- package/dist/evaluation.ee/test-runner/test-runner.service.ee.js +152 -89
- package/dist/evaluation.ee/test-runner/test-runner.service.ee.js.map +1 -1
- package/dist/evaluation.ee/test-runs.controller.ee.d.ts +8 -2
- package/dist/evaluation.ee/test-runs.controller.ee.js +31 -5
- package/dist/evaluation.ee/test-runs.controller.ee.js.map +1 -1
- package/dist/eventbus/event-message-classes/index.d.ts +3 -2
- package/dist/eventbus/event-message-classes/index.js +11 -1
- package/dist/eventbus/event-message-classes/index.js.map +1 -1
- package/dist/eventbus/message-event-bus/message-event-bus.d.ts +5 -2
- package/dist/eventbus/message-event-bus/message-event-bus.js +101 -73
- package/dist/eventbus/message-event-bus/message-event-bus.js.map +1 -1
- package/dist/eventbus/message-event-bus-writer/message-event-bus-log-writer.d.ts +3 -0
- package/dist/eventbus/message-event-bus-writer/message-event-bus-log-writer.js +3 -1
- package/dist/eventbus/message-event-bus-writer/message-event-bus-log-writer.js.map +1 -1
- package/dist/eventbus/message-event-bus-writer/resolve-event-log-path.d.ts +12 -0
- package/dist/eventbus/message-event-bus-writer/resolve-event-log-path.js +34 -0
- package/dist/eventbus/message-event-bus-writer/resolve-event-log-path.js.map +1 -0
- package/dist/execution-lifecycle/execute-error-workflow.js +1 -1
- package/dist/execution-lifecycle/execute-error-workflow.js.map +1 -1
- package/dist/executions/execution-recovery.service.d.ts +1 -1
- package/dist/executions/execution-recovery.service.js +11 -6
- package/dist/executions/execution-recovery.service.js.map +1 -1
- package/dist/executions/execution.service.d.ts +7 -2
- package/dist/executions/execution.service.js +18 -1
- package/dist/executions/execution.service.js.map +1 -1
- package/dist/executions/executions.controller.d.ts +1 -3
- package/dist/executions/executions.controller.js +3 -17
- package/dist/executions/executions.controller.js.map +1 -1
- package/dist/instance-settings-loader/instance-settings-loader.service.d.ts +3 -1
- package/dist/instance-settings-loader/instance-settings-loader.service.js +6 -2
- package/dist/instance-settings-loader/instance-settings-loader.service.js.map +1 -1
- package/dist/instance-settings-loader/loaders/mcp-settings.loader.d.ts +10 -0
- package/dist/instance-settings-loader/loaders/mcp-settings.loader.js +42 -0
- package/dist/instance-settings-loader/loaders/mcp-settings.loader.js.map +1 -0
- package/dist/instance-settings-loader/loaders/sso.instance-settings-loader.js +9 -4
- package/dist/instance-settings-loader/loaders/sso.instance-settings-loader.js.map +1 -1
- package/dist/mfa/mfa.service.d.ts +2 -2
- package/dist/mfa/mfa.service.js +11 -10
- package/dist/mfa/mfa.service.js.map +1 -1
- package/dist/modules/chat-hub/chat-hub-extractor.js +1 -1
- package/dist/modules/chat-hub/chat-hub-extractor.js.map +1 -1
- package/dist/modules/chat-hub/chat-hub-workflow.service.d.ts +1 -1
- package/dist/modules/chat-hub/chat-hub-workflow.service.js +4 -4
- package/dist/modules/chat-hub/chat-hub-workflow.service.js.map +1 -1
- package/dist/modules/community-packages/community-node-types.service.js +3 -1
- package/dist/modules/community-packages/community-node-types.service.js.map +1 -1
- package/dist/modules/dynamic-credentials.ee/credential-resolvers/n8n-credential-resolver.js +2 -2
- package/dist/modules/dynamic-credentials.ee/credential-resolvers/n8n-credential-resolver.js.map +1 -1
- package/dist/modules/dynamic-credentials.ee/credential-resolvers/oauth-credential-resolver.js +2 -2
- package/dist/modules/dynamic-credentials.ee/credential-resolvers/oauth-credential-resolver.js.map +1 -1
- package/dist/modules/dynamic-credentials.ee/credential-resolvers/slack-credential-resolver.js +2 -2
- package/dist/modules/dynamic-credentials.ee/credential-resolvers/slack-credential-resolver.js.map +1 -1
- package/dist/modules/dynamic-credentials.ee/dynamic-credentials.controller.js +2 -2
- package/dist/modules/dynamic-credentials.ee/dynamic-credentials.controller.js.map +1 -1
- package/dist/modules/dynamic-credentials.ee/services/credential-check-proxy.service.js +1 -1
- package/dist/modules/dynamic-credentials.ee/services/credential-check-proxy.service.js.map +1 -1
- package/dist/modules/dynamic-credentials.ee/services/credential-resolver-workflow.service.js +1 -1
- package/dist/modules/dynamic-credentials.ee/services/credential-resolver-workflow.service.js.map +1 -1
- package/dist/modules/dynamic-credentials.ee/services/credential-resolver.service.js +14 -14
- package/dist/modules/dynamic-credentials.ee/services/credential-resolver.service.js.map +1 -1
- package/dist/modules/dynamic-credentials.ee/services/dynamic-credential-storage.service.js +1 -1
- package/dist/modules/dynamic-credentials.ee/services/dynamic-credential-storage.service.js.map +1 -1
- package/dist/modules/dynamic-credentials.ee/services/dynamic-credential.service.js +4 -4
- package/dist/modules/dynamic-credentials.ee/services/dynamic-credential.service.js.map +1 -1
- package/dist/modules/encryption-key-manager/encryption-bootstrap.service.d.ts +6 -1
- package/dist/modules/encryption-key-manager/encryption-bootstrap.service.js +14 -2
- package/dist/modules/encryption-key-manager/encryption-bootstrap.service.js.map +1 -1
- package/dist/modules/encryption-key-manager/encryption-key.controller.js +1 -0
- package/dist/modules/encryption-key-manager/encryption-key.controller.js.map +1 -1
- package/dist/modules/encryption-key-manager/key-manager.service.d.ts +2 -1
- package/dist/modules/encryption-key-manager/key-manager.service.js +24 -5
- package/dist/modules/encryption-key-manager/key-manager.service.js.map +1 -1
- package/dist/modules/external-secrets.ee/constants.d.ts +1 -0
- package/dist/modules/external-secrets.ee/constants.js +2 -1
- package/dist/modules/external-secrets.ee/constants.js.map +1 -1
- package/dist/modules/external-secrets.ee/external-secrets-manager.ee.js +4 -4
- package/dist/modules/external-secrets.ee/external-secrets-manager.ee.js.map +1 -1
- package/dist/modules/external-secrets.ee/secrets-cache.service.d.ts +1 -0
- package/dist/modules/external-secrets.ee/secrets-cache.service.js +18 -1
- package/dist/modules/external-secrets.ee/secrets-cache.service.js.map +1 -1
- package/dist/modules/external-secrets.ee/secrets-providers-connections.controller.ee.js +3 -3
- package/dist/modules/external-secrets.ee/secrets-providers-connections.controller.ee.js.map +1 -1
- package/dist/modules/external-secrets.ee/secrets-providers-connections.service.ee.d.ts +1 -1
- package/dist/modules/external-secrets.ee/secrets-providers-connections.service.ee.js +15 -13
- package/dist/modules/external-secrets.ee/secrets-providers-connections.service.ee.js.map +1 -1
- package/dist/modules/external-secrets.ee/secrets-providers-project.controller.ee.js +3 -3
- package/dist/modules/external-secrets.ee/secrets-providers-project.controller.ee.js.map +1 -1
- package/dist/modules/external-secrets.ee/settings-store.service.js +6 -6
- package/dist/modules/external-secrets.ee/settings-store.service.js.map +1 -1
- package/dist/modules/favorites/favorites.controller.d.ts +0 -1
- package/dist/modules/favorites/favorites.controller.js +1 -1
- package/dist/modules/favorites/favorites.controller.js.map +1 -1
- package/dist/modules/favorites/favorites.service.d.ts +6 -3
- package/dist/modules/favorites/favorites.service.js +97 -71
- package/dist/modules/favorites/favorites.service.js.map +1 -1
- package/dist/modules/insights/insights-collection.service.js +7 -1
- package/dist/modules/insights/insights-collection.service.js.map +1 -1
- package/dist/modules/insights/insights-pruning.service.d.ts +2 -4
- package/dist/modules/insights/insights-pruning.service.js +13 -10
- package/dist/modules/insights/insights-pruning.service.js.map +1 -1
- package/dist/modules/insights/insights.config.js +2 -1
- package/dist/modules/insights/insights.config.js.map +1 -1
- package/dist/modules/insights/insights.constants.d.ts +2 -0
- package/dist/modules/insights/insights.constants.js +3 -1
- package/dist/modules/insights/insights.constants.js.map +1 -1
- package/dist/modules/insights/insights.service.js +1 -3
- package/dist/modules/insights/insights.service.js.map +1 -1
- package/dist/modules/instance-ai/compaction.service.d.ts +7 -2
- package/dist/modules/instance-ai/compaction.service.js +17 -17
- package/dist/modules/instance-ai/compaction.service.js.map +1 -1
- package/dist/modules/instance-ai/instance-ai-settings.service.js +4 -4
- package/dist/modules/instance-ai/instance-ai-settings.service.js.map +1 -1
- package/dist/modules/instance-ai/instance-ai.adapter.service.d.ts +38 -1
- package/dist/modules/instance-ai/instance-ai.adapter.service.js +179 -60
- package/dist/modules/instance-ai/instance-ai.adapter.service.js.map +1 -1
- package/dist/modules/instance-ai/instance-ai.controller.d.ts +2 -2
- package/dist/modules/instance-ai/instance-ai.controller.js +7 -17
- package/dist/modules/instance-ai/instance-ai.controller.js.map +1 -1
- package/dist/modules/instance-ai/instance-ai.service.d.ts +15 -4
- package/dist/modules/instance-ai/instance-ai.service.js +489 -76
- package/dist/modules/instance-ai/instance-ai.service.js.map +1 -1
- package/dist/modules/instance-ai/storage/typeorm-memory-storage.js +11 -1
- package/dist/modules/instance-ai/storage/typeorm-memory-storage.js.map +1 -1
- package/dist/modules/instance-ai/web-research/fetch-and-extract.d.ts +3 -1
- package/dist/modules/instance-ai/web-research/fetch-and-extract.js +13 -11
- package/dist/modules/instance-ai/web-research/fetch-and-extract.js.map +1 -1
- package/dist/modules/instance-ai/web-research/index.d.ts +0 -1
- package/dist/modules/instance-ai/web-research/index.js +1 -3
- package/dist/modules/instance-ai/web-research/index.js.map +1 -1
- package/dist/modules/instance-registry/checks/check.service.d.ts +43 -0
- package/dist/modules/instance-registry/checks/check.service.js +248 -0
- package/dist/modules/instance-registry/checks/check.service.js.map +1 -0
- package/dist/modules/instance-registry/checks/hostid-clash.check.d.ts +8 -0
- package/dist/modules/instance-registry/checks/hostid-clash.check.js +68 -0
- package/dist/modules/instance-registry/checks/hostid-clash.check.js.map +1 -0
- package/dist/modules/instance-registry/checks/index.d.ts +4 -0
- package/dist/modules/instance-registry/checks/index.js +7 -0
- package/dist/modules/instance-registry/checks/index.js.map +1 -0
- package/dist/modules/instance-registry/checks/lifecycle.check.d.ts +8 -0
- package/dist/modules/instance-registry/checks/lifecycle.check.js +52 -0
- package/dist/modules/instance-registry/checks/lifecycle.check.js.map +1 -0
- package/dist/modules/instance-registry/checks/split-brain.check.d.ts +8 -0
- package/dist/modules/instance-registry/checks/split-brain.check.js +67 -0
- package/dist/modules/instance-registry/checks/split-brain.check.js.map +1 -0
- package/dist/modules/instance-registry/checks/version-mismatch.check.d.ts +8 -0
- package/dist/modules/instance-registry/checks/version-mismatch.check.js +55 -0
- package/dist/modules/instance-registry/checks/version-mismatch.check.js.map +1 -0
- package/dist/modules/instance-registry/instance-registry.controller.d.ts +3 -1
- package/dist/modules/instance-registry/instance-registry.controller.js +41 -5
- package/dist/modules/instance-registry/instance-registry.controller.js.map +1 -1
- package/dist/modules/instance-registry/instance-registry.module.js +3 -9
- package/dist/modules/instance-registry/instance-registry.module.js.map +1 -1
- package/dist/modules/ldap.ee/helpers.ee.js +1 -1
- package/dist/modules/ldap.ee/helpers.ee.js.map +1 -1
- package/dist/modules/ldap.ee/ldap.service.ee.js +2 -2
- package/dist/modules/ldap.ee/ldap.service.ee.js.map +1 -1
- package/dist/modules/mcp/dto/update-workflows-availability.dto.d.ts +15 -0
- package/dist/modules/mcp/dto/update-workflows-availability.dto.js +14 -0
- package/dist/modules/mcp/dto/update-workflows-availability.dto.js.map +1 -0
- package/dist/modules/mcp/mcp-oauth-service.d.ts +6 -0
- package/dist/modules/mcp/mcp-oauth-service.js +15 -3
- package/dist/modules/mcp/mcp-oauth-service.js.map +1 -1
- package/dist/modules/mcp/mcp-oauth-token.service.d.ts +1 -0
- package/dist/modules/mcp/mcp-oauth-token.service.js +3 -0
- package/dist/modules/mcp/mcp-oauth-token.service.js.map +1 -1
- package/dist/modules/mcp/mcp.controller.d.ts +2 -0
- package/dist/modules/mcp/mcp.controller.js +49 -11
- package/dist/modules/mcp/mcp.controller.js.map +1 -1
- package/dist/modules/mcp/mcp.errors.d.ts +6 -0
- package/dist/modules/mcp/mcp.errors.js +12 -1
- package/dist/modules/mcp/mcp.errors.js.map +1 -1
- package/dist/modules/mcp/mcp.module.d.ts +1 -0
- package/dist/modules/mcp/mcp.module.js +3 -1
- package/dist/modules/mcp/mcp.module.js.map +1 -1
- package/dist/modules/mcp/mcp.oauth-clients.controller.d.ts +2 -1
- package/dist/modules/mcp/mcp.oauth-clients.controller.js +10 -0
- package/dist/modules/mcp/mcp.oauth-clients.controller.js.map +1 -1
- package/dist/modules/mcp/mcp.oauth.controller.js +20 -1
- package/dist/modules/mcp/mcp.oauth.controller.js.map +1 -1
- package/dist/modules/mcp/mcp.service.js +3 -0
- package/dist/modules/mcp/mcp.service.js.map +1 -1
- package/dist/modules/mcp/mcp.settings.controller.d.ts +11 -12
- package/dist/modules/mcp/mcp.settings.controller.js +19 -50
- package/dist/modules/mcp/mcp.settings.controller.js.map +1 -1
- package/dist/modules/mcp/mcp.settings.service.d.ts +30 -2
- package/dist/modules/mcp/mcp.settings.service.js +165 -2
- package/dist/modules/mcp/mcp.settings.service.js.map +1 -1
- package/dist/modules/mcp/tools/search-executions.tool.d.ts +16 -0
- package/dist/modules/mcp/tools/search-executions.tool.js +140 -0
- package/dist/modules/mcp/tools/search-executions.tool.js.map +1 -0
- package/dist/modules/mcp/tools/workflow-builder/get-workflow-node-types.tool.d.ts +2 -2
- package/dist/modules/oauth-jwe/oauth-jwe-decrypt.service.d.ts +7 -0
- package/dist/modules/oauth-jwe/oauth-jwe-decrypt.service.js +48 -0
- package/dist/modules/oauth-jwe/oauth-jwe-decrypt.service.js.map +1 -0
- package/dist/modules/oauth-jwe/oauth-jwe-key.service.d.ts +31 -0
- package/dist/modules/oauth-jwe/oauth-jwe-key.service.js +174 -0
- package/dist/modules/oauth-jwe/oauth-jwe-key.service.js.map +1 -0
- package/dist/modules/oauth-jwe/oauth-jwe.config.d.ts +3 -0
- package/dist/modules/oauth-jwe/oauth-jwe.config.js +27 -0
- package/dist/modules/oauth-jwe/oauth-jwe.config.js.map +1 -0
- package/dist/modules/oauth-jwe/oauth-jwe.constants.d.ts +9 -0
- package/dist/modules/oauth-jwe/oauth-jwe.constants.js +15 -0
- package/dist/modules/oauth-jwe/oauth-jwe.constants.js.map +1 -0
- package/dist/modules/oauth-jwe/oauth-jwe.controller.d.ts +10 -0
- package/dist/modules/oauth-jwe/oauth-jwe.controller.js +60 -0
- package/dist/modules/oauth-jwe/oauth-jwe.controller.js.map +1 -0
- package/dist/modules/oauth-jwe/oauth-jwe.module.d.ts +8 -0
- package/dist/modules/oauth-jwe/oauth-jwe.module.js +70 -0
- package/dist/modules/oauth-jwe/oauth-jwe.module.js.map +1 -0
- package/dist/modules/oauth-jwe/oauth-jwe.schemas.d.ts +131 -0
- package/dist/modules/oauth-jwe/oauth-jwe.schemas.js +34 -0
- package/dist/modules/oauth-jwe/oauth-jwe.schemas.js.map +1 -0
- package/dist/modules/oauth-jwe/oauth-jwe.utils.d.ts +4 -0
- package/dist/modules/oauth-jwe/oauth-jwe.utils.js +27 -0
- package/dist/modules/oauth-jwe/oauth-jwe.utils.js.map +1 -0
- package/dist/modules/source-control.ee/source-control-export.service.ee.js +1 -1
- package/dist/modules/source-control.ee/source-control-export.service.ee.js.map +1 -1
- package/dist/modules/source-control.ee/source-control-import.service.ee.js +6 -6
- package/dist/modules/source-control.ee/source-control-import.service.ee.js.map +1 -1
- package/dist/modules/source-control.ee/source-control-preferences.service.ee.js +6 -6
- package/dist/modules/source-control.ee/source-control-preferences.service.ee.js.map +1 -1
- package/dist/modules/sso-oidc/oidc.service.ee.js +2 -2
- package/dist/modules/sso-oidc/oidc.service.ee.js.map +1 -1
- package/dist/modules/sso-saml/saml.service.ee.js +6 -6
- package/dist/modules/sso-saml/saml.service.ee.js.map +1 -1
- package/dist/oauth/oauth-jwe-service.proxy.d.ts +9 -0
- package/dist/oauth/oauth-jwe-service.proxy.js +27 -0
- package/dist/oauth/oauth-jwe-service.proxy.js.map +1 -0
- package/dist/oauth/oauth.service.d.ts +2 -2
- package/dist/oauth/oauth.service.js +13 -12
- package/dist/oauth/oauth.service.js.map +1 -1
- package/dist/posthog/index.d.ts +2 -0
- package/dist/posthog/index.js +16 -0
- package/dist/posthog/index.js.map +1 -1
- package/dist/public-api/v1/handlers/credentials/credentials.service.js +2 -2
- package/dist/public-api/v1/handlers/credentials/credentials.service.js.map +1 -1
- package/dist/services/dynamic-node-parameters.service.d.ts +1 -0
- package/dist/services/dynamic-node-parameters.service.js +29 -12
- package/dist/services/dynamic-node-parameters.service.js.map +1 -1
- package/dist/services/export.service.js +2 -2
- package/dist/services/export.service.js.map +1 -1
- package/dist/services/frontend.service.js +18 -0
- package/dist/services/frontend.service.js.map +1 -1
- package/dist/services/import.service.d.ts +5 -1
- package/dist/services/import.service.js +62 -5
- package/dist/services/import.service.js.map +1 -1
- package/dist/services/project.service.ee.d.ts +1 -0
- package/dist/services/project.service.ee.js +6 -0
- package/dist/services/project.service.ee.js.map +1 -1
- package/dist/services/redis-client.service.d.ts +6 -5
- package/dist/services/redis-client.service.js +19 -12
- package/dist/services/redis-client.service.js.map +1 -1
- package/dist/services/user.service.js +0 -9
- package/dist/services/user.service.js.map +1 -1
- package/dist/task-runners/task-broker/auth/task-broker-auth.service.d.ts +4 -4
- package/dist/task-runners/task-broker/auth/task-broker-auth.service.js +9 -8
- package/dist/task-runners/task-broker/auth/task-broker-auth.service.js.map +1 -1
- package/dist/task-runners/task-broker/task-broker-server.js +1 -1
- package/dist/task-runners/task-broker/task-broker-server.js.map +1 -1
- package/dist/webhooks/test-webhooks.js +16 -2
- package/dist/webhooks/test-webhooks.js.map +1 -1
- package/dist/workflow-execute-additional-data.js +4 -2
- package/dist/workflow-execute-additional-data.js.map +1 -1
- package/dist/workflow-runner.d.ts +1 -0
- package/dist/workflow-runner.js +33 -6
- package/dist/workflow-runner.js.map +1 -1
- package/dist/workflows/workflow-finder.service.d.ts +2 -0
- package/dist/workflows/workflow-finder.service.js +12 -1
- package/dist/workflows/workflow-finder.service.js.map +1 -1
- package/dist/workflows/workflows.controller.d.ts +7 -2
- package/dist/workflows/workflows.controller.js +43 -10
- package/dist/workflows/workflows.controller.js.map +1 -1
- package/package.json +28 -26
- package/dist/modules/instance-ai/web-research/ssrf-guard.d.ts +0 -1
- package/dist/modules/instance-ai/web-research/ssrf-guard.js +0 -85
- package/dist/modules/instance-ai/web-research/ssrf-guard.js.map +0 -1
- package/dist/modules/mcp/dto/update-workflow-availability.dto.d.ts +0 -9
- package/dist/modules/mcp/dto/update-workflow-availability.dto.js +0 -11
- package/dist/modules/mcp/dto/update-workflow-availability.dto.js.map +0 -1
|
@@ -12,11 +12,17 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
12
12
|
exports.FavoritesService = void 0;
|
|
13
13
|
const di_1 = require("@n8n/di");
|
|
14
14
|
const db_1 = require("@n8n/db");
|
|
15
|
+
const permissions_1 = require("@n8n/permissions");
|
|
15
16
|
const typeorm_1 = require("@n8n/typeorm");
|
|
16
17
|
const user_favorite_repository_1 = require("./database/repositories/user-favorite.repository");
|
|
17
18
|
const bad_request_error_1 = require("../../errors/response-errors/bad-request.error");
|
|
18
19
|
const not_found_error_1 = require("../../errors/response-errors/not-found.error");
|
|
19
20
|
const data_table_repository_1 = require("../../modules/data-table/data-table.repository");
|
|
21
|
+
const idsOfType = (favorites, type) => favorites.filter((f) => f.resourceType === type).map((f) => f.resourceId);
|
|
22
|
+
const enrichWithName = (fav, name) => name === undefined ? [] : [{ ...fav, resourceName: name }];
|
|
23
|
+
const enrichWithMeta = (fav, meta) => meta === undefined
|
|
24
|
+
? []
|
|
25
|
+
: [{ ...fav, resourceName: meta.name, resourceProjectId: meta.projectId }];
|
|
20
26
|
let FavoritesService = class FavoritesService {
|
|
21
27
|
constructor(userFavoriteRepository, workflowRepository, projectRepository, sharedWorkflowRepository, dataTableRepository, folderRepository) {
|
|
22
28
|
this.userFavoriteRepository = userFavoriteRepository;
|
|
@@ -27,91 +33,111 @@ let FavoritesService = class FavoritesService {
|
|
|
27
33
|
this.folderRepository = folderRepository;
|
|
28
34
|
this.MAX_FAVORITES = 200;
|
|
29
35
|
}
|
|
30
|
-
async getEnrichedFavorites(
|
|
31
|
-
const favorites = await this.userFavoriteRepository.findByUser(
|
|
36
|
+
async getEnrichedFavorites(user) {
|
|
37
|
+
const favorites = await this.userFavoriteRepository.findByUser(user.id);
|
|
32
38
|
if (favorites.length === 0)
|
|
33
39
|
return [];
|
|
34
|
-
const
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
const
|
|
41
|
-
const accessibleProjects = await this.projectRepository.getAccessibleProjects(userId);
|
|
40
|
+
const ids = {
|
|
41
|
+
workflow: idsOfType(favorites, 'workflow'),
|
|
42
|
+
project: idsOfType(favorites, 'project'),
|
|
43
|
+
dataTable: idsOfType(favorites, 'dataTable'),
|
|
44
|
+
folder: idsOfType(favorites, 'folder'),
|
|
45
|
+
};
|
|
46
|
+
const accessibleProjects = await this.projectRepository.getAccessibleProjects(user.id);
|
|
42
47
|
const accessibleProjectIds = new Set(accessibleProjects.map((p) => p.id));
|
|
43
|
-
const
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
48
|
+
const [workflowNames, projectNames, dataTableMeta, folderMeta] = await Promise.all([
|
|
49
|
+
this.enrichWorkflowFavorites(user, ids.workflow, accessibleProjectIds),
|
|
50
|
+
this.enrichProjectFavorites(user, ids.project, accessibleProjects),
|
|
51
|
+
this.enrichDataTableFavorites(user, ids.dataTable, accessibleProjectIds),
|
|
52
|
+
this.enrichFolderFavorites(user, ids.folder, accessibleProjectIds),
|
|
53
|
+
]);
|
|
54
|
+
return favorites.flatMap((fav) => {
|
|
55
|
+
switch (fav.resourceType) {
|
|
56
|
+
case 'workflow':
|
|
57
|
+
return enrichWithName(fav, workflowNames.get(fav.resourceId));
|
|
58
|
+
case 'project':
|
|
59
|
+
return enrichWithName(fav, projectNames.get(fav.resourceId));
|
|
60
|
+
case 'dataTable':
|
|
61
|
+
return enrichWithMeta(fav, dataTableMeta.get(fav.resourceId));
|
|
62
|
+
case 'folder':
|
|
63
|
+
return enrichWithMeta(fav, folderMeta.get(fav.resourceId));
|
|
64
|
+
default:
|
|
65
|
+
return [];
|
|
66
|
+
}
|
|
67
|
+
});
|
|
68
|
+
}
|
|
69
|
+
async enrichWorkflowFavorites(user, workflowIds, accessibleProjectIds) {
|
|
70
|
+
const result = new Map();
|
|
71
|
+
if (workflowIds.length === 0)
|
|
72
|
+
return result;
|
|
73
|
+
const hasGlobalAccess = (0, permissions_1.hasGlobalScope)(user, 'workflow:read');
|
|
74
|
+
if (!hasGlobalAccess && accessibleProjectIds.size === 0)
|
|
75
|
+
return result;
|
|
76
|
+
const [workflows, sharedWorkflows] = await Promise.all([
|
|
77
|
+
this.workflowRepository.findByIds(workflowIds, { fields: ['id', 'name'] }),
|
|
78
|
+
hasGlobalAccess
|
|
79
|
+
? Promise.resolve([])
|
|
80
|
+
: this.sharedWorkflowRepository.find({
|
|
50
81
|
select: { workflowId: true },
|
|
51
82
|
where: { workflowId: (0, typeorm_1.In)(workflowIds), projectId: (0, typeorm_1.In)([...accessibleProjectIds]) },
|
|
52
|
-
})
|
|
53
|
-
: [],
|
|
54
|
-
dataTableIds.length > 0
|
|
55
|
-
? this.dataTableRepository.find({ where: { id: (0, typeorm_1.In)(dataTableIds) } })
|
|
56
|
-
: [],
|
|
57
|
-
folderIds.length > 0
|
|
58
|
-
? this.folderRepository.find({
|
|
59
|
-
where: { id: (0, typeorm_1.In)(folderIds) },
|
|
60
|
-
relations: { homeProject: true },
|
|
61
|
-
})
|
|
62
|
-
: [],
|
|
83
|
+
}),
|
|
63
84
|
]);
|
|
64
|
-
const
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
85
|
+
const accessibleIds = hasGlobalAccess
|
|
86
|
+
? new Set(workflows.map((wf) => wf.id))
|
|
87
|
+
: new Set(sharedWorkflows.map((sw) => sw.workflowId));
|
|
88
|
+
for (const wf of workflows) {
|
|
89
|
+
if (accessibleIds.has(wf.id))
|
|
90
|
+
result.set(wf.id, wf.name);
|
|
91
|
+
}
|
|
92
|
+
return result;
|
|
93
|
+
}
|
|
94
|
+
async enrichProjectFavorites(user, projectFavoriteIds, accessibleProjects) {
|
|
95
|
+
const result = new Map(accessibleProjects.map((p) => [p.id, p.name ?? '']));
|
|
96
|
+
if (projectFavoriteIds.length === 0)
|
|
97
|
+
return result;
|
|
98
|
+
if (!(0, permissions_1.hasGlobalScope)(user, 'project:read'))
|
|
99
|
+
return result;
|
|
100
|
+
const missingIds = projectFavoriteIds.filter((id) => !result.has(id));
|
|
101
|
+
if (missingIds.length === 0)
|
|
102
|
+
return result;
|
|
103
|
+
const additional = await this.projectRepository.find({
|
|
104
|
+
where: { id: (0, typeorm_1.In)(missingIds) },
|
|
105
|
+
select: { id: true, name: true },
|
|
106
|
+
});
|
|
107
|
+
for (const p of additional) {
|
|
108
|
+
result.set(p.id, p.name ?? '');
|
|
74
109
|
}
|
|
75
|
-
|
|
110
|
+
return result;
|
|
111
|
+
}
|
|
112
|
+
async enrichDataTableFavorites(user, dataTableIds, accessibleProjectIds) {
|
|
113
|
+
const result = new Map();
|
|
114
|
+
if (dataTableIds.length === 0)
|
|
115
|
+
return result;
|
|
116
|
+
const hasGlobalAccess = (0, permissions_1.hasGlobalScope)(user, 'dataTable:read');
|
|
117
|
+
const dataTables = await this.dataTableRepository.find({ where: { id: (0, typeorm_1.In)(dataTableIds) } });
|
|
76
118
|
for (const dt of dataTables) {
|
|
77
|
-
if (accessibleProjectIds.has(dt.projectId)) {
|
|
78
|
-
|
|
119
|
+
if (hasGlobalAccess || accessibleProjectIds.has(dt.projectId)) {
|
|
120
|
+
result.set(dt.id, { name: dt.name, projectId: dt.projectId });
|
|
79
121
|
}
|
|
80
122
|
}
|
|
81
|
-
|
|
123
|
+
return result;
|
|
124
|
+
}
|
|
125
|
+
async enrichFolderFavorites(user, folderIds, accessibleProjectIds) {
|
|
126
|
+
const result = new Map();
|
|
127
|
+
if (folderIds.length === 0)
|
|
128
|
+
return result;
|
|
129
|
+
const hasGlobalAccess = (0, permissions_1.hasGlobalScope)(user, 'folder:read');
|
|
130
|
+
const folders = await this.folderRepository.find({
|
|
131
|
+
where: { id: (0, typeorm_1.In)(folderIds) },
|
|
132
|
+
relations: { homeProject: true },
|
|
133
|
+
});
|
|
82
134
|
for (const folder of folders) {
|
|
83
135
|
const projectId = folder.homeProject?.id;
|
|
84
|
-
if (projectId && accessibleProjectIds.has(projectId)) {
|
|
85
|
-
|
|
86
|
-
}
|
|
87
|
-
}
|
|
88
|
-
const enriched = [];
|
|
89
|
-
for (const fav of favorites) {
|
|
90
|
-
if (fav.resourceType === 'workflow') {
|
|
91
|
-
const name = workflowNameMap.get(fav.resourceId);
|
|
92
|
-
if (name !== undefined)
|
|
93
|
-
enriched.push({ ...fav, resourceName: name });
|
|
94
|
-
}
|
|
95
|
-
else if (fav.resourceType === 'project') {
|
|
96
|
-
const name = projectNameMap.get(fav.resourceId);
|
|
97
|
-
if (name !== undefined) {
|
|
98
|
-
enriched.push({ ...fav, resourceName: name });
|
|
99
|
-
}
|
|
100
|
-
}
|
|
101
|
-
else if (fav.resourceType === 'dataTable') {
|
|
102
|
-
const meta = dataTableMetaMap.get(fav.resourceId);
|
|
103
|
-
if (meta !== undefined) {
|
|
104
|
-
enriched.push({ ...fav, resourceName: meta.name, resourceProjectId: meta.projectId });
|
|
105
|
-
}
|
|
106
|
-
}
|
|
107
|
-
else if (fav.resourceType === 'folder') {
|
|
108
|
-
const meta = folderMetaMap.get(fav.resourceId);
|
|
109
|
-
if (meta !== undefined) {
|
|
110
|
-
enriched.push({ ...fav, resourceName: meta.name, resourceProjectId: meta.projectId });
|
|
111
|
-
}
|
|
136
|
+
if (projectId && (hasGlobalAccess || accessibleProjectIds.has(projectId))) {
|
|
137
|
+
result.set(folder.id, { name: folder.name, projectId });
|
|
112
138
|
}
|
|
113
139
|
}
|
|
114
|
-
return
|
|
140
|
+
return result;
|
|
115
141
|
}
|
|
116
142
|
async addFavorite(userId, resourceId, resourceType) {
|
|
117
143
|
const existing = await this.userFavoriteRepository.findOne({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"favorites.service.js","sourceRoot":"","sources":["../../../src/modules/favorites/favorites.service.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,gCAAkC;AAClC,
|
|
1
|
+
{"version":3,"file":"favorites.service.js","sourceRoot":"","sources":["../../../src/modules/favorites/favorites.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -46,6 +46,12 @@ const shouldSkipMode = {
|
|
|
46
46
|
};
|
|
47
47
|
const MIN_RUNTIME = 0;
|
|
48
48
|
const MAX_RUNTIME = 2 ** 31 - 1;
|
|
49
|
+
function integerValueForInsightsRaw(value) {
|
|
50
|
+
if (!Number.isFinite(value)) {
|
|
51
|
+
return 0;
|
|
52
|
+
}
|
|
53
|
+
return Math.round(value);
|
|
54
|
+
}
|
|
49
55
|
let InsightsCollectionService = class InsightsCollectionService {
|
|
50
56
|
constructor(sharedWorkflowRepository, insightsRawRepository, insightsMetadataRepository, insightsConfig, logger) {
|
|
51
57
|
this.sharedWorkflowRepository = sharedWorkflowRepository;
|
|
@@ -180,7 +186,7 @@ let InsightsCollectionService = class InsightsCollectionService {
|
|
|
180
186
|
}
|
|
181
187
|
insight.metaId = metadata.metaId;
|
|
182
188
|
insight.type = event.type;
|
|
183
|
-
insight.value = event.value;
|
|
189
|
+
insight.value = integerValueForInsightsRaw(event.value);
|
|
184
190
|
insight.timestamp = event.timestamp;
|
|
185
191
|
events.push(insight);
|
|
186
192
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"insights-collection.service.js","sourceRoot":"","sources":["../../../src/modules/insights/insights-collection.service.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,wDAA6C;AAC7C,gCAAmD;AACnD,gDAAqF;AACrF,gCAAkC;AAClC,0CAAkC;AAClC,iCAAiC;AACjC,+CAKsB;AAEtB,8FAA0F;AAC1F,oFAAgF;AAEhF,uGAAkG;AAClG,6FAAwF;AACxF,uDAAmD;AAEnD,MAAM,gBAAgB,GAAqC;IAC1D,OAAO,EAAE,KAAK;IACd,OAAO,EAAE,KAAK;IACd,KAAK,EAAE,KAAK;IAEZ,QAAQ,EAAE,IAAI;IACd,GAAG,EAAE,IAAI;IACT,OAAO,EAAE,IAAI;IACb,OAAO,EAAE,IAAI;IACb,OAAO,EAAE,IAAI;CACb,CAAC;AAEF,MAAM,cAAc,GAAyC;IAC5D,GAAG,EAAE,KAAK;IACV,KAAK,EAAE,KAAK;IACZ,KAAK,EAAE,KAAK;IACZ,OAAO,EAAE,KAAK;IACd,OAAO,EAAE,KAAK;IACd,UAAU,EAAE,KAAK;IAGjB,UAAU,EAAE,IAAI;IAGhB,QAAQ,EAAE,IAAI;IAEd,MAAM,EAAE,IAAI;IAGZ,IAAI,EAAE,IAAI;CACV,CAAC;AAEF,MAAM,WAAW,GAAG,CAAC,CAAC;AAGtB,MAAM,WAAW,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"insights-collection.service.js","sourceRoot":"","sources":["../../../src/modules/insights/insights-collection.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,16 +1,14 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { Logger } from '@n8n/backend-common';
|
|
2
2
|
import { InsightsByPeriodRepository } from './database/repositories/insights-by-period.repository';
|
|
3
3
|
import { InsightsConfig } from './insights.config';
|
|
4
4
|
export declare class InsightsPruningService {
|
|
5
5
|
private readonly insightsByPeriodRepository;
|
|
6
6
|
private readonly config;
|
|
7
|
-
private readonly licenseState;
|
|
8
7
|
private readonly logger;
|
|
9
8
|
private pruneInsightsTimeout;
|
|
10
9
|
private isStopped;
|
|
11
10
|
private readonly delayOnError;
|
|
12
|
-
constructor(insightsByPeriodRepository: InsightsByPeriodRepository, config: InsightsConfig,
|
|
13
|
-
get isPruningEnabled(): boolean;
|
|
11
|
+
constructor(insightsByPeriodRepository: InsightsByPeriodRepository, config: InsightsConfig, logger: Logger);
|
|
14
12
|
get pruningMaxAgeInDays(): number;
|
|
15
13
|
startPruningTimer(): void;
|
|
16
14
|
private clearPruningTimer;
|
|
@@ -16,24 +16,28 @@ const di_1 = require("@n8n/di");
|
|
|
16
16
|
const assert_1 = require("assert");
|
|
17
17
|
const insights_by_period_repository_1 = require("./database/repositories/insights-by-period.repository");
|
|
18
18
|
const insights_config_1 = require("./insights.config");
|
|
19
|
+
const insights_constants_1 = require("./insights.constants");
|
|
19
20
|
let InsightsPruningService = class InsightsPruningService {
|
|
20
|
-
constructor(insightsByPeriodRepository, config,
|
|
21
|
+
constructor(insightsByPeriodRepository, config, logger) {
|
|
21
22
|
this.insightsByPeriodRepository = insightsByPeriodRepository;
|
|
22
23
|
this.config = config;
|
|
23
|
-
this.licenseState = licenseState;
|
|
24
24
|
this.logger = logger;
|
|
25
25
|
this.isStopped = true;
|
|
26
26
|
this.delayOnError = constants_1.Time.seconds.toMilliseconds;
|
|
27
27
|
this.logger = this.logger.scoped('insights');
|
|
28
28
|
}
|
|
29
|
-
get isPruningEnabled() {
|
|
30
|
-
return this.licenseState.getInsightsRetentionMaxAge() > -1 || this.config.maxAgeDays > -1;
|
|
31
|
-
}
|
|
32
29
|
get pruningMaxAgeInDays() {
|
|
33
|
-
const
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
30
|
+
const configuredMaxAgeDays = this.config.maxAgeDays;
|
|
31
|
+
if (typeof configuredMaxAgeDays !== 'number' || !Number.isFinite(configuredMaxAgeDays)) {
|
|
32
|
+
return insights_constants_1.INSIGHTS_MAX_AGE_DAYS_DEFAULT;
|
|
33
|
+
}
|
|
34
|
+
if (configuredMaxAgeDays === -1) {
|
|
35
|
+
return insights_constants_1.INSIGHTS_MAX_AGE_DAYS_CAP;
|
|
36
|
+
}
|
|
37
|
+
if (configuredMaxAgeDays < 1) {
|
|
38
|
+
return insights_constants_1.INSIGHTS_MAX_AGE_DAYS_DEFAULT;
|
|
39
|
+
}
|
|
40
|
+
return Math.min(configuredMaxAgeDays, insights_constants_1.INSIGHTS_MAX_AGE_DAYS_CAP);
|
|
37
41
|
}
|
|
38
42
|
startPruningTimer() {
|
|
39
43
|
(0, assert_1.strict)(this.isStopped);
|
|
@@ -78,7 +82,6 @@ exports.InsightsPruningService = InsightsPruningService = __decorate([
|
|
|
78
82
|
(0, di_1.Service)(),
|
|
79
83
|
__metadata("design:paramtypes", [insights_by_period_repository_1.InsightsByPeriodRepository,
|
|
80
84
|
insights_config_1.InsightsConfig,
|
|
81
|
-
backend_common_1.LicenseState,
|
|
82
85
|
backend_common_1.Logger])
|
|
83
86
|
], InsightsPruningService);
|
|
84
87
|
//# sourceMappingURL=insights-pruning.service.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"insights-pruning.service.js","sourceRoot":"","sources":["../../../src/modules/insights/insights-pruning.service.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,
|
|
1
|
+
{"version":3,"file":"insights-pruning.service.js","sourceRoot":"","sources":["../../../src/modules/insights/insights-pruning.service.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,wDAA6C;AAC7C,8CAAsC;AACtC,gCAAkC;AAClC,mCAAgC;AAEhC,yGAAmG;AACnG,uDAAmD;AACnD,6DAAgG;AAGzF,IAAM,sBAAsB,GAA5B,MAAM,sBAAsB;IAOlC,YACkB,0BAAsD,EACtD,MAAsB,EACtB,MAAc;QAFd,+BAA0B,GAA1B,0BAA0B,CAA4B;QACtD,WAAM,GAAN,MAAM,CAAgB;QACtB,WAAM,GAAN,MAAM,CAAQ;QAPxB,cAAS,GAAG,IAAI,CAAC;QAER,iBAAY,GAAG,gBAAI,CAAC,OAAO,CAAC,cAAc,CAAC;QAO3D,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;IAC9C,CAAC;IAED,IAAI,mBAAmB;QACtB,MAAM,oBAAoB,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC;QACpD,IAAI,OAAO,oBAAoB,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,oBAAoB,CAAC,EAAE,CAAC;YACxF,OAAO,kDAA6B,CAAC;QACtC,CAAC;QAED,IAAI,oBAAoB,KAAK,CAAC,CAAC,EAAE,CAAC;YACjC,OAAO,8CAAyB,CAAC;QAClC,CAAC;QAED,IAAI,oBAAoB,GAAG,CAAC,EAAE,CAAC;YAC9B,OAAO,kDAA6B,CAAC;QACtC,CAAC;QAED,OAAO,IAAI,CAAC,GAAG,CAAC,oBAAoB,EAAE,8CAAyB,CAAC,CAAC;IAClE,CAAC;IAED,iBAAiB;QAChB,IAAA,eAAM,EAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACvB,IAAI,CAAC,iBAAiB,EAAE,CAAC;QACzB,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;QACvB,IAAI,CAAC,iBAAiB,EAAE,CAAC;QACzB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,uBAAuB,CAAC,CAAC;IAC5C,CAAC;IAEO,iBAAiB;QACxB,IAAI,IAAI,CAAC,oBAAoB,KAAK,SAAS,EAAE,CAAC;YAC7C,YAAY,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;YACxC,IAAI,CAAC,oBAAoB,GAAG,SAAS,CAAC;QACvC,CAAC;IACF,CAAC;IAED,gBAAgB;QACf,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;QACtB,IAAI,CAAC,iBAAiB,EAAE,CAAC;QACzB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,uBAAuB,CAAC,CAAC;IAC5C,CAAC;IAEO,iBAAiB,CACxB,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,uBAAuB,GAAG,gBAAI,CAAC,KAAK,CAAC,cAAc;QAEzE,IAAI,IAAI,CAAC,SAAS;YAAE,OAAO;QAE3B,IAAI,CAAC,oBAAoB,GAAG,UAAU,CAAC,KAAK,IAAI,EAAE;YACjD,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC;QAC5B,CAAC,EAAE,OAAO,CAAC,CAAC;IACb,CAAC;IAED,KAAK,CAAC,aAAa;QAClB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC;QAC9C,IAAI,CAAC;YACJ,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,0BAA0B,CAAC,YAAY,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;YAC5F,IAAI,CAAC,MAAM,CAAC,KAAK,CAChB,4BAA4B,EAC5B,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CACjD,CAAC;YACF,IAAI,CAAC,iBAAiB,EAAE,CAAC;QAC1B,CAAC;QAAC,OAAO,KAAc,EAAE,CAAC;YACzB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,gBAAgB,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;YAG9C,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QAC3C,CAAC;IACF,CAAC;CACD,CAAA;AA/EY,wDAAsB;iCAAtB,sBAAsB;IADlC,IAAA,YAAO,GAAE;qCASqC,0DAA0B;QAC9C,gCAAc;QACd,uBAAM;GAVpB,sBAAsB,CA+ElC"}
|
|
@@ -11,6 +11,7 @@ var __metadata = (this && this.__metadata) || function (k, v) {
|
|
|
11
11
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
12
|
exports.InsightsConfig = void 0;
|
|
13
13
|
const config_1 = require("@n8n/config");
|
|
14
|
+
const insights_constants_1 = require("./insights.constants");
|
|
14
15
|
let InsightsConfig = class InsightsConfig {
|
|
15
16
|
constructor() {
|
|
16
17
|
this.compactionIntervalMinutes = 60;
|
|
@@ -19,7 +20,7 @@ let InsightsConfig = class InsightsConfig {
|
|
|
19
20
|
this.compactionDailyToWeeklyThresholdDays = 180;
|
|
20
21
|
this.flushBatchSize = 1000;
|
|
21
22
|
this.flushIntervalSeconds = 30;
|
|
22
|
-
this.maxAgeDays =
|
|
23
|
+
this.maxAgeDays = insights_constants_1.INSIGHTS_MAX_AGE_DAYS_DEFAULT;
|
|
23
24
|
this.pruneCheckIntervalHours = 24;
|
|
24
25
|
}
|
|
25
26
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"insights.config.js","sourceRoot":"","sources":["../../../src/modules/insights/insights.config.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,wCAA0C;
|
|
1
|
+
{"version":3,"file":"insights.config.js","sourceRoot":"","sources":["../../../src/modules/insights/insights.config.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,wCAA0C;AAE1C,6DAAqE;AAG9D,IAAM,cAAc,GAApB,MAAM,cAAc;IAApB;QAMN,8BAAyB,GAAW,EAAE,CAAC;QAOvC,wBAAmB,GAAW,GAAG,CAAC;QAOlC,yCAAoC,GAAW,EAAE,CAAC;QAOlD,yCAAoC,GAAW,GAAG,CAAC;QAOnD,mBAAc,GAAW,IAAI,CAAC;QAO9B,yBAAoB,GAAW,EAAE,CAAC;QAOlC,eAAU,GAAW,kDAA6B,CAAC;QAOnD,4BAAuB,GAAW,EAAE,CAAC;IACtC,CAAC;CAAA,CAAA;AAxDY,wCAAc;AAM1B;IADC,IAAA,YAAG,EAAC,0CAA0C,CAAC;;iEACT;AAOvC;IADC,IAAA,YAAG,EAAC,oCAAoC,CAAC;;2DACR;AAOlC;IADC,IAAA,YAAG,EAAC,wDAAwD,CAAC;;4EACZ;AAOlD;IADC,IAAA,YAAG,EAAC,wDAAwD,CAAC;;4EACX;AAOnD;IADC,IAAA,YAAG,EAAC,+BAA+B,CAAC;;sDACP;AAO9B;IADC,IAAA,YAAG,EAAC,qCAAqC,CAAC;;4DACT;AAOlC;IADC,IAAA,YAAG,EAAC,2BAA2B,CAAC;;kDACkB;AAOnD;IADC,IAAA,YAAG,EAAC,yCAAyC,CAAC;;+DACV;yBAvDzB,cAAc;IAD1B,eAAM;GACM,cAAc,CAwD1B"}
|
|
@@ -1,2 +1,4 @@
|
|
|
1
|
+
export declare const INSIGHTS_MAX_AGE_DAYS_DEFAULT = 365;
|
|
2
|
+
export declare const INSIGHTS_MAX_AGE_DAYS_CAP = 730;
|
|
1
3
|
export declare const INSIGHTS_DATE_RANGE_KEYS: readonly ["day", "week", "2weeks", "month", "quarter", "6months", "year"];
|
|
2
4
|
export declare const keyRangeToDays: Record<(typeof INSIGHTS_DATE_RANGE_KEYS)[number], number>;
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.keyRangeToDays = exports.INSIGHTS_DATE_RANGE_KEYS = void 0;
|
|
3
|
+
exports.keyRangeToDays = exports.INSIGHTS_DATE_RANGE_KEYS = exports.INSIGHTS_MAX_AGE_DAYS_CAP = exports.INSIGHTS_MAX_AGE_DAYS_DEFAULT = void 0;
|
|
4
|
+
exports.INSIGHTS_MAX_AGE_DAYS_DEFAULT = 365;
|
|
5
|
+
exports.INSIGHTS_MAX_AGE_DAYS_CAP = 730;
|
|
4
6
|
exports.INSIGHTS_DATE_RANGE_KEYS = [
|
|
5
7
|
'day',
|
|
6
8
|
'week',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"insights.constants.js","sourceRoot":"","sources":["../../../src/modules/insights/insights.constants.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"insights.constants.js","sourceRoot":"","sources":["../../../src/modules/insights/insights.constants.ts"],"names":[],"mappings":";;;AACa,QAAA,6BAA6B,GAAG,GAAG,CAAC;AAGpC,QAAA,yBAAyB,GAAG,GAAG,CAAC;AAEhC,QAAA,wBAAwB,GAAG;IACvC,KAAK;IACL,MAAM;IACN,QAAQ;IACR,OAAO;IACP,SAAS;IACT,SAAS;IACT,MAAM;CACG,CAAC;AAEE,QAAA,cAAc,GAA8D;IACxF,GAAG,EAAE,CAAC;IACN,IAAI,EAAE,CAAC;IACP,QAAQ,EAAE,EAAE;IACZ,KAAK,EAAE,EAAE;IACT,OAAO,EAAE,EAAE;IACX,SAAS,EAAE,GAAG;IACd,IAAI,EAAE,GAAG;CACT,CAAC"}
|
|
@@ -85,9 +85,7 @@ let InsightsService = class InsightsService {
|
|
|
85
85
|
}
|
|
86
86
|
startCompactionAndPruningTimers() {
|
|
87
87
|
this.compactionService.startCompactionTimer();
|
|
88
|
-
|
|
89
|
-
this.pruningService.startPruningTimer();
|
|
90
|
-
}
|
|
88
|
+
this.pruningService.startPruningTimer();
|
|
91
89
|
}
|
|
92
90
|
stopCompactionAndPruningTimers() {
|
|
93
91
|
this.compactionService.stopCompactionTimer();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"insights.service.js","sourceRoot":"","sources":["../../../src/modules/insights/insights.service.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,wDAA2D;AAC3D,gDAAqE;AACrE,gCAA6C;AAC7C,iCAAiC;AACjC,uCAA4C;AAC5C,+CAAyC;AAGzC,yEAAiF;AACjF,yGAAmG;AACnG,+EAA0E;AAC1E,yEAAoE;AAG7D,IAAM,eAAe,GAArB,MAAM,eAAe;IAC3B,YACkB,0BAAsD,EACtD,iBAA4C,EAC5C,cAAsC,EACtC,YAA0B,EAC1B,gBAAkC,EAClC,MAAc;QALd,+BAA0B,GAA1B,0BAA0B,CAA4B;QACtD,sBAAiB,GAAjB,iBAAiB,CAA2B;QAC5C,mBAAc,GAAd,cAAc,CAAwB;QACtC,iBAAY,GAAZ,YAAY,CAAc;QAC1B,qBAAgB,GAAhB,gBAAgB,CAAkB;QAClC,WAAM,GAAN,MAAM,CAAQ;QAE/B,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;IAC9C,CAAC;IAEO,KAAK,CAAC,uBAAuB,CAAC,MAAe;QACpD,IACC,IAAI,CAAC,gBAAgB,CAAC,YAAY,KAAK,MAAM;YAC7C,IAAI,CAAC,gBAAgB,CAAC,YAAY,KAAK,SAAS,EAC/C,CAAC;YACF,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,sDAAsD,CAAC,CAAC;YAC1E,OAAO;QACR,CAAC;QAED,MAAM,EAAE,yBAAyB,EAAE,GAAG,wDAAa,+BAA+B,GAAC,CAAC;QACpF,MAAM,iBAAiB,GAAG,cAAS,CAAC,GAAG,CAAC,yBAAyB,CAAC,CAAC;QACnE,IAAI,MAAM,EAAE,CAAC;YACZ,iBAAiB,CAAC,IAAI,EAAE,CAAC;QAC1B,CAAC;aAAM,CAAC;YACP,MAAM,iBAAiB,CAAC,QAAQ,EAAE,CAAC;QACpC,CAAC;IACF,CAAC;IAED,KAAK,CAAC,IAAI;QACT,MAAM,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,CAAC;QAEzC,IAAI,IAAI,CAAC,gBAAgB,CAAC,QAAQ;YAAE,IAAI,CAAC,+BAA+B,EAAE,CAAC;IAC5E,CAAC;IAGD,+BAA+B;QAC9B,IAAI,CAAC,iBAAiB,CAAC,oBAAoB,EAAE,CAAC;QAC9C,IAAI,
|
|
1
|
+
{"version":3,"file":"insights.service.js","sourceRoot":"","sources":["../../../src/modules/insights/insights.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,13 +3,17 @@ import { Logger } from '@n8n/backend-common';
|
|
|
3
3
|
import { GlobalConfig } from '@n8n/config';
|
|
4
4
|
import type { ModelConfig } from '@n8n/instance-ai';
|
|
5
5
|
import { TypeORMMemoryStorage } from './storage/typeorm-memory-storage';
|
|
6
|
+
interface PendingCompactionInput {
|
|
7
|
+
label: string;
|
|
8
|
+
text: string;
|
|
9
|
+
}
|
|
6
10
|
export declare class InstanceAiCompactionService {
|
|
7
11
|
private readonly logger;
|
|
8
12
|
private readonly memoryStorage;
|
|
9
13
|
private readonly maxContextWindowTokensCap;
|
|
10
14
|
constructor(logger: Logger, memoryStorage: TypeORMMemoryStorage, globalConfig: GlobalConfig);
|
|
11
|
-
prepareCompactedContext(threadId: string, memory: Memory, modelId: ModelConfig, lastMessages: number, compactionThreshold?: number): Promise<string | null>;
|
|
12
|
-
private
|
|
15
|
+
prepareCompactedContext(threadId: string, memory: Memory, modelId: ModelConfig, lastMessages: number, compactionThreshold?: number, currentInput?: PendingCompactionInput): Promise<string | null>;
|
|
16
|
+
private formatCachedSummaryBlock;
|
|
13
17
|
private extractRawText;
|
|
14
18
|
private extractHighSignalContent;
|
|
15
19
|
private extractTextFromContent;
|
|
@@ -17,3 +21,4 @@ export declare class InstanceAiCompactionService {
|
|
|
17
21
|
private parseMetadata;
|
|
18
22
|
private saveMetadata;
|
|
19
23
|
}
|
|
24
|
+
export {};
|
|
@@ -53,37 +53,39 @@ function getContextWindowForModel(modelId) {
|
|
|
53
53
|
return DEFAULT_CONTEXT_WINDOW;
|
|
54
54
|
}
|
|
55
55
|
const FIXED_CONTEXT_OVERHEAD_TOKENS = 8_000;
|
|
56
|
+
const MIN_UNSUMMARIZED_TOKENS = 500;
|
|
56
57
|
let InstanceAiCompactionService = class InstanceAiCompactionService {
|
|
57
58
|
constructor(logger, memoryStorage, globalConfig) {
|
|
58
59
|
this.logger = logger;
|
|
59
60
|
this.memoryStorage = memoryStorage;
|
|
60
61
|
this.maxContextWindowTokensCap = globalConfig.instanceAi.maxContextWindowTokens;
|
|
61
62
|
}
|
|
62
|
-
async prepareCompactedContext(threadId, memory, modelId, lastMessages, compactionThreshold = 0.8) {
|
|
63
|
+
async prepareCompactedContext(threadId, memory, modelId, lastMessages, compactionThreshold = 0.8, currentInput) {
|
|
63
64
|
try {
|
|
64
|
-
const recentTail = lastMessages;
|
|
65
|
+
const recentTail = Math.max(0, lastMessages);
|
|
66
|
+
const currentInputTokens = currentInput ? estimateTokens(currentInput.text) : 0;
|
|
65
67
|
const { messages: allMessages } = await this.memoryStorage.listMessages({
|
|
66
68
|
threadId,
|
|
67
69
|
perPage: false,
|
|
68
70
|
orderBy: { field: 'createdAt', direction: 'ASC' },
|
|
69
71
|
});
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
}
|
|
73
|
-
const totalTokens = FIXED_CONTEXT_OVERHEAD_TOKENS +
|
|
74
|
-
allMessages.reduce((sum, m) => sum + estimateTokens(this.extractRawText(m)), 0);
|
|
72
|
+
const rawMessageTokens = allMessages.reduce((sum, m) => sum + estimateTokens(this.extractRawText(m)), 0);
|
|
73
|
+
const totalTokens = FIXED_CONTEXT_OVERHEAD_TOKENS + rawMessageTokens + currentInputTokens;
|
|
75
74
|
const modelContextWindow = getContextWindowForModel(modelId);
|
|
76
75
|
const contextWindow = this.maxContextWindowTokensCap > 0
|
|
77
76
|
? Math.min(modelContextWindow, this.maxContextWindowTokensCap)
|
|
78
77
|
: modelContextWindow;
|
|
79
78
|
const threshold = contextWindow * compactionThreshold;
|
|
79
|
+
const thread = await memory.getThreadById({ threadId });
|
|
80
|
+
const existing = this.parseMetadata(thread?.metadata?.[METADATA_KEY]);
|
|
81
|
+
if (allMessages.length <= recentTail) {
|
|
82
|
+
return this.formatCachedSummaryBlock(existing);
|
|
83
|
+
}
|
|
80
84
|
if (totalTokens < threshold) {
|
|
81
|
-
return
|
|
85
|
+
return this.formatCachedSummaryBlock(existing);
|
|
82
86
|
}
|
|
83
87
|
const prefixEnd = allMessages.length - recentTail;
|
|
84
88
|
const prefix = allMessages.slice(0, prefixEnd);
|
|
85
|
-
const thread = await memory.getThreadById({ threadId });
|
|
86
|
-
const existing = this.parseMetadata(thread?.metadata?.[METADATA_KEY]);
|
|
87
89
|
let unsummarizedStart = 0;
|
|
88
90
|
if (existing?.upToMessageId) {
|
|
89
91
|
const idx = prefix.findIndex((m) => m.id === existing.upToMessageId);
|
|
@@ -93,18 +95,18 @@ let InstanceAiCompactionService = class InstanceAiCompactionService {
|
|
|
93
95
|
}
|
|
94
96
|
const unsummarizedSlice = prefix.slice(unsummarizedStart);
|
|
95
97
|
const unsummarizedTokens = unsummarizedSlice.reduce((sum, m) => sum + estimateTokens(this.extractRawText(m)), 0);
|
|
96
|
-
if (unsummarizedTokens <
|
|
97
|
-
return
|
|
98
|
+
if (unsummarizedTokens < MIN_UNSUMMARIZED_TOKENS) {
|
|
99
|
+
return this.formatCachedSummaryBlock(existing);
|
|
98
100
|
}
|
|
99
101
|
const messageBatch = this.extractHighSignalContent(unsummarizedSlice);
|
|
100
102
|
if (messageBatch.length === 0) {
|
|
101
|
-
return
|
|
103
|
+
return this.formatCachedSummaryBlock(existing);
|
|
102
104
|
}
|
|
105
|
+
const lastCompactedMessage = unsummarizedSlice[unsummarizedSlice.length - 1];
|
|
103
106
|
const summary = await (0, instance_ai_1.generateCompactionSummary)(modelId, {
|
|
104
107
|
previousSummary: existing?.summary ?? null,
|
|
105
108
|
messageBatch,
|
|
106
109
|
});
|
|
107
|
-
const lastCompactedMessage = unsummarizedSlice[unsummarizedSlice.length - 1];
|
|
108
110
|
const newMetadata = {
|
|
109
111
|
version: (existing?.version ?? 0) + 1,
|
|
110
112
|
upToMessageId: lastCompactedMessage.id,
|
|
@@ -122,9 +124,7 @@ let InstanceAiCompactionService = class InstanceAiCompactionService {
|
|
|
122
124
|
return null;
|
|
123
125
|
}
|
|
124
126
|
}
|
|
125
|
-
|
|
126
|
-
const thread = await memory.getThreadById({ threadId });
|
|
127
|
-
const existing = this.parseMetadata(thread?.metadata?.[METADATA_KEY]);
|
|
127
|
+
formatCachedSummaryBlock(existing) {
|
|
128
128
|
if (existing?.summary) {
|
|
129
129
|
return this.formatSummaryBlock(existing.summary);
|
|
130
130
|
}
|