kairo-code 0.1.0__py3-none-any.whl → 0.2.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- kairo/backend/api/agents.py +337 -16
- kairo/backend/app.py +84 -4
- kairo/backend/config.py +4 -2
- kairo/backend/models/agent.py +216 -2
- kairo/backend/models/api_key.py +4 -1
- kairo/backend/models/task.py +31 -0
- kairo/backend/models/user_provider_key.py +26 -0
- kairo/backend/schemas/agent.py +249 -2
- kairo/backend/schemas/api_key.py +3 -0
- kairo/backend/services/agent/__init__.py +52 -0
- kairo/backend/services/agent/agent_alerts_evaluation_service.py +224 -0
- kairo/backend/services/agent/agent_alerts_service.py +201 -0
- kairo/backend/services/agent/agent_commands_service.py +142 -0
- kairo/backend/services/agent/agent_crud_service.py +150 -0
- kairo/backend/services/agent/agent_events_service.py +103 -0
- kairo/backend/services/agent/agent_heartbeat_service.py +207 -0
- kairo/backend/services/agent/agent_metrics_rollup_service.py +248 -0
- kairo/backend/services/agent/agent_metrics_service.py +259 -0
- kairo/backend/services/agent/agent_service.py +315 -0
- kairo/backend/services/agent/agent_setup_service.py +180 -0
- kairo/backend/services/agent/constants.py +28 -0
- kairo/backend/services/agent_service.py +18 -102
- kairo/backend/services/api_key_service.py +23 -3
- kairo/backend/services/byok_service.py +204 -0
- kairo/backend/services/chat_service.py +398 -63
- kairo/backend/services/deep_search_service.py +159 -0
- kairo/backend/services/email_service.py +418 -19
- kairo/backend/services/few_shot_service.py +223 -0
- kairo/backend/services/post_processor.py +261 -0
- kairo/backend/services/rag_service.py +150 -0
- kairo/backend/services/task_service.py +119 -0
- kairo/backend/tests/__init__.py +1 -0
- kairo/backend/tests/e2e/__init__.py +1 -0
- kairo/backend/tests/e2e/agents/__init__.py +1 -0
- kairo/backend/tests/e2e/agents/conftest.py +389 -0
- kairo/backend/tests/e2e/agents/test_agent_alerts.py +802 -0
- kairo/backend/tests/e2e/agents/test_agent_commands.py +456 -0
- kairo/backend/tests/e2e/agents/test_agent_crud.py +455 -0
- kairo/backend/tests/e2e/agents/test_agent_events.py +415 -0
- kairo/backend/tests/e2e/agents/test_agent_heartbeat.py +520 -0
- kairo/backend/tests/e2e/agents/test_agent_metrics.py +587 -0
- kairo/backend/tests/e2e/agents/test_agent_setup.py +349 -0
- kairo/migrations/versions/010_agent_dashboard.py +246 -0
- {kairo_code-0.1.0.dist-info → kairo_code-0.2.0.dist-info}/METADATA +1 -1
- {kairo_code-0.1.0.dist-info → kairo_code-0.2.0.dist-info}/RECORD +50 -16
- {kairo_code-0.1.0.dist-info → kairo_code-0.2.0.dist-info}/top_level.txt +1 -0
- kairo_migrations/env.py +92 -0
- kairo_migrations/versions/001_add_agent_dashboard_extensions.py +450 -0
- {kairo_code-0.1.0.dist-info → kairo_code-0.2.0.dist-info}/WHEEL +0 -0
- {kairo_code-0.1.0.dist-info → kairo_code-0.2.0.dist-info}/entry_points.txt +0 -0
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
image-service/main.py,sha256=3ziQic10tQpA-CE15B6wFomihGk-1tKsguaNEtiEYNc,6221
|
|
2
2
|
infra/chat/app/main.py,sha256=mpMMDJ25_fQzA1UgCbpm_wDDGy2nHCh_IkiHmpgQVXM,3034
|
|
3
3
|
kairo/backend/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
4
|
-
kairo/backend/app.py,sha256=
|
|
5
|
-
kairo/backend/config.py,sha256=
|
|
4
|
+
kairo/backend/app.py,sha256=keiq6-BNN3heX-Hf0C8JVDgr0R31oovAqZOoPhAgboc,15278
|
|
5
|
+
kairo/backend/config.py,sha256=VnfbrSzXx9cdl0HICINU44sX3mHUr3YSC6TeWpiWLgI,7810
|
|
6
6
|
kairo/backend/api/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
7
|
-
kairo/backend/api/agents.py,sha256=
|
|
7
|
+
kairo/backend/api/agents.py,sha256=dNqXUpmHTVu9aXR09cG5iPhfXE5gwxw7f4ezk_e8Zvg,14467
|
|
8
8
|
kairo/backend/api/api_keys.py,sha256=vmAgXWPBGOFSJS5c_7iqPTMrjz93csOfj3lWK-ndCYA,2950
|
|
9
9
|
kairo/backend/api/auth.py,sha256=liWYqS3RiUx6MJyYCi4BL34-ftIWU53KiAI0W5Em0Uo,4248
|
|
10
10
|
kairo/backend/api/billing.py,sha256=b19HjcPqGoJK-cSNjzX883OraPS1XRCl4O3FZp5GdGs,1639
|
|
@@ -34,8 +34,8 @@ kairo/backend/core/logging.py,sha256=2vGup6l5CRpOZv6tiYCuSN5mL2q83zimzMOphsOK-Js
|
|
|
34
34
|
kairo/backend/core/rate_limit.py,sha256=6uy_YLAoDoWI396c7ZiSGQVrhw956rU3zOSsWVniMCI,2583
|
|
35
35
|
kairo/backend/core/security.py,sha256=3Ca3CjFtypUqZj3MhXPH5y5vQq_or8FY4SB2pI_qnJc,910
|
|
36
36
|
kairo/backend/models/__init__.py,sha256=JtEDWDiIe8ObFh6XZQe80_084Eq9fKeK0j2NAdLnh6M,884
|
|
37
|
-
kairo/backend/models/agent.py,sha256=
|
|
38
|
-
kairo/backend/models/api_key.py,sha256=
|
|
37
|
+
kairo/backend/models/agent.py,sha256=fdRwOwmIXxtCT8eQO9-74TAL-1DLiXVuMdmTfwswHmo,12823
|
|
38
|
+
kairo/backend/models/api_key.py,sha256=lC_4iAvemr_oxyOMX_QWGYxiee7Y2OmMp-uiN_sineM,1274
|
|
39
39
|
kairo/backend/models/api_usage.py,sha256=BzGBuhVRX1duJIwI-TwcqhgPnUgGigTb6sR1qlBXkIA,1046
|
|
40
40
|
kairo/backend/models/audit_log.py,sha256=rWWGDP3Jt_QC9cCEUuk9A2cq8mAySLbRsLcn4lm2_qc,1135
|
|
41
41
|
kairo/backend/models/conversation.py,sha256=JciX2Faei0rlmjp6nen77_OLodX09lD7cLR0_I38alA,2013
|
|
@@ -44,12 +44,14 @@ kairo/backend/models/feature_flag.py,sha256=M8oqsQ8PEmd-lTkyh56mBt9t8VTMghWTdJST
|
|
|
44
44
|
kairo/backend/models/image_generation.py,sha256=nRKhTYD7kB0gzukcReQ2yEBj0mxehRrdfewPHeu_yVA,929
|
|
45
45
|
kairo/backend/models/incident.py,sha256=lJV2TI9KS5sScJ7lAZThQQ4dwrk9vxTEU8UdvwoeV58,1304
|
|
46
46
|
kairo/backend/models/project.py,sha256=RKh-A_hdC220mb4HyUU95DyHVanEo6vQ_3zb2lGItdA,1014
|
|
47
|
+
kairo/backend/models/task.py,sha256=fG2YrhLAkQJMnabCg8Yr_MYydb4tEuzhwWwuGQtyaGU,1319
|
|
47
48
|
kairo/backend/models/uptime_record.py,sha256=xo2MeLobdLM4dcfrMe0AUrcIy2MXKVoFHyOgNUHp3SQ,944
|
|
48
49
|
kairo/backend/models/usage.py,sha256=AoeeqmcME5swYc__XZVeagbRkjIGZpT1pzehbIR39xI,902
|
|
49
50
|
kairo/backend/models/user.py,sha256=g2PzKb92sAACNdYFbMFg9LRs3i7-vpeHglli9qVb6No,1795
|
|
51
|
+
kairo/backend/models/user_provider_key.py,sha256=z_90F44cLYo2an66vYS1J_LQ3UQcxdOtFP0WkdL5bXI,1123
|
|
50
52
|
kairo/backend/schemas/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
51
|
-
kairo/backend/schemas/agent.py,sha256=
|
|
52
|
-
kairo/backend/schemas/api_key.py,sha256=
|
|
53
|
+
kairo/backend/schemas/agent.py,sha256=dyJjxJgQzuXsRsQKV5lHtDy0ydL1C9wMfZnz9VxNLm4,8785
|
|
54
|
+
kairo/backend/schemas/api_key.py,sha256=qXaEBdXIs3Z_UH0UMXqMzRHAtD-Bk2vZ4nIcTCGEDH8,788
|
|
53
55
|
kairo/backend/schemas/auth.py,sha256=vkZwfcYLcg2_-w6--TV_QQA3AeJU2In6G0IhvFemCMI,1259
|
|
54
56
|
kairo/backend/schemas/chat.py,sha256=hy3UKCsxfkpo8CD4VB55LZTDW8uhB6ANLgOCMkO_ZeA,824
|
|
55
57
|
kairo/backend/schemas/conversation.py,sha256=oA53Zd0SSyRej9QmjNuagLTnJ6bck3icxExtK2bcuvE,801
|
|
@@ -66,19 +68,25 @@ kairo/backend/schemas/admin/stats.py,sha256=bz8ucXHLzhGx6x1FdcpFOOJ5-q3Wf8W2VfnP
|
|
|
66
68
|
kairo/backend/schemas/admin/system.py,sha256=pQxCHqfLLda6fZPx7GkuGgheBtoqqhlLR-N7eIK96B0,834
|
|
67
69
|
kairo/backend/schemas/admin/users.py,sha256=U2iZ0X1jwQZszfVjrtmfJs2p8n2X_6vmsUQ3VtubuRg,1252
|
|
68
70
|
kairo/backend/services/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
69
|
-
kairo/backend/services/agent_service.py,sha256=
|
|
70
|
-
kairo/backend/services/api_key_service.py,sha256=
|
|
71
|
+
kairo/backend/services/agent_service.py,sha256=FvskzgW68Fl6V3nQCk9BSiP6E1MKLhfjAx8xR5_cupk,961
|
|
72
|
+
kairo/backend/services/api_key_service.py,sha256=gkoArntF4KMhHNcb8Cwn2YZ4L8LJsHLNl7AVN1lSIQI,2866
|
|
71
73
|
kairo/backend/services/api_usage_service.py,sha256=VJBf8ONBQHsv-4kPApDcqwnqYryD5IW6sbu5WBs_Puc,4383
|
|
72
74
|
kairo/backend/services/auth_service.py,sha256=uT_-aSY9KCWq-vGwFLaUYdB0KcQkGbIwYO8GDzkcppo,3899
|
|
73
|
-
kairo/backend/services/
|
|
75
|
+
kairo/backend/services/byok_service.py,sha256=Hyc5MNpT4RvdZ2knRJYbED7JstaLk6GFUrtiYIpEhOE,7420
|
|
76
|
+
kairo/backend/services/chat_service.py,sha256=1aqggbecuphOJldYUGD2yS0tq1g8vl1o4mvkrQ8hzsY,34427
|
|
74
77
|
kairo/backend/services/conversation_service.py,sha256=YaaIGozZ2-4SYzrZO8VKQinBgEKd4Who1_ZbrOZcKCU,9618
|
|
78
|
+
kairo/backend/services/deep_search_service.py,sha256=pCjSNvDFwd-f3omm239vItpCqpmczIEMCTnv8EboTdU,5653
|
|
75
79
|
kairo/backend/services/device_auth_service.py,sha256=U5dowR5a-TQMUkYXAac3Db-njGeeOCwcDah-7rRJJ4k,6723
|
|
76
|
-
kairo/backend/services/email_service.py,sha256=
|
|
80
|
+
kairo/backend/services/email_service.py,sha256=X56Db97WhsEDMnfrbaEMVVPanIl6B5oMs-5llomK2dE,22326
|
|
81
|
+
kairo/backend/services/few_shot_service.py,sha256=bgMEncGJBhwcwYYYeDgFVGSxV4COE8UGeUGDPrLwJq0,5934
|
|
77
82
|
kairo/backend/services/image_service.py,sha256=Nth-l5CCZF8vLi7bxS0Ee6JASkvrax8XTwoi9qautFY,6247
|
|
78
83
|
kairo/backend/services/llm_service.py,sha256=Smfuui-0DhBVl2nojSiEdKicAXGuD4lyMpCqy5bZw30,7532
|
|
84
|
+
kairo/backend/services/post_processor.py,sha256=dXKq550WtdonLUFk8Bgsy6_YoBlpO4B-RoiR0IyM4WY,10349
|
|
79
85
|
kairo/backend/services/project_service.py,sha256=Hv290eiqrW-CmdMqcH0wQlc8Y3-lCs1b3tvHzWysVso,3565
|
|
86
|
+
kairo/backend/services/rag_service.py,sha256=ZLeaR_WnARHwPaKdl2LI-gfBBYZcNLiHPoypJnC5GHM,5261
|
|
80
87
|
kairo/backend/services/status_service.py,sha256=A9hmDxACQMNDkNf_gHwYswhJ8I-Kw_MZROt3NRx-KB8,6706
|
|
81
88
|
kairo/backend/services/stripe_service.py,sha256=FHbAk5wiSZ1h6nI7pxfpqIm7jGMvde7h_7a2sY_0Hbw,3299
|
|
89
|
+
kairo/backend/services/task_service.py,sha256=VUeMNN2Fmr4rBwTdQCL3VHtA0dnC9T742hJDO9hSQzw,4317
|
|
82
90
|
kairo/backend/services/usage_service.py,sha256=kN3wZy4tiAol1071rjhHP1LeZ8H8w5WJpV_B0BBOwUw,5263
|
|
83
91
|
kairo/backend/services/web_search_service.py,sha256=RWxMFIXHCfzAX4MbWWIxxfGZh96WwScHyV1s1MXRTLo,3790
|
|
84
92
|
kairo/backend/services/admin/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
@@ -88,6 +96,29 @@ kairo/backend/services/admin/incident_service.py,sha256=-VY2EUrLaCVtzwHiYe77tR_j
|
|
|
88
96
|
kairo/backend/services/admin/stats_service.py,sha256=EAIrNxX6WMs6eGvmQbn69T0utgEj7VVIWCieRODD774,10867
|
|
89
97
|
kairo/backend/services/admin/system_service.py,sha256=B5_ejfbKukG-auuSAPxUTn8PYAoakliLYgK58HZXP20,4887
|
|
90
98
|
kairo/backend/services/admin/user_service.py,sha256=8FdUQJczYrr5ArSD0mYedaaLxdpxJQ-wZT7TRk26sVg,5526
|
|
99
|
+
kairo/backend/services/agent/__init__.py,sha256=6PWZm-y_I0mqRL_8m1cEbPTaX67vlxVpPLQOfQw5DkE,2019
|
|
100
|
+
kairo/backend/services/agent/agent_alerts_evaluation_service.py,sha256=KKDNRdeC6MYjmTmM71-yxUAGYp06aXy7A-IqZLBJjHw,8199
|
|
101
|
+
kairo/backend/services/agent/agent_alerts_service.py,sha256=j2cpUSL6GNlaMf9V_grmRhi2e16FO-tBRpUmeiu2VBk,7398
|
|
102
|
+
kairo/backend/services/agent/agent_commands_service.py,sha256=S27xZcu10Xc7m40zKvm8KpD1wOXLckWzaxKLXQGQCK0,4384
|
|
103
|
+
kairo/backend/services/agent/agent_crud_service.py,sha256=MNaYt1Kx5Ao0nTFAJ6rADRP0fxoTI7mlFTn07nIT82c,5397
|
|
104
|
+
kairo/backend/services/agent/agent_events_service.py,sha256=T_-ud-0XPWfwbIZYjbCKinpH57A-MOnlpzlCqLvkH3A,3055
|
|
105
|
+
kairo/backend/services/agent/agent_heartbeat_service.py,sha256=5Qm18WT_dNGFQvj2EcZllG5d2lmilPeGMY6SjDbGO6A,7119
|
|
106
|
+
kairo/backend/services/agent/agent_metrics_rollup_service.py,sha256=ZIHeqPqaOeBYdukZG58HvNjppFhBk8JRS85YknUlyck,9926
|
|
107
|
+
kairo/backend/services/agent/agent_metrics_service.py,sha256=mNFqJQkv6lBtwsvNVmmfaq_hX7Du-FSTL5o_sSI8754,9047
|
|
108
|
+
kairo/backend/services/agent/agent_service.py,sha256=XJN2CBozZhc0uaO6nMvMRfBe3klj8nS0iVykEjn1LqY,12062
|
|
109
|
+
kairo/backend/services/agent/agent_setup_service.py,sha256=n8McqgHFHyI4ofDcJEamZkwDUDmTtYAu9s98HMOUjUY,5371
|
|
110
|
+
kairo/backend/services/agent/constants.py,sha256=zdFI9O11nkngxtLKVSavV3D3k5x_Ll3l05iUx7MOGHE,686
|
|
111
|
+
kairo/backend/tests/__init__.py,sha256=Wk73Io62J15BtlLVIzxmASDWaaJkQLevS4BLK5LDAQg,16
|
|
112
|
+
kairo/backend/tests/e2e/__init__.py,sha256=Cc1tgvaXbFpdCvqR4Uu4QCq91Hhq6OhgdAvj1od6uxk,27
|
|
113
|
+
kairo/backend/tests/e2e/agents/__init__.py,sha256=A0-r1C0--QyjbCp4cJWTbzujjlIOGBDI5sUWGvjjiKk,33
|
|
114
|
+
kairo/backend/tests/e2e/agents/conftest.py,sha256=QBR4MwmEc8l8uzIAHSiBRXeDwAkZ4OUErAfNbxKFnfE,12465
|
|
115
|
+
kairo/backend/tests/e2e/agents/test_agent_alerts.py,sha256=x06u4LIf8B4_Pb6BCycdniCPof-15SzYwrWR5mQCwwo,25883
|
|
116
|
+
kairo/backend/tests/e2e/agents/test_agent_commands.py,sha256=xkDg8Z1tFHuwS6TDoBPkTfuNd950e_86_HdMDy-h7A4,14621
|
|
117
|
+
kairo/backend/tests/e2e/agents/test_agent_crud.py,sha256=UpqLroPITVXrBDQPIx_CujOslnQa2QCxTmK2OFGBzr4,15000
|
|
118
|
+
kairo/backend/tests/e2e/agents/test_agent_events.py,sha256=m6yejUKp1V_992psd1r6WBxUeGsyWs3yCdxEljFEFB8,13694
|
|
119
|
+
kairo/backend/tests/e2e/agents/test_agent_heartbeat.py,sha256=5S2bf2no6CMRKnczcCk6IZeY5UCiqqVuhnfV74N6TmY,16768
|
|
120
|
+
kairo/backend/tests/e2e/agents/test_agent_metrics.py,sha256=faWw2vfzEuyR7FJPRHuyhxr6wcLg-PSrBmWF8b8W9Oo,20055
|
|
121
|
+
kairo/backend/tests/e2e/agents/test_agent_setup.py,sha256=c3WN1Gh9xyuEXDqfXW-6gry0IMeQYgD_kSEvjUc-aQ0,11633
|
|
91
122
|
kairo/migrations/env.py,sha256=VyojhMx2P_oa_deY-2IN9t1cz8NngWkKgPWzaRjrXUk,1650
|
|
92
123
|
kairo/migrations/versions/001_initial.py,sha256=fSc3r0lFgFdYlWXjNW7FpY7XnG2BVw7fR20pxb6Wnjg,1669
|
|
93
124
|
kairo/migrations/versions/002_usage_tracking_and_indexes.py,sha256=TfsM875Zs2S4XlRjdtq5AMhqq2Yt1XN9zvqwsfFRW3E,2148
|
|
@@ -98,6 +129,7 @@ kairo/migrations/versions/006_add_image_generation.py,sha256=6Rw-gVK2amSFJIKyZdj
|
|
|
98
129
|
kairo/migrations/versions/007_add_admin_portal.py,sha256=EEtMIXkjNLqy7ncbZkW5A8V98n14KXuMGFMe8zAxqYM,3642
|
|
99
130
|
kairo/migrations/versions/008_add_device_code_auth.py,sha256=SxlsexrI-3jQ34LOXghl_mhmnYIHicwILcOWM2ONdnc,2762
|
|
100
131
|
kairo/migrations/versions/009_add_status_page.py,sha256=5ZT_FO2JNYYEh9nDLUnL7k5JcwVELwTSO8S1vHNSfzo,2842
|
|
132
|
+
kairo/migrations/versions/010_agent_dashboard.py,sha256=zUzyp16tARp66i1AcPauJ7dWgCFy9xL3cTSfy1Ielf8,13966
|
|
101
133
|
kairo/tools/extract_claude_data.py,sha256=CoKWoQCVsBLAvIQhJ-UCQTDlJJYSvXqCcsPE8pPWSV8,14994
|
|
102
134
|
kairo/tools/filter_claude_data.py,sha256=hCaY86RMW0EOztLBhGv-ifbdCmSlyROfQbmjl1QKoDQ,10170
|
|
103
135
|
kairo/tools/generate_curated_data.py,sha256=62DOhEgNtYjbyVdfozHqD0MWdBEj4CZwniH4RfBXdSI,5096
|
|
@@ -137,8 +169,10 @@ kairo_code/tools/definitions.py,sha256=4egUnMyKUXXTBo7n0sBszT3Enns5C9Q5CoLmDwntf
|
|
|
137
169
|
kairo_code/tools/files.py,sha256=JAkL8HdN9aa2bcDXUB1PjqDFoCY3Rmf1oRZpBOtIFAk,9824
|
|
138
170
|
kairo_code/tools/review.py,sha256=VmUS4IpHlmfzV1fBgKwZ-FabTwUqCZYGo9IcF96ZuAk,15119
|
|
139
171
|
kairo_code/tools/search.py,sha256=En0yRvnzMqj0575nG6y-Pe9RzZaF8SMgfr_VCEOQ-gw,5570
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
kairo_code-0.
|
|
143
|
-
kairo_code-0.
|
|
144
|
-
kairo_code-0.
|
|
172
|
+
kairo_migrations/env.py,sha256=e6GCMVJbH0U-t8mf7ZWKArgPlvXcTdK8vL1ufujZp2k,2376
|
|
173
|
+
kairo_migrations/versions/001_add_agent_dashboard_extensions.py,sha256=lw_Rk2d2JBTMdW4TqUKPrtSyUF8TP-cXI_CR0vVXt88,24324
|
|
174
|
+
kairo_code-0.2.0.dist-info/METADATA,sha256=ch2gTmSH8PpOjVxLsGsL2Px034JZ9WgDmDQq5H9ZLQY,397
|
|
175
|
+
kairo_code-0.2.0.dist-info/WHEEL,sha256=wUyA8OaulRlbfwMtmQsvNngGrxQHAvkKcvRmdizlJi0,92
|
|
176
|
+
kairo_code-0.2.0.dist-info/entry_points.txt,sha256=a41_OEwYk_C4gksWIUawsNRgysInOhrw8xL8QX9cLhI,52
|
|
177
|
+
kairo_code-0.2.0.dist-info/top_level.txt,sha256=q3-v1_MnuMqcVhXyFXXCIndW-X-HAY0uj4QRgNoVp9E,54
|
|
178
|
+
kairo_code-0.2.0.dist-info/RECORD,,
|
kairo_migrations/env.py
ADDED
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
"""
|
|
2
|
+
Alembic Environment Configuration for Kairo Agent Dashboard
|
|
3
|
+
|
|
4
|
+
This configures Alembic to work with async SQLAlchemy and PostgreSQL.
|
|
5
|
+
"""
|
|
6
|
+
|
|
7
|
+
import asyncio
|
|
8
|
+
from logging.config import fileConfig
|
|
9
|
+
|
|
10
|
+
from alembic import context
|
|
11
|
+
from sqlalchemy import pool
|
|
12
|
+
from sqlalchemy.engine import Connection
|
|
13
|
+
from sqlalchemy.ext.asyncio import async_engine_from_config
|
|
14
|
+
|
|
15
|
+
# Import your models
|
|
16
|
+
from kairo_models import Base
|
|
17
|
+
|
|
18
|
+
# Alembic Config object
|
|
19
|
+
config = context.config
|
|
20
|
+
|
|
21
|
+
# Set up logging
|
|
22
|
+
if config.config_file_name is not None:
|
|
23
|
+
fileConfig(config.config_file_name)
|
|
24
|
+
|
|
25
|
+
# Target metadata for 'autogenerate' support
|
|
26
|
+
target_metadata = Base.metadata
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
def run_migrations_offline() -> None:
|
|
30
|
+
"""
|
|
31
|
+
Run migrations in 'offline' mode.
|
|
32
|
+
|
|
33
|
+
This configures the context with just a URL and not an Engine,
|
|
34
|
+
though an Engine is acceptable here as well. By skipping the Engine
|
|
35
|
+
creation we don't even need a DBAPI to be available.
|
|
36
|
+
|
|
37
|
+
Calls to context.execute() here emit the given string to the
|
|
38
|
+
script output.
|
|
39
|
+
"""
|
|
40
|
+
url = config.get_main_option("sqlalchemy.url")
|
|
41
|
+
context.configure(
|
|
42
|
+
url=url,
|
|
43
|
+
target_metadata=target_metadata,
|
|
44
|
+
literal_binds=True,
|
|
45
|
+
dialect_opts={"paramstyle": "named"},
|
|
46
|
+
)
|
|
47
|
+
|
|
48
|
+
with context.begin_transaction():
|
|
49
|
+
context.run_migrations()
|
|
50
|
+
|
|
51
|
+
|
|
52
|
+
def do_run_migrations(connection: Connection) -> None:
|
|
53
|
+
"""Run migrations with the given connection."""
|
|
54
|
+
context.configure(
|
|
55
|
+
connection=connection,
|
|
56
|
+
target_metadata=target_metadata,
|
|
57
|
+
compare_type=True,
|
|
58
|
+
compare_server_default=True,
|
|
59
|
+
)
|
|
60
|
+
|
|
61
|
+
with context.begin_transaction():
|
|
62
|
+
context.run_migrations()
|
|
63
|
+
|
|
64
|
+
|
|
65
|
+
async def run_async_migrations() -> None:
|
|
66
|
+
"""
|
|
67
|
+
Run migrations in 'online' mode with async engine.
|
|
68
|
+
|
|
69
|
+
In this scenario we need to create an Engine and associate a
|
|
70
|
+
connection with the context.
|
|
71
|
+
"""
|
|
72
|
+
connectable = async_engine_from_config(
|
|
73
|
+
config.get_section(config.config_ini_section, {}),
|
|
74
|
+
prefix="sqlalchemy.",
|
|
75
|
+
poolclass=pool.NullPool,
|
|
76
|
+
)
|
|
77
|
+
|
|
78
|
+
async with connectable.connect() as connection:
|
|
79
|
+
await connection.run_sync(do_run_migrations)
|
|
80
|
+
|
|
81
|
+
await connectable.dispose()
|
|
82
|
+
|
|
83
|
+
|
|
84
|
+
def run_migrations_online() -> None:
|
|
85
|
+
"""Run migrations in 'online' mode."""
|
|
86
|
+
asyncio.run(run_async_migrations())
|
|
87
|
+
|
|
88
|
+
|
|
89
|
+
if context.is_offline_mode():
|
|
90
|
+
run_migrations_offline()
|
|
91
|
+
else:
|
|
92
|
+
run_migrations_online()
|