tinybird 0.0.1.dev298__tar.gz → 0.0.1.dev300__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.

Potentially problematic release.


This version of tinybird might be problematic. Click here for more details.

Files changed (150) hide show
  1. {tinybird-0.0.1.dev298 → tinybird-0.0.1.dev300}/PKG-INFO +3 -3
  2. {tinybird-0.0.1.dev298 → tinybird-0.0.1.dev300}/tinybird/datafile/common.py +4 -1
  3. {tinybird-0.0.1.dev298 → tinybird-0.0.1.dev300}/tinybird/service_datasources.py +56 -0
  4. {tinybird-0.0.1.dev298 → tinybird-0.0.1.dev300}/tinybird/tb/__cli__.py +2 -2
  5. {tinybird-0.0.1.dev298 → tinybird-0.0.1.dev300}/tinybird/tb/modules/agent/agent.py +9 -9
  6. {tinybird-0.0.1.dev298 → tinybird-0.0.1.dev300}/tinybird/tornado_template.py +2 -2
  7. {tinybird-0.0.1.dev298 → tinybird-0.0.1.dev300}/tinybird.egg-info/PKG-INFO +3 -3
  8. {tinybird-0.0.1.dev298 → tinybird-0.0.1.dev300}/tinybird.egg-info/requires.txt +2 -2
  9. {tinybird-0.0.1.dev298 → tinybird-0.0.1.dev300}/setup.cfg +0 -0
  10. {tinybird-0.0.1.dev298 → tinybird-0.0.1.dev300}/tinybird/__cli__.py +0 -0
  11. {tinybird-0.0.1.dev298 → tinybird-0.0.1.dev300}/tinybird/ch_utils/constants.py +0 -0
  12. {tinybird-0.0.1.dev298 → tinybird-0.0.1.dev300}/tinybird/ch_utils/engine.py +0 -0
  13. {tinybird-0.0.1.dev298 → tinybird-0.0.1.dev300}/tinybird/check_pypi.py +0 -0
  14. {tinybird-0.0.1.dev298 → tinybird-0.0.1.dev300}/tinybird/client.py +0 -0
  15. {tinybird-0.0.1.dev298 → tinybird-0.0.1.dev300}/tinybird/config.py +0 -0
  16. {tinybird-0.0.1.dev298 → tinybird-0.0.1.dev300}/tinybird/connectors.py +0 -0
  17. {tinybird-0.0.1.dev298 → tinybird-0.0.1.dev300}/tinybird/context.py +0 -0
  18. {tinybird-0.0.1.dev298 → tinybird-0.0.1.dev300}/tinybird/datafile/exceptions.py +0 -0
  19. {tinybird-0.0.1.dev298 → tinybird-0.0.1.dev300}/tinybird/datafile/parse_connection.py +0 -0
  20. {tinybird-0.0.1.dev298 → tinybird-0.0.1.dev300}/tinybird/datafile/parse_datasource.py +0 -0
  21. {tinybird-0.0.1.dev298 → tinybird-0.0.1.dev300}/tinybird/datafile/parse_pipe.py +0 -0
  22. {tinybird-0.0.1.dev298 → tinybird-0.0.1.dev300}/tinybird/datatypes.py +0 -0
  23. {tinybird-0.0.1.dev298 → tinybird-0.0.1.dev300}/tinybird/feedback_manager.py +0 -0
  24. {tinybird-0.0.1.dev298 → tinybird-0.0.1.dev300}/tinybird/git_settings.py +0 -0
  25. {tinybird-0.0.1.dev298 → tinybird-0.0.1.dev300}/tinybird/prompts.py +0 -0
  26. {tinybird-0.0.1.dev298 → tinybird-0.0.1.dev300}/tinybird/sql.py +0 -0
  27. {tinybird-0.0.1.dev298 → tinybird-0.0.1.dev300}/tinybird/sql_template.py +0 -0
  28. {tinybird-0.0.1.dev298 → tinybird-0.0.1.dev300}/tinybird/sql_template_fmt.py +0 -0
  29. {tinybird-0.0.1.dev298 → tinybird-0.0.1.dev300}/tinybird/sql_toolset.py +0 -0
  30. {tinybird-0.0.1.dev298 → tinybird-0.0.1.dev300}/tinybird/syncasync.py +0 -0
  31. {tinybird-0.0.1.dev298 → tinybird-0.0.1.dev300}/tinybird/tb/check_pypi.py +0 -0
  32. {tinybird-0.0.1.dev298 → tinybird-0.0.1.dev300}/tinybird/tb/cli.py +0 -0
  33. {tinybird-0.0.1.dev298 → tinybird-0.0.1.dev300}/tinybird/tb/client.py +0 -0
  34. {tinybird-0.0.1.dev298 → tinybird-0.0.1.dev300}/tinybird/tb/config.py +0 -0
  35. {tinybird-0.0.1.dev298 → tinybird-0.0.1.dev300}/tinybird/tb/modules/agent/__init__.py +0 -0
  36. {tinybird-0.0.1.dev298 → tinybird-0.0.1.dev300}/tinybird/tb/modules/agent/animations.py +0 -0
  37. {tinybird-0.0.1.dev298 → tinybird-0.0.1.dev300}/tinybird/tb/modules/agent/banner.py +0 -0
  38. {tinybird-0.0.1.dev298 → tinybird-0.0.1.dev300}/tinybird/tb/modules/agent/command_agent.py +0 -0
  39. {tinybird-0.0.1.dev298 → tinybird-0.0.1.dev300}/tinybird/tb/modules/agent/compactor.py +0 -0
  40. {tinybird-0.0.1.dev298 → tinybird-0.0.1.dev300}/tinybird/tb/modules/agent/explore_agent.py +0 -0
  41. {tinybird-0.0.1.dev298 → tinybird-0.0.1.dev300}/tinybird/tb/modules/agent/file_agent.py +0 -0
  42. {tinybird-0.0.1.dev298 → tinybird-0.0.1.dev300}/tinybird/tb/modules/agent/memory.py +0 -0
  43. {tinybird-0.0.1.dev298 → tinybird-0.0.1.dev300}/tinybird/tb/modules/agent/mock_agent.py +0 -0
  44. {tinybird-0.0.1.dev298 → tinybird-0.0.1.dev300}/tinybird/tb/modules/agent/models.py +0 -0
  45. {tinybird-0.0.1.dev298 → tinybird-0.0.1.dev300}/tinybird/tb/modules/agent/prompts.py +0 -0
  46. {tinybird-0.0.1.dev298 → tinybird-0.0.1.dev300}/tinybird/tb/modules/agent/testing_agent.py +0 -0
  47. {tinybird-0.0.1.dev298 → tinybird-0.0.1.dev300}/tinybird/tb/modules/agent/tools/__init__.py +0 -0
  48. {tinybird-0.0.1.dev298 → tinybird-0.0.1.dev300}/tinybird/tb/modules/agent/tools/analyze.py +0 -0
  49. {tinybird-0.0.1.dev298 → tinybird-0.0.1.dev300}/tinybird/tb/modules/agent/tools/append.py +0 -0
  50. {tinybird-0.0.1.dev298 → tinybird-0.0.1.dev300}/tinybird/tb/modules/agent/tools/build.py +0 -0
  51. {tinybird-0.0.1.dev298 → tinybird-0.0.1.dev300}/tinybird/tb/modules/agent/tools/datafile.py +0 -0
  52. {tinybird-0.0.1.dev298 → tinybird-0.0.1.dev300}/tinybird/tb/modules/agent/tools/deploy.py +0 -0
  53. {tinybird-0.0.1.dev298 → tinybird-0.0.1.dev300}/tinybird/tb/modules/agent/tools/deploy_check.py +0 -0
  54. {tinybird-0.0.1.dev298 → tinybird-0.0.1.dev300}/tinybird/tb/modules/agent/tools/diff_resource.py +0 -0
  55. {tinybird-0.0.1.dev298 → tinybird-0.0.1.dev300}/tinybird/tb/modules/agent/tools/execute_query.py +0 -0
  56. {tinybird-0.0.1.dev298 → tinybird-0.0.1.dev300}/tinybird/tb/modules/agent/tools/file.py +0 -0
  57. {tinybird-0.0.1.dev298 → tinybird-0.0.1.dev300}/tinybird/tb/modules/agent/tools/get_endpoint_stats.py +0 -0
  58. {tinybird-0.0.1.dev298 → tinybird-0.0.1.dev300}/tinybird/tb/modules/agent/tools/get_openapi_definition.py +0 -0
  59. {tinybird-0.0.1.dev298 → tinybird-0.0.1.dev300}/tinybird/tb/modules/agent/tools/mock.py +0 -0
  60. {tinybird-0.0.1.dev298 → tinybird-0.0.1.dev300}/tinybird/tb/modules/agent/tools/plan.py +0 -0
  61. {tinybird-0.0.1.dev298 → tinybird-0.0.1.dev300}/tinybird/tb/modules/agent/tools/request_endpoint.py +0 -0
  62. {tinybird-0.0.1.dev298 → tinybird-0.0.1.dev300}/tinybird/tb/modules/agent/tools/run_command.py +0 -0
  63. {tinybird-0.0.1.dev298 → tinybird-0.0.1.dev300}/tinybird/tb/modules/agent/tools/secret.py +0 -0
  64. {tinybird-0.0.1.dev298 → tinybird-0.0.1.dev300}/tinybird/tb/modules/agent/tools/test.py +0 -0
  65. {tinybird-0.0.1.dev298 → tinybird-0.0.1.dev300}/tinybird/tb/modules/agent/utils.py +0 -0
  66. {tinybird-0.0.1.dev298 → tinybird-0.0.1.dev300}/tinybird/tb/modules/build.py +0 -0
  67. {tinybird-0.0.1.dev298 → tinybird-0.0.1.dev300}/tinybird/tb/modules/build_common.py +0 -0
  68. {tinybird-0.0.1.dev298 → tinybird-0.0.1.dev300}/tinybird/tb/modules/cicd.py +0 -0
  69. {tinybird-0.0.1.dev298 → tinybird-0.0.1.dev300}/tinybird/tb/modules/cli.py +0 -0
  70. {tinybird-0.0.1.dev298 → tinybird-0.0.1.dev300}/tinybird/tb/modules/common.py +0 -0
  71. {tinybird-0.0.1.dev298 → tinybird-0.0.1.dev300}/tinybird/tb/modules/config.py +0 -0
  72. {tinybird-0.0.1.dev298 → tinybird-0.0.1.dev300}/tinybird/tb/modules/connection.py +0 -0
  73. {tinybird-0.0.1.dev298 → tinybird-0.0.1.dev300}/tinybird/tb/modules/copy.py +0 -0
  74. {tinybird-0.0.1.dev298 → tinybird-0.0.1.dev300}/tinybird/tb/modules/create.py +0 -0
  75. {tinybird-0.0.1.dev298 → tinybird-0.0.1.dev300}/tinybird/tb/modules/datafile/build.py +0 -0
  76. {tinybird-0.0.1.dev298 → tinybird-0.0.1.dev300}/tinybird/tb/modules/datafile/build_common.py +0 -0
  77. {tinybird-0.0.1.dev298 → tinybird-0.0.1.dev300}/tinybird/tb/modules/datafile/build_datasource.py +0 -0
  78. {tinybird-0.0.1.dev298 → tinybird-0.0.1.dev300}/tinybird/tb/modules/datafile/build_pipe.py +0 -0
  79. {tinybird-0.0.1.dev298 → tinybird-0.0.1.dev300}/tinybird/tb/modules/datafile/diff.py +0 -0
  80. {tinybird-0.0.1.dev298 → tinybird-0.0.1.dev300}/tinybird/tb/modules/datafile/fixture.py +0 -0
  81. {tinybird-0.0.1.dev298 → tinybird-0.0.1.dev300}/tinybird/tb/modules/datafile/format_common.py +0 -0
  82. {tinybird-0.0.1.dev298 → tinybird-0.0.1.dev300}/tinybird/tb/modules/datafile/format_datasource.py +0 -0
  83. {tinybird-0.0.1.dev298 → tinybird-0.0.1.dev300}/tinybird/tb/modules/datafile/format_pipe.py +0 -0
  84. {tinybird-0.0.1.dev298 → tinybird-0.0.1.dev300}/tinybird/tb/modules/datafile/pipe_checker.py +0 -0
  85. {tinybird-0.0.1.dev298 → tinybird-0.0.1.dev300}/tinybird/tb/modules/datafile/playground.py +0 -0
  86. {tinybird-0.0.1.dev298 → tinybird-0.0.1.dev300}/tinybird/tb/modules/datafile/pull.py +0 -0
  87. {tinybird-0.0.1.dev298 → tinybird-0.0.1.dev300}/tinybird/tb/modules/datasource.py +0 -0
  88. {tinybird-0.0.1.dev298 → tinybird-0.0.1.dev300}/tinybird/tb/modules/deployment.py +0 -0
  89. {tinybird-0.0.1.dev298 → tinybird-0.0.1.dev300}/tinybird/tb/modules/deployment_common.py +0 -0
  90. {tinybird-0.0.1.dev298 → tinybird-0.0.1.dev300}/tinybird/tb/modules/deprecations.py +0 -0
  91. {tinybird-0.0.1.dev298 → tinybird-0.0.1.dev300}/tinybird/tb/modules/dev_server.py +0 -0
  92. {tinybird-0.0.1.dev298 → tinybird-0.0.1.dev300}/tinybird/tb/modules/endpoint.py +0 -0
  93. {tinybird-0.0.1.dev298 → tinybird-0.0.1.dev300}/tinybird/tb/modules/exceptions.py +0 -0
  94. {tinybird-0.0.1.dev298 → tinybird-0.0.1.dev300}/tinybird/tb/modules/feedback_manager.py +0 -0
  95. {tinybird-0.0.1.dev298 → tinybird-0.0.1.dev300}/tinybird/tb/modules/info.py +0 -0
  96. {tinybird-0.0.1.dev298 → tinybird-0.0.1.dev300}/tinybird/tb/modules/infra.py +0 -0
  97. {tinybird-0.0.1.dev298 → tinybird-0.0.1.dev300}/tinybird/tb/modules/job.py +0 -0
  98. {tinybird-0.0.1.dev298 → tinybird-0.0.1.dev300}/tinybird/tb/modules/llm.py +0 -0
  99. {tinybird-0.0.1.dev298 → tinybird-0.0.1.dev300}/tinybird/tb/modules/llm_utils.py +0 -0
  100. {tinybird-0.0.1.dev298 → tinybird-0.0.1.dev300}/tinybird/tb/modules/local.py +1 -1
  101. {tinybird-0.0.1.dev298 → tinybird-0.0.1.dev300}/tinybird/tb/modules/local_common.py +2 -2
  102. {tinybird-0.0.1.dev298 → tinybird-0.0.1.dev300}/tinybird/tb/modules/login.py +0 -0
  103. {tinybird-0.0.1.dev298 → tinybird-0.0.1.dev300}/tinybird/tb/modules/login_common.py +0 -0
  104. {tinybird-0.0.1.dev298 → tinybird-0.0.1.dev300}/tinybird/tb/modules/logout.py +0 -0
  105. {tinybird-0.0.1.dev298 → tinybird-0.0.1.dev300}/tinybird/tb/modules/materialization.py +0 -0
  106. {tinybird-0.0.1.dev298 → tinybird-0.0.1.dev300}/tinybird/tb/modules/mock.py +0 -0
  107. {tinybird-0.0.1.dev298 → tinybird-0.0.1.dev300}/tinybird/tb/modules/mock_common.py +0 -0
  108. {tinybird-0.0.1.dev298 → tinybird-0.0.1.dev300}/tinybird/tb/modules/open.py +0 -0
  109. {tinybird-0.0.1.dev298 → tinybird-0.0.1.dev300}/tinybird/tb/modules/pipe.py +0 -0
  110. {tinybird-0.0.1.dev298 → tinybird-0.0.1.dev300}/tinybird/tb/modules/project.py +0 -0
  111. {tinybird-0.0.1.dev298 → tinybird-0.0.1.dev300}/tinybird/tb/modules/regions.py +0 -0
  112. {tinybird-0.0.1.dev298 → tinybird-0.0.1.dev300}/tinybird/tb/modules/secret.py +0 -0
  113. {tinybird-0.0.1.dev298 → tinybird-0.0.1.dev300}/tinybird/tb/modules/secret_common.py +0 -0
  114. {tinybird-0.0.1.dev298 → tinybird-0.0.1.dev300}/tinybird/tb/modules/shell.py +0 -0
  115. {tinybird-0.0.1.dev298 → tinybird-0.0.1.dev300}/tinybird/tb/modules/sink.py +0 -0
  116. {tinybird-0.0.1.dev298 → tinybird-0.0.1.dev300}/tinybird/tb/modules/table.py +0 -0
  117. {tinybird-0.0.1.dev298 → tinybird-0.0.1.dev300}/tinybird/tb/modules/telemetry.py +0 -0
  118. {tinybird-0.0.1.dev298 → tinybird-0.0.1.dev300}/tinybird/tb/modules/test.py +0 -0
  119. {tinybird-0.0.1.dev298 → tinybird-0.0.1.dev300}/tinybird/tb/modules/test_common.py +0 -0
  120. {tinybird-0.0.1.dev298 → tinybird-0.0.1.dev300}/tinybird/tb/modules/tinyunit/tinyunit.py +0 -0
  121. {tinybird-0.0.1.dev298 → tinybird-0.0.1.dev300}/tinybird/tb/modules/tinyunit/tinyunit_lib.py +0 -0
  122. {tinybird-0.0.1.dev298 → tinybird-0.0.1.dev300}/tinybird/tb/modules/token.py +0 -0
  123. {tinybird-0.0.1.dev298 → tinybird-0.0.1.dev300}/tinybird/tb/modules/watch.py +0 -0
  124. {tinybird-0.0.1.dev298 → tinybird-0.0.1.dev300}/tinybird/tb/modules/workspace.py +0 -0
  125. {tinybird-0.0.1.dev298 → tinybird-0.0.1.dev300}/tinybird/tb/modules/workspace_members.py +0 -0
  126. {tinybird-0.0.1.dev298 → tinybird-0.0.1.dev300}/tinybird/tb_cli.py +0 -0
  127. {tinybird-0.0.1.dev298 → tinybird-0.0.1.dev300}/tinybird/tb_cli_modules/auth.py +0 -0
  128. {tinybird-0.0.1.dev298 → tinybird-0.0.1.dev300}/tinybird/tb_cli_modules/branch.py +0 -0
  129. {tinybird-0.0.1.dev298 → tinybird-0.0.1.dev300}/tinybird/tb_cli_modules/cicd.py +0 -0
  130. {tinybird-0.0.1.dev298 → tinybird-0.0.1.dev300}/tinybird/tb_cli_modules/cli.py +0 -0
  131. {tinybird-0.0.1.dev298 → tinybird-0.0.1.dev300}/tinybird/tb_cli_modules/common.py +0 -0
  132. {tinybird-0.0.1.dev298 → tinybird-0.0.1.dev300}/tinybird/tb_cli_modules/config.py +0 -0
  133. {tinybird-0.0.1.dev298 → tinybird-0.0.1.dev300}/tinybird/tb_cli_modules/connection.py +0 -0
  134. {tinybird-0.0.1.dev298 → tinybird-0.0.1.dev300}/tinybird/tb_cli_modules/datasource.py +0 -0
  135. {tinybird-0.0.1.dev298 → tinybird-0.0.1.dev300}/tinybird/tb_cli_modules/exceptions.py +0 -0
  136. {tinybird-0.0.1.dev298 → tinybird-0.0.1.dev300}/tinybird/tb_cli_modules/fmt.py +0 -0
  137. {tinybird-0.0.1.dev298 → tinybird-0.0.1.dev300}/tinybird/tb_cli_modules/job.py +0 -0
  138. {tinybird-0.0.1.dev298 → tinybird-0.0.1.dev300}/tinybird/tb_cli_modules/pipe.py +0 -0
  139. {tinybird-0.0.1.dev298 → tinybird-0.0.1.dev300}/tinybird/tb_cli_modules/regions.py +0 -0
  140. {tinybird-0.0.1.dev298 → tinybird-0.0.1.dev300}/tinybird/tb_cli_modules/tag.py +0 -0
  141. {tinybird-0.0.1.dev298 → tinybird-0.0.1.dev300}/tinybird/tb_cli_modules/telemetry.py +0 -0
  142. {tinybird-0.0.1.dev298 → tinybird-0.0.1.dev300}/tinybird/tb_cli_modules/test.py +0 -0
  143. {tinybird-0.0.1.dev298 → tinybird-0.0.1.dev300}/tinybird/tb_cli_modules/tinyunit/tinyunit.py +0 -0
  144. {tinybird-0.0.1.dev298 → tinybird-0.0.1.dev300}/tinybird/tb_cli_modules/tinyunit/tinyunit_lib.py +0 -0
  145. {tinybird-0.0.1.dev298 → tinybird-0.0.1.dev300}/tinybird/tb_cli_modules/workspace.py +0 -0
  146. {tinybird-0.0.1.dev298 → tinybird-0.0.1.dev300}/tinybird/tb_cli_modules/workspace_members.py +0 -0
  147. {tinybird-0.0.1.dev298 → tinybird-0.0.1.dev300}/tinybird.egg-info/SOURCES.txt +0 -0
  148. {tinybird-0.0.1.dev298 → tinybird-0.0.1.dev300}/tinybird.egg-info/dependency_links.txt +0 -0
  149. {tinybird-0.0.1.dev298 → tinybird-0.0.1.dev300}/tinybird.egg-info/entry_points.txt +0 -0
  150. {tinybird-0.0.1.dev298 → tinybird-0.0.1.dev300}/tinybird.egg-info/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: tinybird
