From 299bad2b26f79d89c7ea273b5cc5e6a156c50afa Mon Sep 17 00:00:00 2001 From: Bharat Pasupula Date: Fri, 20 Sep 2024 15:23:04 +0200 Subject: [PATCH 01/12] Add Error handling framework --- .../server/lib/errors/index.ts | 17 +++++++++++++ .../lib/errors/recursion_limit_error.ts | 24 ++++++++++++++++++ .../server/lib/errors/types.ts | 17 +++++++++++++ .../server/lib/errors/unsupported_error.ts | 25 +++++++++++++++++++ .../server/routes/analyze_logs_routes.ts | 9 ++++--- 5 files changed, 88 insertions(+), 4 deletions(-) create mode 100644 x-pack/plugins/integration_assistant/server/lib/errors/index.ts create mode 100644 x-pack/plugins/integration_assistant/server/lib/errors/recursion_limit_error.ts create mode 100644 x-pack/plugins/integration_assistant/server/lib/errors/types.ts create mode 100644 x-pack/plugins/integration_assistant/server/lib/errors/unsupported_error.ts diff --git a/x-pack/plugins/integration_assistant/server/lib/errors/index.ts b/x-pack/plugins/integration_assistant/server/lib/errors/index.ts new file mode 100644 index 00000000000000..ae3b0093340333 --- /dev/null +++ b/x-pack/plugins/integration_assistant/server/lib/errors/index.ts @@ -0,0 +1,17 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { ErrorThatHandlesItsOwnResponse } from './types'; + +export function isErrorThatHandlesItsOwnResponse( + e: ErrorThatHandlesItsOwnResponse +): e is ErrorThatHandlesItsOwnResponse { + return typeof (e as ErrorThatHandlesItsOwnResponse).sendResponse === 'function'; +} + +export { RecursionLimitError } from './recursion_limit_error'; +export { UnsupportedLogFormatError } from './unsupported_error'; diff --git a/x-pack/plugins/integration_assistant/server/lib/errors/recursion_limit_error.ts b/x-pack/plugins/integration_assistant/server/lib/errors/recursion_limit_error.ts new file mode 100644 index 00000000000000..794ba871266695 --- /dev/null +++ b/x-pack/plugins/integration_assistant/server/lib/errors/recursion_limit_error.ts @@ -0,0 +1,24 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { KibanaResponseFactory } from '@kbn/core/server'; +import { ErrorCode, ErrorThatHandlesItsOwnResponse } from './types'; + +export class RecursionLimitError extends Error implements ErrorThatHandlesItsOwnResponse { + private readonly errorCode: ErrorCode = ErrorCode.RECURSION_LIMIT; + + // eslint-disable-next-line @typescript-eslint/no-useless-constructor + constructor(message: string) { + super(message); + } + + public sendResponse(res: KibanaResponseFactory) { + return res.badRequest({ + body: { message: this.message, attributes: { errorCode: this.errorCode } }, + }); + } +} diff --git a/x-pack/plugins/integration_assistant/server/lib/errors/types.ts b/x-pack/plugins/integration_assistant/server/lib/errors/types.ts new file mode 100644 index 00000000000000..f272b37834448f --- /dev/null +++ b/x-pack/plugins/integration_assistant/server/lib/errors/types.ts @@ -0,0 +1,17 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { KibanaResponseFactory, IKibanaResponse } from '@kbn/core/server'; + +export interface ErrorThatHandlesItsOwnResponse extends Error { + sendResponse(res: KibanaResponseFactory): IKibanaResponse; +} + +export enum ErrorCode { + RECURSION_LIMIT = 'recursion-limit-reached', + UNSUPPORTED_LOG_FORMAT = 'unsupported-log-format', +} diff --git a/x-pack/plugins/integration_assistant/server/lib/errors/unsupported_error.ts b/x-pack/plugins/integration_assistant/server/lib/errors/unsupported_error.ts new file mode 100644 index 00000000000000..17f433bc4243d1 --- /dev/null +++ b/x-pack/plugins/integration_assistant/server/lib/errors/unsupported_error.ts @@ -0,0 +1,25 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { KibanaResponseFactory } from '@kbn/core/server'; +import { ErrorCode, ErrorThatHandlesItsOwnResponse } from './types'; + +export class UnsupportedLogFormatError extends Error implements ErrorThatHandlesItsOwnResponse { + private readonly errorCode: ErrorCode = ErrorCode.UNSUPPORTED_LOG_FORMAT; + + // eslint-disable-next-line @typescript-eslint/no-useless-constructor + constructor(message: string) { + super(message); + } + + public sendResponse(res: KibanaResponseFactory) { + return res.customError({ + statusCode: 501, + body: { message: this.message, attributes: { errorCode: this.errorCode } }, + }); + } +} diff --git a/x-pack/plugins/integration_assistant/server/routes/analyze_logs_routes.ts b/x-pack/plugins/integration_assistant/server/routes/analyze_logs_routes.ts index 29a68c4395a7cd..a64374ae07be8c 100644 --- a/x-pack/plugins/integration_assistant/server/routes/analyze_logs_routes.ts +++ b/x-pack/plugins/integration_assistant/server/routes/analyze_logs_routes.ts @@ -16,6 +16,7 @@ import type { IntegrationAssistantRouteHandlerContext } from '../plugin'; import { getLLMClass, getLLMType } from '../util/llm'; import { buildRouteValidationWithZod } from '../util/route_validation'; import { withAvailability } from './with_availability'; +import { isErrorThatHandlesItsOwnResponse, UnsupportedLogFormatError } from '../lib/errors'; export function registerAnalyzeLogsRoutes( router: IRouter @@ -82,13 +83,13 @@ export function registerAnalyzeLogsRoutes( const graphResults = await graph.invoke(logFormatParameters, options); const graphLogFormat = graphResults.results.samplesFormat.name; if (graphLogFormat === 'unsupported' || graphLogFormat === 'csv') { - return res.customError({ - statusCode: 501, - body: { message: `Unsupported log samples format` }, - }); + throw new UnsupportedLogFormatError('Unsupported log format in the samples'); } return res.ok({ body: AnalyzeLogsResponse.parse(graphResults) }); } catch (e) { + if (isErrorThatHandlesItsOwnResponse(e)) { + return e.sendResponse(res); + } return res.badRequest({ body: e }); } }) From 7bccc451aed984cc59ffa16c8d9acda97d86c3b8 Mon Sep 17 00:00:00 2001 From: Bharat Pasupula Date: Mon, 23 Sep 2024 15:58:11 +0200 Subject: [PATCH 02/12] Catch GraphRecursion error to pass meaningful message to UI --- .../graphs/categorization/categorization.ts | 25 +++++++++++----- .../server/graphs/categorization/errors.ts | 26 +++++++++++----- .../server/graphs/categorization/invalid.ts | 24 ++++++++++----- .../server/graphs/categorization/review.ts | 30 ++++++++++++------- .../server/graphs/ecs/duplicates.ts | 24 +++++++++++---- .../server/graphs/ecs/invalid.ts | 25 +++++++++++----- .../server/graphs/ecs/mapping.ts | 25 +++++++++++----- .../server/graphs/ecs/missing.ts | 27 +++++++++++------ .../server/graphs/kv/header.ts | 19 +++++++++--- .../server/graphs/kv/kv.ts | 19 +++++++++--- .../graphs/log_type_detection/detection.ts | 20 +++++++++---- .../server/graphs/related/errors.ts | 28 +++++++++++------ .../server/graphs/related/related.ts | 23 +++++++++----- .../server/graphs/related/review.ts | 25 +++++++++++----- .../server/graphs/unstructured/error.ts | 22 ++++++++++---- .../graphs/unstructured/unstructured.ts | 19 +++++++++--- .../server/routes/build_integration_routes.ts | 4 +++ .../server/routes/categorization_routes.ts | 4 +++ .../server/routes/ecs_routes.ts | 4 +++ .../server/routes/pipeline_routes.ts | 4 +++ .../server/routes/related_routes.ts | 4 +++ 21 files changed, 293 insertions(+), 108 deletions(-) diff --git a/x-pack/plugins/integration_assistant/server/graphs/categorization/categorization.ts b/x-pack/plugins/integration_assistant/server/graphs/categorization/categorization.ts index 5dcc55d4f0975c..5c83b799979e93 100644 --- a/x-pack/plugins/integration_assistant/server/graphs/categorization/categorization.ts +++ b/x-pack/plugins/integration_assistant/server/graphs/categorization/categorization.ts @@ -5,12 +5,14 @@ * 2.0. */ import { JsonOutputParser } from '@langchain/core/output_parsers'; +import { GraphRecursionError } from '@langchain/langgraph'; import type { Pipeline } from '../../../common'; import type { CategorizationState, SimplifiedProcessor, SimplifiedProcessors } from '../../types'; import { combineProcessors } from '../../util/processors'; import { CATEGORIZATION_EXAMPLE_PROCESSORS } from './constants'; import { CATEGORIZATION_MAIN_PROMPT } from './prompts'; import type { CategorizationNodeParams } from './types'; +import { RecursionLimitError } from '../../lib/errors'; export async function handleCategorization({ state, @@ -19,13 +21,22 @@ export async function handleCategorization({ const categorizationMainPrompt = CATEGORIZATION_MAIN_PROMPT; const outputParser = new JsonOutputParser(); const categorizationMainGraph = categorizationMainPrompt.pipe(model).pipe(outputParser); - const currentProcessors = (await categorizationMainGraph.invoke({ - pipeline_results: JSON.stringify(state.pipelineResults, null, 2), - example_processors: CATEGORIZATION_EXAMPLE_PROCESSORS, - ex_answer: state?.exAnswer, - ecs_categories: state?.ecsCategories, - ecs_types: state?.ecsTypes, - })) as SimplifiedProcessor[]; + let currentProcessors: SimplifiedProcessor[] = []; + try { + currentProcessors = (await categorizationMainGraph.invoke({ + pipeline_results: JSON.stringify(state.pipelineResults, null, 2), + example_processors: CATEGORIZATION_EXAMPLE_PROCESSORS, + ex_answer: state?.exAnswer, + ecs_categories: state?.ecsCategories, + ecs_types: state?.ecsTypes, + })) as SimplifiedProcessor[]; + } catch (e) { + if (e instanceof GraphRecursionError) { + throw new RecursionLimitError(e.message); + } else { + throw e; + } + } const processors = { type: 'categorization', diff --git a/x-pack/plugins/integration_assistant/server/graphs/categorization/errors.ts b/x-pack/plugins/integration_assistant/server/graphs/categorization/errors.ts index 789673af0ff286..417fbdeaec5b07 100644 --- a/x-pack/plugins/integration_assistant/server/graphs/categorization/errors.ts +++ b/x-pack/plugins/integration_assistant/server/graphs/categorization/errors.ts @@ -6,11 +6,13 @@ */ import { JsonOutputParser } from '@langchain/core/output_parsers'; +import { GraphRecursionError } from '@langchain/langgraph'; import type { Pipeline } from '../../../common'; import type { CategorizationNodeParams } from './types'; import type { SimplifiedProcessors, SimplifiedProcessor, CategorizationState } from '../../types'; import { combineProcessors } from '../../util/processors'; import { CATEGORIZATION_ERROR_PROMPT } from './prompts'; +import { RecursionLimitError } from '../../lib/errors'; export async function handleErrors({ state, @@ -20,15 +22,23 @@ export async function handleErrors({ const outputParser = new JsonOutputParser(); const categorizationErrorGraph = categorizationErrorPrompt.pipe(model).pipe(outputParser); + let currentProcessors: SimplifiedProcessor[] = []; - const currentProcessors = (await categorizationErrorGraph.invoke({ - current_processors: JSON.stringify(state.currentProcessors, null, 2), - ex_answer: state.exAnswer, - errors: JSON.stringify(state.errors, null, 2), - package_name: state.packageName, - data_stream_name: state.dataStreamName, - })) as SimplifiedProcessor[]; - + try { + currentProcessors = (await categorizationErrorGraph.invoke({ + current_processors: JSON.stringify(state.currentProcessors, null, 2), + ex_answer: state.exAnswer, + errors: JSON.stringify(state.errors, null, 2), + package_name: state.packageName, + data_stream_name: state.dataStreamName, + })) as SimplifiedProcessor[]; + } catch (e) { + if (e instanceof GraphRecursionError) { + throw new RecursionLimitError(e.message); + } else { + throw e; + } + } const processors = { type: 'categorization', processors: currentProcessors, diff --git a/x-pack/plugins/integration_assistant/server/graphs/categorization/invalid.ts b/x-pack/plugins/integration_assistant/server/graphs/categorization/invalid.ts index 62f7f3101ba9a6..c2322dbb66b264 100644 --- a/x-pack/plugins/integration_assistant/server/graphs/categorization/invalid.ts +++ b/x-pack/plugins/integration_assistant/server/graphs/categorization/invalid.ts @@ -6,12 +6,14 @@ */ import { JsonOutputParser } from '@langchain/core/output_parsers'; +import { GraphRecursionError } from '@langchain/langgraph'; import type { Pipeline } from '../../../common'; import type { CategorizationNodeParams } from './types'; import type { SimplifiedProcessors, SimplifiedProcessor, CategorizationState } from '../../types'; import { combineProcessors } from '../../util/processors'; import { ECS_EVENT_TYPES_PER_CATEGORY } from './constants'; import { CATEGORIZATION_VALIDATION_PROMPT } from './prompts'; +import { RecursionLimitError } from '../../lib/errors'; export async function handleInvalidCategorization({ state, @@ -21,14 +23,22 @@ export async function handleInvalidCategorization({ const outputParser = new JsonOutputParser(); const categorizationInvalidGraph = categorizationInvalidPrompt.pipe(model).pipe(outputParser); + let currentProcessors: SimplifiedProcessor[] = []; - const currentProcessors = (await categorizationInvalidGraph.invoke({ - current_processors: JSON.stringify(state.currentProcessors, null, 2), - invalid_categorization: JSON.stringify(state.invalidCategorization, null, 2), - ex_answer: state.exAnswer, - compatible_types: JSON.stringify(ECS_EVENT_TYPES_PER_CATEGORY, null, 2), - })) as SimplifiedProcessor[]; - + try { + currentProcessors = (await categorizationInvalidGraph.invoke({ + current_processors: JSON.stringify(state.currentProcessors, null, 2), + invalid_categorization: JSON.stringify(state.invalidCategorization, null, 2), + ex_answer: state.exAnswer, + compatible_types: JSON.stringify(ECS_EVENT_TYPES_PER_CATEGORY, null, 2), + })) as SimplifiedProcessor[]; + } catch (e) { + if (e instanceof GraphRecursionError) { + throw new RecursionLimitError(e.message); + } else { + throw e; + } + } const processors = { type: 'categorization', processors: currentProcessors, diff --git a/x-pack/plugins/integration_assistant/server/graphs/categorization/review.ts b/x-pack/plugins/integration_assistant/server/graphs/categorization/review.ts index 19b8180ce33e57..464b1ac27da5a1 100644 --- a/x-pack/plugins/integration_assistant/server/graphs/categorization/review.ts +++ b/x-pack/plugins/integration_assistant/server/graphs/categorization/review.ts @@ -6,12 +6,14 @@ */ import { JsonOutputParser } from '@langchain/core/output_parsers'; +import { GraphRecursionError } from '@langchain/langgraph'; import { CATEGORIZATION_REVIEW_PROMPT } from './prompts'; import type { Pipeline } from '../../../common'; import type { CategorizationNodeParams } from './types'; import type { SimplifiedProcessors, SimplifiedProcessor, CategorizationState } from '../../types'; import { combineProcessors } from '../../util/processors'; import { ECS_EVENT_TYPES_PER_CATEGORY } from './constants'; +import { RecursionLimitError } from '../../lib/errors'; export async function handleReview({ state, @@ -20,17 +22,25 @@ export async function handleReview({ const categorizationReviewPrompt = CATEGORIZATION_REVIEW_PROMPT; const outputParser = new JsonOutputParser(); const categorizationReview = categorizationReviewPrompt.pipe(model).pipe(outputParser); + let currentProcessors: SimplifiedProcessor[] = []; - const currentProcessors = (await categorizationReview.invoke({ - current_processors: JSON.stringify(state.currentProcessors, null, 2), - pipeline_results: JSON.stringify(state.pipelineResults, null, 2), - previous_invalid_categorization: state.previousInvalidCategorization, - previous_error: state.previousError, - ex_answer: state?.exAnswer, - package_name: state?.packageName, - compatibility_matrix: JSON.stringify(ECS_EVENT_TYPES_PER_CATEGORY, null, 2), - })) as SimplifiedProcessor[]; - + try { + currentProcessors = (await categorizationReview.invoke({ + current_processors: JSON.stringify(state.currentProcessors, null, 2), + pipeline_results: JSON.stringify(state.pipelineResults, null, 2), + previous_invalid_categorization: state.previousInvalidCategorization, + previous_error: state.previousError, + ex_answer: state?.exAnswer, + package_name: state?.packageName, + compatibility_matrix: JSON.stringify(ECS_EVENT_TYPES_PER_CATEGORY, null, 2), + })) as SimplifiedProcessor[]; + } catch (e) { + if (e instanceof GraphRecursionError) { + throw new RecursionLimitError(e.message); + } else { + throw e; + } + } const processors = { type: 'categorization', processors: currentProcessors, diff --git a/x-pack/plugins/integration_assistant/server/graphs/ecs/duplicates.ts b/x-pack/plugins/integration_assistant/server/graphs/ecs/duplicates.ts index 2d59bd1c241d56..29e735ad329ebf 100644 --- a/x-pack/plugins/integration_assistant/server/graphs/ecs/duplicates.ts +++ b/x-pack/plugins/integration_assistant/server/graphs/ecs/duplicates.ts @@ -6,9 +6,11 @@ */ import { JsonOutputParser } from '@langchain/core/output_parsers'; +import { GraphRecursionError } from '@langchain/langgraph'; import type { EcsMappingState } from '../../types'; import { ECS_DUPLICATES_PROMPT } from './prompts'; import type { EcsNodeParams } from './types'; +import { RecursionLimitError } from '../../lib/errors'; export async function handleDuplicates({ state, @@ -19,12 +21,22 @@ export async function handleDuplicates({ const usesFinalMapping = state?.useFinalMapping; const mapping = usesFinalMapping ? state.finalMapping : state.currentMapping; - const result = await ecsDuplicatesGraph.invoke({ - ecs: state.ecs, - current_mapping: JSON.stringify(mapping, null, 2), - ex_answer: state.exAnswer, - duplicate_fields: state.duplicateFields, - }); + let result; + + try { + result = await ecsDuplicatesGraph.invoke({ + ecs: state.ecs, + current_mapping: JSON.stringify(mapping, null, 2), + ex_answer: state.exAnswer, + duplicate_fields: state.duplicateFields, + }); + } catch (e) { + if (e instanceof GraphRecursionError) { + throw new RecursionLimitError(e.message); + } else { + throw e; + } + } return { [usesFinalMapping ? 'finalMapping' : 'currentMapping']: result, diff --git a/x-pack/plugins/integration_assistant/server/graphs/ecs/invalid.ts b/x-pack/plugins/integration_assistant/server/graphs/ecs/invalid.ts index 5440b5bc9b125f..a8aef37a303821 100644 --- a/x-pack/plugins/integration_assistant/server/graphs/ecs/invalid.ts +++ b/x-pack/plugins/integration_assistant/server/graphs/ecs/invalid.ts @@ -5,9 +5,11 @@ * 2.0. */ import { JsonOutputParser } from '@langchain/core/output_parsers'; +import { GraphRecursionError } from '@langchain/langgraph'; import type { EcsMappingState } from '../../types'; import { ECS_INVALID_PROMPT } from './prompts'; import type { EcsNodeParams } from './types'; +import { RecursionLimitError } from '../../lib/errors'; export async function handleInvalidEcs({ state, @@ -18,13 +20,22 @@ export async function handleInvalidEcs({ const usesFinalMapping = state?.useFinalMapping; const mapping = usesFinalMapping ? state.finalMapping : state.currentMapping; - const result = await ecsInvalidEcsGraph.invoke({ - ecs: state.ecs, - current_mapping: JSON.stringify(mapping, null, 2), - ex_answer: state.exAnswer, - combined_samples: state.combinedSamples, - invalid_ecs_fields: state.invalidEcsFields, - }); + let result; + try { + result = await ecsInvalidEcsGraph.invoke({ + ecs: state.ecs, + current_mapping: JSON.stringify(mapping, null, 2), + ex_answer: state.exAnswer, + combined_samples: state.combinedSamples, + invalid_ecs_fields: state.invalidEcsFields, + }); + } catch (e) { + if (e instanceof GraphRecursionError) { + throw new RecursionLimitError(e.message); + } else { + throw e; + } + } return { [usesFinalMapping ? 'finalMapping' : 'currentMapping']: result, diff --git a/x-pack/plugins/integration_assistant/server/graphs/ecs/mapping.ts b/x-pack/plugins/integration_assistant/server/graphs/ecs/mapping.ts index 1386881d379f4d..d5cba88c62c4f7 100644 --- a/x-pack/plugins/integration_assistant/server/graphs/ecs/mapping.ts +++ b/x-pack/plugins/integration_assistant/server/graphs/ecs/mapping.ts @@ -6,9 +6,11 @@ */ import { JsonOutputParser } from '@langchain/core/output_parsers'; +import { GraphRecursionError } from '@langchain/langgraph'; import type { EcsMappingState } from '../../types'; import { ECS_MAIN_PROMPT } from './prompts'; import type { EcsNodeParams } from './types'; +import { RecursionLimitError } from '../../lib/errors'; export async function handleEcsMapping({ state, @@ -16,13 +18,22 @@ export async function handleEcsMapping({ }: EcsNodeParams): Promise> { const outputParser = new JsonOutputParser(); const ecsMainGraph = ECS_MAIN_PROMPT.pipe(model).pipe(outputParser); + let currentMapping; - const currentMapping = await ecsMainGraph.invoke({ - ecs: state.ecs, - combined_samples: state.combinedSamples, - package_name: state.packageName, - data_stream_name: state.dataStreamName, - ex_answer: state.exAnswer, - }); + try { + currentMapping = await ecsMainGraph.invoke({ + ecs: state.ecs, + combined_samples: state.combinedSamples, + package_name: state.packageName, + data_stream_name: state.dataStreamName, + ex_answer: state.exAnswer, + }); + } catch (e) { + if (e instanceof GraphRecursionError) { + throw new RecursionLimitError(e.message); + } else { + throw e; + } + } return { currentMapping, hasTriedOnce: true, lastExecutedChain: 'ecsMapping' }; } diff --git a/x-pack/plugins/integration_assistant/server/graphs/ecs/missing.ts b/x-pack/plugins/integration_assistant/server/graphs/ecs/missing.ts index 0c22af98a41bce..a182e257ffe436 100644 --- a/x-pack/plugins/integration_assistant/server/graphs/ecs/missing.ts +++ b/x-pack/plugins/integration_assistant/server/graphs/ecs/missing.ts @@ -6,9 +6,11 @@ */ import { JsonOutputParser } from '@langchain/core/output_parsers'; +import { GraphRecursionError } from '@langchain/langgraph'; import { EcsMappingState } from '../../types'; import { ECS_MISSING_KEYS_PROMPT } from './prompts'; import { EcsNodeParams } from './types'; +import { RecursionLimitError } from '../../lib/errors'; export async function handleMissingKeys({ state, @@ -18,15 +20,22 @@ export async function handleMissingKeys({ const ecsMissingGraph = ECS_MISSING_KEYS_PROMPT.pipe(model).pipe(outputParser); const usesFinalMapping = state?.useFinalMapping; const mapping = usesFinalMapping ? state.finalMapping : state.currentMapping; - - const result = await ecsMissingGraph.invoke({ - ecs: state.ecs, - current_mapping: JSON.stringify(mapping, null, 2), - ex_answer: state.exAnswer, - combined_samples: state.combinedSamples, - missing_keys: state?.missingKeys, - }); - + let result; + try { + result = await ecsMissingGraph.invoke({ + ecs: state.ecs, + current_mapping: JSON.stringify(mapping, null, 2), + ex_answer: state.exAnswer, + combined_samples: state.combinedSamples, + missing_keys: state?.missingKeys, + }); + } catch (e) { + if (e instanceof GraphRecursionError) { + throw new RecursionLimitError(e.message); + } else { + throw e; + } + } return { [usesFinalMapping ? 'finalMapping' : 'currentMapping']: result, lastExecutedChain: 'missingKeys', diff --git a/x-pack/plugins/integration_assistant/server/graphs/kv/header.ts b/x-pack/plugins/integration_assistant/server/graphs/kv/header.ts index 36d8968ab9e675..7086ea3fd93629 100644 --- a/x-pack/plugins/integration_assistant/server/graphs/kv/header.ts +++ b/x-pack/plugins/integration_assistant/server/graphs/kv/header.ts @@ -6,10 +6,12 @@ */ import { JsonOutputParser } from '@langchain/core/output_parsers'; +import { GraphRecursionError } from '@langchain/langgraph'; import type { KVState } from '../../types'; import type { HandleKVNodeParams } from './types'; import { KV_HEADER_PROMPT } from './prompts'; import { KV_HEADER_EXAMPLE_ANSWER } from './constants'; +import { RecursionLimitError } from '../../lib/errors'; export async function handleHeader({ state, @@ -18,11 +20,20 @@ export async function handleHeader({ }: HandleKVNodeParams): Promise> { const outputParser = new JsonOutputParser(); const kvHeaderGraph = KV_HEADER_PROMPT.pipe(model).pipe(outputParser); + let pattern; - const pattern = await kvHeaderGraph.invoke({ - samples: state.logSamples, - ex_answer: JSON.stringify(KV_HEADER_EXAMPLE_ANSWER, null, 2), - }); + try { + pattern = await kvHeaderGraph.invoke({ + samples: state.logSamples, + ex_answer: JSON.stringify(KV_HEADER_EXAMPLE_ANSWER, null, 2), + }); + } catch (e) { + if (e instanceof GraphRecursionError) { + throw new RecursionLimitError(e.message); + } else { + throw e; + } + } return { grokPattern: pattern.grok_pattern, diff --git a/x-pack/plugins/integration_assistant/server/graphs/kv/kv.ts b/x-pack/plugins/integration_assistant/server/graphs/kv/kv.ts index 46820778e5a7df..60e7aa3b297cde 100644 --- a/x-pack/plugins/integration_assistant/server/graphs/kv/kv.ts +++ b/x-pack/plugins/integration_assistant/server/graphs/kv/kv.ts @@ -5,12 +5,14 @@ * 2.0. */ import { JsonOutputParser } from '@langchain/core/output_parsers'; +import { GraphRecursionError } from '@langchain/langgraph'; import type { KVState } from '../../types'; import { KV_MAIN_PROMPT } from './prompts'; import { KVProcessor } from '../../processor_types'; import { HandleKVNodeParams } from './types'; import { KV_EXAMPLE_ANSWER } from './constants'; import { createKVProcessor } from '../../util/processors'; +import { RecursionLimitError } from '../../lib/errors'; /** * Handles the KV processor node in the graph @@ -28,11 +30,20 @@ export async function handleKV({ // Pick logSamples if there was no header detected. const samples = state.header ? state.kvLogMessages : state.logSamples; + let kvInput: KVProcessor; - const kvInput = (await kvMainGraph.invoke({ - samples: samples[0], - ex_answer: JSON.stringify(KV_EXAMPLE_ANSWER, null, 2), - })) as KVProcessor; + try { + kvInput = (await kvMainGraph.invoke({ + samples: samples[0], + ex_answer: JSON.stringify(KV_EXAMPLE_ANSWER, null, 2), + })) as KVProcessor; + } catch (e) { + if (e instanceof GraphRecursionError) { + throw new RecursionLimitError(e.message); + } else { + throw e; + } + } const kvProcessor = createKVProcessor(kvInput, state); diff --git a/x-pack/plugins/integration_assistant/server/graphs/log_type_detection/detection.ts b/x-pack/plugins/integration_assistant/server/graphs/log_type_detection/detection.ts index 4920adb609967a..3ee19abbaa6d7e 100644 --- a/x-pack/plugins/integration_assistant/server/graphs/log_type_detection/detection.ts +++ b/x-pack/plugins/integration_assistant/server/graphs/log_type_detection/detection.ts @@ -5,9 +5,11 @@ * 2.0. */ import { JsonOutputParser } from '@langchain/core/output_parsers'; +import { GraphRecursionError } from '@langchain/langgraph'; import type { LogFormatDetectionState } from '../../types'; import { LOG_FORMAT_DETECTION_PROMPT } from './prompts'; import type { LogDetectionNodeParams } from './types'; +import { RecursionLimitError } from '../../lib/errors'; const MaxLogSamplesInPrompt = 5; @@ -22,12 +24,20 @@ export async function handleLogFormatDetection({ state.logSamples.length > MaxLogSamplesInPrompt ? state.logSamples.slice(0, MaxLogSamplesInPrompt) : state.logSamples; + let detectedLogFormatAnswer; - const detectedLogFormatAnswer = await logFormatDetectionNode.invoke({ - ex_answer: state.exAnswer, - log_samples: samples, - }); - + try { + detectedLogFormatAnswer = await logFormatDetectionNode.invoke({ + ex_answer: state.exAnswer, + log_samples: samples, + }); + } catch (e) { + if (e instanceof GraphRecursionError) { + throw new RecursionLimitError(e.message); + } else { + throw e; + } + } const logFormat = detectedLogFormatAnswer.log_type; const header = detectedLogFormatAnswer.header; diff --git a/x-pack/plugins/integration_assistant/server/graphs/related/errors.ts b/x-pack/plugins/integration_assistant/server/graphs/related/errors.ts index 5601c4b5f5e333..b894eba899de7a 100644 --- a/x-pack/plugins/integration_assistant/server/graphs/related/errors.ts +++ b/x-pack/plugins/integration_assistant/server/graphs/related/errors.ts @@ -6,12 +6,14 @@ */ import { JsonOutputParser } from '@langchain/core/output_parsers'; +import { GraphRecursionError } from '@langchain/langgraph'; import type { Pipeline } from '../../../common'; import type { RelatedState, SimplifiedProcessors, SimplifiedProcessor } from '../../types'; import type { RelatedNodeParams } from './types'; import { combineProcessors } from '../../util/processors'; import { RELATED_ERROR_PROMPT } from './prompts'; import { COMMON_ERRORS } from './constants'; +import { RecursionLimitError } from '../../lib/errors'; export async function handleErrors({ state, @@ -20,15 +22,23 @@ export async function handleErrors({ const relatedErrorPrompt = RELATED_ERROR_PROMPT; const outputParser = new JsonOutputParser(); const relatedErrorGraph = relatedErrorPrompt.pipe(model).pipe(outputParser); - - const currentProcessors = (await relatedErrorGraph.invoke({ - current_processors: JSON.stringify(state.currentProcessors, null, 2), - common_errors: JSON.stringify(COMMON_ERRORS, null, 2), - ex_answer: state.exAnswer, - errors: JSON.stringify(state.errors, null, 2), - package_name: state.packageName, - data_stream_name: state.dataStreamName, - })) as SimplifiedProcessor[]; + let currentProcessors: SimplifiedProcessor[] = []; + try { + currentProcessors = (await relatedErrorGraph.invoke({ + current_processors: JSON.stringify(state.currentProcessors, null, 2), + common_errors: JSON.stringify(COMMON_ERRORS, null, 2), + ex_answer: state.exAnswer, + errors: JSON.stringify(state.errors, null, 2), + package_name: state.packageName, + data_stream_name: state.dataStreamName, + })) as SimplifiedProcessor[]; + } catch (e) { + if (e instanceof GraphRecursionError) { + throw new RecursionLimitError(e.message); + } else { + throw e; + } + } const processors = { type: 'related', diff --git a/x-pack/plugins/integration_assistant/server/graphs/related/related.ts b/x-pack/plugins/integration_assistant/server/graphs/related/related.ts index 902427a1c484fa..fb2fea25e7ae19 100644 --- a/x-pack/plugins/integration_assistant/server/graphs/related/related.ts +++ b/x-pack/plugins/integration_assistant/server/graphs/related/related.ts @@ -6,11 +6,13 @@ */ import { JsonOutputParser } from '@langchain/core/output_parsers'; +import { GraphRecursionError } from '@langchain/langgraph'; import type { Pipeline } from '../../../common'; import type { RelatedState, SimplifiedProcessor, SimplifiedProcessors } from '../../types'; import { combineProcessors } from '../../util/processors'; import { RELATED_MAIN_PROMPT } from './prompts'; import type { RelatedNodeParams } from './types'; +import { RecursionLimitError } from '../../lib/errors'; export async function handleRelated({ state, @@ -19,13 +21,20 @@ export async function handleRelated({ const relatedMainPrompt = RELATED_MAIN_PROMPT; const outputParser = new JsonOutputParser(); const relatedMainGraph = relatedMainPrompt.pipe(model).pipe(outputParser); - - const currentProcessors = (await relatedMainGraph.invoke({ - pipeline_results: JSON.stringify(state.pipelineResults, null, 2), - ex_answer: state.exAnswer, - ecs: state.ecs, - })) as SimplifiedProcessor[]; - + let currentProcessors: SimplifiedProcessor[] = []; + try { + currentProcessors = (await relatedMainGraph.invoke({ + pipeline_results: JSON.stringify(state.pipelineResults, null, 2), + ex_answer: state.exAnswer, + ecs: state.ecs, + })) as SimplifiedProcessor[]; + } catch (e) { + if (e instanceof GraphRecursionError) { + throw new RecursionLimitError(e.message); + } else { + throw e; + } + } const processors = { type: 'related', processors: currentProcessors, diff --git a/x-pack/plugins/integration_assistant/server/graphs/related/review.ts b/x-pack/plugins/integration_assistant/server/graphs/related/review.ts index 300f33144b52ac..fb3bf4a9e4b374 100644 --- a/x-pack/plugins/integration_assistant/server/graphs/related/review.ts +++ b/x-pack/plugins/integration_assistant/server/graphs/related/review.ts @@ -6,11 +6,13 @@ */ import { JsonOutputParser } from '@langchain/core/output_parsers'; +import { GraphRecursionError } from '@langchain/langgraph'; import type { Pipeline } from '../../../common'; import type { RelatedState, SimplifiedProcessors, SimplifiedProcessor } from '../../types'; import type { RelatedNodeParams } from './types'; import { combineProcessors } from '../../util/processors'; import { RELATED_REVIEW_PROMPT } from './prompts'; +import { RecursionLimitError } from '../../lib/errors'; export async function handleReview({ state, @@ -19,14 +21,21 @@ export async function handleReview({ const relatedReviewPrompt = RELATED_REVIEW_PROMPT; const outputParser = new JsonOutputParser(); const relatedReviewGraph = relatedReviewPrompt.pipe(model).pipe(outputParser); - - const currentProcessors = (await relatedReviewGraph.invoke({ - current_processors: JSON.stringify(state.currentProcessors, null, 2), - ex_answer: state.exAnswer, - previous_error: state.previousError, - pipeline_results: JSON.stringify(state.pipelineResults, null, 2), - })) as SimplifiedProcessor[]; - + let currentProcessors: SimplifiedProcessor[] = []; + try { + currentProcessors = (await relatedReviewGraph.invoke({ + current_processors: JSON.stringify(state.currentProcessors, null, 2), + ex_answer: state.exAnswer, + previous_error: state.previousError, + pipeline_results: JSON.stringify(state.pipelineResults, null, 2), + })) as SimplifiedProcessor[]; + } catch (e) { + if (e instanceof GraphRecursionError) { + throw new RecursionLimitError(e.message); + } else { + throw e; + } + } const processors = { type: 'related', processors: currentProcessors, diff --git a/x-pack/plugins/integration_assistant/server/graphs/unstructured/error.ts b/x-pack/plugins/integration_assistant/server/graphs/unstructured/error.ts index d002dd19d54394..f88bfe05f9fe41 100644 --- a/x-pack/plugins/integration_assistant/server/graphs/unstructured/error.ts +++ b/x-pack/plugins/integration_assistant/server/graphs/unstructured/error.ts @@ -6,10 +6,12 @@ */ import { JsonOutputParser } from '@langchain/core/output_parsers'; +import { GraphRecursionError } from '@langchain/langgraph'; import type { UnstructuredLogState } from '../../types'; import type { HandleUnstructuredNodeParams } from './types'; import { GROK_ERROR_PROMPT } from './prompts'; import { GROK_ERROR_EXAMPLE_ANSWER } from './constants'; +import { RecursionLimitError } from '../../lib/errors'; export async function handleUnstructuredError({ state, @@ -18,12 +20,20 @@ export async function handleUnstructuredError({ const outputParser = new JsonOutputParser(); const grokErrorGraph = GROK_ERROR_PROMPT.pipe(model).pipe(outputParser); const currentPatterns = state.grokPatterns; - - const pattern = await grokErrorGraph.invoke({ - current_pattern: JSON.stringify(currentPatterns, null, 2), - errors: JSON.stringify(state.errors, null, 2), - ex_answer: JSON.stringify(GROK_ERROR_EXAMPLE_ANSWER, null, 2), - }); + let pattern; + try { + pattern = await grokErrorGraph.invoke({ + current_pattern: JSON.stringify(currentPatterns, null, 2), + errors: JSON.stringify(state.errors, null, 2), + ex_answer: JSON.stringify(GROK_ERROR_EXAMPLE_ANSWER, null, 2), + }); + } catch (e) { + if (e instanceof GraphRecursionError) { + throw new RecursionLimitError(e.message); + } else { + throw e; + } + } return { grokPatterns: pattern.grok_patterns, diff --git a/x-pack/plugins/integration_assistant/server/graphs/unstructured/unstructured.ts b/x-pack/plugins/integration_assistant/server/graphs/unstructured/unstructured.ts index 42186e796275fd..aaa0bfe90030e7 100644 --- a/x-pack/plugins/integration_assistant/server/graphs/unstructured/unstructured.ts +++ b/x-pack/plugins/integration_assistant/server/graphs/unstructured/unstructured.ts @@ -5,10 +5,12 @@ * 2.0. */ import { JsonOutputParser } from '@langchain/core/output_parsers'; +import { GraphRecursionError } from '@langchain/langgraph'; import type { UnstructuredLogState } from '../../types'; import { GROK_MAIN_PROMPT } from './prompts'; import { GrokResult, HandleUnstructuredNodeParams } from './types'; import { GROK_EXAMPLE_ANSWER } from './constants'; +import { RecursionLimitError } from '../../lib/errors'; export async function handleUnstructured({ state, @@ -19,11 +21,20 @@ export async function handleUnstructured({ // Pick logSamples if there was no header detected. const samples = state.logSamples; + let pattern: GrokResult; - const pattern = (await grokMainGraph.invoke({ - samples: samples[0], - ex_answer: JSON.stringify(GROK_EXAMPLE_ANSWER, null, 2), - })) as GrokResult; + try { + pattern = (await grokMainGraph.invoke({ + samples: samples[0], + ex_answer: JSON.stringify(GROK_EXAMPLE_ANSWER, null, 2), + })) as GrokResult; + } catch (e) { + if (e instanceof GraphRecursionError) { + throw new RecursionLimitError(e.message); + } else { + throw e; + } + } return { grokPatterns: pattern.grok_patterns, diff --git a/x-pack/plugins/integration_assistant/server/routes/build_integration_routes.ts b/x-pack/plugins/integration_assistant/server/routes/build_integration_routes.ts index d4b4424f5c8448..efaf01ea06cd00 100644 --- a/x-pack/plugins/integration_assistant/server/routes/build_integration_routes.ts +++ b/x-pack/plugins/integration_assistant/server/routes/build_integration_routes.ts @@ -11,6 +11,7 @@ import { buildPackage } from '../integration_builder'; import type { IntegrationAssistantRouteHandlerContext } from '../plugin'; import { buildRouteValidationWithZod } from '../util/route_validation'; import { withAvailability } from './with_availability'; +import { isErrorThatHandlesItsOwnResponse } from '../lib/errors'; export function registerIntegrationBuilderRoutes( router: IRouter @@ -39,6 +40,9 @@ export function registerIntegrationBuilderRoutes( headers: { 'Content-Type': 'application/zip' }, }); } catch (e) { + if (isErrorThatHandlesItsOwnResponse(e)) { + return e.sendResponse(response); + } return response.customError({ statusCode: 500, body: e }); } }) diff --git a/x-pack/plugins/integration_assistant/server/routes/categorization_routes.ts b/x-pack/plugins/integration_assistant/server/routes/categorization_routes.ts index c6a3cb5d1682a0..32dc9645bd82dc 100644 --- a/x-pack/plugins/integration_assistant/server/routes/categorization_routes.ts +++ b/x-pack/plugins/integration_assistant/server/routes/categorization_routes.ts @@ -20,6 +20,7 @@ import type { IntegrationAssistantRouteHandlerContext } from '../plugin'; import { getLLMClass, getLLMType } from '../util/llm'; import { buildRouteValidationWithZod } from '../util/route_validation'; import { withAvailability } from './with_availability'; +import { isErrorThatHandlesItsOwnResponse } from '../lib/errors'; export function registerCategorizationRoutes( router: IRouter @@ -99,6 +100,9 @@ export function registerCategorizationRoutes( return res.ok({ body: CategorizationResponse.parse(results) }); } catch (e) { + if (isErrorThatHandlesItsOwnResponse(e)) { + return e.sendResponse(res); + } return res.badRequest({ body: e }); } } diff --git a/x-pack/plugins/integration_assistant/server/routes/ecs_routes.ts b/x-pack/plugins/integration_assistant/server/routes/ecs_routes.ts index 34a9fa5106654c..a4997ae7f341bc 100644 --- a/x-pack/plugins/integration_assistant/server/routes/ecs_routes.ts +++ b/x-pack/plugins/integration_assistant/server/routes/ecs_routes.ts @@ -16,6 +16,7 @@ import type { IntegrationAssistantRouteHandlerContext } from '../plugin'; import { getLLMClass, getLLMType } from '../util/llm'; import { buildRouteValidationWithZod } from '../util/route_validation'; import { withAvailability } from './with_availability'; +import { isErrorThatHandlesItsOwnResponse } from '../lib/errors'; export function registerEcsRoutes(router: IRouter) { router.versioned @@ -93,6 +94,9 @@ export function registerEcsRoutes(router: IRouter) { router.versioned @@ -47,6 +48,9 @@ export function registerPipelineRoutes(router: IRouter) { router.versioned @@ -90,6 +91,9 @@ export function registerRelatedRoutes(router: IRouter Date: Mon, 23 Sep 2024 16:00:55 +0200 Subject: [PATCH 03/12] add recursion limit message --- .../server/lib/errors/recursion_limit_error.ts | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/x-pack/plugins/integration_assistant/server/lib/errors/recursion_limit_error.ts b/x-pack/plugins/integration_assistant/server/lib/errors/recursion_limit_error.ts index 794ba871266695..84bb95a39582c8 100644 --- a/x-pack/plugins/integration_assistant/server/lib/errors/recursion_limit_error.ts +++ b/x-pack/plugins/integration_assistant/server/lib/errors/recursion_limit_error.ts @@ -8,6 +8,8 @@ import { KibanaResponseFactory } from '@kbn/core/server'; import { ErrorCode, ErrorThatHandlesItsOwnResponse } from './types'; +const RECURSION_LIMIT_ERROR = 'Recursion limit reached.'; + export class RecursionLimitError extends Error implements ErrorThatHandlesItsOwnResponse { private readonly errorCode: ErrorCode = ErrorCode.RECURSION_LIMIT; @@ -18,7 +20,7 @@ export class RecursionLimitError extends Error implements ErrorThatHandlesItsOwn public sendResponse(res: KibanaResponseFactory) { return res.badRequest({ - body: { message: this.message, attributes: { errorCode: this.errorCode } }, + body: { message: RECURSION_LIMIT_ERROR, attributes: { errorCode: this.errorCode } }, }); } } From 73106e0b7610d0eae5798842890f68351f4f0c6e Mon Sep 17 00:00:00 2001 From: Bharat Pasupula Date: Tue, 24 Sep 2024 10:32:30 +0200 Subject: [PATCH 04/12] Move the error handling to routes --- .../docs/imgs/categorization_graph.png | Bin 51462 -> 57867 bytes .../docs/imgs/ecs_graph.png | Bin 42840 -> 42178 bytes .../docs/imgs/ecs_subgraph.png | Bin 34394 -> 35990 bytes .../docs/imgs/kv_graph.png | Bin 0 -> 31836 bytes .../docs/imgs/log_detection_graph.png | Bin 14301 -> 28782 bytes .../docs/imgs/related_graph.png | Bin 31092 -> 39786 bytes .../graphs/categorization/categorization.ts | 25 ++++----------- .../server/graphs/categorization/errors.ts | 26 +++++---------- .../server/graphs/categorization/invalid.ts | 24 ++++---------- .../server/graphs/categorization/review.ts | 30 ++++++------------ .../server/graphs/ecs/duplicates.ts | 24 ++++---------- .../server/graphs/ecs/invalid.ts | 25 ++++----------- .../server/graphs/ecs/mapping.ts | 25 ++++----------- .../server/graphs/ecs/missing.ts | 27 ++++++---------- .../server/graphs/kv/header.ts | 19 +++-------- .../server/graphs/kv/kv.ts | 19 +++-------- .../graphs/log_type_detection/detection.ts | 20 +++--------- .../server/graphs/related/errors.ts | 28 ++++++---------- .../server/graphs/related/related.ts | 23 ++++---------- .../server/graphs/related/review.ts | 25 +++++---------- .../server/graphs/unstructured/error.ts | 22 ++++--------- .../graphs/unstructured/unstructured.ts | 19 +++-------- .../lib/errors/recursion_limit_error.ts | 4 +-- .../server/lib/errors/translations.ts | 30 ++++++++++++++++++ .../server/routes/analyze_logs_routes.ts | 19 ++++++++--- .../server/routes/build_integration_routes.ts | 14 +++++--- .../server/routes/categorization_routes.ts | 14 +++++--- .../server/routes/ecs_routes.ts | 14 +++++--- .../server/routes/pipeline_routes.ts | 14 +++++--- .../server/routes/related_routes.ts | 14 +++++--- .../server/routes/routes_util.ts | 16 ++++++++++ 31 files changed, 219 insertions(+), 301 deletions(-) create mode 100644 x-pack/plugins/integration_assistant/docs/imgs/kv_graph.png create mode 100644 x-pack/plugins/integration_assistant/server/lib/errors/translations.ts create mode 100644 x-pack/plugins/integration_assistant/server/routes/routes_util.ts diff --git a/x-pack/plugins/integration_assistant/docs/imgs/categorization_graph.png b/x-pack/plugins/integration_assistant/docs/imgs/categorization_graph.png index e7a011ad27b9aa9ebd1bf0920793aa7894e4943f..a15dbf54d905a5ce46be51f306c9981b74995c61 100644 GIT binary patch literal 57867 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
cz~yOk=RXtBONSIm1w#$KYf; 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%0DlHwIp7iu8i+1mo88RF0cdEd?cjHTS#8>q+* z$RdFQtU~1f*xX;7;}w^*YHU-STRp|U(mc=%T}aix8s3|`S$85|yG;LPM$d?qG9YS7 zraG?0UwbY~2&=G~kuSkEpu{Y79Nka%IX#g9)ar@;<;acRGwV1-mFEdblqVj{9UNIR zg7UuX#E5ke`SGo|R+sSLB+ko4b??@o@_okEOdj_5Eb1|nweV#; zDmop90=Kz`fzjN<@ zLfCX6-*gW%9upwt8A!JX$<7gD={oVP#0v}q^L9!_`)tvU87=QCPH;@RpOspA6phQFC0#b|pfYS0=QX|1|B!xt))uY!c}5dWXcy=ageq z7ZMZi$cAL&(s8ah*T-PEs3iNJ;f0I(=x|zL zRlXX;2%olaLm%9%qRlgokb75g%6uXtu}{1JAuqoUGPGtcv1>E#jf;@4sN*Np;3+Pc z$bnK1b&me`>RWGUmD?Td_wyP!oc2I4dCykl*~r>@+KI_m-D#@i6Fz)jy(lpP-`dP7 zPX3nH{93>2;fA+#!Mjm=W zFOw~Fa7$$xyPo1?E^Q89b@$9%qge0@1uvfy@C{KJ6)MvcifLJnA;;1j51@P%>5HBm z8Fs6-%6Z8*f``0hpPpPjB=*wNOleDE6QQ|z#J=7EyifT4B9$F=BRM%%tBrfkv$LCZ zYUR##EG~IhaLeTaw>V;KC-1mW0t5Y)vOnoLHpkmpyrXnn&(Qyvq3)}i@~hd+wNDzy zf<*e?GL_vEib&AiVUyxK>bJRk&wX6EXW-!+O-68kXa0bUx2n$0w6G!CJ=7AU&2iB= zpb$!vDkD^({z@GB?A>b)_YWLdtQ1wASydvN-IqF})`ZfPiPwpr`03FZT4ZOQj_m$Q z*zNv;gZ> zfBD%Kllw^vHuwOXQ@~ik@k49U0j-Y-Yw5rNbL=oEpRo=qAWh?kbw&a(&cL(wDM`tX zebT9};lUqWeS^K(5X;(hxD=0-qr#h>s4!paFscWQJ1ZruV$lCNlD5C!-%EF>2Z3!` zl~0{$G2fz#iKXs3jBw*rH6qt>1ipH+qhZZzY>Y%T*7DR+OB`YJ5$_+MImaZ}`H6Y% zH{)?3ohqgu9AdnFmL6RsV-uP6=wRAoZAEzJypWSb#}9L z+cfjOkjUtifb+hpjou$!?>=Y|_Tt6UT+rDepP2LrHP%IG$k23gOxRPS8kB}6-fFozedo=4A2mg>|-a7bXE4gpALU& ztEok&ocSxU`hvY-e)>A-qA`h;+P)SVwW-M76rv!PP-D3-y0OwfBku}?Yxw3gbRS=i z=lLa4EgKa8EY=MuwwLnsUAHbzR6^rj1=_uDzrWJKwYs%MEs*2PFmjeig zKdtf6F)ZM(WngQOuO?=c0dVDEaATMDu1Uo9Y`J&k#paVbY+$ADXEMB&O96H$Y00>S zsI|-#hGIm8%DbS9(45(g9+EbC9h)HAsN=`gcvD<4IsKE8Q>z>8H@fsu$-JyT!P3`2 ziCSeWsnl?quY+I!r7a0l<^=3EhI7R+Y3rP@pXU=rPfcQ`rIMC})2>peOUD#&f*fsi u@~M{{5g+vd3}*K<1Fm{ZxowUuw2upm6!jB1`M;vW-{i@^?g#bt&c6en7tk>P literal 42840 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 diff --git a/x-pack/plugins/integration_assistant/docs/imgs/ecs_subgraph.png b/x-pack/plugins/integration_assistant/docs/imgs/ecs_subgraph.png index 85358ee453bcf8a5361adc975e55b6ea729627ad..8e3ea2bc5e0ca798c68da84d99e80b45b4bcbb83 100644 GIT binary patch literal 35990 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 z zaMDXi)2v&#VB6TWf2iz>hCZ?-IbREjsf%h@+FWjY`Ofhc5`R=SMZ?8(HWtHRJr_LIe!P#cT53nH1q9p=-C!7nHUdzrTzwr##ULx11nhtS9>$E|F< z#?TG1OiXi2bV~f8uhDMZ?5LHoR1BCRd2m=Q@nGj-uv37(W9!5Lw;JU2G1++Tl%E zB?a4A^}72;HGCqalX=Mn?Tq`pRgrxLUR&3rQrREGDL;RlxO_S`A+d4 z*BcFSySj&JfCbTUJ%-#xx!gutblDJss~Qb-+w-MX4L26u0TUI-3&Mx>`Zh=60v4AJ zkBA8@bd4VSNxV)^{4#u~?xt+OS=`(54#&v5XZU#Kc_rf|bnE9+uC`;VMv;%3Ny^z3 z6|%$|3DXI5lECxhV$EK~lF9iRQUM26f^RK(>g&-pdq8gg0nH4Pk_*qQW7d_n8HX9I z;FpsO3$cBmj-aV3(10>-H843#r-m*!k)Urgk(Oej=QC-3n^Yd%2xCQqC6RQegfa?L zn)F%ia+0FwwWZeVG6QrJqb(3Fxe23UBgJ2 zE5S(=>7Sg1Dg$#J9p0Pv37PU+c-HkM6zJGu`93{JjR{fs|jZ>9{JL`tHZ z+B(OuX-bRC`o7J?i)z8=5db<^kT{wq7o5KF8dAF@ZH+}#|ahEOVUm&2U?DNV=`iXS&`o_sWU8T`!F+n z4!O%=%?yq>CRdLi8s;icfl-O?+%vi5b8}*GO-mKp~OU%5H(di}AJjV^9=17h@ zn6~8&V!wK;g7|$=?4bIG4x~MvnS$JR?GQ5g`W+>?vX@!UZTTm@1ED){{o1U6J&n#u z%f~(m(p1Fwr@2EK1&l7ZmButWaPfIAvv|=~T;zi{_&CR9v%Y7PJB7)6EWK+ehY~M% zf1%VRU`u1Q{#$Z-yIhj7^0p**TdRNk1c0u!U*9V6NaiWUFTgF?F92($`7c1EqVP$_ zc}OOs8>@fr=-7}UC1pXAyJmZ52S*c6ArKX9t8nFxIJD1bkr{4(EA+{WbDs0=1l7S% zG}*ZL@hh9x4MoG@Yt)8PMC)QvK1nIm@HKd^%YNt4y-8S?StEPIJO=u-;oD4$0jtK| zDt5IY(+0kb2cyo)_<3d{-i*pWm$PiKzG3f@_Dd`|x>_BHFBk!!{7(~K1qgg?nySj) zl@N+|6H$#k3fWC3#eG3=#({vC&m~Z`qr3w98+h#ub9#0|Wdk9daNnrrsc!dZI5Ols zUi?bQIW_lfs&(!=hZUv5cb;1~4~^YEqjM6&UzA(&M%awaVb?5qc$EVvTvl8(sCZqK zV{m=}Bvgqaym{G_gnUCNyo0g$+~EA9nc->MV#Op08kn&{oB-SXD%mx55zibsVI0i| z8>)8pj0`&u^e{wwc1L|GY0aZDU1rY(c!aJ+pCb{=)pj5UJ1r+i<}|t?_fwjmmFi?x zOBz8tlA8}^XXmnG8_S%FqGb)Z8Y1};(L zQM1;T>^)Y!_~hcDRN+&tLav&h(th({gMrGF+|b_9HoCUN*A z>B-bAyHZ>TXvCFOpsu0{h)W#CQ>0A}cu!8^_d^QzMUEUP@z9e*ilI?ZYb~_< z9CD+}1xl&}?f_m03&|%3Dl1&a9dLdh=B}gpASbs15n!p8cZH>{5EL-TnBy=(Vug}_ zqNz6lK+Z2G$eP{ogNCL^7`4!z2Cy=-&U&d*hn-PVlMWr#w2SfKmHXja@`$#YzZ}EG zwe(+k=Ce7Ey>ZJJ+UV>{ePM8=>(jM69Y3LINP1r5+?t=Utv>^~k6bHW$}gnOD(Y4ArnSAU1V$fwqXOJ-gP%J60{9Kg7Hp6k z7*nBK>|#J6qM>zw`TbxMY&s?Zy~u7n#2YFeLQIlA5~UY4X0mhY&JfT*G1~WSdgU<| z85T^_V>L!vk-N+EkXzLWP!ry@s~F zC>!~Q?9wHe%b^gKT}JB#i{|~$@v|%=9Pg%$Ug2?t`^LwE2(n$Aw5xh`$w9GB>GNT2GGzJV-n!D_{E-gWVa-4$4N^ zWV4Mv&YCi8Msf)J2FkwUi0G{XmO7W8NQyyDl{2YPsRhv)EZwip@)yy) z#xGsrax9*BO!_*{G+a56o|Rw}mV;>fS;ZdOcbf+=-&S+HlYh06=#~d%IDiF>2X>E8o4bI|*~w^D@ws$LfY_-}w?0S453P(JA_wH* z>*(!VWFZ}+UbnI7dfLwefUou9Nq>@%HupnsvaI>ed1+rK*vWB=7Fy3p&sAkHG~zyh zY|h7Kp)!5ExFWg2>b^MvInqM+Mv6CwwC5Jr;aw(9<)``7kYySKt@zJNeI|pL&P@_} z>UE@EP4Y6P`d=RGjZ9;dUfU>|Ym&j*VRTh(=_dD@DH3_tsfwotiX}h>kz|?G7-I`) zwgR5oc6xh(DGMXJH?ysub$E44Gk{a4^l@uH5j=n$Rp~X-w)FPFR}va?6Dg_Wll}3O zJ$dQ4f?5X={?W#V8s9VYT6QW&Kdi=tJbsQLZo~h<>CrWQT*Cun3!&gPy}~8T9Nk4X zaB+*RqmT}C_7D;NUUR~n>**{>ZO+kQKb8r^-|YQtI21sUBPZ4!^_pdLF-HkcIq!i* z;A>rDGb%mNK4Y|M0AR|^?o`>(evEvmPYV}V(7RiUp>LKJ&{z~T@?vAEA+$JqF5$E6 zRy7{yjd$9fJ%{#5j5sfM$e;<+-a;g)j=ss9pq9+a4H3S8QT@7VzT^kjVbXJu)%U-! z-TsPBv-mE8_1MxY&Ls6(YbA)=0RU4Y7B=kXJLd2|5uCMj>+QJGh#mdS` z2x&r4I@4l6s9M1K%eL~SgsprPT`;4eJgqIkssjU5Z^2zG3Epbyq_IwY8StsP%s$C( zs8~aY611sCl9;t=EJ)x{H`g&-P$N7WhY*IW2n=M2{TSLGfhN)=h{Z2yMvclFt#;`W zT3l{yw}mlB%k^;HU%>!^IvJR#c@neS;Mbm&$;^;5ufS+Ej3@vOQ( zu$1LIIJuGxG#P-be;szJgQ~soVQM(w$Dh0P@dxt2mVtE?6N(o6pH3VuXZY=J#17P>3;3>EEK z2x40SHV$8c9(^X02iyd@{EsghB^J=wn&+spsk%$|821m8Hjbbvuez39@=GaR=$pkJ zs0a}~3VnaYMI$|g8Yl9}7OH;Uw%;YOC>K6w%34~8eo6C7d(e1l?<)#Om5^Doxk*b|fK#RLac;Fz)pl*`izOdoHp{r!$oB^k5=pOuhBe>Lpaq2!nkZYu32isf z9k-uJl1)E)UsS`Cj`39_nv@Vr5KQ>TCPg+9GocTLqqM>P{ zFJ0Ls7w$dp&ZQ6eDh(rrH)W4vC(onXHC=iD3-;_PQ&<^%Up}fur{=Z{5^4f#POz^B z24A+yD0~xpX{vw~Ksp(VtZxoBrs=ntythg3@$-sRBrCH^x`nvL45yB0eMi`!Kwm9{ zg{9=1_pAh_l=leK-fW6-Yec>omNYqO0yq0cihKu~!A}PnfvUeQzzi7kIluI=^*dct zWhJZd5E)z)-MqoYm0w52qW(yfPe1;a7X{1cZ=J$R2Utqe6zVq~>Gj+Se2gn19$fqY z@E-I=DyikkXXg!6B)yV(CGvSPAG~rYJk-GkuPS`}c3hQhd2t<)KA4 z2!ak4Z%d1WGW8_{l;8PO?PffwES>oBZ8OI#S-TmzNw{f}J2N@3mSug$c7E4?i{-Wc z=9f64lXDO_id$8)89) z&4z{*V^ly^jQ8#%@7#myT5?XJ%108JMtCLXna1gfOb3EdSp*5N0IkV!S6J8(0QpRe z4On^m9)Rs9@>WE$Pf{=VBX;;AJfLTDvKU$niy*QGudK=p%mqbeWw>pd@bOC#=A?GKpJJ1Ht}kJE_gq-UAL2a-7cIA#TR_sel~P*6 z{n3*anS6%h)S+_t-|Ss|d0Iz`uPbTXpwT?OocNv4kf?r=*dx9h#Md%YYX`Bx4#$V) zY})CpJN=b)knVBTZPJNK(XYGlXz@?Ur@rkYoRikY{R7{?KNVIe*C73-C*DMK8k}4t zkIQ(*NOLi~?*U@%c>qvsl#=*0u{|WoLiNE0919F%{cOK(aSTJ zq|u0Z$s^>w6I!7+A8&&(_2Yx>mwnkxbsjMQp%jD1XI86|7QG{t-L4H#^A=fr8NPfk z+Ecr56b{sBcqU8SPi#qNfgmK~Qh%=sFydHMX3YnI;h*(UM zxJni@p<9+8Ro%xg8*t6iEX^@NTG`u7A-Tq1oRgK_A2_9$0ILZWpnKvx`iCgCbaDw zFVNO&eCj8)o{?ESK>_bu5%u8Z>%Hw`?~l6fJQp5DlF|1|ycIh5oPH}uRvvN4T!aa| zU>ydLbOdbfcwDGtVAN?2@E@6tjs3?HkXb%++K>3J$3OEki57GawMv#o0h#tF4u9!Q z==bAW(WKs{avBCGc3XIIS}sc)G_K3=7GYccGdI)2PDX)mRais;_wUIe?)tC@(RK0h zdN>f}HuwwXrgfHi7{Whr-YAOCy|1s+np&W+}dmVk9DK|v;L74 zul{Xe7%H~50$g932r6{!Qr}4YS%NpFw1+Ny=Uqk0U!?wQm7EuhZp-mDJtaWuGgr_Q zvO&hVHdX7-PW|ad5*+Y9vta+&@Do3uD_Q)CJMs*+gt;Z$GlZMlXvWLmoZ(LC%S~x+ z!&1^dRHo8gjQX~GoBEdEcLHSbk)tzV?yc{~D3`(gMk7Po&beFAvoc(1=@IUx0E7=% z`h-C8Fk~pW21Yjd7<1sCW~udW^BDNAxAxCS|9OdDIMye-tWM3YuhX82pU_2Hh!>A&(2y~AHzqWXV)aQ;78T`AfS9QFoYs0=!K zhATwWr$5UIu7VR*`si;nM)>q0bo7Q za%W^=z$n?+nP87CmMp&2fl;~xUq{<3-qY<%Jm)V-A{Q#0OYl$DMm9bjIH3FFp^U1S#@ORnGc#A;rs2>$|1$V4v_sccWupG147=+Cdx$TOS`Tqp z?5fdgoZ08QS2am9BtMsyjARK+uxmqJjQj#n1b(W?o26=l*|+1o>WLatnUw`$i?_g9 zKx9}$sHig|hN93esutgyuXvtgMf=BgxxaJ2{_hmIp!|Py{}`vb-!N}0o_p3%B=$l} zQtCPPgn35)Q?vKmbAwTN2fND0Q7I=Ecc(G=zW~9!WMlHE1dO)jvEh@v%D0&bjym6< z!q-b{Zd92ICFwGFTR-2ygSBwRJa|wQN998H<^DmcikH{xq}zwA$Tjz#M#rT56u|nY z2f;8c&z|ji=E#w$x>*Mn)wlZvhL7}Cj$)TeCie&72d=I6(_beS5A${$W-U7RNDVBJ zJunj5Ow7V5kEWN=hS&_Z>XAQF{`M(2bZ9i(VM~HK0!bZJ_mA;M25e(f<$DmhqhkN+ z?r;xuFQ9ps-2+#y9?p(`sBYm?->`8(m>}9XSkvS21&b?4@n+5FRzR@c+)mShi>WYy zFrtf%;$EtGd0?M^#n1N(Tpk}AF#Bk3^d)ZP_mAVN>}1~VUabek>U=vBcKI=U;+~MM zIZPQ8rAO>+hw`^nCg=a>Ah7>at*_e4?%r*9C`#Qy@Pp=zZgd9ka$|1Rnemy2$&M7R zgj$`|4i&E6`v*m@Jg%t`RbbXtBG?j z%D%M9GH%&PZlNkvR7C6xh)QE^{*7cE<-Pn%wNFGl7^nlqTSxjoCY>QCPPRzao}*o`!SoFR%%1-YR7A zPrfwU>QkB13Uv>N7ge|9<^9N+5KIzlZlsImNzqZH5n^jz91s_|SBA^>#w%(m>?J-XyJpW<#>waIPXr({wK zE_94&>ScZosopt0aw_1;HvYIZWXOKH@UT?JX0~-1ytr;DF&V;hQZ(a8=Wm~csoSp1 z=G-3|?UXZFV=luO(>**9H@_Z!=a<>mc(jqvuDU(uOHeqY?jLBg^rVGx&tX_~!+w>J z!uEuy+tGX>Py+mbRd{f64#Vt&2@q`*k$qx`-{Loqbd`I0TJD^0YVkR{^l(KZ(CqjU zeH!~~=fsX6?c>R+%nr*eYl%5y|q=Rhis3S zpKT~%Y%a5btZFP>1o7vwe^~b5YoDUtloc{IsnLkbWHO~Ny#4>cl;pzHiW6)X(EA^L z<{x~nbo}R6)rj!|ewrl6tG4T{rb|IeR-zoz~d&)>pz literal 34394 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 L|B3Dy{>=P8Xc4K+ diff --git a/x-pack/plugins/integration_assistant/docs/imgs/kv_graph.png b/x-pack/plugins/integration_assistant/docs/imgs/kv_graph.png new file mode 100644 index 0000000000000000000000000000000000000000..48a609992424874e7c0f82c97081025d722e3f46 GIT binary patch literal 31836 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 literal 0 HcmV?d00001 diff --git a/x-pack/plugins/integration_assistant/docs/imgs/log_detection_graph.png b/x-pack/plugins/integration_assistant/docs/imgs/log_detection_graph.png index 94830a549dcf1191bdb7f95f8de7dd1483ea04a6..285e012c57a149e783883c42aaa10cab2f53dcd7 100644 GIT binary patch literal 28782 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 I%;U`e0^hCTOaK4? diff --git a/x-pack/plugins/integration_assistant/docs/imgs/related_graph.png b/x-pack/plugins/integration_assistant/docs/imgs/related_graph.png index cebb482a4b495ec44c7a89f6e1b7e19213fbf3ab..73a2c3acac0d4ce331b25585dedd7731b602194e 100644 GIT binary patch literal 39786 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 JZ-71+{s(o6o;Uyi literal 31092 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 { const outputParser = new JsonOutputParser(); const ecsMainGraph = ECS_MAIN_PROMPT.pipe(model).pipe(outputParser); - let currentMapping; - try { - currentMapping = await ecsMainGraph.invoke({ - ecs: state.ecs, - combined_samples: state.combinedSamples, - package_name: state.packageName, - data_stream_name: state.dataStreamName, - ex_answer: state.exAnswer, - }); - } catch (e) { - if (e instanceof GraphRecursionError) { - throw new RecursionLimitError(e.message); - } else { - throw e; - } - } + const currentMapping = await ecsMainGraph.invoke({ + ecs: state.ecs, + combined_samples: state.combinedSamples, + package_name: state.packageName, + data_stream_name: state.dataStreamName, + ex_answer: state.exAnswer, + }); return { currentMapping, hasTriedOnce: true, lastExecutedChain: 'ecsMapping' }; } diff --git a/x-pack/plugins/integration_assistant/server/graphs/ecs/missing.ts b/x-pack/plugins/integration_assistant/server/graphs/ecs/missing.ts index a182e257ffe436..0c22af98a41bce 100644 --- a/x-pack/plugins/integration_assistant/server/graphs/ecs/missing.ts +++ b/x-pack/plugins/integration_assistant/server/graphs/ecs/missing.ts @@ -6,11 +6,9 @@ */ import { JsonOutputParser } from '@langchain/core/output_parsers'; -import { GraphRecursionError } from '@langchain/langgraph'; import { EcsMappingState } from '../../types'; import { ECS_MISSING_KEYS_PROMPT } from './prompts'; import { EcsNodeParams } from './types'; -import { RecursionLimitError } from '../../lib/errors'; export async function handleMissingKeys({ state, @@ -20,22 +18,15 @@ export async function handleMissingKeys({ const ecsMissingGraph = ECS_MISSING_KEYS_PROMPT.pipe(model).pipe(outputParser); const usesFinalMapping = state?.useFinalMapping; const mapping = usesFinalMapping ? state.finalMapping : state.currentMapping; - let result; - try { - result = await ecsMissingGraph.invoke({ - ecs: state.ecs, - current_mapping: JSON.stringify(mapping, null, 2), - ex_answer: state.exAnswer, - combined_samples: state.combinedSamples, - missing_keys: state?.missingKeys, - }); - } catch (e) { - if (e instanceof GraphRecursionError) { - throw new RecursionLimitError(e.message); - } else { - throw e; - } - } + + const result = await ecsMissingGraph.invoke({ + ecs: state.ecs, + current_mapping: JSON.stringify(mapping, null, 2), + ex_answer: state.exAnswer, + combined_samples: state.combinedSamples, + missing_keys: state?.missingKeys, + }); + return { [usesFinalMapping ? 'finalMapping' : 'currentMapping']: result, lastExecutedChain: 'missingKeys', diff --git a/x-pack/plugins/integration_assistant/server/graphs/kv/header.ts b/x-pack/plugins/integration_assistant/server/graphs/kv/header.ts index 7086ea3fd93629..36d8968ab9e675 100644 --- a/x-pack/plugins/integration_assistant/server/graphs/kv/header.ts +++ b/x-pack/plugins/integration_assistant/server/graphs/kv/header.ts @@ -6,12 +6,10 @@ */ import { JsonOutputParser } from '@langchain/core/output_parsers'; -import { GraphRecursionError } from '@langchain/langgraph'; import type { KVState } from '../../types'; import type { HandleKVNodeParams } from './types'; import { KV_HEADER_PROMPT } from './prompts'; import { KV_HEADER_EXAMPLE_ANSWER } from './constants'; -import { RecursionLimitError } from '../../lib/errors'; export async function handleHeader({ state, @@ -20,20 +18,11 @@ export async function handleHeader({ }: HandleKVNodeParams): Promise> { const outputParser = new JsonOutputParser(); const kvHeaderGraph = KV_HEADER_PROMPT.pipe(model).pipe(outputParser); - let pattern; - try { - pattern = await kvHeaderGraph.invoke({ - samples: state.logSamples, - ex_answer: JSON.stringify(KV_HEADER_EXAMPLE_ANSWER, null, 2), - }); - } catch (e) { - if (e instanceof GraphRecursionError) { - throw new RecursionLimitError(e.message); - } else { - throw e; - } - } + const pattern = await kvHeaderGraph.invoke({ + samples: state.logSamples, + ex_answer: JSON.stringify(KV_HEADER_EXAMPLE_ANSWER, null, 2), + }); return { grokPattern: pattern.grok_pattern, diff --git a/x-pack/plugins/integration_assistant/server/graphs/kv/kv.ts b/x-pack/plugins/integration_assistant/server/graphs/kv/kv.ts index 60e7aa3b297cde..46820778e5a7df 100644 --- a/x-pack/plugins/integration_assistant/server/graphs/kv/kv.ts +++ b/x-pack/plugins/integration_assistant/server/graphs/kv/kv.ts @@ -5,14 +5,12 @@ * 2.0. */ import { JsonOutputParser } from '@langchain/core/output_parsers'; -import { GraphRecursionError } from '@langchain/langgraph'; import type { KVState } from '../../types'; import { KV_MAIN_PROMPT } from './prompts'; import { KVProcessor } from '../../processor_types'; import { HandleKVNodeParams } from './types'; import { KV_EXAMPLE_ANSWER } from './constants'; import { createKVProcessor } from '../../util/processors'; -import { RecursionLimitError } from '../../lib/errors'; /** * Handles the KV processor node in the graph @@ -30,20 +28,11 @@ export async function handleKV({ // Pick logSamples if there was no header detected. const samples = state.header ? state.kvLogMessages : state.logSamples; - let kvInput: KVProcessor; - try { - kvInput = (await kvMainGraph.invoke({ - samples: samples[0], - ex_answer: JSON.stringify(KV_EXAMPLE_ANSWER, null, 2), - })) as KVProcessor; - } catch (e) { - if (e instanceof GraphRecursionError) { - throw new RecursionLimitError(e.message); - } else { - throw e; - } - } + const kvInput = (await kvMainGraph.invoke({ + samples: samples[0], + ex_answer: JSON.stringify(KV_EXAMPLE_ANSWER, null, 2), + })) as KVProcessor; const kvProcessor = createKVProcessor(kvInput, state); diff --git a/x-pack/plugins/integration_assistant/server/graphs/log_type_detection/detection.ts b/x-pack/plugins/integration_assistant/server/graphs/log_type_detection/detection.ts index 3ee19abbaa6d7e..4920adb609967a 100644 --- a/x-pack/plugins/integration_assistant/server/graphs/log_type_detection/detection.ts +++ b/x-pack/plugins/integration_assistant/server/graphs/log_type_detection/detection.ts @@ -5,11 +5,9 @@ * 2.0. */ import { JsonOutputParser } from '@langchain/core/output_parsers'; -import { GraphRecursionError } from '@langchain/langgraph'; import type { LogFormatDetectionState } from '../../types'; import { LOG_FORMAT_DETECTION_PROMPT } from './prompts'; import type { LogDetectionNodeParams } from './types'; -import { RecursionLimitError } from '../../lib/errors'; const MaxLogSamplesInPrompt = 5; @@ -24,20 +22,12 @@ export async function handleLogFormatDetection({ state.logSamples.length > MaxLogSamplesInPrompt ? state.logSamples.slice(0, MaxLogSamplesInPrompt) : state.logSamples; - let detectedLogFormatAnswer; - try { - detectedLogFormatAnswer = await logFormatDetectionNode.invoke({ - ex_answer: state.exAnswer, - log_samples: samples, - }); - } catch (e) { - if (e instanceof GraphRecursionError) { - throw new RecursionLimitError(e.message); - } else { - throw e; - } - } + const detectedLogFormatAnswer = await logFormatDetectionNode.invoke({ + ex_answer: state.exAnswer, + log_samples: samples, + }); + const logFormat = detectedLogFormatAnswer.log_type; const header = detectedLogFormatAnswer.header; diff --git a/x-pack/plugins/integration_assistant/server/graphs/related/errors.ts b/x-pack/plugins/integration_assistant/server/graphs/related/errors.ts index b894eba899de7a..5601c4b5f5e333 100644 --- a/x-pack/plugins/integration_assistant/server/graphs/related/errors.ts +++ b/x-pack/plugins/integration_assistant/server/graphs/related/errors.ts @@ -6,14 +6,12 @@ */ import { JsonOutputParser } from '@langchain/core/output_parsers'; -import { GraphRecursionError } from '@langchain/langgraph'; import type { Pipeline } from '../../../common'; import type { RelatedState, SimplifiedProcessors, SimplifiedProcessor } from '../../types'; import type { RelatedNodeParams } from './types'; import { combineProcessors } from '../../util/processors'; import { RELATED_ERROR_PROMPT } from './prompts'; import { COMMON_ERRORS } from './constants'; -import { RecursionLimitError } from '../../lib/errors'; export async function handleErrors({ state, @@ -22,23 +20,15 @@ export async function handleErrors({ const relatedErrorPrompt = RELATED_ERROR_PROMPT; const outputParser = new JsonOutputParser(); const relatedErrorGraph = relatedErrorPrompt.pipe(model).pipe(outputParser); - let currentProcessors: SimplifiedProcessor[] = []; - try { - currentProcessors = (await relatedErrorGraph.invoke({ - current_processors: JSON.stringify(state.currentProcessors, null, 2), - common_errors: JSON.stringify(COMMON_ERRORS, null, 2), - ex_answer: state.exAnswer, - errors: JSON.stringify(state.errors, null, 2), - package_name: state.packageName, - data_stream_name: state.dataStreamName, - })) as SimplifiedProcessor[]; - } catch (e) { - if (e instanceof GraphRecursionError) { - throw new RecursionLimitError(e.message); - } else { - throw e; - } - } + + const currentProcessors = (await relatedErrorGraph.invoke({ + current_processors: JSON.stringify(state.currentProcessors, null, 2), + common_errors: JSON.stringify(COMMON_ERRORS, null, 2), + ex_answer: state.exAnswer, + errors: JSON.stringify(state.errors, null, 2), + package_name: state.packageName, + data_stream_name: state.dataStreamName, + })) as SimplifiedProcessor[]; const processors = { type: 'related', diff --git a/x-pack/plugins/integration_assistant/server/graphs/related/related.ts b/x-pack/plugins/integration_assistant/server/graphs/related/related.ts index fb2fea25e7ae19..902427a1c484fa 100644 --- a/x-pack/plugins/integration_assistant/server/graphs/related/related.ts +++ b/x-pack/plugins/integration_assistant/server/graphs/related/related.ts @@ -6,13 +6,11 @@ */ import { JsonOutputParser } from '@langchain/core/output_parsers'; -import { GraphRecursionError } from '@langchain/langgraph'; import type { Pipeline } from '../../../common'; import type { RelatedState, SimplifiedProcessor, SimplifiedProcessors } from '../../types'; import { combineProcessors } from '../../util/processors'; import { RELATED_MAIN_PROMPT } from './prompts'; import type { RelatedNodeParams } from './types'; -import { RecursionLimitError } from '../../lib/errors'; export async function handleRelated({ state, @@ -21,20 +19,13 @@ export async function handleRelated({ const relatedMainPrompt = RELATED_MAIN_PROMPT; const outputParser = new JsonOutputParser(); const relatedMainGraph = relatedMainPrompt.pipe(model).pipe(outputParser); - let currentProcessors: SimplifiedProcessor[] = []; - try { - currentProcessors = (await relatedMainGraph.invoke({ - pipeline_results: JSON.stringify(state.pipelineResults, null, 2), - ex_answer: state.exAnswer, - ecs: state.ecs, - })) as SimplifiedProcessor[]; - } catch (e) { - if (e instanceof GraphRecursionError) { - throw new RecursionLimitError(e.message); - } else { - throw e; - } - } + + const currentProcessors = (await relatedMainGraph.invoke({ + pipeline_results: JSON.stringify(state.pipelineResults, null, 2), + ex_answer: state.exAnswer, + ecs: state.ecs, + })) as SimplifiedProcessor[]; + const processors = { type: 'related', processors: currentProcessors, diff --git a/x-pack/plugins/integration_assistant/server/graphs/related/review.ts b/x-pack/plugins/integration_assistant/server/graphs/related/review.ts index fb3bf4a9e4b374..300f33144b52ac 100644 --- a/x-pack/plugins/integration_assistant/server/graphs/related/review.ts +++ b/x-pack/plugins/integration_assistant/server/graphs/related/review.ts @@ -6,13 +6,11 @@ */ import { JsonOutputParser } from '@langchain/core/output_parsers'; -import { GraphRecursionError } from '@langchain/langgraph'; import type { Pipeline } from '../../../common'; import type { RelatedState, SimplifiedProcessors, SimplifiedProcessor } from '../../types'; import type { RelatedNodeParams } from './types'; import { combineProcessors } from '../../util/processors'; import { RELATED_REVIEW_PROMPT } from './prompts'; -import { RecursionLimitError } from '../../lib/errors'; export async function handleReview({ state, @@ -21,21 +19,14 @@ export async function handleReview({ const relatedReviewPrompt = RELATED_REVIEW_PROMPT; const outputParser = new JsonOutputParser(); const relatedReviewGraph = relatedReviewPrompt.pipe(model).pipe(outputParser); - let currentProcessors: SimplifiedProcessor[] = []; - try { - currentProcessors = (await relatedReviewGraph.invoke({ - current_processors: JSON.stringify(state.currentProcessors, null, 2), - ex_answer: state.exAnswer, - previous_error: state.previousError, - pipeline_results: JSON.stringify(state.pipelineResults, null, 2), - })) as SimplifiedProcessor[]; - } catch (e) { - if (e instanceof GraphRecursionError) { - throw new RecursionLimitError(e.message); - } else { - throw e; - } - } + + const currentProcessors = (await relatedReviewGraph.invoke({ + current_processors: JSON.stringify(state.currentProcessors, null, 2), + ex_answer: state.exAnswer, + previous_error: state.previousError, + pipeline_results: JSON.stringify(state.pipelineResults, null, 2), + })) as SimplifiedProcessor[]; + const processors = { type: 'related', processors: currentProcessors, diff --git a/x-pack/plugins/integration_assistant/server/graphs/unstructured/error.ts b/x-pack/plugins/integration_assistant/server/graphs/unstructured/error.ts index f88bfe05f9fe41..d002dd19d54394 100644 --- a/x-pack/plugins/integration_assistant/server/graphs/unstructured/error.ts +++ b/x-pack/plugins/integration_assistant/server/graphs/unstructured/error.ts @@ -6,12 +6,10 @@ */ import { JsonOutputParser } from '@langchain/core/output_parsers'; -import { GraphRecursionError } from '@langchain/langgraph'; import type { UnstructuredLogState } from '../../types'; import type { HandleUnstructuredNodeParams } from './types'; import { GROK_ERROR_PROMPT } from './prompts'; import { GROK_ERROR_EXAMPLE_ANSWER } from './constants'; -import { RecursionLimitError } from '../../lib/errors'; export async function handleUnstructuredError({ state, @@ -20,20 +18,12 @@ export async function handleUnstructuredError({ const outputParser = new JsonOutputParser(); const grokErrorGraph = GROK_ERROR_PROMPT.pipe(model).pipe(outputParser); const currentPatterns = state.grokPatterns; - let pattern; - try { - pattern = await grokErrorGraph.invoke({ - current_pattern: JSON.stringify(currentPatterns, null, 2), - errors: JSON.stringify(state.errors, null, 2), - ex_answer: JSON.stringify(GROK_ERROR_EXAMPLE_ANSWER, null, 2), - }); - } catch (e) { - if (e instanceof GraphRecursionError) { - throw new RecursionLimitError(e.message); - } else { - throw e; - } - } + + const pattern = await grokErrorGraph.invoke({ + current_pattern: JSON.stringify(currentPatterns, null, 2), + errors: JSON.stringify(state.errors, null, 2), + ex_answer: JSON.stringify(GROK_ERROR_EXAMPLE_ANSWER, null, 2), + }); return { grokPatterns: pattern.grok_patterns, diff --git a/x-pack/plugins/integration_assistant/server/graphs/unstructured/unstructured.ts b/x-pack/plugins/integration_assistant/server/graphs/unstructured/unstructured.ts index aaa0bfe90030e7..42186e796275fd 100644 --- a/x-pack/plugins/integration_assistant/server/graphs/unstructured/unstructured.ts +++ b/x-pack/plugins/integration_assistant/server/graphs/unstructured/unstructured.ts @@ -5,12 +5,10 @@ * 2.0. */ import { JsonOutputParser } from '@langchain/core/output_parsers'; -import { GraphRecursionError } from '@langchain/langgraph'; import type { UnstructuredLogState } from '../../types'; import { GROK_MAIN_PROMPT } from './prompts'; import { GrokResult, HandleUnstructuredNodeParams } from './types'; import { GROK_EXAMPLE_ANSWER } from './constants'; -import { RecursionLimitError } from '../../lib/errors'; export async function handleUnstructured({ state, @@ -21,20 +19,11 @@ export async function handleUnstructured({ // Pick logSamples if there was no header detected. const samples = state.logSamples; - let pattern: GrokResult; - try { - pattern = (await grokMainGraph.invoke({ - samples: samples[0], - ex_answer: JSON.stringify(GROK_EXAMPLE_ANSWER, null, 2), - })) as GrokResult; - } catch (e) { - if (e instanceof GraphRecursionError) { - throw new RecursionLimitError(e.message); - } else { - throw e; - } - } + const pattern = (await grokMainGraph.invoke({ + samples: samples[0], + ex_answer: JSON.stringify(GROK_EXAMPLE_ANSWER, null, 2), + })) as GrokResult; return { grokPatterns: pattern.grok_patterns, diff --git a/x-pack/plugins/integration_assistant/server/lib/errors/recursion_limit_error.ts b/x-pack/plugins/integration_assistant/server/lib/errors/recursion_limit_error.ts index 84bb95a39582c8..794ba871266695 100644 --- a/x-pack/plugins/integration_assistant/server/lib/errors/recursion_limit_error.ts +++ b/x-pack/plugins/integration_assistant/server/lib/errors/recursion_limit_error.ts @@ -8,8 +8,6 @@ import { KibanaResponseFactory } from '@kbn/core/server'; import { ErrorCode, ErrorThatHandlesItsOwnResponse } from './types'; -const RECURSION_LIMIT_ERROR = 'Recursion limit reached.'; - export class RecursionLimitError extends Error implements ErrorThatHandlesItsOwnResponse { private readonly errorCode: ErrorCode = ErrorCode.RECURSION_LIMIT; @@ -20,7 +18,7 @@ export class RecursionLimitError extends Error implements ErrorThatHandlesItsOwn public sendResponse(res: KibanaResponseFactory) { return res.badRequest({ - body: { message: RECURSION_LIMIT_ERROR, attributes: { errorCode: this.errorCode } }, + body: { message: this.message, attributes: { errorCode: this.errorCode } }, }); } } diff --git a/x-pack/plugins/integration_assistant/server/lib/errors/translations.ts b/x-pack/plugins/integration_assistant/server/lib/errors/translations.ts new file mode 100644 index 00000000000000..a8b1c116d4fef0 --- /dev/null +++ b/x-pack/plugins/integration_assistant/server/lib/errors/translations.ts @@ -0,0 +1,30 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { i18n } from '@kbn/i18n'; + +export const RECURSION_LIMIT_ANALYZE_LOGS_ERROR = i18n.translate( + 'xpack.plugins.integration_assistant.server.errors.recursionLimitAnalyzeLogsErrorMessage', + { + defaultMessage: + 'Please verify the format of log samples is correct and try again. Try with a fewer samples if error persists.', + } +); + +export const RECURSION_LIMIT_ERROR = i18n.translate( + 'xpack.plugins.integration_assistant.server.errors.recursionLimitReached', + { + defaultMessage: 'Max attempts exceeded. Please try again.', + } +); + +export const UNSUPPORTED_LOG_SAMPLES = i18n.translate( + 'xpack.plugins.integration_assistant.server.errors.unsupportedLogSamples', + { + defaultMessage: 'Unsupported log format in the samples', + } +); diff --git a/x-pack/plugins/integration_assistant/server/routes/analyze_logs_routes.ts b/x-pack/plugins/integration_assistant/server/routes/analyze_logs_routes.ts index a64374ae07be8c..16a048252119cd 100644 --- a/x-pack/plugins/integration_assistant/server/routes/analyze_logs_routes.ts +++ b/x-pack/plugins/integration_assistant/server/routes/analyze_logs_routes.ts @@ -17,6 +17,11 @@ import { getLLMClass, getLLMType } from '../util/llm'; import { buildRouteValidationWithZod } from '../util/route_validation'; import { withAvailability } from './with_availability'; import { isErrorThatHandlesItsOwnResponse, UnsupportedLogFormatError } from '../lib/errors'; +import { + RECURSION_LIMIT_ANALYZE_LOGS_ERROR, + UNSUPPORTED_LOG_SAMPLES, +} from '../lib/errors/translations'; +import { handleRecursionError } from './routes_util'; export function registerAnalyzeLogsRoutes( router: IRouter @@ -83,14 +88,18 @@ export function registerAnalyzeLogsRoutes( const graphResults = await graph.invoke(logFormatParameters, options); const graphLogFormat = graphResults.results.samplesFormat.name; if (graphLogFormat === 'unsupported' || graphLogFormat === 'csv') { - throw new UnsupportedLogFormatError('Unsupported log format in the samples'); + throw new UnsupportedLogFormatError(UNSUPPORTED_LOG_SAMPLES); } return res.ok({ body: AnalyzeLogsResponse.parse(graphResults) }); - } catch (e) { - if (isErrorThatHandlesItsOwnResponse(e)) { - return e.sendResponse(res); + } catch (err) { + try { + handleRecursionError(err, RECURSION_LIMIT_ANALYZE_LOGS_ERROR); + } catch (e) { + if (isErrorThatHandlesItsOwnResponse(e)) { + return e.sendResponse(res); + } } - return res.badRequest({ body: e }); + return res.badRequest({ body: err }); } }) ); diff --git a/x-pack/plugins/integration_assistant/server/routes/build_integration_routes.ts b/x-pack/plugins/integration_assistant/server/routes/build_integration_routes.ts index efaf01ea06cd00..eabb2cd332ab2d 100644 --- a/x-pack/plugins/integration_assistant/server/routes/build_integration_routes.ts +++ b/x-pack/plugins/integration_assistant/server/routes/build_integration_routes.ts @@ -12,6 +12,8 @@ import type { IntegrationAssistantRouteHandlerContext } from '../plugin'; import { buildRouteValidationWithZod } from '../util/route_validation'; import { withAvailability } from './with_availability'; import { isErrorThatHandlesItsOwnResponse } from '../lib/errors'; +import { handleRecursionError } from './routes_util'; +import { RECURSION_LIMIT_ERROR } from '../lib/errors/translations'; export function registerIntegrationBuilderRoutes( router: IRouter @@ -39,11 +41,15 @@ export function registerIntegrationBuilderRoutes( body: zippedIntegration, headers: { 'Content-Type': 'application/zip' }, }); - } catch (e) { - if (isErrorThatHandlesItsOwnResponse(e)) { - return e.sendResponse(response); + } catch (err) { + try { + handleRecursionError(err, RECURSION_LIMIT_ERROR); + } catch (e) { + if (isErrorThatHandlesItsOwnResponse(e)) { + return e.sendResponse(response); + } } - return response.customError({ statusCode: 500, body: e }); + return response.customError({ statusCode: 500, body: err }); } }) ); diff --git a/x-pack/plugins/integration_assistant/server/routes/categorization_routes.ts b/x-pack/plugins/integration_assistant/server/routes/categorization_routes.ts index 32dc9645bd82dc..028374ad80962d 100644 --- a/x-pack/plugins/integration_assistant/server/routes/categorization_routes.ts +++ b/x-pack/plugins/integration_assistant/server/routes/categorization_routes.ts @@ -21,6 +21,8 @@ import { getLLMClass, getLLMType } from '../util/llm'; import { buildRouteValidationWithZod } from '../util/route_validation'; import { withAvailability } from './with_availability'; import { isErrorThatHandlesItsOwnResponse } from '../lib/errors'; +import { handleRecursionError } from './routes_util'; +import { RECURSION_LIMIT_ERROR } from '../lib/errors/translations'; export function registerCategorizationRoutes( router: IRouter @@ -99,11 +101,15 @@ export function registerCategorizationRoutes( const results = await graph.invoke(parameters, options); return res.ok({ body: CategorizationResponse.parse(results) }); - } catch (e) { - if (isErrorThatHandlesItsOwnResponse(e)) { - return e.sendResponse(res); + } catch (err) { + try { + handleRecursionError(err, RECURSION_LIMIT_ERROR); + } catch (e) { + if (isErrorThatHandlesItsOwnResponse(e)) { + return e.sendResponse(res); + } } - return res.badRequest({ body: e }); + return res.badRequest({ body: err }); } } ) diff --git a/x-pack/plugins/integration_assistant/server/routes/ecs_routes.ts b/x-pack/plugins/integration_assistant/server/routes/ecs_routes.ts index a4997ae7f341bc..3ee0c8004ecb2d 100644 --- a/x-pack/plugins/integration_assistant/server/routes/ecs_routes.ts +++ b/x-pack/plugins/integration_assistant/server/routes/ecs_routes.ts @@ -17,6 +17,8 @@ import { getLLMClass, getLLMType } from '../util/llm'; import { buildRouteValidationWithZod } from '../util/route_validation'; import { withAvailability } from './with_availability'; import { isErrorThatHandlesItsOwnResponse } from '../lib/errors'; +import { handleRecursionError } from './routes_util'; +import { RECURSION_LIMIT_ERROR } from '../lib/errors/translations'; export function registerEcsRoutes(router: IRouter) { router.versioned @@ -93,11 +95,15 @@ export function registerEcsRoutes(router: IRouter) { router.versioned @@ -47,11 +49,15 @@ export function registerPipelineRoutes(router: IRouter) { router.versioned @@ -90,11 +92,15 @@ export function registerRelatedRoutes(router: IRouter Date: Tue, 24 Sep 2024 11:38:39 +0200 Subject: [PATCH 05/12] move error translation to UI --- .../integration_assistant/common/constants.ts | 5 ++++ .../data_stream_step/generation_modal.tsx | 16 ++++++++-- .../steps/data_stream_step/translations.ts | 27 +++++++++++++++++ .../lib/errors/recursion_limit_error.ts | 8 ++--- .../server/lib/errors/translations.ts | 30 ------------------- .../server/lib/errors/types.ts | 5 ---- .../server/lib/errors/unsupported_error.ts | 5 ++-- .../server/routes/analyze_logs_routes.ts | 12 ++++---- .../server/routes/build_integration_routes.ts | 5 ++-- .../server/routes/categorization_routes.ts | 4 +-- .../server/routes/ecs_routes.ts | 4 +-- .../server/routes/pipeline_routes.ts | 4 +-- .../server/routes/related_routes.ts | 4 +-- .../server/routes/routes_util.ts | 4 +-- 14 files changed, 70 insertions(+), 63 deletions(-) delete mode 100644 x-pack/plugins/integration_assistant/server/lib/errors/translations.ts diff --git a/x-pack/plugins/integration_assistant/common/constants.ts b/x-pack/plugins/integration_assistant/common/constants.ts index 296e38c01e71cc..c583ec7c9b86c9 100644 --- a/x-pack/plugins/integration_assistant/common/constants.ts +++ b/x-pack/plugins/integration_assistant/common/constants.ts @@ -26,3 +26,8 @@ export const FLEET_PACKAGES_PATH = `/api/fleet/epm/packages`; // License export const MINIMUM_LICENSE_TYPE: LicenseType = 'enterprise'; + +// ErrorCodes +export const RECURSION_LIMIT_ERROR_CODE: string = 'recursion-limit'; +export const RECURSION_LIMIT_ANALYZE_LOGS_ERROR_CODE: string = 'recursion-limit-analyze-logs'; +export const UNSUPPORTED_LOG_SAMPLES_FORMAT_ERROR_CODE: string = 'unsupported-log-samples-format'; diff --git a/x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_assistant/steps/data_stream_step/generation_modal.tsx b/x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_assistant/steps/data_stream_step/generation_modal.tsx index b4a9c05b624502..b8870fce52af16 100644 --- a/x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_assistant/steps/data_stream_step/generation_modal.tsx +++ b/x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_assistant/steps/data_stream_step/generation_modal.tsx @@ -171,7 +171,7 @@ export const useGeneration = ({ onComplete(result); } catch (e) { if (abortController.signal.aborted) return; - const errorMessage = `${e.message}${ + const originalErrorMessage = `${e.message}${ e.body ? ` (${e.body.statusCode}): ${e.body.message}` : '' }`; @@ -179,10 +179,20 @@ export const useGeneration = ({ connector, integrationSettings, durationMs: Date.now() - generationStartedAt, - error: errorMessage, + error: originalErrorMessage, }); - setError(errorMessage); + const errorCode = e.body.attributes?.errorCode; + let errorMessage; + if (errorCode != null) { + errorMessage = i18n.ERROR_TRANSLATION[errorCode]; + } + + if (errorMessage != null) { + setError(errorMessage); + } else { + setError(originalErrorMessage); + } } finally { setIsRequesting(false); } diff --git a/x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_assistant/steps/data_stream_step/translations.ts b/x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_assistant/steps/data_stream_step/translations.ts index d44ad979398581..1533abc77ab35b 100644 --- a/x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_assistant/steps/data_stream_step/translations.ts +++ b/x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_assistant/steps/data_stream_step/translations.ts @@ -6,6 +6,11 @@ */ import { i18n } from '@kbn/i18n'; +import { + RECURSION_LIMIT_ANALYZE_LOGS_ERROR_CODE, + RECURSION_LIMIT_ERROR_CODE, + UNSUPPORTED_LOG_SAMPLES_FORMAT_ERROR_CODE, +} from '../../../../../../common/constants'; export const INTEGRATION_NAME_TITLE = i18n.translate( 'xpack.integrationAssistant.step.dataStream.integrationNameTitle', @@ -196,3 +201,25 @@ export const GENERATION_ERROR = (progressStep: string) => export const RETRY = i18n.translate('xpack.integrationAssistant.step.dataStream.retryButtonLabel', { defaultMessage: 'Retry', }); + +export const ERROR_TRANSLATION = { + [RECURSION_LIMIT_ANALYZE_LOGS_ERROR_CODE]: i18n.translate( + 'xpack.plugins.integration_assistant.server.errors.recursionLimitAnalyzeLogsErrorMessage', + { + defaultMessage: + 'Please verify the format of log samples is correct and try again. Try with a fewer samples if error persists.', + } + ), + [RECURSION_LIMIT_ERROR_CODE]: i18n.translate( + 'xpack.plugins.integration_assistant.server.errors.recursionLimitReached', + { + defaultMessage: 'Max attempts exceeded. Please try again.', + } + ), + [UNSUPPORTED_LOG_SAMPLES_FORMAT_ERROR_CODE]: i18n.translate( + 'xpack.plugins.integration_assistant.server.errors.unsupportedLogSamples', + { + defaultMessage: 'Unsupported log format in the samples', + } + ), +}; diff --git a/x-pack/plugins/integration_assistant/server/lib/errors/recursion_limit_error.ts b/x-pack/plugins/integration_assistant/server/lib/errors/recursion_limit_error.ts index 794ba871266695..09b307cb841e95 100644 --- a/x-pack/plugins/integration_assistant/server/lib/errors/recursion_limit_error.ts +++ b/x-pack/plugins/integration_assistant/server/lib/errors/recursion_limit_error.ts @@ -6,14 +6,14 @@ */ import { KibanaResponseFactory } from '@kbn/core/server'; -import { ErrorCode, ErrorThatHandlesItsOwnResponse } from './types'; +import { ErrorThatHandlesItsOwnResponse } from './types'; export class RecursionLimitError extends Error implements ErrorThatHandlesItsOwnResponse { - private readonly errorCode: ErrorCode = ErrorCode.RECURSION_LIMIT; + private readonly errorCode: string; - // eslint-disable-next-line @typescript-eslint/no-useless-constructor - constructor(message: string) { + constructor(message: string, errorCode: string) { super(message); + this.errorCode = errorCode; } public sendResponse(res: KibanaResponseFactory) { diff --git a/x-pack/plugins/integration_assistant/server/lib/errors/translations.ts b/x-pack/plugins/integration_assistant/server/lib/errors/translations.ts deleted file mode 100644 index a8b1c116d4fef0..00000000000000 --- a/x-pack/plugins/integration_assistant/server/lib/errors/translations.ts +++ /dev/null @@ -1,30 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { i18n } from '@kbn/i18n'; - -export const RECURSION_LIMIT_ANALYZE_LOGS_ERROR = i18n.translate( - 'xpack.plugins.integration_assistant.server.errors.recursionLimitAnalyzeLogsErrorMessage', - { - defaultMessage: - 'Please verify the format of log samples is correct and try again. Try with a fewer samples if error persists.', - } -); - -export const RECURSION_LIMIT_ERROR = i18n.translate( - 'xpack.plugins.integration_assistant.server.errors.recursionLimitReached', - { - defaultMessage: 'Max attempts exceeded. Please try again.', - } -); - -export const UNSUPPORTED_LOG_SAMPLES = i18n.translate( - 'xpack.plugins.integration_assistant.server.errors.unsupportedLogSamples', - { - defaultMessage: 'Unsupported log format in the samples', - } -); diff --git a/x-pack/plugins/integration_assistant/server/lib/errors/types.ts b/x-pack/plugins/integration_assistant/server/lib/errors/types.ts index f272b37834448f..2b664da0941e85 100644 --- a/x-pack/plugins/integration_assistant/server/lib/errors/types.ts +++ b/x-pack/plugins/integration_assistant/server/lib/errors/types.ts @@ -10,8 +10,3 @@ import { KibanaResponseFactory, IKibanaResponse } from '@kbn/core/server'; export interface ErrorThatHandlesItsOwnResponse extends Error { sendResponse(res: KibanaResponseFactory): IKibanaResponse; } - -export enum ErrorCode { - RECURSION_LIMIT = 'recursion-limit-reached', - UNSUPPORTED_LOG_FORMAT = 'unsupported-log-format', -} diff --git a/x-pack/plugins/integration_assistant/server/lib/errors/unsupported_error.ts b/x-pack/plugins/integration_assistant/server/lib/errors/unsupported_error.ts index 17f433bc4243d1..39fd73b8c82c17 100644 --- a/x-pack/plugins/integration_assistant/server/lib/errors/unsupported_error.ts +++ b/x-pack/plugins/integration_assistant/server/lib/errors/unsupported_error.ts @@ -6,10 +6,11 @@ */ import { KibanaResponseFactory } from '@kbn/core/server'; -import { ErrorCode, ErrorThatHandlesItsOwnResponse } from './types'; +import { ErrorThatHandlesItsOwnResponse } from './types'; +import { UNSUPPORTED_LOG_SAMPLES_FORMAT_ERROR_CODE } from '../../../common/constants'; export class UnsupportedLogFormatError extends Error implements ErrorThatHandlesItsOwnResponse { - private readonly errorCode: ErrorCode = ErrorCode.UNSUPPORTED_LOG_FORMAT; + private readonly errorCode: string = UNSUPPORTED_LOG_SAMPLES_FORMAT_ERROR_CODE; // eslint-disable-next-line @typescript-eslint/no-useless-constructor constructor(message: string) { diff --git a/x-pack/plugins/integration_assistant/server/routes/analyze_logs_routes.ts b/x-pack/plugins/integration_assistant/server/routes/analyze_logs_routes.ts index 16a048252119cd..164b3d501f3218 100644 --- a/x-pack/plugins/integration_assistant/server/routes/analyze_logs_routes.ts +++ b/x-pack/plugins/integration_assistant/server/routes/analyze_logs_routes.ts @@ -17,11 +17,11 @@ import { getLLMClass, getLLMType } from '../util/llm'; import { buildRouteValidationWithZod } from '../util/route_validation'; import { withAvailability } from './with_availability'; import { isErrorThatHandlesItsOwnResponse, UnsupportedLogFormatError } from '../lib/errors'; -import { - RECURSION_LIMIT_ANALYZE_LOGS_ERROR, - UNSUPPORTED_LOG_SAMPLES, -} from '../lib/errors/translations'; import { handleRecursionError } from './routes_util'; +import { + RECURSION_LIMIT_ANALYZE_LOGS_ERROR_CODE, + UNSUPPORTED_LOG_SAMPLES_FORMAT_ERROR_CODE, +} from '../../common/constants'; export function registerAnalyzeLogsRoutes( router: IRouter @@ -88,12 +88,12 @@ export function registerAnalyzeLogsRoutes( const graphResults = await graph.invoke(logFormatParameters, options); const graphLogFormat = graphResults.results.samplesFormat.name; if (graphLogFormat === 'unsupported' || graphLogFormat === 'csv') { - throw new UnsupportedLogFormatError(UNSUPPORTED_LOG_SAMPLES); + throw new UnsupportedLogFormatError(UNSUPPORTED_LOG_SAMPLES_FORMAT_ERROR_CODE); } return res.ok({ body: AnalyzeLogsResponse.parse(graphResults) }); } catch (err) { try { - handleRecursionError(err, RECURSION_LIMIT_ANALYZE_LOGS_ERROR); + handleRecursionError(err, RECURSION_LIMIT_ANALYZE_LOGS_ERROR_CODE); } catch (e) { if (isErrorThatHandlesItsOwnResponse(e)) { return e.sendResponse(res); diff --git a/x-pack/plugins/integration_assistant/server/routes/build_integration_routes.ts b/x-pack/plugins/integration_assistant/server/routes/build_integration_routes.ts index eabb2cd332ab2d..3d4527e31b165f 100644 --- a/x-pack/plugins/integration_assistant/server/routes/build_integration_routes.ts +++ b/x-pack/plugins/integration_assistant/server/routes/build_integration_routes.ts @@ -13,8 +13,7 @@ import { buildRouteValidationWithZod } from '../util/route_validation'; import { withAvailability } from './with_availability'; import { isErrorThatHandlesItsOwnResponse } from '../lib/errors'; import { handleRecursionError } from './routes_util'; -import { RECURSION_LIMIT_ERROR } from '../lib/errors/translations'; - +import { RECURSION_LIMIT_ERROR_CODE } from '../../common/constants'; export function registerIntegrationBuilderRoutes( router: IRouter ) { @@ -43,7 +42,7 @@ export function registerIntegrationBuilderRoutes( }); } catch (err) { try { - handleRecursionError(err, RECURSION_LIMIT_ERROR); + handleRecursionError(err, RECURSION_LIMIT_ERROR_CODE); } catch (e) { if (isErrorThatHandlesItsOwnResponse(e)) { return e.sendResponse(response); diff --git a/x-pack/plugins/integration_assistant/server/routes/categorization_routes.ts b/x-pack/plugins/integration_assistant/server/routes/categorization_routes.ts index 028374ad80962d..7f5fbfd7d27869 100644 --- a/x-pack/plugins/integration_assistant/server/routes/categorization_routes.ts +++ b/x-pack/plugins/integration_assistant/server/routes/categorization_routes.ts @@ -22,7 +22,7 @@ import { buildRouteValidationWithZod } from '../util/route_validation'; import { withAvailability } from './with_availability'; import { isErrorThatHandlesItsOwnResponse } from '../lib/errors'; import { handleRecursionError } from './routes_util'; -import { RECURSION_LIMIT_ERROR } from '../lib/errors/translations'; +import { RECURSION_LIMIT_ERROR_CODE } from '../../common/constants'; export function registerCategorizationRoutes( router: IRouter @@ -103,7 +103,7 @@ export function registerCategorizationRoutes( return res.ok({ body: CategorizationResponse.parse(results) }); } catch (err) { try { - handleRecursionError(err, RECURSION_LIMIT_ERROR); + handleRecursionError(err, RECURSION_LIMIT_ERROR_CODE); } catch (e) { if (isErrorThatHandlesItsOwnResponse(e)) { return e.sendResponse(res); diff --git a/x-pack/plugins/integration_assistant/server/routes/ecs_routes.ts b/x-pack/plugins/integration_assistant/server/routes/ecs_routes.ts index 3ee0c8004ecb2d..71bb5e08bfa610 100644 --- a/x-pack/plugins/integration_assistant/server/routes/ecs_routes.ts +++ b/x-pack/plugins/integration_assistant/server/routes/ecs_routes.ts @@ -18,7 +18,7 @@ import { buildRouteValidationWithZod } from '../util/route_validation'; import { withAvailability } from './with_availability'; import { isErrorThatHandlesItsOwnResponse } from '../lib/errors'; import { handleRecursionError } from './routes_util'; -import { RECURSION_LIMIT_ERROR } from '../lib/errors/translations'; +import { RECURSION_LIMIT_ERROR_CODE } from '../../common/constants'; export function registerEcsRoutes(router: IRouter) { router.versioned @@ -97,7 +97,7 @@ export function registerEcsRoutes(router: IRouter) { router.versioned @@ -51,7 +51,7 @@ export function registerPipelineRoutes(router: IRouter) { router.versioned @@ -94,7 +94,7 @@ export function registerRelatedRoutes(router: IRouter Date: Tue, 24 Sep 2024 14:30:28 +0200 Subject: [PATCH 06/12] fix test --- .../steps/data_stream_step/generation_modal.test.tsx | 2 +- .../steps/data_stream_step/generation_modal.tsx | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_assistant/steps/data_stream_step/generation_modal.test.tsx b/x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_assistant/steps/data_stream_step/generation_modal.test.tsx index 3246caa81b0413..0825845090183a 100644 --- a/x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_assistant/steps/data_stream_step/generation_modal.test.tsx +++ b/x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_assistant/steps/data_stream_step/generation_modal.test.tsx @@ -277,7 +277,7 @@ describe('GenerationModal', () => { ); }); - describe('when the retrying successfully', () => { + describe('when retrying successfully', () => { beforeEach(async () => { await act(async () => { result.getByTestId('retryButton').click(); diff --git a/x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_assistant/steps/data_stream_step/generation_modal.tsx b/x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_assistant/steps/data_stream_step/generation_modal.tsx index b8870fce52af16..7b2d4afe9d51fa 100644 --- a/x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_assistant/steps/data_stream_step/generation_modal.tsx +++ b/x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_assistant/steps/data_stream_step/generation_modal.tsx @@ -182,7 +182,7 @@ export const useGeneration = ({ error: originalErrorMessage, }); - const errorCode = e.body.attributes?.errorCode; + const errorCode = e.body?.attributes?.errorCode; let errorMessage; if (errorCode != null) { errorMessage = i18n.ERROR_TRANSLATION[errorCode]; From bbe51e33c0c788b188441e46315793ab2d803937 Mon Sep 17 00:00:00 2001 From: Bharat Pasupula Date: Tue, 24 Sep 2024 14:39:25 +0200 Subject: [PATCH 07/12] Add test --- .../generation_modal.test.tsx | 71 +++++++++++++++++++ 1 file changed, 71 insertions(+) diff --git a/x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_assistant/steps/data_stream_step/generation_modal.test.tsx b/x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_assistant/steps/data_stream_step/generation_modal.test.tsx index 0825845090183a..a8e6a30ca5dfa4 100644 --- a/x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_assistant/steps/data_stream_step/generation_modal.test.tsx +++ b/x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_assistant/steps/data_stream_step/generation_modal.test.tsx @@ -293,4 +293,75 @@ describe('GenerationModal', () => { }); }); }); + + describe('when there are errors and a message body with error code', () => { + const errorMessage = 'error message'; + const errorCode = 'error code'; + const error = JSON.stringify({ + body: { + message: errorMessage, + attributes: { + errorCode, + }, + }, + }); + let result: RenderResult; + beforeEach(async () => { + mockRunEcsGraph.mockImplementationOnce(() => { + throw new Error(error); + }); + + await act(async () => { + result = render( + , + { wrapper } + ); + await waitFor(() => + expect(result.queryByTestId('generationErrorCallout')).toBeInTheDocument() + ); + }); + }); + + it('should show the error text', () => { + expect(result.queryByText(error)).toBeInTheDocument(); + }); + it('should render the retry button', () => { + expect(result.queryByTestId('retryButton')).toBeInTheDocument(); + }); + it('should report telemetry for generation error', () => { + expect(mockReportEvent).toHaveBeenCalledWith( + TelemetryEventType.IntegrationAssistantGenerationComplete, + { + sessionId: expect.any(String), + sampleRows: integrationSettings.logSamples?.length ?? 0, + actionTypeId: connector.actionTypeId, + model: expect.anything(), + provider: connector.apiProvider ?? 'unknown', + durationMs: expect.any(Number), + errorMessage: error, + } + ); + }); + + describe('when retrying successfully', () => { + beforeEach(async () => { + await act(async () => { + result.getByTestId('retryButton').click(); + await waitFor(() => expect(mockOnComplete).toBeCalled()); + }); + }); + + it('should not render the error callout', () => { + expect(result.queryByTestId('generationErrorCallout')).not.toBeInTheDocument(); + }); + it('should not render the retry button', () => { + expect(result.queryByTestId('retryButton')).not.toBeInTheDocument(); + }); + }); + }); }); From 0a943761c003d971a017b8b0f68794a7d9d01ea0 Mon Sep 17 00:00:00 2001 From: Bharat Pasupula Date: Tue, 24 Sep 2024 15:13:23 +0200 Subject: [PATCH 08/12] add test for handleerror --- .../server/routes/analyze_logs_routes.ts | 4 +- .../server/routes/build_integration_routes.ts | 4 +- .../server/routes/categorization_routes.ts | 4 +- .../server/routes/ecs_routes.ts | 4 +- .../server/routes/pipeline_routes.ts | 4 +- .../server/routes/related_routes.ts | 4 +- .../server/routes/routes_util.test.ts | 38 +++++++++++++++++++ .../server/routes/routes_util.ts | 12 +++++- 8 files changed, 61 insertions(+), 13 deletions(-) create mode 100644 x-pack/plugins/integration_assistant/server/routes/routes_util.test.ts diff --git a/x-pack/plugins/integration_assistant/server/routes/analyze_logs_routes.ts b/x-pack/plugins/integration_assistant/server/routes/analyze_logs_routes.ts index 164b3d501f3218..8195c0394d87b3 100644 --- a/x-pack/plugins/integration_assistant/server/routes/analyze_logs_routes.ts +++ b/x-pack/plugins/integration_assistant/server/routes/analyze_logs_routes.ts @@ -17,7 +17,7 @@ import { getLLMClass, getLLMType } from '../util/llm'; import { buildRouteValidationWithZod } from '../util/route_validation'; import { withAvailability } from './with_availability'; import { isErrorThatHandlesItsOwnResponse, UnsupportedLogFormatError } from '../lib/errors'; -import { handleRecursionError } from './routes_util'; +import { handleError } from './routes_util'; import { RECURSION_LIMIT_ANALYZE_LOGS_ERROR_CODE, UNSUPPORTED_LOG_SAMPLES_FORMAT_ERROR_CODE, @@ -93,7 +93,7 @@ export function registerAnalyzeLogsRoutes( return res.ok({ body: AnalyzeLogsResponse.parse(graphResults) }); } catch (err) { try { - handleRecursionError(err, RECURSION_LIMIT_ANALYZE_LOGS_ERROR_CODE); + handleError(err, RECURSION_LIMIT_ANALYZE_LOGS_ERROR_CODE); } catch (e) { if (isErrorThatHandlesItsOwnResponse(e)) { return e.sendResponse(res); diff --git a/x-pack/plugins/integration_assistant/server/routes/build_integration_routes.ts b/x-pack/plugins/integration_assistant/server/routes/build_integration_routes.ts index 3d4527e31b165f..95010485deffe7 100644 --- a/x-pack/plugins/integration_assistant/server/routes/build_integration_routes.ts +++ b/x-pack/plugins/integration_assistant/server/routes/build_integration_routes.ts @@ -12,7 +12,7 @@ import type { IntegrationAssistantRouteHandlerContext } from '../plugin'; import { buildRouteValidationWithZod } from '../util/route_validation'; import { withAvailability } from './with_availability'; import { isErrorThatHandlesItsOwnResponse } from '../lib/errors'; -import { handleRecursionError } from './routes_util'; +import { handleError } from './routes_util'; import { RECURSION_LIMIT_ERROR_CODE } from '../../common/constants'; export function registerIntegrationBuilderRoutes( router: IRouter @@ -42,7 +42,7 @@ export function registerIntegrationBuilderRoutes( }); } catch (err) { try { - handleRecursionError(err, RECURSION_LIMIT_ERROR_CODE); + handleError(err, RECURSION_LIMIT_ERROR_CODE); } catch (e) { if (isErrorThatHandlesItsOwnResponse(e)) { return e.sendResponse(response); diff --git a/x-pack/plugins/integration_assistant/server/routes/categorization_routes.ts b/x-pack/plugins/integration_assistant/server/routes/categorization_routes.ts index 7f5fbfd7d27869..6d70938c66e371 100644 --- a/x-pack/plugins/integration_assistant/server/routes/categorization_routes.ts +++ b/x-pack/plugins/integration_assistant/server/routes/categorization_routes.ts @@ -21,7 +21,7 @@ import { getLLMClass, getLLMType } from '../util/llm'; import { buildRouteValidationWithZod } from '../util/route_validation'; import { withAvailability } from './with_availability'; import { isErrorThatHandlesItsOwnResponse } from '../lib/errors'; -import { handleRecursionError } from './routes_util'; +import { handleError } from './routes_util'; import { RECURSION_LIMIT_ERROR_CODE } from '../../common/constants'; export function registerCategorizationRoutes( @@ -103,7 +103,7 @@ export function registerCategorizationRoutes( return res.ok({ body: CategorizationResponse.parse(results) }); } catch (err) { try { - handleRecursionError(err, RECURSION_LIMIT_ERROR_CODE); + handleError(err, RECURSION_LIMIT_ERROR_CODE); } catch (e) { if (isErrorThatHandlesItsOwnResponse(e)) { return e.sendResponse(res); diff --git a/x-pack/plugins/integration_assistant/server/routes/ecs_routes.ts b/x-pack/plugins/integration_assistant/server/routes/ecs_routes.ts index 71bb5e08bfa610..ee0ea9ff52d639 100644 --- a/x-pack/plugins/integration_assistant/server/routes/ecs_routes.ts +++ b/x-pack/plugins/integration_assistant/server/routes/ecs_routes.ts @@ -17,7 +17,7 @@ import { getLLMClass, getLLMType } from '../util/llm'; import { buildRouteValidationWithZod } from '../util/route_validation'; import { withAvailability } from './with_availability'; import { isErrorThatHandlesItsOwnResponse } from '../lib/errors'; -import { handleRecursionError } from './routes_util'; +import { handleError } from './routes_util'; import { RECURSION_LIMIT_ERROR_CODE } from '../../common/constants'; export function registerEcsRoutes(router: IRouter) { @@ -97,7 +97,7 @@ export function registerEcsRoutes(router: IRouter) { @@ -51,7 +51,7 @@ export function registerPipelineRoutes(router: IRouter) { @@ -94,7 +94,7 @@ export function registerRelatedRoutes(router: IRouter { + it('should throw a RecursionLimitError when given a GraphRecursionError', () => { + const errorMessage = 'Recursion limit exceeded'; + const errorCode = 'RECURSION_LIMIT_EXCEEDED'; + const recursionError = new GraphRecursionError(errorMessage); + + expect(() => { + handleError(recursionError, errorCode); + }).toThrow(RecursionLimitError); + expect(() => { + handleError(recursionError, errorCode); + }).toThrowError(errorMessage); + }); + + it('should rethrow the error when given an error that is not a GraphRecursionError', () => { + const errorMessage = 'Some other error'; + const errorCode = 'SOME_OTHER_ERROR'; + const otherError = new Error(errorMessage); + + expect(() => { + handleError(otherError, errorCode); + }).toThrow(otherError); + expect(() => { + handleError(otherError, errorCode); + }).toThrowError(errorMessage); + }); +}); diff --git a/x-pack/plugins/integration_assistant/server/routes/routes_util.ts b/x-pack/plugins/integration_assistant/server/routes/routes_util.ts index ceebfdafe381fd..3ec93b321ff962 100644 --- a/x-pack/plugins/integration_assistant/server/routes/routes_util.ts +++ b/x-pack/plugins/integration_assistant/server/routes/routes_util.ts @@ -8,7 +8,17 @@ import { GraphRecursionError } from '@langchain/langgraph'; import { RecursionLimitError } from '../lib/errors'; -export function handleRecursionError(err: Error, errorCode: string) { +/** + * Handles errors that occur during the execution of a function. + * If the error is an instance of GraphRecursionError, it throws a RecursionLimitError with the same message and error code. + * Otherwise, it rethrows the original error. + * + * @param err - The error that occurred. + * @param errorCode - The error code associated with the error. + * @throws {RecursionLimitError} If the error is an instance of GraphRecursionError. + * @throws {Error} The original error. + */ +export function handleError(err: Error, errorCode: string) { if (err instanceof GraphRecursionError) { throw new RecursionLimitError(err.message, errorCode); } From 7ca730176d4753a22da1b1a6b1637a0fe0a88fd9 Mon Sep 17 00:00:00 2001 From: Bharat Pasupula Date: Tue, 24 Sep 2024 15:27:01 +0200 Subject: [PATCH 09/12] update i18n translations --- .../steps/data_stream_step/translations.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_assistant/steps/data_stream_step/translations.ts b/x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_assistant/steps/data_stream_step/translations.ts index e8a2950f586e81..dba3208b35cd91 100644 --- a/x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_assistant/steps/data_stream_step/translations.ts +++ b/x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_assistant/steps/data_stream_step/translations.ts @@ -204,20 +204,20 @@ export const RETRY = i18n.translate('xpack.integrationAssistant.step.dataStream. export const ERROR_TRANSLATION = { [RECURSION_LIMIT_ANALYZE_LOGS_ERROR_CODE]: i18n.translate( - 'xpack.plugins.integration_assistant.server.errors.recursionLimitAnalyzeLogsErrorMessage', + 'xpack.integrationAssistant.errors.recursionLimitAnalyzeLogsErrorMessage', { defaultMessage: 'Please verify the format of log samples is correct and try again. Try with a fewer samples if error persists.', } ), [RECURSION_LIMIT_ERROR_CODE]: i18n.translate( - 'xpack.plugins.integration_assistant.server.errors.recursionLimitReached', + 'xpack.integrationAssistant.errors.recursionLimitReached', { defaultMessage: 'Max attempts exceeded. Please try again.', } ), [UNSUPPORTED_LOG_SAMPLES_FORMAT_ERROR_CODE]: i18n.translate( - 'xpack.plugins.integration_assistant.server.errors.unsupportedLogSamples', + 'xpack.integrationAssistant.errors.unsupportedLogSamples', { defaultMessage: 'Unsupported log format in the samples.', } From 77b925b84131d13b89c480f910c094ce7a76b3ad Mon Sep 17 00:00:00 2001 From: Bharat Pasupula Date: Wed, 25 Sep 2024 10:52:25 +0200 Subject: [PATCH 10/12] move error codes into enum --- .../integration_assistant/common/constants.ts | 9 ++++++--- .../steps/data_stream_step/generation_modal.tsx | 12 ++++-------- .../steps/data_stream_step/translations.ts | 12 ++++-------- .../server/lib/errors/unsupported_error.ts | 4 ++-- .../server/routes/analyze_logs_routes.ts | 11 ++++------- .../server/routes/build_integration_routes.ts | 6 +++--- .../server/routes/categorization_routes.ts | 6 +++--- .../server/routes/ecs_routes.ts | 6 +++--- .../server/routes/pipeline_routes.ts | 6 +++--- .../server/routes/related_routes.ts | 6 +++--- .../server/routes/routes_util.test.ts | 10 +++++----- .../server/routes/routes_util.ts | 2 +- 12 files changed, 41 insertions(+), 49 deletions(-) diff --git a/x-pack/plugins/integration_assistant/common/constants.ts b/x-pack/plugins/integration_assistant/common/constants.ts index c583ec7c9b86c9..3891c1e5e4343d 100644 --- a/x-pack/plugins/integration_assistant/common/constants.ts +++ b/x-pack/plugins/integration_assistant/common/constants.ts @@ -28,6 +28,9 @@ export const FLEET_PACKAGES_PATH = `/api/fleet/epm/packages`; export const MINIMUM_LICENSE_TYPE: LicenseType = 'enterprise'; // ErrorCodes -export const RECURSION_LIMIT_ERROR_CODE: string = 'recursion-limit'; -export const RECURSION_LIMIT_ANALYZE_LOGS_ERROR_CODE: string = 'recursion-limit-analyze-logs'; -export const UNSUPPORTED_LOG_SAMPLES_FORMAT_ERROR_CODE: string = 'unsupported-log-samples-format'; + +export enum ErrorCode { + RECURSION_LIMIT = 'recursion-limit', + RECURSION_LIMIT_ANALYZE_LOGS = 'recursion-limit-analyze-logs', + UNSUPPORTED_LOG_SAMPLES_FORMAT = 'unsupported-log-samples-format', +} diff --git a/x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_assistant/steps/data_stream_step/generation_modal.tsx b/x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_assistant/steps/data_stream_step/generation_modal.tsx index 7b2d4afe9d51fa..aefde66ed83dbc 100644 --- a/x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_assistant/steps/data_stream_step/generation_modal.tsx +++ b/x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_assistant/steps/data_stream_step/generation_modal.tsx @@ -42,6 +42,7 @@ import { useKibana } from '../../../../../common/hooks/use_kibana'; import type { State } from '../../state'; import * as i18n from './translations'; import { useTelemetry } from '../../../telemetry'; +import type { ErrorCode } from '../../../../../../common/constants'; export type OnComplete = (result: State['result']) => void; @@ -182,17 +183,12 @@ export const useGeneration = ({ error: originalErrorMessage, }); - const errorCode = e.body?.attributes?.errorCode; - let errorMessage; + let errorMessage = originalErrorMessage; + const errorCode = e.body?.attributes?.errorCode as ErrorCode | undefined; if (errorCode != null) { errorMessage = i18n.ERROR_TRANSLATION[errorCode]; } - - if (errorMessage != null) { - setError(errorMessage); - } else { - setError(originalErrorMessage); - } + setError(errorMessage); } finally { setIsRequesting(false); } diff --git a/x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_assistant/steps/data_stream_step/translations.ts b/x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_assistant/steps/data_stream_step/translations.ts index dba3208b35cd91..e499b5e2a29185 100644 --- a/x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_assistant/steps/data_stream_step/translations.ts +++ b/x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_assistant/steps/data_stream_step/translations.ts @@ -6,11 +6,7 @@ */ import { i18n } from '@kbn/i18n'; -import { - RECURSION_LIMIT_ANALYZE_LOGS_ERROR_CODE, - RECURSION_LIMIT_ERROR_CODE, - UNSUPPORTED_LOG_SAMPLES_FORMAT_ERROR_CODE, -} from '../../../../../../common/constants'; +import { ErrorCode } from '../../../../../../common/constants'; export const INTEGRATION_NAME_TITLE = i18n.translate( 'xpack.integrationAssistant.step.dataStream.integrationNameTitle', @@ -203,20 +199,20 @@ export const RETRY = i18n.translate('xpack.integrationAssistant.step.dataStream. }); export const ERROR_TRANSLATION = { - [RECURSION_LIMIT_ANALYZE_LOGS_ERROR_CODE]: i18n.translate( + [ErrorCode.RECURSION_LIMIT_ANALYZE_LOGS]: i18n.translate( 'xpack.integrationAssistant.errors.recursionLimitAnalyzeLogsErrorMessage', { defaultMessage: 'Please verify the format of log samples is correct and try again. Try with a fewer samples if error persists.', } ), - [RECURSION_LIMIT_ERROR_CODE]: i18n.translate( + [ErrorCode.RECURSION_LIMIT]: i18n.translate( 'xpack.integrationAssistant.errors.recursionLimitReached', { defaultMessage: 'Max attempts exceeded. Please try again.', } ), - [UNSUPPORTED_LOG_SAMPLES_FORMAT_ERROR_CODE]: i18n.translate( + [ErrorCode.UNSUPPORTED_LOG_SAMPLES_FORMAT]: i18n.translate( 'xpack.integrationAssistant.errors.unsupportedLogSamples', { defaultMessage: 'Unsupported log format in the samples.', diff --git a/x-pack/plugins/integration_assistant/server/lib/errors/unsupported_error.ts b/x-pack/plugins/integration_assistant/server/lib/errors/unsupported_error.ts index 39fd73b8c82c17..2b31c05d01a5b6 100644 --- a/x-pack/plugins/integration_assistant/server/lib/errors/unsupported_error.ts +++ b/x-pack/plugins/integration_assistant/server/lib/errors/unsupported_error.ts @@ -7,10 +7,10 @@ import { KibanaResponseFactory } from '@kbn/core/server'; import { ErrorThatHandlesItsOwnResponse } from './types'; -import { UNSUPPORTED_LOG_SAMPLES_FORMAT_ERROR_CODE } from '../../../common/constants'; +import { ErrorCode } from '../../../common/constants'; export class UnsupportedLogFormatError extends Error implements ErrorThatHandlesItsOwnResponse { - private readonly errorCode: string = UNSUPPORTED_LOG_SAMPLES_FORMAT_ERROR_CODE; + private readonly errorCode: string = ErrorCode.UNSUPPORTED_LOG_FORMAT; // eslint-disable-next-line @typescript-eslint/no-useless-constructor constructor(message: string) { diff --git a/x-pack/plugins/integration_assistant/server/routes/analyze_logs_routes.ts b/x-pack/plugins/integration_assistant/server/routes/analyze_logs_routes.ts index 8195c0394d87b3..2f0f3db47a7a97 100644 --- a/x-pack/plugins/integration_assistant/server/routes/analyze_logs_routes.ts +++ b/x-pack/plugins/integration_assistant/server/routes/analyze_logs_routes.ts @@ -17,11 +17,8 @@ import { getLLMClass, getLLMType } from '../util/llm'; import { buildRouteValidationWithZod } from '../util/route_validation'; import { withAvailability } from './with_availability'; import { isErrorThatHandlesItsOwnResponse, UnsupportedLogFormatError } from '../lib/errors'; -import { handleError } from './routes_util'; -import { - RECURSION_LIMIT_ANALYZE_LOGS_ERROR_CODE, - UNSUPPORTED_LOG_SAMPLES_FORMAT_ERROR_CODE, -} from '../../common/constants'; +import { handleCustomErrors } from './routes_util'; +import { ErrorCode } from '../../common/constants'; export function registerAnalyzeLogsRoutes( router: IRouter @@ -88,12 +85,12 @@ export function registerAnalyzeLogsRoutes( const graphResults = await graph.invoke(logFormatParameters, options); const graphLogFormat = graphResults.results.samplesFormat.name; if (graphLogFormat === 'unsupported' || graphLogFormat === 'csv') { - throw new UnsupportedLogFormatError(UNSUPPORTED_LOG_SAMPLES_FORMAT_ERROR_CODE); + throw new UnsupportedLogFormatError(ErrorCode.UNSUPPORTED_LOG_SAMPLES_FORMAT); } return res.ok({ body: AnalyzeLogsResponse.parse(graphResults) }); } catch (err) { try { - handleError(err, RECURSION_LIMIT_ANALYZE_LOGS_ERROR_CODE); + handleCustomErrors(err, ErrorCode.RECURSION_LIMIT_ANALYZE_LOGS); } catch (e) { if (isErrorThatHandlesItsOwnResponse(e)) { return e.sendResponse(res); diff --git a/x-pack/plugins/integration_assistant/server/routes/build_integration_routes.ts b/x-pack/plugins/integration_assistant/server/routes/build_integration_routes.ts index 95010485deffe7..1a7ecb58a20622 100644 --- a/x-pack/plugins/integration_assistant/server/routes/build_integration_routes.ts +++ b/x-pack/plugins/integration_assistant/server/routes/build_integration_routes.ts @@ -12,8 +12,8 @@ import type { IntegrationAssistantRouteHandlerContext } from '../plugin'; import { buildRouteValidationWithZod } from '../util/route_validation'; import { withAvailability } from './with_availability'; import { isErrorThatHandlesItsOwnResponse } from '../lib/errors'; -import { handleError } from './routes_util'; -import { RECURSION_LIMIT_ERROR_CODE } from '../../common/constants'; +import { handleCustomErrors } from './routes_util'; +import { ErrorCode } from '../../common/constants'; export function registerIntegrationBuilderRoutes( router: IRouter ) { @@ -42,7 +42,7 @@ export function registerIntegrationBuilderRoutes( }); } catch (err) { try { - handleError(err, RECURSION_LIMIT_ERROR_CODE); + handleCustomErrors(err, ErrorCode.RECURSION_LIMIT); } catch (e) { if (isErrorThatHandlesItsOwnResponse(e)) { return e.sendResponse(response); diff --git a/x-pack/plugins/integration_assistant/server/routes/categorization_routes.ts b/x-pack/plugins/integration_assistant/server/routes/categorization_routes.ts index 6d70938c66e371..635ef08dcdf9c0 100644 --- a/x-pack/plugins/integration_assistant/server/routes/categorization_routes.ts +++ b/x-pack/plugins/integration_assistant/server/routes/categorization_routes.ts @@ -21,8 +21,8 @@ import { getLLMClass, getLLMType } from '../util/llm'; import { buildRouteValidationWithZod } from '../util/route_validation'; import { withAvailability } from './with_availability'; import { isErrorThatHandlesItsOwnResponse } from '../lib/errors'; -import { handleError } from './routes_util'; -import { RECURSION_LIMIT_ERROR_CODE } from '../../common/constants'; +import { handleCustomErrors } from './routes_util'; +import { ErrorCode } from '../../common/constants'; export function registerCategorizationRoutes( router: IRouter @@ -103,7 +103,7 @@ export function registerCategorizationRoutes( return res.ok({ body: CategorizationResponse.parse(results) }); } catch (err) { try { - handleError(err, RECURSION_LIMIT_ERROR_CODE); + handleCustomErrors(err, ErrorCode.RECURSION_LIMIT); } catch (e) { if (isErrorThatHandlesItsOwnResponse(e)) { return e.sendResponse(res); diff --git a/x-pack/plugins/integration_assistant/server/routes/ecs_routes.ts b/x-pack/plugins/integration_assistant/server/routes/ecs_routes.ts index ee0ea9ff52d639..12d77c66a11322 100644 --- a/x-pack/plugins/integration_assistant/server/routes/ecs_routes.ts +++ b/x-pack/plugins/integration_assistant/server/routes/ecs_routes.ts @@ -17,8 +17,8 @@ import { getLLMClass, getLLMType } from '../util/llm'; import { buildRouteValidationWithZod } from '../util/route_validation'; import { withAvailability } from './with_availability'; import { isErrorThatHandlesItsOwnResponse } from '../lib/errors'; -import { handleError } from './routes_util'; -import { RECURSION_LIMIT_ERROR_CODE } from '../../common/constants'; +import { handleCustomErrors } from './routes_util'; +import { ErrorCode } from '../../common/constants'; export function registerEcsRoutes(router: IRouter) { router.versioned @@ -97,7 +97,7 @@ export function registerEcsRoutes(router: IRouter) { router.versioned @@ -51,7 +51,7 @@ export function registerPipelineRoutes(router: IRouter) { router.versioned @@ -94,7 +94,7 @@ export function registerRelatedRoutes(router: IRouter { const recursionError = new GraphRecursionError(errorMessage); expect(() => { - handleError(recursionError, errorCode); + handleCustomErrors(recursionError, errorCode); }).toThrow(RecursionLimitError); expect(() => { - handleError(recursionError, errorCode); + handleCustomErrors(recursionError, errorCode); }).toThrowError(errorMessage); }); @@ -29,10 +29,10 @@ describe('handleError', () => { const otherError = new Error(errorMessage); expect(() => { - handleError(otherError, errorCode); + handleCustomErrors(otherError, errorCode); }).toThrow(otherError); expect(() => { - handleError(otherError, errorCode); + handleCustomErrors(otherError, errorCode); }).toThrowError(errorMessage); }); }); diff --git a/x-pack/plugins/integration_assistant/server/routes/routes_util.ts b/x-pack/plugins/integration_assistant/server/routes/routes_util.ts index 3ec93b321ff962..ef37c998d15eb8 100644 --- a/x-pack/plugins/integration_assistant/server/routes/routes_util.ts +++ b/x-pack/plugins/integration_assistant/server/routes/routes_util.ts @@ -18,7 +18,7 @@ import { RecursionLimitError } from '../lib/errors'; * @throws {RecursionLimitError} If the error is an instance of GraphRecursionError. * @throws {Error} The original error. */ -export function handleError(err: Error, errorCode: string) { +export function handleCustomErrors(err: Error, errorCode: string) { if (err instanceof GraphRecursionError) { throw new RecursionLimitError(err.message, errorCode); } From e67be77d8e3229ec17ac6ed7d9962a1292e061d2 Mon Sep 17 00:00:00 2001 From: Bharat Pasupula Date: Wed, 25 Sep 2024 13:37:02 +0200 Subject: [PATCH 11/12] fix types --- .../server/lib/errors/unsupported_error.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/x-pack/plugins/integration_assistant/server/lib/errors/unsupported_error.ts b/x-pack/plugins/integration_assistant/server/lib/errors/unsupported_error.ts index 2b31c05d01a5b6..79c4f2ccf69a1e 100644 --- a/x-pack/plugins/integration_assistant/server/lib/errors/unsupported_error.ts +++ b/x-pack/plugins/integration_assistant/server/lib/errors/unsupported_error.ts @@ -10,7 +10,7 @@ import { ErrorThatHandlesItsOwnResponse } from './types'; import { ErrorCode } from '../../../common/constants'; export class UnsupportedLogFormatError extends Error implements ErrorThatHandlesItsOwnResponse { - private readonly errorCode: string = ErrorCode.UNSUPPORTED_LOG_FORMAT; + private readonly errorCode: string = ErrorCode.UNSUPPORTED_LOG_SAMPLES_FORMAT; // eslint-disable-next-line @typescript-eslint/no-useless-constructor constructor(message: string) { From 97661e0f6cc61622b892a85f5b30924d9cf628cf Mon Sep 17 00:00:00 2001 From: Bharat Pasupula Date: Wed, 25 Sep 2024 14:26:36 +0200 Subject: [PATCH 12/12] minor nits --- .../steps/data_stream_step/translations.ts | 2 +- .../server/routes/routes_util.test.ts | 5 +++-- .../integration_assistant/server/routes/routes_util.ts | 8 ++++++-- 3 files changed, 10 insertions(+), 5 deletions(-) diff --git a/x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_assistant/steps/data_stream_step/translations.ts b/x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_assistant/steps/data_stream_step/translations.ts index e499b5e2a29185..017a1a9c29caa1 100644 --- a/x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_assistant/steps/data_stream_step/translations.ts +++ b/x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_assistant/steps/data_stream_step/translations.ts @@ -198,7 +198,7 @@ export const RETRY = i18n.translate('xpack.integrationAssistant.step.dataStream. defaultMessage: 'Retry', }); -export const ERROR_TRANSLATION = { +export const ERROR_TRANSLATION: Record = { [ErrorCode.RECURSION_LIMIT_ANALYZE_LOGS]: i18n.translate( 'xpack.integrationAssistant.errors.recursionLimitAnalyzeLogsErrorMessage', { diff --git a/x-pack/plugins/integration_assistant/server/routes/routes_util.test.ts b/x-pack/plugins/integration_assistant/server/routes/routes_util.test.ts index 61c381c6fe542b..30e68079ce9375 100644 --- a/x-pack/plugins/integration_assistant/server/routes/routes_util.test.ts +++ b/x-pack/plugins/integration_assistant/server/routes/routes_util.test.ts @@ -8,11 +8,12 @@ import { handleCustomErrors } from './routes_util'; import { GraphRecursionError } from '@langchain/langgraph'; import { RecursionLimitError } from '../lib/errors'; +import { ErrorCode } from '../../common/constants'; describe('handleError', () => { it('should throw a RecursionLimitError when given a GraphRecursionError', () => { const errorMessage = 'Recursion limit exceeded'; - const errorCode = 'RECURSION_LIMIT_EXCEEDED'; + const errorCode = ErrorCode.RECURSION_LIMIT; const recursionError = new GraphRecursionError(errorMessage); expect(() => { @@ -25,7 +26,7 @@ describe('handleError', () => { it('should rethrow the error when given an error that is not a GraphRecursionError', () => { const errorMessage = 'Some other error'; - const errorCode = 'SOME_OTHER_ERROR'; + const errorCode = ErrorCode.RECURSION_LIMIT; const otherError = new Error(errorMessage); expect(() => { diff --git a/x-pack/plugins/integration_assistant/server/routes/routes_util.ts b/x-pack/plugins/integration_assistant/server/routes/routes_util.ts index ef37c998d15eb8..5622392cd06a92 100644 --- a/x-pack/plugins/integration_assistant/server/routes/routes_util.ts +++ b/x-pack/plugins/integration_assistant/server/routes/routes_util.ts @@ -6,6 +6,7 @@ */ import { GraphRecursionError } from '@langchain/langgraph'; +import { ErrorCode } from '../../common/constants'; import { RecursionLimitError } from '../lib/errors'; /** @@ -18,9 +19,12 @@ import { RecursionLimitError } from '../lib/errors'; * @throws {RecursionLimitError} If the error is an instance of GraphRecursionError. * @throws {Error} The original error. */ -export function handleCustomErrors(err: Error, errorCode: string) { +export function handleCustomErrors( + err: Error, + recursionErrorCode: ErrorCode.RECURSION_LIMIT | ErrorCode.RECURSION_LIMIT_ANALYZE_LOGS +) { if (err instanceof GraphRecursionError) { - throw new RecursionLimitError(err.message, errorCode); + throw new RecursionLimitError(err.message, recursionErrorCode); } throw err; }