keboola-cli 0.100.3__tar.gz → 0.100.4__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 (672) hide show
  1. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/PKG-INFO +1 -1
  2. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/pyproject.toml +1 -1
  3. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/src/keboola_agent_cli/changelog.py +10 -0
  4. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/src/keboola_agent_cli/services/_sync_writeback.py +9 -1
  5. keboola_cli-0.100.4/tests/test_sync_push_companion_hashes.py +137 -0
  6. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/tests/test_sync_service.py +9 -1
  7. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/.gitignore +0 -0
  8. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/CLAUDE.md +0 -0
  9. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/CONTRIBUTING.md +0 -0
  10. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/LICENSE +0 -0
  11. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/Makefile +0 -0
  12. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/README.md +0 -0
  13. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/examples/README.md +0 -0
  14. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/examples/storage_tui/README.md +0 -0
  15. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/formal/sync/README.md +0 -0
  16. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/plugins/kbagent/.claude-plugin/CLAUDE.md +0 -0
  17. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/plugins/kbagent/skills/kbagent-cicd-migration/scripts/migrate_cicd.py +0 -0
  18. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/plugins/kbagent/skills/kbagent-promotion-pipeline/scripts/generate_promotion_pipeline.py +0 -0
  19. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/scripts/check_cli_spec.py +0 -0
  20. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/scripts/check_command_sync.py +0 -0
  21. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/scripts/check_error_codes.py +0 -0
  22. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/scripts/check_file_size.py +0 -0
  23. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/scripts/check_release_scope.py +0 -0
  24. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/scripts/check_sentinel_guards.py +0 -0
  25. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/scripts/check_version_gates.py +0 -0
  26. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/scripts/check_wheel_ui.py +0 -0
  27. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/scripts/cli_spec_baseline.json +0 -0
  28. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/scripts/debug_linkedby_type.sh +0 -0
  29. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/scripts/file_size_baseline.json +0 -0
  30. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/scripts/gen_command_reference.py +0 -0
  31. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/scripts/gen_endpoint_reference.py +0 -0
  32. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/scripts/gen_release_notes.py +0 -0
  33. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/scripts/generate_changelog.py +0 -0
  34. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/scripts/generate_skill.py +0 -0
  35. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/scripts/hatch_build.py +0 -0
  36. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/scripts/lineage_deep.py +0 -0
  37. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/scripts/post-edit-quality.sh +0 -0
  38. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/scripts/pre-commit +0 -0
  39. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/scripts/release_latest.py +0 -0
  40. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/scripts/sync_version.py +0 -0
  41. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/scripts/web-dev.sh +0 -0
  42. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/src/keboola_agent_cli/__init__.py +0 -0
  43. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/src/keboola_agent_cli/__main__.py +0 -0
  44. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/src/keboola_agent_cli/ai_client.py +0 -0
  45. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/src/keboola_agent_cli/auth/__init__.py +0 -0
  46. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/src/keboola_agent_cli/auth/auth_client.py +0 -0
  47. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/src/keboola_agent_cli/auth/device.py +0 -0
  48. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/src/keboola_agent_cli/auth/environment.py +0 -0
  49. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/src/keboola_agent_cli/auth/models.py +0 -0
  50. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/src/keboola_agent_cli/auth/pkce.py +0 -0
  51. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/src/keboola_agent_cli/auth/sentinel.py +0 -0
  52. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/src/keboola_agent_cli/auth/state_store.py +0 -0
  53. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/src/keboola_agent_cli/auth/token_provider.py +0 -0
  54. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/src/keboola_agent_cli/auth/totp.py +0 -0
  55. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/src/keboola_agent_cli/auto_update.py +0 -0
  56. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/src/keboola_agent_cli/cli.py +0 -0
  57. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/src/keboola_agent_cli/client/__init__.py +0 -0
  58. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/src/keboola_agent_cli/client/_client.py +0 -0
  59. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/src/keboola_agent_cli/client/_core.py +0 -0
  60. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/src/keboola_agent_cli/client/_s3_multipart.py +0 -0
  61. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/src/keboola_agent_cli/client/_transfer.py +0 -0
  62. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/src/keboola_agent_cli/client/billing.py +0 -0
  63. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/src/keboola_agent_cli/client/branches.py +0 -0
  64. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/src/keboola_agent_cli/client/configs.py +0 -0
  65. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/src/keboola_agent_cli/client/editor.py +0 -0
  66. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/src/keboola_agent_cli/client/merge_requests.py +0 -0
  67. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/src/keboola_agent_cli/client/misc.py +0 -0
  68. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/src/keboola_agent_cli/client/notifications.py +0 -0
  69. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/src/keboola_agent_cli/client/query.py +0 -0
  70. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/src/keboola_agent_cli/client/queue.py +0 -0
  71. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/src/keboola_agent_cli/client/storage_files.py +0 -0
  72. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/src/keboola_agent_cli/client/storage_tables.py +0 -0
  73. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/src/keboola_agent_cli/client/stream.py +0 -0
  74. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/src/keboola_agent_cli/client/tokens.py +0 -0
  75. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/src/keboola_agent_cli/client/triggers.py +0 -0
  76. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/src/keboola_agent_cli/client/workspaces.py +0 -0
  77. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/src/keboola_agent_cli/commands/__init__.py +0 -0
  78. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/src/keboola_agent_cli/commands/_all_projects.py +0 -0
  79. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/src/keboola_agent_cli/commands/_auth_picker.py +0 -0
  80. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/src/keboola_agent_cli/commands/_checkbox_select.py +0 -0
  81. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/src/keboola_agent_cli/commands/_config_clone_cmd.py +0 -0
  82. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/src/keboola_agent_cli/commands/_config_oauth.py +0 -0
  83. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/src/keboola_agent_cli/commands/_config_trash_cmd.py +0 -0
  84. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/src/keboola_agent_cli/commands/_config_variables_render.py +0 -0
  85. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/src/keboola_agent_cli/commands/_data_app_git.py +0 -0
  86. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/src/keboola_agent_cli/commands/_data_app_password.py +0 -0
  87. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/src/keboola_agent_cli/commands/_data_app_runtime.py +0 -0
  88. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/src/keboola_agent_cli/commands/_flow_triggers.py +0 -0
  89. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/src/keboola_agent_cli/commands/_helpers.py +0 -0
  90. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/src/keboola_agent_cli/commands/_lineage_build_output.py +0 -0
  91. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/src/keboola_agent_cli/commands/_lineage_tree.py +0 -0
  92. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/src/keboola_agent_cli/commands/_merge_request_common.py +0 -0
  93. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/src/keboola_agent_cli/commands/_merge_request_render.py +0 -0
  94. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/src/keboola_agent_cli/commands/_merge_request_writes.py +0 -0
  95. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/src/keboola_agent_cli/commands/_metadata_input.py +0 -0
  96. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/src/keboola_agent_cli/commands/_progress.py +0 -0
  97. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/src/keboola_agent_cli/commands/_project_create.py +0 -0
  98. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/src/keboola_agent_cli/commands/_project_pin.py +0 -0
  99. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/src/keboola_agent_cli/commands/_project_ref.py +0 -0
  100. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/src/keboola_agent_cli/commands/_semantic_layer_crud.py +0 -0
  101. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/src/keboola_agent_cli/commands/_semantic_layer_helpers.py +0 -0
  102. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/src/keboola_agent_cli/commands/_semantic_layer_reference_data.py +0 -0
  103. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/src/keboola_agent_cli/commands/_semantic_layer_scope.py +0 -0
  104. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/src/keboola_agent_cli/commands/_storage_delete.py +0 -0
  105. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/src/keboola_agent_cli/commands/_storage_describe.py +0 -0
  106. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/src/keboola_agent_cli/commands/_storage_jobs.py +0 -0
  107. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/src/keboola_agent_cli/commands/_storage_snapshots.py +0 -0
  108. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/src/keboola_agent_cli/commands/_storage_table_detail.py +0 -0
  109. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/src/keboola_agent_cli/commands/_storage_tables_render.py +0 -0
  110. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/src/keboola_agent_cli/commands/_sync_clone_render.py +0 -0
  111. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/src/keboola_agent_cli/commands/_sync_push_render.py +0 -0
  112. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/src/keboola_agent_cli/commands/_url_copy.py +0 -0
  113. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/src/keboola_agent_cli/commands/agent.py +0 -0
  114. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/src/keboola_agent_cli/commands/auth.py +0 -0
  115. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/src/keboola_agent_cli/commands/billing.py +0 -0
  116. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/src/keboola_agent_cli/commands/branch.py +0 -0
  117. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/src/keboola_agent_cli/commands/changelog.py +0 -0
  118. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/src/keboola_agent_cli/commands/component.py +0 -0
  119. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/src/keboola_agent_cli/commands/config.py +0 -0
  120. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/src/keboola_agent_cli/commands/config_state.py +0 -0
  121. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/src/keboola_agent_cli/commands/context.py +0 -0
  122. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/src/keboola_agent_cli/commands/data_app.py +0 -0
  123. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/src/keboola_agent_cli/commands/dev_portal.py +0 -0
  124. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/src/keboola_agent_cli/commands/docs.py +0 -0
  125. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/src/keboola_agent_cli/commands/doctor.py +0 -0
  126. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/src/keboola_agent_cli/commands/encrypt.py +0 -0
  127. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/src/keboola_agent_cli/commands/feature.py +0 -0
  128. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/src/keboola_agent_cli/commands/flow.py +0 -0
  129. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/src/keboola_agent_cli/commands/http_client.py +0 -0
  130. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/src/keboola_agent_cli/commands/init.py +0 -0
  131. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/src/keboola_agent_cli/commands/job.py +0 -0
  132. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/src/keboola_agent_cli/commands/kai.py +0 -0
  133. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/src/keboola_agent_cli/commands/lineage.py +0 -0
  134. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/src/keboola_agent_cli/commands/merge_request.py +0 -0
  135. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/src/keboola_agent_cli/commands/notification.py +0 -0
  136. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/src/keboola_agent_cli/commands/org.py +0 -0
  137. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/src/keboola_agent_cli/commands/permissions.py +0 -0
  138. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/src/keboola_agent_cli/commands/project.py +0 -0
  139. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/src/keboola_agent_cli/commands/repl.py +0 -0
  140. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/src/keboola_agent_cli/commands/schedule.py +0 -0
  141. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/src/keboola_agent_cli/commands/search.py +0 -0
  142. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/src/keboola_agent_cli/commands/semantic_layer.py +0 -0
  143. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/src/keboola_agent_cli/commands/serve.py +0 -0
  144. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/src/keboola_agent_cli/commands/sharing.py +0 -0
  145. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/src/keboola_agent_cli/commands/storage.py +0 -0
  146. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/src/keboola_agent_cli/commands/stream.py +0 -0
  147. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/src/keboola_agent_cli/commands/sync.py +0 -0
  148. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/src/keboola_agent_cli/commands/token.py +0 -0
  149. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/src/keboola_agent_cli/commands/transformation.py +0 -0
  150. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/src/keboola_agent_cli/commands/version.py +0 -0
  151. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/src/keboola_agent_cli/commands/workspace.py +0 -0
  152. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/src/keboola_agent_cli/config_store.py +0 -0
  153. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/src/keboola_agent_cli/constants.py +0 -0
  154. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/src/keboola_agent_cli/data_science_client.py +0 -0
  155. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/src/keboola_agent_cli/dev_portal_client.py +0 -0
  156. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/src/keboola_agent_cli/effective_branch.py +0 -0
  157. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/src/keboola_agent_cli/errors.py +0 -0
  158. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/src/keboola_agent_cli/frozen_dist.py +0 -0
  159. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/src/keboola_agent_cli/http_base.py +0 -0
  160. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/src/keboola_agent_cli/json_utils.py +0 -0
  161. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/src/keboola_agent_cli/lib.py +0 -0
  162. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/src/keboola_agent_cli/manage_client.py +0 -0
  163. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/src/keboola_agent_cli/metastore_client.py +0 -0
  164. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/src/keboola_agent_cli/models.py +0 -0
  165. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/src/keboola_agent_cli/output.py +0 -0
  166. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/src/keboola_agent_cli/permissions.py +0 -0
  167. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/src/keboola_agent_cli/project_ref.py +0 -0
  168. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/src/keboola_agent_cli/py.typed +0 -0
  169. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/src/keboola_agent_cli/resources/__init__.py +0 -0
  170. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/src/keboola_agent_cli/resources/flow/__init__.py +0 -0
  171. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/src/keboola_agent_cli/resources/flow/conditional-flow-schema.json +0 -0
  172. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/src/keboola_agent_cli/resources/flow/conditional_flow_examples.jsonl +0 -0
  173. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/src/keboola_agent_cli/resources/flow/flow-schema.json +0 -0
  174. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/src/keboola_agent_cli/resources/flow/legacy_flow_examples.jsonl +0 -0
  175. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/src/keboola_agent_cli/result_models.py +0 -0
  176. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/src/keboola_agent_cli/scheduler_client.py +0 -0
  177. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/src/keboola_agent_cli/server/__init__.py +0 -0
  178. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/src/keboola_agent_cli/server/_serve_command_map.py +0 -0
  179. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/src/keboola_agent_cli/server/agent_runner.py +0 -0
  180. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/src/keboola_agent_cli/server/agents_store.py +0 -0
  181. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/src/keboola_agent_cli/server/app.py +0 -0
  182. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/src/keboola_agent_cli/server/auth.py +0 -0
  183. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/src/keboola_agent_cli/server/dependencies.py +0 -0
  184. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/src/keboola_agent_cli/server/pricing.py +0 -0
  185. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/src/keboola_agent_cli/server/route_permissions.py +0 -0
  186. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/src/keboola_agent_cli/server/routers/__init__.py +0 -0
  187. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/src/keboola_agent_cli/server/routers/agents.py +0 -0
  188. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/src/keboola_agent_cli/server/routers/ai_chat.py +0 -0
  189. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/src/keboola_agent_cli/server/routers/auth.py +0 -0
  190. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/src/keboola_agent_cli/server/routers/billing.py +0 -0
  191. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/src/keboola_agent_cli/server/routers/branches.py +0 -0
  192. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/src/keboola_agent_cli/server/routers/components.py +0 -0
  193. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/src/keboola_agent_cli/server/routers/configs.py +0 -0
  194. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/src/keboola_agent_cli/server/routers/data_apps.py +0 -0
  195. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/src/keboola_agent_cli/server/routers/dev_portal.py +0 -0
  196. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/src/keboola_agent_cli/server/routers/docs.py +0 -0
  197. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/src/keboola_agent_cli/server/routers/encrypt.py +0 -0
  198. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/src/keboola_agent_cli/server/routers/feature.py +0 -0
  199. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/src/keboola_agent_cli/server/routers/flows.py +0 -0
  200. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/src/keboola_agent_cli/server/routers/health.py +0 -0
  201. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/src/keboola_agent_cli/server/routers/jobs.py +0 -0
  202. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/src/keboola_agent_cli/server/routers/kai.py +0 -0
  203. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/src/keboola_agent_cli/server/routers/lineage.py +0 -0
  204. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/src/keboola_agent_cli/server/routers/members.py +0 -0
  205. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/src/keboola_agent_cli/server/routers/merge_requests.py +0 -0
  206. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/src/keboola_agent_cli/server/routers/notifications.py +0 -0
  207. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/src/keboola_agent_cli/server/routers/org.py +0 -0
  208. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/src/keboola_agent_cli/server/routers/permissions.py +0 -0
  209. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/src/keboola_agent_cli/server/routers/projects.py +0 -0
  210. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/src/keboola_agent_cli/server/routers/schedules.py +0 -0
  211. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/src/keboola_agent_cli/server/routers/search.py +0 -0
  212. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/src/keboola_agent_cli/server/routers/semantic_layer.py +0 -0
  213. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/src/keboola_agent_cli/server/routers/sharing.py +0 -0
  214. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/src/keboola_agent_cli/server/routers/storage.py +0 -0
  215. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/src/keboola_agent_cli/server/routers/stream.py +0 -0
  216. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/src/keboola_agent_cli/server/routers/token.py +0 -0
  217. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/src/keboola_agent_cli/server/routers/transformation.py +0 -0
  218. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/src/keboola_agent_cli/server/routers/workspaces.py +0 -0
  219. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/src/keboola_agent_cli/server/run_broadcaster.py +0 -0
  220. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/src/keboola_agent_cli/server/sse.py +0 -0
  221. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/src/keboola_agent_cli/services/__init__.py +0 -0
  222. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/src/keboola_agent_cli/services/_auth_registration.py +0 -0
  223. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/src/keboola_agent_cli/services/_column_descriptions.py +0 -0
  224. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/src/keboola_agent_cli/services/_config_clone.py +0 -0
  225. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/src/keboola_agent_cli/services/_config_set_guard.py +0 -0
  226. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/src/keboola_agent_cli/services/_config_trash.py +0 -0
  227. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/src/keboola_agent_cli/services/_data_app_bodies.py +0 -0
  228. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/src/keboola_agent_cli/services/_data_app_password.py +0 -0
  229. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/src/keboola_agent_cli/services/_describe_batch_input.py +0 -0
  230. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/src/keboola_agent_cli/services/_encryption.py +0 -0
  231. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/src/keboola_agent_cli/services/_lineage_ai.py +0 -0
  232. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/src/keboola_agent_cli/services/_lineage_er.py +0 -0
  233. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/src/keboola_agent_cli/services/_lineage_mermaid.py +0 -0
  234. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/src/keboola_agent_cli/services/_lineage_paths.py +0 -0
  235. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/src/keboola_agent_cli/services/_lineage_trace.py +0 -0
  236. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/src/keboola_agent_cli/services/_semantic_layer_cascade.py +0 -0
  237. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/src/keboola_agent_cli/services/_semantic_layer_crud.py +0 -0
  238. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/src/keboola_agent_cli/services/_semantic_layer_fqn.py +0 -0
  239. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/src/keboola_agent_cli/services/_semantic_layer_internals.py +0 -0
  240. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/src/keboola_agent_cli/services/_semantic_layer_lookup.py +0 -0
  241. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/src/keboola_agent_cli/services/_semantic_layer_reference_data.py +0 -0
  242. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/src/keboola_agent_cli/services/_semantic_layer_scope.py +0 -0
  243. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/src/keboola_agent_cli/services/_storage_downloads.py +0 -0
  244. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/src/keboola_agent_cli/services/_storage_jobs.py +0 -0
  245. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/src/keboola_agent_cli/services/_storage_tables.py +0 -0
  246. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/src/keboola_agent_cli/services/_sync_baseline.py +0 -0
  247. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/src/keboola_agent_cli/services/_sync_bindings.py +0 -0
  248. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/src/keboola_agent_cli/services/_sync_branch.py +0 -0
  249. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/src/keboola_agent_cli/services/_sync_bulk.py +0 -0
  250. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/src/keboola_agent_cli/services/_sync_clone.py +0 -0
  251. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/src/keboola_agent_cli/services/_sync_clone_warnings.py +0 -0
  252. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/src/keboola_agent_cli/services/_sync_data_app.py +0 -0
  253. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/src/keboola_agent_cli/services/_sync_models.py +0 -0
  254. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/src/keboola_agent_cli/services/_sync_project_guard.py +0 -0
  255. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/src/keboola_agent_cli/services/_sync_push_ops.py +0 -0
  256. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/src/keboola_agent_cli/services/_sync_stale.py +0 -0
  257. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/src/keboola_agent_cli/services/_sync_storage.py +0 -0
  258. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/src/keboola_agent_cli/services/_sync_workspace.py +0 -0
  259. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/src/keboola_agent_cli/services/_table_detail.py +0 -0
  260. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/src/keboola_agent_cli/services/_token_last_used.py +0 -0
  261. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/src/keboola_agent_cli/services/_transformation_ops.py +0 -0
  262. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/src/keboola_agent_cli/services/_workspace_load_plan.py +0 -0
  263. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/src/keboola_agent_cli/services/agent_service.py +0 -0
  264. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/src/keboola_agent_cli/services/auth_service.py +0 -0
  265. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/src/keboola_agent_cli/services/base.py +0 -0
  266. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/src/keboola_agent_cli/services/billing_service.py +0 -0
  267. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/src/keboola_agent_cli/services/branch_service.py +0 -0
  268. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/src/keboola_agent_cli/services/component_service.py +0 -0
  269. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/src/keboola_agent_cli/services/config_service.py +0 -0
  270. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/src/keboola_agent_cli/services/data_app_git_service.py +0 -0
  271. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/src/keboola_agent_cli/services/data_app_service.py +0 -0
  272. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/src/keboola_agent_cli/services/deep_lineage_service.py +0 -0
  273. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/src/keboola_agent_cli/services/dev_portal_service.py +0 -0
  274. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/src/keboola_agent_cli/services/docs_service.py +0 -0
  275. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/src/keboola_agent_cli/services/doctor_service.py +0 -0
  276. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/src/keboola_agent_cli/services/encrypt_service.py +0 -0
  277. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/src/keboola_agent_cli/services/feature_service.py +0 -0
  278. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/src/keboola_agent_cli/services/flow_service.py +0 -0
  279. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/src/keboola_agent_cli/services/flow_validation.py +0 -0
  280. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/src/keboola_agent_cli/services/http_forwarder_service.py +0 -0
  281. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/src/keboola_agent_cli/services/job_idempotency_store.py +0 -0
  282. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/src/keboola_agent_cli/services/job_service.py +0 -0
  283. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/src/keboola_agent_cli/services/kai_service.py +0 -0
  284. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/src/keboola_agent_cli/services/lineage_service.py +0 -0
  285. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/src/keboola_agent_cli/services/member_service.py +0 -0
  286. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/src/keboola_agent_cli/services/merge_request_service.py +0 -0
  287. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/src/keboola_agent_cli/services/notification_service.py +0 -0
  288. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/src/keboola_agent_cli/services/org_service.py +0 -0
  289. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/src/keboola_agent_cli/services/project_service.py +0 -0
  290. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/src/keboola_agent_cli/services/repo_validate_service.py +0 -0
  291. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/src/keboola_agent_cli/services/schedule_service.py +0 -0
  292. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/src/keboola_agent_cli/services/search_service.py +0 -0
  293. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/src/keboola_agent_cli/services/semantic_layer_service.py +0 -0
  294. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/src/keboola_agent_cli/services/sharing_service.py +0 -0
  295. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/src/keboola_agent_cli/services/snapshot_service.py +0 -0
  296. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/src/keboola_agent_cli/services/storage_service.py +0 -0
  297. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/src/keboola_agent_cli/services/stream_service.py +0 -0
  298. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/src/keboola_agent_cli/services/sync_service.py +0 -0
  299. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/src/keboola_agent_cli/services/table_usage.py +0 -0
  300. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/src/keboola_agent_cli/services/token_service.py +0 -0
  301. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/src/keboola_agent_cli/services/transformation_service.py +0 -0
  302. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/src/keboola_agent_cli/services/variables_service.py +0 -0
  303. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/src/keboola_agent_cli/services/version_service.py +0 -0
  304. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/src/keboola_agent_cli/services/workspace_service.py +0 -0
  305. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/src/keboola_agent_cli/stream_client.py +0 -0
  306. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/src/keboola_agent_cli/sync/__init__.py +0 -0
  307. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/src/keboola_agent_cli/sync/branch_mapping.py +0 -0
  308. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/src/keboola_agent_cli/sync/branch_registry.py +0 -0
  309. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/src/keboola_agent_cli/sync/branch_scope.py +0 -0
  310. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/src/keboola_agent_cli/sync/clone.py +0 -0
  311. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/src/keboola_agent_cli/sync/code_extraction.py +0 -0
  312. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/src/keboola_agent_cli/sync/config_format.py +0 -0
  313. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/src/keboola_agent_cli/sync/diff_engine.py +0 -0
  314. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/src/keboola_agent_cli/sync/git_utils.py +0 -0
  315. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/src/keboola_agent_cli/sync/manifest.py +0 -0
  316. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/src/keboola_agent_cli/sync/naming.py +0 -0
  317. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/src/keboola_agent_cli/sync/secrets.py +0 -0
  318. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/src/keboola_agent_cli/sync/sql_split.py +0 -0
  319. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/src/keboola_agent_cli/telemetry.py +0 -0
  320. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/src/keboola_agent_cli/update_notice.py +0 -0
  321. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/src/keboola_agent_cli/update_runner.py +0 -0
  322. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/src/keboola_agent_cli/yaml_input.py +0 -0
  323. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/tests/__init__.py +0 -0
  324. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/tests/conftest.py +0 -0
  325. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/tests/helpers.py +0 -0
  326. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/tests/snapshots/human_output/branch_merge_warning.txt +0 -0
  327. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/tests/snapshots/human_output/config_detail_api_error.txt +0 -0
  328. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/tests/snapshots/human_output/config_detail_panel.txt +0 -0
  329. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/tests/snapshots/human_output/config_list_fanout_failure.txt +0 -0
  330. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/tests/snapshots/human_output/config_list_table.txt +0 -0
  331. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/tests/snapshots/human_output/project_remove_success.txt +0 -0
  332. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/tests/test_agent_cli.py +0 -0
  333. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/tests/test_agent_prompt.py +0 -0
  334. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/tests/test_agent_prompt_helper.py +0 -0
  335. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/tests/test_agent_runner.py +0 -0
  336. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/tests/test_agent_service.py +0 -0
  337. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/tests/test_agent_tombstone.py +0 -0
  338. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/tests/test_agents_store_events.py +0 -0
  339. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/tests/test_ai_client.py +0 -0
  340. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/tests/test_all_projects_and_warnings.py +0 -0
  341. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/tests/test_api_call_counts.py +0 -0
  342. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/tests/test_auth_client.py +0 -0
  343. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/tests/test_auth_device.py +0 -0
  344. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/tests/test_auth_environment.py +0 -0
  345. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/tests/test_auth_models.py +0 -0
  346. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/tests/test_auth_picker.py +0 -0
  347. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/tests/test_auth_pkce.py +0 -0
  348. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/tests/test_auth_register_projects.py +0 -0
  349. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/tests/test_auth_sentinel.py +0 -0
  350. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/tests/test_auth_sentinel_guards.py +0 -0
  351. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/tests/test_auth_service.py +0 -0
  352. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/tests/test_auth_state_store.py +0 -0
  353. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/tests/test_auth_totp.py +0 -0
  354. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/tests/test_auto_update.py +0 -0
  355. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/tests/test_base_service.py +0 -0
  356. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/tests/test_billing_cli.py +0 -0
  357. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/tests/test_billing_client.py +0 -0
  358. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/tests/test_billing_service.py +0 -0
  359. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/tests/test_branch_metadata_cli.py +0 -0
  360. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/tests/test_branch_metadata_service.py +0 -0
  361. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/tests/test_branch_registry.py +0 -0
  362. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/tests/test_branch_service.py +0 -0
  363. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/tests/test_branch_zero.py +0 -0
  364. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/tests/test_build_hook.py +0 -0
  365. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/tests/test_changelog_check.py +0 -0
  366. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/tests/test_changelog_render.py +0 -0
  367. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/tests/test_check_cli_spec.py +0 -0
  368. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/tests/test_check_command_sync.py +0 -0
  369. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/tests/test_check_file_size.py +0 -0
  370. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/tests/test_check_release_scope.py +0 -0
  371. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/tests/test_check_sentinel_guards.py +0 -0
  372. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/tests/test_check_version_gates.py +0 -0
  373. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/tests/test_checkbox_select.py +0 -0
  374. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/tests/test_choice_enums.py +0 -0
  375. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/tests/test_cli.py +0 -0
  376. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/tests/test_cli_auth.py +0 -0
  377. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/tests/test_cli_contract.py +0 -0
  378. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/tests/test_cli_human_snapshots.py +0 -0
  379. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/tests/test_client.py +0 -0
  380. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/tests/test_client_device_enrollment.py +0 -0
  381. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/tests/test_client_token_events.py +0 -0
  382. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/tests/test_component_cli.py +0 -0
  383. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/tests/test_component_service.py +0 -0
  384. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/tests/test_component_sync_action.py +0 -0
  385. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/tests/test_config_clone_cli.py +0 -0
  386. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/tests/test_config_clone_service.py +0 -0
  387. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/tests/test_config_create_cli.py +0 -0
  388. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/tests/test_config_create_service.py +0 -0
  389. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/tests/test_config_encryption.py +0 -0
  390. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/tests/test_config_examples.py +0 -0
  391. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/tests/test_config_metadata.py +0 -0
  392. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/tests/test_config_rename.py +0 -0
  393. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/tests/test_config_rename_cli.py +0 -0
  394. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/tests/test_config_resolution.py +0 -0
  395. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/tests/test_config_row_cli.py +0 -0
  396. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/tests/test_config_row_service.py +0 -0
  397. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/tests/test_config_search.py +0 -0
  398. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/tests/test_config_search_cli.py +0 -0
  399. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/tests/test_config_set_default_bucket.py +0 -0
  400. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/tests/test_config_set_guard.py +0 -0
  401. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/tests/test_config_state.py +0 -0
  402. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/tests/test_config_store.py +0 -0
  403. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/tests/test_config_trash.py +0 -0
  404. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/tests/test_config_update.py +0 -0
  405. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/tests/test_data_app_cli.py +0 -0
  406. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/tests/test_data_app_git_repo.py +0 -0
  407. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/tests/test_data_app_password.py +0 -0
  408. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/tests/test_data_app_plain_env_keys.py +0 -0
  409. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/tests/test_data_app_secrets_cli.py +0 -0
  410. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/tests/test_data_app_secrets_service.py +0 -0
  411. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/tests/test_data_app_service.py +0 -0
  412. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/tests/test_data_app_validate_repo_service.py +0 -0
  413. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/tests/test_deep_lineage_ai.py +0 -0
  414. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/tests/test_deep_lineage_service.py +0 -0
  415. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/tests/test_dev_portal_cli.py +0 -0
  416. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/tests/test_dev_portal_client.py +0 -0
  417. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/tests/test_dev_portal_service.py +0 -0
  418. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/tests/test_doc_examples.py +0 -0
  419. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/tests/test_docs_cli.py +0 -0
  420. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/tests/test_doctor_service.py +0 -0
  421. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/tests/test_e2e.py +0 -0
  422. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/tests/test_e2e_auth.py +0 -0
  423. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/tests/test_e2e_config_dir_mode.py +0 -0
  424. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/tests/test_e2e_lineage_deep.py +0 -0
  425. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/tests/test_effective_branch.py +0 -0
  426. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/tests/test_encrypt_cli.py +0 -0
  427. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/tests/test_encrypt_service.py +0 -0
  428. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/tests/test_encryption.py +0 -0
  429. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/tests/test_error_forwarding.py +0 -0
  430. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/tests/test_errors.py +0 -0
  431. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/tests/test_feature_cli.py +0 -0
  432. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/tests/test_feature_service.py +0 -0
  433. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/tests/test_file_locking.py +0 -0
  434. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/tests/test_flow_cli.py +0 -0
  435. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/tests/test_flow_examples.py +0 -0
  436. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/tests/test_flow_service.py +0 -0
  437. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/tests/test_flow_validation.py +0 -0
  438. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/tests/test_frozen_dist.py +0 -0
  439. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/tests/test_gen_command_reference.py +0 -0
  440. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/tests/test_gen_endpoint_reference.py +0 -0
  441. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/tests/test_gen_release_notes.py +0 -0
  442. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/tests/test_generate_promotion_pipeline.py +0 -0
  443. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/tests/test_helpers.py +0 -0
  444. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/tests/test_http_base.py +0 -0
  445. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/tests/test_http_base_auth.py +0 -0
  446. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/tests/test_http_client_cmd.py +0 -0
  447. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/tests/test_http_forwarder_service.py +0 -0
  448. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/tests/test_install_script.py +0 -0
  449. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/tests/test_integration.py +0 -0
  450. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/tests/test_job_idempotency_store.py +0 -0
  451. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/tests/test_job_options.py +0 -0
  452. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/tests/test_json_utils.py +0 -0
  453. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/tests/test_kai_cli.py +0 -0
  454. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/tests/test_kai_service.py +0 -0
  455. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/tests/test_lib.py +0 -0
  456. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/tests/test_lib_device_enrollment.py +0 -0
  457. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/tests/test_license_consistency.py +0 -0
  458. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/tests/test_lineage_service.py +0 -0
  459. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/tests/test_lineage_view.py +0 -0
  460. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/tests/test_local_ai_chat.py +0 -0
  461. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/tests/test_major_gate.py +0 -0
  462. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/tests/test_manage_client.py +0 -0
  463. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/tests/test_manage_token_bulk.py +0 -0
  464. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/tests/test_manage_token_cli.py +0 -0
  465. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/tests/test_mcp_migration_recipe.py +0 -0
  466. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/tests/test_member_cli.py +0 -0
  467. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/tests/test_member_service.py +0 -0
  468. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/tests/test_merge_request_cli.py +0 -0
  469. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/tests/test_merge_request_client.py +0 -0
  470. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/tests/test_merge_request_service.py +0 -0
  471. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/tests/test_metastore_client.py +0 -0
  472. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/tests/test_migrate_cicd.py +0 -0
  473. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/tests/test_migration_page.py +0 -0
  474. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/tests/test_models.py +0 -0
  475. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/tests/test_normalize_script.py +0 -0
  476. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/tests/test_notification_cli.py +0 -0
  477. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/tests/test_notification_client.py +0 -0
  478. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/tests/test_notification_service.py +0 -0
  479. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/tests/test_org_service.py +0 -0
  480. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/tests/test_output.py +0 -0
  481. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/tests/test_partial_failure_exit_code.py +0 -0
  482. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/tests/test_permissions.py +0 -0
  483. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/tests/test_permissions_cli.py +0 -0
  484. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/tests/test_pinned_installs.py +0 -0
  485. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/tests/test_pricing.py +0 -0
  486. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/tests/test_project_create_cli.py +0 -0
  487. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/tests/test_project_edit.py +0 -0
  488. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/tests/test_project_edit_cli.py +0 -0
  489. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/tests/test_project_info_cli.py +0 -0
  490. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/tests/test_project_info_service.py +0 -0
  491. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/tests/test_project_ref.py +0 -0
  492. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/tests/test_project_token_stdin_no_leak.py +0 -0
  493. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/tests/test_release_kbagent_ai_kit_sync.py +0 -0
  494. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/tests/test_release_latest.py +0 -0
  495. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/tests/test_release_workflow_major.py +0 -0
  496. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/tests/test_repl.py +0 -0
  497. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/tests/test_result_models.py +0 -0
  498. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/tests/test_run_broadcaster.py +0 -0
  499. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/tests/test_s3_multipart.py +0 -0
  500. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/tests/test_schedule_cli.py +0 -0
  501. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/tests/test_schedule_service.py +0 -0
  502. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/tests/test_scheduler_client.py +0 -0
  503. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/tests/test_search_cli.py +0 -0
  504. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/tests/test_search_service.py +0 -0
  505. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/tests/test_semantic_layer_cli.py +0 -0
  506. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/tests/test_semantic_layer_schema.py +0 -0
  507. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/tests/test_semantic_layer_scope.py +0 -0
  508. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/tests/test_semantic_layer_scope_cli.py +0 -0
  509. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/tests/test_semantic_layer_service.py +0 -0
  510. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/tests/test_serve_banner_encoding.py +0 -0
  511. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/tests/test_serve_conversation_id.py +0 -0
  512. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/tests/test_serve_extras_hint.py +0 -0
  513. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/tests/test_serve_telemetry.py +0 -0
  514. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/tests/test_serve_ui.py +0 -0
  515. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/tests/test_server_active_project.py +0 -0
  516. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/tests/test_server_auth.py +0 -0
  517. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/tests/test_server_dry_run_guard.py +0 -0
  518. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/tests/test_server_permissions.py +0 -0
  519. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/tests/test_server_production_branch.py +0 -0
  520. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/tests/test_server_project_ref.py +0 -0
  521. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/tests/test_server_route_permissions.py +0 -0
  522. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/tests/test_server_router_calls.py +0 -0
  523. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/tests/test_server_semantic_layer_routes_e2e.py +0 -0
  524. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/tests/test_server_smoke.py +0 -0
  525. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/tests/test_services.py +0 -0
  526. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/tests/test_sharing_cli.py +0 -0
  527. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/tests/test_sharing_service.py +0 -0
  528. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/tests/test_skill_frontmatter.py +0 -0
  529. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/tests/test_sql_split.py +0 -0
  530. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/tests/test_storage_clone.py +0 -0
  531. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/tests/test_storage_create_table.py +0 -0
  532. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/tests/test_storage_delete.py +0 -0
  533. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/tests/test_storage_describe_cli.py +0 -0
  534. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/tests/test_storage_describe_service.py +0 -0
  535. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/tests/test_storage_empty_definition.py +0 -0
  536. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/tests/test_storage_export_filters.py +0 -0
  537. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/tests/test_storage_files.py +0 -0
  538. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/tests/test_storage_import_jobs.py +0 -0
  539. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/tests/test_storage_snapshots.py +0 -0
  540. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/tests/test_storage_swap.py +0 -0
  541. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/tests/test_storage_table_definition.py +0 -0
  542. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/tests/test_storage_tables.py +0 -0
  543. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/tests/test_storage_truncate.py +0 -0
  544. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/tests/test_storage_write.py +0 -0
  545. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/tests/test_stream_cli.py +0 -0
  546. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/tests/test_stream_client.py +0 -0
  547. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/tests/test_stream_service.py +0 -0
  548. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/tests/test_sync_adopted_files.py +0 -0
  549. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/tests/test_sync_baseline_stamping.py +0 -0
  550. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/tests/test_sync_branch_mapping.py +0 -0
  551. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/tests/test_sync_branch_scope.py +0 -0
  552. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/tests/test_sync_cli.py +0 -0
  553. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/tests/test_sync_cli_behavior.py +0 -0
  554. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/tests/test_sync_clone.py +0 -0
  555. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/tests/test_sync_clone_links.py +0 -0
  556. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/tests/test_sync_code_extraction.py +0 -0
  557. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/tests/test_sync_config_format.py +0 -0
  558. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/tests/test_sync_data_app_type.py +0 -0
  559. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/tests/test_sync_diff_engine.py +0 -0
  560. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/tests/test_sync_e2e.py +0 -0
  561. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/tests/test_sync_encrypt.py +0 -0
  562. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/tests/test_sync_force_pull_baseline.py +0 -0
  563. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/tests/test_sync_formal_counterexamples.py +0 -0
  564. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/tests/test_sync_manifest.py +0 -0
  565. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/tests/test_sync_naming.py +0 -0
  566. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/tests/test_sync_plaintext_audit.py +0 -0
  567. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/tests/test_sync_project_guard.py +0 -0
  568. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/tests/test_sync_pull_companion_files.py +0 -0
  569. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/tests/test_sync_push_encrypt_first.py +0 -0
  570. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/tests/test_sync_push_script_guard.py +0 -0
  571. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/tests/test_sync_reconcile.py +0 -0
  572. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/tests/test_sync_secrets.py +0 -0
  573. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/tests/test_sync_storage_jobs.py +0 -0
  574. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/tests/test_sync_version_script.py +0 -0
  575. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/tests/test_sync_workspaces.py +0 -0
  576. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/tests/test_table_usage.py +0 -0
  577. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/tests/test_telemetry.py +0 -0
  578. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/tests/test_token_cli.py +0 -0
  579. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/tests/test_token_provider.py +0 -0
  580. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/tests/test_token_service.py +0 -0
  581. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/tests/test_transfer_progress.py +0 -0
  582. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/tests/test_transformation_cli.py +0 -0
  583. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/tests/test_transformation_ops.py +0 -0
  584. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/tests/test_triggers_client.py +0 -0
  585. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/tests/test_update_runner.py +0 -0
  586. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/tests/test_url_copy.py +0 -0
  587. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/tests/test_variables_cli.py +0 -0
  588. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/tests/test_variables_service.py +0 -0
  589. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/tests/test_version_service.py +0 -0
  590. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/tests/test_workspace_cli.py +0 -0
  591. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/tests/test_workspace_gc.py +0 -0
  592. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/tests/test_workspace_service.py +0 -0
  593. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/tests/test_workspace_sql_helper.py +0 -0
  594. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/tests/test_yaml_input.py +0 -0
  595. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/web/README.md +0 -0
  596. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/web/frontend/index.html +0 -0
  597. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/web/frontend/package-lock.json +0 -0
  598. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/web/frontend/package.json +0 -0
  599. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/web/frontend/postcss.config.js +0 -0
  600. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/web/frontend/src/App.tsx +0 -0
  601. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/web/frontend/src/api/client.test.ts +0 -0
  602. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/web/frontend/src/api/client.ts +0 -0
  603. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/web/frontend/src/changelogNotes.test.ts +0 -0
  604. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/web/frontend/src/changelogNotes.ts +0 -0
  605. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/web/frontend/src/components/AgentRunView.tsx +0 -0
  606. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/web/frontend/src/components/CommandPalette.tsx +0 -0
  607. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/web/frontend/src/components/ConfirmModal.tsx +0 -0
  608. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/web/frontend/src/components/DetailTabs.tsx +0 -0
  609. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/web/frontend/src/components/Drawer.tsx +0 -0
  610. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/web/frontend/src/components/Empty.tsx +0 -0
  611. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/web/frontend/src/components/JsonView.tsx +0 -0
  612. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/web/frontend/src/components/KeyValueGrid.tsx +0 -0
  613. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/web/frontend/src/components/ManageTokenModal.tsx +0 -0
  614. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/web/frontend/src/components/PillList.tsx +0 -0
  615. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/web/frontend/src/components/RawDetail.tsx +0 -0
  616. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/web/frontend/src/components/SessionExpiredBanner.tsx +0 -0
  617. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/web/frontend/src/components/Table.tsx +0 -0
  618. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/web/frontend/src/components/WhatsNew.tsx +0 -0
  619. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/web/frontend/src/config/credits.test.ts +0 -0
  620. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/web/frontend/src/config/credits.ts +0 -0
  621. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/web/frontend/src/index.css +0 -0
  622. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/web/frontend/src/layout/Shell.tsx +0 -0
  623. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/web/frontend/src/layout/Sidebar.tsx +0 -0
  624. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/web/frontend/src/layout/StatusBar.tsx +0 -0
  625. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/web/frontend/src/layout/TopBar.tsx +0 -0
  626. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/web/frontend/src/lib/branch.test.ts +0 -0
  627. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/web/frontend/src/lib/branch.ts +0 -0
  628. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/web/frontend/src/lib/time.test.ts +0 -0
  629. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/web/frontend/src/lib/time.ts +0 -0
  630. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/web/frontend/src/main.tsx +0 -0
  631. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/web/frontend/src/pages/Agents.tsx +0 -0
  632. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/web/frontend/src/pages/Branches.tsx +0 -0
  633. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/web/frontend/src/pages/Changelog.tsx +0 -0
  634. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/web/frontend/src/pages/Components.tsx +0 -0
  635. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/web/frontend/src/pages/Configs.tsx +0 -0
  636. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/web/frontend/src/pages/Dashboard.tsx +0 -0
  637. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/web/frontend/src/pages/DataApps.tsx +0 -0
  638. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/web/frontend/src/pages/Doctor.tsx +0 -0
  639. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/web/frontend/src/pages/Encrypt.tsx +0 -0
  640. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/web/frontend/src/pages/Flows.tsx +0 -0
  641. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/web/frontend/src/pages/Jobs.tsx +0 -0
  642. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/web/frontend/src/pages/JobsAll.tsx +0 -0
  643. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/web/frontend/src/pages/Lineage.tsx +0 -0
  644. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/web/frontend/src/pages/LocalAi.tsx +0 -0
  645. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/web/frontend/src/pages/Members.tsx +0 -0
  646. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/web/frontend/src/pages/Org.tsx +0 -0
  647. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/web/frontend/src/pages/Projects.tsx +0 -0
  648. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/web/frontend/src/pages/Schedules.tsx +0 -0
  649. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/web/frontend/src/pages/Search.tsx +0 -0
  650. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/web/frontend/src/pages/SemanticLayer.tsx +0 -0
  651. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/web/frontend/src/pages/SemanticLayerDialogs.tsx +0 -0
  652. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/web/frontend/src/pages/Sharing.tsx +0 -0
  653. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/web/frontend/src/pages/Storage.tsx +0 -0
  654. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/web/frontend/src/pages/Streams.tsx +0 -0
  655. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/web/frontend/src/pages/Tokens.tsx +0 -0
  656. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/web/frontend/src/pages/TokensAll.tsx +0 -0
  657. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/web/frontend/src/pages/Workspaces.tsx +0 -0
  658. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/web/frontend/src/pages/jobsShared.test.ts +0 -0
  659. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/web/frontend/src/pages/jobsShared.tsx +0 -0
  660. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/web/frontend/src/pages/storageSel.test.ts +0 -0
  661. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/web/frontend/src/pages/tokensShared.test.ts +0 -0
  662. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/web/frontend/src/pages/tokensShared.tsx +0 -0
  663. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/web/frontend/src/router.test.ts +0 -0
  664. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/web/frontend/src/router.ts +0 -0
  665. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/web/frontend/src/state.tsx +0 -0
  666. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/web/frontend/src/theme.tsx +0 -0
  667. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/web/frontend/src/types.ts +0 -0
  668. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/web/frontend/src/useHashSelection.ts +0 -0
  669. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/web/frontend/src/whatsnew.ts +0 -0
  670. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/web/frontend/tailwind.config.ts +0 -0
  671. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/web/frontend/tsconfig.json +0 -0
  672. {keboola_cli-0.100.3 → keboola_cli-0.100.4}/web/frontend/vite.config.ts +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: keboola-cli