3
- Version: 0.0.1.dev298
3
+ Version: 0.0.1.dev300
4
4
  Summary: Tinybird Command Line Tool
5
5
  Home-page: https://www.tinybird.co/docs/forward/commands
6
6
  Author: Tinybird
@@ -13,7 +13,7 @@ Requires-Dist: boto3
13
13
  Requires-Dist: click<8.2,>=8.1.6
14
14
  Requires-Dist: clickhouse-toolset==0.34.dev0
15
15
  Requires-Dist: colorama==0.4.6
16
- Requires-Dist: confluent-kafka==2.8.0
16
+ Requires-Dist: confluent-kafka==2.8.2
17
17
  Requires-Dist: cryptography~=41.0.0
18
18
  Requires-Dist: croniter==1.3.15
19
19
  Requires-Dist: docker==7.1.0
@@ -25,7 +25,7 @@ Requires-Dist: logfire-api==4.2.0
25
25
  Requires-Dist: pydantic~=2.11.7
26
26
  Requires-Dist: pydantic-ai-slim[anthropic]~=0.5.0
27
27
  Requires-Dist: pydantic-ai-slim[retries]~=0.5.0
28
- Requires-Dist: pyperclip==1.8.2
28
+ Requires-Dist: pyperclip==1.9.0
29
29
  Requires-Dist: pyyaml<6.1,>=6.0
