mirror of
https://github.com/Abdulazizzn/n8n-enterprise-unlocked.git
synced 2025-12-18 10:31:15 +00:00
feat: AI Workflow Builder agent (no-changelog) (#17423)
Co-authored-by: cubic-dev-ai[bot] <191113872+cubic-dev-ai[bot]@users.noreply.github.com>
This commit is contained in:
162
packages/@n8n/ai-workflow-builder.ee/src/errors/index.ts
Normal file
162
packages/@n8n/ai-workflow-builder.ee/src/errors/index.ts
Normal file
@@ -0,0 +1,162 @@
|
||||
import { OperationalError, UnexpectedError } from 'n8n-workflow';
|
||||
import type { OperationalErrorOptions, UnexpectedErrorOptions } from 'n8n-workflow';
|
||||
|
||||
/**
|
||||
* Base error class for AI Workflow Builder specific errors
|
||||
*/
|
||||
export abstract class AiWorkflowBuilderError extends Error {
|
||||
constructor(message: string, options?: ErrorOptions) {
|
||||
super(message, options);
|
||||
this.name = this.constructor.name;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Error thrown when a node is not found in the workflow
|
||||
*/
|
||||
export class NodeNotFoundError extends OperationalError {
|
||||
constructor(nodeId: string, nodeType?: string, options?: OperationalErrorOptions) {
|
||||
super(`Node with ID "${nodeId}" not found in workflow`, {
|
||||
...options,
|
||||
tags: {
|
||||
...options?.tags,
|
||||
nodeId,
|
||||
nodeType,
|
||||
},
|
||||
shouldReport: false,
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Error thrown when a node type is not found in the available node types
|
||||
*/
|
||||
export class NodeTypeNotFoundError extends OperationalError {
|
||||
constructor(nodeType: string, options?: OperationalErrorOptions) {
|
||||
super(`Node type "${nodeType}" not found`, {
|
||||
...options,
|
||||
tags: {
|
||||
...options?.tags,
|
||||
nodeType,
|
||||
},
|
||||
shouldReport: false,
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Error thrown when there's an issue with node connections
|
||||
*/
|
||||
export class ConnectionError extends OperationalError {
|
||||
constructor(
|
||||
message: string,
|
||||
options?: OperationalErrorOptions & {
|
||||
fromNodeId?: string;
|
||||
toNodeId?: string;
|
||||
connectionType?: string;
|
||||
},
|
||||
) {
|
||||
super(message, {
|
||||
...options,
|
||||
tags: {
|
||||
...options?.tags,
|
||||
fromNodeId: options?.fromNodeId,
|
||||
toNodeId: options?.toNodeId,
|
||||
connectionType: options?.connectionType,
|
||||
},
|
||||
shouldReport: false,
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Error thrown when the LLM service fails
|
||||
*/
|
||||
export class LLMServiceError extends OperationalError {
|
||||
constructor(
|
||||
message: string,
|
||||
options?: OperationalErrorOptions & { llmModel?: string; statusCode?: number },
|
||||
) {
|
||||
super(message, {
|
||||
...options,
|
||||
tags: {
|
||||
...options?.tags,
|
||||
llmModel: options?.llmModel,
|
||||
statusCode: options?.statusCode,
|
||||
},
|
||||
shouldReport: true,
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Error thrown when validation fails
|
||||
*/
|
||||
export class ValidationError extends OperationalError {
|
||||
constructor(
|
||||
message: string,
|
||||
options?: OperationalErrorOptions & { field?: string; value?: unknown },
|
||||
) {
|
||||
super(message, {
|
||||
...options,
|
||||
tags: {
|
||||
...options?.tags,
|
||||
field: options?.field,
|
||||
},
|
||||
extra: {
|
||||
...options?.extra,
|
||||
value: options?.value,
|
||||
},
|
||||
shouldReport: false,
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Error thrown when parameter update fails
|
||||
*/
|
||||
export class ParameterUpdateError extends OperationalError {
|
||||
constructor(
|
||||
message: string,
|
||||
options?: OperationalErrorOptions & { nodeId?: string; nodeType: string; parameter?: string },
|
||||
) {
|
||||
super(message, {
|
||||
...options,
|
||||
tags: {
|
||||
...options?.tags,
|
||||
nodeId: options?.nodeId,
|
||||
nodeType: options?.nodeType,
|
||||
parameter: options?.parameter,
|
||||
},
|
||||
shouldReport: false,
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Error thrown when workflow state is invalid
|
||||
*/
|
||||
export class WorkflowStateError extends UnexpectedError {
|
||||
constructor(message: string, options?: UnexpectedErrorOptions) {
|
||||
super(message, {
|
||||
...options,
|
||||
shouldReport: true,
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Error thrown when tool execution fails unexpectedly
|
||||
*/
|
||||
export class ToolExecutionError extends UnexpectedError {
|
||||
constructor(message: string, options?: UnexpectedErrorOptions & { toolName?: string }) {
|
||||
super(message, {
|
||||
...options,
|
||||
shouldReport: true,
|
||||
tags: {
|
||||
...options?.tags,
|
||||
toolName: options?.toolName,
|
||||
},
|
||||
});
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user