keboola-cli 0.96.2__tar.gz → 0.98.0__tar.gz

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 (622) hide show
  1. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/CLAUDE.md +117 -18
  2. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/PKG-INFO +1 -1
  3. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/pyproject.toml +1 -1
  4. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/src/keboola_agent_cli/__init__.py +2 -0
  5. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/src/keboola_agent_cli/changelog.py +54 -0
  6. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/src/keboola_agent_cli/client/__init__.py +4 -0
  7. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/src/keboola_agent_cli/client/_core.py +61 -5
  8. keboola_cli-0.98.0/src/keboola_agent_cli/client/_s3_multipart.py +626 -0
  9. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/src/keboola_agent_cli/client/_transfer.py +155 -21
  10. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/src/keboola_agent_cli/client/storage_files.py +83 -18
  11. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/src/keboola_agent_cli/client/storage_tables.py +289 -31
  12. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/src/keboola_agent_cli/commands/_helpers.py +22 -0
  13. keboola_cli-0.98.0/src/keboola_agent_cli/commands/_progress.py +314 -0
  14. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/src/keboola_agent_cli/commands/_semantic_layer_crud.py +87 -6
  15. keboola_cli-0.98.0/src/keboola_agent_cli/commands/_semantic_layer_helpers.py +195 -0
  16. keboola_cli-0.98.0/src/keboola_agent_cli/commands/_semantic_layer_scope.py +252 -0
  17. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/src/keboola_agent_cli/commands/_storage_describe.py +18 -6
  18. keboola_cli-0.98.0/src/keboola_agent_cli/commands/_storage_jobs.py +158 -0
  19. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/src/keboola_agent_cli/commands/_sync_clone_render.py +19 -6
  20. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/src/keboola_agent_cli/commands/context.py +170 -25
  21. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/src/keboola_agent_cli/commands/flow.py +15 -2
  22. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/src/keboola_agent_cli/commands/org.py +27 -0
  23. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/src/keboola_agent_cli/commands/project.py +16 -1
  24. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/src/keboola_agent_cli/commands/semantic_layer.py +98 -3
  25. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/src/keboola_agent_cli/commands/storage.py +128 -66
  26. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/src/keboola_agent_cli/commands/sync.py +78 -37
  27. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/src/keboola_agent_cli/commands/workspace.py +15 -4
  28. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/src/keboola_agent_cli/constants.py +41 -0
  29. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/src/keboola_agent_cli/lib.py +111 -10
  30. keboola_cli-0.98.0/src/keboola_agent_cli/metastore_client.py +505 -0
  31. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/src/keboola_agent_cli/permissions.py +29 -0
  32. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/src/keboola_agent_cli/result_models.py +70 -0
  33. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/src/keboola_agent_cli/server/_serve_command_map.py +14 -0
  34. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/src/keboola_agent_cli/server/routers/semantic_layer.py +160 -10
  35. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/src/keboola_agent_cli/server/routers/storage.py +64 -8
  36. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/src/keboola_agent_cli/services/_semantic_layer_crud.py +11 -76
  37. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/src/keboola_agent_cli/services/_semantic_layer_internals.py +48 -9
  38. keboola_cli-0.98.0/src/keboola_agent_cli/services/_semantic_layer_scope.py +307 -0
  39. keboola_cli-0.98.0/src/keboola_agent_cli/services/_storage_downloads.py +101 -0
  40. keboola_cli-0.98.0/src/keboola_agent_cli/services/_storage_jobs.py +276 -0
  41. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/src/keboola_agent_cli/services/_sync_bulk.py +9 -2
  42. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/src/keboola_agent_cli/services/flow_service.py +9 -4
  43. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/src/keboola_agent_cli/services/semantic_layer_service.py +276 -20
  44. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/src/keboola_agent_cli/services/storage_service.py +148 -140
  45. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/tests/test_api_call_counts.py +20 -0
  46. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/tests/test_client.py +12 -2
  47. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/tests/test_e2e.py +226 -5
  48. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/tests/test_flow_service.py +32 -0
  49. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/tests/test_lib.py +117 -5
  50. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/tests/test_metastore_client.py +232 -10
  51. keboola_cli-0.98.0/tests/test_partial_failure_exit_code.py +1151 -0
  52. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/tests/test_project_ref.py +5 -1
  53. keboola_cli-0.98.0/tests/test_s3_multipart.py +869 -0
  54. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/tests/test_semantic_layer_cli.py +17 -2
  55. keboola_cli-0.98.0/tests/test_semantic_layer_scope.py +680 -0
  56. keboola_cli-0.98.0/tests/test_semantic_layer_scope_cli.py +609 -0
  57. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/tests/test_semantic_layer_service.py +61 -44
  58. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/tests/test_server_router_calls.py +148 -0
  59. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/tests/test_server_semantic_layer_routes_e2e.py +3 -3
  60. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/tests/test_storage_describe_cli.py +5 -2
  61. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/tests/test_storage_empty_definition.py +1 -1
  62. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/tests/test_storage_files.py +74 -3
  63. keboola_cli-0.98.0/tests/test_storage_import_jobs.py +1013 -0
  64. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/tests/test_storage_write.py +74 -23
  65. keboola_cli-0.98.0/tests/test_transfer_progress.py +517 -0
  66. keboola_cli-0.96.2/src/keboola_agent_cli/commands/_semantic_layer_helpers.py +0 -44
  67. keboola_cli-0.96.2/src/keboola_agent_cli/metastore_client.py +0 -315
  68. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/.gitignore +0 -0
  69. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/CONTRIBUTING.md +0 -0
  70. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/LICENSE +0 -0
  71. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/Makefile +0 -0
  72. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/README.md +0 -0
  73. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/examples/README.md +0 -0
  74. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/examples/storage_tui/README.md +0 -0
  75. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/formal/sync/README.md +0 -0
  76. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/plugins/kbagent/.claude-plugin/CLAUDE.md +0 -0
  77. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/plugins/kbagent/skills/kbagent-cicd-migration/scripts/migrate_cicd.py +0 -0
  78. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/plugins/kbagent/skills/kbagent-promotion-pipeline/scripts/generate_promotion_pipeline.py +0 -0
  79. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/scripts/check_command_sync.py +0 -0
  80. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/scripts/check_error_codes.py +0 -0
  81. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/scripts/check_file_size.py +0 -0
  82. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/scripts/check_release_scope.py +0 -0
  83. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/scripts/check_sentinel_guards.py +0 -0
  84. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/scripts/check_version_gates.py +0 -0
  85. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/scripts/check_wheel_ui.py +0 -0
  86. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/scripts/debug_linkedby_type.sh +0 -0
  87. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/scripts/file_size_baseline.json +0 -0
  88. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/scripts/gen_command_reference.py +0 -0
  89. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/scripts/gen_endpoint_reference.py +0 -0
  90. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/scripts/gen_release_notes.py +0 -0
  91. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/scripts/generate_changelog.py +0 -0
  92. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/scripts/generate_skill.py +0 -0
  93. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/scripts/hatch_build.py +0 -0
  94. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/scripts/lineage_deep.py +0 -0
  95. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/scripts/post-edit-quality.sh +0 -0
  96. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/scripts/pre-commit +0 -0
  97. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/scripts/sync_version.py +0 -0
  98. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/scripts/web-dev.sh +0 -0
  99. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/src/keboola_agent_cli/__main__.py +0 -0
  100. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/src/keboola_agent_cli/ai_client.py +0 -0
  101. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/src/keboola_agent_cli/auth/__init__.py +0 -0
  102. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/src/keboola_agent_cli/auth/auth_client.py +0 -0
  103. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/src/keboola_agent_cli/auth/device.py +0 -0
  104. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/src/keboola_agent_cli/auth/environment.py +0 -0
  105. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/src/keboola_agent_cli/auth/models.py +0 -0
  106. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/src/keboola_agent_cli/auth/pkce.py +0 -0
  107. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/src/keboola_agent_cli/auth/sentinel.py +0 -0
  108. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/src/keboola_agent_cli/auth/state_store.py +0 -0
  109. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/src/keboola_agent_cli/auth/token_provider.py +0 -0
  110. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/src/keboola_agent_cli/auth/totp.py +0 -0
  111. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/src/keboola_agent_cli/auto_update.py +0 -0
  112. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/src/keboola_agent_cli/cli.py +0 -0
  113. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/src/keboola_agent_cli/client/_client.py +0 -0
  114. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/src/keboola_agent_cli/client/billing.py +0 -0
  115. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/src/keboola_agent_cli/client/branches.py +0 -0
  116. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/src/keboola_agent_cli/client/configs.py +0 -0
  117. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/src/keboola_agent_cli/client/editor.py +0 -0
  118. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/src/keboola_agent_cli/client/merge_requests.py +0 -0
  119. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/src/keboola_agent_cli/client/misc.py +0 -0
  120. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/src/keboola_agent_cli/client/notifications.py +0 -0
  121. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/src/keboola_agent_cli/client/query.py +0 -0
  122. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/src/keboola_agent_cli/client/queue.py +0 -0
  123. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/src/keboola_agent_cli/client/stream.py +0 -0
  124. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/src/keboola_agent_cli/client/tokens.py +0 -0
  125. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/src/keboola_agent_cli/client/triggers.py +0 -0
  126. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/src/keboola_agent_cli/client/workspaces.py +0 -0
  127. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/src/keboola_agent_cli/commands/__init__.py +0 -0
  128. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/src/keboola_agent_cli/commands/_auth_picker.py +0 -0
  129. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/src/keboola_agent_cli/commands/_checkbox_select.py +0 -0
  130. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/src/keboola_agent_cli/commands/_config_clone_cmd.py +0 -0
  131. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/src/keboola_agent_cli/commands/_config_oauth.py +0 -0
  132. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/src/keboola_agent_cli/commands/_config_trash_cmd.py +0 -0
  133. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/src/keboola_agent_cli/commands/_data_app_git.py +0 -0
  134. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/src/keboola_agent_cli/commands/_data_app_password.py +0 -0
  135. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/src/keboola_agent_cli/commands/_data_app_runtime.py +0 -0
  136. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/src/keboola_agent_cli/commands/_flow_triggers.py +0 -0
  137. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/src/keboola_agent_cli/commands/_merge_request_common.py +0 -0
  138. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/src/keboola_agent_cli/commands/_merge_request_render.py +0 -0
  139. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/src/keboola_agent_cli/commands/_merge_request_writes.py +0 -0
  140. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/src/keboola_agent_cli/commands/_metadata_input.py +0 -0
  141. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/src/keboola_agent_cli/commands/_project_create.py +0 -0
  142. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/src/keboola_agent_cli/commands/_project_ref.py +0 -0
  143. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/src/keboola_agent_cli/commands/_semantic_layer_reference_data.py +0 -0
  144. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/src/keboola_agent_cli/commands/_storage_snapshots.py +0 -0
  145. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/src/keboola_agent_cli/commands/_storage_table_detail.py +0 -0
  146. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/src/keboola_agent_cli/commands/_storage_tables_render.py +0 -0
  147. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/src/keboola_agent_cli/commands/_sync_push_render.py +0 -0
  148. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/src/keboola_agent_cli/commands/_url_copy.py +0 -0
  149. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/src/keboola_agent_cli/commands/agent.py +0 -0
  150. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/src/keboola_agent_cli/commands/auth.py +0 -0
  151. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/src/keboola_agent_cli/commands/billing.py +0 -0
  152. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/src/keboola_agent_cli/commands/branch.py +0 -0
  153. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/src/keboola_agent_cli/commands/changelog.py +0 -0
  154. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/src/keboola_agent_cli/commands/component.py +0 -0
  155. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/src/keboola_agent_cli/commands/config.py +0 -0
  156. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/src/keboola_agent_cli/commands/config_state.py +0 -0
  157. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/src/keboola_agent_cli/commands/data_app.py +0 -0
  158. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/src/keboola_agent_cli/commands/dev_portal.py +0 -0
  159. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/src/keboola_agent_cli/commands/docs.py +0 -0
  160. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/src/keboola_agent_cli/commands/doctor.py +0 -0
  161. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/src/keboola_agent_cli/commands/encrypt.py +0 -0
  162. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/src/keboola_agent_cli/commands/feature.py +0 -0
  163. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/src/keboola_agent_cli/commands/http_client.py +0 -0
  164. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/src/keboola_agent_cli/commands/init.py +0 -0
  165. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/src/keboola_agent_cli/commands/job.py +0 -0
  166. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/src/keboola_agent_cli/commands/kai.py +0 -0
  167. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/src/keboola_agent_cli/commands/lineage.py +0 -0
  168. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/src/keboola_agent_cli/commands/merge_request.py +0 -0
  169. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/src/keboola_agent_cli/commands/notification.py +0 -0
  170. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/src/keboola_agent_cli/commands/permissions.py +0 -0
  171. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/src/keboola_agent_cli/commands/repl.py +0 -0
  172. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/src/keboola_agent_cli/commands/schedule.py +0 -0
  173. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/src/keboola_agent_cli/commands/search.py +0 -0
  174. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/src/keboola_agent_cli/commands/serve.py +0 -0
  175. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/src/keboola_agent_cli/commands/sharing.py +0 -0
  176. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/src/keboola_agent_cli/commands/stream.py +0 -0
  177. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/src/keboola_agent_cli/commands/token.py +0 -0
  178. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/src/keboola_agent_cli/commands/transformation.py +0 -0
  179. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/src/keboola_agent_cli/commands/version.py +0 -0
  180. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/src/keboola_agent_cli/config_store.py +0 -0
  181. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/src/keboola_agent_cli/data_science_client.py +0 -0
  182. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/src/keboola_agent_cli/dev_portal_client.py +0 -0
  183. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/src/keboola_agent_cli/effective_branch.py +0 -0
  184. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/src/keboola_agent_cli/errors.py +0 -0
  185. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/src/keboola_agent_cli/frozen_dist.py +0 -0
  186. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/src/keboola_agent_cli/http_base.py +0 -0
  187. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/src/keboola_agent_cli/json_utils.py +0 -0
  188. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/src/keboola_agent_cli/manage_client.py +0 -0
  189. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/src/keboola_agent_cli/models.py +0 -0
  190. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/src/keboola_agent_cli/output.py +0 -0
  191. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/src/keboola_agent_cli/project_ref.py +0 -0
  192. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/src/keboola_agent_cli/py.typed +0 -0
  193. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/src/keboola_agent_cli/resources/__init__.py +0 -0
  194. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/src/keboola_agent_cli/resources/flow/__init__.py +0 -0
  195. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/src/keboola_agent_cli/resources/flow/conditional-flow-schema.json +0 -0
  196. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/src/keboola_agent_cli/resources/flow/conditional_flow_examples.jsonl +0 -0
  197. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/src/keboola_agent_cli/resources/flow/flow-schema.json +0 -0
  198. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/src/keboola_agent_cli/resources/flow/legacy_flow_examples.jsonl +0 -0
  199. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/src/keboola_agent_cli/scheduler_client.py +0 -0
  200. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/src/keboola_agent_cli/server/__init__.py +0 -0
  201. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/src/keboola_agent_cli/server/agent_runner.py +0 -0
  202. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/src/keboola_agent_cli/server/agents_store.py +0 -0
  203. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/src/keboola_agent_cli/server/app.py +0 -0
  204. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/src/keboola_agent_cli/server/auth.py +0 -0
  205. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/src/keboola_agent_cli/server/dependencies.py +0 -0
  206. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/src/keboola_agent_cli/server/pricing.py +0 -0
  207. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/src/keboola_agent_cli/server/routers/__init__.py +0 -0
  208. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/src/keboola_agent_cli/server/routers/agents.py +0 -0
  209. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/src/keboola_agent_cli/server/routers/ai_chat.py +0 -0
  210. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/src/keboola_agent_cli/server/routers/auth.py +0 -0
  211. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/src/keboola_agent_cli/server/routers/billing.py +0 -0
  212. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/src/keboola_agent_cli/server/routers/branches.py +0 -0
  213. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/src/keboola_agent_cli/server/routers/components.py +0 -0
  214. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/src/keboola_agent_cli/server/routers/configs.py +0 -0
  215. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/src/keboola_agent_cli/server/routers/data_apps.py +0 -0
  216. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/src/keboola_agent_cli/server/routers/dev_portal.py +0 -0
  217. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/src/keboola_agent_cli/server/routers/docs.py +0 -0
  218. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/src/keboola_agent_cli/server/routers/encrypt.py +0 -0
  219. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/src/keboola_agent_cli/server/routers/feature.py +0 -0
  220. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/src/keboola_agent_cli/server/routers/flows.py +0 -0
  221. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/src/keboola_agent_cli/server/routers/health.py +0 -0
  222. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/src/keboola_agent_cli/server/routers/jobs.py +0 -0
  223. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/src/keboola_agent_cli/server/routers/kai.py +0 -0
  224. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/src/keboola_agent_cli/server/routers/lineage.py +0 -0
  225. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/src/keboola_agent_cli/server/routers/members.py +0 -0
  226. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/src/keboola_agent_cli/server/routers/merge_requests.py +0 -0
  227. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/src/keboola_agent_cli/server/routers/notifications.py +0 -0
  228. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/src/keboola_agent_cli/server/routers/org.py +0 -0
  229. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/src/keboola_agent_cli/server/routers/projects.py +0 -0
  230. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/src/keboola_agent_cli/server/routers/schedules.py +0 -0
  231. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/src/keboola_agent_cli/server/routers/search.py +0 -0
  232. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/src/keboola_agent_cli/server/routers/sharing.py +0 -0
  233. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/src/keboola_agent_cli/server/routers/stream.py +0 -0
  234. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/src/keboola_agent_cli/server/routers/token.py +0 -0
  235. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/src/keboola_agent_cli/server/routers/transformation.py +0 -0
  236. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/src/keboola_agent_cli/server/routers/workspaces.py +0 -0
  237. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/src/keboola_agent_cli/server/run_broadcaster.py +0 -0
  238. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/src/keboola_agent_cli/server/sse.py +0 -0
  239. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/src/keboola_agent_cli/services/__init__.py +0 -0
  240. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/src/keboola_agent_cli/services/_auth_registration.py +0 -0
  241. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/src/keboola_agent_cli/services/_column_descriptions.py +0 -0
  242. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/src/keboola_agent_cli/services/_config_clone.py +0 -0
  243. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/src/keboola_agent_cli/services/_config_set_guard.py +0 -0
  244. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/src/keboola_agent_cli/services/_config_trash.py +0 -0
  245. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/src/keboola_agent_cli/services/_data_app_bodies.py +0 -0
  246. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/src/keboola_agent_cli/services/_data_app_password.py +0 -0
  247. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/src/keboola_agent_cli/services/_describe_batch_input.py +0 -0
  248. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/src/keboola_agent_cli/services/_encryption.py +0 -0
  249. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/src/keboola_agent_cli/services/_semantic_layer_cascade.py +0 -0
  250. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/src/keboola_agent_cli/services/_semantic_layer_fqn.py +0 -0
  251. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/src/keboola_agent_cli/services/_semantic_layer_lookup.py +0 -0
  252. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/src/keboola_agent_cli/services/_semantic_layer_reference_data.py +0 -0
  253. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/src/keboola_agent_cli/services/_storage_tables.py +0 -0
  254. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/src/keboola_agent_cli/services/_sync_baseline.py +0 -0
  255. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/src/keboola_agent_cli/services/_sync_bindings.py +0 -0
  256. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/src/keboola_agent_cli/services/_sync_branch.py +0 -0
  257. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/src/keboola_agent_cli/services/_sync_clone.py +0 -0
  258. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/src/keboola_agent_cli/services/_sync_clone_warnings.py +0 -0
  259. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/src/keboola_agent_cli/services/_sync_data_app.py +0 -0
  260. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/src/keboola_agent_cli/services/_sync_models.py +0 -0
  261. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/src/keboola_agent_cli/services/_sync_push_ops.py +0 -0
  262. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/src/keboola_agent_cli/services/_sync_stale.py +0 -0
  263. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/src/keboola_agent_cli/services/_sync_storage.py +0 -0
  264. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/src/keboola_agent_cli/services/_sync_workspace.py +0 -0
  265. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/src/keboola_agent_cli/services/_sync_writeback.py +0 -0
  266. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/src/keboola_agent_cli/services/_table_detail.py +0 -0
  267. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/src/keboola_agent_cli/services/_token_last_used.py +0 -0
  268. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/src/keboola_agent_cli/services/_transformation_ops.py +0 -0
  269. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/src/keboola_agent_cli/services/_workspace_load_plan.py +0 -0
  270. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/src/keboola_agent_cli/services/agent_service.py +0 -0
  271. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/src/keboola_agent_cli/services/auth_service.py +0 -0
  272. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/src/keboola_agent_cli/services/base.py +0 -0
  273. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/src/keboola_agent_cli/services/billing_service.py +0 -0
  274. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/src/keboola_agent_cli/services/branch_service.py +0 -0
  275. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/src/keboola_agent_cli/services/component_service.py +0 -0
  276. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/src/keboola_agent_cli/services/config_service.py +0 -0
  277. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/src/keboola_agent_cli/services/data_app_git_service.py +0 -0
  278. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/src/keboola_agent_cli/services/data_app_service.py +0 -0
  279. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/src/keboola_agent_cli/services/deep_lineage_service.py +0 -0
  280. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/src/keboola_agent_cli/services/dev_portal_service.py +0 -0
  281. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/src/keboola_agent_cli/services/docs_service.py +0 -0
  282. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/src/keboola_agent_cli/services/doctor_service.py +0 -0
  283. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/src/keboola_agent_cli/services/encrypt_service.py +0 -0
  284. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/src/keboola_agent_cli/services/feature_service.py +0 -0
  285. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/src/keboola_agent_cli/services/flow_validation.py +0 -0
  286. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/src/keboola_agent_cli/services/http_forwarder_service.py +0 -0
  287. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/src/keboola_agent_cli/services/job_idempotency_store.py +0 -0
  288. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/src/keboola_agent_cli/services/job_service.py +0 -0
  289. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/src/keboola_agent_cli/services/kai_service.py +0 -0
  290. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/src/keboola_agent_cli/services/lineage_service.py +0 -0
  291. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/src/keboola_agent_cli/services/member_service.py +0 -0
  292. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/src/keboola_agent_cli/services/merge_request_service.py +0 -0
  293. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/src/keboola_agent_cli/services/notification_service.py +0 -0
  294. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/src/keboola_agent_cli/services/org_service.py +0 -0
  295. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/src/keboola_agent_cli/services/project_service.py +0 -0
  296. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/src/keboola_agent_cli/services/repo_validate_service.py +0 -0
  297. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/src/keboola_agent_cli/services/schedule_service.py +0 -0
  298. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/src/keboola_agent_cli/services/search_service.py +0 -0
  299. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/src/keboola_agent_cli/services/sharing_service.py +0 -0
  300. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/src/keboola_agent_cli/services/snapshot_service.py +0 -0
  301. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/src/keboola_agent_cli/services/stream_service.py +0 -0
  302. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/src/keboola_agent_cli/services/sync_service.py +0 -0
  303. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/src/keboola_agent_cli/services/table_usage.py +0 -0
  304. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/src/keboola_agent_cli/services/token_service.py +0 -0
  305. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/src/keboola_agent_cli/services/transformation_service.py +0 -0
  306. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/src/keboola_agent_cli/services/variables_service.py +0 -0
  307. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/src/keboola_agent_cli/services/version_service.py +0 -0
  308. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/src/keboola_agent_cli/services/workspace_service.py +0 -0
  309. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/src/keboola_agent_cli/stream_client.py +0 -0
  310. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/src/keboola_agent_cli/sync/__init__.py +0 -0
  311. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/src/keboola_agent_cli/sync/branch_mapping.py +0 -0
  312. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/src/keboola_agent_cli/sync/branch_registry.py +0 -0
  313. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/src/keboola_agent_cli/sync/branch_scope.py +0 -0
  314. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/src/keboola_agent_cli/sync/clone.py +0 -0
  315. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/src/keboola_agent_cli/sync/code_extraction.py +0 -0
  316. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/src/keboola_agent_cli/sync/config_format.py +0 -0
  317. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/src/keboola_agent_cli/sync/diff_engine.py +0 -0
  318. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/src/keboola_agent_cli/sync/git_utils.py +0 -0
  319. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/src/keboola_agent_cli/sync/manifest.py +0 -0
  320. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/src/keboola_agent_cli/sync/naming.py +0 -0
  321. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/src/keboola_agent_cli/sync/secrets.py +0 -0
  322. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/src/keboola_agent_cli/sync/sql_split.py +0 -0
  323. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/src/keboola_agent_cli/telemetry.py +0 -0
  324. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/src/keboola_agent_cli/update_runner.py +0 -0
  325. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/src/keboola_agent_cli/yaml_input.py +0 -0
  326. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/tests/__init__.py +0 -0
  327. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/tests/conftest.py +0 -0
  328. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/tests/helpers.py +0 -0
  329. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/tests/test_agent_cli.py +0 -0
  330. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/tests/test_agent_prompt.py +0 -0
  331. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/tests/test_agent_prompt_helper.py +0 -0
  332. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/tests/test_agent_runner.py +0 -0
  333. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/tests/test_agent_service.py +0 -0
  334. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/tests/test_agent_tombstone.py +0 -0
  335. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/tests/test_agents_store_events.py +0 -0
  336. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/tests/test_ai_client.py +0 -0
  337. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/tests/test_auth_client.py +0 -0
  338. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/tests/test_auth_device.py +0 -0
  339. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/tests/test_auth_environment.py +0 -0
  340. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/tests/test_auth_models.py +0 -0
  341. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/tests/test_auth_picker.py +0 -0
  342. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/tests/test_auth_pkce.py +0 -0
  343. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/tests/test_auth_register_projects.py +0 -0
  344. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/tests/test_auth_sentinel.py +0 -0
  345. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/tests/test_auth_sentinel_guards.py +0 -0
  346. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/tests/test_auth_service.py +0 -0
  347. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/tests/test_auth_state_store.py +0 -0
  348. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/tests/test_auth_totp.py +0 -0
  349. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/tests/test_auto_update.py +0 -0
  350. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/tests/test_base_service.py +0 -0
  351. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/tests/test_billing_cli.py +0 -0
  352. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/tests/test_billing_client.py +0 -0
  353. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/tests/test_billing_service.py +0 -0
  354. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/tests/test_branch_metadata_cli.py +0 -0
  355. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/tests/test_branch_metadata_service.py +0 -0
  356. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/tests/test_branch_registry.py +0 -0
  357. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/tests/test_branch_service.py +0 -0
  358. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/tests/test_build_hook.py +0 -0
  359. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/tests/test_changelog_check.py +0 -0
  360. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/tests/test_changelog_render.py +0 -0
  361. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/tests/test_check_command_sync.py +0 -0
  362. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/tests/test_check_file_size.py +0 -0
  363. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/tests/test_check_release_scope.py +0 -0
  364. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/tests/test_check_sentinel_guards.py +0 -0
  365. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/tests/test_check_version_gates.py +0 -0
  366. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/tests/test_checkbox_select.py +0 -0
  367. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/tests/test_choice_enums.py +0 -0
  368. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/tests/test_cli.py +0 -0
  369. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/tests/test_cli_auth.py +0 -0
  370. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/tests/test_client_device_enrollment.py +0 -0
  371. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/tests/test_client_token_events.py +0 -0
  372. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/tests/test_component_cli.py +0 -0
  373. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/tests/test_component_service.py +0 -0
  374. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/tests/test_component_sync_action.py +0 -0
  375. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/tests/test_config_clone_cli.py +0 -0
  376. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/tests/test_config_clone_service.py +0 -0
  377. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/tests/test_config_create_cli.py +0 -0
  378. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/tests/test_config_create_service.py +0 -0
  379. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/tests/test_config_encryption.py +0 -0
  380. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/tests/test_config_examples.py +0 -0
  381. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/tests/test_config_metadata.py +0 -0
  382. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/tests/test_config_rename.py +0 -0
  383. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/tests/test_config_rename_cli.py +0 -0
  384. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/tests/test_config_resolution.py +0 -0
  385. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/tests/test_config_row_cli.py +0 -0
  386. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/tests/test_config_row_service.py +0 -0
  387. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/tests/test_config_search.py +0 -0
  388. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/tests/test_config_search_cli.py +0 -0
  389. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/tests/test_config_set_default_bucket.py +0 -0
  390. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/tests/test_config_set_guard.py +0 -0
  391. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/tests/test_config_state.py +0 -0
  392. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/tests/test_config_store.py +0 -0
  393. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/tests/test_config_trash.py +0 -0
  394. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/tests/test_config_update.py +0 -0
  395. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/tests/test_data_app_cli.py +0 -0
  396. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/tests/test_data_app_git_repo.py +0 -0
  397. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/tests/test_data_app_password.py +0 -0
  398. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/tests/test_data_app_plain_env_keys.py +0 -0
  399. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/tests/test_data_app_secrets_cli.py +0 -0
  400. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/tests/test_data_app_secrets_service.py +0 -0
  401. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/tests/test_data_app_service.py +0 -0
  402. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/tests/test_data_app_validate_repo_service.py +0 -0
  403. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/tests/test_deep_lineage_service.py +0 -0
  404. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/tests/test_dev_portal_cli.py +0 -0
  405. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/tests/test_dev_portal_client.py +0 -0
  406. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/tests/test_dev_portal_service.py +0 -0
  407. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/tests/test_docs_cli.py +0 -0
  408. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/tests/test_doctor_service.py +0 -0
  409. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/tests/test_e2e_auth.py +0 -0
  410. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/tests/test_e2e_config_dir_mode.py +0 -0
  411. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/tests/test_e2e_lineage_deep.py +0 -0
  412. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/tests/test_effective_branch.py +0 -0
  413. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/tests/test_encrypt_cli.py +0 -0
  414. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/tests/test_encrypt_service.py +0 -0
  415. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/tests/test_encryption.py +0 -0
  416. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/tests/test_errors.py +0 -0
  417. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/tests/test_feature_cli.py +0 -0
  418. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/tests/test_feature_service.py +0 -0
  419. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/tests/test_file_locking.py +0 -0
  420. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/tests/test_flow_cli.py +0 -0
  421. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/tests/test_flow_examples.py +0 -0
  422. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/tests/test_flow_validation.py +0 -0
  423. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/tests/test_frozen_dist.py +0 -0
  424. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/tests/test_gen_command_reference.py +0 -0
  425. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/tests/test_gen_endpoint_reference.py +0 -0
  426. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/tests/test_gen_release_notes.py +0 -0
  427. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/tests/test_generate_promotion_pipeline.py +0 -0
  428. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/tests/test_helpers.py +0 -0
  429. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/tests/test_http_base.py +0 -0
  430. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/tests/test_http_base_auth.py +0 -0
  431. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/tests/test_http_client_cmd.py +0 -0
  432. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/tests/test_http_forwarder_service.py +0 -0
  433. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/tests/test_integration.py +0 -0
  434. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/tests/test_job_idempotency_store.py +0 -0
  435. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/tests/test_job_options.py +0 -0
  436. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/tests/test_json_utils.py +0 -0
  437. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/tests/test_kai_cli.py +0 -0
  438. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/tests/test_kai_service.py +0 -0
  439. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/tests/test_lib_device_enrollment.py +0 -0
  440. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/tests/test_license_consistency.py +0 -0
  441. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/tests/test_lineage_service.py +0 -0
  442. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/tests/test_local_ai_chat.py +0 -0
  443. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/tests/test_manage_client.py +0 -0
  444. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/tests/test_manage_token_bulk.py +0 -0
  445. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/tests/test_manage_token_cli.py +0 -0
  446. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/tests/test_mcp_migration_recipe.py +0 -0
  447. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/tests/test_member_cli.py +0 -0
  448. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/tests/test_member_service.py +0 -0
  449. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/tests/test_merge_request_cli.py +0 -0
  450. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/tests/test_merge_request_client.py +0 -0
  451. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/tests/test_merge_request_service.py +0 -0
  452. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/tests/test_migrate_cicd.py +0 -0
  453. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/tests/test_models.py +0 -0
  454. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/tests/test_normalize_script.py +0 -0
  455. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/tests/test_notification_cli.py +0 -0
  456. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/tests/test_notification_client.py +0 -0
  457. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/tests/test_notification_service.py +0 -0
  458. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/tests/test_org_service.py +0 -0
  459. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/tests/test_output.py +0 -0
  460. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/tests/test_permissions.py +0 -0
  461. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/tests/test_permissions_cli.py +0 -0
  462. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/tests/test_pricing.py +0 -0
  463. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/tests/test_project_create_cli.py +0 -0
  464. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/tests/test_project_edit.py +0 -0
  465. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/tests/test_project_edit_cli.py +0 -0
  466. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/tests/test_project_info_cli.py +0 -0
  467. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/tests/test_project_info_service.py +0 -0
  468. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/tests/test_release_kbagent_ai_kit_sync.py +0 -0
  469. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/tests/test_repl.py +0 -0
  470. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/tests/test_result_models.py +0 -0
  471. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/tests/test_run_broadcaster.py +0 -0
  472. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/tests/test_schedule_cli.py +0 -0
  473. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/tests/test_schedule_service.py +0 -0
  474. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/tests/test_scheduler_client.py +0 -0
  475. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/tests/test_search_cli.py +0 -0
  476. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/tests/test_search_service.py +0 -0
  477. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/tests/test_semantic_layer_schema.py +0 -0
  478. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/tests/test_serve_banner_encoding.py +0 -0
  479. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/tests/test_serve_conversation_id.py +0 -0
  480. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/tests/test_serve_telemetry.py +0 -0
  481. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/tests/test_serve_ui.py +0 -0
  482. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/tests/test_server_auth.py +0 -0
  483. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/tests/test_server_permissions.py +0 -0
  484. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/tests/test_server_project_ref.py +0 -0
  485. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/tests/test_server_smoke.py +0 -0
  486. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/tests/test_services.py +0 -0
  487. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/tests/test_sharing_cli.py +0 -0
  488. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/tests/test_sharing_service.py +0 -0
  489. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/tests/test_skill_frontmatter.py +0 -0
  490. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/tests/test_sql_split.py +0 -0
  491. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/tests/test_storage_clone.py +0 -0
  492. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/tests/test_storage_create_table.py +0 -0
  493. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/tests/test_storage_delete.py +0 -0
  494. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/tests/test_storage_describe_service.py +0 -0
  495. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/tests/test_storage_export_filters.py +0 -0
  496. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/tests/test_storage_snapshots.py +0 -0
  497. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/tests/test_storage_swap.py +0 -0
  498. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/tests/test_storage_table_definition.py +0 -0
  499. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/tests/test_storage_tables.py +0 -0
  500. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/tests/test_storage_truncate.py +0 -0
  501. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/tests/test_stream_cli.py +0 -0
  502. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/tests/test_stream_client.py +0 -0
  503. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/tests/test_stream_service.py +0 -0
  504. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/tests/test_sync_baseline_stamping.py +0 -0
  505. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/tests/test_sync_branch_mapping.py +0 -0
  506. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/tests/test_sync_branch_scope.py +0 -0
  507. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/tests/test_sync_cli.py +0 -0
  508. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/tests/test_sync_cli_behavior.py +0 -0
  509. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/tests/test_sync_clone.py +0 -0
  510. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/tests/test_sync_clone_links.py +0 -0
  511. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/tests/test_sync_code_extraction.py +0 -0
  512. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/tests/test_sync_config_format.py +0 -0
  513. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/tests/test_sync_data_app_type.py +0 -0
  514. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/tests/test_sync_diff_engine.py +0 -0
  515. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/tests/test_sync_e2e.py +0 -0
  516. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/tests/test_sync_encrypt.py +0 -0
  517. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/tests/test_sync_force_pull_baseline.py +0 -0
  518. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/tests/test_sync_formal_counterexamples.py +0 -0
  519. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/tests/test_sync_manifest.py +0 -0
  520. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/tests/test_sync_naming.py +0 -0
  521. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/tests/test_sync_plaintext_audit.py +0 -0
  522. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/tests/test_sync_pull_companion_files.py +0 -0
  523. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/tests/test_sync_push_script_guard.py +0 -0
  524. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/tests/test_sync_reconcile.py +0 -0
  525. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/tests/test_sync_secrets.py +0 -0
  526. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/tests/test_sync_service.py +0 -0
  527. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/tests/test_sync_storage_jobs.py +0 -0
  528. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/tests/test_sync_version_script.py +0 -0
  529. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/tests/test_sync_workspaces.py +0 -0
  530. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/tests/test_table_usage.py +0 -0
  531. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/tests/test_telemetry.py +0 -0
  532. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/tests/test_token_cli.py +0 -0
  533. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/tests/test_token_provider.py +0 -0
  534. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/tests/test_token_service.py +0 -0
  535. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/tests/test_transformation_cli.py +0 -0
  536. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/tests/test_transformation_ops.py +0 -0
  537. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/tests/test_triggers_client.py +0 -0
  538. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/tests/test_update_runner.py +0 -0
  539. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/tests/test_url_copy.py +0 -0
  540. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/tests/test_variables_cli.py +0 -0
  541. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/tests/test_variables_service.py +0 -0
  542. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/tests/test_version_service.py +0 -0
  543. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/tests/test_workspace_cli.py +0 -0
  544. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/tests/test_workspace_gc.py +0 -0
  545. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/tests/test_workspace_service.py +0 -0
  546. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/tests/test_workspace_sql_helper.py +0 -0
  547. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/tests/test_yaml_input.py +0 -0
  548. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/web/README.md +0 -0
  549. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/web/frontend/index.html +0 -0
  550. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/web/frontend/package-lock.json +0 -0
  551. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/web/frontend/package.json +0 -0
  552. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/web/frontend/postcss.config.js +0 -0
  553. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/web/frontend/src/App.tsx +0 -0
  554. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/web/frontend/src/api/client.test.ts +0 -0
  555. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/web/frontend/src/api/client.ts +0 -0
  556. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/web/frontend/src/changelogNotes.test.ts +0 -0
  557. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/web/frontend/src/changelogNotes.ts +0 -0
  558. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/web/frontend/src/components/AgentRunView.tsx +0 -0
  559. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/web/frontend/src/components/CommandPalette.tsx +0 -0
  560. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/web/frontend/src/components/ConfirmModal.tsx +0 -0
  561. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/web/frontend/src/components/DetailTabs.tsx +0 -0
  562. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/web/frontend/src/components/Drawer.tsx +0 -0
  563. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/web/frontend/src/components/Empty.tsx +0 -0
  564. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/web/frontend/src/components/JsonView.tsx +0 -0
  565. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/web/frontend/src/components/KeyValueGrid.tsx +0 -0
  566. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/web/frontend/src/components/ManageTokenModal.tsx +0 -0
  567. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/web/frontend/src/components/PillList.tsx +0 -0
  568. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/web/frontend/src/components/RawDetail.tsx +0 -0
  569. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/web/frontend/src/components/SessionExpiredBanner.tsx +0 -0
  570. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/web/frontend/src/components/Table.tsx +0 -0
  571. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/web/frontend/src/components/WhatsNew.tsx +0 -0
  572. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/web/frontend/src/config/credits.test.ts +0 -0
  573. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/web/frontend/src/config/credits.ts +0 -0
  574. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/web/frontend/src/index.css +0 -0
  575. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/web/frontend/src/layout/Shell.tsx +0 -0
  576. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/web/frontend/src/layout/Sidebar.tsx +0 -0
  577. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/web/frontend/src/layout/StatusBar.tsx +0 -0
  578. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/web/frontend/src/layout/TopBar.tsx +0 -0
  579. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/web/frontend/src/lib/time.test.ts +0 -0
  580. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/web/frontend/src/lib/time.ts +0 -0
  581. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/web/frontend/src/main.tsx +0 -0
  582. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/web/frontend/src/pages/Agents.tsx +0 -0
  583. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/web/frontend/src/pages/Branches.tsx +0 -0
  584. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/web/frontend/src/pages/Changelog.tsx +0 -0
  585. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/web/frontend/src/pages/Components.tsx +0 -0
  586. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/web/frontend/src/pages/Configs.tsx +0 -0
  587. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/web/frontend/src/pages/Dashboard.tsx +0 -0
  588. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/web/frontend/src/pages/DataApps.tsx +0 -0
  589. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/web/frontend/src/pages/Doctor.tsx +0 -0
  590. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/web/frontend/src/pages/Encrypt.tsx +0 -0
  591. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/web/frontend/src/pages/Flows.tsx +0 -0
  592. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/web/frontend/src/pages/Jobs.tsx +0 -0
  593. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/web/frontend/src/pages/JobsAll.tsx +0 -0
  594. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/web/frontend/src/pages/Lineage.tsx +0 -0
  595. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/web/frontend/src/pages/LocalAi.tsx +0 -0
  596. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/web/frontend/src/pages/Members.tsx +0 -0
  597. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/web/frontend/src/pages/Org.tsx +0 -0
  598. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/web/frontend/src/pages/Projects.tsx +0 -0
  599. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/web/frontend/src/pages/Schedules.tsx +0 -0
  600. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/web/frontend/src/pages/Search.tsx +0 -0
  601. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/web/frontend/src/pages/SemanticLayer.tsx +0 -0
  602. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/web/frontend/src/pages/SemanticLayerDialogs.tsx +0 -0
  603. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/web/frontend/src/pages/Sharing.tsx +0 -0
  604. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/web/frontend/src/pages/Storage.tsx +0 -0
  605. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/web/frontend/src/pages/Streams.tsx +0 -0
  606. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/web/frontend/src/pages/Tokens.tsx +0 -0
  607. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/web/frontend/src/pages/TokensAll.tsx +0 -0
  608. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/web/frontend/src/pages/Workspaces.tsx +0 -0
  609. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/web/frontend/src/pages/jobsShared.tsx +0 -0
  610. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/web/frontend/src/pages/storageSel.test.ts +0 -0
  611. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/web/frontend/src/pages/tokensShared.test.ts +0 -0
  612. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/web/frontend/src/pages/tokensShared.tsx +0 -0
  613. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/web/frontend/src/router.test.ts +0 -0
  614. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/web/frontend/src/router.ts +0 -0
  615. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/web/frontend/src/state.tsx +0 -0
  616. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/web/frontend/src/theme.tsx +0 -0
  617. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/web/frontend/src/types.ts +0 -0
  618. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/web/frontend/src/useHashSelection.ts +0 -0
  619. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/web/frontend/src/whatsnew.ts +0 -0
  620. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/web/frontend/tailwind.config.ts +0 -0
  621. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/web/frontend/tsconfig.json +0 -0
  622. {keboola_cli-0.96.2 → keboola_cli-0.98.0}/web/frontend/vite.config.ts +0 -0
