Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
427 commits
Select commit Hold shift + click to select a range
df70833
chore(deps): bump @babel/runtime from 7.26.0 to 7.27.0 in /keep-ui (#…
dependabot[bot] Apr 12, 2025
4936999
fix: return from http provider in action (#4516)
talboren Apr 12, 2025
6b64ab2
fix: enhance TextField component to handle sensitive configuration (#…
tuantran0910 Apr 12, 2025
452e160
feat: Add columns configuration for alerts preset widget (#4503)
skynetigor Apr 13, 2025
b600218
fix: topology not showing alert count and a few more (#4524)
talboren Apr 14, 2025
af38166
fix: validation for secrets and consts (#4525)
talboren Apr 14, 2025
05573b5
fix: Weird incident select all incidents checkbox behavior (#4519)
skynetigor Apr 14, 2025
726ae04
fix: Inverted condition in facet options gives weird results (#4522)
skynetigor Apr 14, 2025
6957bd5
fix: Replace toSorted with slice and sort for consistent column order…
skynetigor Apr 15, 2025
9d294b1
fix: grafana provider webhook info and provider search (#4527)
Matvey-Kuk Apr 15, 2025
c00ee88
fix: alert fingerprint not found (#4533)
talboren Apr 15, 2025
98236b1
fix: topology for the incident (#4535)
Matvey-Kuk Apr 15, 2025
f85036b
fix: pagerduty oauth2 logs (#4540)
talboren Apr 15, 2025
1a6f7db
fix: http provider enrich (#4544)
talboren Apr 15, 2025
fc29a58
fix: wrap elastic enrich with try except and log (#4546)
talboren Apr 15, 2025
6e71143
fix: Update backend enrichment to leverage `UUIDType` processing (#4537)
VladimirFilonov Apr 15, 2025
2f556ad
feat: more verbose (#4549)
shahargl Apr 15, 2025
ce0f3fc
feat(logging.py): added RotatingFileHandler settings for log file rol…
DolevNe Apr 16, 2025
81ce23c
fix: Update UptimeKuma status handling and datetime formatting (#4552)
VladimirFilonov Apr 16, 2025
e5ba825
fix: Refactor content initialization in GCPMonitoring provider (#4555)
VladimirFilonov Apr 16, 2025
3e67708
fix(opensearch): access key and key secret to not mandatory (#4558)
talboren Apr 16, 2025
dc42c26
fix: keycloak verify bug (#4564)
shahargl Apr 16, 2025
33ea14a
fix: topology services without names (#4562)
Matvey-Kuk Apr 17, 2025
460b78f
fix(pagerduty): pagination fix (#4570)
talboren Apr 17, 2025
ab9c5ec
feat: workflow versioning (#4451)
Kiryous Apr 17, 2025
efa8eeb
feat: posthog provider (#4572)
shahargl Apr 17, 2025
81c22c2
fix: pagerduty sort by (#4578)
talboren Apr 17, 2025
67e7fb3
feat: self signed cert support for prometheus (#4581)
shahargl Apr 18, 2025
931d61f
fix: Update __save_error_alerts to handle single AlertDto input (#4584)
VladimirFilonov Apr 18, 2025
567781d
fix: Refactor tenant configurations handling for better robustness (#…
VladimirFilonov Apr 18, 2025
225e933
fix: Handle race conditions when updating incidents in database (#4588)
VladimirFilonov Apr 18, 2025
b88d3a8
fix(utils): convert string indices to int in index() function to prev…
nordby Apr 18, 2025
7ef6766
fix: wf versions migration (#4575)
Kiryous Apr 19, 2025
f714c75
feat: batch alerts enrichment using cel (#4568)
tuantran0910 Apr 20, 2025
da16fb3
fix: Replace some workflows exception logging with warning and includ…
VladimirFilonov Apr 22, 2025
b97882d
fix: Move alert enrichment outside conditional block for get_incident…
VladimirFilonov Apr 22, 2025
28223d3
fix: Enhance logging and event handling in Mailgun provider (#4602)
VladimirFilonov Apr 22, 2025
10f4d83
fix(pagerduty): incident alert is None in some cases (#4609)
talboren Apr 23, 2025
d39afd3
fix: Workflow facets stop updating when using search (#4614)
skynetigor Apr 23, 2025
64c0111
fix: Improve "in" CEL operator behavior with null (#4611)
skynetigor Apr 23, 2025
d4775d3
fix: workflow-updating-via-s3 (#4622)
Matvey-Kuk Apr 28, 2025
0a42ab1
fix: Incident field cant be queried (#4620)
skynetigor Apr 28, 2025
fd191b9
chore(deps): bump h11 from 0.14.0 to 0.16.0 (#4624)
dependabot[bot] Apr 28, 2025
99714c3
fix: Refactor retry logic to handle additional DB errors (#4625)
VladimirFilonov Apr 28, 2025
a8c82b9
feat: Use monaco editor instead of query builder for CEL (#4597)
skynetigor Apr 28, 2025
937041b
fix: Handle None property metadata in facet selection (#4627)
skynetigor Apr 28, 2025
653b762
fix: Fix cosmetic issues in CelInput (#4629)
skynetigor Apr 28, 2025
1ebb056
chore: bump version `0.42.2` (#4631)
shahargl Apr 28, 2025
a7a450f
fix: Improve timeline layout and add alert fingerprint display (#4634)
VladimirFilonov Apr 28, 2025
bfadf62
chore: remove Mailchimp, remove Frigade, fix some vulns (#4636)
talboren Apr 28, 2025
3724a36
fix: Enhance DB retry logic to handle StaleDataError (#4638)
VladimirFilonov Apr 28, 2025
0a196f4
fix: Update middleware to exclude /api/healthcheck from auth (#4639)
VladimirFilonov Apr 28, 2025
610a7ac
fix: Fix bug causing E2E to fail (#4641)
skynetigor Apr 29, 2025
0462580
feat: add clipboard functionality to copy alert fingerprint in AlertS…
tuantran0910 Apr 29, 2025
4cf963b
fix: Skip instance-level enrichment for elastic. Ensure enrichments a…
VladimirFilonov Apr 29, 2025
d2e8b78
fix: dummy workflow per tenant (#4600)
Kiryous Apr 29, 2025
4280465
fix: duplicate wf provisioning (#4652)
Kiryous Apr 29, 2025
4acdc1c
feat: Add linting for cel input (#4654)
skynetigor Apr 29, 2025
0fc6620
feat: add more keep workflow functions (#4657)
tuantran0910 Apr 30, 2025
fc01ed6
feat: add support for user mentions in Adaptive Cards for Teams notif…
tuantran0910 Apr 30, 2025
da7cd90
fix: delete workflows that are not provisioned anymore (#4664)
Kiryous May 1, 2025
75493f8
chore: bump version `0.42.2` (#4672)
Kiryous May 1, 2025
ef354f8
fix: graylog and zabbix provider verify ssl switch (#4675)
talboren May 1, 2025
e786a33
fix: 4238 bug zabbix provider is not compatible with zabbix 60 and za…
talboren May 1, 2025
8363adc
fix: pagerduty with `unkown` title (#4682)
shahargl May 2, 2025
b9f4e61
fix: Fix bug when clicking on severity/status 0 matched option showed…
skynetigor May 3, 2025
2bd391e
fix: Use INCIDENT_TIME_ISO instead of INCIDENT_TIME for site24x7 prov…
VladimirFilonov May 4, 2025
1f1799f
chore: log failing parsed events (#4688)
talboren May 4, 2025
4eedbaf
fix: kibana name (#4689)
shahargl May 4, 2025
b2b7c7d
feat: grafana datasource-managed alerts (#4693)
shahargl May 4, 2025
f57e936
feat: show provider version (#4695)
shahargl May 4, 2025
eb442b4
fix: test wf provisioning (#4697)
Kiryous May 4, 2025
087942d
feat: workflow trigger with cel expression (#4577)
talboren May 5, 2025
4992d98
feat: Toggle noise reduction features via tenant configuration (#4534)
skynetigor May 5, 2025
78cfae3
fix: provisioned provider should update with the latest configuration…
tuantran0910 May 5, 2025
e4d2462
fix: workflow yaml schema and workflow examples (#4667)
Kiryous May 5, 2025
efd0ab9
chore(deps): add awscli (#4707)
talboren May 6, 2025
58381d1
feat: Add support for displaying incident details in alerts (#4646)
VladimirFilonov May 6, 2025
984ae52
fix: labels namespace filtering in rules not working (#4670)
skynetigor May 6, 2025
b97a2c5
fix: Filter alerts by timeperiod from calendar doesnt work (#4692)
skynetigor May 6, 2025
b842655
fix: Can't query unicode characters like ± using CEL / Facets (#4701)
skynetigor May 6, 2025
ed6bde3
fix: Fix incorrectly set value to monaco editor in CelInput (#4708)
skynetigor May 6, 2025
7e3b290
fix: k8s failed to run `list_namespaced_event` (#4714)
talboren May 6, 2025
f4c0449
feat(auth): keycloak multi org (#4716)
shahargl May 6, 2025
d350d81
fix: fail safely when CEL conversion fails in wf manager (#4718)
talboren May 6, 2025
b1e8a73
fix: CEL query with dictionary like property access work incorrectly …
skynetigor May 6, 2025
4c59f25
fix: keycloak multiorg (#4727)
shahargl May 7, 2025
89b3235
fix(typo): cleanup for consistency with official naming (#4729)
thbkrkr May 7, 2025
e922882
fix: oauth2 proxy with user/pass auth (#4735)
talboren May 8, 2025
764e8a2
fix: provisioning providers with no auth config (#4741)
Kiryous May 8, 2025
319170e
chore: verbosity on Kibana scope validation (#4743)
talboren May 8, 2025
61be570
fix: slack oauth2 provider name (#4745)
talboren May 8, 2025
d22dfb1
fix: slack oauth2 no_auth error (#4751)
talboren May 9, 2025
25f1681
fix: bug slack no auth error with attachements and oauth2 (#4752)
talboren May 9, 2025
929bf24
fix: `psycopg2.errors.NotNullViolation` while updating workflows (#4…
Kiryous May 10, 2025
5142d21
chore: loki provider SSL verification (#4760)
talboren May 10, 2025
2ce1baa
fix: Replace alerts_count calculation with subquery and add recalcula…
VladimirFilonov May 11, 2025
8ddac6d
fix: incident is UUID (#4763)
talboren May 11, 2025
4a58bc4
fix: disappearing workflow inputs in UI builder (#4748)
Kiryous May 11, 2025
3a89c1e
fix: Fix hidden "Enable SSL verification" for Grafana Loki provider (…
skynetigor May 12, 2025
11b8893
fix: check yaml editor has unsaved changes on click "Run now" (#4724)
Kiryous May 12, 2025
73a3a32
feat: Improve user interaction with workflow templates (#4725)
skynetigor May 13, 2025
ba30f2d
fix: Change source/services facets behavior for Incident (#4733)
skynetigor May 14, 2025
c479b97
fix: cant save a valid CEL expression (#4781)
skynetigor May 14, 2025
92861c1
fix: use 0.01 for 0s executions and use log scale in wf graphs (#4783)
Kiryous May 14, 2025
b1edff0
fix: on-failure in yaml definition (#4775)
Kiryous May 14, 2025
cb3d633
feat: Add threshold support for Correlation Rule (#4793)
VladimirFilonov May 15, 2025
0495b09
feat: add arithmetic operations to keep built in functions (#4761)
korolenkowork May 15, 2025
085a905
docs: update required Zabbix scopes (#4704)
becker May 15, 2025
6b4fe7e
feat: Pagerduty Provider: incident enrichments #4663 (#4680)
bbcorp May 15, 2025
16474ce
fix: Fixed recalculate alerts_count for incidents migration (#4770)
VladimirFilonov May 15, 2025
cd8a972
feat: SNOW topology tolerant to missing permissions in CMDB (#4710)
Matvey-Kuk May 15, 2025
7d126de
fix: merge migrations heads (#4798)
Kiryous May 15, 2025
c663348
chore(deps): bump undici from 6.21.1 to 6.21.2 in /keep-ui (#4808)
dependabot[bot] May 15, 2025
b504c7a
fix: Revert "feat: Pagerduty Provider: incident enrichments #4663" (#…
Matvey-Kuk May 15, 2025
2aedfb2
feat: Make elastic index refresh strategy configurable via env variab…
VladimirFilonov May 17, 2025
cb1b6d3
feat: Add slack message with attachment and updates workflow example …
kissze May 17, 2025
3336657
fix: Slack oAuth handling fixes (#4805)
kissze May 17, 2025
e5631d3
fix: workflow-graph caused by type: "linear" (#4801)
Kiryous May 17, 2025
cc9dba3
feat: wf-provisioning-more-logs (#4822)
Matvey-Kuk May 17, 2025
1a3000d
fix(mysql): client commit when insert/update/delete (#4810)
talboren May 17, 2025
77203d0
fix: permissions on `cli.py` (#4826)
shahargl May 19, 2025
99bf446
fix: delete_user (#4827)
shahargl May 19, 2025
eb03a82
fix: handle nested object fields in alerts table widget (#4824)
lukeod May 19, 2025
2988c1b
fix: Catch also IntegrityError, StaleDataError in retry_on_db_error (…
VladimirFilonov May 19, 2025
dd21878
fix: Add support to customize ignorable statuses for maintenance wind…
VladimirFilonov May 19, 2025
0cabe8e
chore: remove wip workflow (kubernetes) (#4831)
shahargl May 19, 2025
d699f9f
feat: Add Icinga2 Provider to Push Monitoring Alerts from Icinga2 to …
DMMutua May 19, 2025
37b8d11
fix: alert evaluation (#4835)
shahargl May 19, 2025
f2a0081
feat: wf alert postgres (#4838)
shahargl May 19, 2025
d0b661a
chore(deps): bump setuptools from 75.6.0 to 78.1.1 (#4842)
dependabot[bot] May 20, 2025
7d902b1
fix: catch no origin in PD (#4848)
talboren May 20, 2025
68f8e70
fix: last executions in get_all_workflows_with_last_execution (#4832)
Kiryous May 20, 2025
8107977
chore: Add unit tests for shared lib utils and relocate buildNestedOb…
lukeod May 20, 2025
b261a3f
fix: message about failure to write to clipboard (#4845)
Kiryous May 20, 2025
7ad6c46
fix: no workflows found for execution from alert or incident (#4858)
Kiryous May 21, 2025
75fdc48
docs: installation.mdx to fix helm upgrade values for TLS (#4861)
Federico-Baldan May 21, 2025
b5d3713
feat: Add Flux CD provider for service topology and alert integration…
Kunal-Darekar May 22, 2025
7c5b4c8
feat: Add user mention functionality to incident comments (#4649)
hemangsk May 22, 2025
1ae49bf
fix: event body in workflow test runs (#4867)
Kiryous May 22, 2025
918a8b3
fix: Introduce zustand state to FacetsPanel to improve maintainabilit…
skynetigor May 22, 2025
48310a9
fix: dismiss and dismissUntil (#4870)
talboren May 22, 2025
811b505
fix: status not getting updated after acknowledged (#4873)
talboren May 22, 2025
ac9ef74
fix: Saved preset not working on UI (#4880)
skynetigor May 23, 2025
ad5c537
fix: lookup_by_name if updating workflows from a workflow (#4864)
Kiryous May 23, 2025
2bceea1
fix: statuscake uptime alerts (#4891)
shahargl May 23, 2025
d4ef107
fix: parse python-style regex groups in new extraction form (#4900)
Kiryous May 25, 2025
43a3204
fix(ui): prevent AlertSideBar when selecting text (#4899)
talboren May 25, 2025
e298a1a
fix(ui): incidents group by incident name (#4896)
talboren May 25, 2025
13c9442
fix(api): get startedAt for freshly pushed alerts (#4901)
talboren May 25, 2025
56a208f
fix: minor fixes in CEL filters (#4898)
shahargl May 25, 2025
68c78b6
fix: feed clean query (#4906)
shahargl May 25, 2025
6b02d78
fix: improve dashboard widget column sizing and prevent cutoff (#4893)
lukeod May 25, 2025
0eaa88c
fix: workflows are duplicated when applying via CLI (#4907)
Kiryous May 25, 2025
541a207
fix: update user exceptions (#4904)
Kiryous May 25, 2025
c46685b
fix: statuscake (#4917)
shahargl May 26, 2025
8bdc748
fix: flaky tests (#4909)
Kiryous May 26, 2025
28e5ff3
fix: status cake (#4918)
shahargl May 26, 2025
eee1794
feat: aws SM rotation policy (#4915)
talboren May 27, 2025
cda0ea8
feat: firingStartTimeSinceLastResolved (#4911)
talboren May 27, 2025
5ccff81
fix: invoking provider methods (#4914)
Kiryous May 27, 2025
83cc7e7
fix: Implement "has" CEL operator support (#4924)
skynetigor May 28, 2025
6217c72
fix: smtp (#4930)
shahargl May 28, 2025
175177a
fix: Fix boolean handling in CEL-to-SQL and in facets (#4894)
skynetigor May 28, 2025
59b4c64
fix: Add logging for errors in CEL to AST conversion (#4932)
skynetigor May 28, 2025
e52257e
feat: support enrich array (#4935)
shahargl May 28, 2025
e7f4095
docs: remove api-ref in favor of https://api.keephq.dev/redoc (#4938)
talboren May 28, 2025
8e207f5
fix: sorting for startedAt field (#4936)
lukeod May 29, 2025
9cefe4e
feat: Add env vars for noise reduction navbar links (#4945)
skynetigor May 29, 2025
efc5b06
feat: Use CelInput to display CEL in preset widget (#4947)
skynetigor Jun 1, 2025
020359b
fix: sanitize html from user input (#4946)
Kiryous Jun 1, 2025
dba16da
feat: add `from_timestamp` keep function (#4952)
Kiryous Jun 1, 2025
fdf1c7d
fix: validate variable in action inside foreach container (#4953)
Kiryous Jun 1, 2025
e2f0759
fix: workflow `consts` could be of many types (#4955)
Kiryous Jun 1, 2025
4c00c91
fix: Pagination not reset after filtering results in empty page (#4…
skynetigor Jun 2, 2025
b588c3e
fix: alert evaluation (#4961)
shahargl Jun 2, 2025
f78c8ce
feat: bash with shell (#4966)
shahargl Jun 3, 2025
1316857
fix: split workflow execution and logs queries to prevent OOM (#4964)
Kiryous Jun 4, 2025
ba9c791
feat: auto incident assignee (#4973)
talboren Jun 4, 2025
904c682
fix: return 400 from /run or /test if workflow is invalid (#4963)
Kiryous Jun 4, 2025
e47f34d
docs(auth): capitalize valid options for auth (#4978)
talboren Jun 4, 2025
d3be911
docs: Create oauth2-proxy-gitlab.md (#4969)
evelita17 Jun 5, 2025
3caff53
fix: Noisy presets do not play sound (#4979)
skynetigor Jun 5, 2025
f04945f
fix: mustache yaml validation (#4976)
Kiryous Jun 5, 2025
e4f1e3d
fix: Bug with incorrecty converted CelAST to react query builder rule…
skynetigor Jun 5, 2025
123b06a
fix: Add "Clear Selection" button for alerts page to improve UX (#4960)
skynetigor Jun 5, 2025
9c5dcec
chore: bump version from 0.45.1 to 0.45.2 (#4988)
skynetigor Jun 5, 2025
a2ca1d0
chore: Improve provider docs (#4944)
lukeod Jun 9, 2025
646e8dd
feat(ui): add "Collapse all" and "Expand all" to group by on alerts t…
shahargl Jun 10, 2025
cb47d16
feat(ui): add alert sidebar to incident table (#5001)
shahargl Jun 10, 2025
fd178cf
chore(deps): bump requests from 2.32.3 to 2.32.4 (#5000)
dependabot[bot] Jun 10, 2025
e69b703
fix: Fix boolean handling bug in sqlite (#5003)
skynetigor Jun 10, 2025
305b84f
chore(deps-dev): bump brace-expansion from 1.1.11 to 1.1.12 in /keep-…
dependabot[bot] Jun 12, 2025
cd4d86a
fix: get_all_workflows_with_last_execution shouldn't return dummy wor…
Kiryous Jun 12, 2025
65703d2
feat: support OPENAI_MODEL_NAME override and fix Copilot runtime init…
knownasmobin Jun 12, 2025
5c56c4d
feat(provider): Implement ticket 5014 with unit tests (#5015)
shahargl Jun 12, 2025
ad57ead
fix: legit html in alert and incident descriptions (#5004)
Kiryous Jun 13, 2025
99dade3
fix: updated parsing logic for pingdom provider (#5017)
battkajs Jun 13, 2025
f273817
build: bump version to 0.45.4 (#5021)
Kiryous Jun 13, 2025
db6aa2e
feat: add Redis Sentinel support for high availability (#5008)
ns-rboyd Jun 16, 2025
2c821c9
fix: Log request headers in case of No valid authentication method fo…
VladimirFilonov Jun 16, 2025
879b6bc
fix: wrong code (#5035)
shahargl Jun 16, 2025
e326a6f
fix: flacky e2e test `test_run_workflow_from_alert_and_incident` (#5037)
Kiryous Jun 17, 2025
6a7fe6d
chore(deps): bump protobuf from 5.29.2 to 5.29.5 (#5042)
dependabot[bot] Jun 17, 2025
8b9133f
fix: bug authentication errors hard to investigate without extra data…
VladimirFilonov Jun 17, 2025
41a96d8
feat: add AUTH_SESSION_TIMEOUT environment variable for configurable …
skynetigor Jun 17, 2025
acccadb
fix: Use correct section for AUTH_SESSION_TIMEOUT in docs (#5046)
skynetigor Jun 17, 2025
7a4cbc0
fix(provider): Graylog provider search method (#5044)
kissze Jun 17, 2025
cd02954
fix: Align workflows executions limits in facet query and /runs endpo…
VladimirFilonov Jun 17, 2025
a95becc
fix: Fix bug on incidents pagination (#5058)
skynetigor Jun 18, 2025
1afcb8c
feat: add end-to-end test for interval workflow (#5054)
skynetigor Jun 18, 2025
0871d37
fix: Add filter to exclude test runs in workflow query (#5059)
VladimirFilonov Jun 18, 2025
a1b575e
fix: keep_provider _notify foreach (#5061)
Kiryous Jun 18, 2025
6298732
test: foreach jumps to the end of workflow in UI Builder (#5031)
Kiryous Jun 18, 2025
9a33fb3
chore(deps): bump urllib3 from 2.2.3 to 2.5.0 (#5067)
dependabot[bot] Jun 19, 2025
b7dc88a
feat: add dbsecretmanager (#5057)
zcc0077 Jun 19, 2025
0bb5983
fix: Time delta in keep provider (#5063)
skynetigor Jun 19, 2025
9919b99
fix: Enhance incident query to include alert enrichment for status (#…
skynetigor Jun 23, 2025
7115dda
feat: Improve selected columns storage mechanism (#5002)
talboren Jun 23, 2025
4472e9c
feat: support classes (#5079)
shahargl Jun 23, 2025
138486a
fix: db write secret error (#5081)
zcc0077 Jun 24, 2025
101b61f
fix: UT's (#5083)
shahargl Jun 24, 2025
b699c27
fix: Set EKS Provider Credentials Default to None (#5091)
reidg44 Jun 24, 2025
33eddb2
fix: sort workflow execution logs asc (#5065)
Kiryous Jun 25, 2025
a2533b6
fix: severity handling bug in CEL (#5101)
shahargl Jun 25, 2025
0026346
feat: Improve OpenShift provider connection validation using REST API…
talboren Jun 26, 2025
b109e94
fix: Improve alert query error logging by serializing query object (#…
skynetigor Jun 26, 2025
956ba15
fix: bug with not displaying certain rules (#5106)
skynetigor Jun 27, 2025
4d07f64
fix: co-int/str for CELs (#5109)
shahargl Jun 28, 2025
a33c4f8
fix: jira update ticket (#5122)
shahargl Jun 30, 2025
cc66b5b
fix: bug with saving presets and default columns (#5113)
talboren Jun 30, 2025
32e0243
feat: generate and upload json schema (#5088)
Kiryous Jun 30, 2025
b2258dc
fix: git add schema.json and `--cached` to detect if schema does not …
Kiryous Jul 1, 2025
dbfbe5a
fix: correlation rule threshold counts already resolved alerts (#5128)
VladimirFilonov Jul 1, 2025
608c103
fix: Add alert body sanitizer (#5133)
skynetigor Jul 2, 2025
9aa3b87
fix: History page makes keep unresponsive (#5137)
skynetigor Jul 2, 2025
b60cf18
fix: Sort dict keys before generating the hash (#5132)
dvora-ns Jul 3, 2025
04c9675
fix: Add parentheses for search cel being sent to BE to fix searcCel/…
skynetigor Jul 3, 2025
0bcaacd
fix: support Zabbix 6.0.5 by improving error matching (#5143)
slgray Jul 3, 2025
15093b8
fix: update release-workflow-schema.yml, skip schema repo checkout fo…
Kiryous Jul 4, 2025
499ab7a
fix: incident enrichments (#5142)
Kiryous Jul 4, 2025
289d858
chore(deps): bump next from 15.3.1 to 15.3.4 in /keep-ui (#5147)
dependabot[bot] Jul 6, 2025
4e9f63e
fix: Use integer severities for zabbix provider (#5140)
dvora-ns Jul 7, 2025
4621a5c
docs: missing doc redis sentinel (#5155)
bbcorp Jul 7, 2025
c5e23ca
fix(provider): loki auth (#5162)
talboren Jul 10, 2025
b20c644
fix: grafana description (#5164)
talboren Jul 10, 2025
4d814ab
fix: iohandler to handle 0 (#5166)
talboren Jul 10, 2025
f81c92b
fix: python provider import module itself (#5168)
talboren Jul 11, 2025
380b414
fix: Make tests more stable (#5170)
skynetigor Jul 11, 2025
b8b2044
chore(deps): python 3.13 for security reasons (#5157)
talboren Jul 13, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
88 changes: 88 additions & 0 deletions .cursor/rules/keep-ui-react-typescript.mdc
Original file line number Diff line number Diff line change
@@ -0,0 +1,88 @@
---
description:
globs:
alwaysApply: true
---
---
description: Rules for writing frontend code at Keep (React + Typescript)
globs: keep-ui/**/*.tsx, keep-ui/**/*.ts
---

You are an expert in TypeScript, React, Next.js, SWR, Tailwind, and UX design.

# Achitecture
Use Feature-Slice Design Convention with modification: instead of `pages` and `app` we use default Next.js route-based folder structure.

Example:
- entities/
- incidents/
- api/
- lib/
- model/
- ui/

Top-level folders, called Layers:
- widgets
- features
- entities
- shared

Each layer has segments, e.g. "entities/users".

Each segment has slices
- ui — everything related to UI display: UI components, date formatters, styles, etc.
- api — backend interactions: request functions, data types, mappers, etc.
- model — the data model: schemas, interfaces, stores, and business logic.
- lib — library code that other modules on this slice need.
- config — configuration files and feature flags.

# Code Style and Structure
- Write TypeScript with proper typing for all new code
- Use functional programming patterns; avoid classes
- Prefer iteration and modularization over code duplication.
- Use descriptive variable names with auxiliary verbs (e.g., isLoading, hasError).
- Don't use `useEffect` where you can use ref function for dom-dependent things (e.g. ref={el => ...})
- Don't use `useState` where you can infer from props
- Use named exports; avoid default exports
- If you need to create new base component, first look at existing ones in `@/shared/ui`

# Naming Conventions
- Always look around the codebase for naming conventions, and follow the best practices of the environment (e.g. use `camelCase` variables in JS).
- Use clear, yet functional names (`searchResults` vs `data`).
- React components are PascalCase (`IncidentList`).
- Props for components and hooks are PascalCase and end with `Props`, e.g. `WorkflowBuilderWidgetProps`, return value for hooks is PascalCase and end with `Value`, e.g. `UseIncidentActionsValue`
- Name the `.ts` file according to its main export: `IncidentList.ts` or `IncidentList.tsx` or `useIncidents.ts`. Pay attention to the case.
- Avoid `index.ts`, `styles.css`, and other generic names, even if this is the only file in a directory.

# Data Fetching
- Use useSWR for fetching data, create or extend hooks in @/entities/<entity>/model/use<Entity>.ts which encapsulates fetching logic
- Create a dedicated keys file @/entities/<entity>/lib/<entity>Keys.ts to manage SWR cache keys. Structure it as an object with methods for different operations:
```export const entityKeys = {
all: "entityName",
list: (query: QueryParams) => [...],
detail: (id: string) => [...],
getListMatcher: () => (key: any) => boolean
}```
- For query-based endpoints, construct cache keys by joining parameters with "::", filtering out falsy values:
```list: (query: QueryParams) => [
entityKeys.all,
"list",
query.param1,
query.param2
].filter(Boolean).join("::")```
- For create, update, delete actions:
- Create or extend hook in @/entities/<entity>/model/use<Entity>Actions.ts
- Create a dedicated revalidation hook (e.g., use<Entity>Revalidation.ts) to handle cache invalidation
- Revalidate both specific items and list queries after mutations
- Include success/error toast notifications for user feedback
- Handle file uploads and other complex operations within the actions hook

# UI and Styling
- Use Tailwind CSS as primary styling solution
- For non-Tailwind cases:
- Use CSS with component-specific files
- Namespace under component class (.DropdownMenu)
- Follow BEM for modals (.DropdownMenu__modal)
- Import styles directly (import './DropdownMenu.css')
- Replace custom CSS with Tailwind when possible

18 changes: 18 additions & 0 deletions .cursor/rules/keep-ui-tests.mdc
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
---
description:
globs:
alwaysApply: true
---
---
description: Rules and guidelines for writing and running React tests
globs: *.spec.tsx, *.test.tsx, *.test.ts, *.spec.ts
---

# Writing frontend tests

Place tests in __tests__ folder in the module, e.g. tests for file `/features/workflows/model/useWorkflows.tsx` should be `/features/workflows/models/__tests__/useWorkflows.test.tsx`

# Running frontend tests

Please run tests with command: npm run test in keep-ui folder
For example: cd keep-ui && npm run test
174 changes: 174 additions & 0 deletions .github/workflows/release-workflow-schema.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,174 @@
name: Release JSON Schema

on:
push:
branches:
- main
paths:
- ".github/workflows/release-workflow-schema.yml"
- "pyproject.toml"
- "keep/providers/**"
- "keep-ui/entities/workflows/model/yaml.schema.ts"
pull_request:
paths:
- ".github/workflows/release-workflow-schema.yml"
- "pyproject.toml"
- "keep/providers/**"
- "keep-ui/entities/workflows/model/yaml.schema.ts"
workflow_dispatch:

env:
PYTHON_VERSION: 3.11
STORAGE_MANAGER_DIRECTORY: /tmp/storage-manager
SCHEMA_REPO_NAME: keephq/keep-workflow-schema
jobs:
generate-schema:
runs-on: ubuntu-latest
permissions:
contents: read

outputs:
version: ${{ steps.get_version.outputs.version }}

steps:
- name: Checkout code
uses: actions/checkout@v4
with:
fetch-depth: 0

- name: Extract version from pyproject.toml
id: get_version
run: |
VERSION=$(grep '^version = ' pyproject.toml | sed 's/version = "\(.*\)"/\1/')
echo "version=$VERSION" >> $GITHUB_OUTPUT

- name: Set up Python ${{ env.PYTHON_VERSION }}
uses: actions/setup-python@v4
with:
python-version: "3.11"

- name: Install Poetry
uses: snok/install-poetry@v1
with:
virtualenvs-create: true
virtualenvs-in-project: true

- name: Cache dependencies
id: cache-deps
uses: actions/cache@v4.2.0
with:
path: .venv
key: pydeps-${{ hashFiles('**/poetry.lock') }}

- name: Install dependencies using poetry
run: poetry install --no-interaction --no-root --with dev

- name: Save providers list
run: |
PYTHONPATH="${{ github.workspace }}" poetry run python ./scripts/save_providers_list.py

- name: Set up Node.js 20
uses: actions/setup-node@v3
with:
node-version: 20
cache: "npm"
cache-dependency-path: keep-ui/package-lock.json

- name: Install Node dependencies
working-directory: keep-ui
run: npm ci

- name: Generate JSON Schema
working-directory: keep-ui
run: npm run build:workflow-yaml-json-schema

- name: Upload schema artifact
uses: actions/upload-artifact@v4
with:
name: workflow-schema
path: workflow-yaml-json-schema.json

release-schema:
runs-on: ubuntu-latest
needs: generate-schema
if: ${{ github.event_name != 'pull_request' || !github.event.pull_request.head.repo.fork }}

steps:
- name: Download schema artifact
uses: actions/download-artifact@v4
with:
name: workflow-schema
path: .
- name: Checkout schema repository
uses: actions/checkout@v4
with:
repository: ${{ env.SCHEMA_REPO_NAME }}
token: ${{ secrets.SCHEMA_REPO_PAT }}
path: schema-repo

- name: Set target branch variable
id: set_branch
run: |
if [ "${{ github.event_name }}" = "pull_request" ]; then
echo "branch=${{ github.head_ref }}" >> $GITHUB_OUTPUT
else
echo "branch=${{ github.ref_name }}" >> $GITHUB_OUTPUT
fi

- name: Create or switch to target branch in schema repo
working-directory: schema-repo
run: |
git fetch origin
if git show-ref --verify --quiet refs/heads/${{ steps.set_branch.outputs.branch }}; then
git checkout ${{ steps.set_branch.outputs.branch }}
else
git checkout -b ${{ steps.set_branch.outputs.branch }}
fi

- name: Copy schema to target repository
run: |
cp workflow-yaml-json-schema.json schema-repo/schema.json

# Update schema with version info
jq --arg version "${{ needs.generate-schema.outputs.version }}" \
--arg id "https://raw.githubusercontent.com/${{ env.SCHEMA_REPO_NAME }}/v${{ needs.generate-schema.outputs.version }}/schema.json" \
'. + {version: $version, "$id": $id}' \
schema-repo/schema.json > schema-repo/schema.tmp.json

mv schema-repo/schema.tmp.json schema-repo/schema.json

- name: Check if schema changed
id: check_changes
working-directory: schema-repo
run: |
git add schema.json
if git diff --cached --quiet schema.json; then
echo "changed=false" >> $GITHUB_OUTPUT
else
echo "changed=true" >> $GITHUB_OUTPUT
fi

- name: Commit and push schema
if: steps.check_changes.outputs.changed == 'true'
working-directory: schema-repo
run: |
git config user.name "Keep Schema Bot"
git config user.email "no-reply@keephq.dev"
git commit -m "Release schema v${{ needs.generate-schema.outputs.version }}"
git push origin ${{ steps.set_branch.outputs.branch }}
if [ "${{ steps.set_branch.outputs.branch }}" = "main" ]; then
git tag "v${{ needs.generate-schema.outputs.version }}"
git push origin "v${{ needs.generate-schema.outputs.version }}"
fi

- name: Create GitHub Release
if: steps.check_changes.outputs.changed == 'true' && steps.set_branch.outputs.branch == 'main'
uses: softprops/action-gh-release@v1
with:
repository: ${{ env.SCHEMA_REPO_NAME }}
tag_name: v${{ needs.generate-schema.outputs.version }}
name: Release v${{ needs.generate-schema.outputs.version }}
body: |
Automated release of schema version v${{ needs.generate-schema.outputs.version }}.
env:
GITHUB_TOKEN: ${{ secrets.SCHEMA_REPO_PAT }}
Loading
Loading