3
- Version: 0.100.3
3
+ Version: 0.100.4
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.100.3"
3
+ version = "0.100.4"
4
4
  description = "AI-friendly CLI for managing Keboola projects"
5
5
  readme = "README.md"
6
6
  requires-python = ">=3.12"
@@ -26,6 +26,16 @@ 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.100.4": [
30
+ "Fix (#919, backport of #917): `sync push` now sends an edit to `transform.sql` or another code file "
31
+ "of a config that a push created. Before, it found no change in such a file "
32
+ "(`transform.sql`, `transform.py`, `code.py`, `pyproject.toml`, `_description.md`): "
33
+ "`sync diff` said in sync, `sync push` said there was nothing to push, and the job "
34
+ "kept running the old code. With the same gap, `sync pull --force` could "
35
+ "replace such an edit with the remote code; it now stops with `SYNC_CONFLICT`. An edit "
36
+ "to `_config.yml` was always detected. A tree written by an older version is fixed by "
37
+ "one `sync pull`; copy edited code files aside before it.",
38
+ ],
29
39
  "0.100.3": [
30
40
  "New (#911): `project add` and `project create` also take the alias of the new project "
31
41
  "as `--alias`, and `project refresh` also takes `--all-projects`. These are the names of "
@@ -61,6 +61,7 @@ def stamp_created_config(
61
61
  new_id=new_id,
62
62
  file_hash=hashes.file_hash,
63
63
  cfg_hash=stamp.cfg_hash,
64
+ extra_hashes=hashes.extra_hashes,
64
65
  )
65
66
  apply_stamp(writeback.entry.metadata, stamp)
66
67
  return writeback
@@ -112,6 +113,7 @@ def stamp_updated_config(
112
113
  new_id=config_id,
113
114
  file_hash=hashes.file_hash,
114
115
  cfg_hash=stamp.cfg_hash,
116
+ extra_hashes=hashes.extra_hashes,
115
117
  ).entry
116
118
  apply_stamp(entry.metadata, stamp)
117
119
 
@@ -125,6 +127,7 @@ def writeback_create_config_in_manifest(
125
127
  new_id: str,
126
128
  file_hash: str,
127
129
  cfg_hash: str,
130
+ extra_hashes: dict[str, str],
128
131
  ) -> WritebackResult:
129
132
  """Record a freshly-created config in the manifest.
130
133
 
@@ -154,13 +157,18 @@ def writeback_create_config_in_manifest(
154
157
  entry.id = new_id
155
158
  entry.metadata["pull_hash"] = file_hash
156
159
  entry.metadata["pull_config_hash"] = cfg_hash
160
+ entry.metadata["pull_extra_hashes"] = extra_hashes
157
161
  return WritebackResult(entry=entry, previous_id=previous_id)
158
162
  new_entry = ManifestConfiguration(
159
163
  branchId=target_branch,
160
164
  componentId=component_id,
161
165
  id=new_id,
162
166
  path=config_path_str,
163
- metadata={"pull_hash": file_hash, "pull_config_hash": cfg_hash},
167
+ metadata={
168
+ "pull_hash": file_hash,
169
+ "pull_config_hash": cfg_hash,
170
+ "pull_extra_hashes": extra_hashes,
171
+ },
164
172
  )
165
173
  manifest.configurations.append(new_entry)
166
174
  return WritebackResult(entry=new_entry, previous_id="")
@@ -0,0 +1,137 @@
1
+ """A config CREATED by `sync push` must track its companion code files.
2
+
3
+ `sync pull` records a hash for every companion file (`transform.sql`,
4
+ `code.py`, ...) under `pull_extra_hashes`; diff reads an edit to one of them
5
+ only through that record. The create path recorded `_config.yml` alone, so
6
+ after a push that created a config, a later edit to its SQL diffed as
7
+ "unchanged" and the next push sent nothing -- exit 0, the job kept running the
8
+ old code. Reported by a customer on a dev-branch loop (author in `main/`,
9
+ `sync push --branch <dev>`, edit `transform.sql`, push again).
10
+ """
11
+
12
+ from __future__ import annotations
13
+
14
+ from pathlib import Path
15
+
16
+ import pytest
17
+
18
+ import test_sync_formal_counterexamples as formal
19
+ from test_sync_formal_counterexamples import DEV, PROD, World
20
+
21
+ TRANSFORMATION = "keboola.snowflake-transformation"
22
+
23
+
24
+ @pytest.fixture
25
+ def world(tmp_path: Path, monkeypatch: pytest.MonkeyPatch) -> World:
26
+ """A sync world whose fake remote lists configs under a SQL transformation."""
27
+ monkeypatch.setattr(formal, "COMP", TRANSFORMATION)
28
+ w = World(tmp_path)
29
+ return w
30
+
31
+
32
+ def _author_transformation(root: Path) -> Path:
33
+ """Write a new, untracked transformation under main/ (no config id yet)."""
34
+ config_dir = root / "main" / "transformation" / TRANSFORMATION / "orders-model"
35
+ config_dir.mkdir(parents=True)
36
+ (config_dir / "_config.yml").write_text(
37
+ "version: 2\nname: orders-model\ndescription: ''\nparameters: {}\n"
38
+ f"_keboola:\n component_id: {TRANSFORMATION}\n"
39
+ )
40
+ (config_dir / "transform.sql").write_text("SELECT 1 FROM VALUES (1);\n")
41
+ return config_dir
42
+
43
+
44
+ def _edit_sql(config_dir: Path) -> None:
45
+ sql = config_dir / "transform.sql"
46
+ sql.write_text(sql.read_text().replace("VALUES", "VALUEZ"))
47
+
48
+
49
+ def _remote_sql(world: World, branch: int, config_id: str) -> str:
50
+ blocks = world.api.remote[branch][config_id]["configuration"]["parameters"]["blocks"]
51
+ return "".join(s for b in blocks for c in b["codes"] for s in c["script"])
52
+
53
+
54
+ def test_sql_edit_after_create_on_default_branch_is_pushed(world: World) -> None:
55
+ world.init()
56
+ world.pull()
57
+ config_dir = _author_transformation(world.root)
58
+ assert world.push().get("created", 0) == 1
59
+ (config_id,) = world.api.ids(PROD)
60
+
61
+ _edit_sql(config_dir)
62
+
63
+ assert world.diff()["summary"]["modified"] == 1
64
+ assert world.push().get("updated", 0) == 1
65
+ assert "VALUEZ" in _remote_sql(world, PROD, config_id)
66
+
67
+
68
+ def test_sql_edit_after_promote_create_to_dev_branch_is_pushed(world: World) -> None:
69
+ """The customer's loop: author in main/, push to a dev branch, edit, push."""
70
+ world.init()
71
+ world.pull()
72
+ config_dir = _author_transformation(world.root)
73
+ assert world.push(branch=DEV).get("created", 0) == 1
74
+ (config_id,) = world.api.ids(DEV)
75
+
76
+ _edit_sql(config_dir)
77
+
78
+ assert world.diff(branch=DEV)["summary"]["modified"] == 1
79
+ second = world.push(branch=DEV)
80
+ assert second.get("updated", 0) == 1
81
+ assert second.get("created", 0) == 0
82
+ assert "VALUEZ" in _remote_sql(world, DEV, config_id)
83
+ assert world.api.ids(PROD) == []
84
+
85
+
86
+ def test_sql_edit_after_promoting_a_pulled_config_is_pushed(world: World) -> None:
87
+ """A production config promoted to a dev branch gets a NEW dev entry."""
88
+ world.api.put(
89
+ PROD,
90
+ "cfg-1",
91
+ "Orders",
92
+ "a",
93
+ extra={"blocks": [{"name": "B", "codes": [{"name": "C", "script": ["SELECT 1;"]}]}]},
94
+ )
95
+ world.init()
96
+ world.pull()
97
+ world.push(branch=DEV)
98
+ (dev_id,) = world.api.ids(DEV)
99
+ sql = world.config_dir("orders") / "transform.sql"
100
+ sql.write_text(sql.read_text().replace("SELECT 1", "SELECT 2"))
101
+
102
+ assert world.diff(branch=DEV)["summary"]["modified"] == 1
103
+ assert world.push(branch=DEV).get("updated", 0) == 1
104
+ assert "SELECT 2" in _remote_sql(world, DEV, dev_id)
105
+ assert "SELECT 1" in _remote_sql(world, PROD, "cfg-1")
106
+
107
+
108
+ def test_unedited_config_stays_clean_after_create(world: World) -> None:
109
+ """Recording the companion hashes must not turn a clean tree dirty."""
110
+ world.init()
111
+ world.pull()
112
+ _author_transformation(world.root)
113
+ world.push(branch=DEV)
114
+
115
+ summary = world.diff(branch=DEV)["summary"]
116
+ assert summary["modified"] == 0
117
+ assert summary["added"] == 0
118
+ assert world.push(branch=DEV).get("updated", 0) == 0
119
+
120
+
121
+ def test_force_pull_does_not_overwrite_sql_edit_after_create(world: World) -> None:
122
+ """Without the companion hashes, pull read an edited `transform.sql` as
123
+ untouched and `--force` replaced it with the remote code once the config
124
+ changed remotely (here: renamed in the UI). It is now a conflict."""
125
+ from keboola_agent_cli.errors import SyncConflictError
126
+
127
+ world.init()
128
+ world.pull()
129
+ config_dir = _author_transformation(world.root)
130
+ world.push()
131
+ (config_id,) = world.api.ids(PROD)
132
+ _edit_sql(config_dir)
133
+ world.api.remote[PROD][config_id]["name"] = "renamed in the UI"
134
+
135
+ with pytest.raises(SyncConflictError):
136
+ world.pull(force=True)
137
+ assert "VALUEZ" in (config_dir / "transform.sql").read_text()
@@ -3194,6 +3194,7 @@ class TestFreshCreateWriteback:
3194
3194
  new_id="123456789",
3195
3195
  file_hash="abc123",
3196
3196
  cfg_hash="def456",
3197
+ extra_hashes={"transform.sql": "sql789"},
3197
3198
  )