30
30
  Requires-Dist: requests<3,>=2.28.1
31
31
  Requires-Dist: shandy-sqlfmt==0.11.1
@@ -630,7 +630,10 @@ class Datafile:
630
630
  def _validate_single_column(self, col_name: str, column_info: Dict[str, Any]) -> None:
631
631
  """Validate a single column for use in sorting keys."""
632
632
  col_type = column_info.get("type", "").lower()
633
- is_nullable = column_info.get("nullable", False)
633
+
634
+ # we need to check any presence of Nullable in the column type
635
+ is_nullable = column_info.get("nullable", False) or "Nullable(" in column_info.get("type", "")
636
+
634
637
  if is_nullable:
635
638
  raise DatafileValidationError(
636
639
  f"Sorting key contains nullable column '{col_name}'. Nullable columns cannot be used in sorting keys."
@@ -428,6 +428,34 @@ def get_tinybird_service_datasources() -> List[Dict[str, Any]]:
428
428
  {"name": "total_cpu_time_seconds", "type": "Float64"},
429
429
  ],
430
430
  },
431
+ {
432
+ "name": "tinybird.llm_usage",
433
+ "description": "LLM usage metrics from Tinybird AI features including token consumption, costs, and model usage for each request in the workspace.",
434
+ "dateColumn": "start_time",
435
+ "engine": {
436
+ "engine": "MergeTree",
437
+ "sorting_key": "workspace_id, start_time, user_email, request_id",
438
+ "partition_key": "toYYYYMM(start_time)",
439
+ },
440
+ "columns": [
441
+ {"name": "start_time", "type": "DateTime"},
442
+ {"name": "end_time", "type": "DateTime"},
443
+ {"name": "organization_id", "type": "String"},
444
+ {"name": "organization_name", "type": "String"},
445
+ {"name": "workspace_id", "type": "String"},
446
+ {"name": "workspace_name", "type": "String"},
447
+ {"name": "user_email", "type": "String"},
448
+ {"name": "request_id", "type": "String"},
449
+ {"name": "model", "type": "LowCardinality(String)"},
450
+ {"name": "prompt_tokens", "type": "UInt32"},
451
+ {"name": "completion_tokens", "type": "UInt32"},
452
+ {"name": "total_tokens", "type": "UInt32"},
453
+ {"name": "duration", "type": "Float32"},
454
+ {"name": "cost", "type": "Float32"},
455
+ {"name": "origin", "type": "String"},
456
+ {"name": "feature", "type": "String"},
457
+ ],
458
+ },
431
459
  ]
