datex-studio-cli 0.4.22__tar.gz → 0.4.23__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 (215) hide show
  1. {datex_studio_cli-0.4.22 → datex_studio_cli-0.4.23}/PKG-INFO +1 -1
  2. {datex_studio_cli-0.4.22 → datex_studio_cli-0.4.23}/pyproject.toml +1 -1
  3. {datex_studio_cli-0.4.22 → datex_studio_cli-0.4.23}/src/dxs/__init__.py +1 -1
  4. {datex_studio_cli-0.4.22 → datex_studio_cli-0.4.23}/src/dxs/cli.py +2 -1
  5. {datex_studio_cli-0.4.22 → datex_studio_cli-0.4.23}/src/dxs/utils/update_check.py +57 -8
  6. {datex_studio_cli-0.4.22 → datex_studio_cli-0.4.23}/.gitignore +0 -0
  7. {datex_studio_cli-0.4.22 → datex_studio_cli-0.4.23}/CONTEXT.md +0 -0
  8. {datex_studio_cli-0.4.22 → datex_studio_cli-0.4.23}/README.md +0 -0
  9. {datex_studio_cli-0.4.22 → datex_studio_cli-0.4.23}/otel/.env.example +0 -0
  10. {datex_studio_cli-0.4.22 → datex_studio_cli-0.4.23}/otel/Dockerfile +0 -0
  11. {datex_studio_cli-0.4.22 → datex_studio_cli-0.4.23}/otel/README.md +0 -0
  12. {datex_studio_cli-0.4.22 → datex_studio_cli-0.4.23}/otel/apply-local-cache.js +0 -0
  13. {datex_studio_cli-0.4.22 → datex_studio_cli-0.4.23}/otel/collector-config.yaml +0 -0
  14. {datex_studio_cli-0.4.22 → datex_studio_cli-0.4.23}/otel/docker-compose.yml +0 -0
  15. {datex_studio_cli-0.4.22 → datex_studio_cli-0.4.23}/otel/local-test-settings.json +0 -0
  16. {datex_studio_cli-0.4.22 → datex_studio_cli-0.4.23}/otel/remote-settings.json +0 -0
  17. {datex_studio_cli-0.4.22 → datex_studio_cli-0.4.23}/report-creator.skill +0 -0
  18. {datex_studio_cli-0.4.22 → datex_studio_cli-0.4.23}/scripts/analyze_corpus.py +0 -0
  19. {datex_studio_cli-0.4.22 → datex_studio_cli-0.4.23}/scripts/generate_rdlx_schema.py +0 -0
  20. {datex_studio_cli-0.4.22 → datex_studio_cli-0.4.23}/src/dxs/__main__.py +0 -0
  21. {datex_studio_cli-0.4.22 → datex_studio_cli-0.4.23}/src/dxs/commands/__init__.py +0 -0
  22. {datex_studio_cli-0.4.22 → datex_studio_cli-0.4.23}/src/dxs/commands/api.py +0 -0
  23. {datex_studio_cli-0.4.22 → datex_studio_cli-0.4.23}/src/dxs/commands/auth.py +0 -0
  24. {datex_studio_cli-0.4.22 → datex_studio_cli-0.4.23}/src/dxs/commands/branch.py +0 -0
  25. {datex_studio_cli-0.4.22 → datex_studio_cli-0.4.23}/src/dxs/commands/branch_commit_guard.py +0 -0
  26. {datex_studio_cli-0.4.22 → datex_studio_cli-0.4.23}/src/dxs/commands/cascade.py +0 -0
  27. {datex_studio_cli-0.4.22 → datex_studio_cli-0.4.23}/src/dxs/commands/config.py +0 -0
  28. {datex_studio_cli-0.4.22 → datex_studio_cli-0.4.23}/src/dxs/commands/configuration.py +0 -0
  29. {datex_studio_cli-0.4.22 → datex_studio_cli-0.4.23}/src/dxs/commands/crm.py +0 -0
  30. {datex_studio_cli-0.4.22 → datex_studio_cli-0.4.23}/src/dxs/commands/crm_delivery.py +0 -0
  31. {datex_studio_cli-0.4.22 → datex_studio_cli-0.4.23}/src/dxs/commands/crm_time.py +0 -0
  32. {datex_studio_cli-0.4.22 → datex_studio_cli-0.4.23}/src/dxs/commands/datasource.py +0 -0
  33. {datex_studio_cli-0.4.22 → datex_studio_cli-0.4.23}/src/dxs/commands/devops.py +0 -0
  34. {datex_studio_cli-0.4.22 → datex_studio_cli-0.4.23}/src/dxs/commands/document.py +0 -0
  35. {datex_studio_cli-0.4.22 → datex_studio_cli-0.4.23}/src/dxs/commands/endpoint.py +0 -0
  36. {datex_studio_cli-0.4.22 → datex_studio_cli-0.4.23}/src/dxs/commands/env.py +0 -0
  37. {datex_studio_cli-0.4.22 → datex_studio_cli-0.4.23}/src/dxs/commands/explore.py +0 -0
  38. {datex_studio_cli-0.4.22 → datex_studio_cli-0.4.23}/src/dxs/commands/function.py +0 -0
  39. {datex_studio_cli-0.4.22 → datex_studio_cli-0.4.23}/src/dxs/commands/init.py +0 -0
  40. {datex_studio_cli-0.4.22 → datex_studio_cli-0.4.23}/src/dxs/commands/marketplace.py +0 -0
  41. {datex_studio_cli-0.4.22 → datex_studio_cli-0.4.23}/src/dxs/commands/ng/__init__.py +0 -0
  42. {datex_studio_cli-0.4.22 → datex_studio_cli-0.4.23}/src/dxs/commands/ng/_common.py +0 -0
  43. {datex_studio_cli-0.4.22 → datex_studio_cli-0.4.23}/src/dxs/commands/ng/api.py +0 -0
  44. {datex_studio_cli-0.4.22 → datex_studio_cli-0.4.23}/src/dxs/commands/ng/create.py +0 -0
  45. {datex_studio_cli-0.4.22 → datex_studio_cli-0.4.23}/src/dxs/commands/ng/data.py +0 -0
  46. {datex_studio_cli-0.4.22 → datex_studio_cli-0.4.23}/src/dxs/commands/ng/pack.py +0 -0
  47. {datex_studio_cli-0.4.22 → datex_studio_cli-0.4.23}/src/dxs/commands/ng/preview.py +0 -0
  48. {datex_studio_cli-0.4.22 → datex_studio_cli-0.4.23}/src/dxs/commands/odata.py +0 -0
  49. {datex_studio_cli-0.4.22 → datex_studio_cli-0.4.23}/src/dxs/commands/organization.py +0 -0
  50. {datex_studio_cli-0.4.22 → datex_studio_cli-0.4.23}/src/dxs/commands/proxy.py +0 -0
  51. {datex_studio_cli-0.4.22 → datex_studio_cli-0.4.23}/src/dxs/commands/reference.py +0 -0
  52. {datex_studio_cli-0.4.22 → datex_studio_cli-0.4.23}/src/dxs/commands/release_notes.py +0 -0
  53. {datex_studio_cli-0.4.22 → datex_studio_cli-0.4.23}/src/dxs/commands/repo.py +0 -0
  54. {datex_studio_cli-0.4.22 → datex_studio_cli-0.4.23}/src/dxs/commands/report/__init__.py +0 -0
  55. {datex_studio_cli-0.4.22 → datex_studio_cli-0.4.23}/src/dxs/commands/report/add_cmds.py +0 -0
  56. {datex_studio_cli-0.4.22 → datex_studio_cli-0.4.23}/src/dxs/commands/report/api.py +0 -0
  57. {datex_studio_cli-0.4.22 → datex_studio_cli-0.4.23}/src/dxs/commands/report/batch.py +0 -0
  58. {datex_studio_cli-0.4.22 → datex_studio_cli-0.4.23}/src/dxs/commands/report/create.py +0 -0
  59. {datex_studio_cli-0.4.22 → datex_studio_cli-0.4.23}/src/dxs/commands/report/data.py +0 -0
  60. {datex_studio_cli-0.4.22 → datex_studio_cli-0.4.23}/src/dxs/commands/report/dataset.py +0 -0
  61. {datex_studio_cli-0.4.22 → datex_studio_cli-0.4.23}/src/dxs/commands/report/edit.py +0 -0
  62. {datex_studio_cli-0.4.22 → datex_studio_cli-0.4.23}/src/dxs/commands/report/folder.py +0 -0
  63. {datex_studio_cli-0.4.22 → datex_studio_cli-0.4.23}/src/dxs/commands/report/preview.py +0 -0
  64. {datex_studio_cli-0.4.22 → datex_studio_cli-0.4.23}/src/dxs/commands/report/schema_cmds.py +0 -0
  65. {datex_studio_cli-0.4.22 → datex_studio_cli-0.4.23}/src/dxs/commands/reset.py +0 -0
  66. {datex_studio_cli-0.4.22 → datex_studio_cli-0.4.23}/src/dxs/commands/schema.py +0 -0
  67. {datex_studio_cli-0.4.22 → datex_studio_cli-0.4.23}/src/dxs/commands/servicepack.py +0 -0
  68. {datex_studio_cli-0.4.22 → datex_studio_cli-0.4.23}/src/dxs/commands/source.py +0 -0
  69. {datex_studio_cli-0.4.22 → datex_studio_cli-0.4.23}/src/dxs/commands/studio.py +0 -0
  70. {datex_studio_cli-0.4.22 → datex_studio_cli-0.4.23}/src/dxs/commands/telemetry.py +0 -0
  71. {datex_studio_cli-0.4.22 → datex_studio_cli-0.4.23}/src/dxs/commands/user.py +0 -0
  72. {datex_studio_cli-0.4.22 → datex_studio_cli-0.4.23}/src/dxs/commands/validation_report.py +0 -0
  73. {datex_studio_cli-0.4.22 → datex_studio_cli-0.4.23}/src/dxs/context.py +0 -0
  74. {datex_studio_cli-0.4.22 → datex_studio_cli-0.4.23}/src/dxs/core/__init__.py +0 -0
  75. {datex_studio_cli-0.4.22 → datex_studio_cli-0.4.23}/src/dxs/core/agent_browser.py +0 -0
  76. {datex_studio_cli-0.4.22 → datex_studio_cli-0.4.23}/src/dxs/core/api/__init__.py +0 -0
  77. {datex_studio_cli-0.4.22 → datex_studio_cli-0.4.23}/src/dxs/core/api/app_config.py +0 -0
  78. {datex_studio_cli-0.4.22 → datex_studio_cli-0.4.23}/src/dxs/core/api/client.py +0 -0
  79. {datex_studio_cli-0.4.22 → datex_studio_cli-0.4.23}/src/dxs/core/api/endpoints.py +0 -0
  80. {datex_studio_cli-0.4.22 → datex_studio_cli-0.4.23}/src/dxs/core/api/metadata_models.py +0 -0
  81. {datex_studio_cli-0.4.22 → datex_studio_cli-0.4.23}/src/dxs/core/api/models.py +0 -0
  82. {datex_studio_cli-0.4.22 → datex_studio_cli-0.4.23}/src/dxs/core/api/reference_graph.py +0 -0
  83. {datex_studio_cli-0.4.22 → datex_studio_cli-0.4.23}/src/dxs/core/auth/__init__.py +0 -0
  84. {datex_studio_cli-0.4.22 → datex_studio_cli-0.4.23}/src/dxs/core/auth/datex_tenant.py +0 -0
  85. {datex_studio_cli-0.4.22 → datex_studio_cli-0.4.23}/src/dxs/core/auth/decorators.py +0 -0
  86. {datex_studio_cli-0.4.22 → datex_studio_cli-0.4.23}/src/dxs/core/auth/msal_client.py +0 -0
  87. {datex_studio_cli-0.4.22 → datex_studio_cli-0.4.23}/src/dxs/core/auth/tenants.py +0 -0
  88. {datex_studio_cli-0.4.22 → datex_studio_cli-0.4.23}/src/dxs/core/auth/token_cache.py +0 -0
  89. {datex_studio_cli-0.4.22 → datex_studio_cli-0.4.23}/src/dxs/core/cache.py +0 -0
  90. {datex_studio_cli-0.4.22 → datex_studio_cli-0.4.23}/src/dxs/core/datasource/__init__.py +0 -0
  91. {datex_studio_cli-0.4.22 → datex_studio_cli-0.4.23}/src/dxs/core/datasource/flow_generator.py +0 -0
  92. {datex_studio_cli-0.4.22 → datex_studio_cli-0.4.23}/src/dxs/core/datasource/flow_models.py +0 -0
  93. {datex_studio_cli-0.4.22 → datex_studio_cli-0.4.23}/src/dxs/core/datasource/flow_shape.py +0 -0
  94. {datex_studio_cli-0.4.22 → datex_studio_cli-0.4.23}/src/dxs/core/datasource/generator.py +0 -0
  95. {datex_studio_cli-0.4.22 → datex_studio_cli-0.4.23}/src/dxs/core/datasource/models.py +0 -0
  96. {datex_studio_cli-0.4.22 → datex_studio_cli-0.4.23}/src/dxs/core/datasource/parsers.py +0 -0
  97. {datex_studio_cli-0.4.22 → datex_studio_cli-0.4.23}/src/dxs/core/datasource/resolver.py +0 -0
  98. {datex_studio_cli-0.4.22 → datex_studio_cli-0.4.23}/src/dxs/core/datasource/type_def_parser.py +0 -0
  99. {datex_studio_cli-0.4.22 → datex_studio_cli-0.4.23}/src/dxs/core/datasource/validator.py +0 -0
  100. {datex_studio_cli-0.4.22 → datex_studio_cli-0.4.23}/src/dxs/core/designer/__init__.py +0 -0
  101. {datex_studio_cli-0.4.22 → datex_studio_cli-0.4.23}/src/dxs/core/designer/flow_models.py +0 -0
  102. {datex_studio_cli-0.4.22 → datex_studio_cli-0.4.23}/src/dxs/core/designer/models.py +0 -0
  103. {datex_studio_cli-0.4.22 → datex_studio_cli-0.4.23}/src/dxs/core/designer/parsers.py +0 -0
  104. {datex_studio_cli-0.4.22 → datex_studio_cli-0.4.23}/src/dxs/core/devops/__init__.py +0 -0
  105. {datex_studio_cli-0.4.22 → datex_studio_cli-0.4.23}/src/dxs/core/devops/client.py +0 -0
  106. {datex_studio_cli-0.4.22 → datex_studio_cli-0.4.23}/src/dxs/core/devops/helpers.py +0 -0
  107. {datex_studio_cli-0.4.22 → datex_studio_cli-0.4.23}/src/dxs/core/devops/models.py +0 -0
  108. {datex_studio_cli-0.4.22 → datex_studio_cli-0.4.23}/src/dxs/core/dynamics/__init__.py +0 -0
  109. {datex_studio_cli-0.4.22 → datex_studio_cli-0.4.23}/src/dxs/core/dynamics/client.py +0 -0
  110. {datex_studio_cli-0.4.22 → datex_studio_cli-0.4.23}/src/dxs/core/dynamics/html.py +0 -0
  111. {datex_studio_cli-0.4.22 → datex_studio_cli-0.4.23}/src/dxs/core/dynamics/metadata_cache.py +0 -0
  112. {datex_studio_cli-0.4.22 → datex_studio_cli-0.4.23}/src/dxs/core/dynamics/pagination.py +0 -0
  113. {datex_studio_cli-0.4.22 → datex_studio_cli-0.4.23}/src/dxs/core/dynamics/resolvers.py +0 -0
  114. {datex_studio_cli-0.4.22 → datex_studio_cli-0.4.23}/src/dxs/core/dynamics/time_entry.py +0 -0
  115. {datex_studio_cli-0.4.22 → datex_studio_cli-0.4.23}/src/dxs/core/footprint/__init__.py +0 -0
  116. {datex_studio_cli-0.4.22 → datex_studio_cli-0.4.23}/src/dxs/core/footprint/client.py +0 -0
  117. {datex_studio_cli-0.4.22 → datex_studio_cli-0.4.23}/src/dxs/core/footprint/edmx_parser.py +0 -0
  118. {datex_studio_cli-0.4.22 → datex_studio_cli-0.4.23}/src/dxs/core/footprint/metadata.py +0 -0
  119. {datex_studio_cli-0.4.22 → datex_studio_cli-0.4.23}/src/dxs/core/function/__init__.py +0 -0
  120. {datex_studio_cli-0.4.22 → datex_studio_cli-0.4.23}/src/dxs/core/function/generator.py +0 -0
  121. {datex_studio_cli-0.4.22 → datex_studio_cli-0.4.23}/src/dxs/core/function/models.py +0 -0
  122. {datex_studio_cli-0.4.22 → datex_studio_cli-0.4.23}/src/dxs/core/function/validator.py +0 -0
  123. {datex_studio_cli-0.4.22 → datex_studio_cli-0.4.23}/src/dxs/core/graph.py +0 -0
  124. {datex_studio_cli-0.4.22 → datex_studio_cli-0.4.23}/src/dxs/core/onboarding.py +0 -0
  125. {datex_studio_cli-0.4.22 → datex_studio_cli-0.4.23}/src/dxs/core/output/__init__.py +0 -0
  126. {datex_studio_cli-0.4.22 → datex_studio_cli-0.4.23}/src/dxs/core/output/csv_fmt.py +0 -0
  127. {datex_studio_cli-0.4.22 → datex_studio_cli-0.4.23}/src/dxs/core/output/formatter.py +0 -0
  128. {datex_studio_cli-0.4.22 → datex_studio_cli-0.4.23}/src/dxs/core/output/json_fmt.py +0 -0
  129. {datex_studio_cli-0.4.22 → datex_studio_cli-0.4.23}/src/dxs/core/output/redaction.py +0 -0
  130. {datex_studio_cli-0.4.22 → datex_studio_cli-0.4.23}/src/dxs/core/output/yaml_fmt.py +0 -0
  131. {datex_studio_cli-0.4.22 → datex_studio_cli-0.4.23}/src/dxs/core/release_notes.py +0 -0
  132. {datex_studio_cli-0.4.22 → datex_studio_cli-0.4.23}/src/dxs/core/responses.py +0 -0
  133. {datex_studio_cli-0.4.22 → datex_studio_cli-0.4.23}/src/dxs/core/telemetry/__init__.py +0 -0
  134. {datex_studio_cli-0.4.22 → datex_studio_cli-0.4.23}/src/dxs/core/telemetry/config.py +0 -0
  135. {datex_studio_cli-0.4.22 → datex_studio_cli-0.4.23}/src/dxs/core/telemetry/identity.py +0 -0
  136. {datex_studio_cli-0.4.22 → datex_studio_cli-0.4.23}/src/dxs/core/telemetry/recorder.py +0 -0
  137. {datex_studio_cli-0.4.22 → datex_studio_cli-0.4.23}/src/dxs/core/telemetry/scrubber.py +0 -0
  138. {datex_studio_cli-0.4.22 → datex_studio_cli-0.4.23}/src/dxs/core/telemetry/sender.py +0 -0
  139. {datex_studio_cli-0.4.22 → datex_studio_cli-0.4.23}/src/dxs/models/__init__.py +0 -0
  140. {datex_studio_cli-0.4.22 → datex_studio_cli-0.4.23}/src/dxs/ng/__init__.py +0 -0
  141. {datex_studio_cli-0.4.22 → datex_studio_cli-0.4.23}/src/dxs/ng/folder.py +0 -0
  142. {datex_studio_cli-0.4.22 → datex_studio_cli-0.4.23}/src/dxs/ng/manifest.py +0 -0
  143. {datex_studio_cli-0.4.22 → datex_studio_cli-0.4.23}/src/dxs/ng/mocks.py +0 -0
  144. {datex_studio_cli-0.4.22 → datex_studio_cli-0.4.23}/src/dxs/ng/preview.py +0 -0
  145. {datex_studio_cli-0.4.22 → datex_studio_cli-0.4.23}/src/dxs/ng/scaffold.py +0 -0
  146. {datex_studio_cli-0.4.22 → datex_studio_cli-0.4.23}/src/dxs/ng/serve_lock.py +0 -0
  147. {datex_studio_cli-0.4.22 → datex_studio_cli-0.4.23}/src/dxs/py.typed +0 -0
  148. {datex_studio_cli-0.4.22 → datex_studio_cli-0.4.23}/src/dxs/report/__init__.py +0 -0
  149. {datex_studio_cli-0.4.22 → datex_studio_cli-0.4.23}/src/dxs/report/datasource_binding.py +0 -0
  150. {datex_studio_cli-0.4.22 → datex_studio_cli-0.4.23}/src/dxs/report/engine.py +0 -0
  151. {datex_studio_cli-0.4.22 → datex_studio_cli-0.4.23}/src/dxs/report/field_parser.py +0 -0
  152. {datex_studio_cli-0.4.22 → datex_studio_cli-0.4.23}/src/dxs/report/folder.py +0 -0
  153. {datex_studio_cli-0.4.22 → datex_studio_cli-0.4.23}/src/dxs/report/manifest.py +0 -0
  154. {datex_studio_cli-0.4.22 → datex_studio_cli-0.4.23}/src/dxs/report/models.py +0 -0
  155. {datex_studio_cli-0.4.22 → datex_studio_cli-0.4.23}/src/dxs/report/preview.py +0 -0
  156. {datex_studio_cli-0.4.22 → datex_studio_cli-0.4.23}/src/dxs/report/preview_arjs.py +0 -0
  157. {datex_studio_cli-0.4.22 → datex_studio_cli-0.4.23}/src/dxs/report/schema.py +0 -0
  158. {datex_studio_cli-0.4.22 → datex_studio_cli-0.4.23}/src/dxs/report/svg_renderer.py +0 -0
  159. {datex_studio_cli-0.4.22 → datex_studio_cli-0.4.23}/src/dxs/report/templates/__init__.py +0 -0
  160. {datex_studio_cli-0.4.22 → datex_studio_cli-0.4.23}/src/dxs/report/templates/bill_of_lading.rdlx-json +0 -0
  161. {datex_studio_cli-0.4.22 → datex_studio_cli-0.4.23}/src/dxs/report/templates/shipping_label.rdlx-json +0 -0
  162. {datex_studio_cli-0.4.22 → datex_studio_cli-0.4.23}/src/dxs/report/validate_arjs.py +0 -0
  163. {datex_studio_cli-0.4.22 → datex_studio_cli-0.4.23}/src/dxs/report/validator.py +0 -0
  164. {datex_studio_cli-0.4.22 → datex_studio_cli-0.4.23}/src/dxs/report/wrapper.py +0 -0
  165. {datex_studio_cli-0.4.22 → datex_studio_cli-0.4.23}/src/dxs/utils/__init__.py +0 -0
  166. {datex_studio_cli-0.4.22 → datex_studio_cli-0.4.23}/src/dxs/utils/click_options.py +0 -0
  167. {datex_studio_cli-0.4.22 → datex_studio_cli-0.4.23}/src/dxs/utils/clipboard.py +0 -0
  168. {datex_studio_cli-0.4.22 → datex_studio_cli-0.4.23}/src/dxs/utils/config.py +0 -0
  169. {datex_studio_cli-0.4.22 → datex_studio_cli-0.4.23}/src/dxs/utils/errors.py +0 -0
  170. {datex_studio_cli-0.4.22 → datex_studio_cli-0.4.23}/src/dxs/utils/filtering.py +0 -0
  171. {datex_studio_cli-0.4.22 → datex_studio_cli-0.4.23}/src/dxs/utils/image.py +0 -0
  172. {datex_studio_cli-0.4.22 → datex_studio_cli-0.4.23}/src/dxs/utils/paths.py +0 -0
  173. {datex_studio_cli-0.4.22 → datex_studio_cli-0.4.23}/src/dxs/utils/resolvers.py +0 -0
  174. {datex_studio_cli-0.4.22 → datex_studio_cli-0.4.23}/src/dxs/utils/responses.py +0 -0
  175. {datex_studio_cli-0.4.22 → datex_studio_cli-0.4.23}/src/dxs/utils/restricted.py +0 -0
  176. {datex_studio_cli-0.4.22 → datex_studio_cli-0.4.23}/src/dxs/utils/sorting.py +0 -0
  177. {datex_studio_cli-0.4.22 → datex_studio_cli-0.4.23}/src/dxs/utils/versioning.py +0 -0
  178. {datex_studio_cli-0.4.22 → datex_studio_cli-0.4.23}/src/dxs/web/__init__.py +0 -0
  179. {datex_studio_cli-0.4.22 → datex_studio_cli-0.4.23}/src/dxs/web/app.py +0 -0
  180. {datex_studio_cli-0.4.22 → datex_studio_cli-0.4.23}/src/dxs/web/design.py +0 -0
  181. {datex_studio_cli-0.4.22 → datex_studio_cli-0.4.23}/src/dxs/web/proxy_app.py +0 -0
  182. {datex_studio_cli-0.4.22 → datex_studio_cli-0.4.23}/src/dxs/web/static/404/index.html +0 -0
  183. {datex_studio_cli-0.4.22 → datex_studio_cli-0.4.23}/src/dxs/web/static/404.html +0 -0
  184. {datex_studio_cli-0.4.22 → datex_studio_cli-0.4.23}/src/dxs/web/static/_next/static/UgyAMtPjH-Pt0RYWOHzIT/_buildManifest.js +0 -0
  185. {datex_studio_cli-0.4.22 → datex_studio_cli-0.4.23}/src/dxs/web/static/_next/static/UgyAMtPjH-Pt0RYWOHzIT/_ssgManifest.js +0 -0
  186. {datex_studio_cli-0.4.22 → datex_studio_cli-0.4.23}/src/dxs/web/static/_next/static/chunks/0b24cca5-c1e1c8810348f107.js +0 -0
  187. {datex_studio_cli-0.4.22 → datex_studio_cli-0.4.23}/src/dxs/web/static/_next/static/chunks/255-102f2e5b2e3dc2ef.js +0 -0
  188. {datex_studio_cli-0.4.22 → datex_studio_cli-0.4.23}/src/dxs/web/static/_next/static/chunks/4bd1b696-c023c6e3521b1417.js +0 -0
  189. {datex_studio_cli-0.4.22 → datex_studio_cli-0.4.23}/src/dxs/web/static/_next/static/chunks/538-84e2e111415f1fda.js +0 -0
  190. {datex_studio_cli-0.4.22 → datex_studio_cli-0.4.23}/src/dxs/web/static/_next/static/chunks/697-0e000ab410d9f470.js +0 -0
  191. {datex_studio_cli-0.4.22 → datex_studio_cli-0.4.23}/src/dxs/web/static/_next/static/chunks/871-1acacdb7b4022abf.js +0 -0
  192. {datex_studio_cli-0.4.22 → datex_studio_cli-0.4.23}/src/dxs/web/static/_next/static/chunks/8b8f67fc-6295949a4b5485a4.js +0 -0
  193. {datex_studio_cli-0.4.22 → datex_studio_cli-0.4.23}/src/dxs/web/static/_next/static/chunks/909-c88abba3cf0caec3.js +0 -0
  194. {datex_studio_cli-0.4.22 → datex_studio_cli-0.4.23}/src/dxs/web/static/_next/static/chunks/app/_not-found/page-ea1be7001c230704.js +0 -0
  195. {datex_studio_cli-0.4.22 → datex_studio_cli-0.4.23}/src/dxs/web/static/_next/static/chunks/app/design/capture/page-a5e129c2d223432c.js +0 -0
  196. {datex_studio_cli-0.4.22 → datex_studio_cli-0.4.23}/src/dxs/web/static/_next/static/chunks/app/design/page-21ba66a3dd3b03f0.js +0 -0
  197. {datex_studio_cli-0.4.22 → datex_studio_cli-0.4.23}/src/dxs/web/static/_next/static/chunks/app/layout-2cc6eac09e476c91.js +0 -0
  198. {datex_studio_cli-0.4.22 → datex_studio_cli-0.4.23}/src/dxs/web/static/_next/static/chunks/app/page-20c358395882cdac.js +0 -0
  199. {datex_studio_cli-0.4.22 → datex_studio_cli-0.4.23}/src/dxs/web/static/_next/static/chunks/framework-de98b93a850cfc71.js +0 -0
  200. {datex_studio_cli-0.4.22 → datex_studio_cli-0.4.23}/src/dxs/web/static/_next/static/chunks/main-0f18f91200dac003.js +0 -0
  201. {datex_studio_cli-0.4.22 → datex_studio_cli-0.4.23}/src/dxs/web/static/_next/static/chunks/main-app-b69998d8941231d8.js +0 -0
  202. {datex_studio_cli-0.4.22 → datex_studio_cli-0.4.23}/src/dxs/web/static/_next/static/chunks/pages/_app-7d307437aca18ad4.js +0 -0
  203. {datex_studio_cli-0.4.22 → datex_studio_cli-0.4.23}/src/dxs/web/static/_next/static/chunks/pages/_error-cb2a52f75f2162e2.js +0 -0
  204. {datex_studio_cli-0.4.22 → datex_studio_cli-0.4.23}/src/dxs/web/static/_next/static/chunks/polyfills-42372ed130431b0a.js +0 -0
  205. {datex_studio_cli-0.4.22 → datex_studio_cli-0.4.23}/src/dxs/web/static/_next/static/chunks/webpack-2b297ada5306c17f.js +0 -0
  206. {datex_studio_cli-0.4.22 → datex_studio_cli-0.4.23}/src/dxs/web/static/_next/static/css/360c657de5e04df8.css +0 -0
  207. {datex_studio_cli-0.4.22 → datex_studio_cli-0.4.23}/src/dxs/web/static/design/capture/index.html +0 -0
  208. {datex_studio_cli-0.4.22 → datex_studio_cli-0.4.23}/src/dxs/web/static/design/capture/index.txt +0 -0
  209. {datex_studio_cli-0.4.22 → datex_studio_cli-0.4.23}/src/dxs/web/static/design/index.html +0 -0
  210. {datex_studio_cli-0.4.22 → datex_studio_cli-0.4.23}/src/dxs/web/static/design/index.txt +0 -0
  211. {datex_studio_cli-0.4.22 → datex_studio_cli-0.4.23}/src/dxs/web/static/index.html +0 -0
  212. {datex_studio_cli-0.4.22 → datex_studio_cli-0.4.23}/src/dxs/web/static/index.txt +0 -0
  213. {datex_studio_cli-0.4.22 → datex_studio_cli-0.4.23}/src/dxs/web/static/render-cli.js +0 -0
  214. {datex_studio_cli-0.4.22 → datex_studio_cli-0.4.23}/src/dxs/web/static/report-preview.html +0 -0
  215. {datex_studio_cli-0.4.22 → datex_studio_cli-0.4.23}/src/dxs/web/static/report-validate.html +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: datex-studio-cli