@@ -627,8 +627,37 @@ kbagent storage table-detail --project NAME --table-id ID [--branch ID]
627
627
  kbagent storage create-bucket --project NAME --stage STAGE --name NAME [--description D] [--backend B] [--branch ID]
628
628
  kbagent storage create-table --project NAME --bucket-id ID --name NAME [--column COL:TYPE[(length)] ...] [--primary-key COL] [--not-null COL ...] [--default NAME=VALUE ...] [--source-table-id ID] [--source-branch-id N] [--time-partitioning-type DAY|HOUR|MONTH|YEAR] [--time-partitioning-field COL] [--time-partitioning-expiration-ms MS] [--range-partitioning-field COL --range-partitioning-start S --range-partitioning-end E --range-partitioning-interval I] [--clustering-field COL ...] [--branch ID] [--if-not-exists]
629
629
  # --column XOR --source-table-id (0.66.0+, BigQuery only): --source-table-id copies an existing table's data into the requested partition/clustering layout (schema derived from source) -> swap into place with swap-tables. Partition/clustering flags work in both modes (BigQuery only); time vs range partitioning are mutually exclusive. A non-BigQuery project fails fast (pre-flight backend check).
630
- kbagent storage upload-table --project NAME --table-id ID --file PATH [--incremental] [--branch ID]
631
- kbagent storage download-table --project NAME --table-id ID [--output FILE] [--columns COL ...] [--limit N] [--where-column COL --where-value VAL ... [--where-operator eq|neq]] [--changed-since WHEN] [--changed-until WHEN] [--branch ID]
630
+ kbagent storage upload-table --project NAME --table-id ID --file PATH [--incremental] [--delimiter D] [--enclosure E] [--no-auto-create] [--wait/--no-wait] [--timeout SECONDS] [--branch ID] [--progress]
631
+ # upload-table / file-upload cloud upload (#834): on AWS stacks a file above 64 MiB goes up as an S3
632
+ # MULTIPART upload -- 64 MiB parts (auto-scaled so the file fits in 10,000 parts), 4 in parallel,
633
+ # per-part retry on 429/5xx/transport errors, peak memory ~4 x part size. Before, the whole file was
634
+ # read into RAM and sent as one PutObject (hard 5 GiB ceiling). Also covers the SDK
635
+ # Client.upload_table. Azure/GCP stacks unchanged (they already stream; chunked upload there is a
636
+ # follow-up in #834). Limits: S3 federation credentials last 12 h (200 GB needs ~5 MB/s sustained);
637
+ # the source file must not change during the upload (size/mtime checked); no resume across runs; an
638
+ # aborted multipart upload may leave orphaned parts (the token cannot abort). A .csv.gz is uploaded
639
+ # byte-for-byte and imported by Storage; auto-create reads its header through gzip. Human mode shows
640
+ # a progress bar on stderr. `serve`'s upload route streams the body to a temp file (needs temp disk
641
+ # of the file size) instead of holding it in memory.
642
+ # upload-table / load-file async import (#834): --wait (default) waits --timeout SECONDS (default 600)
643
+ # for the Storage import job; --no-wait still waits for the cloud upload, then enqueues the import and
644
+ # returns file_id / job_id / job_status (imported_rows null while pending; keys are additive). A wait
645
+ # timeout is STORAGE_JOB_TIMEOUT, exit 4, retryable=false: the import KEEPS RUNNING server-side, the
646
+ # error names job_id + file_id and `storage job-detail --job-id ID --wait`. Never re-run the upload
647
+ # while that job is waiting/processing -- an incremental re-run duplicates rows. An enqueue failure
648
+ # after the upload carries file_id -> `storage load-file --file-id` instead of re-uploading.
649
+ # Workflow: plugins/kbagent/skills/kbagent/references/large-upload-workflow.md. Version gate for this
650
+ # entry lives in gotchas.md.
651
+ kbagent storage download-table --project NAME --table-id ID [--output FILE] [--columns COL ...] [--limit N] [--where-column COL --where-value VAL ... [--where-operator eq|neq]] [--changed-since WHEN] [--changed-until WHEN] [--branch ID] [--progress]
652
+ # --progress on upload-table / file-upload / download-table / file-download / unload-table (with
653
+ # --download): ALWAYS report transfer progress on stderr -- also with --json and with no terminal.
654
+ # A terminal gets a Rich bar (percent, transferred/total, speed, elapsed, ETA); otherwise one plain line
655
+ # every 10 s plus a final line, e.g. `upload big.csv: 42.0% 4.20/10.00 GiB, 67.30 MiB/s, elapsed
656
+ # 0:01:03, ETA 0:01:27` (last line: `avg` speed + `done`/`failed`). stdout (the JSON envelope) is
657
+ # untouched. Speed/ETA use a trailing 30 s window; downloads count network (compressed) bytes and start
658
+ # the clock when the download starts, not during the export job; a sliced download with no sizes in
659
+ # its manifest shows bytes + speed only. Without the flag nothing changes: a transient bar only in
660
+ # human mode on a terminal. Terminal-only: no serve / SDK surface. Version gate in gotchas.md.
632
661
  kbagent storage add-column --project NAME --table-id ID --column COL:TYPE[(length)] [--not-null] [--default VALUE] [--branch ID]
