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,206 @@
1
+ """MCP tool commands - list and call tools from keboola-mcp-server.
2
+
3
+ Thin CLI layer: parses arguments, calls McpService, formats output.
4
+ No business logic belongs here.
5
+ """
6
+
7
+ import json
8
+ import sys
9
+ from pathlib import Path
10
+
11
+ import typer
12
+
13
+ from ..config_store import ConfigStore
14
+ from ..errors import ConfigError, ErrorCode
15
+ from ..output import OutputFormatter, format_tool_result, format_tools_table
16
+ from ._helpers import (
17
+ check_cli_permission,
18
+ emit_project_warnings,
19
+ get_formatter,
20
+ get_service,
21
+ resolve_branch,
22
+ validate_branch_requires_project,
23
+ )
24
+
25
+ tool_app = typer.Typer(help="MCP tools - interact with Keboola via MCP server")
26
+
27
+
28
+ @tool_app.callback(invoke_without_command=True)
29
+ def _tool_permission_check(ctx: typer.Context) -> None:
30
+ check_cli_permission(ctx, "tool")
31
+
32
+
33
+ def _read_input(value: str, formatter: OutputFormatter) -> str:
34
+ """Read tool input from a string, file (@path), or stdin (-).
35
+
36
+ Supports:
37
+ - Inline JSON string: '{"key": "value"}'
38
+ - File reference: @payload.json or @/absolute/path.json
39
+ - Stdin: -
40
+ """
41
+ if value == "-":
42
+ return sys.stdin.read()
43
+
44
+ if value.startswith("@"):
45
+ file_path = Path(value[1:])
46
+ if not file_path.is_file():
47
+ formatter.error(
48
+ message=f"Input file not found: {file_path}",
49
+ error_code=ErrorCode.INVALID_ARGUMENT,
50
+ )
51
+ raise typer.Exit(code=2) from None
52
+ return file_path.read_text(encoding="utf-8")
53
+
54
+ return value
55
+
56
+
57
+ def _resolve_branch_str(
58
+ config_store: ConfigStore,
59
+ formatter: OutputFormatter,
60
+ project: str | None,
61
+ branch: int | None,
62
+ ) -> tuple[str | None, str | None]:
63
+ """Resolve branch and return branch_id as string (for MCP service compatibility)."""
64
+ proj, branch_id = resolve_branch(config_store, formatter, project, branch)
65
+ return proj, str(branch_id) if branch_id is not None else None
66
+
67
+
68
+ @tool_app.command("list")
69
+ def tool_list(
70
+ ctx: typer.Context,
71
+ project: str | None = typer.Option(
72
+ None,
73
+ "--project",
74
+ help="Project alias to query tools from (uses first available if not set)",
75
+ ),
76
+ branch: int | None = typer.Option(
77
+ None,
78
+ "--branch",
79
+ help="Development branch ID (requires --project or active branch)",
80
+ ),
81
+ ) -> None:
82
+ """List available MCP tools from the keboola-mcp-server."""
83
+ formatter = get_formatter(ctx)
84
+ service = get_service(ctx, "mcp_service")
85
+ config_store: ConfigStore = ctx.obj["config_store"]
86
+
87
+ validate_branch_requires_project(formatter, branch, project)
88
+
89
+ # Auto-resolve active branch from config
90
+ project, branch_str = _resolve_branch_str(config_store, formatter, project, branch)
91
+
92
+ if branch_str and not project:
93
+ formatter.error(
94
+ message="--branch requires --project (branch ID is per-project)",
95
+ error_code=ErrorCode.INVALID_ARGUMENT,
96
+ )
97
+ raise typer.Exit(code=2) from None
98
+
99
+ aliases = [project] if project else None
100
+
101
+ try:
102
+ result = service.list_tools(aliases=aliases, branch_id=branch_str)
103
+ except ConfigError as exc:
104
+ formatter.error(message=exc.message, error_code=ErrorCode.CONFIG_ERROR)
105
+ raise typer.Exit(code=5) from None
106
+
107
+ if formatter.json_mode:
108
+ formatter.output(result)
109
+ else:
110
+ format_tools_table(formatter.console, result)
111
+ emit_project_warnings(formatter, result)
112
+
113
+
114
+ @tool_app.command("call")
115
+ def tool_call(
116
+ ctx: typer.Context,
117
+ tool_name: str = typer.Argument(help="Name of the MCP tool to call"),
118
+ project: str | None = typer.Option(
119
+ None,
120
+ "--project",
121
+ help="Project alias (required for write tools, optional for read tools)",
122
+ ),
123
+ tool_input: str | None = typer.Option(
124
+ None,
125
+ "--input",
126
+ help="Tool input as JSON string, @file.json, or - for stdin",
127
+ ),
128
+ branch: int | None = typer.Option(
129
+ None,
130
+ "--branch",
131
+ help="Development branch ID (forces single-project mode)",
132
+ ),
133
+ ) -> None:
134
+ """Call an MCP tool on keboola-mcp-server.
135
+
136
+ Read tools (list_*, get_*, search, docs_query, find_*) run across ALL
137
+ connected projects in parallel and return aggregated results.
138
+
139
+ Write tools (create_*, update_*, delete_*, add_*) run on a single project.
140
+ Use --project to specify the target, or the default project is used.
141
+
142
+ If an active branch is set for the project, it is used automatically.
143
+ Use --branch to override or scope the call to a specific development branch.
144
+ """
145
+ formatter = get_formatter(ctx)
146
+ service = get_service(ctx, "mcp_service")
147
+ config_store: ConfigStore = ctx.obj["config_store"]
148
+
149
+ validate_branch_requires_project(formatter, branch, project)
150
+
151
+ # Auto-resolve active branch from config
152
+ project, branch_str = _resolve_branch_str(config_store, formatter, project, branch)
153
+
154
+ if branch_str and not project:
155
+ formatter.error(
156
+ message="--branch requires --project (branch ID is per-project)",
157
+ error_code=ErrorCode.INVALID_ARGUMENT,
158
+ )
159
+ raise typer.Exit(code=2) from None
160
+
161
+ # Parse tool input JSON (supports inline JSON, @file.json, or - for stdin)
162
+ parsed_input: dict = {}
163
+ if tool_input:
164
+ raw_json = _read_input(tool_input, formatter)
165
+ try:
166
+ parsed_input = json.loads(raw_json)
167
+ except json.JSONDecodeError as exc:
168
+ formatter.error(
169
+ message=f"Invalid JSON in --input: {exc}",
170
+ error_code=ErrorCode.INVALID_ARGUMENT,
171
+ )
172
+ raise typer.Exit(code=2) from None
173
+
174
+ if not isinstance(parsed_input, dict):
175
+ formatter.error(
176
+ message='--input must be a JSON object (e.g. \'{"key": "value"}\')',
177
+ error_code=ErrorCode.INVALID_ARGUMENT,
178
+ )
179
+ raise typer.Exit(code=2) from None
180
+
181
+ # Validate + call in a single MCP session (eliminates double subprocess spawn)
182
+ try:
183
+ result = service.validate_and_call_tool(
184
+ tool_name=tool_name,
185
+ tool_input=parsed_input,
186
+ alias=project,
187
+ branch_id=branch_str,
188
+ )
189
+ except ConfigError as exc:
190
+ # ConfigError covers: unknown tool, missing params, config issues
191
+ error_code = ErrorCode.CONFIG_ERROR
192
+ exit_code = 5
193
+ if "Missing required parameter" in exc.message:
194
+ error_code = ErrorCode.MISSING_PARAMETER
195
+ exit_code = 2
196
+ elif "Unknown MCP tool" in exc.message:
197
+ error_code = ErrorCode.CONFIG_ERROR
198
+ exit_code = 5
199
+ formatter.error(message=exc.message, error_code=error_code)
200
+ raise typer.Exit(code=exit_code) from None
201
+
202
+ if formatter.json_mode:
203
+ formatter.output(result)
204
+ else:
205
+ format_tool_result(formatter.console, result)
206
+ emit_project_warnings(formatter, result)
@@ -0,0 +1,186 @@
1
+ """Version command - show kbagent version and dependency update checks.
2
+
3
+ Thin CLI layer: calls VersionService and formats output.
4
+ No business logic belongs here.
5
+ """
6
+
7
+ import typer
8
+ from rich.console import Console
9
+ from rich.panel import Panel
10
+ from rich.text import Text
11
+
12
+ from ._helpers import get_formatter, get_service
13
+
14
+
15
+ def _format_dep_standard(text: Text, dep: dict) -> None:
16
+ """Format a standard dependency (local install with upgrade check)."""
17
+ name = dep["name"]
18
+ desc = dep["description"]
19
+ local = dep.get("local_version")
20
+ latest = dep.get("latest_version")
21
+ up_to_date = dep.get("up_to_date")
22
+
23
+ if local is None:
24
+ text.append(f" {name:<28}", style="dim")
25
+ text.append("not installed\n", style="red")
26
+ return
27
+
28
+ label = f"{name} ({desc})"
29
+ text.append(f" {label:<28}")
30
+ text.append(f"v{local}")
31
+
32
+ if up_to_date is False and latest is not None:
33
+ text.append(f" -> v{latest} available", style="yellow")
34
+ text.append(f" ({dep['upgrade_command']})", style="dim")
35
+ elif up_to_date is True:
36
+ text.append(" up to date", style="green")
37
+ else:
38
+ text.append(" (update check failed)", style="dim")
39
+
40
+ text.append("\n")
41
+
42
+
43
+ def _format_dep_auto_update(text: Text, dep: dict) -> None:
44
+ """Format an auto-updating dependency.
45
+
46
+ Since v0.30.1: dependencies are auto-updated by ``auto_update.py`` on
47
+ kbagent startup (and explicitly by ``kbagent update``). The renderer
48
+ surfaces the locally installed version + up-to-date status so a user
49
+ in the terminal sees the staleness signal immediately, not just in
50
+ JSON mode.
51
+ """
52
+ name = dep["name"]
53
+ desc = dep["description"]
54
+ local = dep.get("version")
55
+ latest = dep.get("latest_version")
56
+ up_to_date = dep.get("up_to_date")
57
+ install_method = dep.get("install_method", "?")
58
+ upgrade_cmd = dep.get("upgrade_command", "")
59
+
60
+ label = f"{name} ({desc})"
61
+ text.append(f" {label:<28}")
62
+
63
+ if local is None:
64
+ if install_method == "none":
65
+ text.append("not installed", style="yellow")
66
+ if upgrade_cmd:
67
+ text.append(f" ({upgrade_cmd})", style="dim")
68
+ else:
69
+ text.append("local version unknown", style="dim")
70
+ if latest:
71
+ text.append(f" (latest on PyPI: v{latest})", style="dim")
72
+ text.append("\n")
73
+ return
74
+
75
+ text.append(f"v{local}")
76
+
77
+ if up_to_date is False and latest is not None:
78
+ text.append(f" -> v{latest} (auto-updates on next startup)", style="yellow")
79
+ elif up_to_date is True:
80
+ text.append(" auto-updates (up to date)", style="green")
81
+ else:
82
+ text.append(" (update check failed)", style="dim")
83
+
84
+ text.append("\n")
85
+
86
+
87
+ def _format_version_panel(console: Console, data: dict) -> None:
88
+ """Render version information as a Rich panel."""
89
+ text = Text()
90
+ kbagent = data["kbagent"]
91
+ text.append(f"kbagent v{kbagent['version']}", style="bold")
92
+
93
+ if kbagent.get("up_to_date") is False and kbagent.get("latest_version"):
94
+ text.append(f" -> v{kbagent['latest_version']} available", style="yellow")
95
+ text.append(" (run: kbagent update)", style="dim")
96
+ elif kbagent.get("up_to_date") is True:
97
+ text.append(" up to date", style="green")
98
+
99
+ text.append("\n\nDependencies:\n")
100
+
101
+ for dep in data["dependencies"]:
102
+ if dep.get("auto_updates"):
103
+ _format_dep_auto_update(text, dep)
104
+ else:
105
+ _format_dep_standard(text, dep)
106
+
107
+ console.print(Panel(text, title="Version Info", border_style="blue"))
108
+
109
+
110
+ def version_command(
111
+ ctx: typer.Context,
112
+ beta: bool = typer.Option(
113
+ False,
114
+ "--beta",
115
+ help="Report the latest pre-release (beta / rc) instead of the latest stable.",
116
+ ),
117
+ ) -> None:
118
+ """Show kbagent version and check for dependency updates."""
119
+ formatter = get_formatter(ctx)
120
+ version_service = get_service(ctx, "version_service")
121
+ include_prerelease = beta or _env_opted_into_prerelease()
122
+ result = version_service.get_versions(include_prerelease=include_prerelease)
123
+ formatter.output(result, _format_version_panel)
124
+
125
+
126
+ def update_command(
127
+ ctx: typer.Context,
128
+ beta: bool = typer.Option(
129
+ False,
130
+ "--beta",
131
+ help=(
132
+ "Opt into pre-release versions (beta / rc). Without this flag (the "
133
+ "default) and without KBAGENT_INCLUDE_PRERELEASE=1 in env, the "
134
+ "GitHub /releases/latest endpoint -- which filters out prereleases "
135
+ "server-side -- is used, so a beta release will never silently "
136
+ "install. With --beta, the resolver opts into PEP 440 prereleases "
137
+ "(``uv --prerelease=allow`` / ``pip --pre``)."
138
+ ),
139
+ ),
140
+ ) -> None:
141
+ """Update kbagent + keboola-mcp-server to the latest versions.
142
+
143
+ Two-stage upgrade (since v0.30.1):
144
+
145
+ 1. **kbagent** -- ``uv tool install --upgrade`` (preferred) or
146
+ ``pip install --upgrade`` from the GitHub repository.
147
+ 2. **keboola-mcp-server** -- detects install method and runs the
148
+ matching upgrade command (``uv tool upgrade`` / ``pip install -U``
149
+ / ``uvx --refresh``). Always runs, regardless of whether kbagent
150
+ itself needed an upgrade.
151
+
152
+ JSON output reports both stages independently. Human mode prints a
153
+ one-line summary such as
154
+ ``kbagent v0.30.0 -> v0.30.1 | keboola-mcp-server v1.49.0 -> v1.59.1``.
155
+
156
+ Pre-release channel (since v0.42.0): use ``--beta`` (or set
157
+ ``KBAGENT_INCLUDE_PRERELEASE=1`` in env) to opt into beta / rc
158
+ releases. The startup auto-update hook never auto-installs a beta;
159
+ only this explicit command does.
160
+ """
161
+ formatter = get_formatter(ctx)
162
+ version_service = get_service(ctx, "version_service")
163
+ include_prerelease = beta or _env_opted_into_prerelease()
164
+ result = version_service.self_update(include_prerelease=include_prerelease)
165
+
166
+ if formatter.json_mode:
167
+ formatter.output(result)
168
+ else:
169
+ if result["updated"]:
170
+ formatter.success(result["message"])
171
+ else:
172
+ formatter.console.print(result["message"])
173
+
174
+
175
+ def _env_opted_into_prerelease() -> bool:
176
+ """Honour ``KBAGENT_INCLUDE_PRERELEASE=1`` as a per-shell opt-in.
177
+
178
+ Some users want every kbagent invocation in a session to use the beta
179
+ channel without re-typing ``--beta`` (e.g. CI smoke-tests for an
180
+ upcoming release). Mirrors the truthy parse pattern used by
181
+ ``KBAGENT_SKIP_UPDATE`` so the two env vars behave consistently.
182
+ """
183
+ import os
184
+
185
+ raw = os.environ.get("KBAGENT_INCLUDE_PRERELEASE", "").strip().lower()
186
+ return raw in {"1", "true", "yes", "on"}