432
460
 
433
461
 
@@ -881,6 +909,34 @@ def get_organization_service_datasources() -> List[Dict[str, Any]]:
881
909
  {"name": "total_written_bytes", "type": "UInt64"},
882
910
  ],
883
911
  },
912
+ {
913
+ "name": "organization.llm_usage",
914
+ "description": "LLM usage metrics from Tinybird AI features including token consumption, costs, and model usage for each request in the organization.",
915
+ "dateColumn": "start_time",
916
+ "engine": {
917
+ "engine": "MergeTree",
918
+ "sorting_key": "workspace_id, start_time, user_email, request_id",
919
+ "partition_key": "toYYYYMM(start_time)",
920
+ },
921
+ "columns": [
922
+ {"name": "start_time", "type": "DateTime"},
923
+ {"name": "end_time", "type": "DateTime"},
924
+ {"name": "organization_id", "type": "String"},
925
+ {"name": "organization_name", "type": "String"},
926
+ {"name": "workspace_id", "type": "String"},
927
+ {"name": "workspace_name", "type": "String"},
928
+ {"name": "user_email", "type": "String"},
929
+ {"name": "request_id", "type": "String"},
930
+ {"name": "model", "type": "LowCardinality(String)"},
931
+ {"name": "prompt_tokens", "type": "UInt32"},
932
+ {"name": "completion_tokens", "type": "UInt32"},
933
+ {"name": "total_tokens", "type": "UInt32"},
934
+ {"name": "duration", "type": "Float32"},
935
+ {"name": "cost", "type": "Float32"},
936
+ {"name": "origin", "type": "String"},
937
+ {"name": "feature", "type": "String"},
938
+ ],
939
+ },
884
940
  ]
