keboola-cli 0.63.4__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.
Files changed (306) hide show
  1. keboola_agent_cli/__init__.py +34 -0
  2. keboola_agent_cli/__main__.py +5 -0
  3. keboola_agent_cli/_ui_dist/assets/arc-DhFYIddx.js +2 -0
  4. keboola_agent_cli/_ui_dist/assets/arc-DhFYIddx.js.map +1 -0
  5. keboola_agent_cli/_ui_dist/assets/architecture-7EHR7CIX-hNCijx_H.js +1 -0
  6. keboola_agent_cli/_ui_dist/assets/architectureDiagram-3BPJPVTR-C6hUlprM.js +37 -0
  7. keboola_agent_cli/_ui_dist/assets/architectureDiagram-3BPJPVTR-C6hUlprM.js.map +1 -0
  8. keboola_agent_cli/_ui_dist/assets/array-BifhSqXX.js +2 -0
  9. keboola_agent_cli/_ui_dist/assets/array-BifhSqXX.js.map +1 -0
  10. keboola_agent_cli/_ui_dist/assets/blockDiagram-GPEHLZMM-DC7qY9i4.js +133 -0
  11. keboola_agent_cli/_ui_dist/assets/blockDiagram-GPEHLZMM-DC7qY9i4.js.map +1 -0
  12. keboola_agent_cli/_ui_dist/assets/c4Diagram-AAUBKEIU-5Lh44evt.js +11 -0
  13. keboola_agent_cli/_ui_dist/assets/c4Diagram-AAUBKEIU-5Lh44evt.js.map +1 -0
  14. keboola_agent_cli/_ui_dist/assets/channel-DBMrXlxx.js +2 -0
  15. keboola_agent_cli/_ui_dist/assets/channel-DBMrXlxx.js.map +1 -0
  16. keboola_agent_cli/_ui_dist/assets/chunk-2J33WTMH-Coy82EBh.js +2 -0
  17. keboola_agent_cli/_ui_dist/assets/chunk-2J33WTMH-Coy82EBh.js.map +1 -0
  18. keboola_agent_cli/_ui_dist/assets/chunk-3OPIFGDE-BQC5CRHI.js +63 -0
  19. keboola_agent_cli/_ui_dist/assets/chunk-3OPIFGDE-BQC5CRHI.js.map +1 -0
  20. keboola_agent_cli/_ui_dist/assets/chunk-4BX2VUAB-DUuEt70o.js +2 -0
  21. keboola_agent_cli/_ui_dist/assets/chunk-4BX2VUAB-DUuEt70o.js.map +1 -0
  22. keboola_agent_cli/_ui_dist/assets/chunk-55IACEB6-BvR-6chF.js +2 -0
  23. keboola_agent_cli/_ui_dist/assets/chunk-55IACEB6-BvR-6chF.js.map +1 -0
  24. keboola_agent_cli/_ui_dist/assets/chunk-5ZQYHXKU-BjcTN7ul.js +3 -0
  25. keboola_agent_cli/_ui_dist/assets/chunk-5ZQYHXKU-BjcTN7ul.js.map +1 -0
  26. keboola_agent_cli/_ui_dist/assets/chunk-727SXJPM-C0zxqqRN.js +207 -0
  27. keboola_agent_cli/_ui_dist/assets/chunk-727SXJPM-C0zxqqRN.js.map +1 -0
  28. keboola_agent_cli/_ui_dist/assets/chunk-AQP2D5EJ-CXf7rIlZ.js +232 -0
  29. keboola_agent_cli/_ui_dist/assets/chunk-AQP2D5EJ-CXf7rIlZ.js.map +1 -0
  30. keboola_agent_cli/_ui_dist/assets/chunk-BSJP7CBP-Oj_FO9Q7.js +2 -0
  31. keboola_agent_cli/_ui_dist/assets/chunk-BSJP7CBP-Oj_FO9Q7.js.map +1 -0
  32. keboola_agent_cli/_ui_dist/assets/chunk-CSCIHK7Q-CcTsLrFc.js +124 -0
  33. keboola_agent_cli/_ui_dist/assets/chunk-CSCIHK7Q-CcTsLrFc.js.map +1 -0
  34. keboola_agent_cli/_ui_dist/assets/chunk-FMBD7UC4-FH-zLkkW.js +16 -0
  35. keboola_agent_cli/_ui_dist/assets/chunk-FMBD7UC4-FH-zLkkW.js.map +1 -0
  36. keboola_agent_cli/_ui_dist/assets/chunk-L5ZTLDWV-B1Ky_e7O.js +2 -0
  37. keboola_agent_cli/_ui_dist/assets/chunk-L5ZTLDWV-B1Ky_e7O.js.map +1 -0
  38. keboola_agent_cli/_ui_dist/assets/chunk-ND2GUHAM-BHz1rpbm.js +2 -0
  39. keboola_agent_cli/_ui_dist/assets/chunk-ND2GUHAM-BHz1rpbm.js.map +1 -0
  40. keboola_agent_cli/_ui_dist/assets/chunk-NNHCCRGN-DlpIbxXb.js +160 -0
  41. keboola_agent_cli/_ui_dist/assets/chunk-NNHCCRGN-DlpIbxXb.js.map +1 -0
  42. keboola_agent_cli/_ui_dist/assets/chunk-NZK2D7GU-tnrSoegS.js +2 -0
  43. keboola_agent_cli/_ui_dist/assets/chunk-NZK2D7GU-tnrSoegS.js.map +1 -0
  44. keboola_agent_cli/_ui_dist/assets/chunk-O5CBEL6O-DxxqDH0l.js +71 -0
  45. keboola_agent_cli/_ui_dist/assets/chunk-O5CBEL6O-DxxqDH0l.js.map +1 -0
  46. keboola_agent_cli/_ui_dist/assets/chunk-QZHKN3VN-CSjc2gjj.js +2 -0
  47. keboola_agent_cli/_ui_dist/assets/chunk-QZHKN3VN-CSjc2gjj.js.map +1 -0
  48. keboola_agent_cli/_ui_dist/assets/classDiagram-4FO5ZUOK-BuZcZu85.js +2 -0
  49. keboola_agent_cli/_ui_dist/assets/classDiagram-4FO5ZUOK-BuZcZu85.js.map +1 -0
  50. keboola_agent_cli/_ui_dist/assets/classDiagram-v2-Q7XG4LA2-BuZcZu85.js +2 -0
  51. keboola_agent_cli/_ui_dist/assets/classDiagram-v2-Q7XG4LA2-BuZcZu85.js.map +1 -0
  52. keboola_agent_cli/_ui_dist/assets/cose-bilkent-S5V4N54A-Y0L8LDMa.js +2 -0
  53. keboola_agent_cli/_ui_dist/assets/cose-bilkent-S5V4N54A-Y0L8LDMa.js.map +1 -0
  54. keboola_agent_cli/_ui_dist/assets/cytoscape.esm-C8YCVR3_.js +322 -0
  55. keboola_agent_cli/_ui_dist/assets/cytoscape.esm-C8YCVR3_.js.map +1 -0
  56. keboola_agent_cli/_ui_dist/assets/dagre-BM42HDAG-UZ-9BTqF.js +5 -0
  57. keboola_agent_cli/_ui_dist/assets/dagre-BM42HDAG-UZ-9BTqF.js.map +1 -0
  58. keboola_agent_cli/_ui_dist/assets/dagre-Bx709z4p.js +2 -0
  59. keboola_agent_cli/_ui_dist/assets/dagre-Bx709z4p.js.map +1 -0
  60. keboola_agent_cli/_ui_dist/assets/defaultLocale-C8Fc0cco.js +2 -0
  61. keboola_agent_cli/_ui_dist/assets/defaultLocale-C8Fc0cco.js.map +1 -0
  62. keboola_agent_cli/_ui_dist/assets/diagram-2AECGRRQ-DoDQ60wi.js +44 -0
  63. keboola_agent_cli/_ui_dist/assets/diagram-2AECGRRQ-DoDQ60wi.js.map +1 -0
  64. keboola_agent_cli/_ui_dist/assets/diagram-5GNKFQAL-CMGFxpUs.js +11 -0
  65. keboola_agent_cli/_ui_dist/assets/diagram-5GNKFQAL-CMGFxpUs.js.map +1 -0
  66. keboola_agent_cli/_ui_dist/assets/diagram-KO2AKTUF-1uGDa-Iu.js +4 -0
  67. keboola_agent_cli/_ui_dist/assets/diagram-KO2AKTUF-1uGDa-Iu.js.map +1 -0
  68. keboola_agent_cli/_ui_dist/assets/diagram-LMA3HP47-XtFH7B51.js +25 -0
  69. keboola_agent_cli/_ui_dist/assets/diagram-LMA3HP47-XtFH7B51.js.map +1 -0
  70. keboola_agent_cli/_ui_dist/assets/diagram-OG6HWLK6-B4_Te1T5.js +25 -0
  71. keboola_agent_cli/_ui_dist/assets/diagram-OG6HWLK6-B4_Te1T5.js.map +1 -0
  72. keboola_agent_cli/_ui_dist/assets/dist-Di6zmlv0.js +2 -0
  73. keboola_agent_cli/_ui_dist/assets/dist-Di6zmlv0.js.map +1 -0
  74. keboola_agent_cli/_ui_dist/assets/erDiagram-TEJ5UH35-NjQkrdFt.js +86 -0
  75. keboola_agent_cli/_ui_dist/assets/erDiagram-TEJ5UH35-NjQkrdFt.js.map +1 -0
  76. keboola_agent_cli/_ui_dist/assets/eventmodeling-FCH6USID-BrJMIks8.js +1 -0
  77. keboola_agent_cli/_ui_dist/assets/flowDiagram-I6XJVG4X-CIr8DWl7.js +163 -0
  78. keboola_agent_cli/_ui_dist/assets/flowDiagram-I6XJVG4X-CIr8DWl7.js.map +1 -0
  79. keboola_agent_cli/_ui_dist/assets/ganttDiagram-6RSMTGT7-C1VY_xbQ.js +293 -0
  80. keboola_agent_cli/_ui_dist/assets/ganttDiagram-6RSMTGT7-C1VY_xbQ.js.map +1 -0
  81. keboola_agent_cli/_ui_dist/assets/gitGraph-WXDBUCRP-COacYjo-.js +1 -0
  82. keboola_agent_cli/_ui_dist/assets/gitGraphDiagram-PVQCEYII-DQT8-kg2.js +107 -0
  83. keboola_agent_cli/_ui_dist/assets/gitGraphDiagram-PVQCEYII-DQT8-kg2.js.map +1 -0
  84. keboola_agent_cli/_ui_dist/assets/graphlib-B8gBHxth.js +2 -0
  85. keboola_agent_cli/_ui_dist/assets/graphlib-B8gBHxth.js.map +1 -0
  86. keboola_agent_cli/_ui_dist/assets/index-CMq50kkV.css +1 -0
  87. keboola_agent_cli/_ui_dist/assets/index-D8W97DAz.js +118 -0
  88. keboola_agent_cli/_ui_dist/assets/index-D8W97DAz.js.map +1 -0
  89. keboola_agent_cli/_ui_dist/assets/info-J43DQDTF-DdCTRIzU.js +1 -0
  90. keboola_agent_cli/_ui_dist/assets/infoDiagram-5YYISTIA-C77rsoTp.js +3 -0
  91. keboola_agent_cli/_ui_dist/assets/infoDiagram-5YYISTIA-C77rsoTp.js.map +1 -0
  92. keboola_agent_cli/_ui_dist/assets/init-D6jRqBbL.js +2 -0
  93. keboola_agent_cli/_ui_dist/assets/init-D6jRqBbL.js.map +1 -0
  94. keboola_agent_cli/_ui_dist/assets/ishikawaDiagram-YF4QCWOH-BcTbXaLy.js +71 -0
  95. keboola_agent_cli/_ui_dist/assets/ishikawaDiagram-YF4QCWOH-BcTbXaLy.js.map +1 -0
  96. keboola_agent_cli/_ui_dist/assets/journeyDiagram-JHISSGLW-BejeAJQ_.js +140 -0
  97. keboola_agent_cli/_ui_dist/assets/journeyDiagram-JHISSGLW-BejeAJQ_.js.map +1 -0
  98. keboola_agent_cli/_ui_dist/assets/kanban-definition-UN3LZRKU-BRNz_UrH.js +90 -0
  99. keboola_agent_cli/_ui_dist/assets/kanban-definition-UN3LZRKU-BRNz_UrH.js.map +1 -0
  100. keboola_agent_cli/_ui_dist/assets/katex-C4eR7coU.js +258 -0
  101. keboola_agent_cli/_ui_dist/assets/katex-C4eR7coU.js.map +1 -0
  102. keboola_agent_cli/_ui_dist/assets/line-CzAQKFbJ.js +2 -0
  103. keboola_agent_cli/_ui_dist/assets/line-CzAQKFbJ.js.map +1 -0
  104. keboola_agent_cli/_ui_dist/assets/linear-DUNFFdck.js +2 -0
  105. keboola_agent_cli/_ui_dist/assets/linear-DUNFFdck.js.map +1 -0
  106. keboola_agent_cli/_ui_dist/assets/mermaid-parser.core-CpuBOkFa.js +5 -0
  107. keboola_agent_cli/_ui_dist/assets/mermaid-parser.core-CpuBOkFa.js.map +1 -0
  108. keboola_agent_cli/_ui_dist/assets/mindmap-definition-RKZ34NQL-9EJQNjH0.js +97 -0
  109. keboola_agent_cli/_ui_dist/assets/mindmap-definition-RKZ34NQL-9EJQNjH0.js.map +1 -0
  110. keboola_agent_cli/_ui_dist/assets/ordinal-hYBb2elL.js +2 -0
  111. keboola_agent_cli/_ui_dist/assets/ordinal-hYBb2elL.js.map +1 -0
  112. keboola_agent_cli/_ui_dist/assets/packet-YPE3B663-DLiiw_B2.js +1 -0
  113. keboola_agent_cli/_ui_dist/assets/path-BWPyau1x.js +2 -0
  114. keboola_agent_cli/_ui_dist/assets/path-BWPyau1x.js.map +1 -0
  115. keboola_agent_cli/_ui_dist/assets/pie-LRSECV5Y-CRoO8G1g.js +1 -0
  116. keboola_agent_cli/_ui_dist/assets/pieDiagram-4H26LBE5-XH4cy6Cb.js +31 -0
  117. keboola_agent_cli/_ui_dist/assets/pieDiagram-4H26LBE5-XH4cy6Cb.js.map +1 -0
  118. keboola_agent_cli/_ui_dist/assets/quadrantDiagram-W4KKPZXB-fdhc93U8.js +8 -0
  119. keboola_agent_cli/_ui_dist/assets/quadrantDiagram-W4KKPZXB-fdhc93U8.js.map +1 -0
  120. keboola_agent_cli/_ui_dist/assets/radar-GUYGQ44K-DAlLVJHm.js +1 -0
  121. keboola_agent_cli/_ui_dist/assets/requirementDiagram-4Y6WPE33-a94eP3R9.js +85 -0
  122. keboola_agent_cli/_ui_dist/assets/requirementDiagram-4Y6WPE33-a94eP3R9.js.map +1 -0
  123. keboola_agent_cli/_ui_dist/assets/rough.esm-CSKSodPl.js +2 -0
  124. keboola_agent_cli/_ui_dist/assets/rough.esm-CSKSodPl.js.map +1 -0
  125. keboola_agent_cli/_ui_dist/assets/sankeyDiagram-5OEKKPKP-jcBa02sp.js +41 -0
  126. keboola_agent_cli/_ui_dist/assets/sankeyDiagram-5OEKKPKP-jcBa02sp.js.map +1 -0
  127. keboola_agent_cli/_ui_dist/assets/sequenceDiagram-3UESZ5HK-A5-GGM-e.js +163 -0
  128. keboola_agent_cli/_ui_dist/assets/sequenceDiagram-3UESZ5HK-A5-GGM-e.js.map +1 -0
  129. keboola_agent_cli/_ui_dist/assets/src-ZI-V_AF0.js +2 -0
  130. keboola_agent_cli/_ui_dist/assets/src-ZI-V_AF0.js.map +1 -0
  131. keboola_agent_cli/_ui_dist/assets/stateDiagram-AJRCARHV-BKAA5rqE.js +2 -0
  132. keboola_agent_cli/_ui_dist/assets/stateDiagram-AJRCARHV-BKAA5rqE.js.map +1 -0
  133. keboola_agent_cli/_ui_dist/assets/stateDiagram-v2-BHNVJYJU-DnJwJBsE.js +2 -0
  134. keboola_agent_cli/_ui_dist/assets/stateDiagram-v2-BHNVJYJU-DnJwJBsE.js.map +1 -0
  135. keboola_agent_cli/_ui_dist/assets/timeline-definition-PNZ67QCA-Cy39jp8b.js +121 -0
  136. keboola_agent_cli/_ui_dist/assets/timeline-definition-PNZ67QCA-Cy39jp8b.js.map +1 -0
  137. keboola_agent_cli/_ui_dist/assets/treeView-BLDUP644-DbLYl23-.js +1 -0
  138. keboola_agent_cli/_ui_dist/assets/treemap-LRROVOQU-Bp0eGlOt.js +1 -0
  139. keboola_agent_cli/_ui_dist/assets/vennDiagram-CIIHVFJN-BGECKubd.js +35 -0
  140. keboola_agent_cli/_ui_dist/assets/vennDiagram-CIIHVFJN-BGECKubd.js.map +1 -0
  141. keboola_agent_cli/_ui_dist/assets/wardley-L42UT6IY-D4yH4jqS.js +1 -0
  142. keboola_agent_cli/_ui_dist/assets/wardleyDiagram-YWT4CUSO-D6XRG3cZ.js +79 -0
  143. keboola_agent_cli/_ui_dist/assets/wardleyDiagram-YWT4CUSO-D6XRG3cZ.js.map +1 -0
  144. keboola_agent_cli/_ui_dist/assets/xychartDiagram-2RQKCTM6-DRre-pfZ.js +8 -0
  145. keboola_agent_cli/_ui_dist/assets/xychartDiagram-2RQKCTM6-DRre-pfZ.js.map +1 -0
  146. keboola_agent_cli/_ui_dist/index.html +50 -0
  147. keboola_agent_cli/ai_client.py +83 -0
  148. keboola_agent_cli/auto_update.py +550 -0
  149. keboola_agent_cli/changelog.py +1198 -0
  150. keboola_agent_cli/cli.py +448 -0
  151. keboola_agent_cli/client.py +3422 -0
  152. keboola_agent_cli/commands/__init__.py +0 -0
  153. keboola_agent_cli/commands/_data_app_git.py +343 -0
  154. keboola_agent_cli/commands/_helpers.py +377 -0
  155. keboola_agent_cli/commands/_metadata_input.py +49 -0
  156. keboola_agent_cli/commands/_semantic_layer_crud.py +632 -0
  157. keboola_agent_cli/commands/_semantic_layer_helpers.py +44 -0
  158. keboola_agent_cli/commands/_semantic_layer_reference_data.py +247 -0
  159. keboola_agent_cli/commands/agent.py +968 -0
  160. keboola_agent_cli/commands/branch.py +423 -0
  161. keboola_agent_cli/commands/changelog.py +168 -0
  162. keboola_agent_cli/commands/component.py +216 -0
  163. keboola_agent_cli/commands/config.py +2442 -0
  164. keboola_agent_cli/commands/context.py +1481 -0
  165. keboola_agent_cli/commands/data_app.py +1279 -0
  166. keboola_agent_cli/commands/dev_portal.py +584 -0
  167. keboola_agent_cli/commands/doctor.py +37 -0
  168. keboola_agent_cli/commands/encrypt.py +145 -0
  169. keboola_agent_cli/commands/feature.py +311 -0
  170. keboola_agent_cli/commands/flow.py +948 -0
  171. keboola_agent_cli/commands/http_client.py +157 -0
  172. keboola_agent_cli/commands/init.py +279 -0
  173. keboola_agent_cli/commands/job.py +661 -0
  174. keboola_agent_cli/commands/kai.py +301 -0
  175. keboola_agent_cli/commands/lineage.py +1464 -0
  176. keboola_agent_cli/commands/org.py +292 -0
  177. keboola_agent_cli/commands/permissions.py +360 -0
  178. keboola_agent_cli/commands/project.py +1192 -0
  179. keboola_agent_cli/commands/repl.py +243 -0
  180. keboola_agent_cli/commands/schedule.py +340 -0
  181. keboola_agent_cli/commands/search.py +178 -0
  182. keboola_agent_cli/commands/semantic_layer.py +939 -0
  183. keboola_agent_cli/commands/serve.py +272 -0
  184. keboola_agent_cli/commands/sharing.py +340 -0
  185. keboola_agent_cli/commands/storage.py +2630 -0
  186. keboola_agent_cli/commands/stream.py +266 -0
  187. keboola_agent_cli/commands/sync.py +1277 -0
  188. keboola_agent_cli/commands/tool.py +206 -0
  189. keboola_agent_cli/commands/version.py +186 -0
  190. keboola_agent_cli/commands/workspace.py +635 -0
  191. keboola_agent_cli/config_store.py +582 -0
  192. keboola_agent_cli/constants.py +528 -0
  193. keboola_agent_cli/data_science_client.py +342 -0
  194. keboola_agent_cli/dev_portal_client.py +323 -0
  195. keboola_agent_cli/errors.py +248 -0
  196. keboola_agent_cli/http_base.py +315 -0
  197. keboola_agent_cli/json_utils.py +126 -0
  198. keboola_agent_cli/lib.py +536 -0
  199. keboola_agent_cli/manage_client.py +324 -0
  200. keboola_agent_cli/metastore_client.py +214 -0
  201. keboola_agent_cli/models.py +427 -0
  202. keboola_agent_cli/output.py +1084 -0
  203. keboola_agent_cli/permissions.py +469 -0
  204. keboola_agent_cli/py.typed +3 -0
  205. keboola_agent_cli/result_models.py +271 -0
  206. keboola_agent_cli/server/__init__.py +34 -0
  207. keboola_agent_cli/server/agent_runner.py +1289 -0
  208. keboola_agent_cli/server/agents_store.py +325 -0
  209. keboola_agent_cli/server/app.py +764 -0
  210. keboola_agent_cli/server/auth.py +117 -0
  211. keboola_agent_cli/server/dependencies.py +149 -0
  212. keboola_agent_cli/server/pricing.py +303 -0
  213. keboola_agent_cli/server/routers/__init__.py +1 -0
  214. keboola_agent_cli/server/routers/agents.py +616 -0
  215. keboola_agent_cli/server/routers/ai_chat.py +129 -0
  216. keboola_agent_cli/server/routers/branches.py +133 -0
  217. keboola_agent_cli/server/routers/components.py +48 -0
  218. keboola_agent_cli/server/routers/configs.py +507 -0
  219. keboola_agent_cli/server/routers/data_apps.py +384 -0
  220. keboola_agent_cli/server/routers/dev_portal.py +67 -0
  221. keboola_agent_cli/server/routers/encrypt.py +35 -0
  222. keboola_agent_cli/server/routers/feature.py +179 -0
  223. keboola_agent_cli/server/routers/flows.py +204 -0
  224. keboola_agent_cli/server/routers/health.py +53 -0
  225. keboola_agent_cli/server/routers/jobs.py +175 -0
  226. keboola_agent_cli/server/routers/kai.py +80 -0
  227. keboola_agent_cli/server/routers/lineage.py +226 -0
  228. keboola_agent_cli/server/routers/mcp.py +70 -0
  229. keboola_agent_cli/server/routers/members.py +170 -0
  230. keboola_agent_cli/server/routers/org.py +96 -0
  231. keboola_agent_cli/server/routers/projects.py +106 -0
  232. keboola_agent_cli/server/routers/schedules.py +54 -0
  233. keboola_agent_cli/server/routers/search.py +30 -0
  234. keboola_agent_cli/server/routers/semantic_layer.py +650 -0
  235. keboola_agent_cli/server/routers/sharing.py +86 -0
  236. keboola_agent_cli/server/routers/storage.py +574 -0
  237. keboola_agent_cli/server/routers/stream.py +100 -0
  238. keboola_agent_cli/server/routers/workspaces.py +302 -0
  239. keboola_agent_cli/server/run_broadcaster.py +329 -0
  240. keboola_agent_cli/server/sse.py +25 -0
  241. keboola_agent_cli/services/__init__.py +0 -0
  242. keboola_agent_cli/services/_encryption.py +217 -0
  243. keboola_agent_cli/services/_semantic_layer_cascade.py +147 -0
  244. keboola_agent_cli/services/_semantic_layer_crud.py +382 -0
  245. keboola_agent_cli/services/_semantic_layer_internals.py +1078 -0
  246. keboola_agent_cli/services/_semantic_layer_lookup.py +181 -0
  247. keboola_agent_cli/services/_semantic_layer_reference_data.py +217 -0
  248. keboola_agent_cli/services/_sync_bindings.py +456 -0
  249. keboola_agent_cli/services/_sync_branch.py +191 -0
  250. keboola_agent_cli/services/_sync_bulk.py +228 -0
  251. keboola_agent_cli/services/_sync_clone.py +163 -0
  252. keboola_agent_cli/services/_sync_models.py +97 -0
  253. keboola_agent_cli/services/_sync_push_ops.py +369 -0
  254. keboola_agent_cli/services/_sync_storage.py +376 -0
  255. keboola_agent_cli/services/_sync_writeback.py +167 -0
  256. keboola_agent_cli/services/agent_service.py +458 -0
  257. keboola_agent_cli/services/base.py +175 -0
  258. keboola_agent_cli/services/branch_service.py +588 -0
  259. keboola_agent_cli/services/component_service.py +694 -0
  260. keboola_agent_cli/services/config_service.py +2099 -0
  261. keboola_agent_cli/services/data_app_git_service.py +224 -0
  262. keboola_agent_cli/services/data_app_service.py +2082 -0
  263. keboola_agent_cli/services/deep_lineage_service.py +1322 -0
  264. keboola_agent_cli/services/dev_portal_service.py +345 -0
  265. keboola_agent_cli/services/doctor_service.py +445 -0
  266. keboola_agent_cli/services/encrypt_service.py +87 -0
  267. keboola_agent_cli/services/feature_service.py +268 -0
  268. keboola_agent_cli/services/flow_service.py +769 -0
  269. keboola_agent_cli/services/flow_validation.py +188 -0
  270. keboola_agent_cli/services/http_forwarder_service.py +236 -0
  271. keboola_agent_cli/services/job_idempotency_store.py +285 -0
  272. keboola_agent_cli/services/job_service.py +797 -0
  273. keboola_agent_cli/services/kai_service.py +367 -0
  274. keboola_agent_cli/services/lineage_service.py +274 -0
  275. keboola_agent_cli/services/mcp_service.py +1498 -0
  276. keboola_agent_cli/services/mcp_transport.py +259 -0
  277. keboola_agent_cli/services/member_service.py +593 -0
  278. keboola_agent_cli/services/org_service.py +619 -0
  279. keboola_agent_cli/services/project_service.py +947 -0
  280. keboola_agent_cli/services/repo_validate_service.py +767 -0
  281. keboola_agent_cli/services/schedule_service.py +731 -0
  282. keboola_agent_cli/services/search_service.py +331 -0
  283. keboola_agent_cli/services/semantic_layer_service.py +1497 -0
  284. keboola_agent_cli/services/sharing_service.py +307 -0
  285. keboola_agent_cli/services/storage_service.py +2524 -0
  286. keboola_agent_cli/services/stream_service.py +395 -0
  287. keboola_agent_cli/services/sync_service.py +2244 -0
  288. keboola_agent_cli/services/variables_service.py +447 -0
  289. keboola_agent_cli/services/version_service.py +1038 -0
  290. keboola_agent_cli/services/workspace_service.py +1103 -0
  291. keboola_agent_cli/stream_client.py +217 -0
  292. keboola_agent_cli/sync/__init__.py +1 -0
  293. keboola_agent_cli/sync/branch_mapping.py +174 -0
  294. keboola_agent_cli/sync/clone.py +211 -0
  295. keboola_agent_cli/sync/code_extraction.py +655 -0
  296. keboola_agent_cli/sync/config_format.py +290 -0
  297. keboola_agent_cli/sync/diff_engine.py +566 -0
  298. keboola_agent_cli/sync/git_utils.py +93 -0
  299. keboola_agent_cli/sync/manifest.py +162 -0
  300. keboola_agent_cli/sync/naming.py +90 -0
  301. keboola_agent_cli/sync/secrets.py +62 -0
  302. keboola_agent_cli/sync/sql_split.py +134 -0
  303. keboola_cli-0.63.4.dist-info/METADATA +308 -0
  304. keboola_cli-0.63.4.dist-info/RECORD +306 -0
  305. keboola_cli-0.63.4.dist-info/WHEEL +4 -0
  306. keboola_cli-0.63.4.dist-info/entry_points.txt +2 -0
