n8n 2.2.2 → 2.3.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.
Files changed (95) hide show
  1. package/dist/build.tsbuildinfo +1 -1
  2. package/dist/commands/import/workflow.js +21 -14
  3. package/dist/commands/import/workflow.js.map +1 -1
  4. package/dist/commands/start.js +4 -2
  5. package/dist/commands/start.js.map +1 -1
  6. package/dist/commands/webhook.js +2 -1
  7. package/dist/commands/webhook.js.map +1 -1
  8. package/dist/commands/worker.js +2 -1
  9. package/dist/commands/worker.js.map +1 -1
  10. package/dist/controllers/e2e.controller.d.ts +1 -0
  11. package/dist/controllers/e2e.controller.js +10 -2
  12. package/dist/controllers/e2e.controller.js.map +1 -1
  13. package/dist/credentials/credentials.service.d.ts +1 -1
  14. package/dist/credentials/credentials.service.js +2 -2
  15. package/dist/credentials/credentials.service.js.map +1 -1
  16. package/dist/executions/execution.service.d.ts +1 -0
  17. package/dist/executions/execution.service.js +18 -1
  18. package/dist/executions/execution.service.js.map +1 -1
  19. package/dist/executions/execution.types.d.ts +4 -0
  20. package/dist/executions/executions.controller.d.ts +3 -0
  21. package/dist/executions/executions.controller.js +13 -0
  22. package/dist/executions/executions.controller.js.map +1 -1
  23. package/dist/modules/chat-hub/chat-hub-agent.repository.js +16 -21
  24. package/dist/modules/chat-hub/chat-hub-agent.repository.js.map +1 -1
  25. package/dist/modules/chat-hub/chat-hub-agent.service.js +3 -3
  26. package/dist/modules/chat-hub/chat-hub-agent.service.js.map +1 -1
  27. package/dist/modules/chat-hub/chat-hub-credentials.service.d.ts +11 -15
  28. package/dist/modules/chat-hub/chat-hub-credentials.service.js +26 -27
  29. package/dist/modules/chat-hub/chat-hub-credentials.service.js.map +1 -1
  30. package/dist/modules/chat-hub/chat-hub.service.js +64 -36
  31. package/dist/modules/chat-hub/chat-hub.service.js.map +1 -1
  32. package/dist/modules/chat-hub/chat-hub.types.d.ts +2 -0
  33. package/dist/modules/chat-hub/chat-hub.types.js.map +1 -1
  34. package/dist/modules/chat-hub/chat-message.repository.js +14 -18
  35. package/dist/modules/chat-hub/chat-message.repository.js.map +1 -1
  36. package/dist/modules/chat-hub/chat-session.repository.js +26 -33
  37. package/dist/modules/chat-hub/chat-session.repository.js.map +1 -1
  38. package/dist/modules/data-table/data-table-column.repository.js +7 -8
  39. package/dist/modules/data-table/data-table-column.repository.js.map +1 -1
  40. package/dist/modules/data-table/data-table-rows.repository.js +21 -25
  41. package/dist/modules/data-table/data-table-rows.repository.js.map +1 -1
  42. package/dist/modules/external-secrets.ee/external-secrets.service.ee.js +9 -2
  43. package/dist/modules/external-secrets.ee/external-secrets.service.ee.js.map +1 -1
  44. package/dist/modules/insights/insights-compaction.service.js +2 -1
  45. package/dist/modules/insights/insights-compaction.service.js.map +1 -1
  46. package/dist/oauth/oauth.service.d.ts +8 -4
  47. package/dist/oauth/oauth.service.js +20 -17
  48. package/dist/oauth/oauth.service.js.map +1 -1
  49. package/dist/oauth/types.d.ts +2 -1
  50. package/dist/oauth/types.js.map +1 -1
  51. package/dist/public-api/types.d.ts +10 -0
  52. package/dist/public-api/v1/handlers/credentials/credentials.handler.d.ts +3 -0
  53. package/dist/public-api/v1/handlers/credentials/credentials.handler.js +36 -0
  54. package/dist/public-api/v1/handlers/credentials/credentials.handler.js.map +1 -1
  55. package/dist/public-api/v1/handlers/credentials/credentials.middleware.d.ts +2 -0
  56. package/dist/public-api/v1/handlers/credentials/credentials.middleware.js +60 -10
  57. package/dist/public-api/v1/handlers/credentials/credentials.middleware.js.map +1 -1
  58. package/dist/public-api/v1/handlers/credentials/credentials.service.d.ts +11 -1
  59. package/dist/public-api/v1/handlers/credentials/credentials.service.js +62 -0
  60. package/dist/public-api/v1/handlers/credentials/credentials.service.js.map +1 -1
  61. package/dist/public-api/v1/openapi.yml +65 -0
  62. package/dist/scaling/pubsub/publisher.service.d.ts +5 -2
  63. package/dist/scaling/pubsub/publisher.service.js +10 -5
  64. package/dist/scaling/pubsub/publisher.service.js.map +1 -1
  65. package/dist/scaling/pubsub/subscriber.service.d.ts +8 -4
  66. package/dist/scaling/pubsub/subscriber.service.js +14 -2
  67. package/dist/scaling/pubsub/subscriber.service.js.map +1 -1
  68. package/dist/services/ai-workflow-builder.service.js +1 -0
  69. package/dist/services/ai-workflow-builder.service.js.map +1 -1
  70. package/dist/services/ai.service.d.ts +3 -1
  71. package/dist/services/ai.service.js +6 -2
  72. package/dist/services/ai.service.js.map +1 -1
  73. package/dist/services/frontend.service.d.ts +1 -0
  74. package/dist/services/frontend.service.js +2 -3
  75. package/dist/services/frontend.service.js.map +1 -1
  76. package/dist/services/pruning/executions-pruning.service.js +3 -3
  77. package/dist/services/pruning/executions-pruning.service.js.map +1 -1
  78. package/dist/services/pruning/workflow-history-compaction.service.d.ts +21 -0
  79. package/dist/services/pruning/workflow-history-compaction.service.js +144 -0
  80. package/dist/services/pruning/workflow-history-compaction.service.js.map +1 -0
  81. package/dist/task-runners/task-runner-module.js +13 -15
  82. package/dist/task-runners/task-runner-module.js.map +1 -1
  83. package/dist/utils/cors.util.d.ts +2 -0
  84. package/dist/utils/cors.util.js +18 -0
  85. package/dist/utils/cors.util.js.map +1 -0
  86. package/dist/webhooks/waiting-forms.js +3 -3
  87. package/dist/webhooks/waiting-forms.js.map +1 -1
  88. package/dist/webhooks/waiting-webhooks.js +2 -0
  89. package/dist/webhooks/waiting-webhooks.js.map +1 -1
  90. package/dist/workflows/workflow.service.ee.js +6 -5
  91. package/dist/workflows/workflow.service.ee.js.map +1 -1
  92. package/dist/workflows/workflows.controller.d.ts +1 -1
  93. package/dist/workflows/workflows.controller.js +1 -4
  94. package/dist/workflows/workflows.controller.js.map +1 -1
  95. package/package.json +18 -18