885
941
 
886
942
 
@@ -4,5 +4,5 @@ __description__ = 'Tinybird Command Line Tool'
4
4
  __url__ = 'https://www.tinybird.co/docs/forward/commands'
5
5
  __author__ = 'Tinybird'
6
6
  __author_email__ = 'support@tinybird.co'
7
- __version__ = '0.0.1.dev298'
8
- __revision__ = '86d8c44'
7
+ __version__ = '0.0.1.dev300'
8
+ __revision__ = '9791d55'
@@ -463,18 +463,18 @@ class TinybirdAgent:
463
463
  workspace_id = config.get("id", "")
464
464
  workspace = client.workspace(workspace_id, with_organization=True, version="v1")
465
465
  limits_data = client.organization_limits(workspace["organization"]["id"])
466
- ai_credits_limits = limits_data.get("limits", {}).get("ai_credits", {})
467
- current_ai_credits = ai_credits_limits.get("quantity") or 0
468
- ai_credits = ai_credits_limits.get("max") or 0
469
- remaining_credits = round(max(ai_credits - current_ai_credits, 0), 2)
470
- current_ai_credits = round(min(ai_credits, current_ai_credits), 2)
471
- if not ai_credits:
466
+ llm_usage_limits = limits_data.get("limits", {}).get("llm_usage", {})
467
+ current_llm_usage = llm_usage_limits.get("quantity") or 0
468
+ llm_usage = llm_usage_limits.get("max") or 0
469
+ remaining_credits = round(max(llm_usage - current_llm_usage, 0), 2)
470
+ current_llm_usage = round(min(llm_usage, current_llm_usage), 2)
471
+ if not llm_usage:
472
472
  return