@@ -0,0 +1,369 @@
1
+ """Per-change push CRUD operations (create/update/delete config + rows).
2
+
3
+ Extracted from sync_service.py. ``push()`` calls :func:`push_create`,
4
+ :func:`push_update`, and :func:`push_row_change`; the row dispatcher fans out to
5
+ the create/update/delete row helpers. Each reads a local ``_config.yml``,
6
+ encrypts ``#``-prefixed secrets (fail-closed), POSTs/PUTs/DELETEs, then writes
7
+ the API-assigned id + encrypted secrets back to disk and refreshes the manifest
8
+ hashes. Free functions taking the ``SyncService`` for the on-disk helpers it owns
9
+ (``_read_config_file`` / ``_file_hash`` / ``_resolve_source_branch_path``).
10
+ """
11
+
12
+ from __future__ import annotations
13
+
14
+ import copy
15
+ import logging
16
+ from pathlib import Path
17
+ from typing import TYPE_CHECKING, Any
18
+
19
+ from ..constants import CONFIG_FILENAME
20
+ from ..errors import ErrorCode, KeboolaApiError
21
+ from ..sync.code_extraction import merge_code_files
22
+ from ..sync.config_format import local_config_to_api, local_row_to_api
23
+ from ..sync.diff_engine import config_hash
24
+ from ..sync.manifest import Manifest, ManifestConfiguration
25
+ from ._encryption import encrypt_secrets_in_config
26
+ from ._sync_writeback import writeback_after_push, writeback_create_row_in_manifest
27
+
28
+ if TYPE_CHECKING:
29
+ from .sync_service import SyncService
30
+
31
+ logger = logging.getLogger(__name__)
32
+
33
+
34
+ def push_row_change(
35
+ service: SyncService,
36
+ client: Any,
37
+ *,
38
+ change_type: str,
39
+ component_id: str,
40
+ parent_config_id: str,
41
+ row_id: str,
42
+ row_path_str: str,
43
+ project_root: Path,
44
+ manifest: Manifest,
45
+ branch_id: int | None,
46
+ allow_plaintext_fallback: bool = False,
47
+ ) -> str | None:
48
+ """Dispatch a single row-level change (added/modified/deleted) to the API.
49
+
50
+ ``#``-prefixed secrets in the row's configuration are encrypted via
51
+ :func:`encrypt_secrets_in_config` before POST/PUT (same fail-closed semantics
52
+ as parent configs). Mutates ``manifest`` in place; the caller is responsible
53
+ for persisting it.
54
+
55
+ ``parent_config_id`` must already be the *effective* parent id: on a fresh
56
+ CREATE the caller remaps the diff-time placeholder to the API-assigned ULID
57
+ before dispatch, so both the manifest parent lookup and
58
+ ``create_config_row(config_id=...)`` hit the real config (KFR-05).
59
+
60
+ Returns the API-assigned row id on ``added`` (so the caller can map
61
+ placeholder -> ULID for variable-link backfill), else ``None``.
62
+ """
63
+ parent = next(
64
+ (
65
+ c
66
+ for c in manifest.configurations
67
+ if c.component_id == component_id and c.id == parent_config_id
68
+ ),
69
+ None,
70
+ )
71
+ if parent is None and change_type != "deleted":
72
+ raise KeboolaApiError(
73
+ message=(
74
+ f"Cannot push row {row_id}: parent config {component_id}/"
75
+ f"{parent_config_id} is not tracked in the manifest."
76
+ ),
77
+ status_code=0,
78
+ error_code=ErrorCode.PARENT_CONFIG_NOT_TRACKED,
79
+ )
80
+
81
+ project_id = manifest.project.id if manifest.project else None
82
+
83
+ if change_type == "deleted":
84
+ _push_delete_row(
85
+ client,
86
+ component_id=component_id,
87
+ parent_config_id=parent_config_id,
88
+ row_id=row_id,
89
+ parent=parent,
90
+ branch_id=branch_id,
91
+ )
92
+ return None
93
+
94
+ # added / modified both read a local row file and encrypt-then-push.
95
+ assert parent is not None # guarded above for non-deleted change_types
96
+ source_branch_path = service._resolve_source_branch_path(manifest, project_root, branch_id)
97
+ row_dir = project_root / source_branch_path / parent.path / row_path_str
98
+
99
+ if change_type == "added":
100
+ return _push_create_row(
101
+ service,
102
+ client,
103
+ component_id=component_id,
104
+ parent_config_id=parent_config_id,
105
+ row_dir=row_dir,
106
+ parent=parent,
107
+ row_path_str=row_path_str,
108
+ branch_id=branch_id,
109
+ project_id=project_id,
110
+ allow_plaintext_fallback=allow_plaintext_fallback,
111
+ )
112
+
113
+ if change_type == "modified":
114
+ push_update_row(
115
+ service,
116
+ client,
117
+ component_id=component_id,
118
+ parent_config_id=parent_config_id,
119
+ row_id=row_id,
120
+ row_dir=row_dir,
121
+ parent=parent,
122
+ branch_id=branch_id,
123
+ project_id=project_id,
124
+ allow_plaintext_fallback=allow_plaintext_fallback,
125
+ )
126
+ return None
127
+
128
+ raise ValueError(f"Unsupported row change_type: {change_type}")
129
+
130
+
131
+ def _push_create_row(
132
+ service: SyncService,
133
+ client: Any,
134
+ *,
135
+ component_id: str,
136
+ parent_config_id: str,
137
+ row_dir: Path,
138
+ parent: ManifestConfiguration,
139
+ row_path_str: str,
140
+ branch_id: int | None,
141
+ project_id: int | None,
142
+ allow_plaintext_fallback: bool,
143
+ ) -> str:
144
+ """POST a new row; record API-assigned id + hashes in the parent's row list.
145
+
146
+ Returns the API-assigned row id.
147
+ """
148
+ local_data = service._read_config_file(row_dir)
149
+ if local_data is None:
150
+ raise FileNotFoundError(f"Row file not found: {row_dir / CONFIG_FILENAME}")
151
+
152
+ pristine_data = copy.deepcopy(local_data)
153
+ name, description, configuration = local_row_to_api(local_data, component_id)
154
+ configuration = encrypt_secrets_in_config(
155
+ client,
156
+ project_id,
157
+ component_id,
158
+ configuration,
159
+ allow_plaintext_fallback=allow_plaintext_fallback,
160
+ )
161
+
162
+ result = client.create_config_row(
163
+ component_id=component_id,
164
+ config_id=parent_config_id,
165
+ name=name,
166
+ configuration=configuration,
167
+ description=description,
168
+ branch_id=branch_id,
169
+ )
170
+ new_row_id = str(result.get("id", ""))
171
+ logger.info("Created row %s/%s/%s", component_id, parent_config_id, new_row_id)
172
+
173
+ # Write-back: encrypted secrets land in the local file so a subsequent diff
174
+ # sees local == remote. ``config_id=""`` tells the shared helper to skip
175
+ # writing a config_id into ``_keboola`` (rows use ``row_id``).
176
+ writeback_after_push(service, pristine_data, row_dir, "", configuration)
177
+
178
+ row_file = row_dir / CONFIG_FILENAME
179
+ new_file_hash = service._file_hash(row_file) if row_file.exists() else ""
180
+ cfg_hash_value = config_hash(pristine_data)
181
+ writeback_create_row_in_manifest(
182
+ parent=parent,
183
+ row_path_str=row_path_str,
184
+ new_row_id=new_row_id,
185
+ file_hash=new_file_hash,
186
+ cfg_hash=cfg_hash_value,
187
+ )
188
+ return new_row_id
189
+
190
+
191
+ def push_update_row(
192
+ service: SyncService,
193
+ client: Any,
194
+ *,
195
+ component_id: str,
196
+ parent_config_id: str,
197
+ row_id: str,
198
+ row_dir: Path,
199
+ parent: ManifestConfiguration,
200
+ branch_id: int | None,
201
+ project_id: int | None,
202
+ allow_plaintext_fallback: bool,
203
+ ) -> None:
204
+ """PUT an existing row; refresh its hashes in the parent's row list."""
205
+ local_data = service._read_config_file(row_dir)
206
+ if local_data is None:
207
+ raise FileNotFoundError(f"Row file not found: {row_dir / CONFIG_FILENAME}")
208
+
209
+ pristine_data = copy.deepcopy(local_data)
210
+ name, description, configuration = local_row_to_api(local_data, component_id)
211
+ configuration = encrypt_secrets_in_config(
212
+ client,
213
+ project_id,
214
+ component_id,
215
+ configuration,
216
+ allow_plaintext_fallback=allow_plaintext_fallback,
217
+ )
218
+
219
+ client.update_config_row(
220
+ component_id=component_id,
221
+ config_id=parent_config_id,
222
+ row_id=row_id,
223
+ name=name,
224
+ configuration=configuration,
225
+ description=description,
226
+ change_description="Updated via kbagent sync push",
227
+ branch_id=branch_id,
228
+ )
229
+ logger.info("Updated row %s/%s/%s", component_id, parent_config_id, row_id)
230
+
231
+ writeback_after_push(service, pristine_data, row_dir, "", configuration)
232
+
233
+ row_file = row_dir / CONFIG_FILENAME
234
+ new_file_hash = service._file_hash(row_file) if row_file.exists() else ""
235
+ cfg_hash_value = config_hash(pristine_data)
236
+ for r in parent.rows:
237
+ if r.id == row_id:
238
+ r.metadata["pull_hash"] = new_file_hash
239
+ r.metadata["pull_config_hash"] = cfg_hash_value
240
+ break
241
+
242
+
243
+ def _push_delete_row(
244
+ client: Any,
245
+ *,
246
+ component_id: str,
247
+ parent_config_id: str,
248
+ row_id: str,
249
+ parent: ManifestConfiguration | None,
250
+ branch_id: int | None,
251
+ ) -> None:
252
+ """DELETE a row; prune it from the parent's row list in the manifest."""
253
+ client.delete_config_row(
254
+ component_id=component_id,
255
+ config_id=parent_config_id,
256
+ row_id=row_id,
257
+ branch_id=branch_id,
258
+ )
259
+ if parent is not None:
260
+ parent.rows = [r for r in parent.rows if r.id != row_id]
261
+ logger.info("Deleted row %s/%s/%s", component_id, parent_config_id, row_id)
262
+
263
+
264
+ def push_create(
265
+ service: SyncService,
266
+ client: Any,
267
+ component_id: str,
268
+ config_path_str: str,
269
+ project_root: Path,
270
+ manifest: Manifest,
271
+ branch_id: int | None,
272
+ *,
273
+ allow_plaintext_fallback: bool = False,
274
+ ) -> dict[str, Any] | None:
275
+ """Create a new config from a local _config.yml file."""
276
+ branch_path = service._resolve_source_branch_path(manifest, project_root, branch_id)
277
+ config_dir = project_root / branch_path / config_path_str
278
+ local_data = service._read_config_file(config_dir)
279
+ if local_data is None:
280
+ return None
281
+
282
+ # Preserve pristine data for writeback (merge_code_files mutates local_data
283
+ # by injecting parameters.blocks which should not end up in _config.yml).
284
+ pristine_data = copy.deepcopy(local_data)
285
+
286
+ # Merge code files (transform.sql, transform.py, code.py) back into config
287
+ merge_code_files(component_id, local_data, config_dir)
288
+
289
+ name, description, configuration = local_config_to_api(local_data)
290
+
291
+ # Encrypt #-prefixed secrets before sending to API
292
+ project_id = manifest.project.id if manifest.project else None
293
+ configuration = encrypt_secrets_in_config(
294
+ client,
295
+ project_id,
296
+ component_id,
297
+ configuration,
298
+ allow_plaintext_fallback=allow_plaintext_fallback,
299
+ )
300
+
301
+ result = client.create_config(
302
+ component_id=component_id,
303
+ name=name,
304
+ configuration=configuration,
305
+ description=description,
306
+ branch_id=branch_id,
307
+ )
308
+ new_config_id = result.get("id", "")
309
+ logger.info("Created config %s/%s (ID: %s)", component_id, name, new_config_id)
310
+
311
+ # Write back: update local file with config_id + encrypted secrets. Use
312
+ # pristine_data so blocks/code stay only in their code files.
313
+ writeback_after_push(service, pristine_data, config_dir, new_config_id, configuration)
314
+
315
+ return result
316
+
317
+
318
+ def push_update(
319
+ service: SyncService,
320
+ client: Any,
321
+ component_id: str,
322
+ config_id: str,
323
+ config_path_str: str,
324
+ project_root: Path,
325
+ manifest: Manifest,
326
+ branch_id: int | None,
327
+ *,
328
+ allow_plaintext_fallback: bool = False,
329
+ ) -> None:
330
+ """Update an existing config from a local _config.yml file."""
331
+ branch_path = service._resolve_source_branch_path(manifest, project_root, branch_id)
332
+ config_dir = project_root / branch_path / config_path_str
333
+ local_data = service._read_config_file(config_dir)
334
+ if local_data is None:
335
+ raise FileNotFoundError(f"Config file not found: {config_dir / CONFIG_FILENAME}")
336
+
337
+ # Preserve pristine data for writeback (merge_code_files mutates local_data
338
+ # by injecting parameters.blocks which should not end up in _config.yml).
339
+ pristine_data = copy.deepcopy(local_data)
340
+
341
+ # Merge code files (transform.sql, transform.py, code.py) back into config
342
+ merge_code_files(component_id, local_data, config_dir)
343
+
344
+ name, description, configuration = local_config_to_api(local_data)
345
+
346
+ # Encrypt #-prefixed secrets before sending to API
347
+ project_id = manifest.project.id if manifest.project else None
348
+ configuration = encrypt_secrets_in_config(
349
+ client,
350
+ project_id,
351
+ component_id,
352
+ configuration,
353
+ allow_plaintext_fallback=allow_plaintext_fallback,
354
+ )
355
+
356
+ client.update_config(
357
+ component_id=component_id,
358
+ config_id=config_id,
359
+ name=name,
360
+ configuration=configuration,
361
+ description=description,
362
+ change_description="Updated via kbagent sync push",
363
+ branch_id=branch_id,
364
+ )
365
+ logger.info("Updated config %s/%s", component_id, config_id)
366
+
367
+ # Write back: update local file with encrypted secrets. Use pristine_data so
368
+ # blocks/code stay only in their code files.
369
+ writeback_after_push(service, pristine_data, config_dir, config_id, configuration)