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.
- keboola_agent_cli/__init__.py +34 -0
- keboola_agent_cli/__main__.py +5 -0
- keboola_agent_cli/_ui_dist/assets/arc-DhFYIddx.js +2 -0
- keboola_agent_cli/_ui_dist/assets/arc-DhFYIddx.js.map +1 -0
- keboola_agent_cli/_ui_dist/assets/architecture-7EHR7CIX-hNCijx_H.js +1 -0
- keboola_agent_cli/_ui_dist/assets/architectureDiagram-3BPJPVTR-C6hUlprM.js +37 -0
- keboola_agent_cli/_ui_dist/assets/architectureDiagram-3BPJPVTR-C6hUlprM.js.map +1 -0
- keboola_agent_cli/_ui_dist/assets/array-BifhSqXX.js +2 -0
- keboola_agent_cli/_ui_dist/assets/array-BifhSqXX.js.map +1 -0
- keboola_agent_cli/_ui_dist/assets/blockDiagram-GPEHLZMM-DC7qY9i4.js +133 -0
- keboola_agent_cli/_ui_dist/assets/blockDiagram-GPEHLZMM-DC7qY9i4.js.map +1 -0
- keboola_agent_cli/_ui_dist/assets/c4Diagram-AAUBKEIU-5Lh44evt.js +11 -0
- keboola_agent_cli/_ui_dist/assets/c4Diagram-AAUBKEIU-5Lh44evt.js.map +1 -0
- keboola_agent_cli/_ui_dist/assets/channel-DBMrXlxx.js +2 -0
- keboola_agent_cli/_ui_dist/assets/channel-DBMrXlxx.js.map +1 -0
- keboola_agent_cli/_ui_dist/assets/chunk-2J33WTMH-Coy82EBh.js +2 -0
- keboola_agent_cli/_ui_dist/assets/chunk-2J33WTMH-Coy82EBh.js.map +1 -0
- keboola_agent_cli/_ui_dist/assets/chunk-3OPIFGDE-BQC5CRHI.js +63 -0
- keboola_agent_cli/_ui_dist/assets/chunk-3OPIFGDE-BQC5CRHI.js.map +1 -0
- keboola_agent_cli/_ui_dist/assets/chunk-4BX2VUAB-DUuEt70o.js +2 -0
- keboola_agent_cli/_ui_dist/assets/chunk-4BX2VUAB-DUuEt70o.js.map +1 -0
- keboola_agent_cli/_ui_dist/assets/chunk-55IACEB6-BvR-6chF.js +2 -0
- keboola_agent_cli/_ui_dist/assets/chunk-55IACEB6-BvR-6chF.js.map +1 -0
- keboola_agent_cli/_ui_dist/assets/chunk-5ZQYHXKU-BjcTN7ul.js +3 -0
- keboola_agent_cli/_ui_dist/assets/chunk-5ZQYHXKU-BjcTN7ul.js.map +1 -0
- keboola_agent_cli/_ui_dist/assets/chunk-727SXJPM-C0zxqqRN.js +207 -0
- keboola_agent_cli/_ui_dist/assets/chunk-727SXJPM-C0zxqqRN.js.map +1 -0
- keboola_agent_cli/_ui_dist/assets/chunk-AQP2D5EJ-CXf7rIlZ.js +232 -0
- keboola_agent_cli/_ui_dist/assets/chunk-AQP2D5EJ-CXf7rIlZ.js.map +1 -0
- keboola_agent_cli/_ui_dist/assets/chunk-BSJP7CBP-Oj_FO9Q7.js +2 -0
- keboola_agent_cli/_ui_dist/assets/chunk-BSJP7CBP-Oj_FO9Q7.js.map +1 -0
- keboola_agent_cli/_ui_dist/assets/chunk-CSCIHK7Q-CcTsLrFc.js +124 -0
- keboola_agent_cli/_ui_dist/assets/chunk-CSCIHK7Q-CcTsLrFc.js.map +1 -0
- keboola_agent_cli/_ui_dist/assets/chunk-FMBD7UC4-FH-zLkkW.js +16 -0
- keboola_agent_cli/_ui_dist/assets/chunk-FMBD7UC4-FH-zLkkW.js.map +1 -0
- keboola_agent_cli/_ui_dist/assets/chunk-L5ZTLDWV-B1Ky_e7O.js +2 -0
- keboola_agent_cli/_ui_dist/assets/chunk-L5ZTLDWV-B1Ky_e7O.js.map +1 -0
- keboola_agent_cli/_ui_dist/assets/chunk-ND2GUHAM-BHz1rpbm.js +2 -0
- keboola_agent_cli/_ui_dist/assets/chunk-ND2GUHAM-BHz1rpbm.js.map +1 -0
- keboola_agent_cli/_ui_dist/assets/chunk-NNHCCRGN-DlpIbxXb.js +160 -0
- keboola_agent_cli/_ui_dist/assets/chunk-NNHCCRGN-DlpIbxXb.js.map +1 -0
- keboola_agent_cli/_ui_dist/assets/chunk-NZK2D7GU-tnrSoegS.js +2 -0
- keboola_agent_cli/_ui_dist/assets/chunk-NZK2D7GU-tnrSoegS.js.map +1 -0
- keboola_agent_cli/_ui_dist/assets/chunk-O5CBEL6O-DxxqDH0l.js +71 -0
- keboola_agent_cli/_ui_dist/assets/chunk-O5CBEL6O-DxxqDH0l.js.map +1 -0
- keboola_agent_cli/_ui_dist/assets/chunk-QZHKN3VN-CSjc2gjj.js +2 -0
- keboola_agent_cli/_ui_dist/assets/chunk-QZHKN3VN-CSjc2gjj.js.map +1 -0
- keboola_agent_cli/_ui_dist/assets/classDiagram-4FO5ZUOK-BuZcZu85.js +2 -0
- keboola_agent_cli/_ui_dist/assets/classDiagram-4FO5ZUOK-BuZcZu85.js.map +1 -0
- keboola_agent_cli/_ui_dist/assets/classDiagram-v2-Q7XG4LA2-BuZcZu85.js +2 -0
- keboola_agent_cli/_ui_dist/assets/classDiagram-v2-Q7XG4LA2-BuZcZu85.js.map +1 -0
- keboola_agent_cli/_ui_dist/assets/cose-bilkent-S5V4N54A-Y0L8LDMa.js +2 -0
- keboola_agent_cli/_ui_dist/assets/cose-bilkent-S5V4N54A-Y0L8LDMa.js.map +1 -0
- keboola_agent_cli/_ui_dist/assets/cytoscape.esm-C8YCVR3_.js +322 -0
- keboola_agent_cli/_ui_dist/assets/cytoscape.esm-C8YCVR3_.js.map +1 -0
- keboola_agent_cli/_ui_dist/assets/dagre-BM42HDAG-UZ-9BTqF.js +5 -0
- keboola_agent_cli/_ui_dist/assets/dagre-BM42HDAG-UZ-9BTqF.js.map +1 -0
- keboola_agent_cli/_ui_dist/assets/dagre-Bx709z4p.js +2 -0
- keboola_agent_cli/_ui_dist/assets/dagre-Bx709z4p.js.map +1 -0
- keboola_agent_cli/_ui_dist/assets/defaultLocale-C8Fc0cco.js +2 -0
- keboola_agent_cli/_ui_dist/assets/defaultLocale-C8Fc0cco.js.map +1 -0
- keboola_agent_cli/_ui_dist/assets/diagram-2AECGRRQ-DoDQ60wi.js +44 -0
- keboola_agent_cli/_ui_dist/assets/diagram-2AECGRRQ-DoDQ60wi.js.map +1 -0
- keboola_agent_cli/_ui_dist/assets/diagram-5GNKFQAL-CMGFxpUs.js +11 -0
- keboola_agent_cli/_ui_dist/assets/diagram-5GNKFQAL-CMGFxpUs.js.map +1 -0
- keboola_agent_cli/_ui_dist/assets/diagram-KO2AKTUF-1uGDa-Iu.js +4 -0
- keboola_agent_cli/_ui_dist/assets/diagram-KO2AKTUF-1uGDa-Iu.js.map +1 -0
- keboola_agent_cli/_ui_dist/assets/diagram-LMA3HP47-XtFH7B51.js +25 -0
- keboola_agent_cli/_ui_dist/assets/diagram-LMA3HP47-XtFH7B51.js.map +1 -0
- keboola_agent_cli/_ui_dist/assets/diagram-OG6HWLK6-B4_Te1T5.js +25 -0
- keboola_agent_cli/_ui_dist/assets/diagram-OG6HWLK6-B4_Te1T5.js.map +1 -0
- keboola_agent_cli/_ui_dist/assets/dist-Di6zmlv0.js +2 -0
- keboola_agent_cli/_ui_dist/assets/dist-Di6zmlv0.js.map +1 -0
- keboola_agent_cli/_ui_dist/assets/erDiagram-TEJ5UH35-NjQkrdFt.js +86 -0
- keboola_agent_cli/_ui_dist/assets/erDiagram-TEJ5UH35-NjQkrdFt.js.map +1 -0
- keboola_agent_cli/_ui_dist/assets/eventmodeling-FCH6USID-BrJMIks8.js +1 -0
- keboola_agent_cli/_ui_dist/assets/flowDiagram-I6XJVG4X-CIr8DWl7.js +163 -0
- keboola_agent_cli/_ui_dist/assets/flowDiagram-I6XJVG4X-CIr8DWl7.js.map +1 -0
- keboola_agent_cli/_ui_dist/assets/ganttDiagram-6RSMTGT7-C1VY_xbQ.js +293 -0
- keboola_agent_cli/_ui_dist/assets/ganttDiagram-6RSMTGT7-C1VY_xbQ.js.map +1 -0
- keboola_agent_cli/_ui_dist/assets/gitGraph-WXDBUCRP-COacYjo-.js +1 -0
- keboola_agent_cli/_ui_dist/assets/gitGraphDiagram-PVQCEYII-DQT8-kg2.js +107 -0
- keboola_agent_cli/_ui_dist/assets/gitGraphDiagram-PVQCEYII-DQT8-kg2.js.map +1 -0
- keboola_agent_cli/_ui_dist/assets/graphlib-B8gBHxth.js +2 -0
- keboola_agent_cli/_ui_dist/assets/graphlib-B8gBHxth.js.map +1 -0
- keboola_agent_cli/_ui_dist/assets/index-CMq50kkV.css +1 -0
- keboola_agent_cli/_ui_dist/assets/index-D8W97DAz.js +118 -0
- keboola_agent_cli/_ui_dist/assets/index-D8W97DAz.js.map +1 -0
- keboola_agent_cli/_ui_dist/assets/info-J43DQDTF-DdCTRIzU.js +1 -0
- keboola_agent_cli/_ui_dist/assets/infoDiagram-5YYISTIA-C77rsoTp.js +3 -0
- keboola_agent_cli/_ui_dist/assets/infoDiagram-5YYISTIA-C77rsoTp.js.map +1 -0
- keboola_agent_cli/_ui_dist/assets/init-D6jRqBbL.js +2 -0
- keboola_agent_cli/_ui_dist/assets/init-D6jRqBbL.js.map +1 -0
- keboola_agent_cli/_ui_dist/assets/ishikawaDiagram-YF4QCWOH-BcTbXaLy.js +71 -0
- keboola_agent_cli/_ui_dist/assets/ishikawaDiagram-YF4QCWOH-BcTbXaLy.js.map +1 -0
- keboola_agent_cli/_ui_dist/assets/journeyDiagram-JHISSGLW-BejeAJQ_.js +140 -0
- keboola_agent_cli/_ui_dist/assets/journeyDiagram-JHISSGLW-BejeAJQ_.js.map +1 -0
- keboola_agent_cli/_ui_dist/assets/kanban-definition-UN3LZRKU-BRNz_UrH.js +90 -0
- keboola_agent_cli/_ui_dist/assets/kanban-definition-UN3LZRKU-BRNz_UrH.js.map +1 -0
- keboola_agent_cli/_ui_dist/assets/katex-C4eR7coU.js +258 -0
- keboola_agent_cli/_ui_dist/assets/katex-C4eR7coU.js.map +1 -0
- keboola_agent_cli/_ui_dist/assets/line-CzAQKFbJ.js +2 -0
- keboola_agent_cli/_ui_dist/assets/line-CzAQKFbJ.js.map +1 -0
- keboola_agent_cli/_ui_dist/assets/linear-DUNFFdck.js +2 -0
- keboola_agent_cli/_ui_dist/assets/linear-DUNFFdck.js.map +1 -0
- keboola_agent_cli/_ui_dist/assets/mermaid-parser.core-CpuBOkFa.js +5 -0
- keboola_agent_cli/_ui_dist/assets/mermaid-parser.core-CpuBOkFa.js.map +1 -0
- keboola_agent_cli/_ui_dist/assets/mindmap-definition-RKZ34NQL-9EJQNjH0.js +97 -0
- keboola_agent_cli/_ui_dist/assets/mindmap-definition-RKZ34NQL-9EJQNjH0.js.map +1 -0
- keboola_agent_cli/_ui_dist/assets/ordinal-hYBb2elL.js +2 -0
- keboola_agent_cli/_ui_dist/assets/ordinal-hYBb2elL.js.map +1 -0
- keboola_agent_cli/_ui_dist/assets/packet-YPE3B663-DLiiw_B2.js +1 -0
- keboola_agent_cli/_ui_dist/assets/path-BWPyau1x.js +2 -0
- keboola_agent_cli/_ui_dist/assets/path-BWPyau1x.js.map +1 -0
- keboola_agent_cli/_ui_dist/assets/pie-LRSECV5Y-CRoO8G1g.js +1 -0
- keboola_agent_cli/_ui_dist/assets/pieDiagram-4H26LBE5-XH4cy6Cb.js +31 -0
- keboola_agent_cli/_ui_dist/assets/pieDiagram-4H26LBE5-XH4cy6Cb.js.map +1 -0
- keboola_agent_cli/_ui_dist/assets/quadrantDiagram-W4KKPZXB-fdhc93U8.js +8 -0
- keboola_agent_cli/_ui_dist/assets/quadrantDiagram-W4KKPZXB-fdhc93U8.js.map +1 -0
- keboola_agent_cli/_ui_dist/assets/radar-GUYGQ44K-DAlLVJHm.js +1 -0
- keboola_agent_cli/_ui_dist/assets/requirementDiagram-4Y6WPE33-a94eP3R9.js +85 -0
- keboola_agent_cli/_ui_dist/assets/requirementDiagram-4Y6WPE33-a94eP3R9.js.map +1 -0
- keboola_agent_cli/_ui_dist/assets/rough.esm-CSKSodPl.js +2 -0
- keboola_agent_cli/_ui_dist/assets/rough.esm-CSKSodPl.js.map +1 -0
- keboola_agent_cli/_ui_dist/assets/sankeyDiagram-5OEKKPKP-jcBa02sp.js +41 -0
- keboola_agent_cli/_ui_dist/assets/sankeyDiagram-5OEKKPKP-jcBa02sp.js.map +1 -0
- keboola_agent_cli/_ui_dist/assets/sequenceDiagram-3UESZ5HK-A5-GGM-e.js +163 -0
- keboola_agent_cli/_ui_dist/assets/sequenceDiagram-3UESZ5HK-A5-GGM-e.js.map +1 -0
- keboola_agent_cli/_ui_dist/assets/src-ZI-V_AF0.js +2 -0
- keboola_agent_cli/_ui_dist/assets/src-ZI-V_AF0.js.map +1 -0
- keboola_agent_cli/_ui_dist/assets/stateDiagram-AJRCARHV-BKAA5rqE.js +2 -0
- keboola_agent_cli/_ui_dist/assets/stateDiagram-AJRCARHV-BKAA5rqE.js.map +1 -0
- keboola_agent_cli/_ui_dist/assets/stateDiagram-v2-BHNVJYJU-DnJwJBsE.js +2 -0
- keboola_agent_cli/_ui_dist/assets/stateDiagram-v2-BHNVJYJU-DnJwJBsE.js.map +1 -0
- keboola_agent_cli/_ui_dist/assets/timeline-definition-PNZ67QCA-Cy39jp8b.js +121 -0
- keboola_agent_cli/_ui_dist/assets/timeline-definition-PNZ67QCA-Cy39jp8b.js.map +1 -0
- keboola_agent_cli/_ui_dist/assets/treeView-BLDUP644-DbLYl23-.js +1 -0
- keboola_agent_cli/_ui_dist/assets/treemap-LRROVOQU-Bp0eGlOt.js +1 -0
- keboola_agent_cli/_ui_dist/assets/vennDiagram-CIIHVFJN-BGECKubd.js +35 -0
- keboola_agent_cli/_ui_dist/assets/vennDiagram-CIIHVFJN-BGECKubd.js.map +1 -0
- keboola_agent_cli/_ui_dist/assets/wardley-L42UT6IY-D4yH4jqS.js +1 -0
- keboola_agent_cli/_ui_dist/assets/wardleyDiagram-YWT4CUSO-D6XRG3cZ.js +79 -0
- keboola_agent_cli/_ui_dist/assets/wardleyDiagram-YWT4CUSO-D6XRG3cZ.js.map +1 -0
- keboola_agent_cli/_ui_dist/assets/xychartDiagram-2RQKCTM6-DRre-pfZ.js +8 -0
- keboola_agent_cli/_ui_dist/assets/xychartDiagram-2RQKCTM6-DRre-pfZ.js.map +1 -0
- keboola_agent_cli/_ui_dist/index.html +50 -0
- keboola_agent_cli/ai_client.py +83 -0
- keboola_agent_cli/auto_update.py +550 -0
- keboola_agent_cli/changelog.py +1198 -0
- keboola_agent_cli/cli.py +448 -0
- keboola_agent_cli/client.py +3422 -0
- keboola_agent_cli/commands/__init__.py +0 -0
- keboola_agent_cli/commands/_data_app_git.py +343 -0
- keboola_agent_cli/commands/_helpers.py +377 -0
- keboola_agent_cli/commands/_metadata_input.py +49 -0
- keboola_agent_cli/commands/_semantic_layer_crud.py +632 -0
- keboola_agent_cli/commands/_semantic_layer_helpers.py +44 -0
- keboola_agent_cli/commands/_semantic_layer_reference_data.py +247 -0
- keboola_agent_cli/commands/agent.py +968 -0
- keboola_agent_cli/commands/branch.py +423 -0
- keboola_agent_cli/commands/changelog.py +168 -0
- keboola_agent_cli/commands/component.py +216 -0
- keboola_agent_cli/commands/config.py +2442 -0
- keboola_agent_cli/commands/context.py +1481 -0
- keboola_agent_cli/commands/data_app.py +1279 -0
- keboola_agent_cli/commands/dev_portal.py +584 -0
- keboola_agent_cli/commands/doctor.py +37 -0
- keboola_agent_cli/commands/encrypt.py +145 -0
- keboola_agent_cli/commands/feature.py +311 -0
- keboola_agent_cli/commands/flow.py +948 -0
- keboola_agent_cli/commands/http_client.py +157 -0
- keboola_agent_cli/commands/init.py +279 -0
- keboola_agent_cli/commands/job.py +661 -0
- keboola_agent_cli/commands/kai.py +301 -0
- keboola_agent_cli/commands/lineage.py +1464 -0
- keboola_agent_cli/commands/org.py +292 -0
- keboola_agent_cli/commands/permissions.py +360 -0
- keboola_agent_cli/commands/project.py +1192 -0
- keboola_agent_cli/commands/repl.py +243 -0
- keboola_agent_cli/commands/schedule.py +340 -0
- keboola_agent_cli/commands/search.py +178 -0
- keboola_agent_cli/commands/semantic_layer.py +939 -0
- keboola_agent_cli/commands/serve.py +272 -0
- keboola_agent_cli/commands/sharing.py +340 -0
- keboola_agent_cli/commands/storage.py +2630 -0
- keboola_agent_cli/commands/stream.py +266 -0
- keboola_agent_cli/commands/sync.py +1277 -0
- keboola_agent_cli/commands/tool.py +206 -0
- keboola_agent_cli/commands/version.py +186 -0
- keboola_agent_cli/commands/workspace.py +635 -0
- keboola_agent_cli/config_store.py +582 -0
- keboola_agent_cli/constants.py +528 -0
- keboola_agent_cli/data_science_client.py +342 -0
- keboola_agent_cli/dev_portal_client.py +323 -0
- keboola_agent_cli/errors.py +248 -0
- keboola_agent_cli/http_base.py +315 -0
- keboola_agent_cli/json_utils.py +126 -0
- keboola_agent_cli/lib.py +536 -0
- keboola_agent_cli/manage_client.py +324 -0
- keboola_agent_cli/metastore_client.py +214 -0
- keboola_agent_cli/models.py +427 -0
- keboola_agent_cli/output.py +1084 -0
- keboola_agent_cli/permissions.py +469 -0
- keboola_agent_cli/py.typed +3 -0
- keboola_agent_cli/result_models.py +271 -0
- keboola_agent_cli/server/__init__.py +34 -0
- keboola_agent_cli/server/agent_runner.py +1289 -0
- keboola_agent_cli/server/agents_store.py +325 -0
- keboola_agent_cli/server/app.py +764 -0
- keboola_agent_cli/server/auth.py +117 -0
- keboola_agent_cli/server/dependencies.py +149 -0
- keboola_agent_cli/server/pricing.py +303 -0
- keboola_agent_cli/server/routers/__init__.py +1 -0
- keboola_agent_cli/server/routers/agents.py +616 -0
- keboola_agent_cli/server/routers/ai_chat.py +129 -0
- keboola_agent_cli/server/routers/branches.py +133 -0
- keboola_agent_cli/server/routers/components.py +48 -0
- keboola_agent_cli/server/routers/configs.py +507 -0
- keboola_agent_cli/server/routers/data_apps.py +384 -0
- keboola_agent_cli/server/routers/dev_portal.py +67 -0
- keboola_agent_cli/server/routers/encrypt.py +35 -0
- keboola_agent_cli/server/routers/feature.py +179 -0
- keboola_agent_cli/server/routers/flows.py +204 -0
- keboola_agent_cli/server/routers/health.py +53 -0
- keboola_agent_cli/server/routers/jobs.py +175 -0
- keboola_agent_cli/server/routers/kai.py +80 -0
- keboola_agent_cli/server/routers/lineage.py +226 -0
- keboola_agent_cli/server/routers/mcp.py +70 -0
- keboola_agent_cli/server/routers/members.py +170 -0
- keboola_agent_cli/server/routers/org.py +96 -0
- keboola_agent_cli/server/routers/projects.py +106 -0
- keboola_agent_cli/server/routers/schedules.py +54 -0
- keboola_agent_cli/server/routers/search.py +30 -0
- keboola_agent_cli/server/routers/semantic_layer.py +650 -0
- keboola_agent_cli/server/routers/sharing.py +86 -0
- keboola_agent_cli/server/routers/storage.py +574 -0
- keboola_agent_cli/server/routers/stream.py +100 -0
- keboola_agent_cli/server/routers/workspaces.py +302 -0
- keboola_agent_cli/server/run_broadcaster.py +329 -0
- keboola_agent_cli/server/sse.py +25 -0
- keboola_agent_cli/services/__init__.py +0 -0
- keboola_agent_cli/services/_encryption.py +217 -0
- keboola_agent_cli/services/_semantic_layer_cascade.py +147 -0
- keboola_agent_cli/services/_semantic_layer_crud.py +382 -0
- keboola_agent_cli/services/_semantic_layer_internals.py +1078 -0
- keboola_agent_cli/services/_semantic_layer_lookup.py +181 -0
- keboola_agent_cli/services/_semantic_layer_reference_data.py +217 -0
- keboola_agent_cli/services/_sync_bindings.py +456 -0
- keboola_agent_cli/services/_sync_branch.py +191 -0
- keboola_agent_cli/services/_sync_bulk.py +228 -0
- keboola_agent_cli/services/_sync_clone.py +163 -0
- keboola_agent_cli/services/_sync_models.py +97 -0
- keboola_agent_cli/services/_sync_push_ops.py +369 -0
- keboola_agent_cli/services/_sync_storage.py +376 -0
- keboola_agent_cli/services/_sync_writeback.py +167 -0
- keboola_agent_cli/services/agent_service.py +458 -0
- keboola_agent_cli/services/base.py +175 -0
- keboola_agent_cli/services/branch_service.py +588 -0
- keboola_agent_cli/services/component_service.py +694 -0
- keboola_agent_cli/services/config_service.py +2099 -0
- keboola_agent_cli/services/data_app_git_service.py +224 -0
- keboola_agent_cli/services/data_app_service.py +2082 -0
- keboola_agent_cli/services/deep_lineage_service.py +1322 -0
- keboola_agent_cli/services/dev_portal_service.py +345 -0
- keboola_agent_cli/services/doctor_service.py +445 -0
- keboola_agent_cli/services/encrypt_service.py +87 -0
- keboola_agent_cli/services/feature_service.py +268 -0
- keboola_agent_cli/services/flow_service.py +769 -0
- keboola_agent_cli/services/flow_validation.py +188 -0
- keboola_agent_cli/services/http_forwarder_service.py +236 -0
- keboola_agent_cli/services/job_idempotency_store.py +285 -0
- keboola_agent_cli/services/job_service.py +797 -0
- keboola_agent_cli/services/kai_service.py +367 -0
- keboola_agent_cli/services/lineage_service.py +274 -0
- keboola_agent_cli/services/mcp_service.py +1498 -0
- keboola_agent_cli/services/mcp_transport.py +259 -0
- keboola_agent_cli/services/member_service.py +593 -0
- keboola_agent_cli/services/org_service.py +619 -0
- keboola_agent_cli/services/project_service.py +947 -0
- keboola_agent_cli/services/repo_validate_service.py +767 -0
- keboola_agent_cli/services/schedule_service.py +731 -0
- keboola_agent_cli/services/search_service.py +331 -0
- keboola_agent_cli/services/semantic_layer_service.py +1497 -0
- keboola_agent_cli/services/sharing_service.py +307 -0
- keboola_agent_cli/services/storage_service.py +2524 -0
- keboola_agent_cli/services/stream_service.py +395 -0
- keboola_agent_cli/services/sync_service.py +2244 -0
- keboola_agent_cli/services/variables_service.py +447 -0
- keboola_agent_cli/services/version_service.py +1038 -0
- keboola_agent_cli/services/workspace_service.py +1103 -0
- keboola_agent_cli/stream_client.py +217 -0
- keboola_agent_cli/sync/__init__.py +1 -0
- keboola_agent_cli/sync/branch_mapping.py +174 -0
- keboola_agent_cli/sync/clone.py +211 -0
- keboola_agent_cli/sync/code_extraction.py +655 -0
- keboola_agent_cli/sync/config_format.py +290 -0
- keboola_agent_cli/sync/diff_engine.py +566 -0
- keboola_agent_cli/sync/git_utils.py +93 -0
- keboola_agent_cli/sync/manifest.py +162 -0
- keboola_agent_cli/sync/naming.py +90 -0
- keboola_agent_cli/sync/secrets.py +62 -0
- keboola_agent_cli/sync/sql_split.py +134 -0
- keboola_cli-0.63.4.dist-info/METADATA +308 -0
- keboola_cli-0.63.4.dist-info/RECORD +306 -0
- keboola_cli-0.63.4.dist-info/WHEEL +4 -0
- keboola_cli-0.63.4.dist-info/entry_points.txt +2 -0
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
"""Local AI chat endpoint (#300).
|
|
2
|
+
|
|
3
|
+
Backs the dashboard's Local AI tile -- a generic chat surface that spawns
|
|
4
|
+
the user's local ``claude`` / ``codex`` / ``gemini`` CLI with a meta-prompt
|
|
5
|
+
telling it "you are an AI co-pilot for kbagent; run `kbagent context`
|
|
6
|
+
first if you need command docs, then answer the user's question."
|
|
7
|
+
|
|
8
|
+
Distinct from:
|
|
9
|
+
|
|
10
|
+
- ``/agents/prompt/improve/stream`` -- rewrites a draft prompt into a
|
|
11
|
+
polished single-shot prompt body.
|
|
12
|
+
- ``/workspaces/sql/improve/stream`` -- writes SQL grounded in a specific
|
|
13
|
+
workspace context.
|
|
14
|
+
|
|
15
|
+
This endpoint is the freeform variant -- no output shape constraint, no
|
|
16
|
+
single-task framing. Used by the dashboard Local AI chat that replaces
|
|
17
|
+
the Kai tile for projects without a master Storage token (#291 wontfix
|
|
18
|
+
rationale).
|
|
19
|
+
|
|
20
|
+
Same SSE wire format as the other helpers (init / stdout / stderr /
|
|
21
|
+
done events) so the React side can reuse the streaming progress renderer.
|
|
22
|
+
"""
|
|
23
|
+
|
|
24
|
+
from __future__ import annotations
|
|
25
|
+
|
|
26
|
+
import json
|
|
27
|
+
from collections.abc import AsyncIterator
|
|
28
|
+
from typing import Any
|
|
29
|
+
|
|
30
|
+
from fastapi import APIRouter, Depends, HTTPException
|
|
31
|
+
from fastapi.responses import StreamingResponse
|
|
32
|
+
from pydantic import BaseModel
|
|
33
|
+
|
|
34
|
+
from ...constants import AI_CHAT_HELPER_TIMEOUT
|
|
35
|
+
from ..dependencies import ServiceRegistry, get_registry
|
|
36
|
+
|
|
37
|
+
router = APIRouter(prefix="/ai", tags=["ai-chat"])
|
|
38
|
+
|
|
39
|
+
|
|
40
|
+
class AiChatRequest(BaseModel):
|
|
41
|
+
"""Input for the /ai/chat/stream endpoint.
|
|
42
|
+
|
|
43
|
+
Single-shot: each request is independent. Conversation history is kept
|
|
44
|
+
on the React side as scrollback; it is NOT forwarded to the AI on the
|
|
45
|
+
next message (yet). Multi-turn with persisted history is tracked as
|
|
46
|
+
a follow-up feature.
|
|
47
|
+
"""
|
|
48
|
+
|
|
49
|
+
cli: str # claude | codex | gemini -- same recipe as ai_agent runs
|
|
50
|
+
message: str
|
|
51
|
+
project: str | None = None
|
|
52
|
+
branch_id: int | None = None
|
|
53
|
+
extra_args: list[str] = []
|
|
54
|
+
|
|
55
|
+
|
|
56
|
+
def _sse(event: str, data: dict[str, Any]) -> bytes:
|
|
57
|
+
"""Encode a single SSE frame (event + data)."""
|
|
58
|
+
return f"event: {event}\ndata: {json.dumps(data, default=str)}\n\n".encode()
|
|
59
|
+
|
|
60
|
+
|
|
61
|
+
@router.post("/chat/stream", summary="Stream a local AI chat response")
|
|
62
|
+
async def chat_stream(
|
|
63
|
+
body: AiChatRequest,
|
|
64
|
+
registry: ServiceRegistry = Depends(get_registry),
|
|
65
|
+
) -> StreamingResponse:
|
|
66
|
+
"""Stream a local-AI chat response back to the dashboard.
|
|
67
|
+
|
|
68
|
+
Build a generic chat meta-prompt grounded in the user's active
|
|
69
|
+
project / branch, hand it to the chosen CLI via
|
|
70
|
+
``stream_ai_agent_events``, and forward the SSE events through to
|
|
71
|
+
the client. The final ``done`` event mirrors the shape used by
|
|
72
|
+
other helpers; the React side renders the assistant's text +
|
|
73
|
+
tool_use activity log in real time.
|
|
74
|
+
"""
|
|
75
|
+
from ..agent_runner import (
|
|
76
|
+
build_local_ai_meta_prompt,
|
|
77
|
+
stream_ai_agent_events,
|
|
78
|
+
)
|
|
79
|
+
|
|
80
|
+
message = body.message.strip()
|
|
81
|
+
if not message:
|
|
82
|
+
raise HTTPException(status_code=400, detail="message must not be empty")
|
|
83
|
+
|
|
84
|
+
meta_prompt = build_local_ai_meta_prompt(
|
|
85
|
+
message=message,
|
|
86
|
+
project=body.project,
|
|
87
|
+
branch_id=body.branch_id,
|
|
88
|
+
serve_url=getattr(registry, "serve_url", None),
|
|
89
|
+
)
|
|
90
|
+
params: dict[str, Any] = {
|
|
91
|
+
"cli": body.cli,
|
|
92
|
+
"prompt": meta_prompt,
|
|
93
|
+
"extra_args": body.extra_args,
|
|
94
|
+
"timeout": AI_CHAT_HELPER_TIMEOUT,
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
async def gen() -> AsyncIterator[bytes]:
|
|
98
|
+
yield _sse(
|
|
99
|
+
"init",
|
|
100
|
+
{
|
|
101
|
+
"kind": "local_ai_chat",
|
|
102
|
+
"cli": body.cli,
|
|
103
|
+
"project": body.project,
|
|
104
|
+
"branch_id": body.branch_id,
|
|
105
|
+
# Surface the full meta-prompt so the UI can offer a
|
|
106
|
+
# "Show prompt" transparency panel identical to the SQL
|
|
107
|
+
# helper's. Debugging is impossible without it.
|
|
108
|
+
"meta_prompt": meta_prompt,
|
|
109
|
+
"message_preview": message[:200],
|
|
110
|
+
},
|
|
111
|
+
)
|
|
112
|
+
try:
|
|
113
|
+
async for evt in stream_ai_agent_events(registry, params):
|
|
114
|
+
yield _sse(evt["event"], evt["data"])
|
|
115
|
+
except Exception as exc:
|
|
116
|
+
# Catch-all: both ValueError (bad CLI / empty prompt) and any
|
|
117
|
+
# unexpected error need to terminate the SSE stream with a
|
|
118
|
+
# final ``done`` event so the React side doesn't hang on an
|
|
119
|
+
# unterminated stream. Body shape is identical in both cases.
|
|
120
|
+
yield _sse("done", {"status": "error", "error": str(exc)})
|
|
121
|
+
|
|
122
|
+
return StreamingResponse(
|
|
123
|
+
gen(),
|
|
124
|
+
media_type="text/event-stream",
|
|
125
|
+
headers={
|
|
126
|
+
"Cache-Control": "no-cache, no-transform",
|
|
127
|
+
"X-Accel-Buffering": "no",
|
|
128
|
+
},
|
|
129
|
+
)
|
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
"""Branch lifecycle and metadata endpoints."""
|
|
2
|
+
|
|
3
|
+
from __future__ import annotations
|
|
4
|
+
|
|
5
|
+
from typing import Any
|
|
6
|
+
|
|
7
|
+
from fastapi import APIRouter, Depends, Query
|
|
8
|
+
from pydantic import BaseModel
|
|
9
|
+
|
|
10
|
+
from ..dependencies import ServiceRegistry, get_registry
|
|
11
|
+
|
|
12
|
+
router = APIRouter(prefix="/branches", tags=["branches"])
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
class BranchCreate(BaseModel):
|
|
16
|
+
name: str
|
|
17
|
+
description: str = ""
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
class BranchUse(BaseModel):
|
|
21
|
+
branch_id: int
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
class MetadataSet(BaseModel):
|
|
25
|
+
value: str
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
@router.get("", summary="List branches")
|
|
29
|
+
def list_branches(
|
|
30
|
+
project: list[str] | None = Query(None),
|
|
31
|
+
registry: ServiceRegistry = Depends(get_registry),
|
|
32
|
+
) -> dict[str, Any]:
|
|
33
|
+
"""List development branches across one or more projects. Mirrors `kbagent branch list`."""
|
|
34
|
+
return registry.branch.list_branches(aliases=project)
|
|
35
|
+
|
|
36
|
+
|
|
37
|
+
@router.post("/{project}", summary="Create a branch")
|
|
38
|
+
def create(
|
|
39
|
+
project: str, body: BranchCreate, registry: ServiceRegistry = Depends(get_registry)
|
|
40
|
+
) -> dict[str, Any]:
|
|
41
|
+
"""Create a new development branch. Mirrors `kbagent branch create`."""
|
|
42
|
+
return registry.branch.create_branch(
|
|
43
|
+
alias=project, name=body.name, description=body.description
|
|
44
|
+
)
|
|
45
|
+
|
|
46
|
+
|
|
47
|
+
@router.post("/{project}/use", summary="Pin the active branch")
|
|
48
|
+
def use(
|
|
49
|
+
project: str, body: BranchUse, registry: ServiceRegistry = Depends(get_registry)
|
|
50
|
+
) -> dict[str, Any]:
|
|
51
|
+
"""Set the active branch for the project. Mirrors `kbagent branch use`."""
|
|
52
|
+
return registry.branch.set_active_branch(alias=project, branch_id=body.branch_id)
|
|
53
|
+
|
|
54
|
+
|
|
55
|
+
@router.post("/{project}/reset", summary="Reset to the default branch")
|
|
56
|
+
def reset(project: str, registry: ServiceRegistry = Depends(get_registry)) -> dict[str, Any]:
|
|
57
|
+
"""Clear branch pin and revert to default branch. Mirrors `kbagent branch reset`."""
|
|
58
|
+
return registry.branch.reset_branch(alias=project)
|
|
59
|
+
|
|
60
|
+
|
|
61
|
+
@router.delete("/{project}/{branch_id}", summary="Delete a branch")
|
|
62
|
+
def delete(
|
|
63
|
+
project: str, branch_id: int, registry: ServiceRegistry = Depends(get_registry)
|
|
64
|
+
) -> dict[str, Any]:
|
|
65
|
+
"""Delete a development branch. Mirrors `kbagent branch delete`."""
|
|
66
|
+
return registry.branch.delete_branch(alias=project, branch_id=branch_id)
|
|
67
|
+
|
|
68
|
+
|
|
69
|
+
@router.get("/{project}/merge-url", summary="Get the branch merge URL")
|
|
70
|
+
def merge_url(
|
|
71
|
+
project: str,
|
|
72
|
+
branch_id: int | None = None,
|
|
73
|
+
registry: ServiceRegistry = Depends(get_registry),
|
|
74
|
+
) -> dict[str, Any]:
|
|
75
|
+
"""UI URL for merging a branch into main. Mirrors `kbagent branch merge`."""
|
|
76
|
+
return registry.branch.get_merge_url(alias=project, branch_id=branch_id)
|
|
77
|
+
|
|
78
|
+
|
|
79
|
+
@router.get("/{project}/metadata", summary="List branch metadata")
|
|
80
|
+
def metadata_list(
|
|
81
|
+
project: str,
|
|
82
|
+
branch_id: int | str | None = None,
|
|
83
|
+
registry: ServiceRegistry = Depends(get_registry),
|
|
84
|
+
) -> dict[str, Any]:
|
|
85
|
+
"""List all metadata keys for a branch. Mirrors `kbagent branch metadata-list`."""
|
|
86
|
+
return registry.branch.list_branch_metadata(
|
|
87
|
+
alias=project, branch_id=branch_id if branch_id is not None else "default"
|
|
88
|
+
)
|
|
89
|
+
|
|
90
|
+
|
|
91
|
+
@router.get("/{project}/metadata/{key}", summary="Get a branch metadata value")
|
|
92
|
+
def metadata_get(
|
|
93
|
+
project: str,
|
|
94
|
+
key: str,
|
|
95
|
+
branch_id: int | str | None = None,
|
|
96
|
+
registry: ServiceRegistry = Depends(get_registry),
|
|
97
|
+
) -> dict[str, Any]:
|
|
98
|
+
"""Fetch a single branch metadata entry. Mirrors `kbagent branch metadata-get`."""
|
|
99
|
+
return registry.branch.get_branch_metadata(
|
|
100
|
+
alias=project, key=key, branch_id=branch_id if branch_id is not None else "default"
|
|
101
|
+
)
|
|
102
|
+
|
|
103
|
+
|
|
104
|
+
@router.put("/{project}/metadata/{key}", summary="Set a branch metadata value")
|
|
105
|
+
def metadata_set(
|
|
106
|
+
project: str,
|
|
107
|
+
key: str,
|
|
108
|
+
body: MetadataSet,
|
|
109
|
+
branch_id: int | str | None = None,
|
|
110
|
+
registry: ServiceRegistry = Depends(get_registry),
|
|
111
|
+
) -> dict[str, Any]:
|
|
112
|
+
"""Write a branch metadata entry. Mirrors `kbagent branch metadata-set`."""
|
|
113
|
+
return registry.branch.set_branch_metadata(
|
|
114
|
+
alias=project,
|
|
115
|
+
key=key,
|
|
116
|
+
value=body.value,
|
|
117
|
+
branch_id=branch_id if branch_id is not None else "default",
|
|
118
|
+
)
|
|
119
|
+
|
|
120
|
+
|
|
121
|
+
@router.delete("/{project}/metadata/{metadata_id}", summary="Delete a branch metadata entry")
|
|
122
|
+
def metadata_delete(
|
|
123
|
+
project: str,
|
|
124
|
+
metadata_id: int,
|
|
125
|
+
branch_id: int | str | None = None,
|
|
126
|
+
registry: ServiceRegistry = Depends(get_registry),
|
|
127
|
+
) -> dict[str, Any]:
|
|
128
|
+
"""Remove a branch metadata entry by id. Mirrors `kbagent branch metadata-delete`."""
|
|
129
|
+
return registry.branch.delete_branch_metadata(
|
|
130
|
+
alias=project,
|
|
131
|
+
metadata_id=metadata_id,
|
|
132
|
+
branch_id=branch_id if branch_id is not None else "default",
|
|
133
|
+
)
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
"""Component discovery (list/detail/scaffold)."""
|
|
2
|
+
|
|
3
|
+
from __future__ import annotations
|
|
4
|
+
|
|
5
|
+
from typing import Any
|
|
6
|
+
|
|
7
|
+
from fastapi import APIRouter, Depends
|
|
8
|
+
|
|
9
|
+
from ..dependencies import ServiceRegistry, get_registry
|
|
10
|
+
|
|
11
|
+
router = APIRouter(prefix="/components", tags=["components"])
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
@router.get("", summary="List components")
|
|
15
|
+
def list_components(
|
|
16
|
+
project: str | None = None,
|
|
17
|
+
type: str | None = None,
|
|
18
|
+
query: str | None = None,
|
|
19
|
+
registry: ServiceRegistry = Depends(get_registry),
|
|
20
|
+
) -> dict[str, Any]:
|
|
21
|
+
"""Browse available components, optionally filtered. Mirrors `kbagent component list`."""
|
|
22
|
+
aliases = [project] if project else None
|
|
23
|
+
return registry.component.list_components(aliases=aliases, component_type=type, query=query)
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
@router.get("/{component_id}", summary="Get component detail")
|
|
27
|
+
def detail(
|
|
28
|
+
component_id: str,
|
|
29
|
+
project: str | None = None,
|
|
30
|
+
registry: ServiceRegistry = Depends(get_registry),
|
|
31
|
+
) -> dict[str, Any]:
|
|
32
|
+
"""Full component metadata including config schema. Mirrors `kbagent component detail`."""
|
|
33
|
+
if project is None:
|
|
34
|
+
project, _ = registry.project.resolve_pinned_alias(None)
|
|
35
|
+
return registry.component.get_component_detail(alias=project, component_id=component_id)
|
|
36
|
+
|
|
37
|
+
|
|
38
|
+
@router.post("/{component_id}/scaffold", summary="Scaffold a new component config")
|
|
39
|
+
def scaffold(
|
|
40
|
+
component_id: str,
|
|
41
|
+
project: str | None = None,
|
|
42
|
+
name: str | None = None,
|
|
43
|
+
registry: ServiceRegistry = Depends(get_registry),
|
|
44
|
+
) -> dict[str, Any]:
|
|
45
|
+
"""Generate a starter configuration for the component. Mirrors `kbagent config new`."""
|
|
46
|
+
if project is None:
|
|
47
|
+
project, _ = registry.project.resolve_pinned_alias(None)
|
|
48
|
+
return registry.component.generate_scaffold(alias=project, component_id=component_id, name=name)
|