3
- Version: 0.4.22
3
+ Version: 0.4.23
4
4
  Summary: CLI for Datex Studio low-code platform, designed for LLM-based AI agents
5
5
  Project-URL: Homepage, https://github.com/datex/datex-studio-cli
6
6
  Project-URL: Documentation, https://github.com/datex/datex-studio-cli
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "datex-studio-cli"
7
- version = "0.4.22"
7
+ version = "0.4.23"
8
8
  description = "CLI for Datex Studio low-code platform, designed for LLM-based AI agents"
9
9
  readme = "README.md"
10
10
  license = "MIT"
@@ -1,4 +1,4 @@
1
1
  """Datex Studio CLI - Command-line interface for Datex Studio platform."""
2
2
 
3
- __version__ = "0.4.22"
3
+ __version__ = "0.4.23"
4
4
  __app_name__ = "dxs"
@@ -731,7 +731,8 @@ def update_cmd(yes: bool, check_only: bool) -> None:
731
731
  click.echo(" The upgrade will run in the background once dxs exits.", err=True)
732
732
  click.echo(f" Log: {log_path}", err=True)
733
733
  click.echo(
734
- " The outcome will be reported the next time you run dxs — give it a minute.",
734
+ " The outcome will be reported the next time you run dxs — allow a couple of "
735
+ "minutes; the helper retries while PyPI's CDN catches up after a fresh release.",
735
736
  err=True,
736
737
  )