@@ -94,6 +94,13 @@ let ExecutionsController = class ExecutionsController {
94
94
  const executionId = req.params.id;
95
95
  return await this.executionService.stop(executionId, workflowIds);
96
96
  }
97
+ async stopMany(req) {
98
+ const accessibleWorkflowIds = await this.getAccessibleWorkflowIds(req.user, 'workflow:execute');
99
+ if (accessibleWorkflowIds.length === 0)
100
+ return { stopped: 0 };
101
+ const stopped = await this.executionService.stopMany(req.body.filter, accessibleWorkflowIds);
102
+ return { stopped };
103
+ }
97
104
  async retry(req) {
98
105
  const workflowIds = await this.getAccessibleWorkflowIds(req.user, 'workflow:execute');
99
106
  if (workflowIds.length === 0)
@@ -138,6 +145,12 @@ __decorate([
138
145
  __metadata("design:paramtypes", [Object]),
139
146
  __metadata("design:returntype", Promise)
140
147
  ], ExecutionsController.prototype, "stop", null);
148
+ __decorate([
149
+ (0, decorators_1.Post)('/stopMany'),
150
+ __metadata("design:type", Function),
151
+ __metadata("design:paramtypes", [Object]),
152
+ __metadata("design:returntype", Promise)
153
+ ], ExecutionsController.prototype, "stopMany", null);
141
154
  __decorate([
142
155
  (0, decorators_1.Post)('/:id/retry'),
143
156
  __metadata("design:type", Function),
@@ -1 +1 @@
1
- {"version":3,"file":"executions.controller.js","sourceRoot":"","sources":["../../src/executions/executions.controller.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"executions.controller.js","sourceRoot":"","sources":["../../src/executions/executions.controller.ts"],"names":[],"mappings":"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"}
@@ -10,7 +10,6 @@ var __metadata = (this && this.__metadata) || function (k, v) {
10
10
  };
11
11
  Object.defineProperty(exports, "__esModule", { value: true });
12
12
  exports.ChatHubAgentRepository = void 0;
13
- const db_1 = require("@n8n/db");
14
13
  const di_1 = require("@n8n/di");
15
14
  const typeorm_1 = require("@n8n/typeorm");
16
15
  const chat_hub_agent_entity_1 = require("./chat-hub-agent.entity");
@@ -19,25 +18,22 @@ let ChatHubAgentRepository = class ChatHubAgentRepository extends typeorm_1.Repo
19
18
  super(chat_hub_agent_entity_1.ChatHubAgent, dataSource.manager);
20
19
  }
21
20
  async createAgent(agent, trx) {
22
- return await (0, db_1.withTransaction)(this.manager, trx, async (em) => {
23
- await em.insert(chat_hub_agent_entity_1.ChatHubAgent, agent);
24
- return await em.findOneOrFail(chat_hub_agent_entity_1.ChatHubAgent, {
25
- where: { id: agent.id },
26
- });
27
- }, false);
21
+ const em = trx ?? this.manager;
22
+ await em.insert(chat_hub_agent_entity_1.ChatHubAgent, agent);
23
+ return await em.findOneOrFail(chat_hub_agent_entity_1.ChatHubAgent, {
24
+ where: { id: agent.id },
25
+ });
28
26
  }
29
27
  async updateAgent(id, updates, trx) {
30
- return await (0, db_1.withTransaction)(this.manager, trx, async (em) => {
31
- await em.update(chat_hub_agent_entity_1.ChatHubAgent, { id }, updates);
32
- return await em.findOneOrFail(chat_hub_agent_entity_1.ChatHubAgent, {
33
- where: { id },
34
- });
35
- }, false);
28
+ const em = trx ?? this.manager;
29
+ await em.update(chat_hub_agent_entity_1.ChatHubAgent, { id }, updates);
30
+ return await em.findOneOrFail(chat_hub_agent_entity_1.ChatHubAgent, {
31
+ where: { id },
32
+ });
36
33
  }
37
34
  async deleteAgent(id, trx) {
38
- return await (0, db_1.withTransaction)(this.manager, trx, async (em) => {
39
- return await em.delete(chat_hub_agent_entity_1.ChatHubAgent, { id });
40
- }, false);
35
+ const em = trx ?? this.manager;
36
+ return await em.delete(chat_hub_agent_entity_1.ChatHubAgent, { id });
41
37
  }
42
38
  async getManyByUserId(userId) {
43
39
  return await this.find({
@@ -46,11 +42,10 @@ let ChatHubAgentRepository = class ChatHubAgentRepository extends typeorm_1.Repo
46
42
  });
47
43
  }
48
44
  async getOneById(id, userId, trx) {
49
- return await (0, db_1.withTransaction)(this.manager, trx, async (em) => {
50
- return await em.findOne(chat_hub_agent_entity_1.ChatHubAgent, {
51
- where: { id, ownerId: userId },
52
- });
53
- }, false);
45
+ const em = trx ?? this.manager;
46
+ return await em.findOne(chat_hub_agent_entity_1.ChatHubAgent, {
47
+ where: { id, ownerId: userId },
48
+ });
54
49
  }
55
50
  };
56
51
  exports.ChatHubAgentRepository = ChatHubAgentRepository;
@@ -1 +1 @@
1
- {"version":3,"file":"chat-hub-agent.repository.js","sourceRoot":"","sources":["../../../src/modules/chat-hub/chat-hub-agent.repository.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,gCAA0C;AAC1C,gCAAkC;AAClC,0CAAqE;AAErE,mEAAsE;AAG/D,IAAM,sBAAsB,GAA5B,MAAM,sBAAuB,SAAQ,oBAAwB;IACnE,YAAY,UAAsB;QACjC,KAAK,CAAC,oCAAY,EAAE,UAAU,CAAC,OAAO,CAAC,CAAC;IACzC,CAAC;IAED,KAAK,CAAC,WAAW,CAChB,KAAyD,EACzD,GAAmB;QAEnB,OAAO,MAAM,IAAA,oBAAe,EAC3B,IAAI,CAAC,OAAO,EACZ,GAAG,EACH,KAAK,EAAE,EAAE,EAAE,EAAE;YACZ,MAAM,EAAE,CAAC,MAAM,CAAC,oCAAY,EAAE,KAAK,CAAC,CAAC;YACrC,OAAO,MAAM,EAAE,CAAC,aAAa,CAAC,oCAAY,EAAE;gBAC3C,KAAK,EAAE,EAAE,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE;aACvB,CAAC,CAAC;QACJ,CAAC,EACD,KAAK,CACL,CAAC;IACH,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,EAAU,EAAE,OAA+B,EAAE,GAAmB;QACjF,OAAO,MAAM,IAAA,oBAAe,EAC3B,IAAI,CAAC,OAAO,EACZ,GAAG,EACH,KAAK,EAAE,EAAE,EAAE,EAAE;YACZ,MAAM,EAAE,CAAC,MAAM,CAAC,oCAAY,EAAE,EAAE,EAAE,EAAE,EAAE,OAAO,CAAC,CAAC;YAC/C,OAAO,MAAM,EAAE,CAAC,aAAa,CAAC,oCAAY,EAAE;gBAC3C,KAAK,EAAE,EAAE,EAAE,EAAE;aACb,CAAC,CAAC;QACJ,CAAC,EACD,KAAK,CACL,CAAC;IACH,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,EAAU,EAAE,GAAmB;QAChD,OAAO,MAAM,IAAA,oBAAe,EAC3B,IAAI,CAAC,OAAO,EACZ,GAAG,EACH,KAAK,EAAE,EAAE,EAAE,EAAE;YACZ,OAAO,MAAM,EAAE,CAAC,MAAM,CAAC,oCAAY,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;QAC9C,CAAC,EACD,KAAK,CACL,CAAC;IACH,CAAC;IAED,KAAK,CAAC,eAAe,CAAC,MAAc;QACnC,OAAO,MAAM,IAAI,CAAC,IAAI,CAAC;YACtB,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE;YAC1B,KAAK,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE;SAC5B,CAAC,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,EAAU,EAAE,MAAc,EAAE,GAAmB;QAC/D,OAAO,MAAM,IAAA,oBAAe,EAC3B,IAAI,CAAC,OAAO,EACZ,GAAG,EACH,KAAK,EAAE,EAAE,EAAE,EAAE;YACZ,OAAO,MAAM,EAAE,CAAC,OAAO,CAAC,oCAAY,EAAE;gBACrC,KAAK,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE;aAC9B,CAAC,CAAC;QACJ,CAAC,EACD,KAAK,CACL,CAAC;IACH,CAAC;CACD,CAAA;AAlEY,wDAAsB;iCAAtB,sBAAsB;IADlC,IAAA,YAAO,GAAE;qCAEe,oBAAU;GADtB,sBAAsB,CAkElC"}
1
+ {"version":3,"file":"chat-hub-agent.repository.js","sourceRoot":"","sources":["../../../src/modules/chat-hub/chat-hub-agent.repository.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,gCAAkC;AAClC,0CAAqE;AAErE,mEAAsE;AAG/D,IAAM,sBAAsB,GAA5B,MAAM,sBAAuB,SAAQ,oBAAwB;IACnE,YAAY,UAAsB;QACjC,KAAK,CAAC,oCAAY,EAAE,UAAU,CAAC,OAAO,CAAC,CAAC;IACzC,CAAC;IAED,KAAK,CAAC,WAAW,CAChB,KAAyD,EACzD,GAAmB;QAEnB,MAAM,EAAE,GAAG,GAAG,IAAI,IAAI,CAAC,OAAO,CAAC;QAC/B,MAAM,EAAE,CAAC,MAAM,CAAC,oCAAY,EAAE,KAAK,CAAC,CAAC;QACrC,OAAO,MAAM,EAAE,CAAC,aAAa,CAAC,oCAAY,EAAE;YAC3C,KAAK,EAAE,EAAE,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE;SACvB,CAAC,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,EAAU,EAAE,OAA+B,EAAE,GAAmB;QACjF,MAAM,EAAE,GAAG,GAAG,IAAI,IAAI,CAAC,OAAO,CAAC;QAC/B,MAAM,EAAE,CAAC,MAAM,CAAC,oCAAY,EAAE,EAAE,EAAE,EAAE,EAAE,OAAO,CAAC,CAAC;QAC/C,OAAO,MAAM,EAAE,CAAC,aAAa,CAAC,oCAAY,EAAE;YAC3C,KAAK,EAAE,EAAE,EAAE,EAAE;SACb,CAAC,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,EAAU,EAAE,GAAmB;QAChD,MAAM,EAAE,GAAG,GAAG,IAAI,IAAI,CAAC,OAAO,CAAC;QAC/B,OAAO,MAAM,EAAE,CAAC,MAAM,CAAC,oCAAY,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;IAC9C,CAAC;IAED,KAAK,CAAC,eAAe,CAAC,MAAc;QACnC,OAAO,MAAM,IAAI,CAAC,IAAI,CAAC;YACtB,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE;YAC1B,KAAK,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE;SAC5B,CAAC,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,EAAU,EAAE,MAAc,EAAE,GAAmB;QAC/D,MAAM,EAAE,GAAG,GAAG,IAAI,IAAI,CAAC,OAAO,CAAC;QAC/B,OAAO,MAAM,EAAE,CAAC,OAAO,CAAC,oCAAY,EAAE;YACrC,KAAK,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE;SAC9B,CAAC,CAAC;IACJ,CAAC;CACD,CAAA;AA1CY,wDAAsB;iCAAtB,sBAAsB;IADlC,IAAA,YAAO,GAAE;qCAEe,oBAAU;GADtB,sBAAsB,CA0ClC"}
@@ -13,10 +13,10 @@ exports.ChatHubAgentService = void 0;
13
13
  const backend_common_1 = require("@n8n/backend-common");
14
14
  const di_1 = require("@n8n/di");
15
15
  const uuid_1 = require("uuid");
16
+ const not_found_error_1 = require("../../errors/response-errors/not-found.error");
16
17
  const chat_hub_agent_repository_1 = require("./chat-hub-agent.repository");
17
18
  const chat_hub_credentials_service_1 = require("./chat-hub-credentials.service");
18
19
  const chat_hub_constants_1 = require("./chat-hub.constants");
19
- const not_found_error_1 = require("../../errors/response-errors/not-found.error");
20
20
  let ChatHubAgentService = class ChatHubAgentService {
21
21
  constructor(logger, chatAgentRepository, chatHubCredentialsService) {
22
22
  this.logger = logger;
@@ -52,7 +52,7 @@ let ChatHubAgentService = class ChatHubAgentService {
52
52
  return agent;
53
53
  }
54
54
  async createAgent(user, data) {
55
- await this.chatHubCredentialsService.ensureCredentialById(user, data.credentialId);
55
+ await this.chatHubCredentialsService.ensureCredentialAccess(user, data.credentialId);
56
56
  const id = (0, uuid_1.v4)();
57
57
  const agent = await this.chatAgentRepository.createAgent({
58
58
  id,
@@ -75,7 +75,7 @@ let ChatHubAgentService = class ChatHubAgentService {
75
75
  throw new not_found_error_1.NotFoundError('Chat agent not found');
76
76
  }
77
77
  if (updates.credentialId !== undefined && updates.credentialId !== null) {
78
- await this.chatHubCredentialsService.ensureCredentialById(user, updates.credentialId);
78
+ await this.chatHubCredentialsService.ensureCredentialAccess(user, updates.credentialId);
79
79
  }
80
80
  const updateData = {};
81
81
  if (updates.name !== undefined)
@@ -1 +1 @@
1
- {"version":3,"file":"chat-hub-agent.service.js","sourceRoot":"","sources":["../../../src/modules/chat-hub/chat-hub-agent.service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"chat-hub-agent.service.js","sourceRoot":"","sources":["../../../src/modules/chat-hub/chat-hub-agent.service.ts"],"names":[],"mappings":"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"}
@@ -1,25 +1,21 @@
1
1
  import { ChatHubLLMProvider } from '@n8n/api-types';
2
- import { type User, ProjectRepository } from '@n8n/db';
3
- import { SharedWorkflowRepository } from '@n8n/db';
4
- import type { EntityManager } from '@n8n/typeorm';
2
+ import { ProjectRepository, SharedWorkflowRepository, User } from '@n8n/db';
3
+ import { EntityManager } from '@n8n/typeorm';
5
4
  import type { INodeCredentials } from 'n8n-workflow';
5
+ import { CredentialsFinderService } from '../../credentials/credentials-finder.service';
6
6
  import { CredentialsService } from '../../credentials/credentials.service';
7
7
  export declare class ChatHubCredentialsService {
8
8
  private readonly credentialsService;
9
- private readonly projectRepository;
10
9
  private readonly sharedWorkflowRepository;
11
- constructor(credentialsService: CredentialsService, projectRepository: ProjectRepository, sharedWorkflowRepository: SharedWorkflowRepository);
12
- ensureCredentials(user: User, provider: ChatHubLLMProvider, credentials: INodeCredentials, trx?: EntityManager): Promise<{
13
- id: string;
14
- projectId: string;
15
- }>;
16
- ensureCredentialById(user: User, credentialId: string, trx?: EntityManager): Promise<{
17
- id: string;
18
- projectId: string;
19
- }>;
10
+ private readonly credentialsFinderService;
11
+ private readonly projectRepository;
12
+ constructor(credentialsService: CredentialsService, sharedWorkflowRepository: SharedWorkflowRepository, credentialsFinderService: CredentialsFinderService, projectRepository: ProjectRepository);
13
+ ensureCredentialAccess(user: User, credentialId: string): Promise<import("@n8n/db").CredentialsEntity>;
20
14
  private pickCredentialId;
21
- ensureWorkflowCredentials(provider: ChatHubLLMProvider, credentials: INodeCredentials, workflowId: string): Promise<{
22
- id: string;
15
+ findPersonalProject(user: User, trx?: EntityManager): Promise<import("@n8n/db").Project>;
16
+ findProviderCredential(provider: ChatHubLLMProvider, credentials: INodeCredentials): string;
17
+ findWorkflowCredentialAndProject(provider: ChatHubLLMProvider, credentials: INodeCredentials, workflowId: string): Promise<{
18
+ credentialId: string;
23
19
  projectId: string;
24
20
  }>;
25
21
  }
@@ -12,40 +12,24 @@ Object.defineProperty(exports, "__esModule", { value: true });
12
12
  exports.ChatHubCredentialsService = void 0;
13
13
  const api_types_1 = require("@n8n/api-types");
14
14
  const db_1 = require("@n8n/db");
15
- const db_2 = require("@n8n/db");
16
15
  const di_1 = require("@n8n/di");
16
+ const credentials_finder_service_1 = require("../../credentials/credentials-finder.service");
17
17
  const credentials_service_1 = require("../../credentials/credentials.service");
18
18
  const bad_request_error_1 = require("../../errors/response-errors/bad-request.error");
19
19
  const forbidden_error_1 = require("../../errors/response-errors/forbidden.error");
20
20
  let ChatHubCredentialsService = class ChatHubCredentialsService {
21
- constructor(credentialsService, projectRepository, sharedWorkflowRepository) {
21
+ constructor(credentialsService, sharedWorkflowRepository, credentialsFinderService, projectRepository) {
22
22
  this.credentialsService = credentialsService;
23
- this.projectRepository = projectRepository;
24
23
  this.sharedWorkflowRepository = sharedWorkflowRepository;
24
+ this.credentialsFinderService = credentialsFinderService;
25
+ this.projectRepository = projectRepository;
25
26
  }
26
- async ensureCredentials(user, provider, credentials, trx) {
27
- const credentialId = this.pickCredentialId(provider, credentials);
28
- if (!credentialId) {
29
- throw new bad_request_error_1.BadRequestError('No credentials provided for the selected model provider');
30
- }
31
- return await this.ensureCredentialById(user, credentialId, trx);
32
- }
33
- async ensureCredentialById(user, credentialId, trx) {
34
- const project = await this.projectRepository.getPersonalProjectForUser(user.id, trx);
35
- if (!project) {
36
- throw new forbidden_error_1.ForbiddenError('Missing personal project');
37
- }
38
- const allCredentials = await this.credentialsService.getCredentialsAUserCanUseInAWorkflow(user, {
39
- projectId: project.id,
40
- });
41
- const credential = allCredentials.find((c) => c.id === credentialId);
27
+ async ensureCredentialAccess(user, credentialId) {
28
+ const credential = await this.credentialsFinderService.findCredentialForUser(credentialId, user, ['credential:read']);
42
29
  if (!credential) {
43
30
  throw new forbidden_error_1.ForbiddenError("You don't have access to the provided credentials");
44
31
  }
45
- return {
46
- id: credential.id,
47
- projectId: project.id,
48
- };
32
+ return credential;
49
33
  }
50
34
  pickCredentialId(provider, credentials) {
51
35
  if (provider === 'n8n' || provider === 'custom-agent') {
@@ -53,7 +37,21 @@ let ChatHubCredentialsService = class ChatHubCredentialsService {
53
37
  }
54
38
  return credentials[api_types_1.PROVIDER_CREDENTIAL_TYPE_MAP[provider]]?.id ?? null;
55
39
  }
56
- async ensureWorkflowCredentials(provider, credentials, workflowId) {
40
+ async findPersonalProject(user, trx) {
41
+ const project = await this.projectRepository.getPersonalProjectForUser(user.id, trx);
42
+ if (!project) {
43
+ throw new forbidden_error_1.ForbiddenError('Missing personal project');
44
+ }
45
+ return project;
46
+ }
47
+ findProviderCredential(provider, credentials) {
48
+ const credentialId = this.pickCredentialId(provider, credentials);
49
+ if (!credentialId) {
50
+ throw new bad_request_error_1.BadRequestError('No credentials provided for the selected model provider');
51
+ }
52
+ return credentialId;
53
+ }
54
+ async findWorkflowCredentialAndProject(provider, credentials, workflowId) {
57
55
  const credentialId = this.pickCredentialId(provider, credentials);
58
56
  if (!credentialId) {
59
57
  throw new bad_request_error_1.BadRequestError('No credentials provided for the selected model provider');
@@ -70,7 +68,7 @@ let ChatHubCredentialsService = class ChatHubCredentialsService {
70
68
  throw new forbidden_error_1.ForbiddenError("You don't have access to the provided credentials");
71
69
  }
72
70
  return {
73
- id: credential.id,
71
+ credentialId: credential.id,
74
72
  projectId: project.id,
75
73
  };
76
74
  }
@@ -79,7 +77,8 @@ exports.ChatHubCredentialsService = ChatHubCredentialsService;
79
77
  exports.ChatHubCredentialsService = ChatHubCredentialsService = __decorate([
80
78
  (0, di_1.Service)(),
81
79
  __metadata("design:paramtypes", [credentials_service_1.CredentialsService,
82
- db_1.ProjectRepository,
83
- db_2.SharedWorkflowRepository])
80
+ db_1.SharedWorkflowRepository,
81
+ credentials_finder_service_1.CredentialsFinderService,
82
+ db_1.ProjectRepository])
84
83
  ], ChatHubCredentialsService);
85
84
  //# sourceMappingURL=chat-hub-credentials.service.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"chat-hub-credentials.service.js","sourceRoot":"","sources":["../../../src/modules/chat-hub/chat-hub-credentials.service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"chat-hub-credentials.service.js","sourceRoot":"","sources":["../../../src/modules/chat-hub/chat-hub-credentials.service.ts"],"names":[],"mappings":"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"}
@@ -91,7 +91,7 @@ let ChatHubService = class ChatHubService {
91
91
  const { sessionId, messageId, message, model, credentials, previousMessageId, tools, attachments, timeZone, } = payload;
92
92
  const tz = timeZone ?? this.globalConfig.generic.timezone;
93
93
  const credentialId = this.getModelCredential(model, credentials);
94
- const processedAttachments = await this.chatHubAttachmentService.store(sessionId, messageId, attachments);
94
+ let processedAttachments = [];
95
95
  let executionData;
96
96
  let workflowData;
97
97
  let responseMode;
@@ -102,6 +102,7 @@ let ChatHubService = class ChatHubService {
102
102
  await this.ensurePreviousMessage(previousMessageId, sessionId, trx);
103
103
  const messages = Object.fromEntries((session.messages ?? []).map((m) => [m.id, m]));
104
104
  const history = this.buildMessageHistory(messages, previousMessageId);
105
+ processedAttachments = await this.chatHubAttachmentService.store(sessionId, messageId, attachments);
105
106
  await this.saveHumanMessage(payload, processedAttachments, user, previousMessageId, model, undefined, trx);
106
107
  return await this.prepareReplyWorkflow(user, sessionId, credentials, model, history, message, tools, processedAttachments, tz, trx);
107
108
  });
@@ -130,26 +131,50 @@ let ChatHubService = class ChatHubService {
130
131
  async editMessage(res, user, payload) {
131
132
  const { sessionId, editId, messageId, message, model, credentials, timeZone } = payload;
132
133
  const tz = timeZone ?? this.globalConfig.generic.timezone;
133
- const workflow = await this.messageRepository.manager.transaction(async (trx) => {
134
- const session = await this.getChatSession(user, sessionId, trx);
135
- if (!session) {
136
- throw new not_found_error_1.NotFoundError('Chat session not found');
137
- }
138
- const messageToEdit = await this.getChatMessage(session.id, editId, [], trx);
139
- if (messageToEdit.type === 'ai') {
140
- await this.messageRepository.updateChatMessage(editId, { content: payload.message }, trx);
141
- return null;
142
- }
143
- if (messageToEdit.type === 'human') {
144
- const messages = Object.fromEntries((session.messages ?? []).map((m) => [m.id, m]));
145
- const history = this.buildMessageHistory(messages, messageToEdit.previousMessageId);
146
- const revisionOfMessageId = messageToEdit.revisionOfMessageId ?? messageToEdit.id;
147
- const attachments = messageToEdit.attachments ?? [];
148
- await this.saveHumanMessage(payload, attachments, user, messageToEdit.previousMessageId, model, revisionOfMessageId, trx);
149
- return await this.prepareReplyWorkflow(user, sessionId, credentials, model, history, message, session.tools, attachments, tz, trx);
134
+ let workflow;
135
+ let newStoredAttachments = [];
136
+ try {
137
+ workflow = await this.messageRepository.manager.transaction(async (trx) => {
138
+ const session = await this.getChatSession(user, sessionId, trx);
139
+ if (!session) {
140
+ throw new not_found_error_1.NotFoundError('Chat session not found');
141
+ }
142
+ const messageToEdit = await this.getChatMessage(session.id, editId, [], trx);
143
+ if (messageToEdit.type === 'ai') {
144
+ await this.messageRepository.updateChatMessage(editId, { content: payload.message }, trx);
145
+ return null;
146
+ }
147
+ if (messageToEdit.type === 'human') {
148
+ const messages = Object.fromEntries((session.messages ?? []).map((m) => [m.id, m]));
149
+ const history = this.buildMessageHistory(messages, messageToEdit.previousMessageId);
150
+ const revisionOfMessageId = messageToEdit.revisionOfMessageId ?? messageToEdit.id;
151
+ const originalAttachments = messageToEdit.attachments ?? [];
152
+ const keptAttachments = payload.keepAttachmentIndices.flatMap((index) => {
153
+ const attachment = originalAttachments[index];
154
+ return attachment ? [attachment] : [];
155
+ });
156
+ newStoredAttachments =
157
+ payload.newAttachments.length > 0
158
+ ? await this.chatHubAttachmentService.store(sessionId, messageId, payload.newAttachments)
159
+ : [];
160
+ const attachments = [...keptAttachments, ...newStoredAttachments];
161
+ await this.saveHumanMessage(payload, attachments, user, messageToEdit.previousMessageId, model, revisionOfMessageId, trx);
162
+ return await this.prepareReplyWorkflow(user, sessionId, credentials, model, history, message, session.tools, attachments, tz, trx);
163
+ }
164
+ throw new bad_request_error_1.BadRequestError('Only human and AI messages can be edited');
165
+ });
166
+ }
167
+ catch (error) {
168
+ if (newStoredAttachments.length > 0) {
169
+ try {
170
+ await this.chatHubAttachmentService.deleteAttachments(newStoredAttachments);
171
+ }
172
+ catch (error) {
173
+ this.errorReporter.warn(`Could not clean up ${newStoredAttachments.length} files`);
174
+ }
150
175
  }
151
- throw new bad_request_error_1.BadRequestError('Only human and AI messages can be edited');
152
- });
176
+ throw error;
177
+ }
153
178
  if (!workflow) {
154
179
  return;
155
180
  }
@@ -201,8 +226,9 @@ let ChatHubService = class ChatHubService {
201
226
  }
202
227
  async prepareBaseChatWorkflow(user, sessionId, credentials, model, history, message, systemMessage, tools, attachments, timeZone, trx) {
203
228
  await this.chatHubSettingsService.ensureModelIsAllowed(model);
204
- const credential = await this.chatHubCredentialsService.ensureCredentials(user, model.provider, credentials, trx);
205
- return await this.chatHubWorkflowService.createChatWorkflow(user.id, sessionId, credential.projectId, history, message, attachments, credentials, model, systemMessage, tools, timeZone, trx);
229
+ this.chatHubCredentialsService.findProviderCredential(model.provider, credentials);
230
+ const { id: projectId } = await this.chatHubCredentialsService.findPersonalProject(user, trx);
231
+ return await this.chatHubWorkflowService.createChatWorkflow(user.id, sessionId, projectId, history, message, attachments, credentials, model, systemMessage, tools, timeZone, trx);
206
232
  }
207
233
  async prepareChatAgentWorkflow(agentId, user, sessionId, history, message, attachments, timeZone, trx) {
208
234
  const agent = await this.chatHubAgentService.getAgentById(agentId, user.id);
@@ -475,12 +501,12 @@ let ChatHubService = class ChatHubService {
475
501
  }
476
502
  async prepareTitleGenerationWorkflow(user, sessionId, humanMessage, attachments, incomingCredentials, incomingModel) {
477
503
  return await this.messageRepository.manager.transaction(async (trx) => {
478
- const { resolvedCredentials, resolvedModel, credential } = await this.resolveCredentialsAndModelForTitle(user, incomingModel, incomingCredentials, trx);
479
- if (!credential) {
504
+ const { resolvedCredentials, resolvedModel, credentialId, projectId } = await this.resolveCredentialsAndModelForTitle(user, incomingModel, incomingCredentials, trx);
505
+ if (!credentialId || !projectId) {
480
506
  throw new bad_request_error_1.BadRequestError('Could not determine credentials for title generation');
481
507
  }
482
- this.logger.debug(`Using credential ID ${credential.id} for title generation in project ${credential.projectId}, model ${(0, n8n_workflow_1.jsonStringify)(resolvedModel)}`);
483
- return await this.chatHubWorkflowService.createTitleGenerationWorkflow(user.id, sessionId, credential.projectId, humanMessage, attachments, resolvedCredentials, resolvedModel, trx);
508
+ this.logger.debug(`Using credential ID ${credentialId} for title generation in project ${projectId}, model ${(0, n8n_workflow_1.jsonStringify)(resolvedModel)}`);
509
+ return await this.chatHubWorkflowService.createTitleGenerationWorkflow(user.id, sessionId, projectId, humanMessage, attachments, resolvedCredentials, resolvedModel, trx);
484
510
  });
485
511
  }
486
512
  async resolveCredentialsAndModelForTitle(user, model, credentials, trx) {
@@ -490,11 +516,13 @@ let ChatHubService = class ChatHubService {
490
516
  if (model.provider === 'custom-agent') {
491
517
  return await this.resolveFromCustomAgent(user, model, trx);
492
518
  }
493
- const credential = await this.chatHubCredentialsService.ensureCredentials(user, model.provider, credentials, trx);
519
+ const credentialId = this.chatHubCredentialsService.findProviderCredential(model.provider, credentials);
520
+ const { id: projectId } = await this.chatHubCredentialsService.findPersonalProject(user, trx);
494
521
  return {
495
522
  resolvedCredentials: credentials,
496
523
  resolvedModel: model,
497
- credential,
524
+ credentialId,
525
+ projectId,
498
526
  };
499
527
  }
500
528
  async resolveFromN8nWorkflow(user, { workflowId }, trx) {
@@ -519,18 +547,18 @@ let ChatHubService = class ChatHubService {
519
547
  if (!llmCredentials) {
520
548
  throw new bad_request_error_1.BadRequestError(`No credentials found on Model node "${modelNode.node.name}" for title generation`);
521
549
  }
522
- const credential = await this.chatHubCredentialsService.ensureWorkflowCredentials(modelNode.provider, llmCredentials, workflowId);
550
+ const { credentialId, projectId } = await this.chatHubCredentialsService.findWorkflowCredentialAndProject(modelNode.provider, llmCredentials, workflowId);
523
551
  const resolvedModel = {
524
552
  provider: modelNode.provider,
525
553
  model: llmModel,
526
554
  };
527
555
  const resolvedCredentials = {
528
556
  [api_types_1.PROVIDER_CREDENTIAL_TYPE_MAP[modelNode.provider]]: {
529
- id: credential.id,
557
+ id: credentialId,
530
558
  name: '',
531
559
  },
532
560
  };
533
- return { resolvedCredentials, resolvedModel, credential };
561
+ return { resolvedCredentials, resolvedModel, credentialId, projectId };
534
562
  }
535
563
  findSupportedLLMNodes(nodes) {
536
564
  return nodes.reduce((acc, node) => {
@@ -547,8 +575,7 @@ let ChatHubService = class ChatHubService {
547
575
  if (!agent) {
548
576
  throw new bad_request_error_1.BadRequestError('Agent not found for title generation');
549
577
  }
550
- const credentialId = agent.credentialId;
551
- if (!credentialId) {
578
+ if (!agent.credentialId) {
552
579
  throw new bad_request_error_1.BadRequestError('Credentials not set for agent');
553
580
  }
554
581
  const resolvedModel = {
@@ -557,12 +584,13 @@ let ChatHubService = class ChatHubService {
557
584
  };
558
585
  const resolvedCredentials = {
559
586
  [api_types_1.PROVIDER_CREDENTIAL_TYPE_MAP[agent.provider]]: {
560
- id: credentialId,
587
+ id: agent.credentialId,
561
588
  name: '',
562
589
  },
563
590
  };
564
- const credential = await this.chatHubCredentialsService.ensureCredentials(user, agent.provider, resolvedCredentials, trx);
565
- return { resolvedCredentials, resolvedModel, credential };
591
+ const credentialId = this.chatHubCredentialsService.findProviderCredential(agent.provider, resolvedCredentials);
592
+ const { id: projectId } = await this.chatHubCredentialsService.findPersonalProject(user, trx);
593
+ return { resolvedCredentials, resolvedModel, credentialId, projectId };
566
594
  }
567
595
  async runTitleWorkflowAndGetTitle(user, workflowData, executionData) {
568
596
  const { executionId } = await this.workflowExecutionService.executeChatWorkflow(workflowData, executionData, user, undefined, false, 'chat');