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,507 @@
1
+ """Component configuration endpoints (list, detail, update, search, rows, metadata, OAuth)."""
2
+
3
+ from __future__ import annotations
4
+
5
+ from pathlib import Path
6
+ from typing import Any
7
+
8
+ from fastapi import APIRouter, Body, Depends, Query
9
+ from pydantic import BaseModel
10
+
11
+ from ..dependencies import ServiceRegistry, get_registry
12
+
13
+ router = APIRouter(prefix="/configs", tags=["configs"])
14
+
15
+
16
+ class ConfigUpdate(BaseModel):
17
+ name: str | None = None
18
+ description: str | None = None
19
+ configuration: dict[str, Any] | None = None
20
+ set_paths: list[tuple[str, Any]] | None = None
21
+ merge: bool = False
22
+ dry_run: bool = False
23
+ branch_id: int | None = None
24
+
25
+
26
+ class ConfigCreateRow(BaseModel):
27
+ name: str
28
+ description: str | None = None
29
+ configuration: dict[str, Any] | None = None
30
+ is_disabled: bool = False
31
+ branch_id: int | None = None
32
+
33
+
34
+ class ConfigUpdateRow(BaseModel):
35
+ name: str | None = None
36
+ description: str | None = None
37
+ configuration: dict[str, Any] | None = None
38
+ is_disabled: bool | None = None
39
+ branch_id: int | None = None
40
+
41
+
42
+ class ConfigCreate(BaseModel):
43
+ name: str
44
+ description: str | None = None
45
+ configuration: dict[str, Any] | None = None
46
+ branch_id: int | None = None
47
+
48
+
49
+ class SetDefaultBucket(BaseModel):
50
+ bucket: str | None = None
51
+ clear: bool = False
52
+ dry_run: bool = False
53
+ branch_id: int | None = None
54
+
55
+
56
+ class RenameConfig(BaseModel):
57
+ name: str
58
+ branch_id: int | None = None
59
+ directory: str | None = None
60
+
61
+
62
+ class MetadataSet(BaseModel):
63
+ value: str
64
+
65
+
66
+ @router.get("", summary="List component configurations")
67
+ def list_configs(
68
+ project: str | None = Query(None, description="Project alias (None = all)"),
69
+ component_type: str | None = None,
70
+ component_id: str | None = None,
71
+ branch_id: int | None = None,
72
+ include_rows: bool = False,
73
+ registry: ServiceRegistry = Depends(get_registry),
74
+ ) -> dict[str, Any]:
75
+ """List component configurations across projects. Mirrors `kbagent config list`."""
76
+ aliases = [project] if project else None
77
+ return registry.config.list_configs(
78
+ aliases=aliases,
79
+ component_type=component_type,
80
+ component_id=component_id,
81
+ branch_id=branch_id,
82
+ include_rows=include_rows,
83
+ )
84
+
85
+
86
+ @router.get("/search", summary="Search configurations by pattern")
87
+ def search_configs(
88
+ query: str,
89
+ project: str | None = None,
90
+ component_type: str | None = None,
91
+ ignore_case: bool = False,
92
+ regex: bool = False,
93
+ branch_id: int | None = None,
94
+ registry: ServiceRegistry = Depends(get_registry),
95
+ ) -> dict[str, Any]:
96
+ """Search component configurations by substring or regex. Mirrors `kbagent config search`."""
97
+ aliases = [project] if project else None
98
+ return registry.config.search_configs(
99
+ query=query,
100
+ aliases=aliases,
101
+ component_type=component_type,
102
+ ignore_case=ignore_case,
103
+ use_regex=regex,
104
+ branch_id=branch_id,
105
+ )
106
+
107
+
108
+ @router.get("/{project}/{component_id}/{config_id}", summary="Get configuration detail")
109
+ def config_detail(
110
+ project: str,
111
+ component_id: str,
112
+ config_id: str,
113
+ branch_id: int | None = None,
114
+ with_state: bool = False,
115
+ include_sandbox_annotation: bool = Query(
116
+ False,
117
+ description=(
118
+ "Opt-in enrichment for component_id=keboola.sandboxes. When true, "
119
+ "the response carries a `sandbox_annotation` block with "
120
+ "`sandbox_service_id` (the misleading `configuration.parameters.id`) "
121
+ "and `storage_workspace_id` (the actual Storage workspace ID, "
122
+ "resolved via an extra GET /v2/storage/workspaces). Off by default "
123
+ "to keep the endpoint response shape stable for existing callers. "
124
+ "Closes #312 (HTTP parity for the #304 trap)."
125
+ ),
126
+ ),
127
+ registry: ServiceRegistry = Depends(get_registry),
128
+ ) -> dict[str, Any]:
129
+ """Fetch a single configuration. Mirrors `kbagent config detail`."""
130
+ return registry.config.get_config_detail(
131
+ alias=project,
132
+ component_id=component_id,
133
+ config_id=config_id,
134
+ branch_id=branch_id,
135
+ with_state=with_state,
136
+ include_sandbox_annotation=include_sandbox_annotation,
137
+ )
138
+
139
+
140
+ @router.patch("/{project}/{component_id}/{config_id}", summary="Update a configuration")
141
+ def config_update(
142
+ project: str,
143
+ component_id: str,
144
+ config_id: str,
145
+ body: ConfigUpdate,
146
+ registry: ServiceRegistry = Depends(get_registry),
147
+ ) -> dict[str, Any]:
148
+ """Update a configuration name, description, or content. Mirrors `kbagent config update`."""
149
+ return registry.config.update_config(
150
+ alias=project,
151
+ component_id=component_id,
152
+ config_id=config_id,
153
+ name=body.name,
154
+ description=body.description,
155
+ configuration=body.configuration,
156
+ set_paths=body.set_paths,
157
+ merge=body.merge,
158
+ dry_run=body.dry_run,
159
+ branch_id=body.branch_id,
160
+ )
161
+
162
+
163
+ @router.delete("/{project}/{component_id}/{config_id}", summary="Delete a configuration")
164
+ def config_delete(
165
+ project: str,
166
+ component_id: str,
167
+ config_id: str,
168
+ branch_id: int | None = None,
169
+ registry: ServiceRegistry = Depends(get_registry),
170
+ ) -> dict[str, Any]:
171
+ """Delete a component configuration."""
172
+ return registry.config.delete_config(
173
+ alias=project,
174
+ component_id=component_id,
175
+ config_id=config_id,
176
+ branch_id=branch_id,
177
+ )
178
+
179
+
180
+ @router.post("/{project}/{component_id}", summary="Create a configuration")
181
+ def config_create(
182
+ project: str,
183
+ component_id: str,
184
+ body: ConfigCreate,
185
+ registry: ServiceRegistry = Depends(get_registry),
186
+ ) -> dict[str, Any]:
187
+ """Create a new configuration for a component. Mirrors `kbagent config new`."""
188
+ return registry.config.create_config(
189
+ alias=project,
190
+ component_id=component_id,
191
+ name=body.name,
192
+ description=body.description or "",
193
+ configuration=body.configuration,
194
+ branch_id=body.branch_id,
195
+ )
196
+
197
+
198
+ @router.post(
199
+ "/{project}/{component_id}/{config_id}/set-default-bucket",
200
+ summary="Set or clear default bucket",
201
+ )
202
+ def config_set_default_bucket(
203
+ project: str,
204
+ component_id: str,
205
+ config_id: str,
206
+ body: SetDefaultBucket,
207
+ registry: ServiceRegistry = Depends(get_registry),
208
+ ) -> dict[str, Any]:
209
+ """Set or clear a configuration's default bucket. Mirrors `kbagent config set-default-bucket`."""
210
+ return registry.config.set_default_bucket(
211
+ alias=project,
212
+ component_id=component_id,
213
+ config_id=config_id,
214
+ bucket=body.bucket,
215
+ clear=body.clear,
216
+ dry_run=body.dry_run,
217
+ branch_id=body.branch_id,
218
+ )
219
+
220
+
221
+ @router.post("/{project}/{component_id}/{config_id}/rename", summary="Rename a configuration")
222
+ def config_rename(
223
+ project: str,
224
+ component_id: str,
225
+ config_id: str,
226
+ body: RenameConfig,
227
+ registry: ServiceRegistry = Depends(get_registry),
228
+ ) -> dict[str, Any]:
229
+ """Rename a configuration. Mirrors `kbagent config rename`."""
230
+ return registry.config.rename_config(
231
+ alias=project,
232
+ component_id=component_id,
233
+ config_id=config_id,
234
+ name=body.name,
235
+ branch_id=body.branch_id,
236
+ directory=Path(body.directory) if body.directory else None,
237
+ )
238
+
239
+
240
+ @router.get("/{project}/{component_id}/{config_id}/metadata", summary="List configuration metadata")
241
+ def metadata_list(
242
+ project: str,
243
+ component_id: str,
244
+ config_id: str,
245
+ branch_id: int | None = None,
246
+ registry: ServiceRegistry = Depends(get_registry),
247
+ ) -> dict[str, Any]:
248
+ """List metadata entries on a configuration. Mirrors `kbagent config metadata-list`."""
249
+ return registry.config.list_config_metadata(
250
+ alias=project,
251
+ component_id=component_id,
252
+ config_id=config_id,
253
+ branch_id=branch_id,
254
+ )
255
+
256
+
257
+ @router.get(
258
+ "/{project}/{component_id}/{config_id}/metadata/{key}",
259
+ summary="Get a metadata value",
260
+ )
261
+ def metadata_get(
262
+ project: str,
263
+ component_id: str,
264
+ config_id: str,
265
+ key: str,
266
+ branch_id: int | None = None,
267
+ registry: ServiceRegistry = Depends(get_registry),
268
+ ) -> dict[str, Any]:
269
+ """Read a single metadata value by key. Mirrors `kbagent config get-metadata`."""
270
+ return registry.config.get_config_metadata_value(
271
+ alias=project,
272
+ component_id=component_id,
273
+ config_id=config_id,
274
+ key=key,
275
+ branch_id=branch_id,
276
+ )
277
+
278
+
279
+ @router.put(
280
+ "/{project}/{component_id}/{config_id}/metadata/{key}",
281
+ summary="Set a metadata value",
282
+ )
283
+ def metadata_set(
284
+ project: str,
285
+ component_id: str,
286
+ config_id: str,
287
+ key: str,
288
+ body: MetadataSet,
289
+ branch_id: int | None = None,
290
+ registry: ServiceRegistry = Depends(get_registry),
291
+ ) -> dict[str, Any]:
292
+ """Set a metadata value on a configuration. Mirrors `kbagent config set-metadata`."""
293
+ return registry.config.set_config_metadata(
294
+ alias=project,
295
+ component_id=component_id,
296
+ config_id=config_id,
297
+ key=key,
298
+ value=body.value,
299
+ branch_id=branch_id,
300
+ )
301
+
302
+
303
+ @router.delete(
304
+ "/{project}/{component_id}/{config_id}/metadata/{metadata_id}",
305
+ summary="Delete a metadata entry",
306
+ )
307
+ def metadata_delete(
308
+ project: str,
309
+ component_id: str,
310
+ config_id: str,
311
+ metadata_id: str,
312
+ branch_id: int | None = None,
313
+ registry: ServiceRegistry = Depends(get_registry),
314
+ ) -> dict[str, Any]:
315
+ """Delete a metadata entry by id. Mirrors `kbagent config delete-metadata`."""
316
+ return registry.config.delete_config_metadata(
317
+ alias=project,
318
+ component_id=component_id,
319
+ config_id=config_id,
320
+ metadata_id=metadata_id,
321
+ branch_id=branch_id,
322
+ )
323
+
324
+
325
+ @router.post(
326
+ "/{project}/{component_id}/{config_id}/folder", summary="Move configuration to a folder"
327
+ )
328
+ def set_folder(
329
+ project: str,
330
+ component_id: str,
331
+ config_id: str,
332
+ folder: str = Body(..., embed=True),
333
+ branch_id: int | None = None,
334
+ registry: ServiceRegistry = Depends(get_registry),
335
+ ) -> dict[str, Any]:
336
+ """Move a configuration into a folder. Mirrors `kbagent config set-folder`."""
337
+ return registry.config.set_config_folder(
338
+ alias=project,
339
+ component_id=component_id,
340
+ config_id=config_id,
341
+ folder_name=folder,
342
+ branch_id=branch_id,
343
+ )
344
+
345
+
346
+ @router.post("/{project}/{component_id}/{config_id}/rows", summary="Create a configuration row")
347
+ def row_create(
348
+ project: str,
349
+ component_id: str,
350
+ config_id: str,
351
+ body: ConfigCreateRow,
352
+ registry: ServiceRegistry = Depends(get_registry),
353
+ ) -> dict[str, Any]:
354
+ """Create a new row on a configuration. Mirrors `kbagent config row-create`."""
355
+ return registry.config.create_config_row(
356
+ alias=project,
357
+ component_id=component_id,
358
+ config_id=config_id,
359
+ name=body.name,
360
+ description=body.description or "",
361
+ configuration=body.configuration,
362
+ is_disabled=body.is_disabled,
363
+ branch_id=body.branch_id,
364
+ )
365
+
366
+
367
+ @router.patch(
368
+ "/{project}/{component_id}/{config_id}/rows/{row_id}",
369
+ summary="Update a configuration row",
370
+ )
371
+ def row_update(
372
+ project: str,
373
+ component_id: str,
374
+ config_id: str,
375
+ row_id: str,
376
+ body: ConfigUpdateRow,
377
+ registry: ServiceRegistry = Depends(get_registry),
378
+ ) -> dict[str, Any]:
379
+ """Update a configuration row. Mirrors `kbagent config row-update`."""
380
+ return registry.config.update_config_row(
381
+ alias=project,
382
+ component_id=component_id,
383
+ config_id=config_id,
384
+ row_id=row_id,
385
+ name=body.name,
386
+ description=body.description,
387
+ configuration=body.configuration,
388
+ is_disabled=body.is_disabled,
389
+ branch_id=body.branch_id,
390
+ )
391
+
392
+
393
+ @router.delete(
394
+ "/{project}/{component_id}/{config_id}/rows/{row_id}",
395
+ summary="Delete a configuration row",
396
+ )
397
+ def row_delete(
398
+ project: str,
399
+ component_id: str,
400
+ config_id: str,
401
+ row_id: str,
402
+ branch_id: int | None = None,
403
+ registry: ServiceRegistry = Depends(get_registry),
404
+ ) -> dict[str, Any]:
405
+ """Delete a configuration row. Mirrors `kbagent config row-delete`."""
406
+ return registry.config.delete_config_row(
407
+ alias=project,
408
+ component_id=component_id,
409
+ config_id=config_id,
410
+ row_id=row_id,
411
+ branch_id=branch_id,
412
+ )
413
+
414
+
415
+ @router.get(
416
+ "/{project}/{component_id}/{config_id}/oauth-url",
417
+ summary="Get OAuth authorization URL",
418
+ )
419
+ def oauth_url(
420
+ project: str,
421
+ component_id: str,
422
+ config_id: str,
423
+ redirect_url: str | None = None,
424
+ registry: ServiceRegistry = Depends(get_registry),
425
+ ) -> dict[str, Any]:
426
+ """Get an OAuth authorization URL for a configuration. Mirrors `kbagent config oauth-url`."""
427
+ return registry.config.get_oauth_url(
428
+ alias=project,
429
+ component_id=component_id,
430
+ config_id=config_id,
431
+ redirect_url=redirect_url,
432
+ )
433
+
434
+
435
+ # ---- Variables (delegated to VariablesService) ----
436
+
437
+
438
+ class VariablesSet(BaseModel):
439
+ variables: dict[str, str]
440
+ replace: bool = False
441
+ variables_id: str | None = None
442
+ values_id: str | None = None
443
+ branch_id: int | None = None
444
+
445
+
446
+ @router.get(
447
+ "/{project}/{component_id}/{config_id}/variables",
448
+ summary="Get configuration variables",
449
+ )
450
+ def variables_get(
451
+ project: str,
452
+ component_id: str,
453
+ config_id: str,
454
+ branch_id: int | None = None,
455
+ registry: ServiceRegistry = Depends(get_registry),
456
+ ) -> dict[str, Any]:
457
+ """Read variables attached to a configuration. Mirrors `kbagent config variables-get`."""
458
+ return registry.variables.get_variables(
459
+ alias=project,
460
+ component_id=component_id,
461
+ config_id=config_id,
462
+ branch_id=branch_id,
463
+ )
464
+
465
+
466
+ @router.put(
467
+ "/{project}/{component_id}/{config_id}/variables",
468
+ summary="Set configuration variables",
469
+ )
470
+ def variables_set(
471
+ project: str,
472
+ component_id: str,
473
+ config_id: str,
474
+ body: VariablesSet,
475
+ registry: ServiceRegistry = Depends(get_registry),
476
+ ) -> dict[str, Any]:
477
+ """Set or merge configuration variables. Mirrors `kbagent config variables-set`."""
478
+ return registry.variables.set_variables(
479
+ alias=project,
480
+ component_id=component_id,
481
+ config_id=config_id,
482
+ variables=body.variables,
483
+ replace=body.replace,
484
+ variables_id=body.variables_id,
485
+ values_id=body.values_id,
486
+ branch_id=body.branch_id,
487
+ )
488
+
489
+
490
+ @router.delete(
491
+ "/{project}/{component_id}/{config_id}/variables",
492
+ summary="Clear configuration variables",
493
+ )
494
+ def variables_clear(
495
+ project: str,
496
+ component_id: str,
497
+ config_id: str,
498
+ branch_id: int | None = None,
499
+ registry: ServiceRegistry = Depends(get_registry),
500
+ ) -> dict[str, Any]:
501
+ """Remove all variables from a configuration. Mirrors `kbagent config variables-clear`."""
502
+ return registry.variables.clear_variables(
503
+ alias=project,
504
+ component_id=component_id,
505
+ config_id=config_id,
506
+ branch_id=branch_id,
507
+ )