737
738
  return
@@ -58,6 +58,7 @@ UPDATE_PENDING_FILE = "update_pending.json"
58
58
  UPDATE_PENDING_STALE_SECONDS = 15 * 60
59
59
 
60
60
  _HELPER_MAX_TRIES = 300 # ~5 min of 1s polls per waited-on PID
61
+ _HELPER_UPGRADE_ATTEMPTS = 3 # upgrade retries while PyPI's CDN catches up
61
62
 
62
63
  _CREATE_NO_WINDOW = 0x08000000
63
64
  _CREATE_NEW_PROCESS_GROUP = 0x00000200
@@ -159,16 +160,23 @@ def is_newer(candidate: str, current: str) -> bool:
159
160
 
160
161
 
161
162
  def detect_upgrade_argv() -> list[str]:
162
- """Best-effort detection of how dxs was installed, as an argv list."""
163
+ """Best-effort detection of how dxs was installed, as an argv list.
164
+
165
+ Every variant bypasses the installer's local index cache: uv and pip
166
+ honor PyPI's ``max-age=600`` on the simple index, so right after a
167
+ release they can resolve against an up-to-10-minute-old cached index
168
+ and conclude "nothing to upgrade" even though the live JSON query that
169
+ triggered the upgrade already saw the new version.
170
+ """
163
171
  exe = sys.executable
