From b48bb1f8992d4fb8bc096e61e32f9f7ea7554e21 Mon Sep 17 00:00:00 2001 From: Charlie Kolb Date: Fri, 2 Oct 2026 07:38:15 +0000 Subject: [PATCH] refactor(core): Move finder services to backend services (no-changelog) (#40069) --- .../credentials-finder.service.test.ts | 4 ++-- .../credentials/credentials-finder.service.ts | 2 +- packages/@n8n/backend-services/src/index.ts | 6 +++++ .../__tests__/folder-finder.service.test.ts | 2 +- .../src/services/folder-finder.service.ts | 2 +- .../__tests__/credentials.controller.test.ts | 2 +- .../__tests__/credentials.service.ee.test.ts | 3 +-- .../__tests__/credentials.service.test.ts | 7 ++++-- .../src/credentials/credentials.controller.ts | 3 +-- .../src/credentials/credentials.service.ee.ts | 3 +-- .../src/credentials/credentials.service.ts | 3 +-- .../evaluation-config-validator.test.ts | 2 +- .../evaluation-config-validator.ts | 2 +- .../__tests__/insights-model-resolver.test.ts | 2 +- .../insights/insights-model-resolver.ts | 2 +- .../credentials-permission-checker.test.ts | 2 +- .../credentials-permission-checker.ts | 5 +--- ...e-reconstruction-integration-tools.test.ts | 3 +-- ...-reconstruction-subagent-workspace.test.ts | 2 +- ...time-reconstruction-tool-filtering.test.ts | 2 +- .../agents-service-reconstruct-gating.test.ts | 2 +- .../agent-runtime-reconstruction.service.ts | 2 +- .../__tests__/slack-app-setup.service.test.ts | 8 ++++--- .../slack/slack-managed-setup.service.ts | 3 +-- .../chat-hub-credentials.service.test.ts | 2 +- .../chat-hub/chat-hub-credentials.service.ts | 2 +- .../chat-hub/chat-hub.models.service.ts | 2 +- .../dynamic-credentials.controller.test.ts | 3 +-- .../dynamic-credentials.controller.ts | 3 +-- .../instance-ai-settings.service.test.ts | 3 +-- .../instance-ai.adapter.node-usage.test.ts | 7 ++++-- ...stance-ai.adapter.service.security.test.ts | 7 ++++-- .../instance-ai.adapter.service.test.ts | 3 +-- .../instance-ai-settings.service.ts | 3 +-- .../instance-ai.adapter.service.ts | 9 ++++--- ...tance-ai-mcp-connection.controller.test.ts | 2 +- .../instance-ai-mcp-registry.service.test.ts | 3 +-- .../instance-ai-mcp-connection.controller.ts | 2 +- .../mcp/instance-ai-mcp-registry.service.ts | 3 +-- .../log-streaming.controller.test.ts | 2 +- .../destination-credentials-access.test.ts | 2 +- .../destination-credentials-access.ts | 2 +- .../log-streaming.controller.ts | 2 +- ...nstall-community-node.registration.test.ts | 3 +-- .../modules/mcp/__tests__/mcp-scopes.test.ts | 3 +-- .../modules/mcp/__tests__/mcp.service.test.ts | 3 +-- .../move-workflows-to-folder.tool.test.ts | 2 +- .../__tests__/search-workflows.tool.test.ts | 2 +- packages/cli/src/modules/mcp/mcp.service.ts | 3 +-- .../tools/move-workflows-to-folder.tool.ts | 2 +- .../mcp/tools/search-workflows.tool.ts | 2 +- .../__tests__/credential.exporter.test.ts | 2 +- .../credential/credential.exporter.ts | 2 +- .../folder/__tests__/folder.exporter.test.ts | 2 +- .../entities/folder/folder.exporter.ts | 2 +- .../__tests__/project.exporter.test.ts | 2 +- .../entities/project/project.exporter.ts | 2 +- .../auto-included-workflow-resolver.test.ts | 2 +- .../auto-included-workflow-resolver.ts | 2 +- .../workflow-dependency-query.service.test.ts | 3 +-- .../workflow-dependency-query.service.ts | 3 +-- .../__tests__/execute-node.service.test.ts | 2 +- .../node-execution/execute-node.service.ts | 2 +- .../oauth.service.integration.test.ts | 8 +++++-- .../src/oauth/__tests__/oauth.service.test.ts | 8 +++++-- packages/cli/src/oauth/oauth.service.ts | 8 +++++-- .../__tests__/check-access.test.ts | 3 +-- .../cli/src/permissions.ee/check-access.ts | 3 +-- .../credentials.public.controller.ts | 3 +-- .../log-streaming/log-streaming.handler.ts | 12 ++++++---- .../dynamic-node-parameters.service.test.ts | 2 +- .../node-resource-explorer.service.test.ts | 2 +- .../dynamic-node-parameters.service.ts | 2 +- .../node-resource-explorer.service.ts | 2 +- .../workflow-creation.service.test.ts | 2 +- .../__tests__/workflow.service.ee.test.ts | 2 +- .../workflows/workflow-creation.service.ts | 3 +-- .../cli/src/workflows/workflow.service.ee.ts | 2 +- .../credentials/credentials.service.test.ts | 2 +- .../credentials.repository.test.ts | 24 +++++-------------- .../log-streaming.controller.test.ts | 2 +- .../mcp/search-workflows.tool.test.ts | 2 +- 82 files changed, 136 insertions(+), 138 deletions(-) rename packages/{cli/src/services => @n8n/backend-services/src/credentials}/__tests__/credentials-finder.service.test.ts (99%) rename packages/{cli => @n8n/backend-services}/src/credentials/credentials-finder.service.ts (99%) rename packages/{cli => @n8n/backend-services}/src/services/__tests__/folder-finder.service.test.ts (99%) rename packages/{cli => @n8n/backend-services}/src/services/folder-finder.service.ts (99%) diff --git a/packages/cli/src/services/__tests__/credentials-finder.service.test.ts b/packages/@n8n/backend-services/src/credentials/__tests__/credentials-finder.service.test.ts similarity index 99% rename from packages/cli/src/services/__tests__/credentials-finder.service.test.ts rename to packages/@n8n/backend-services/src/credentials/__tests__/credentials-finder.service.test.ts index 1c453cb9bff..7c6ff4ce156 100644 --- a/packages/cli/src/services/__tests__/credentials-finder.service.test.ts +++ b/packages/@n8n/backend-services/src/credentials/__tests__/credentials-finder.service.test.ts @@ -13,8 +13,8 @@ import { } from '@n8n/db'; import type { Scope } from '@n8n/permissions'; -import type { RoleService } from '@n8n/backend-services'; -import { CredentialsFinderService } from '@/credentials/credentials-finder.service'; +import type { RoleService } from '../../services/role.service'; +import { CredentialsFinderService } from '../credentials-finder.service'; const member = mock({ id: 'user-1', role: GLOBAL_MEMBER_ROLE }); const owner = mock({ id: 'owner-1', role: GLOBAL_OWNER_ROLE }); diff --git a/packages/cli/src/credentials/credentials-finder.service.ts b/packages/@n8n/backend-services/src/credentials/credentials-finder.service.ts similarity index 99% rename from packages/cli/src/credentials/credentials-finder.service.ts rename to packages/@n8n/backend-services/src/credentials/credentials-finder.service.ts index 84446dc5606..e384ca38df0 100644 --- a/packages/cli/src/credentials/credentials-finder.service.ts +++ b/packages/@n8n/backend-services/src/credentials/credentials-finder.service.ts @@ -9,7 +9,7 @@ import { import { Service } from '@n8n/di'; import { hasGlobalScope } from '@n8n/permissions'; import type { CredentialSharingRole, ProjectRole, Scope } from '@n8n/permissions'; -import { RoleService } from '@n8n/backend-services'; +import { RoleService } from '../services/role.service'; /** * The credential scopes an instance role can hold without being allowed to use a diff --git a/packages/@n8n/backend-services/src/index.ts b/packages/@n8n/backend-services/src/index.ts index f98349e0a04..d1651f587ed 100644 --- a/packages/@n8n/backend-services/src/index.ts +++ b/packages/@n8n/backend-services/src/index.ts @@ -1,4 +1,9 @@ export { EventService, type EventMap } from './events/event.service'; +export { + CredentialsFinderService, + CREDENTIAL_USABILITY_SCOPES, + type UnusableCredential, +} from './credentials/credentials-finder.service'; export { UncacheableValueError } from './errors/cache-errors/uncacheable-value.error'; export { CacheService } from './services/cache/cache.service'; export { RedisClientService } from './services/redis-client.service'; @@ -9,6 +14,7 @@ export { type RoleDeletionChecker, } from './services/role-deletion-check-proxy.service'; export { RoleService } from './services/role.service'; +export { FolderFinderService } from './services/folder-finder.service'; export { UrlService } from './services/url.service'; export { classifyRestError, diff --git a/packages/cli/src/services/__tests__/folder-finder.service.test.ts b/packages/@n8n/backend-services/src/services/__tests__/folder-finder.service.test.ts similarity index 99% rename from packages/cli/src/services/__tests__/folder-finder.service.test.ts rename to packages/@n8n/backend-services/src/services/__tests__/folder-finder.service.test.ts index e97a1a782ef..979f06330b8 100644 --- a/packages/cli/src/services/__tests__/folder-finder.service.test.ts +++ b/packages/@n8n/backend-services/src/services/__tests__/folder-finder.service.test.ts @@ -10,7 +10,7 @@ import type { } from '@n8n/db'; import { FolderFinderService } from '../folder-finder.service'; -import type { RoleService } from '@n8n/backend-services'; +import type { RoleService } from '../role.service'; const member = mock({ id: 'user-1', diff --git a/packages/cli/src/services/folder-finder.service.ts b/packages/@n8n/backend-services/src/services/folder-finder.service.ts similarity index 99% rename from packages/cli/src/services/folder-finder.service.ts rename to packages/@n8n/backend-services/src/services/folder-finder.service.ts index f12f8e8861e..994ff384482 100644 --- a/packages/cli/src/services/folder-finder.service.ts +++ b/packages/@n8n/backend-services/src/services/folder-finder.service.ts @@ -2,7 +2,7 @@ import type { Folder, OperationContext, User } from '@n8n/db'; import { FolderAccessRepository } from '@n8n/db'; import { Service } from '@n8n/di'; import { hasGlobalScope, type Scope } from '@n8n/permissions'; -import { RoleService } from '@n8n/backend-services'; +import { RoleService } from './role.service'; /** * Resolves folders by id for a user, enforcing access through the folder's home diff --git a/packages/cli/src/credentials/__tests__/credentials.controller.test.ts b/packages/cli/src/credentials/__tests__/credentials.controller.test.ts index 55df6566cd4..faf5922d434 100644 --- a/packages/cli/src/credentials/__tests__/credentials.controller.test.ts +++ b/packages/cli/src/credentials/__tests__/credentials.controller.test.ts @@ -26,7 +26,7 @@ import type { CredentialRequest } from '@/requests'; import { createNewCredentialsPayload, createdCredentialsWithScopes } from './credentials.test-data'; import type { CredentialDependencyService } from '../credential-dependency.service'; -import type { CredentialsFinderService } from '../credentials-finder.service'; +import type { CredentialsFinderService } from '@n8n/backend-services'; import { CredentialsController } from '../credentials.controller'; import { CredentialsService } from '../credentials.service'; import * as validation from '../validation'; diff --git a/packages/cli/src/credentials/__tests__/credentials.service.ee.test.ts b/packages/cli/src/credentials/__tests__/credentials.service.ee.test.ts index 4d41b67a068..fdcd1526331 100644 --- a/packages/cli/src/credentials/__tests__/credentials.service.ee.test.ts +++ b/packages/cli/src/credentials/__tests__/credentials.service.ee.test.ts @@ -9,14 +9,13 @@ import type { import { mock } from 'vitest-mock-extended'; import type { CredentialConnectionStatusProxy } from '@/credentials/credential-connection-status-proxy'; -import type { CredentialsFinderService } from '@/credentials/credentials-finder.service'; +import { type CredentialsFinderService, type RoleService } from '@n8n/backend-services'; import type { CredentialsService } from '@/credentials/credentials.service'; import { EnterpriseCredentialsService } from '@/credentials/credentials.service.ee'; import type { ExternalSecretsConfig } from '@/modules/external-secrets.ee/external-secrets.config'; import type { SecretsProviderAccessCheckService } from '@/modules/external-secrets.ee/secret-provider-access-check.service.ee'; import type { OwnershipService } from '@/services/ownership.service'; import type { ProjectService } from '@/services/project.service.ee'; -import type { RoleService } from '@n8n/backend-services'; describe('EnterpriseCredentialsService', () => { const sharedCredentialsRepository = mock(); diff --git a/packages/cli/src/credentials/__tests__/credentials.service.test.ts b/packages/cli/src/credentials/__tests__/credentials.service.test.ts index 014b9305572..3c39752b89a 100644 --- a/packages/cli/src/credentials/__tests__/credentials.service.test.ts +++ b/packages/cli/src/credentials/__tests__/credentials.service.test.ts @@ -2,7 +2,11 @@ import { CredentialDescriptionsService } from '@/credentials/credential-descript import type { PostHogClient } from '@/posthog'; import { CREDENTIAL_DESCRIPTION_MAX_LENGTH } from '@n8n/api-types'; import type { Logger } from '@n8n/backend-common'; -import { type EventService, type RoleService } from '@n8n/backend-services'; +import { + type EventService, + type RoleService, + type CredentialsFinderService, +} from '@n8n/backend-services'; import type { CredentialsRepository, ICredentialsDb, @@ -44,7 +48,6 @@ import { mock } from 'vitest-mock-extended'; import type { CredentialTypes } from '@/credential-types'; import type { CredentialConnectionStatusProxy } from '@/credentials/credential-connection-status-proxy'; import type { CredentialDependencyService } from '@/credentials/credential-dependency.service'; -import type { CredentialsFinderService } from '@/credentials/credentials-finder.service'; import { CredentialsService } from '@/credentials/credentials.service'; import type { InstanceCredentialUseRegistry } from '@/credentials/instance-credential-use.registry'; import * as validation from '@/credentials/validation'; diff --git a/packages/cli/src/credentials/credentials.controller.ts b/packages/cli/src/credentials/credentials.controller.ts index 6d2a47ada44..f3f0ddeeb27 100644 --- a/packages/cli/src/credentials/credentials.controller.ts +++ b/packages/cli/src/credentials/credentials.controller.ts @@ -6,7 +6,7 @@ import { TestCredentialRequestDto, } from '@n8n/api-types'; import { LicenseState, Logger } from '@n8n/backend-common'; -import { EventService } from '@n8n/backend-services'; +import { EventService, CredentialsFinderService } from '@n8n/backend-services'; import { GlobalConfig } from '@n8n/config'; import { SharedCredentials, @@ -36,7 +36,6 @@ import { z } from 'zod'; import { CredentialConnectionStatusProxy } from './credential-connection-status-proxy'; import { CredentialDescriptionsService } from './credential-descriptions.service'; -import { CredentialsFinderService } from './credentials-finder.service'; import { CredentialsService } from './credentials.service'; import { EnterpriseCredentialsService } from './credentials.service.ee'; import { getExternalSecretExpressionPaths } from './external-secrets.utils'; diff --git a/packages/cli/src/credentials/credentials.service.ee.ts b/packages/cli/src/credentials/credentials.service.ee.ts index 48954b5ad17..ac8a60e3c72 100644 --- a/packages/cli/src/credentials/credentials.service.ee.ts +++ b/packages/cli/src/credentials/credentials.service.ee.ts @@ -18,10 +18,9 @@ import { ExternalSecretsConfig } from '@/modules/external-secrets.ee/external-se import { SecretsProviderAccessCheckService } from '@/modules/external-secrets.ee/secret-provider-access-check.service.ee'; import { OwnershipService } from '@/services/ownership.service'; import { ProjectService } from '@/services/project.service.ee'; -import { RoleService } from '@n8n/backend-services'; +import { RoleService, CredentialsFinderService } from '@n8n/backend-services'; import { CredentialConnectionStatusProxy } from './credential-connection-status-proxy'; -import { CredentialsFinderService } from './credentials-finder.service'; import { CredentialsService } from './credentials.service'; import { validateAccessToReferencedSecretProviders } from './validation'; diff --git a/packages/cli/src/credentials/credentials.service.ts b/packages/cli/src/credentials/credentials.service.ts index 252d349dba0..552d6163dbd 100644 --- a/packages/cli/src/credentials/credentials.service.ts +++ b/packages/cli/src/credentials/credentials.service.ts @@ -1,6 +1,6 @@ import type { CreateCredentialDto, CredentialConnectionStatus } from '@n8n/api-types'; import { Logger } from '@n8n/backend-common'; -import { EventService, RoleService } from '@n8n/backend-services'; +import { EventService, RoleService, CredentialsFinderService } from '@n8n/backend-services'; import { Time } from '@n8n/constants'; import { Project, @@ -83,7 +83,6 @@ import { CredentialDependencyService, type CredentialDependencyFilter, } from './credential-dependency.service'; -import { CredentialsFinderService } from './credentials-finder.service'; import { getExternalSecretExpressionPaths } from './external-secrets.utils'; import { InstanceCredentialUseRegistry } from './instance-credential-use.registry'; import { diff --git a/packages/cli/src/evaluation.ee/__tests__/evaluation-config-validator.test.ts b/packages/cli/src/evaluation.ee/__tests__/evaluation-config-validator.test.ts index 7331869f738..2c794b1815f 100644 --- a/packages/cli/src/evaluation.ee/__tests__/evaluation-config-validator.test.ts +++ b/packages/cli/src/evaluation.ee/__tests__/evaluation-config-validator.test.ts @@ -4,7 +4,7 @@ import type { IConnections, INode, IWorkflowBase } from 'n8n-workflow'; import type { Mocked } from 'vitest'; import { mock } from 'vitest-mock-extended'; -import type { CredentialsFinderService } from '@/credentials/credentials-finder.service'; +import type { CredentialsFinderService } from '@n8n/backend-services'; import type { DataTable as DataTableEntity } from '@/modules/data-table/data-table.entity'; import type { DataTableRepository } from '@/modules/data-table/data-table.repository'; diff --git a/packages/cli/src/evaluation.ee/evaluation-config-validator.ts b/packages/cli/src/evaluation.ee/evaluation-config-validator.ts index 3b8572214e4..0c358d88bda 100644 --- a/packages/cli/src/evaluation.ee/evaluation-config-validator.ts +++ b/packages/cli/src/evaluation.ee/evaluation-config-validator.ts @@ -14,7 +14,7 @@ import { mapConnectionsByDestination, } from 'n8n-workflow'; -import { CredentialsFinderService } from '@/credentials/credentials-finder.service'; +import { CredentialsFinderService } from '@n8n/backend-services'; import { DataTableRepository } from '@/modules/data-table/data-table.repository'; import { LlmJudgeProviderRegistry } from './llm-judge-provider-registry'; diff --git a/packages/cli/src/evaluation.ee/insights/__tests__/insights-model-resolver.test.ts b/packages/cli/src/evaluation.ee/insights/__tests__/insights-model-resolver.test.ts index a0d68b65103..9a80e2df1df 100644 --- a/packages/cli/src/evaluation.ee/insights/__tests__/insights-model-resolver.test.ts +++ b/packages/cli/src/evaluation.ee/insights/__tests__/insights-model-resolver.test.ts @@ -7,7 +7,7 @@ import type { import type { Mocked } from 'vitest'; import { mock } from 'vitest-mock-extended'; -import type { CredentialsFinderService } from '@/credentials/credentials-finder.service'; +import type { CredentialsFinderService } from '@n8n/backend-services'; import type { CredentialsService } from '@/credentials/credentials.service'; import { InsightsModelResolver } from '../insights-model-resolver'; diff --git a/packages/cli/src/evaluation.ee/insights/insights-model-resolver.ts b/packages/cli/src/evaluation.ee/insights/insights-model-resolver.ts index 111303520f0..e8394870456 100644 --- a/packages/cli/src/evaluation.ee/insights/insights-model-resolver.ts +++ b/packages/cli/src/evaluation.ee/insights/insights-model-resolver.ts @@ -3,7 +3,7 @@ import type { EvaluationConfig, User } from '@n8n/db'; import { EvaluationConfigRepository } from '@n8n/db'; import { Service } from '@n8n/di'; -import { CredentialsFinderService } from '@/credentials/credentials-finder.service'; +import { CredentialsFinderService } from '@n8n/backend-services'; import { CredentialsService } from '@/credentials/credentials.service'; // LLM-judge provider node types → `@n8n/agents` provider prefix. Only the diff --git a/packages/cli/src/executions/pre-execution-checks/__tests__/credentials-permission-checker.test.ts b/packages/cli/src/executions/pre-execution-checks/__tests__/credentials-permission-checker.test.ts index 0fc3391be4e..b74d546fad4 100644 --- a/packages/cli/src/executions/pre-execution-checks/__tests__/credentials-permission-checker.test.ts +++ b/packages/cli/src/executions/pre-execution-checks/__tests__/credentials-permission-checker.test.ts @@ -14,7 +14,7 @@ import { mock } from 'vitest-mock-extended'; import type { Logger } from '@n8n/backend-common'; -import type { CredentialsFinderService } from '@/credentials/credentials-finder.service'; +import type { CredentialsFinderService } from '@n8n/backend-services'; import type { NodeTypes } from '@/node-types'; import type { OwnershipService } from '@/services/ownership.service'; import type { ProjectService } from '@/services/project.service.ee'; diff --git a/packages/cli/src/executions/pre-execution-checks/credentials-permission-checker.ts b/packages/cli/src/executions/pre-execution-checks/credentials-permission-checker.ts index 8b0480d2993..4348620afae 100644 --- a/packages/cli/src/executions/pre-execution-checks/credentials-permission-checker.ts +++ b/packages/cli/src/executions/pre-execution-checks/credentials-permission-checker.ts @@ -7,10 +7,7 @@ import type { INode, INodeTypeDescription } from 'n8n-workflow'; import { getActiveCredentialTypes, UserError } from 'n8n-workflow'; import { isCredSharingEnabled } from '@/constants/credential-sharing'; -import { - CredentialsFinderService, - type UnusableCredential, -} from '@/credentials/credentials-finder.service'; +import { CredentialsFinderService, type UnusableCredential } from '@n8n/backend-services'; import { NodeTypes } from '@/node-types'; import { OwnershipService } from '@/services/ownership.service'; import { ProjectService } from '@/services/project.service.ee'; diff --git a/packages/cli/src/modules/agents/__tests__/agent-runtime-reconstruction-integration-tools.test.ts b/packages/cli/src/modules/agents/__tests__/agent-runtime-reconstruction-integration-tools.test.ts index 51ac98f5843..5afa5f7dbf8 100644 --- a/packages/cli/src/modules/agents/__tests__/agent-runtime-reconstruction-integration-tools.test.ts +++ b/packages/cli/src/modules/agents/__tests__/agent-runtime-reconstruction-integration-tools.test.ts @@ -1,4 +1,4 @@ -import type { EventService } from '@n8n/backend-services'; +import { type EventService, type CredentialsFinderService } from '@n8n/backend-services'; import type { AgentMessageSteeringService } from '../agent-message-steering.service'; import type { Mocked } from 'vitest'; import { type AgentJsonConfig } from '@n8n/api-types'; @@ -16,7 +16,6 @@ import { Container } from '@n8n/di'; import { mock } from 'vitest-mock-extended'; import type { ActiveExecutions } from '@/active-executions'; -import type { CredentialsFinderService } from '@/credentials/credentials-finder.service'; import type { ExternalHooks } from '@/external-hooks'; import { CredentialsService } from '@/credentials/credentials.service'; import type { EphemeralNodeExecutor } from '@/node-execution'; diff --git a/packages/cli/src/modules/agents/__tests__/agent-runtime-reconstruction-subagent-workspace.test.ts b/packages/cli/src/modules/agents/__tests__/agent-runtime-reconstruction-subagent-workspace.test.ts index 3690666c98d..709daaf5ac6 100644 --- a/packages/cli/src/modules/agents/__tests__/agent-runtime-reconstruction-subagent-workspace.test.ts +++ b/packages/cli/src/modules/agents/__tests__/agent-runtime-reconstruction-subagent-workspace.test.ts @@ -6,7 +6,7 @@ import type { CustomFetch, HttpTransport, OutboundHttp } from '@n8n/backend-netw import { mock } from 'vitest-mock-extended'; import type { ActiveExecutions } from '@/active-executions'; -import type { CredentialsFinderService } from '@/credentials/credentials-finder.service'; +import type { CredentialsFinderService } from '@n8n/backend-services'; import type { EphemeralNodeExecutor } from '@/node-execution'; import type { OauthService } from '@/oauth/oauth.service'; import type { AiService } from '@/services/ai.service'; diff --git a/packages/cli/src/modules/agents/__tests__/agent-runtime-reconstruction-tool-filtering.test.ts b/packages/cli/src/modules/agents/__tests__/agent-runtime-reconstruction-tool-filtering.test.ts index 16476892d22..e383f4a7dc3 100644 --- a/packages/cli/src/modules/agents/__tests__/agent-runtime-reconstruction-tool-filtering.test.ts +++ b/packages/cli/src/modules/agents/__tests__/agent-runtime-reconstruction-tool-filtering.test.ts @@ -18,7 +18,7 @@ import { Container } from '@n8n/di'; import { mock } from 'vitest-mock-extended'; import type { ActiveExecutions } from '@/active-executions'; -import type { CredentialsFinderService } from '@/credentials/credentials-finder.service'; +import type { CredentialsFinderService } from '@n8n/backend-services'; import { SubworkflowPolicyChecker } from '@/executions/pre-execution-checks'; import type { EphemeralNodeExecutor } from '@/node-execution'; import type { OauthService } from '@/oauth/oauth.service'; diff --git a/packages/cli/src/modules/agents/__tests__/agents-service-reconstruct-gating.test.ts b/packages/cli/src/modules/agents/__tests__/agents-service-reconstruct-gating.test.ts index 9c8788de3bc..3fb9a2d429d 100644 --- a/packages/cli/src/modules/agents/__tests__/agents-service-reconstruct-gating.test.ts +++ b/packages/cli/src/modules/agents/__tests__/agents-service-reconstruct-gating.test.ts @@ -22,7 +22,7 @@ import { Container } from '@n8n/di'; import { mock } from 'vitest-mock-extended'; import type { ActiveExecutions } from '@/active-executions'; -import type { CredentialsFinderService } from '@/credentials/credentials-finder.service'; +import type { CredentialsFinderService } from '@n8n/backend-services'; import type { EphemeralNodeExecutor } from '@/node-execution'; import type { OauthService } from '@/oauth/oauth.service'; import type { AiService } from '@/services/ai.service'; diff --git a/packages/cli/src/modules/agents/agent-runtime-reconstruction.service.ts b/packages/cli/src/modules/agents/agent-runtime-reconstruction.service.ts index 990d6cba467..758de285ea2 100644 --- a/packages/cli/src/modules/agents/agent-runtime-reconstruction.service.ts +++ b/packages/cli/src/modules/agents/agent-runtime-reconstruction.service.ts @@ -36,7 +36,7 @@ import { nanoid } from 'nanoid'; import { ActiveExecutions } from '@/active-executions'; import { N8N_VERSION } from '@/constants'; -import { CredentialsFinderService } from '@/credentials/credentials-finder.service'; +import { CredentialsFinderService } from '@n8n/backend-services'; import { SubworkflowPolicyChecker } from '@/executions/pre-execution-checks'; import type { AgentRunTelemetryType } from '@/interfaces'; import { EphemeralNodeExecutor } from '@/node-execution'; diff --git a/packages/cli/src/modules/agents/integrations/__tests__/slack-app-setup.service.test.ts b/packages/cli/src/modules/agents/integrations/__tests__/slack-app-setup.service.test.ts index 9f63d737cb9..8d1bda575f1 100644 --- a/packages/cli/src/modules/agents/integrations/__tests__/slack-app-setup.service.test.ts +++ b/packages/cli/src/modules/agents/integrations/__tests__/slack-app-setup.service.test.ts @@ -6,12 +6,14 @@ import { mock } from 'vitest-mock-extended'; import type { Cipher } from 'n8n-core'; import type { CredentialsService } from '@/credentials/credentials.service'; -import type { CredentialsFinderService } from '@/credentials/credentials-finder.service'; +import { + type CredentialsFinderService, + type CacheService, + type UrlService, +} from '@n8n/backend-services'; import type { CredentialsOverwrites } from '@/credentials-overwrites'; import { BadRequestError } from '@n8n/errors'; -import type { CacheService } from '@n8n/backend-services'; import type { ProjectService } from '@/services/project.service.ee'; -import type { UrlService } from '@n8n/backend-services'; import type { AgentIntegrationManagementService } from '../../agent-integration-management.service'; import type { AgentRepository } from '../../repositories/agent.repository'; diff --git a/packages/cli/src/modules/agents/integrations/platforms/slack/slack-managed-setup.service.ts b/packages/cli/src/modules/agents/integrations/platforms/slack/slack-managed-setup.service.ts index ab18b15013d..315da0ca2a1 100644 --- a/packages/cli/src/modules/agents/integrations/platforms/slack/slack-managed-setup.service.ts +++ b/packages/cli/src/modules/agents/integrations/platforms/slack/slack-managed-setup.service.ts @@ -17,11 +17,10 @@ import { randomBytes } from 'node:crypto'; import { readFile } from 'node:fs/promises'; import { join } from 'node:path'; -import { CredentialsFinderService } from '@/credentials/credentials-finder.service'; +import { CredentialsFinderService, CacheService } from '@n8n/backend-services'; import { CredentialsService } from '@/credentials/credentials.service'; import { CredentialsOverwrites } from '@/credentials-overwrites'; import { BadRequestError, NotFoundError } from '@n8n/errors'; -import { CacheService } from '@n8n/backend-services'; import { SlackMethodsService } from './slack-methods.service'; import { diff --git a/packages/cli/src/modules/chat-hub/__tests__/chat-hub-credentials.service.test.ts b/packages/cli/src/modules/chat-hub/__tests__/chat-hub-credentials.service.test.ts index 7437c1bc729..874f89fd506 100644 --- a/packages/cli/src/modules/chat-hub/__tests__/chat-hub-credentials.service.test.ts +++ b/packages/cli/src/modules/chat-hub/__tests__/chat-hub-credentials.service.test.ts @@ -9,7 +9,7 @@ import type { EntityManager } from '@n8n/typeorm'; import type { INodeCredentials } from 'n8n-workflow'; import { mock } from 'vitest-mock-extended'; -import type { CredentialsFinderService } from '@/credentials/credentials-finder.service'; +import type { CredentialsFinderService } from '@n8n/backend-services'; import type { CredentialsService } from '@/credentials/credentials.service'; import { BadRequestError, ForbiddenError } from '@n8n/errors'; diff --git a/packages/cli/src/modules/chat-hub/chat-hub-credentials.service.ts b/packages/cli/src/modules/chat-hub/chat-hub-credentials.service.ts index f5831c2027d..f0fa7b6e539 100644 --- a/packages/cli/src/modules/chat-hub/chat-hub-credentials.service.ts +++ b/packages/cli/src/modules/chat-hub/chat-hub-credentials.service.ts @@ -8,7 +8,7 @@ import { Service } from '@n8n/di'; import { EntityManager } from '@n8n/typeorm'; import type { INodeCredentials } from 'n8n-workflow'; -import { CredentialsFinderService } from '@/credentials/credentials-finder.service'; +import { CredentialsFinderService } from '@n8n/backend-services'; import { CredentialsService } from '@/credentials/credentials.service'; import { BadRequestError, ForbiddenError } from '@n8n/errors'; diff --git a/packages/cli/src/modules/chat-hub/chat-hub.models.service.ts b/packages/cli/src/modules/chat-hub/chat-hub.models.service.ts index ebdaec75544..89d191fb93e 100644 --- a/packages/cli/src/modules/chat-hub/chat-hub.models.service.ts +++ b/packages/cli/src/modules/chat-hub/chat-hub.models.service.ts @@ -17,7 +17,7 @@ import { type IWorkflowExecuteAdditionalData, } from 'n8n-workflow'; -import { CredentialsFinderService } from '@/credentials/credentials-finder.service'; +import { CredentialsFinderService } from '@n8n/backend-services'; import { DynamicNodeParametersService } from '@/services/dynamic-node-parameters.service'; import { getBase } from '@/workflow-execute-additional-data'; import { WorkflowService } from '@/workflows/workflow.service'; diff --git a/packages/cli/src/modules/dynamic-credentials.ee/__tests__/dynamic-credentials.controller.test.ts b/packages/cli/src/modules/dynamic-credentials.ee/__tests__/dynamic-credentials.controller.test.ts index 8b333f60f08..95137d46369 100644 --- a/packages/cli/src/modules/dynamic-credentials.ee/__tests__/dynamic-credentials.controller.test.ts +++ b/packages/cli/src/modules/dynamic-credentials.ee/__tests__/dynamic-credentials.controller.test.ts @@ -1,5 +1,5 @@ import { Logger } from '@n8n/backend-common'; -import { EventService, UrlService } from '@n8n/backend-services'; +import { EventService, UrlService, CredentialsFinderService } from '@n8n/backend-services'; import { mockInstance } from '@n8n/backend-test-utils'; import { type AuthenticatedRequest, type CredentialsEntity } from '@n8n/db'; import { Container } from '@n8n/di'; @@ -7,7 +7,6 @@ import type { Request, Response } from 'express'; import { Cipher } from 'n8n-core'; import { mock } from 'vitest-mock-extended'; -import { CredentialsFinderService } from '@/credentials/credentials-finder.service'; import { EnterpriseCredentialsService } from '@/credentials/credentials.service.ee'; import type { DynamicCredentialResolver } from '@/modules/dynamic-credentials.ee/database/entities/credential-resolver'; import { DynamicCredentialResolverRepository } from '@/modules/dynamic-credentials.ee/database/repositories/credential-resolver.repository'; diff --git a/packages/cli/src/modules/dynamic-credentials.ee/dynamic-credentials.controller.ts b/packages/cli/src/modules/dynamic-credentials.ee/dynamic-credentials.controller.ts index a53381631c5..3c4faffc327 100644 --- a/packages/cli/src/modules/dynamic-credentials.ee/dynamic-credentials.controller.ts +++ b/packages/cli/src/modules/dynamic-credentials.ee/dynamic-credentials.controller.ts @@ -1,4 +1,4 @@ -import { EventService, UrlService } from '@n8n/backend-services'; +import { EventService, UrlService, CredentialsFinderService } from '@n8n/backend-services'; import { Time } from '@n8n/constants'; import { CredentialsEntity, AuthenticatedRequest, isAuthenticatedRequest } from '@n8n/db'; import { Delete, Get, Options, Param, Post, RestController } from '@n8n/decorators'; @@ -8,7 +8,6 @@ import { Request, Response } from 'express'; import { Cipher } from 'n8n-core'; import { type ICredentialContext, jsonParse } from 'n8n-workflow'; -import { CredentialsFinderService } from '@/credentials/credentials-finder.service'; import { EnterpriseCredentialsService } from '@/credentials/credentials.service.ee'; import { BadRequestError, NotFoundError } from '@n8n/errors'; import { CreateCsrfStateData, OauthService } from '@/oauth/oauth.service'; diff --git a/packages/cli/src/modules/instance-ai/__tests__/instance-ai-settings.service.test.ts b/packages/cli/src/modules/instance-ai/__tests__/instance-ai-settings.service.test.ts index 7185a007a32..e8539c49a5c 100644 --- a/packages/cli/src/modules/instance-ai/__tests__/instance-ai-settings.service.test.ts +++ b/packages/cli/src/modules/instance-ai/__tests__/instance-ai-settings.service.test.ts @@ -1,7 +1,7 @@ import { DEFAULT_INSTANCE_AI_PERMISSIONS } from '@n8n/api-types'; import type { InstanceAiPermissions } from '@n8n/api-types'; import { Logger } from '@n8n/backend-common'; -import type { EventService } from '@n8n/backend-services'; +import { type EventService, type CredentialsFinderService } from '@n8n/backend-services'; import type { InstanceAiConfig } from '@n8n/config'; import type { CredentialsEntity, @@ -21,7 +21,6 @@ import { type SandboxSettingsService, } from '@/services/sandbox-settings.service'; import type { UserService } from '@/services/user.service'; -import type { CredentialsFinderService } from '@/credentials/credentials-finder.service'; import type { CredentialsService } from '@/credentials/credentials.service'; import type { InstanceCredentialBroker } from '@/credentials/instance-credential-broker'; diff --git a/packages/cli/src/modules/instance-ai/__tests__/instance-ai.adapter.node-usage.test.ts b/packages/cli/src/modules/instance-ai/__tests__/instance-ai.adapter.node-usage.test.ts index e113db3ddc5..5d4fcb15a72 100644 --- a/packages/cli/src/modules/instance-ai/__tests__/instance-ai.adapter.node-usage.test.ts +++ b/packages/cli/src/modules/instance-ai/__tests__/instance-ai.adapter.node-usage.test.ts @@ -29,7 +29,11 @@ vi.mock('@n8n/ai-utilities', () => ({ import type { Logger } from '@n8n/backend-common'; import { INSTANCE_AI_NODE_USAGE_FLAG } from '@n8n/api-types'; import type { OutboundHttp } from '@n8n/backend-network'; -import { type EventService, type RoleService } from '@n8n/backend-services'; +import { + type EventService, + type RoleService, + type CredentialsFinderService, +} from '@n8n/backend-services'; import type { GlobalConfig } from '@n8n/config'; import type { AiBuilderTemporaryWorkflowRepository, @@ -46,7 +50,6 @@ import { mock } from 'vitest-mock-extended'; import type { ActiveExecutions } from '@/active-executions'; import type { CollaborationService } from '@/collaboration/collaboration.service'; -import type { CredentialsFinderService } from '@/credentials/credentials-finder.service'; import type { CredentialsService } from '@/credentials/credentials.service'; import type { ExecutionPersistence } from '@/executions/execution-persistence'; import type { License } from '@/license'; diff --git a/packages/cli/src/modules/instance-ai/__tests__/instance-ai.adapter.service.security.test.ts b/packages/cli/src/modules/instance-ai/__tests__/instance-ai.adapter.service.security.test.ts index bcf5f41fab7..3095762baec 100644 --- a/packages/cli/src/modules/instance-ai/__tests__/instance-ai.adapter.service.security.test.ts +++ b/packages/cli/src/modules/instance-ai/__tests__/instance-ai.adapter.service.security.test.ts @@ -27,7 +27,11 @@ vi.mock('@n8n/instance-ai', async () => { }); import type { Logger } from '@n8n/backend-common'; -import { type EventService, type RoleService } from '@n8n/backend-services'; +import { + type EventService, + type RoleService, + type CredentialsFinderService, +} from '@n8n/backend-services'; import type { GlobalConfig } from '@n8n/config'; import { GLOBAL_MEMBER_ROLE } from '@n8n/db'; import { Container } from '@n8n/di'; @@ -44,7 +48,6 @@ import type { InstanceSettings } from 'n8n-core'; import { mock } from 'vitest-mock-extended'; import type { ActiveExecutions } from '@/active-executions'; -import type { CredentialsFinderService } from '@/credentials/credentials-finder.service'; import type { CredentialsService } from '@/credentials/credentials.service'; import type { WorkflowRunner } from '@/workflow-runner'; import type { DynamicNodeParametersService } from '@/services/dynamic-node-parameters.service'; diff --git a/packages/cli/src/modules/instance-ai/__tests__/instance-ai.adapter.service.test.ts b/packages/cli/src/modules/instance-ai/__tests__/instance-ai.adapter.service.test.ts index d4e195dfc2c..057df129674 100644 --- a/packages/cli/src/modules/instance-ai/__tests__/instance-ai.adapter.service.test.ts +++ b/packages/cli/src/modules/instance-ai/__tests__/instance-ai.adapter.service.test.ts @@ -1805,7 +1805,7 @@ import type { } from '@n8n/db'; import { TELEMETRY_EVENT } from '@n8n/telemetry'; import { UserError, UnexpectedError } from 'n8n-workflow'; -import type { CredentialsFinderService } from '@/credentials/credentials-finder.service'; +import { type CredentialsFinderService, type RoleService } from '@n8n/backend-services'; import type { DataTableRepository } from '@/modules/data-table/data-table.repository'; import type { DataTableService } from '@/modules/data-table/data-table.service'; import type { InstanceWriteAccessService } from '@/services/instance-write-access.service'; @@ -1827,7 +1827,6 @@ import { } from '@n8n/errors'; import type { License } from '@/license'; import type { AiPreferenceService } from '@/services/ai-preference.service'; -import type { RoleService } from '@n8n/backend-services'; import type { OutboundHttp } from '@n8n/backend-network'; import { ModuleRegistry } from '@n8n/backend-common'; diff --git a/packages/cli/src/modules/instance-ai/instance-ai-settings.service.ts b/packages/cli/src/modules/instance-ai/instance-ai-settings.service.ts index f375014f6cb..2f15ab860f0 100644 --- a/packages/cli/src/modules/instance-ai/instance-ai-settings.service.ts +++ b/packages/cli/src/modules/instance-ai/instance-ai-settings.service.ts @@ -1,4 +1,4 @@ -import { EventService } from '@n8n/backend-services'; +import { EventService, CredentialsFinderService } from '@n8n/backend-services'; import { isDeepStrictEqual } from 'node:util'; import { @@ -37,7 +37,6 @@ import { ensureError } from '@n8n/utils/errors/ensure-error'; import type { ICredentialDataDecryptedObject, IUserSettings } from 'n8n-workflow'; import { jsonParse, UnexpectedError } from 'n8n-workflow'; -import { CredentialsFinderService } from '@/credentials/credentials-finder.service'; import { CredentialsService } from '@/credentials/credentials.service'; import { InstanceCredentialBroker, diff --git a/packages/cli/src/modules/instance-ai/instance-ai.adapter.service.ts b/packages/cli/src/modules/instance-ai/instance-ai.adapter.service.ts index be827355c4b..6b6d6661026 100644 --- a/packages/cli/src/modules/instance-ai/instance-ai.adapter.service.ts +++ b/packages/cli/src/modules/instance-ai/instance-ai.adapter.service.ts @@ -26,7 +26,12 @@ import { import type { AiGatewayConfigDto } from '@n8n/api-types'; import { LicenseState, Logger, ModuleRegistry } from '@n8n/backend-common'; import { OutboundHttp } from '@n8n/backend-network'; -import { EventService, RoleService } from '@n8n/backend-services'; +import { + EventService, + RoleService, + CredentialsFinderService, + FolderFinderService, +} from '@n8n/backend-services'; import { GlobalConfig } from '@n8n/config'; import { Time, TOOL_EXECUTOR_NODE_NAME } from '@n8n/constants'; import type { User, ExecutionSummaries, EvaluationConfig } from '@n8n/db'; @@ -152,7 +157,6 @@ import path from 'node:path'; import { ActiveExecutions } from '@/active-executions'; import { CollaborationService } from '@/collaboration/collaboration.service'; import { CredentialsOverwrites } from '@/credentials-overwrites'; -import { CredentialsFinderService } from '@/credentials/credentials-finder.service'; import { CredentialsService } from '@/credentials/credentials.service'; import { ConflictError, LockedError, NotFoundError } from '@n8n/errors'; import { EvaluationConfigService } from '@/evaluation.ee/evaluation-config.service'; @@ -187,7 +191,6 @@ import { PostHogClient } from '@/posthog'; import { AiGatewayService } from '@/services/ai-gateway.service'; import { writeAssistantPreference } from '@/services/ai-preference-write'; import { AiPreferenceService } from '@/services/ai-preference.service'; -import { FolderFinderService } from '@/services/folder-finder.service'; import { FolderService } from '@/services/folder.service'; import { InstanceWriteAccessService } from '@/services/instance-write-access.service'; import { NodeResourceExplorerService } from '@/services/node-resource-explorer.service'; diff --git a/packages/cli/src/modules/instance-ai/mcp/__tests__/instance-ai-mcp-connection.controller.test.ts b/packages/cli/src/modules/instance-ai/mcp/__tests__/instance-ai-mcp-connection.controller.test.ts index 53812d5ff42..d2a942686d3 100644 --- a/packages/cli/src/modules/instance-ai/mcp/__tests__/instance-ai-mcp-connection.controller.test.ts +++ b/packages/cli/src/modules/instance-ai/mcp/__tests__/instance-ai-mcp-connection.controller.test.ts @@ -1,7 +1,7 @@ import type { AuthenticatedRequest, CredentialsEntity, User } from '@n8n/db'; import { mock } from 'vitest-mock-extended'; -import type { CredentialsFinderService } from '@/credentials/credentials-finder.service'; +import type { CredentialsFinderService } from '@n8n/backend-services'; import { NotFoundError } from '@n8n/errors'; import type { McpRegistryService } from '@/modules/mcp-registry/registry/mcp-registry.service'; import type { McpRegistryServer } from '@/modules/mcp-registry/registry/mcp-registry.types'; diff --git a/packages/cli/src/modules/instance-ai/mcp/__tests__/instance-ai-mcp-registry.service.test.ts b/packages/cli/src/modules/instance-ai/mcp/__tests__/instance-ai-mcp-registry.service.test.ts index 5b7d66da434..424c107a16e 100644 --- a/packages/cli/src/modules/instance-ai/mcp/__tests__/instance-ai-mcp-registry.service.test.ts +++ b/packages/cli/src/modules/instance-ai/mcp/__tests__/instance-ai-mcp-registry.service.test.ts @@ -1,12 +1,11 @@ import type { BuiltTool } from '@n8n/agents'; import type { Logger } from '@n8n/backend-common'; import type { CustomFetch, HttpTransport, OutboundHttp } from '@n8n/backend-network'; -import type { EventService } from '@n8n/backend-services'; +import { type EventService, type CredentialsFinderService } from '@n8n/backend-services'; import type { CredentialsEntity, User } from '@n8n/db'; import { QueryFailedError } from '@n8n/typeorm'; import { mock } from 'vitest-mock-extended'; -import type { CredentialsFinderService } from '@/credentials/credentials-finder.service'; import type { CredentialsService } from '@/credentials/credentials.service'; import type { CredentialTypes } from '@/credential-types'; import { BadRequestError, ConflictError, NotFoundError } from '@n8n/errors'; diff --git a/packages/cli/src/modules/instance-ai/mcp/instance-ai-mcp-connection.controller.ts b/packages/cli/src/modules/instance-ai/mcp/instance-ai-mcp-connection.controller.ts index c477294caf0..7de91a84bd8 100644 --- a/packages/cli/src/modules/instance-ai/mcp/instance-ai-mcp-connection.controller.ts +++ b/packages/cli/src/modules/instance-ai/mcp/instance-ai-mcp-connection.controller.ts @@ -19,7 +19,7 @@ import { } from '@n8n/decorators'; import type { Response } from 'express'; -import { CredentialsFinderService } from '@/credentials/credentials-finder.service'; +import { CredentialsFinderService } from '@n8n/backend-services'; import { NotFoundError } from '@n8n/errors'; import { McpRegistryService } from '@/modules/mcp-registry/registry/mcp-registry.service'; import type { McpRegistryServer } from '@/modules/mcp-registry/registry/mcp-registry.types'; diff --git a/packages/cli/src/modules/instance-ai/mcp/instance-ai-mcp-registry.service.ts b/packages/cli/src/modules/instance-ai/mcp/instance-ai-mcp-registry.service.ts index 1fba0fe1ad6..4a3c87c109f 100644 --- a/packages/cli/src/modules/instance-ai/mcp/instance-ai-mcp-registry.service.ts +++ b/packages/cli/src/modules/instance-ai/mcp/instance-ai-mcp-registry.service.ts @@ -9,7 +9,7 @@ import type { import { isObjectLiteral, Logger } from '@n8n/backend-common'; import type { CustomFetch } from '@n8n/backend-network'; import { OutboundHttp } from '@n8n/backend-network'; -import { EventService } from '@n8n/backend-services'; +import { EventService, CredentialsFinderService } from '@n8n/backend-services'; import { isUniqueConstraintError, type CredentialsEntity, type User } from '@n8n/db'; import { Service } from '@n8n/di'; import type { McpServerConfig } from '@n8n/instance-ai'; @@ -18,7 +18,6 @@ import type { ICredentialDataDecryptedObject, LiteralMcpRegistryConnection } fro import { randomUUID } from 'node:crypto'; import { CredentialTypes } from '@/credential-types'; -import { CredentialsFinderService } from '@/credentials/credentials-finder.service'; import { CredentialsService } from '@/credentials/credentials.service'; import { BadRequestError, ConflictError, NotFoundError } from '@n8n/errors'; import { diff --git a/packages/cli/src/modules/log-streaming.ee/__tests__/log-streaming.controller.test.ts b/packages/cli/src/modules/log-streaming.ee/__tests__/log-streaming.controller.test.ts index 8cae8ec197d..cdb939b29ac 100644 --- a/packages/cli/src/modules/log-streaming.ee/__tests__/log-streaming.controller.test.ts +++ b/packages/cli/src/modules/log-streaming.ee/__tests__/log-streaming.controller.test.ts @@ -8,7 +8,7 @@ import type { } from 'n8n-workflow'; import { mock } from 'vitest-mock-extended'; -import type { CredentialsFinderService } from '@/credentials/credentials-finder.service'; +import type { CredentialsFinderService } from '@n8n/backend-services'; import { BadRequestError, ForbiddenError } from '@n8n/errors'; import type { MessageEventBus } from '@/eventbus/message-event-bus/message-event-bus'; diff --git a/packages/cli/src/modules/log-streaming.ee/destinations/__tests__/destination-credentials-access.test.ts b/packages/cli/src/modules/log-streaming.ee/destinations/__tests__/destination-credentials-access.test.ts index c4e3d129733..79a697e8d26 100644 --- a/packages/cli/src/modules/log-streaming.ee/destinations/__tests__/destination-credentials-access.test.ts +++ b/packages/cli/src/modules/log-streaming.ee/destinations/__tests__/destination-credentials-access.test.ts @@ -2,7 +2,7 @@ import type { CredentialsEntity, User } from '@n8n/db'; import type { MessageEventBusDestinationOptions } from 'n8n-workflow'; import { mock } from 'vitest-mock-extended'; -import type { CredentialsFinderService } from '@/credentials/credentials-finder.service'; +import type { CredentialsFinderService } from '@n8n/backend-services'; import { ForbiddenError } from '@n8n/errors'; import { assertUserCanUseDestinationCredentials } from '../destination-credentials-access'; diff --git a/packages/cli/src/modules/log-streaming.ee/destinations/destination-credentials-access.ts b/packages/cli/src/modules/log-streaming.ee/destinations/destination-credentials-access.ts index 58a2f981813..0fcec13c1cb 100644 --- a/packages/cli/src/modules/log-streaming.ee/destinations/destination-credentials-access.ts +++ b/packages/cli/src/modules/log-streaming.ee/destinations/destination-credentials-access.ts @@ -1,7 +1,7 @@ import type { User } from '@n8n/db'; import type { MessageEventBusDestinationOptions } from 'n8n-workflow'; -import type { CredentialsFinderService } from '@/credentials/credentials-finder.service'; +import type { CredentialsFinderService } from '@n8n/backend-services'; import { ForbiddenError } from '@n8n/errors'; /** diff --git a/packages/cli/src/modules/log-streaming.ee/log-streaming.controller.ts b/packages/cli/src/modules/log-streaming.ee/log-streaming.controller.ts index a732de4f234..20bb95fccff 100644 --- a/packages/cli/src/modules/log-streaming.ee/log-streaming.controller.ts +++ b/packages/cli/src/modules/log-streaming.ee/log-streaming.controller.ts @@ -10,7 +10,7 @@ import type { AuthenticatedRequest } from '@n8n/db'; import { Delete, Get, GlobalScope, Licensed, Post, Query, RestController } from '@n8n/decorators'; import type { MessageEventBusDestinationOptions } from 'n8n-workflow'; -import { CredentialsFinderService } from '@/credentials/credentials-finder.service'; +import { CredentialsFinderService } from '@n8n/backend-services'; import { BadRequestError, ForbiddenError } from '@n8n/errors'; import { eventNamesAll } from '@/eventbus/event-message-classes'; import { MessageEventBus } from '@/eventbus/message-event-bus/message-event-bus'; diff --git a/packages/cli/src/modules/mcp/__tests__/install-community-node.registration.test.ts b/packages/cli/src/modules/mcp/__tests__/install-community-node.registration.test.ts index 61fa1ee5d82..f5d8e586f47 100644 --- a/packages/cli/src/modules/mcp/__tests__/install-community-node.registration.test.ts +++ b/packages/cli/src/modules/mcp/__tests__/install-community-node.registration.test.ts @@ -1,5 +1,5 @@ import { LicenseState, ModuleRegistry } from '@n8n/backend-common'; -import { EventService, UrlService, RoleService } from '@n8n/backend-services'; +import { EventService, UrlService, RoleService, FolderFinderService } from '@n8n/backend-services'; import { mockInstance, mockLogger } from '@n8n/backend-test-utils'; import { ExecutionsConfig, GlobalConfig, WorkflowsConfig } from '@n8n/config'; import { ExecutionRepository, ProjectRepository, SharedWorkflowRepository, User } from '@n8n/db'; @@ -17,7 +17,6 @@ import { NodeTypes } from '@/node-types'; import { PostHogClient } from '@/posthog'; import { AiGatewayService } from '@/services/ai-gateway.service'; import { AiPreferenceService } from '@/services/ai-preference.service'; -import { FolderFinderService } from '@/services/folder-finder.service'; import { FolderService } from '@/services/folder.service'; import { NodeResourceExplorerService } from '@/services/node-resource-explorer.service'; import { ProjectService } from '@/services/project.service.ee'; diff --git a/packages/cli/src/modules/mcp/__tests__/mcp-scopes.test.ts b/packages/cli/src/modules/mcp/__tests__/mcp-scopes.test.ts index 1ba8e315d2d..2ca8eb73fea 100644 --- a/packages/cli/src/modules/mcp/__tests__/mcp-scopes.test.ts +++ b/packages/cli/src/modules/mcp/__tests__/mcp-scopes.test.ts @@ -1,6 +1,6 @@ import { INSTANCE_ACTIVITY_CONTEXT_FLAG } from '@n8n/api-types'; import { LicenseState, ModuleRegistry } from '@n8n/backend-common'; -import { EventService, UrlService, RoleService } from '@n8n/backend-services'; +import { EventService, UrlService, RoleService, FolderFinderService } from '@n8n/backend-services'; import { mockInstance, mockLogger } from '@n8n/backend-test-utils'; import { EndpointsConfig, ExecutionsConfig, GlobalConfig, WorkflowsConfig } from '@n8n/config'; import { @@ -45,7 +45,6 @@ import { NodeTypes } from '@/node-types'; import { PostHogClient } from '@/posthog'; import { AiGatewayService } from '@/services/ai-gateway.service'; import { AiPreferenceService } from '@/services/ai-preference.service'; -import { FolderFinderService } from '@/services/folder-finder.service'; import { FolderService } from '@/services/folder.service'; import { NodeResourceExplorerService } from '@/services/node-resource-explorer.service'; import { ProjectService } from '@/services/project.service.ee'; diff --git a/packages/cli/src/modules/mcp/__tests__/mcp.service.test.ts b/packages/cli/src/modules/mcp/__tests__/mcp.service.test.ts index f9f914b13c9..d12d3422ea5 100644 --- a/packages/cli/src/modules/mcp/__tests__/mcp.service.test.ts +++ b/packages/cli/src/modules/mcp/__tests__/mcp.service.test.ts @@ -9,7 +9,7 @@ import { INSTANCE_ACTIVITY_CONTEXT_FLAG, } from '@n8n/api-types'; import { LicenseState, ModuleRegistry, type Logger } from '@n8n/backend-common'; -import { EventService, UrlService, RoleService } from '@n8n/backend-services'; +import { EventService, UrlService, RoleService, FolderFinderService } from '@n8n/backend-services'; import { mockInstance, mockLogger } from '@n8n/backend-test-utils'; import { EndpointsConfig, ExecutionsConfig, GlobalConfig, WorkflowsConfig } from '@n8n/config'; import { @@ -38,7 +38,6 @@ import { NodeTypes } from '@/node-types'; import { PostHogClient } from '@/posthog'; import { AiGatewayService } from '@/services/ai-gateway.service'; import { AiPreferenceService } from '@/services/ai-preference.service'; -import { FolderFinderService } from '@/services/folder-finder.service'; import { FolderService } from '@/services/folder.service'; import { NodeResourceExplorerService } from '@/services/node-resource-explorer.service'; import { ProjectService } from '@/services/project.service.ee'; diff --git a/packages/cli/src/modules/mcp/__tests__/move-workflows-to-folder.tool.test.ts b/packages/cli/src/modules/mcp/__tests__/move-workflows-to-folder.tool.test.ts index 7b544bbe7dd..19701b05fa5 100644 --- a/packages/cli/src/modules/mcp/__tests__/move-workflows-to-folder.tool.test.ts +++ b/packages/cli/src/modules/mcp/__tests__/move-workflows-to-folder.tool.test.ts @@ -2,7 +2,7 @@ import { mockInstance } from '@n8n/backend-test-utils'; import { User } from '@n8n/db'; import { PROJECT_ROOT } from 'n8n-workflow'; -import { FolderFinderService } from '@/services/folder-finder.service'; +import { FolderFinderService } from '@n8n/backend-services'; import { Telemetry } from '@/telemetry'; import { WorkflowFinderService } from '@/workflows/workflow-finder.service'; import { WorkflowService } from '@/workflows/workflow.service'; diff --git a/packages/cli/src/modules/mcp/__tests__/search-workflows.tool.test.ts b/packages/cli/src/modules/mcp/__tests__/search-workflows.tool.test.ts index 6bdb9212cf9..7c88d9b87ed 100644 --- a/packages/cli/src/modules/mcp/__tests__/search-workflows.tool.test.ts +++ b/packages/cli/src/modules/mcp/__tests__/search-workflows.tool.test.ts @@ -12,7 +12,7 @@ import { import { v4 as uuid } from 'uuid'; import { FolderNotFoundError } from '@/errors/folder-not-found.error'; -import { FolderFinderService } from '@/services/folder-finder.service'; +import { FolderFinderService } from '@n8n/backend-services'; import { Telemetry } from '@/telemetry'; import { WorkflowService } from '@/workflows/workflow.service'; diff --git a/packages/cli/src/modules/mcp/mcp.service.ts b/packages/cli/src/modules/mcp/mcp.service.ts index 6fd0320030a..fefeb8e9c7d 100644 --- a/packages/cli/src/modules/mcp/mcp.service.ts +++ b/packages/cli/src/modules/mcp/mcp.service.ts @@ -7,7 +7,7 @@ import { INSTANCE_ACTIVITY_CONTEXT_FLAG, } from '@n8n/api-types'; import { LicenseState, Logger, ModuleRegistry } from '@n8n/backend-common'; -import { EventService, UrlService, RoleService } from '@n8n/backend-services'; +import { EventService, UrlService, RoleService, FolderFinderService } from '@n8n/backend-services'; import { ExecutionsConfig, GlobalConfig, WorkflowsConfig } from '@n8n/config'; import { ExecutionRepository, ProjectRepository, SharedWorkflowRepository, User } from '@n8n/db'; import { Container, Service } from '@n8n/di'; @@ -36,7 +36,6 @@ import { NodeTypes } from '@/node-types'; import { PostHogClient } from '@/posthog'; import { AiGatewayService } from '@/services/ai-gateway.service'; import { AiPreferenceService } from '@/services/ai-preference.service'; -import { FolderFinderService } from '@/services/folder-finder.service'; import { FolderService } from '@/services/folder.service'; import { NodeResourceExplorerService } from '@/services/node-resource-explorer.service'; import { ProjectService } from '@/services/project.service.ee'; diff --git a/packages/cli/src/modules/mcp/tools/move-workflows-to-folder.tool.ts b/packages/cli/src/modules/mcp/tools/move-workflows-to-folder.tool.ts index ab91a5d270a..9accedb5c43 100644 --- a/packages/cli/src/modules/mcp/tools/move-workflows-to-folder.tool.ts +++ b/packages/cli/src/modules/mcp/tools/move-workflows-to-folder.tool.ts @@ -4,7 +4,7 @@ import { PROJECT_ROOT } from 'n8n-workflow'; import z from 'zod'; import { FolderNotFoundError } from '@/errors/folder-not-found.error'; -import type { FolderFinderService } from '@/services/folder-finder.service'; +import type { FolderFinderService } from '@n8n/backend-services'; import type { Telemetry } from '@/telemetry'; import { createWorkflowEntityFromPayload } from '@/workflows/workflow-entity-mapper'; import type { WorkflowFinderService } from '@/workflows/workflow-finder.service'; diff --git a/packages/cli/src/modules/mcp/tools/search-workflows.tool.ts b/packages/cli/src/modules/mcp/tools/search-workflows.tool.ts index 056144d40d3..a8f8e83e3ab 100644 --- a/packages/cli/src/modules/mcp/tools/search-workflows.tool.ts +++ b/packages/cli/src/modules/mcp/tools/search-workflows.tool.ts @@ -16,7 +16,7 @@ import type { import { FolderNotFoundError } from '@/errors/folder-not-found.error'; import type { ListQuery } from '@/requests'; -import type { FolderFinderService } from '@/services/folder-finder.service'; +import type { FolderFinderService } from '@n8n/backend-services'; import type { Telemetry } from '@/telemetry'; import type { WorkflowService } from '@/workflows/workflow.service'; import { describeFolderError } from './folder-error.utils'; diff --git a/packages/cli/src/modules/n8n-packages/entities/credential/__tests__/credential.exporter.test.ts b/packages/cli/src/modules/n8n-packages/entities/credential/__tests__/credential.exporter.test.ts index 889865c1a2e..913eb2bb6f8 100644 --- a/packages/cli/src/modules/n8n-packages/entities/credential/__tests__/credential.exporter.test.ts +++ b/packages/cli/src/modules/n8n-packages/entities/credential/__tests__/credential.exporter.test.ts @@ -3,7 +3,7 @@ import { CredentialDataError, Credentials } from 'n8n-core'; import { jsonParse, type ICredentialDataDecryptedObject } from 'n8n-workflow'; import { mock } from 'vitest-mock-extended'; -import type { CredentialsFinderService } from '@/credentials/credentials-finder.service'; +import type { CredentialsFinderService } from '@n8n/backend-services'; import { CapturingWriter } from '../../../io/__tests__/utils/capturing-writer'; import { CredentialExporter } from '../credential.exporter'; diff --git a/packages/cli/src/modules/n8n-packages/entities/credential/credential.exporter.ts b/packages/cli/src/modules/n8n-packages/entities/credential/credential.exporter.ts index 78bfc063147..f50aa3509b2 100644 --- a/packages/cli/src/modules/n8n-packages/entities/credential/credential.exporter.ts +++ b/packages/cli/src/modules/n8n-packages/entities/credential/credential.exporter.ts @@ -2,7 +2,7 @@ import type { CredentialsEntity, User } from '@n8n/db'; import { Service } from '@n8n/di'; import { Credentials } from 'n8n-core'; -import { CredentialsFinderService } from '@/credentials/credentials-finder.service'; +import { CredentialsFinderService } from '@n8n/backend-services'; import { selectCredentialDataForExport } from './credential-export-policy'; import { CredentialSerializer } from './credential.serializer'; diff --git a/packages/cli/src/modules/n8n-packages/entities/folder/__tests__/folder.exporter.test.ts b/packages/cli/src/modules/n8n-packages/entities/folder/__tests__/folder.exporter.test.ts index cf8c4d15d17..f34bba96980 100644 --- a/packages/cli/src/modules/n8n-packages/entities/folder/__tests__/folder.exporter.test.ts +++ b/packages/cli/src/modules/n8n-packages/entities/folder/__tests__/folder.exporter.test.ts @@ -1,7 +1,7 @@ import type { Folder, User } from '@n8n/db'; import { mock } from 'vitest-mock-extended'; -import type { FolderFinderService } from '@/services/folder-finder.service'; +import type { FolderFinderService } from '@n8n/backend-services'; import type { WorkflowFinderService } from '@/workflows/workflow-finder.service'; import { CapturingWriter } from '../../../io/__tests__/utils/capturing-writer'; diff --git a/packages/cli/src/modules/n8n-packages/entities/folder/folder.exporter.ts b/packages/cli/src/modules/n8n-packages/entities/folder/folder.exporter.ts index 0154ca58461..1d410f4291d 100644 --- a/packages/cli/src/modules/n8n-packages/entities/folder/folder.exporter.ts +++ b/packages/cli/src/modules/n8n-packages/entities/folder/folder.exporter.ts @@ -1,7 +1,7 @@ import type { Folder, User } from '@n8n/db'; import { Service } from '@n8n/di'; -import { FolderFinderService } from '@/services/folder-finder.service'; +import { FolderFinderService } from '@n8n/backend-services'; import { WorkflowFinderService } from '@/workflows/workflow-finder.service'; import { FolderSerializer } from './folder.serializer'; diff --git a/packages/cli/src/modules/n8n-packages/entities/project/__tests__/project.exporter.test.ts b/packages/cli/src/modules/n8n-packages/entities/project/__tests__/project.exporter.test.ts index 4eaddc05fdb..d14ab00d8f1 100644 --- a/packages/cli/src/modules/n8n-packages/entities/project/__tests__/project.exporter.test.ts +++ b/packages/cli/src/modules/n8n-packages/entities/project/__tests__/project.exporter.test.ts @@ -2,7 +2,7 @@ import type { Project, User } from '@n8n/db'; import type { Readable } from 'node:stream'; import { mock } from 'vitest-mock-extended'; -import type { FolderFinderService } from '@/services/folder-finder.service'; +import type { FolderFinderService } from '@n8n/backend-services'; import type { ProjectService } from '@/services/project.service.ee'; import type { WorkflowFinderService } from '@/workflows/workflow-finder.service'; diff --git a/packages/cli/src/modules/n8n-packages/entities/project/project.exporter.ts b/packages/cli/src/modules/n8n-packages/entities/project/project.exporter.ts index c0cf4d7d6a7..558a23887f3 100644 --- a/packages/cli/src/modules/n8n-packages/entities/project/project.exporter.ts +++ b/packages/cli/src/modules/n8n-packages/entities/project/project.exporter.ts @@ -1,7 +1,7 @@ import type { Project, User } from '@n8n/db'; import { Service } from '@n8n/di'; -import { FolderFinderService } from '@/services/folder-finder.service'; +import { FolderFinderService } from '@n8n/backend-services'; import { ProjectService } from '@/services/project.service.ee'; import { WorkflowFinderService } from '@/workflows/workflow-finder.service'; diff --git a/packages/cli/src/modules/n8n-packages/entities/workflow/__tests__/auto-included-workflow-resolver.test.ts b/packages/cli/src/modules/n8n-packages/entities/workflow/__tests__/auto-included-workflow-resolver.test.ts index bbb125d9eb8..eda7e3a3a3c 100644 --- a/packages/cli/src/modules/n8n-packages/entities/workflow/__tests__/auto-included-workflow-resolver.test.ts +++ b/packages/cli/src/modules/n8n-packages/entities/workflow/__tests__/auto-included-workflow-resolver.test.ts @@ -1,7 +1,7 @@ import type { Folder, Project, SharedWorkflowRepository, User, WorkflowEntity } from '@n8n/db'; import { mock } from 'vitest-mock-extended'; -import type { FolderFinderService } from '@/services/folder-finder.service'; +import type { FolderFinderService } from '@n8n/backend-services'; import type { ProjectService } from '@/services/project.service.ee'; import type { WorkflowFinderService } from '@/workflows/workflow-finder.service'; diff --git a/packages/cli/src/modules/n8n-packages/entities/workflow/auto-included-workflow-resolver.ts b/packages/cli/src/modules/n8n-packages/entities/workflow/auto-included-workflow-resolver.ts index 3cfa1b82c48..1f090d6e9e2 100644 --- a/packages/cli/src/modules/n8n-packages/entities/workflow/auto-included-workflow-resolver.ts +++ b/packages/cli/src/modules/n8n-packages/entities/workflow/auto-included-workflow-resolver.ts @@ -2,7 +2,7 @@ import type { Folder, Project, User, WorkflowEntity } from '@n8n/db'; import { SharedWorkflowRepository } from '@n8n/db'; import { Service } from '@n8n/di'; -import { FolderFinderService } from '@/services/folder-finder.service'; +import { FolderFinderService } from '@n8n/backend-services'; import { ProjectService } from '@/services/project.service.ee'; import { WorkflowFinderService } from '@/workflows/workflow-finder.service'; diff --git a/packages/cli/src/modules/workflow-index/__tests__/workflow-dependency-query.service.test.ts b/packages/cli/src/modules/workflow-index/__tests__/workflow-dependency-query.service.test.ts index 9bda63f7d18..dc378ae20c4 100644 --- a/packages/cli/src/modules/workflow-index/__tests__/workflow-dependency-query.service.test.ts +++ b/packages/cli/src/modules/workflow-index/__tests__/workflow-dependency-query.service.test.ts @@ -8,8 +8,7 @@ import type { } from '@n8n/db'; import { chunkIds } from '@n8n/db'; import type { DataTableRepository } from '@/modules/data-table/data-table.repository'; -import type { CredentialsFinderService } from '@/credentials/credentials-finder.service'; -import type { RoleService } from '@n8n/backend-services'; +import { type CredentialsFinderService, type RoleService } from '@n8n/backend-services'; import type { WorkflowFinderService } from '@/workflows/workflow-finder.service'; import { mock } from 'vitest-mock-extended'; diff --git a/packages/cli/src/modules/workflow-index/workflow-dependency-query.service.ts b/packages/cli/src/modules/workflow-index/workflow-dependency-query.service.ts index db22ece0c82..3573066f0af 100644 --- a/packages/cli/src/modules/workflow-index/workflow-dependency-query.service.ts +++ b/packages/cli/src/modules/workflow-index/workflow-dependency-query.service.ts @@ -16,10 +16,9 @@ import { Service } from '@n8n/di'; import { hasGlobalScope } from '@n8n/permissions'; import { In, type FindManyOptions } from '@n8n/typeorm'; -import { CredentialsFinderService } from '@/credentials/credentials-finder.service'; +import { CredentialsFinderService, RoleService } from '@n8n/backend-services'; import { isCredSharingEnabled } from '@/constants/credential-sharing'; import { DataTableRepository } from '@/modules/data-table/data-table.repository'; -import { RoleService } from '@n8n/backend-services'; import { WorkflowFinderService } from '@/workflows/workflow-finder.service'; import { AgentUsageProviderProxy } from './agent-usage-provider-proxy.service'; diff --git a/packages/cli/src/node-execution/__tests__/execute-node.service.test.ts b/packages/cli/src/node-execution/__tests__/execute-node.service.test.ts index b065fff91c5..7d7066008dd 100644 --- a/packages/cli/src/node-execution/__tests__/execute-node.service.test.ts +++ b/packages/cli/src/node-execution/__tests__/execute-node.service.test.ts @@ -7,7 +7,7 @@ import type { INodeType, INodeTypeDescription, IRunExecutionData } from 'n8n-wor import { mock } from 'vitest-mock-extended'; import { ActiveExecutions } from '@/active-executions'; -import { CredentialsFinderService } from '@/credentials/credentials-finder.service'; +import { CredentialsFinderService } from '@n8n/backend-services'; import { BadRequestError, ForbiddenError } from '@n8n/errors'; import { ExecutionPersistence } from '@/executions/execution-persistence'; import { NodeTypes } from '@/node-types'; diff --git a/packages/cli/src/node-execution/execute-node.service.ts b/packages/cli/src/node-execution/execute-node.service.ts index e3f3cbf1e38..ccc1cbf90c1 100644 --- a/packages/cli/src/node-execution/execute-node.service.ts +++ b/packages/cli/src/node-execution/execute-node.service.ts @@ -17,7 +17,7 @@ import type { import { v4 as uuid } from 'uuid'; import { ActiveExecutions } from '@/active-executions'; -import { CredentialsFinderService } from '@/credentials/credentials-finder.service'; +import { CredentialsFinderService } from '@n8n/backend-services'; import { BadRequestError, ForbiddenError } from '@n8n/errors'; import { ExecutionPersistence } from '@/executions/execution-persistence'; import { NodeTypes } from '@/node-types'; diff --git a/packages/cli/src/oauth/__tests__/oauth.service.integration.test.ts b/packages/cli/src/oauth/__tests__/oauth.service.integration.test.ts index 67783c3ff1f..410c60fd1d3 100644 --- a/packages/cli/src/oauth/__tests__/oauth.service.integration.test.ts +++ b/packages/cli/src/oauth/__tests__/oauth.service.integration.test.ts @@ -1,7 +1,12 @@ import type { LockService, Logger } from '@n8n/backend-common'; import { OutboundHttp, type SsrfProtectionService } from '@n8n/backend-network'; import { type LocalServer, startServer } from '@n8n/backend-network/testing'; -import type { CacheService, EventService, UrlService } from '@n8n/backend-services'; +import { + type CacheService, + type EventService, + type UrlService, + type CredentialsFinderService, +} from '@n8n/backend-services'; import type { GlobalConfig, SsrfProtectionConfig } from '@n8n/config'; import type { CredentialsRepository } from '@n8n/db'; import { mock } from 'vitest-mock-extended'; @@ -9,7 +14,6 @@ import type { Cipher } from 'n8n-core'; import type { IncomingHttpHeaders } from 'node:http'; import type { AuthService } from '@/auth/auth.service'; -import type { CredentialsFinderService } from '@/credentials/credentials-finder.service'; import type { DynamicCredentialsProxy } from '@/credentials/dynamic-credentials-proxy'; import type { CredentialsHelper } from '@/credentials-helper'; import type { ExternalHooks } from '@/external-hooks'; diff --git a/packages/cli/src/oauth/__tests__/oauth.service.test.ts b/packages/cli/src/oauth/__tests__/oauth.service.test.ts index 9ad51199e2a..fb529156f48 100644 --- a/packages/cli/src/oauth/__tests__/oauth.service.test.ts +++ b/packages/cli/src/oauth/__tests__/oauth.service.test.ts @@ -1,6 +1,11 @@ import { LockAcquisitionTimeoutError, LockService, Logger } from '@n8n/backend-common'; import { OutboundHttp, SsrfProtectionService, type HttpRequestClient } from '@n8n/backend-network'; -import { CacheService, EventService, UrlService } from '@n8n/backend-services'; +import { + CacheService, + EventService, + UrlService, + CredentialsFinderService, +} from '@n8n/backend-services'; import { mockInstance } from '@n8n/backend-test-utils'; import type { OAuth2CredentialData } from '@n8n/client-oauth2'; import { AuthError as OAuth2AuthError } from '@n8n/client-oauth2'; @@ -17,7 +22,6 @@ import type { Mock } from 'vitest'; import { mock } from 'vitest-mock-extended'; import { AuthService } from '@/auth/auth.service'; -import { CredentialsFinderService } from '@/credentials/credentials-finder.service'; import { DynamicCredentialsProxy } from '@/credentials/dynamic-credentials-proxy'; import { CredentialsHelper } from '@/credentials-helper'; import { AuthError, BadRequestError, NotFoundError } from '@n8n/errors'; diff --git a/packages/cli/src/oauth/oauth.service.ts b/packages/cli/src/oauth/oauth.service.ts index 42d81fc0224..4538afa2dfb 100644 --- a/packages/cli/src/oauth/oauth.service.ts +++ b/packages/cli/src/oauth/oauth.service.ts @@ -5,7 +5,12 @@ import { type HttpRequestClient, type SsrfBridge, } from '@n8n/backend-network'; -import { CacheService, EventService, UrlService } from '@n8n/backend-services'; +import { + CacheService, + EventService, + UrlService, + CredentialsFinderService, +} from '@n8n/backend-services'; import { GlobalConfig, SsrfProtectionConfig } from '@n8n/config'; import type { AuthenticatedRequest, CredentialsEntity, ICredentialsDb } from '@n8n/db'; import { CredentialsRepository } from '@n8n/db'; @@ -22,7 +27,6 @@ import { RESPONSE_ERROR_MESSAGES, } from '@/constants'; import { AuthService } from '@/auth/auth.service'; -import { CredentialsFinderService } from '@/credentials/credentials-finder.service'; import { CredentialsHelper } from '@/credentials-helper'; import { AuthError, BadRequestError, NotFoundError } from '@n8n/errors'; import type { OAuthRequest } from '@/requests'; diff --git a/packages/cli/src/permissions.ee/__tests__/check-access.test.ts b/packages/cli/src/permissions.ee/__tests__/check-access.test.ts index 97a50057772..9a45fd40634 100644 --- a/packages/cli/src/permissions.ee/__tests__/check-access.test.ts +++ b/packages/cli/src/permissions.ee/__tests__/check-access.test.ts @@ -14,9 +14,8 @@ import type { EntityManager } from '@n8n/typeorm'; import type { Mock } from 'vitest'; import { mock } from 'vitest-mock-extended'; -import { CredentialsFinderService } from '@/credentials/credentials-finder.service'; +import { CredentialsFinderService, RoleService } from '@n8n/backend-services'; import { NotFoundError } from '@n8n/errors'; -import { RoleService } from '@n8n/backend-services'; import { userHasScopes } from '../check-access'; diff --git a/packages/cli/src/permissions.ee/check-access.ts b/packages/cli/src/permissions.ee/check-access.ts index cc416a48d32..eda60ade781 100644 --- a/packages/cli/src/permissions.ee/check-access.ts +++ b/packages/cli/src/permissions.ee/check-access.ts @@ -15,9 +15,8 @@ import { Container } from '@n8n/di'; import { hasGlobalScope, type Scope } from '@n8n/permissions'; import { UnexpectedError } from 'n8n-workflow'; -import { CredentialsFinderService } from '@/credentials/credentials-finder.service'; +import { CredentialsFinderService, RoleService } from '@n8n/backend-services'; import { NotFoundError } from '@n8n/errors'; -import { RoleService } from '@n8n/backend-services'; const INSTANCE_CREDENTIAL_MANAGEMENT_SCOPES = new Set([ 'credential:read', diff --git a/packages/cli/src/public-api/v1/controllers/credentials.public.controller.ts b/packages/cli/src/public-api/v1/controllers/credentials.public.controller.ts index 27c9a25d786..3bee5ce2edd 100644 --- a/packages/cli/src/public-api/v1/controllers/credentials.public.controller.ts +++ b/packages/cli/src/public-api/v1/controllers/credentials.public.controller.ts @@ -12,7 +12,7 @@ import { TransferCredentialPublicDto, } from '@n8n/api-types'; import { LicenseState } from '@n8n/backend-common'; -import { EventService } from '@n8n/backend-services'; +import { EventService, CredentialsFinderService } from '@n8n/backend-services'; import type { AuthenticatedRequest, CredentialsEntity, ICredentialsDb, User } from '@n8n/db'; import { ApiDescription, @@ -39,7 +39,6 @@ import type { ICredentialDataDecryptedObject } from 'n8n-workflow'; import { CredentialDescriptionsService } from '@/credentials/credential-descriptions.service'; import { CredentialTypes } from '@/credential-types'; -import { CredentialsFinderService } from '@/credentials/credentials-finder.service'; import { CredentialsService } from '@/credentials/credentials.service'; import { EnterpriseCredentialsService } from '@/credentials/credentials.service.ee'; import { CredentialsHelper } from '@/credentials-helper'; diff --git a/packages/cli/src/public-api/v1/handlers/log-streaming/log-streaming.handler.ts b/packages/cli/src/public-api/v1/handlers/log-streaming/log-streaming.handler.ts index 54e42e16d7f..96651f7377c 100644 --- a/packages/cli/src/public-api/v1/handlers/log-streaming/log-streaming.handler.ts +++ b/packages/cli/src/public-api/v1/handlers/log-streaming/log-streaming.handler.ts @@ -4,7 +4,6 @@ import { InstanceSettingsLoaderConfig } from '@n8n/config'; import { Container } from '@n8n/di'; import type { MessageEventBusDestinationOptions } from 'n8n-workflow'; -import { CredentialsFinderService } from '@/credentials/credentials-finder.service'; import { BadRequestError, ConflictError, NotFoundError } from '@n8n/errors'; import { eventNamesAll } from '@/eventbus/event-message-classes'; import { MessageEventBus } from '@/eventbus/message-event-bus/message-event-bus'; @@ -36,6 +35,11 @@ const findDestinationOrFail = async (id: string): Promise { + const { CredentialsFinderService } = await import('@n8n/backend-services'); + return Container.get(CredentialsFinderService); +}; + type LogStreamingHandlers = { getEventTypes: PublicAPIEndpoint; getDestinations: PublicAPIEndpoint; @@ -87,7 +91,7 @@ const logStreamingHandlers: LogStreamingHandlers = { const options = toInternalDestinationOptions(parseResult.data); await assertUserCanUseDestinationCredentials( - Container.get(CredentialsFinderService), + await getCredentialsFinderService(), req.user, options, ); @@ -121,7 +125,7 @@ const logStreamingHandlers: LogStreamingHandlers = { const options = { ...toInternalDestinationOptions(parseResult.data), id: req.params.id }; await assertUserCanUseDestinationCredentials( - Container.get(CredentialsFinderService), + await getCredentialsFinderService(), req.user, options, ); @@ -145,7 +149,7 @@ const logStreamingHandlers: LogStreamingHandlers = { async (req, res) => { const destination = await findDestinationOrFail(req.params.id); await assertUserCanUseDestinationCredentials( - Container.get(CredentialsFinderService), + await getCredentialsFinderService(), req.user, destination, ); diff --git a/packages/cli/src/services/__tests__/dynamic-node-parameters.service.test.ts b/packages/cli/src/services/__tests__/dynamic-node-parameters.service.test.ts index 1c76e97ec26..8fb8977f4d1 100644 --- a/packages/cli/src/services/__tests__/dynamic-node-parameters.service.test.ts +++ b/packages/cli/src/services/__tests__/dynamic-node-parameters.service.test.ts @@ -29,7 +29,7 @@ vi.mock('n8n-core', async () => { import { DynamicNodeParametersService } from '../dynamic-node-parameters.service'; import { WorkflowLoaderService } from '../workflow-loader.service'; -import { CredentialsFinderService } from '@/credentials/credentials-finder.service'; +import { CredentialsFinderService } from '@n8n/backend-services'; import { BadRequestError, ForbiddenError } from '@n8n/errors'; import { NodeTypes } from '@/node-types'; import * as checkAccess from '@/permissions.ee/check-access'; diff --git a/packages/cli/src/services/__tests__/node-resource-explorer.service.test.ts b/packages/cli/src/services/__tests__/node-resource-explorer.service.test.ts index 6b83561540a..6827682a034 100644 --- a/packages/cli/src/services/__tests__/node-resource-explorer.service.test.ts +++ b/packages/cli/src/services/__tests__/node-resource-explorer.service.test.ts @@ -4,7 +4,7 @@ import type { ProjectRepository, User } from '@n8n/db'; import { mock } from 'vitest-mock-extended'; import type { INodeTypeDescription } from 'n8n-workflow'; -import type { CredentialsFinderService } from '@/credentials/credentials-finder.service'; +import type { CredentialsFinderService } from '@n8n/backend-services'; import type { NodeTypes } from '@/node-types'; import type { DynamicNodeParametersService } from '@/services/dynamic-node-parameters.service'; import { NodeResourceExplorerService } from '@/services/node-resource-explorer.service'; diff --git a/packages/cli/src/services/dynamic-node-parameters.service.ts b/packages/cli/src/services/dynamic-node-parameters.service.ts index 4d3b651dadf..2170f7ba82a 100644 --- a/packages/cli/src/services/dynamic-node-parameters.service.ts +++ b/packages/cli/src/services/dynamic-node-parameters.service.ts @@ -28,7 +28,7 @@ import { findDisplayedProperty, } from 'n8n-workflow'; -import { CredentialsFinderService } from '@/credentials/credentials-finder.service'; +import { CredentialsFinderService } from '@n8n/backend-services'; import { BadRequestError, ForbiddenError } from '@n8n/errors'; import { NodeTypes } from '@/node-types'; import { userHasScopes } from '@/permissions.ee/check-access'; diff --git a/packages/cli/src/services/node-resource-explorer.service.ts b/packages/cli/src/services/node-resource-explorer.service.ts index aede2bd0dee..1d131dd97b1 100644 --- a/packages/cli/src/services/node-resource-explorer.service.ts +++ b/packages/cli/src/services/node-resource-explorer.service.ts @@ -15,7 +15,7 @@ import type { } from 'n8n-workflow'; import { NodeHelpers } from 'n8n-workflow'; -import { CredentialsFinderService } from '@/credentials/credentials-finder.service'; +import { CredentialsFinderService } from '@n8n/backend-services'; import { NodeTypes } from '@/node-types'; import { DynamicNodeParametersService } from '@/services/dynamic-node-parameters.service'; import { getBase } from '@/workflow-execute-additional-data'; diff --git a/packages/cli/src/workflows/__tests__/workflow-creation.service.test.ts b/packages/cli/src/workflows/__tests__/workflow-creation.service.test.ts index 1d79ae091f2..47277e688e1 100644 --- a/packages/cli/src/workflows/__tests__/workflow-creation.service.test.ts +++ b/packages/cli/src/workflows/__tests__/workflow-creation.service.test.ts @@ -13,7 +13,7 @@ import type { PolicyCleared } from '@n8n/decorators'; import type { MockProxy } from 'vitest-mock-extended'; import { mock } from 'vitest-mock-extended'; -import type { CredentialsFinderService } from '@/credentials/credentials-finder.service'; +import type { CredentialsFinderService } from '@n8n/backend-services'; import { BadRequestError, ForbiddenError, NotFoundError } from '@n8n/errors'; import type { ExternalHooks, WorkflowLifecycleHookActor } from '@/external-hooks'; import type { McpSettingsService } from '@/modules/mcp/mcp.settings.service'; diff --git a/packages/cli/src/workflows/__tests__/workflow.service.ee.test.ts b/packages/cli/src/workflows/__tests__/workflow.service.ee.test.ts index 8e682611a71..398bc01a972 100644 --- a/packages/cli/src/workflows/__tests__/workflow.service.ee.test.ts +++ b/packages/cli/src/workflows/__tests__/workflow.service.ee.test.ts @@ -15,7 +15,7 @@ import { WorkflowActivationError } from 'n8n-workflow'; import { mock } from 'vitest-mock-extended'; import type { ActiveWorkflowManager } from '@/active-workflow-manager'; -import type { CredentialsFinderService } from '@/credentials/credentials-finder.service'; +import type { CredentialsFinderService } from '@n8n/backend-services'; import type { CredentialsService } from '@/credentials/credentials.service'; import type { PolicyEnforcementService } from '@/policy/policy-enforcement.service'; import type { OwnershipService } from '@/services/ownership.service'; diff --git a/packages/cli/src/workflows/workflow-creation.service.ts b/packages/cli/src/workflows/workflow-creation.service.ts index 2ab4c0214fd..a0a66985ce9 100644 --- a/packages/cli/src/workflows/workflow-creation.service.ts +++ b/packages/cli/src/workflows/workflow-creation.service.ts @@ -1,6 +1,6 @@ import type { RedactionFloor } from '@n8n/api-types'; import { LicenseState, Logger } from '@n8n/backend-common'; -import { EventService } from '@n8n/backend-services'; +import { EventService, CredentialsFinderService } from '@n8n/backend-services'; import { GlobalConfig } from '@n8n/config'; import type { EntityManager, User, Project, Folder } from '@n8n/db'; import { @@ -15,7 +15,6 @@ import { Service } from '@n8n/di'; import { PROJECT_ROOT } from 'n8n-workflow'; import { v4 as uuid } from 'uuid'; -import { CredentialsFinderService } from '@/credentials/credentials-finder.service'; import { BadRequestError, ForbiddenError, InternalServerError, NotFoundError } from '@n8n/errors'; import { WorkflowValidationError } from '@/errors/response-errors/workflow-validation.error'; import type { WorkflowActionSource } from '@/events/maps/relay.event-map'; diff --git a/packages/cli/src/workflows/workflow.service.ee.ts b/packages/cli/src/workflows/workflow.service.ee.ts index 11f0c3fb79f..5331c3205e0 100644 --- a/packages/cli/src/workflows/workflow.service.ee.ts +++ b/packages/cli/src/workflows/workflow.service.ee.ts @@ -32,7 +32,7 @@ import { import { ActiveWorkflowManager } from '@/active-workflow-manager'; import { isCredSharingEnabled } from '@/constants/credential-sharing'; -import { CredentialsFinderService } from '@/credentials/credentials-finder.service'; +import { CredentialsFinderService } from '@n8n/backend-services'; import { CredentialsService } from '@/credentials/credentials.service'; import { EnterpriseCredentialsService } from '@/credentials/credentials.service.ee'; import { FolderNotFoundError } from '@/errors/folder-not-found.error'; diff --git a/packages/cli/test/integration/credentials/credentials.service.test.ts b/packages/cli/test/integration/credentials/credentials.service.test.ts index 8f21fa24dcb..1f162d83538 100644 --- a/packages/cli/test/integration/credentials/credentials.service.test.ts +++ b/packages/cli/test/integration/credentials/credentials.service.test.ts @@ -7,7 +7,7 @@ import { import type { CredentialsEntity, User } from '@n8n/db'; import { Container } from '@n8n/di'; -import { CredentialsFinderService } from '@/credentials/credentials-finder.service'; +import { CredentialsFinderService } from '@n8n/backend-services'; import { CredentialsService } from '@/credentials/credentials.service'; import { saveCredential, shareCredentialWithUsers } from '../shared/db/credentials'; diff --git a/packages/cli/test/integration/database/repositories/credentials.repository.test.ts b/packages/cli/test/integration/database/repositories/credentials.repository.test.ts index 68f4f703825..4cf0eb6b29c 100644 --- a/packages/cli/test/integration/database/repositories/credentials.repository.test.ts +++ b/packages/cli/test/integration/database/repositories/credentials.repository.test.ts @@ -469,9 +469,7 @@ describe('CredentialsRepository', () => { const { createMember } = await import('../../shared/db/users.js'); const { createTeamProject, linkUserToProject } = await import('@n8n/backend-test-utils'); const { createCredentials } = await import('../../shared/db/credentials.js'); - const { CredentialsFinderService } = await import( - '@/credentials/credentials-finder.service.js' - ); + const { CredentialsFinderService } = await import('@n8n/backend-services'); const { RoleService } = await import('@n8n/backend-services'); const member = await createMember(); @@ -518,9 +516,7 @@ describe('CredentialsRepository', () => { const { createOwner } = await import('../../shared/db/users.js'); const { getPersonalProject } = await import('@n8n/backend-test-utils'); const { createCredentials } = await import('../../shared/db/credentials.js'); - const { CredentialsFinderService } = await import( - '@/credentials/credentials-finder.service.js' - ); + const { CredentialsFinderService } = await import('@n8n/backend-services'); const owner = await createOwner(); const personalProject = await getPersonalProject(owner); @@ -563,9 +559,7 @@ describe('CredentialsRepository', () => { const { createMember } = await import('../../shared/db/users.js'); const { createTeamProject, linkUserToProject } = await import('@n8n/backend-test-utils'); const { createCredentials } = await import('../../shared/db/credentials.js'); - const { CredentialsFinderService } = await import( - '@/credentials/credentials-finder.service.js' - ); + const { CredentialsFinderService } = await import('@n8n/backend-services'); const { RoleService } = await import('@n8n/backend-services'); const member = await createMember(); @@ -633,9 +627,7 @@ describe('CredentialsRepository', () => { const { createMember } = await import('../../shared/db/users.js'); const { createTeamProject, linkUserToProject } = await import('@n8n/backend-test-utils'); const { createCredentials } = await import('../../shared/db/credentials.js'); - const { CredentialsFinderService } = await import( - '@/credentials/credentials-finder.service.js' - ); + const { CredentialsFinderService } = await import('@n8n/backend-services'); const { RoleService } = await import('@n8n/backend-services'); const member = await createMember(); @@ -720,9 +712,7 @@ describe('CredentialsRepository', () => { const { createMember } = await import('../../shared/db/users.js'); const { createTeamProject, linkUserToProject } = await import('@n8n/backend-test-utils'); const { createCredentials } = await import('../../shared/db/credentials.js'); - const { CredentialsFinderService } = await import( - '@/credentials/credentials-finder.service.js' - ); + const { CredentialsFinderService } = await import('@n8n/backend-services'); const { RoleService } = await import('@n8n/backend-services'); // Create two separate users @@ -818,9 +808,7 @@ describe('CredentialsRepository', () => { const { createMember } = await import('../../shared/db/users.js'); const { createTeamProject, linkUserToProject } = await import('@n8n/backend-test-utils'); const { createCredentials } = await import('../../shared/db/credentials.js'); - const { CredentialsFinderService } = await import( - '@/credentials/credentials-finder.service.js' - ); + const { CredentialsFinderService } = await import('@n8n/backend-services'); const { RoleCacheService } = await import('@n8n/backend-services'); const member = await createMember(); diff --git a/packages/cli/test/integration/log-streaming.controller.test.ts b/packages/cli/test/integration/log-streaming.controller.test.ts index deb828591f2..8a0c2abb8a3 100644 --- a/packages/cli/test/integration/log-streaming.controller.test.ts +++ b/packages/cli/test/integration/log-streaming.controller.test.ts @@ -3,7 +3,7 @@ import { InstanceSettingsLoaderConfig } from '@n8n/config'; import { GLOBAL_OWNER_ROLE, type CredentialsEntity, type User } from '@n8n/db'; import { Container } from '@n8n/di'; -import { CredentialsFinderService } from '@/credentials/credentials-finder.service'; +import { CredentialsFinderService } from '@n8n/backend-services'; import { MessageEventBus } from '@/eventbus/message-event-bus/message-event-bus'; import { ExecutionRecoveryService } from '@/executions/execution-recovery.service'; import { LogStreamingDestinationService } from '@/modules/log-streaming.ee/log-streaming-destination.service'; diff --git a/packages/cli/test/integration/mcp/search-workflows.tool.test.ts b/packages/cli/test/integration/mcp/search-workflows.tool.test.ts index 5dabe6afe85..cae2daa0317 100644 --- a/packages/cli/test/integration/mcp/search-workflows.tool.test.ts +++ b/packages/cli/test/integration/mcp/search-workflows.tool.test.ts @@ -16,7 +16,7 @@ import { FolderNotFoundError } from '@/errors/folder-not-found.error'; import { License } from '@/license'; import { LoadNodesAndCredentials } from '@/load-nodes-and-credentials'; import { searchWorkflows } from '@/modules/mcp/tools/search-workflows.tool'; -import { FolderFinderService } from '@/services/folder-finder.service'; +import { FolderFinderService } from '@n8n/backend-services'; import { WorkflowService } from '@/workflows/workflow.service'; import { createFolder } from '@test-integration/db/folders'; import { LicenseMocker } from '@test-integration/license';