633
662
  kbagent storage delete-table --project NAME --table-id ID [--table-id ...] [--force] [--dry-run] [--yes] [--branch ID]
634
663
  kbagent storage truncate-table --project NAME --table-id ID [--table-id ...] [--dry-run] [--yes] [--branch ID]
@@ -675,13 +704,19 @@ kbagent storage describe-migrate --project ALIAS [--table-id ID ...] [--bucket-i
675
704
  # application are still accumulated into errors[] (exit 1) -- shape is a usage error, an API
676
705
  # refusal is not.
677
706
  kbagent storage files --project NAME [--tag TAG ...] [--limit N] [--offset N] [--query Q] [--branch ID]
678
- kbagent storage file-upload --project NAME --file PATH [--name NAME] [--tag TAG ...] [--permanent] [--branch ID]
679
- kbagent storage file-download --project NAME [--file-id ID | --tag TAG ...] [--output FILE]
707
+ kbagent storage file-upload --project NAME --file PATH [--name NAME] [--tag TAG ...] [--permanent] [--branch ID] [--progress]
708
+ kbagent storage file-download --project NAME [--file-id ID | --tag TAG ...] [--output FILE] [--progress]
680
709
  kbagent storage file-detail --project NAME --file-id ID
681
710
  kbagent storage file-delete --project NAME --file-id ID [--file-id ...] [--dry-run] [--yes]
682
711
  kbagent storage file-tag --project NAME --file-id ID [--add TAG ...] [--remove TAG ...]
683
- kbagent storage load-file --project NAME --file-id ID --table-id ID [--incremental] [--delimiter D] [--enclosure E] [--branch ID]
684
- kbagent storage unload-table --project NAME --table-id ID [--columns COL ...] [--limit N] [--tag TAG ...] [--download] [--output FILE|DIR] [--file-type csv|parquet] [--branch ID]
712
+ kbagent storage load-file --project NAME --file-id ID --table-id ID [--incremental] [--delimiter D] [--enclosure E] [--wait/--no-wait] [--timeout SECONDS] [--branch ID]
713
+ kbagent storage job-detail --project NAME --job-id ID [--wait] [--timeout SECONDS]
714
+ # storage job-detail (#834): read-class; shows a Storage API job (status, operation_name, table_id,
715
+ # file_id, times, imported_rows, warnings, results, error). Exit 0 success/waiting/processing, exit 1
716
+ # STORAGE_JOB_FAILED when the job ended in error (details still returned), exit 4 on --wait timeout.
717
+ # Job ids are project-scoped, independent of the active branch (no --branch). Serve:
718
+ # GET /storage/jobs/{project}/{job_id}?wait=&timeout=. Version gate for this entry lives in gotchas.md.
719
+ kbagent storage unload-table --project NAME --table-id ID [--columns COL ...] [--limit N] [--tag TAG ...] [--download] [--output FILE|DIR] [--file-type csv|parquet] [--branch ID] [--progress]
685
720
 
686
721
  # stream: Data Streams (OpenTelemetry/OTLP). Storage token from config (no manage token).
687
722
  # Control plane = stream.<region> (derived from connection.<region>); the OTLP ingest URL
@@ -1007,6 +1042,26 @@ kbagent sync push --project ALIAS [--all-projects] [--dry-run] [--force] [--allo
1007
1042
  # what push would delete. A config/row deleted on the remote since the last pull diffs as remote_deleted and
1008
1043
  # is never re-created (it lands in skipped). Version gate in gotchas.md.
1009
1044
  # sync push workspace delete (CLI-25): in a `syncWorkspaces` tree, a `push --force` that deletes a shared SQL workspace also deletes its SQL editor sessions (every user's, push branch) and their backend workspaces, which `config restore` does not bring back; `push --dry-run --force` lists them (warnings[] workspace_sessions), a plain push lists the workspace under skipped_deletions and touches no session. `--force` is destructive-class (FLAG_ESCALATIONS `sync.push --force`), so `--deny-destructive` / a cli:destructive deny blocks it while a plain push stays write-class. Version gate for this entry lives in gotchas.md.
1045
+ # Partial failures change the exit code (#745): commands that collect per-item failures
1046
+ # and keep going exit 1 (was 0) when at least one item failed:
1047
+ # `sync push`, `sync push/pull/diff --all-projects`, `sync clone` (also `bucket_errors`),
1048
+ # `org setup`, `project refresh`, `project invite --from-csv`, `workspace gc`,
1049
+ # `semantic-layer import/promote/build/edit metric`, `storage describe-batch --json`,
1050
+ # `flow schedule-remove` (new `errors[]` key, always present, empty when nothing
1051
+ # failed; a partial failure fills it and exits 1; when every schedule delete
1052
+ # fails it still raises `SCHEDULE_DELETE_FAILED`). Only `sync push`, `sync clone`,
1053
+ # `storage describe-batch`, `storage describe-migrate` and `flow schedule-remove` print
1054
+ # a `Failed:` headline instead of a green `Success:`; the others list the failed items
1055
+ # in a table or in summary lines, and the `--all-projects` variants state the count in
1056
+ # their summary line. `sync push --all-projects` counts a project
1057
+ # whose push returned `errors[]` in `summary.failed`. The --json payload is emitted
1058
+ # BEFORE the exit; the items that succeeded stay written. A `--dry-run` of these
1059
+ # exits 1 when it reports a failed item, like the real run. `sync diff --all-projects`
1060
+ # exits 1 when a project failed. Other read-only fan-outs (`billing credits`, `job list`,
1061
+ # `schedule list`, ...) still exit 0. The helper is `item_failure_exit_code()` in
1062
+ # commands/_helpers.py (returns the code, the caller raises). Version gate for this
1063
+ # entry lives in gotchas.md -- the placeholder cannot be written on these `# ` comment
1064
+ # lines (check_version_gates.py parses them as ATX markdown headings).
1010
1065
  # sync push (since 0.91.0, #686): the manifest baseline `pull_config_hash` is stamped from the API
1011
1066
  # response (or a read-back), never from disk -- push-deployed multi-statement SQL transformations
1012
1067
  # (and anything disabled in the UI whose local YAML lacks `is_disabled`) no longer show permanent
@@ -1054,7 +1109,7 @@ kbagent dev-portal deprecate --app VENDOR.APP_ID [--identity A] [--dry-run]
1054
1109
  kbagent encrypt values --project ALIAS --component-id ID --input JSON|@file|- [--output-file PATH]
1055
1110
 
1056
1111
  kbagent semantic-layer model list --project P
1057
- kbagent semantic-layer model create --project P --name N [--description D] [--sql-dialect Snowflake]
1112
+ kbagent semantic-layer model create --project P --name N [--description D] [--sql-dialect Snowflake] [--scope project|organization|targeted] [--target-project ALIAS|ID ...]
1058
1113
  kbagent semantic-layer model delete --project P --model M [--yes]
1059
1114
  kbagent semantic-layer show --project P [--model M] [--type dataset|metric|relationship|constraint|glossary]
1060
1115
  kbagent semantic-layer search-context --project P [--pattern G ...] [--type model|dataset|metric|relationship|constraint|glossary|all] [--limit N]
@@ -1077,7 +1132,7 @@ kbagent semantic-layer add dataset --project P [--model M] --name N --table-id T
1077
1132
  # --overwrite. Version gate lives in gotchas.md (no `(since vNEXT)` on `# ` lines).
1078
1133
  kbagent semantic-layer add relationship --project P [--model M] --name N --from TABLE_ID --to TABLE_ID --on EXPR [--type left|inner]
1079
1134
  kbagent semantic-layer add constraint --project P [--model M] --name N --constraint-type inequality|equality|range|composition|exclusion|temporal|conditional --rule "EXPR" --metrics M1,M2 [--severity error|warning|info]
1080
- kbagent semantic-layer add glossary --project P [--model M] --term TERM [--definition D]
1135
+ kbagent semantic-layer add glossary --project P [--model M] --term TERM --definition D
1081
1136
  kbagent semantic-layer edit metric --project P [--model M] --name N [--new-name N2] [--new-sql SQL] [--new-dataset TABLE_ID] [--new-description D] [--yes]
1082
1137
  kbagent semantic-layer edit dataset --project P [--model M] --name N [--new-name N2] [--new-description D] [--new-grain G]
1083
1138
  kbagent semantic-layer edit constraint --project P [--model M] --name N [--new-name N2] [--new-rule "EXPR"] [--new-constraint-type T] [--new-severity error|warning|info] [--new-metrics M1,M2]
@@ -1088,23 +1143,67 @@ kbagent semantic-layer remove dataset --project P [--model M] --name N [--yes]
1088
1143
  kbagent semantic-layer remove constraint --project P [--model M] --name N [--yes]
1089
1144
  kbagent semantic-layer remove relationship --project P [--model M] --name N [--yes]
1090
1145
  kbagent semantic-layer remove glossary --project P [--model M] --term TERM [--yes]
1091
- kbagent semantic-layer import --project P --file PATH [--model M] [--types T,T,...] [--dry-run] [--yes] [--overwrite]
1092
- kbagent semantic-layer promote --from-project A --to-project B [--from-model M] [--to-model M] [--types T,T,...] [--dry-run] [--yes]
1146
+ kbagent semantic-layer import --project P --file PATH [--model M] [--types T,T,...] [--dry-run] [--yes] [--overwrite] [--scope project|organization|targeted] [--target-project ALIAS|ID ...]
1147
+ kbagent semantic-layer promote --from-project A --to-project B [--from-model M] [--to-model M] [--types T,T,...] [--dry-run] [--yes] [--scope project|organization|targeted] [--target-project ALIAS|ID ...]
1093
1148
  kbagent semantic-layer build --project P [--model M] --tables T,T,... [--name N] [--dry-run] [--keep-on-failure] [--output PATH]
1094
1149
  kbagent semantic-layer token --encrypt --project P --component-id C
1150
+ # scope (PSGO-140, new): visibility scope for a semantic-layer item -- "project"
1151
+ # (owner only), "organization" (every project in the org), or "targeted" (owner +
1152
+ # explicit --target-project grants). --scope/--target-project are also accepted by `model
1153
+ # create` and every `add <kind>` above. --scope omitted: `model create` makes a "project"
1154
+ # item, `add <kind>` INHERITS its model's scope (an org-level model gets org-level children;
1155
+ # a targeted model, its target projects); an inherited organization scope is permission-gated
1156
+ # like a typed one, and a non-org-admin gets a 403 on it (pass --scope project). `import`,
1157
+ # `promote` and `build --model` create their NEW items at the target model's scope the same way
1158
+ # (same gate: FLAG_ESCALATIONS `semantic-layer.import|promote|build --scope organization`);
1159
+ # `import` / `promote --scope` (+ --target-project) override it, e.g. `--scope project` for a
1160
+ # non-org-admin under an org-level model; items they overwrite keep their own scope. Item names are unique per object type across ALL
1161
+ # models of a project (ALREADY_EXISTS says "in this project"), so a model cannot be copied into
1162
+ # a second model of the same project under the same item names. An item stored at schema version
1163
+ # 1.0.0 (created before 0.97.0) cannot be elevated: the error names the stored version and the
1164
+ # fix (export, delete, create again, import). --target-project takes a registered alias OR a
1165
+ # numeric project ID (repeatable or comma-separated; an alias must be on the owner's stack);
1166
+ # without --scope targeted it exits 2. With --scope targeted and no --target-project: a real
1167
+ # terminal launches an interactive picker over the other projects on the stack; --json fails
1168
+ # fast (exit 2). A bad alias/ID/--scope/--type is a usage error (exit 2), never a traceback.
1169
+ # Creating directly at --scope organization requires the organization-admin ROLE (403
1170
+ # otherwise) -- an ordinary token instead uses `scope request-create` + an org-admin's
1171
+ # `scope set --scope organization`. Elevation is ONE-WAY (no downgrade endpoint), which is why
1172
+ # every `--scope organization` (here and on `model create` / `add <kind>`) is destructive-class
1173
+ # (FLAG_ESCALATIONS). `edit`, `import --overwrite` and `promote` update in place (PUT): an item
1174
+ # keeps its id, scope, grants and pending elevation request. `scope add|remove` merge into the
1175
+ # grants client-side (not atomic; refused from a project that does not own the item, because
1176
+ # the server hides the grants from a non-owner -- use `scope set --target-project` there).
1177
+ # Verbs follow the CLI spec (#791): get / add / remove / set / request-create / request-delete /
1178
+ # request-list; `scope set` takes exactly ONE of --scope organization, --target-project (replace
1179
+ # the whole list) or --clear.
1180
+ kbagent semantic-layer scope get --project P --type model|dataset|metric|relationship|constraint|glossary --context-id ID
1181
+ kbagent semantic-layer scope add --project P --type T --context-id ID --target-project ALIAS|ID [--target-project ...]
1182
+ kbagent semantic-layer scope remove --project P --type T --context-id ID --target-project ALIAS|ID [--target-project ...]
1183
+ kbagent semantic-layer scope set --project P --type T --context-id ID (--scope organization | --target-project ALIAS|ID [...] | --clear) [--dry-run] [--yes]
1184
+ kbagent semantic-layer scope request-create --project P --type T --context-id ID
1185
+ kbagent semantic-layer scope request-delete --project P --type T --context-id ID
1186
+ kbagent semantic-layer scope request-list --project P --type T [--limit N] [--offset N]
1187
+ # scope over `kbagent serve`: GET/PUT /semantic-layer/scope/{context_id}, POST/DELETE
1188
+ # .../target-projects, PUT/DELETE .../elevation-request, GET /semantic-layer/scope/elevation-requests;
1189
+ # POST /semantic-layer/models and /items/{kind} take `scope` + `target_projects`.
1095
1190
  kbagent semantic-layer reference-data list --project P [--model M]
1096
1191
  kbagent semantic-layer reference-data get --project P (--id ID | --dimension D)
1097
1192
  kbagent semantic-layer reference-data set --project P [--model M] --dimension D --members-file PATH [--dataset-id T] [--description X]
1098
1193
  kbagent semantic-layer reference-data delete --project P --id ID [--yes]
1099
1194
  # Alias: `kbagent sl ...` (hidden) is equivalent to `kbagent semantic-layer ...`.
1100
- # semantic-layer REQUIRES A MASTER (project admin) Storage token (#711): the Metastore's
1101
- # auth gate -- unlike the Storage API -- rejects every valid non-master token with an opaque
1102
- # 401 "Failed to create project scope" (the underlying MasterTokenRequiredError is swallowed
1103
- # server-side). kbagent reclassifies exactly that 401 to MISSING_MASTER_TOKEN (exit 3) with
1104
- # the remedy; other unexplained 401s anywhere map to AUTH_REJECTED instead of the false
1105
- # "Invalid or expired token" (INVALID_TOKEN stays for 401s that DO blame the credential).
1106
- # Version gate for this entry lives in gotchas.md -- `(since vNEXT)` cannot be written on
1107
- # these `# ` comment lines (check_version_gates.py parses them as ATX headings).
1195
+ # semantic-layer READS work with any valid, non-disabled, non-expired Storage token
1196
+ # (0.97.0, PSGO-282): the Metastore no longer requires a master token for GET/List. WRITES
1197
+ # (add/edit/remove/import/promote/build/scope add|remove|set) still need a project-admin token
1198
+ # (master token or any admin-role user token) -- a non-admin token 403s on the write. Before
1199
+ # PSGO-282 the Metastore's auth gate rejected EVERY valid non-master token, including reads,
1200
+ # with an opaque 401 "Failed to create project scope" (#711, MasterTokenRequiredError swallowed
1201
+ # server-side); kbagent still reclassifies exactly that 401 to MISSING_MASTER_TOKEN (exit 3) as
1202
+ # a safety net for a deployment that predates the fix. Other unexplained 401s anywhere map to
1203
+ # AUTH_REJECTED instead of the false "Invalid or expired token" (INVALID_TOKEN stays for 401s
1204
+ # that DO blame the credential). Version gate for this entry lives in gotchas.md -- `(since
1205
+ # 0.97.0)` cannot be written on these `# ` comment lines (check_version_gates.py parses them as
1206
+ # ATX headings).
1108
1207
 
1109
1208
  kbagent http get PATH [--timeout SECONDS]
1110
1209
  kbagent http post PATH [--body JSON|@file|-] [--timeout SECONDS]
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: keboola-cli
3
- Version: 0.96.2
3
+ Version: 0.98.0
4
4
  Summary: AI-friendly CLI for managing Keboola projects
5
5
  Author-email: Keboola <dev@keboola.com>
6
6
  License-Expression: Apache-2.0
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "keboola-cli"
3
- version = "0.96.2"
3
+ version = "0.98.0"
4
4
  description = "AI-friendly CLI for managing Keboola projects"
5
5
  readme = "README.md"
6
6
  requires-python = ">=3.12"
@@ -10,6 +10,7 @@ from .result_models import (
10
10
  JobResult,
11
11
  QueryResult,
12
12
  ScopedTokenResult,
13
+ StorageJobResult,
13
14
  StreamSourceResult,
14
15
  SyncPushResult,
15
16
  TokenListEntryResult,
@@ -32,6 +33,7 @@ __all__ = [
32
33
  "JobResult",
33
34
  "QueryResult",
34
35
  "ScopedTokenResult",
36
+ "StorageJobResult",
35
37
  "StreamSourceResult",
36
38
  "SyncPushResult",
37
39
  "TokenListEntryResult",
@@ -26,6 +26,60 @@ from .constants import CHANGELOG_HEADLINE_MAX_CHARS
26
26
 
27
27
  # Ordered newest-first. Each value is a list of brief one-line descriptions.
28
28
  CHANGELOG: dict[str, list[str]] = {
29
+ "0.98.0": [
30
+ "New (#837): `storage upload-table` and `file-upload` now upload large files to AWS "
31
+ "stacks in parts, so files over 5 GB work and memory stays flat. Files above 64 MiB are "
32
+ "sent as an S3 multipart upload: 64 MiB parts, four in parallel, each part retried on "
33
+ "its own. Before, kbagent read the whole file into memory and S3 refused anything over "
34
+ "5 GB. In a test, a 10 GB file that 0.97.0 could not upload (it used 10 GB of memory and "
35
+ "then failed) uploaded in about four minutes with under 350 MB of memory. A `.csv.gz` "
36
+ "file is uploaded as it is. Azure and GCP stacks are unchanged.",
37
+ "New (#837): `storage upload-table` and `load-file` can queue the import without waiting "
38
+ "for it, and the new `storage job-detail` command follows the import. `--no-wait` "
39
+ "returns `job_id` and `file_id` as soon as the import is queued; `--timeout` sets how "
40
+ "long the default `--wait` waits. `storage job-detail --job-id ID [--wait]` shows the "
41
+ "status, the table and the imported rows. When the wait times out, the error says the "
42
+ "import keeps running, names the job, and is no longer marked retryable, so a long "
43
+ "upload is not repeated by mistake. `kbagent serve` (`GET /storage/jobs/{project}/"
44
+ "{job_id}`) and the SDK (`Client.storage_job()`) have the same functions.",
45
+ "New (#837): `--progress` shows percent, speed, elapsed time and time left for storage "
46
+ "uploads and downloads. It works on `storage upload-table`, `file-upload`, "
47
+ "`download-table`, `file-download` and `unload-table --download`, and writes to stderr, also with `--json`: a progress bar in "
48
+ "a terminal, otherwise one line every 10 seconds.",
49
+ "Fix (#837): `storage download-table --keep-slices`, `file-download` and `unload-table` "
50
+ "now keep every slice file inside the output directory. A slice name from the export manifest that "
51
+ "could point outside it (`..`, a backslash, a drive letter) is replaced by "
52
+ "`part-NNNNN`.",
53
+ "Fix (#747): commands that process several items now exit 1 and print `Failed:` when "
54
+ "an item fails. Before, `sync push`, `sync clone`, `org setup`, `project refresh`, "
55
+ "`workspace gc`, several `semantic-layer` commands, `storage describe-batch --json`, "
56
+ "`flow schedule-remove` and others printed `Success:` and exited 0 even when items "
57
+ "failed. A `--dry-run` that reports a failed item exits 1 too. The `--json` output "
58
+ "keeps its keys, with a few additions such as `errors[]` in `flow schedule-remove`.",
59
+ "Fix (#836): `semantic-layer import`, `promote` and `build --model` now give new items "
60
+ "the scope of the target model. Before, they created every item at `project` scope, "
61
+ "also in a shared model, so the other projects could not see it. Items they overwrite "
62
+ "keep their own scope. Duplicate-name and elevation errors now say what is wrong and "
63
+ "how to fix it.",
64
+ "Change (#836): `semantic-layer add glossary` now requires `--definition`. Without it the "
65
+ "Metastore always rejected the item with a bare 422 error, so no working call breaks.",
66
+ ],
67
+ "0.97.0": [
68
+ "New (#715): semantic-layer items can now be shared with chosen projects or with the "
69
+ "whole organization, not only kept in the owning project (AI-3790). `model create` and "
70
+ "every `add <kind>` take `--scope project|targeted|organization` and `--target-project` "
71
+ "(a registered alias or a project ID). The new `semantic-layer scope` command group "
72
+ "shows and changes who sees an existing item: `get`, `add`, `remove` and `set`, plus "
73
+ "`request-create`, `request-delete` and `request-list` for requests to make an item "
74
+ "organization-wide. Without `--scope`, `model create` keeps the model in its project, "
75
+ "and `add <kind>` uses the scope of its model. Making an item organization-wide needs "
76
+ "the organization-admin role and cannot be reverted, so `--deny-destructive` blocks it. "
77
+ "`kbagent serve` has the same functions under `/semantic-layer/scope`.",
78
+ "Fix (#715): `semantic-layer edit`, `import --overwrite` and `promote` now update an item "
79
+ "in place, so it keeps its ID, its visibility and its history. Before, they deleted the "
80
+ "item and created it again with a new ID. A failed update changes nothing, so the "
81
+ "`rollback` field in the result is now always `null`.",
82
+ ],
29
83
  "0.96.2": [
30
84
  "Fix (#825): the `data-app` commands now label the app link `Open the app:` and the "
31
85
  "Keboola UI link `Configuration:`, so it is clear which link opens what. Before, the "
@@ -16,6 +16,7 @@ import time # noqa: F401 -- re-exported: tests patch keboola_agent_cli.client.
16
16
 
17
17
  from ..constants import QUERY_RESULTS_PAGE_SIZE
18
18
  from ._client import KeboolaClient
19
+ from ._core import storage_job_error_message
19
20
  from ._transfer import (
20
21
  InlineQueryResult,
21
22
  _assert_safe_download_url,
@@ -27,11 +28,13 @@ from ._transfer import (
27
28
  _iter_poll_intervals,
28
29
  _unwrap_bigquery_error,
29
30
  )
31
+ from .storage_tables import TableUploadOutcome
30
32
 
31
33
  __all__ = [
32
34
  "QUERY_RESULTS_PAGE_SIZE",
33
35
  "InlineQueryResult",
34
36
  "KeboolaClient",
37
+ "TableUploadOutcome",
35
38
  "_CloudDownloader",
36
39
  "_assert_safe_download_url",
37
40
  "_build_abs_upload_url",
@@ -40,4 +43,5 @@ __all__ = [
40
43
  "_extract_query_job_error",
41
44
  "_iter_poll_intervals",
42
45
  "_unwrap_bigquery_error",
46
+ "storage_job_error_message",
43
47
  ]
@@ -16,13 +16,18 @@ from typing import Any, Self
16
16
 
17
17
  import httpx
18
18
 
19
- from ..constants import DEFAULT_TIMEOUT, STORAGE_JOB_MAX_WAIT, STORAGE_JOB_POLL_INTERVAL
19
+ from ..constants import (
20
+ DEFAULT_TIMEOUT,
21
+ IMPORT_JOB_MAX_WAIT,
22
+ STORAGE_JOB_MAX_WAIT,
23
+ STORAGE_JOB_POLL_INTERVAL,
24
+ )
20
25
  from ..errors import ErrorCode, KeboolaApiError
21
26
  from ..http_base import BaseHttpClient
22
27
  from ..stream_client import StreamClient
23
28
 
24
29
 
25
- def _storage_job_error_message(job: dict[str, Any]) -> str:
30
+ def storage_job_error_message(job: dict[str, Any]) -> str:
26
31
  """Best-effort human message out of a failed Storage job's ``error`` field.
27
32
 
28
33
  Written tolerantly on purpose. An API ``error`` field is not reliably a
@@ -278,6 +283,8 @@ class _CoreClient(BaseHttpClient):
278
283
  self,
279
284
  job: dict[str, Any],
280
285
  max_wait: float | None = None,
286
+ *,
287
+ raise_on_error: bool = True,
281
288
  ) -> dict[str, Any]:
282
289
  """Poll a Storage API job until it reaches a terminal state.
283
290
 
@@ -309,12 +316,20 @@ class _CoreClient(BaseHttpClient):
309
316
  ``STORAGE_JOB_MAX_WAIT``. Callers whose jobs are legitimately
310
317
  slower pass their own budget -- e.g. a workspace load moving
311
318
  gigabytes (``WORKSPACE_LOAD_JOB_MAX_WAIT``).
319
+ raise_on_error: When False, a job that ended in ``error`` is
320
+ returned like a successful one instead of raising
321
+ ``STORAGE_JOB_FAILED`` -- for a caller that reports the job
322
+ itself (``storage job-detail --wait``) and would otherwise
323
+ lose every field but the message.
312
324
 
313
325
  Returns:
314
- Completed job dict (with results on success).
326
+ Terminal job dict (with results on success; with ``error`` when
327
+ ``raise_on_error`` is False and the job failed).
315
328
 
316
329
  Raises:
317
- KeboolaApiError: If the job fails or times out.
330
+ KeboolaApiError: If the job fails (unless ``raise_on_error`` is
331
+ False) or the budget runs out. The timeout carries
332
+ ``details={"job_id": ...}``.
318
333
  """
319
334
  budget = STORAGE_JOB_MAX_WAIT if max_wait is None else max_wait
320
335
  job_id = job.get("id")
@@ -324,8 +339,10 @@ class _CoreClient(BaseHttpClient):
324
339
  if status == "success":
325
340
  return job
326
341
  if status == "error":
342
+ if not raise_on_error:
343
+ return job
327
344
  raise KeboolaApiError(
328
- message=_storage_job_error_message(job),
345
+ message=storage_job_error_message(job),
329
346
  status_code=500,
330
347
  error_code=ErrorCode.STORAGE_JOB_FAILED,
331
348
  retryable=False,
@@ -351,4 +368,43 @@ class _CoreClient(BaseHttpClient):
351
368
  status_code=504,
352
369
  error_code=ErrorCode.STORAGE_JOB_TIMEOUT,
353
370
  retryable=True,
371
+ details={"job_id": job_id},
372
+ )
373
+
374
+ def get_storage_job(self, job_id: int | str) -> dict[str, Any]:
375
+ """Fetch one Storage API job (``GET /v2/storage/jobs/{id}``).
376
+
377
+ Job IDs are project-scoped and branch-independent: the route has no
378
+ ``/branch/{id}`` variant, so no branch is taken here.
379
+
380
+ Args:
381
+ job_id: Storage job ID (as returned by any async Storage write).
382
+
383
+ Returns:
384
+ The raw job dict (``id``, ``status``, ``operationName``,
385
+ ``operationParams``, ``results``, ``error``, timestamps, ...).
386
+ """
387
+ return self._request("GET", f"/v2/storage/jobs/{job_id}").json()
388
+
389
+ def follow_storage_job(
390
+ self, job_id: int | str, max_wait: float | None = None
391
+ ) -> dict[str, Any]:
392
+ """Fetch a Storage job and poll it to a terminal state.
393
+
394
+ Unlike the write paths, a job that ended in ``error`` is RETURNED, not
395
+ raised: the caller asked about the job, and the error is part of the
396
+ answer. A job already terminal costs exactly one GET.
397
+
398
+ Args:
399
+ job_id: Storage job ID.
400
+ max_wait: Seconds to poll. ``None`` means ``IMPORT_JOB_MAX_WAIT``
401
+ -- the jobs worth following by hand are the long imports.
402
+
403
+ Raises:
404
+ KeboolaApiError: ``STORAGE_JOB_TIMEOUT`` when the budget runs out
405
+ (the job keeps running; following it again is safe).
406
+ """
407
+ budget = IMPORT_JOB_MAX_WAIT if max_wait is None else max_wait
408
+ return self._wait_for_storage_job(
409
+ self.get_storage_job(job_id), max_wait=budget, raise_on_error=False
354
410
  )