164
172
  # uv tool installs land under ~/.local/share/uv/tools/<pkg>/...
165
173
  if "/uv/tools/" in exe or "\\uv\\tools\\" in exe:
166
- return ["uv", "tool", "upgrade", PACKAGE_NAME]
174
+ return ["uv", "tool", "upgrade", "--no-cache", PACKAGE_NAME]
167
175
  # pipx installs land under ~/.local/pipx/venvs/<pkg>/...
168
176
  if "/pipx/" in exe or "\\pipx\\" in exe:
169
- return ["pipx", "upgrade", PACKAGE_NAME]
177
+ return ["pipx", "upgrade", "--pip-args=--no-cache-dir", PACKAGE_NAME]
170
178
  # Fallback: pip in whatever interpreter the user is on
171
- return [exe, "-m", "pip", "install", "--upgrade", PACKAGE_NAME]
179
+ return [exe, "-m", "pip", "install", "--upgrade", "--no-cache-dir", PACKAGE_NAME]
172
180
 
173
181
 
174
182
  def detect_upgrade_command() -> str:
@@ -224,7 +232,14 @@ def perform_upgrade_posix(argv: list[str]) -> None:
224
232
  os.execvp(argv[0], argv) # noqa: S606 - deliberate process replacement
225
233
 
226
234
 