473
- warning_threshold = ai_credits * 0.8
474
- message_color = FeedbackManager.warning if current_ai_credits >= warning_threshold else FeedbackManager.gray
473
+ warning_threshold = llm_usage * 0.8
474
+ message_color = FeedbackManager.warning if current_llm_usage >= warning_threshold else FeedbackManager.gray
475
475
  click.echo(
476
476
  message_color(
477
- message=f"{remaining_credits} credits left ({current_ai_credits}/{ai_credits}). You can continue using Tinybird Code. Limits will be enforced soon."
477
+ message=f"{remaining_credits} credits left ({current_llm_usage}/{llm_usage}). You can continue using Tinybird Code. Limits will be enforced soon."
478
478
  )
479
479
  )
480
480
  except Exception:
@@ -1169,7 +1169,7 @@ def check_valid_expr(expr):
1169
1169
  check_valid_expr(expr.slice.lower)
1170
1170
  if expr.slice.upper is not None:
1171
1171
  check_valid_expr(expr.slice.upper)
1172
- elif isinstance(expr.slice, ast.Constant) or isinstance(expr.slice, ast.Subscript):
1172
+ elif isinstance(expr.slice, (ast.Constant, ast.Subscript)):
1173
1173
  check_valid_expr(expr.slice)
1174
1174
  else:
1175
1175
  raise SecurityException(f"Invalid Slice expression: {ast.dump(expr.slice)}")
@@ -1178,7 +1178,7 @@ def check_valid_expr(expr):
1178
1178
  check_valid_expr(key)
1179
1179
  for value in expr.values:
1180
1180
  check_valid_expr(value)
1181
- elif isinstance(expr, ast.Tuple) or isinstance(expr, ast.List) or isinstance(expr, ast.Set):
1181
+ elif isinstance(expr, (ast.Tuple, ast.List, ast.Set)):
1182
1182
  for x in expr.elts:
1183
1183
  check_valid_expr(x)
1184
1184
  elif isinstance(expr, ast.JoinedStr):
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: tinybird
3
- Version: 0.0.1.dev298
3
+ Version: 0.0.1.dev300
4
4
  Summary: Tinybird Command Line Tool
5
5
  Home-page: https://www.tinybird.co/docs/forward/commands
6
6
  Author: Tinybird
@@ -13,7 +13,7 @@ Requires-Dist: boto3
13
13
  Requires-Dist: click<8.2,>=8.1.6
14
14
  Requires-Dist: clickhouse-toolset==0.34.dev0
15
15
  Requires-Dist: colorama==0.4.6
16
- Requires-Dist: confluent-kafka==2.8.0
16
+ Requires-Dist: confluent-kafka==2.8.2
17
17
  Requires-Dist: cryptography~=41.0.0