3198
3199
 
3199
3200
  entry = writeback.entry
@@ -3205,6 +3206,7 @@ class TestFreshCreateWriteback:
3205
3206
  assert entry.branch_id == 12345
3206
3207
  assert entry.metadata["pull_hash"] == "abc123"
3207
3208
  assert entry.metadata["pull_config_hash"] == "def456"
3209
+ assert entry.metadata["pull_extra_hashes"] == {"transform.sql": "sql789"}
3208
3210
  assert entry.metadata["KBC.configuration.folderName"] == "FI Pipeline", (
3209
3211
  "user-declared KBC.* metadata must survive the writeback"
3210
3212
  )
@@ -3238,6 +3240,7 @@ class TestFreshCreateWriteback:
3238
3240
  new_id="dev-id-002",
3239
3241
  file_hash="h1",
3240
3242
  cfg_hash="h2",
3243
+ extra_hashes={},
3241
3244
  )
3242
3245
 
3243
3246
  entry = writeback.entry
@@ -3269,6 +3272,7 @@ class TestFreshCreateWriteback:
3269
3272
  new_id="999",
3270
3273
  file_hash="h1",
3271
3274
  cfg_hash="h2",
3275
+ extra_hashes={},
3272
3276
  )
3273
3277
 
3274
3278
  entry = writeback.entry
@@ -3276,7 +3280,11 @@ class TestFreshCreateWriteback:
3276
3280
  assert len(manifest.configurations) == 1
3277
3281
  assert manifest.configurations[0] is entry
3278
3282
  assert entry.id == "999"
3279
- assert entry.metadata == {"pull_hash": "h1", "pull_config_hash": "h2"}
3283
+ assert entry.metadata == {
3284
+ "pull_hash": "h1",
3285
+ "pull_config_hash": "h2",
3286
+ "pull_extra_hashes": {},
3287
+ }
3280
3288
 
3281
3289
  def test_propagate_kbc_metadata_calls_set_config_metadata(self, tmp_config_dir: Path) -> None:
3282
3290
  """KBC.* keys are POSTed via client.set_config_metadata; bookkeeping
File without changes
File without changes
File without changes
File without changes
File without changes