227
- def _windows_helper_script(argv: list[str], pid: int, ppid: int, log_path: Path) -> str:
235
+ def _windows_helper_script(
236
+ argv: list[str],
237
+ pid: int,
238
+ ppid: int,
239
+ log_path: Path,
240
+ python_exe: str,
241
+ target_version: str,
242
+ ) -> str:
228
243
  """Generate the detached cmd helper that performs a Windows upgrade.
229
244
 
230
245
  The helper waits for two PIDs: this python process and its parent —
@@ -233,11 +248,19 @@ def _windows_helper_script(argv: list[str], pid: int, ppid: int, log_path: Path)
233
248
  something else — dxs launched from a shell, or a recycled PID — is
234
249
  never awaited, and bounded so a wedged process can't pin the helper
235
250
  forever (the upgrade then runs anyway and the log records the real
236
- error). ``ping -n 2`` is the sleep: ``timeout`` requires an
251
+ error). ``ping -n N`` is the sleep: ``timeout`` requires an
237
252
  interactive console and fails in a detached process.
253
+
254
+ After each upgrade attempt the helper reads the installed version back
255
+ through the tool venv's own interpreter and compares it to the target
256
+ the CLI decided to install. A mismatch retries after ~30s, up to
257
+ {_HELPER_UPGRADE_ATTEMPTS} attempts: PyPI's CDN can keep serving a
258
+ pre-release index for a few minutes after a publish, so a single
259
+ "nothing to upgrade" pass must not be final.
238
260
  """