18
18
  Requires-Dist: croniter==1.3.15
19
19
  Requires-Dist: docker==7.1.0
@@ -25,7 +25,7 @@ Requires-Dist: logfire-api==4.2.0
25
25
  Requires-Dist: pydantic~=2.11.7
26
26
  Requires-Dist: pydantic-ai-slim[anthropic]~=0.5.0
27
27
  Requires-Dist: pydantic-ai-slim[retries]~=0.5.0
28
- Requires-Dist: pyperclip==1.8.2
28
+ Requires-Dist: pyperclip==1.9.0
29
29
  Requires-Dist: pyyaml<6.1,>=6.0
30
30
  Requires-Dist: requests<3,>=2.28.1
31
31
  Requires-Dist: shandy-sqlfmt==0.11.1
@@ -4,7 +4,7 @@ boto3
4
4
  click<8.2,>=8.1.6
5
5
  clickhouse-toolset==0.34.dev0
6
6
  colorama==0.4.6
7
- confluent-kafka==2.8.0
7
+ confluent-kafka==2.8.2
8
8
  cryptography~=41.0.0
9
9
  croniter==1.3.15
10
10
  docker==7.1.0
@@ -16,7 +16,7 @@ logfire-api==4.2.0
16
16
  pydantic~=2.11.7
17
17
  pydantic-ai-slim[anthropic]~=0.5.0
18
18
  pydantic-ai-slim[retries]~=0.5.0
19
- pyperclip==1.8.2
19
+ pyperclip==1.9.0
20
20
  pyyaml<6.1,>=6.0
21
21
  requests<3,>=2.28.1
22
22
  shandy-sqlfmt==0.11.1
@@ -2,8 +2,8 @@ from pathlib import Path
2
2
 
3
3
  import click
4
4
  import requests
5
-
6
5
  from docker.client import DockerClient
6
+
7
7
  from tinybird.tb.modules.cli import cli
8
8
  from tinybird.tb.modules.common import update_cli
9
9
  from tinybird.tb.modules.feedback_manager import FeedbackManager
@@ -11,10 +11,10 @@ from typing import Any, Dict, Optional
11
11
  import boto3
12
12
  import click
13
13
  import requests
14
-
15
- import docker
16
14
  from docker.client import DockerClient
17
15
  from docker.models.containers import Container
16
+
17
+ import docker
18
18
  from tinybird.tb.client import AuthNoTokenException, TinyB
19
19
  from tinybird.tb.modules.config import CLIConfig
20
20
  from tinybird.tb.modules.exceptions import CLILocalException