-
Notifications
You must be signed in to change notification settings - Fork 8.3k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[Security Solution] defend insights langgraph upgrade #211038
[Security Solution] defend insights langgraph upgrade #211038
Conversation
ed41e6f
to
f48438b
Compare
Pinging @elastic/security-defend-workflows (Team:Defend Workflows) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Code LGTM! As for the architecture behind this upgrade - I’ll leave that to the GenAI team 😉.
Left a few questions and minor notes. The only “important” one is the lack of aggregation on path when fetching file events. Was this intentional? I still see value in fetching only unique paths, even with the larger window. - #211038 (comment)
I’ll run an end-to-end test tomorrow to ensure everything works on the frontend and will approve if all checks out.
}> => { | ||
const llmType = getLlmType(apiConfig.actionTypeId); | ||
const model = apiConfig.model; | ||
const tags = [DEFEND_INSIGHTS_TOOL_ID, llmType, model].flatMap((tag) => tag ?? []); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
const tags = [DEFEND_INSIGHTS_TOOL_ID, llmType, model].flatMap((tag) => tag ?? []); | |
const tags = [DEFEND_INSIGHTS_TOOL_ID, llmType, model].filter(Boolean); |
* Defend Insights graph. | ||
* | ||
* Refer to the following diagram for this graph: | ||
* x-pack/solutions/security/plugins/elastic_assistant/docs/img/default_defend_insights_graph.png |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
404 😢
private insightType: DefendInsightType; | ||
private endpointIds: string[]; | ||
private anonymizationFields?: AnonymizationFieldResponse[]; | ||
private esClient: ElasticsearchClient; | ||
private onNewReplacements?: (newReplacements: Replacements) => void; | ||
private replacements?: Replacements; | ||
private size?: number; | ||
private start?: DateMath; | ||
private end?: DateMath; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
If we want to follow strict class members types - all these can be readonly
since set only in the constructor.
return { | ||
allow_no_indices: true, | ||
fields: ['_id', 'agent.id', 'process.executable'], | ||
query: { | ||
bool: { | ||
must: [ | ||
{ | ||
terms: { | ||
'agent.id': endpointIds, | ||
}, | ||
}, | ||
{ | ||
range: { | ||
'@timestamp': { | ||
gte: gte ?? 'now-24h', | ||
lte: lte ?? 'now', | ||
}, | ||
}, | ||
}, | ||
], | ||
}, | ||
}, | ||
size: size ?? SIZE, | ||
sort: [ | ||
{ | ||
'@timestamp': { | ||
order: 'desc', | ||
}, | ||
}, | ||
], | ||
_source: false, | ||
ignore_unavailable: true, | ||
index: [FILE_EVENTS_INDEX_PATTERN], | ||
}; | ||
} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Q: Was the omission of the aggregations that were deduplicating by process.executable intentional?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Good catch, must have copied this over way back when and forgot to update after we added aggregations.
import { getCombined } from '.'; | ||
|
||
describe('getCombined', () => { | ||
it('combines two strings correctly', () => { | ||
const combinedGenerations = 'generation1'; | ||
const partialResponse = 'response1'; | ||
const expected = 'generation1response1'; | ||
const result = getCombined({ combinedGenerations, partialResponse }); | ||
|
||
expect(result).toEqual(expected); | ||
}); | ||
|
||
it('handles empty combinedGenerations', () => { | ||
const combinedGenerations = ''; | ||
const partialResponse = 'response1'; | ||
const expected = 'response1'; | ||
const result = getCombined({ combinedGenerations, partialResponse }); | ||
|
||
expect(result).toEqual(expected); | ||
}); | ||
|
||
it('handles an empty partialResponse', () => { | ||
const combinedGenerations = 'generation1'; | ||
const partialResponse = ''; | ||
const expected = 'generation1'; | ||
const result = getCombined({ combinedGenerations, partialResponse }); | ||
|
||
expect(result).toEqual(expected); | ||
}); | ||
}); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Very good coverage :D
* 2.0. | ||
*/ | ||
|
||
export const getContinuePrompt = |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
A const somewhere among other consts?
* 2.0. | ||
*/ | ||
|
||
export const getDefaultRefinePrompt = |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
A const somewhere among other constants?
export type GraphMetadata = AssistantGraphMetadata | AttackDiscoveryGraphMetadata; | ||
export interface DefendInsightsGraphMetadata { | ||
getDefaultDefendInsightsGraph: GetDefendInsightsGraph; | ||
graphType: typeof DEFEND_INSIGHTS_TOOL_ID; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I guess we could rename this const and drop tool
from it.
*/ | ||
import { FieldMap } from '@kbn/data-stream-adapter'; | ||
|
||
export const defendInsightsFieldMap: FieldMap = { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This is not being used anywhere?
|
||
const DEFAULT_PAGE_SIZE = 10; | ||
|
||
export class DefendInsightsDataClient extends AIAssistantDataClient { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Q: I don't see this class being initialized anywhere? Also, helpers in this directory are being used only here? What's the story behind /persistence
dir?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Good catch. .../ai_assistant_data_clients/defend_insights
is supposed to be moved to persistence
so I forgot to delete the old stuff and use persistence instead.
import { EndpointError } from '../../../../common/endpoint/errors'; | ||
|
||
export class InvalidDefendInsightTypeError extends EndpointError { | ||
export class InvalidDefendInsightTypeError extends Error { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Consider making elastic/security-defend-workflows
CODEOWNERS
of:
x-pack/solutions/security/plugins/elastic_assistant/server/lib/defend_insights
x-pack/solutions/security/plugins/elastic_assistant/server/routes/defend_insights
as that would cover most of the files below that are (by default) are owned by elastic/security-generative-ai
:
Files by Code Owner
elastic/security-defend-workflows
- x-pack/solutions/security/plugins/elastic_assistant/server/lib/defend_insights/errors.ts
- x-pack/solutions/security/plugins/elastic_assistant/server/lib/defend_insights/graphs/default_defend_insights_graph/nodes/generate/schema/incompatible_antivirus.ts
- x-pack/solutions/security/plugins/elastic_assistant/server/lib/defend_insights/graphs/default_defend_insights_graph/nodes/generate/schema/index.ts
- x-pack/solutions/security/plugins/elastic_assistant/server/lib/defend_insights/graphs/default_defend_insights_graph/nodes/helpers/prompts/index.ts
- x-pack/solutions/security/plugins/security_solution/server/assistant/tools/defend_insights/get_events/get_file_events_query.ts
- x-pack/solutions/security/plugins/security_solution/server/assistant/tools/defend_insights/get_events/index.test.ts
- x-pack/solutions/security/plugins/security_solution/server/assistant/tools/defend_insights/get_events/index.ts
- x-pack/solutions/security/plugins/security_solution/server/assistant/tools/defend_insights/index.test.ts
- x-pack/solutions/security/plugins/security_solution/server/assistant/tools/defend_insights/index.ts
- x-pack/solutions/security/plugins/security_solution/server/assistant/tools/defend_insights/prompts/incompatible_antivirus.ts
- x-pack/solutions/security/plugins/security_solution/server/endpoint/services/workflow_insights/builders/index.ts
- x-pack/solutions/security/plugins/security_solution/server/endpoint/services/workflow_insights/index.test.ts
- x-pack/solutions/security/plugins/security_solution/server/endpoint/services/workflow_insights/index.ts
elastic/security-generative-ai
- x-pack/solutions/security/plugins/elastic_assistant/server/mocks/raw_defend_insights.ts
- x-pack/solutions/security/plugins/elastic_assistant/server/lib/defend_insights/errors.ts
- x-pack/solutions/security/plugins/elastic_assistant/server/lib/defend_insights/graphs/default_defend_insights_graph/constants.ts
- x-pack/solutions/security/plugins/elastic_assistant/server/lib/defend_insights/graphs/default_defend_insights_graph/edges/generate_or_end/helpers/get_generate_or_end_decision/index.test.ts
- x-pack/solutions/security/plugins/elastic_assistant/server/lib/defend_insights/graphs/default_defend_insights_graph/edges/generate_or_end/helpers/get_generate_or_end_decision/index.ts
- x-pack/solutions/security/plugins/elastic_assistant/server/lib/defend_insights/graphs/default_defend_insights_graph/edges/generate_or_end/index.test.ts
- x-pack/solutions/security/plugins/elastic_assistant/server/lib/defend_insights/graphs/default_defend_insights_graph/edges/generate_or_end/index.ts
- x-pack/solutions/security/plugins/elastic_assistant/server/lib/defend_insights/graphs/default_defend_insights_graph/edges/generate_or_refine_or_end/helpers/get_generate_or_refine_or_end_decision/index.test.ts
- x-pack/solutions/security/plugins/elastic_assistant/server/lib/defend_insights/graphs/default_defend_insights_graph/edges/generate_or_refine_or_end/helpers/get_generate_or_refine_or_end_decision/index.ts
- x-pack/solutions/security/plugins/elastic_assistant/server/lib/defend_insights/graphs/default_defend_insights_graph/edges/generate_or_refine_or_end/helpers/get_should_end/index.test.ts
- x-pack/solutions/security/plugins/elastic_assistant/server/lib/defend_insights/graphs/default_defend_insights_graph/edges/generate_or_refine_or_end/helpers/get_should_end/index.ts
- x-pack/solutions/security/plugins/elastic_assistant/server/lib/defend_insights/graphs/default_defend_insights_graph/edges/generate_or_refine_or_end/index.test.ts
- x-pack/solutions/security/plugins/elastic_assistant/server/lib/defend_insights/graphs/default_defend_insights_graph/edges/generate_or_refine_or_end/index.ts
- x-pack/solutions/security/plugins/elastic_assistant/server/lib/defend_insights/graphs/default_defend_insights_graph/edges/helpers/get_has_results/index.test.ts
- x-pack/solutions/security/plugins/elastic_assistant/server/lib/defend_insights/graphs/default_defend_insights_graph/edges/helpers/get_has_results/index.ts
- x-pack/solutions/security/plugins/elastic_assistant/server/lib/defend_insights/graphs/default_defend_insights_graph/edges/refine_or_end/helpers/get_refine_or_end_decision/index.test.ts
- x-pack/solutions/security/plugins/elastic_assistant/server/lib/defend_insights/graphs/default_defend_insights_graph/edges/refine_or_end/helpers/get_refine_or_end_decision/index.ts
- x-pack/solutions/security/plugins/elastic_assistant/server/lib/defend_insights/graphs/default_defend_insights_graph/edges/refine_or_end/helpers/get_should_end/index.test.ts
- x-pack/solutions/security/plugins/elastic_assistant/server/lib/defend_insights/graphs/default_defend_insights_graph/edges/refine_or_end/helpers/get_should_end/index.ts
- x-pack/solutions/security/plugins/elastic_assistant/server/lib/defend_insights/graphs/default_defend_insights_graph/edges/refine_or_end/index.test.ts
- x-pack/solutions/security/plugins/elastic_assistant/server/lib/defend_insights/graphs/default_defend_insights_graph/edges/refine_or_end/index.ts
- x-pack/solutions/security/plugins/elastic_assistant/server/lib/defend_insights/graphs/default_defend_insights_graph/edges/retrieve_anonymized_events_or_generate/get_retrieve_or_generate/index.test.ts
- x-pack/solutions/security/plugins/elastic_assistant/server/lib/defend_insights/graphs/default_defend_insights_graph/edges/retrieve_anonymized_events_or_generate/get_retrieve_or_generate/index.ts
- x-pack/solutions/security/plugins/elastic_assistant/server/lib/defend_insights/graphs/default_defend_insights_graph/edges/retrieve_anonymized_events_or_generate/index.test.ts
- x-pack/solutions/security/plugins/elastic_assistant/server/lib/defend_insights/graphs/default_defend_insights_graph/edges/retrieve_anonymized_events_or_generate/index.ts
- x-pack/solutions/security/plugins/elastic_assistant/server/lib/defend_insights/graphs/default_defend_insights_graph/helpers/get_max_hallucination_failures_reached/index.test.ts
- x-pack/solutions/security/plugins/elastic_assistant/server/lib/defend_insights/graphs/default_defend_insights_graph/helpers/get_max_hallucination_failures_reached/index.ts
- x-pack/solutions/security/plugins/elastic_assistant/server/lib/defend_insights/graphs/default_defend_insights_graph/helpers/get_max_retries_reached/index.test.ts
- x-pack/solutions/security/plugins/elastic_assistant/server/lib/defend_insights/graphs/default_defend_insights_graph/helpers/get_max_retries_reached/index.ts
- x-pack/solutions/security/plugins/elastic_assistant/server/lib/defend_insights/graphs/default_defend_insights_graph/index.ts
- x-pack/solutions/security/plugins/elastic_assistant/server/lib/defend_insights/graphs/default_defend_insights_graph/mock/mock_anonymization_fields.ts
- x-pack/solutions/security/plugins/elastic_assistant/server/lib/defend_insights/graphs/default_defend_insights_graph/mock/mock_anonymized_events.ts
- x-pack/solutions/security/plugins/elastic_assistant/server/lib/defend_insights/graphs/default_defend_insights_graph/mock/mock_defend_insights.ts
- x-pack/solutions/security/plugins/elastic_assistant/server/lib/defend_insights/graphs/default_defend_insights_graph/mock/mock_file_events_query_results.ts
- x-pack/solutions/security/plugins/elastic_assistant/server/lib/defend_insights/graphs/default_defend_insights_graph/nodes/generate/helpers/discard_previous_generations/index.test.ts
- x-pack/solutions/security/plugins/elastic_assistant/server/lib/defend_insights/graphs/default_defend_insights_graph/nodes/generate/helpers/discard_previous_generations/index.ts
- x-pack/solutions/security/plugins/elastic_assistant/server/lib/defend_insights/graphs/default_defend_insights_graph/nodes/generate/helpers/get_anonymized_events_from_state/index.test.ts
- x-pack/solutions/security/plugins/elastic_assistant/server/lib/defend_insights/graphs/default_defend_insights_graph/nodes/generate/helpers/get_anonymized_events_from_state/index.ts
- x-pack/solutions/security/plugins/elastic_assistant/server/lib/defend_insights/graphs/default_defend_insights_graph/nodes/generate/helpers/get_events_context_prompt/index.test.ts
- x-pack/solutions/security/plugins/elastic_assistant/server/lib/defend_insights/graphs/default_defend_insights_graph/nodes/generate/helpers/get_events_context_prompt/index.ts
- x-pack/solutions/security/plugins/elastic_assistant/server/lib/defend_insights/graphs/default_defend_insights_graph/nodes/generate/helpers/get_use_unrefined_results/index.test.ts
- x-pack/solutions/security/plugins/elastic_assistant/server/lib/defend_insights/graphs/default_defend_insights_graph/nodes/generate/helpers/get_use_unrefined_results/index.ts
- x-pack/solutions/security/plugins/elastic_assistant/server/lib/defend_insights/graphs/default_defend_insights_graph/nodes/generate/index.test.ts
- x-pack/solutions/security/plugins/elastic_assistant/server/lib/defend_insights/graphs/default_defend_insights_graph/nodes/generate/index.ts
- x-pack/solutions/security/plugins/elastic_assistant/server/lib/defend_insights/graphs/default_defend_insights_graph/nodes/generate/schema/incompatible_antivirus.ts
- x-pack/solutions/security/plugins/elastic_assistant/server/lib/defend_insights/graphs/default_defend_insights_graph/nodes/generate/schema/index.ts
- x-pack/solutions/security/plugins/elastic_assistant/server/lib/defend_insights/graphs/default_defend_insights_graph/nodes/helpers/add_trailing_backticks_if_necessary/index.test.ts
- x-pack/solutions/security/plugins/elastic_assistant/server/lib/defend_insights/graphs/default_defend_insights_graph/nodes/helpers/add_trailing_backticks_if_necessary/index.ts
- x-pack/solutions/security/plugins/elastic_assistant/server/lib/defend_insights/graphs/default_defend_insights_graph/nodes/helpers/extract_json/index.test.ts
- x-pack/solutions/security/plugins/elastic_assistant/server/lib/defend_insights/graphs/default_defend_insights_graph/nodes/helpers/extract_json/index.ts
- x-pack/solutions/security/plugins/elastic_assistant/server/lib/defend_insights/graphs/default_defend_insights_graph/nodes/helpers/generations_are_repeating/index.test.ts
- x-pack/solutions/security/plugins/elastic_assistant/server/lib/defend_insights/graphs/default_defend_insights_graph/nodes/helpers/generations_are_repeating/index.ts
- x-pack/solutions/security/plugins/elastic_assistant/server/lib/defend_insights/graphs/default_defend_insights_graph/nodes/helpers/get_chain_with_format_instructions/index.test.ts
- x-pack/solutions/security/plugins/elastic_assistant/server/lib/defend_insights/graphs/default_defend_insights_graph/nodes/helpers/get_chain_with_format_instructions/index.ts
- x-pack/solutions/security/plugins/elastic_assistant/server/lib/defend_insights/graphs/default_defend_insights_graph/nodes/helpers/get_combined/index.test.ts
- x-pack/solutions/security/plugins/elastic_assistant/server/lib/defend_insights/graphs/default_defend_insights_graph/nodes/helpers/get_combined/index.ts
- x-pack/solutions/security/plugins/elastic_assistant/server/lib/defend_insights/graphs/default_defend_insights_graph/nodes/helpers/get_combined_prompt/index.test.ts
- x-pack/solutions/security/plugins/elastic_assistant/server/lib/defend_insights/graphs/default_defend_insights_graph/nodes/helpers/get_combined_prompt/index.ts
- x-pack/solutions/security/plugins/elastic_assistant/server/lib/defend_insights/graphs/default_defend_insights_graph/nodes/helpers/get_continue_prompt/index.test.ts
- x-pack/solutions/security/plugins/elastic_assistant/server/lib/defend_insights/graphs/default_defend_insights_graph/nodes/helpers/get_continue_prompt/index.ts
- x-pack/solutions/security/plugins/elastic_assistant/server/lib/defend_insights/graphs/default_defend_insights_graph/nodes/helpers/get_output_parser/index.test.ts
- x-pack/solutions/security/plugins/elastic_assistant/server/lib/defend_insights/graphs/default_defend_insights_graph/nodes/helpers/get_output_parser/index.ts
- x-pack/solutions/security/plugins/elastic_assistant/server/lib/defend_insights/graphs/default_defend_insights_graph/nodes/helpers/parse_combined_or_throw/index.ts
- x-pack/solutions/security/plugins/elastic_assistant/server/lib/defend_insights/graphs/default_defend_insights_graph/nodes/helpers/prompts/incompatible_antivirus.ts
- x-pack/solutions/security/plugins/elastic_assistant/server/lib/defend_insights/graphs/default_defend_insights_graph/nodes/helpers/prompts/index.ts
- x-pack/solutions/security/plugins/elastic_assistant/server/lib/defend_insights/graphs/default_defend_insights_graph/nodes/helpers/response_is_hallucinated/index.test.ts
- x-pack/solutions/security/plugins/elastic_assistant/server/lib/defend_insights/graphs/default_defend_insights_graph/nodes/helpers/response_is_hallucinated/index.ts
- x-pack/solutions/security/plugins/elastic_assistant/server/lib/defend_insights/graphs/default_defend_insights_graph/nodes/refine/helpers/discard_previous_refinements/index.test.ts
- x-pack/solutions/security/plugins/elastic_assistant/server/lib/defend_insights/graphs/default_defend_insights_graph/nodes/refine/helpers/discard_previous_refinements/index.ts
- x-pack/solutions/security/plugins/elastic_assistant/server/lib/defend_insights/graphs/default_defend_insights_graph/nodes/refine/helpers/get_combined_refine_prompt/index.test.ts
- x-pack/solutions/security/plugins/elastic_assistant/server/lib/defend_insights/graphs/default_defend_insights_graph/nodes/refine/helpers/get_combined_refine_prompt/index.ts
- x-pack/solutions/security/plugins/elastic_assistant/server/lib/defend_insights/graphs/default_defend_insights_graph/nodes/refine/helpers/get_default_refine_prompt/index.ts
- x-pack/solutions/security/plugins/elastic_assistant/server/lib/defend_insights/graphs/default_defend_insights_graph/nodes/refine/helpers/get_use_unrefined_results/index.test.ts
- x-pack/solutions/security/plugins/elastic_assistant/server/lib/defend_insights/graphs/default_defend_insights_graph/nodes/refine/helpers/get_use_unrefined_results/index.ts
- x-pack/solutions/security/plugins/elastic_assistant/server/lib/defend_insights/graphs/default_defend_insights_graph/nodes/refine/index.ts
- x-pack/solutions/security/plugins/elastic_assistant/server/lib/defend_insights/graphs/default_defend_insights_graph/nodes/retriever/anonymized_events_retriever/index.test.ts
- x-pack/solutions/security/plugins/elastic_assistant/server/lib/defend_insights/graphs/default_defend_insights_graph/nodes/retriever/anonymized_events_retriever/index.ts
- x-pack/solutions/security/plugins/elastic_assistant/server/lib/defend_insights/graphs/default_defend_insights_graph/nodes/retriever/helpers/get_anonymized_events/get_events/get_file_events_query.ts
- x-pack/solutions/security/plugins/elastic_assistant/server/lib/defend_insights/graphs/default_defend_insights_graph/nodes/retriever/helpers/get_anonymized_events/get_events/index.ts
- x-pack/solutions/security/plugins/elastic_assistant/server/lib/defend_insights/graphs/default_defend_insights_graph/nodes/retriever/helpers/get_anonymized_events/index.test.ts
- x-pack/solutions/security/plugins/elastic_assistant/server/lib/defend_insights/graphs/default_defend_insights_graph/nodes/retriever/helpers/get_anonymized_events/index.ts
- x-pack/solutions/security/plugins/elastic_assistant/server/lib/defend_insights/graphs/default_defend_insights_graph/nodes/retriever/index.test.ts
- x-pack/solutions/security/plugins/elastic_assistant/server/lib/defend_insights/graphs/default_defend_insights_graph/nodes/retriever/index.ts
- x-pack/solutions/security/plugins/elastic_assistant/server/lib/defend_insights/graphs/default_defend_insights_graph/state/index.test.ts
- x-pack/solutions/security/plugins/elastic_assistant/server/lib/defend_insights/graphs/default_defend_insights_graph/state/index.ts
- x-pack/solutions/security/plugins/elastic_assistant/server/lib/defend_insights/graphs/default_defend_insights_graph/types.ts
- x-pack/solutions/security/plugins/elastic_assistant/server/lib/defend_insights/persistence/field_maps_configuration.ts
- x-pack/solutions/security/plugins/elastic_assistant/server/lib/defend_insights/persistence/get_defend_insight.test.ts
- x-pack/solutions/security/plugins/elastic_assistant/server/lib/defend_insights/persistence/get_defend_insight.ts
- x-pack/solutions/security/plugins/elastic_assistant/server/lib/defend_insights/persistence/helpers.test.ts
- x-pack/solutions/security/plugins/elastic_assistant/server/lib/defend_insights/persistence/helpers.ts
- x-pack/solutions/security/plugins/elastic_assistant/server/lib/defend_insights/persistence/index.test.ts
- x-pack/solutions/security/plugins/elastic_assistant/server/lib/defend_insights/persistence/index.ts
- x-pack/solutions/security/plugins/elastic_assistant/server/lib/defend_insights/persistence/types.ts
- x-pack/solutions/security/plugins/elastic_assistant/server/lib/langchain/graphs/index.ts
- x-pack/solutions/security/plugins/elastic_assistant/server/plugin.ts
- x-pack/solutions/security/plugins/elastic_assistant/server/routes/defend_insights/helpers.test.ts
- x-pack/solutions/security/plugins/elastic_assistant/server/routes/defend_insights/helpers.ts
- x-pack/solutions/security/plugins/elastic_assistant/server/routes/defend_insights/post_defend_insights.test.ts
- x-pack/solutions/security/plugins/elastic_assistant/server/routes/defend_insights/post_defend_insights.ts
- x-pack/solutions/security/plugins/elastic_assistant/server/routes/defend_insights/translations.ts
- x-pack/solutions/security/plugins/elastic_assistant/server/routes/evaluate/get_graphs_from_names/index.ts
- x-pack/solutions/security/plugins/elastic_assistant/server/services/app_context.ts
- x-pack/solutions/security/plugins/elastic_assistant/server/types.ts
elastic/security-solution
- x-pack/solutions/security/plugins/elastic_assistant/server/lib/defend_insights/errors.ts
- x-pack/solutions/security/plugins/elastic_assistant/server/lib/defend_insights/graphs/default_defend_insights_graph/nodes/generate/schema/incompatible_antivirus.ts
- x-pack/solutions/security/plugins/elastic_assistant/server/lib/defend_insights/graphs/default_defend_insights_graph/nodes/generate/schema/index.ts
- x-pack/solutions/security/plugins/elastic_assistant/server/lib/defend_insights/graphs/default_defend_insights_graph/nodes/helpers/prompts/index.ts
- x-pack/solutions/security/plugins/security_solution/server/assistant/tools/defend_insights/get_events/get_file_events_query.ts
- x-pack/solutions/security/plugins/security_solution/server/assistant/tools/defend_insights/get_events/index.test.ts
- x-pack/solutions/security/plugins/security_solution/server/assistant/tools/defend_insights/get_events/index.ts
- x-pack/solutions/security/plugins/security_solution/server/assistant/tools/defend_insights/index.test.ts
- x-pack/solutions/security/plugins/security_solution/server/assistant/tools/defend_insights/index.ts
- x-pack/solutions/security/plugins/security_solution/server/assistant/tools/defend_insights/prompts/incompatible_antivirus.ts
- x-pack/solutions/security/plugins/security_solution/server/assistant/tools/index.ts
- x-pack/solutions/security/plugins/security_solution/server/endpoint/services/workflow_insights/builders/index.ts
- x-pack/solutions/security/plugins/security_solution/server/endpoint/services/workflow_insights/index.test.ts
- x-pack/solutions/security/plugins/security_solution/server/endpoint/services/workflow_insights/index.ts
- x-pack/solutions/security/plugins/security_solution/server/plugin.ts
a101254
to
c7aaef8
Compare
Addressed comments. Can I get another 👀 @andrew-goldstein @szwarckonrad?
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Looks good, great job!
* migrates defend insights to langgraph * adds output chunking / refinement
0856e6d
to
8d7b309
Compare
8d7b309
to
09e8cf7
Compare
💚 Build Succeeded
Metrics [docs]Public APIs missing comments
Public APIs missing exports
History
|
Summary
This is intended to be a "minimal" migration for Defend Insights to langgraph + output chunking. Other than the increased events due to the context increase from output chunking, the functionality is unchanged.
Checklist