@n8n/ai-workflow-builder 0.31.2 → 0.32.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/ai-workflow-builder-agent.service.d.ts +6 -2
- package/dist/ai-workflow-builder-agent.service.js +45 -3
- package/dist/ai-workflow-builder-agent.service.js.map +1 -1
- package/dist/build.tsbuildinfo +1 -1
- package/dist/tools/best-practices/data-analysis.d.ts +7 -0
- package/dist/tools/best-practices/data-analysis.js +367 -0
- package/dist/tools/best-practices/data-analysis.js.map +1 -0
- package/dist/tools/best-practices/data-extraction.js +7 -0
- package/dist/tools/best-practices/data-extraction.js.map +1 -1
- package/dist/tools/best-practices/data-transformation.d.ts +7 -0
- package/dist/tools/best-practices/data-transformation.js +181 -0
- package/dist/tools/best-practices/data-transformation.js.map +1 -0
- package/dist/tools/best-practices/document-processing.d.ts +7 -0
- package/dist/tools/best-practices/document-processing.js +324 -0
- package/dist/tools/best-practices/document-processing.js.map +1 -0
- package/dist/tools/best-practices/enrichment.d.ts +7 -0
- package/dist/tools/best-practices/enrichment.js +271 -0
- package/dist/tools/best-practices/enrichment.js.map +1 -0
- package/dist/tools/best-practices/human-in-the-loop.d.ts +7 -0
- package/dist/tools/best-practices/human-in-the-loop.js +268 -0
- package/dist/tools/best-practices/human-in-the-loop.js.map +1 -0
- package/dist/tools/best-practices/index.js +7 -6
- package/dist/tools/best-practices/index.js.map +1 -1
- package/dist/tools/best-practices/knowledge-base.d.ts +7 -0
- package/dist/tools/best-practices/knowledge-base.js +268 -0
- package/dist/tools/best-practices/knowledge-base.js.map +1 -0
- package/dist/tools/best-practices/monitoring.d.ts +7 -0
- package/dist/tools/best-practices/monitoring.js +178 -0
- package/dist/tools/best-practices/monitoring.js.map +1 -0
- package/dist/tools/best-practices/notification.d.ts +7 -0
- package/dist/tools/best-practices/notification.js +229 -0
- package/dist/tools/best-practices/notification.js.map +1 -0
- package/dist/tools/best-practices/scheduling.d.ts +7 -0
- package/dist/tools/best-practices/scheduling.js +281 -0
- package/dist/tools/best-practices/scheduling.js.map +1 -0
- package/dist/tools/best-practices/triage.d.ts +7 -0
- package/dist/tools/best-practices/triage.js +211 -0
- package/dist/tools/best-practices/triage.js.map +1 -0
- package/dist/tools/categorize-prompt.tool.js +1 -0
- package/dist/tools/categorize-prompt.tool.js.map +1 -1
- package/dist/tools/helpers/response.js +2 -0
- package/dist/tools/helpers/response.js.map +1 -1
- package/dist/tools/prompts/main-agent.prompt.js +9 -1
- package/dist/tools/prompts/main-agent.prompt.js.map +1 -1
- package/dist/tools/validate-workflow.tool.js +12 -0
- package/dist/tools/validate-workflow.tool.js.map +1 -1
- package/dist/utils/tool-executor.js +19 -0
- package/dist/utils/tool-executor.js.map +1 -1
- package/dist/validation/checks/agent-prompt.js +2 -0
- package/dist/validation/checks/agent-prompt.js.map +1 -1
- package/dist/validation/checks/connections.js +8 -0
- package/dist/validation/checks/connections.js.map +1 -1
- package/dist/validation/checks/from-ai.js +1 -0
- package/dist/validation/checks/from-ai.js.map +1 -1
- package/dist/validation/checks/tools.js +2 -0
- package/dist/validation/checks/tools.js.map +1 -1
- package/dist/validation/checks/trigger.js +2 -0
- package/dist/validation/checks/trigger.js.map +1 -1
- package/dist/validation/types.d.ts +4 -0
- package/dist/validation/types.js +18 -0
- package/dist/validation/types.js.map +1 -1
- package/dist/workflow-builder-agent.d.ts +5 -2
- package/dist/workflow-builder-agent.js +4 -3
- package/dist/workflow-builder-agent.js.map +1 -1
- package/dist/workflow-state.d.ts +3 -1
- package/dist/workflow-state.js +8 -0
- package/dist/workflow-state.js.map +1 -1
- package/package.json +11 -7
|
@@ -1,16 +1,19 @@
|
|
|
1
1
|
import { Logger } from '@n8n/backend-common';
|
|
2
2
|
import { AiAssistantClient, AiAssistantSDK } from '@n8n_io/ai-assistant-sdk';
|
|
3
|
-
import type { IUser, INodeTypeDescription } from 'n8n-workflow';
|
|
3
|
+
import type { IUser, INodeTypeDescription, ITelemetryTrackProperties } from 'n8n-workflow';
|
|
4
4
|
import { type ChatPayload } from './workflow-builder-agent';
|
|
5
5
|
type OnCreditsUpdated = (userId: string, creditsQuota: number, creditsClaimed: number) => void;
|
|
6
|
+
type OnTelemetryEvent = (event: string, properties: ITelemetryTrackProperties) => void;
|
|
6
7
|
export declare class AiWorkflowBuilderService {
|
|
7
8
|
private readonly client?;
|
|
8
9
|
private readonly logger?;
|
|
10
|
+
private readonly instanceId?;
|
|
9
11
|
private readonly instanceUrl?;
|
|
10
12
|
private readonly onCreditsUpdated?;
|
|
13
|
+
private readonly onTelemetryEvent?;
|
|
11
14
|
private readonly parsedNodeTypes;
|
|
12
15
|
private sessionManager;
|
|
13
|
-
constructor(parsedNodeTypes: INodeTypeDescription[], client?: AiAssistantClient | undefined, logger?: Logger | undefined, instanceUrl?: string | undefined, onCreditsUpdated?: OnCreditsUpdated | undefined);
|
|
16
|
+
constructor(parsedNodeTypes: INodeTypeDescription[], client?: AiAssistantClient | undefined, logger?: Logger | undefined, instanceId?: string | undefined, instanceUrl?: string | undefined, onCreditsUpdated?: OnCreditsUpdated | undefined, onTelemetryEvent?: OnTelemetryEvent | undefined);
|
|
14
17
|
private static getAnthropicClaudeModel;
|
|
15
18
|
private getApiProxyAuthHeaders;
|
|
16
19
|
private setupModels;
|
|
@@ -18,6 +21,7 @@ export declare class AiWorkflowBuilderService {
|
|
|
18
21
|
private getAgent;
|
|
19
22
|
private onGenerationSuccess;
|
|
20
23
|
chat(payload: ChatPayload, user: IUser, abortSignal?: AbortSignal): AsyncGenerator<import("./types").StreamOutput, void, unknown>;
|
|
24
|
+
private trackBuilderReplyTelemetry;
|
|
21
25
|
getSessions(workflowId: string | undefined, user?: IUser): Promise<{
|
|
22
26
|
sessions: import("./types/sessions").Session[];
|
|
23
27
|
}>;
|
|
@@ -14,6 +14,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
14
14
|
var AiWorkflowBuilderService_1;
|
|
15
15
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
16
16
|
exports.AiWorkflowBuilderService = void 0;
|
|
17
|
+
const messages_1 = require("@langchain/core/messages");
|
|
17
18
|
const tracer_langchain_1 = require("@langchain/core/tracers/tracer_langchain");
|
|
18
19
|
const backend_common_1 = require("@n8n/backend-common");
|
|
19
20
|
const di_1 = require("@n8n/di");
|
|
@@ -27,15 +28,19 @@ const workflow_builder_agent_1 = require("./workflow-builder-agent");
|
|
|
27
28
|
let AiWorkflowBuilderService = AiWorkflowBuilderService_1 = class AiWorkflowBuilderService {
|
|
28
29
|
client;
|
|
29
30
|
logger;
|
|
31
|
+
instanceId;
|
|
30
32
|
instanceUrl;
|
|
31
33
|
onCreditsUpdated;
|
|
34
|
+
onTelemetryEvent;
|
|
32
35
|
parsedNodeTypes;
|
|
33
36
|
sessionManager;
|
|
34
|
-
constructor(parsedNodeTypes, client, logger, instanceUrl, onCreditsUpdated) {
|
|
37
|
+
constructor(parsedNodeTypes, client, logger, instanceId, instanceUrl, onCreditsUpdated, onTelemetryEvent) {
|
|
35
38
|
this.client = client;
|
|
36
39
|
this.logger = logger;
|
|
40
|
+
this.instanceId = instanceId;
|
|
37
41
|
this.instanceUrl = instanceUrl;
|
|
38
42
|
this.onCreditsUpdated = onCreditsUpdated;
|
|
43
|
+
this.onTelemetryEvent = onTelemetryEvent;
|
|
39
44
|
this.parsedNodeTypes = this.filterNodeTypes(parsedNodeTypes);
|
|
40
45
|
this.sessionManager = new session_manager_service_1.SessionManagerService(this.parsedNodeTypes, logger);
|
|
41
46
|
}
|
|
@@ -154,9 +159,46 @@ let AiWorkflowBuilderService = AiWorkflowBuilderService_1 = class AiWorkflowBuil
|
|
|
154
159
|
}
|
|
155
160
|
async *chat(payload, user, abortSignal) {
|
|
156
161
|
const agent = await this.getAgent(user);
|
|
157
|
-
|
|
162
|
+
const userId = user?.id?.toString();
|
|
163
|
+
const workflowId = payload.workflowContext?.currentWorkflow?.id;
|
|
164
|
+
for await (const output of agent.chat(payload, userId, abortSignal)) {
|
|
158
165
|
yield output;
|
|
159
166
|
}
|
|
167
|
+
if (this.onTelemetryEvent && userId) {
|
|
168
|
+
try {
|
|
169
|
+
await this.trackBuilderReplyTelemetry(agent, workflowId, userId);
|
|
170
|
+
}
|
|
171
|
+
catch (error) {
|
|
172
|
+
this.logger?.error('Failed to track builder reply telemetry', { error });
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
async trackBuilderReplyTelemetry(agent, workflowId, userId) {
|
|
177
|
+
if (!this.onTelemetryEvent)
|
|
178
|
+
return;
|
|
179
|
+
const state = await agent.getState(workflowId, userId);
|
|
180
|
+
const threadId = session_manager_service_1.SessionManagerService.generateThreadId(workflowId, userId);
|
|
181
|
+
const lastAiMessage = state.values.messages.findLast((m) => m instanceof messages_1.AIMessage);
|
|
182
|
+
const messageAi = typeof lastAiMessage?.content === 'string'
|
|
183
|
+
? lastAiMessage.content
|
|
184
|
+
: JSON.stringify(lastAiMessage?.content ?? '');
|
|
185
|
+
const toolMessages = state.values.messages.filter((m) => m instanceof messages_1.ToolMessage);
|
|
186
|
+
const toolsCalled = [
|
|
187
|
+
...new Set(toolMessages
|
|
188
|
+
.map((m) => m.name)
|
|
189
|
+
.filter((name) => name !== undefined)),
|
|
190
|
+
];
|
|
191
|
+
const properties = {
|
|
192
|
+
user_id: userId,
|
|
193
|
+
instance_id: this.instanceId,
|
|
194
|
+
workflow_id: workflowId,
|
|
195
|
+
sequence_id: threadId,
|
|
196
|
+
message_ai: messageAi,
|
|
197
|
+
tools_called: toolsCalled,
|
|
198
|
+
techniques_categories: state.values.techniqueCategories,
|
|
199
|
+
validations: state.values.validationHistory,
|
|
200
|
+
};
|
|
201
|
+
this.onTelemetryEvent('Builder replied to user message', properties);
|
|
160
202
|
}
|
|
161
203
|
async getSessions(workflowId, user) {
|
|
162
204
|
const userId = user?.id?.toString();
|
|
@@ -176,6 +218,6 @@ exports.AiWorkflowBuilderService = AiWorkflowBuilderService;
|
|
|
176
218
|
exports.AiWorkflowBuilderService = AiWorkflowBuilderService = AiWorkflowBuilderService_1 = __decorate([
|
|
177
219
|
(0, di_1.Service)(),
|
|
178
220
|
__metadata("design:paramtypes", [Array, ai_assistant_sdk_1.AiAssistantClient,
|
|
179
|
-
backend_common_1.Logger, String, Function])
|
|
221
|
+
backend_common_1.Logger, String, String, Function, Function])
|
|
180
222
|
], AiWorkflowBuilderService);
|
|
181
223
|
//# sourceMappingURL=ai-workflow-builder-agent.service.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ai-workflow-builder-agent.service.js","sourceRoot":"","sources":["../src/ai-workflow-builder-agent.service.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AACA,+EAA2E;AAC3E,wDAA6C;AAC7C,gCAAkC;AAClC,+DAA6E;AAC7E,oDAA4B;AAC5B,yCAAoD;AAGpD,qCAA2C;AAC3C,6CAAuD;AACvD,uEAAkE;AAClE,qEAAkF;
|
|
1
|
+
{"version":3,"file":"ai-workflow-builder-agent.service.js","sourceRoot":"","sources":["../src/ai-workflow-builder-agent.service.ts"],"names":[],"mappings":"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"}
|