239
261
  cmdline = subprocess.list2cmdline(argv)
240
262
  log = str(log_path)
263
+ ver_file = f"{log}.ver"
241
264
  lines = [
242
265
  "@echo off",
243
266
  "setlocal",
@@ -260,9 +283,28 @@ def _windows_helper_script(argv: list[str], pid: int, ppid: int, log_path: Path)
260
283
  "goto wait_parent",
261
284
  ")",
262
285
  ":run",
263
- f'echo [dxs update] running: {cmdline} >> "{log}"',
286
+ "set ATTEMPT=0",
287
+ ":attempt",
288
+ "set /a ATTEMPT+=1",
289
+ f'echo [dxs update] attempt %ATTEMPT%: {cmdline} >> "{log}"',
264
290
  f'{cmdline} >> "{log}" 2>&1',
265
291
  f'echo [dxs update] upgrader exit code: %errorlevel% >> "{log}"',
292
+ "set NEWVER=",
293
+ f'"{python_exe}" -c "import dxs; print(dxs.__version__)" > "{ver_file}" 2>>"{log}"',
294
+ f'set /p NEWVER=<"{ver_file}"',
295
+ f'del "{ver_file}" >nul 2>&1',
296
+ f'if "%NEWVER%"=="{target_version}" goto verified',
297
+ f'echo [dxs update] installed version is %NEWVER%, wanted {target_version} >> "{log}"',
298
+ f"if %ATTEMPT% GEQ {_HELPER_UPGRADE_ATTEMPTS} goto giveup",
299
+ f'echo [dxs update] waiting 30s for the package index to catch up... >> "{log}"',
300
+ "ping -n 31 127.0.0.1 >nul",
301
+ "goto attempt",
302
+ ":giveup",
303
+ f'echo [dxs update] giving up after %ATTEMPT% attempts >> "{log}"',
304
+ "goto end",
305
+ ":verified",
306
+ f'echo [dxs update] verified: now on %NEWVER% >> "{log}"',
307
+ ":end",
266
308
  "endlocal",
267
309
  "",
268
310
  ]
@@ -302,7 +344,14 @@ def perform_upgrade_windows(argv: list[str], latest: str) -> Path:
302
344
  home = get_datex_home()
303
345
  log_path = home / UPDATE_LOG_FILE
304
346
  helper_path = home / UPDATE_HELPER_FILE
305
- script = _windows_helper_script(argv, pid=os.getpid(), ppid=os.getppid(), log_path=log_path)
347
+ script = _windows_helper_script(
348
+ argv,
349
+ pid=os.getpid(),
350
+ ppid=os.getppid(),
351
+ log_path=log_path,
352
+ python_exe=sys.executable,
353
+ target_version=latest,
354
+ )
306
355
  helper_path.write_text(script, newline="")
307
356
  _write_pending(
308
357
  {