tinybird 0.0.1.dev276__py3-none-any.whl → 0.0.1.dev278__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


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

tinybird/tb/__cli__.py CHANGED
@@ -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.dev276'
8
- __revision__ = '6716ae6'
7
+ __version__ = '0.0.1.dev278'
8
+ __revision__ = '422553e'
@@ -95,7 +95,7 @@ class TinybirdAgent:
95
95
  self.agent = Agent(
96
96
  model=create_model(user_token, host, workspace_id),
97
97
  deps_type=TinybirdAgentContext,
98
- system_prompt=agent_system_prompt,
98
+ instructions=[agent_system_prompt],
99
99
  tools=[
100
100
  Tool(create_datafile, docstring_format="google", require_parameter_descriptions=True, takes_ctx=True),
101
101
  Tool(remove_file, docstring_format="google", require_parameter_descriptions=True, takes_ctx=True),
@@ -193,7 +193,7 @@ class TinybirdAgent:
193
193
  str: The result of the command.
194
194
  """
195
195
  result = self.command_agent.run(task, deps=ctx.deps, usage=ctx.usage)
196
- return result.output
196
+ return f"Result: {result.output}\nDo not repeat in your response the result again, because it is already displayed in the terminal."
197
197
 
198
198
  @self.agent.tool
199
199
  def explore_data(ctx: RunContext[TinybirdAgentContext], task: str) -> str:
@@ -740,7 +740,7 @@ def is_natural_language(user_input: str, user_token: str, host: str) -> bool:
740
740
 
741
741
  prompt = """Analyze the following text and determine if it's natural language or a SQL query.
742
742
 
743
- Respond with only "NATURAL" if it's natural language (like a question, request, or conversational text), or "SQL" if it's a SQL query (like SELECT, WITH, INSERT, UPDATE, DELETE, etc. statements).
743
+ Respond with only "NATURAL" if it's natural language (like a question, request, or conversational text), or "SQL" if it's a SQL query starting with SELECT or WITH statements.
744
744
 
745
745
  Examples:
746
746
  - "show me all users" -> NATURAL
@@ -748,8 +748,11 @@ Examples:
748
748
  - "SELECT * FROM users" -> SQL
749
749
  - "WITH cte AS (SELECT...) SELECT..." -> SQL
750
750
  - "select count(*) from orders" -> SQL
751
- - "help me analyze the data" -> NATURAL"""
751
+ - "help me analyze the data" -> NATURAL
752
+ - "select some page hits from analytics_events that happened yesterday" -> NATURAL
752
753
 
754
+ IMPORTANT: If you're not sure, default to NATURAL.
755
+ """
753
756
  try:
754
757
  thinking_animation = ThinkingAnimation()
755
758
  thinking_animation.start()
@@ -4,7 +4,7 @@ from pydantic_ai.usage import Usage
4
4
 
5
5
  from tinybird.tb.modules.agent.animations import ThinkingAnimation
6
6
  from tinybird.tb.modules.agent.models import create_model
7
- from tinybird.tb.modules.agent.prompts import tests_files_prompt
7
+ from tinybird.tb.modules.agent.prompts import available_commands, tests_files_prompt
8
8
  from tinybird.tb.modules.agent.tools.run_command import run_command
9
9
  from tinybird.tb.modules.agent.utils import TinybirdAgentContext
10
10
  from tinybird.tb.modules.project import Project
@@ -34,13 +34,17 @@ class CommandAgent:
34
34
  model=create_model(user_token, host, workspace_id),
35
35
  deps_type=TinybirdAgentContext,
36
36
  instructions=[
37
- """
37
+ f"""
38
38
  You are part of Tinybird Code, an agentic CLI that can help users to work with Tinybird.
39
39
  You are a sub-agent of the main Tinybird Code agent. You are responsible for running commands on the user's machine.
40
40
  You will be given a task to perform and you will use `run_command` tool to complete it.
41
41
  If you do not find a command that can solve the task, just say that there is no command that can solve the task.
42
42
  You can run `-h` in every level of the command to get help. E.g. `tb -h`, `tb datasource -h`, `tb datasource ls -h`.
43
43
  When you need to access Tinybird Cloud, add the `--cloud` flag. E.g. `tb --cloud datasource ls`.
44
+ Available commands:
45
+ {available_commands}
46
+ IMPORTANT: Do NOT use any command that is not in the list above.
47
+ IMPORTANT: If you don't have the proper command to solve the task, just answer that you cannot solve the task.
44
48
  Token and host are not required to add to the commands.
45
49
  Always run first help commands to be sure that the commands you are running is not interactive.
46
50
  """,
@@ -15,6 +15,28 @@ from tinybird.prompts import (
15
15
  )
16
16
  from tinybird.tb.modules.project import Project
17
17
 
18
+ available_commands = [
19
+ "`tb connection ls`: List all connections",
20
+ "`tb copy ls`: List all copy pipes",
21
+ "`tb copy run [pipe_name] --mode [mode] --param [param]`: Run a copy pipe",
22
+ "`tb datasource ls`: List all datasources",
23
+ "`tb datasource sync [datasource_name] --yes`: Sync a datasource with an s3 or gcs connection",
24
+ "`tb datasource truncate [datasource_name] --yes`: Truncate a datasource",
25
+ "`tb endpoint ls`: List all endpoints",
26
+ "`tb open`: Open the dashboard in the browser",
27
+ "`tb info`: Show information about the project",
28
+ "`tb job ls`: List all jobs",
29
+ "`tb job cancel [job_id]`: Cancel a job",
30
+ "`tb deployment ls`: List all deployments (if user does not specify use tb --cloud)",
31
+ "`tb deployment discard`: Discard a deployment (if user does not specify use tb --cloud)",
32
+ "`tb token ls`: List all tokens",
33
+ "`tb materialization ls`: List all materializations",
34
+ "`tb pipe ls`: List all pipes",
35
+ "`tb sink ls`: List all sinks",
36
+ "`tb workspace current`: Show the current workspace",
37
+ "`tb workspace clear --yes`: Delete all resources in the workspace (Only available in Tinybird Local)",
38
+ ]
39
+
18
40
  plan_instructions = """
19
41
  When asked to create a plan, you MUST respond with this EXACT format and NOTHING ELSE:
20
42
 
@@ -118,6 +140,32 @@ datafile_instructions = """
118
140
  </datafile_instructions>
119
141
  """
120
142
 
143
+ datasource_example_with_token = """
144
+ <datasource_example_with_token>
145
+ TOKEN app_read READ
146
+ TOKEN landing_read READ
147
+ TOKEN landing_append APPEND
148
+
149
+ DESCRIPTION >
150
+ ...
151
+
152
+ SCHEMA >
153
+ ...
154
+ </datasource_example_with_token>
155
+ """
156
+
157
+ pipe_example_with_token = """
158
+ <pipe_example_with_token>
159
+ TOKEN app_read READ
160
+
161
+ NODE node_1
162
+ SQL >
163
+ %
164
+ SELECT
165
+ ..
166
+ </pipe_example_with_token>
167
+ """
168
+
121
169
 
122
170
  def resources_prompt(project: Project) -> str:
123
171
  files = project.get_project_files()
@@ -796,6 +844,22 @@ IMPORTANT: Every time you finish a plan and start a new resource creation or upd
796
844
  {pipe_instructions}
797
845
  {pipe_example}
798
846
 
847
+ # When working with tokens:
848
+ - Resource-scoped tokens are created and updated through datafiles.
849
+ - Tinybird will keep track of which ones to create or destroy based on all the tokens defined within the data files in your project.
850
+ - Scopes available are:
851
+ - DATASOURCES:READ:datasource_name => `TOKEN <token_name> READ` in .datasource files
852
+ - DATASOURCES:APPEND:datasource_name => `TOKEN <token_name> APPEND` in .datasource files
853
+ - PIPES:READ:pipe_name => `TOKEN <token_name> READ` in .pipe files
854
+ - Examples:
855
+ {datasource_example_with_token}
856
+ {pipe_example_with_token}
857
+ - For operational tokens that are not tied to specific resources. Run the following command in the CLI:
858
+ ```
859
+ tb token create static new_admin_token --scope <scope>
860
+ ```
861
+ where <scope> is one of the following: `TOKENS`, `ADMIN`, `ORG_DATASOURCES:READ`
862
+
799
863
  # Working with materialized pipe files:
800
864
  {materialized_pipe_instructions}
801
865
 
@@ -844,6 +908,10 @@ IMPORTANT: Every time you finish a plan and start a new resource creation or upd
844
908
 
845
909
  # Working with commands:
846
910
  - If you dont have a tool that can solve the task, use `run_command` tool to check if the task can be solved with a normal tinybird cli command.
911
+ - Available commands: {available_commands}
912
+
913
+ # When asked about the files in the project:
914
+ - You can rely in your own context to answer the question.
847
915
 
848
916
  # Info
849
917
  Today is {datetime.now().strftime("%Y-%m-%d")}
@@ -15,10 +15,10 @@ def run_command(ctx: RunContext[TinybirdAgentContext], command: str):
15
15
  """
16
16
  try:
17
17
  ctx.deps.thinking_animation.stop()
18
- is_deploy = " deploy " in command.lower()
18
+ force_confirmation = " deploy" in command.lower() or " truncate" in command.lower()
19
19
  confirmation = show_confirmation(
20
20
  title=f"Run command: {command}?",
21
- skip_confirmation=ctx.deps.dangerously_skip_permissions and not is_deploy,
21
+ skip_confirmation=ctx.deps.dangerously_skip_permissions and not force_confirmation,
22
22
  )
23
23
 
24
24
  if confirmation == "review":
@@ -629,6 +629,8 @@ def datasource_export(
629
629
  @click.option("--yes", is_flag=True, default=False, help="Do not ask for confirmation")
630
630
  @click.pass_context
631
631
  def datasource_sync(ctx: Context, datasource_name: str, yes: bool):
632
+ """Sync from a GCS or S3 connection defined in .datasource file"""
633
+
632
634
  try:
633
635
  client: TinyB = ctx.obj["client"]
634
636
  ds = client.get_datasource(datasource_name)
@@ -134,12 +134,6 @@ def workspace_current(ctx: Context):
134
134
 
135
135
  @workspace.command(name="create", short_help="Create a new Workspace for your Tinybird user")
136
136
  @click.argument("workspace_name", required=False)
137
- @click.option(
138
- "--fork",
139
- is_flag=True,
140
- default=False,
141
- help="When enabled, tb will share all data sources from the current workspace with the new one",
142
- )
143
137
  @click.option(
144
138
  "--organization-id",
145
139
  "organization_id",
@@ -151,7 +145,6 @@ def workspace_current(ctx: Context):
151
145
  def create_workspace(
152
146
  ctx: Context,
153
147
  workspace_name: str,
154
- fork: bool,
155
148
  organization_id: Optional[str],
156
149
  ) -> None:
157
150
  config = CLIConfig.get_project_config()
@@ -165,6 +158,7 @@ def create_workspace(
165
158
 
166
159
  config = CLIConfig.get_project_config()
167
160
  user_token = config.get_user_token()
161
+ fork = False
168
162
 
169
163
  if not user_token:
170
164
  raise CLIWorkspaceException(
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: tinybird
3
- Version: 0.0.1.dev276
3
+ Version: 0.0.1.dev278
4
4
  Summary: Tinybird Command Line Tool
5
5
  Home-page: https://www.tinybird.co/docs/forward/commands
6
6
  Author: Tinybird
@@ -17,7 +17,7 @@ tinybird/datafile/exceptions.py,sha256=8rw2umdZjtby85QbuRKFO5ETz_eRHwUY5l7eHsy1w
17
17
  tinybird/datafile/parse_connection.py,sha256=tRyn2Rpr1TeWet5BXmMoQgaotbGdYep1qiTak_OqC5E,1825
18
18
  tinybird/datafile/parse_datasource.py,sha256=ssW8QeFSgglVFi3sDZj_HgkJiTJ2069v2JgqnH3CkDE,1825
19
19
  tinybird/datafile/parse_pipe.py,sha256=xf4m0Tw44QWJzHzAm7Z7FwUoUUtr7noMYjU1NiWnX0k,3880
20
- tinybird/tb/__cli__.py,sha256=bGmVAS-5X5ZYyTYKDq1fQ8vA4zppIypVRErGtzvDkAU,247
20
+ tinybird/tb/__cli__.py,sha256=2Zlx71BRHozyQSYC9o2EHXBGy4kkqEUrxZ71Jeqg8eE,247
21
21
  tinybird/tb/check_pypi.py,sha256=Gp0HkHHDFMSDL6nxKlOY51z7z1Uv-2LRexNTZSHHGmM,552
22
22
  tinybird/tb/cli.py,sha256=FdDFEIayjmsZEVsVSSvRiVYn_FHOVg_zWQzchnzfWho,1008
23
23
  tinybird/tb/client.py,sha256=IQRaInDjOwr9Fzaz3_xXc3aUGqh94tM2lew7IZbB9eM,53733
@@ -31,7 +31,7 @@ tinybird/tb/modules/config.py,sha256=gK7rgaWTDd4ZKCrNEg_Uemr26EQjqWt6TjyQKujxOws
31
31
  tinybird/tb/modules/connection.py,sha256=axp8Fny1_4PSLJGN4UF6WygyRbQtM3Lbt6thxHKTxzw,17790
32
32
  tinybird/tb/modules/copy.py,sha256=dPZkcIDvxjJrlQUIvToO0vsEEEs4EYumbNV77-BzNoU,4404
33
33
  tinybird/tb/modules/create.py,sha256=pJxHXG69c9Z_21s-7VuJ3RZOF_nJU51LEwiAkvI3dZY,23251
34
- tinybird/tb/modules/datasource.py,sha256=pae-ENeHYIF1HHYRSOziFC-2FPLUFa0KS60YpdlKCS8,41725
34
+ tinybird/tb/modules/datasource.py,sha256=kDFHdxckTnRosk2829icfltQvlJd8EY5c9oWB5eS5Xo,41797
35
35
  tinybird/tb/modules/deployment.py,sha256=v0layOmG0IMnuXc3RT39mpGfa5M8yPlrL9F089fJFCo,15964
36
36
  tinybird/tb/modules/deployment_common.py,sha256=2NJgoONEfhFpGIPeE_wULDuUkomxPsIu2gbHgL1qcw8,19653
37
37
  tinybird/tb/modules/deprecations.py,sha256=rrszC1f_JJeJ8mUxGoCxckQTJFBCR8wREf4XXXN-PRc,4507
@@ -66,18 +66,18 @@ tinybird/tb/modules/test.py,sha256=O2-mS4uMU6nPi7yWPpWzshAgOlYKiGS-tkM12pXQGMI,1
66
66
  tinybird/tb/modules/test_common.py,sha256=kZ503FFXZwUkZ8zCGZKjBXmRKfF6ooqohkuFhzNRX48,14442
67
67
  tinybird/tb/modules/token.py,sha256=ZhW_o7XCr90wJRhMN6816vyo_TVfnzPXyIhrhzQ7oZ0,13807
68
68
  tinybird/tb/modules/watch.py,sha256=No0bK1M1_3CYuMaIgylxf7vYFJ72lTJe3brz6xQ-mJo,8819
69
- tinybird/tb/modules/workspace.py,sha256=Q_8HcxMsNg8QG9aBlwcWS2umrDP5IkTIHqqz3sfmGuc,11341
69
+ tinybird/tb/modules/workspace.py,sha256=USsG8YEXlwf7F2PjTMCuQ2lB8ya-erbv8VywNJYq6mc,11173
70
70
  tinybird/tb/modules/workspace_members.py,sha256=5JdkJgfuEwbq-t6vxkBhYwgsiTDxF790wsa6Xfif9nk,8608
71
71
  tinybird/tb/modules/agent/__init__.py,sha256=i3oe3vDIWWPaicdCM0zs7D7BJ1W0k7th93ooskHAV00,54
72
- tinybird/tb/modules/agent/agent.py,sha256=kPZEudIYL4pf4FXj_d7fWZvUi1f5BqG5fd-QWQueKsA,32976
72
+ tinybird/tb/modules/agent/agent.py,sha256=YKVigMaaxPKdacE2h3uHBqLwAvJt0PvLOdoFwmLi4eI,33203
73
73
  tinybird/tb/modules/agent/animations.py,sha256=4WOC5_2BracttmMCrV0H91tXfWcUzQHBUaIJc5FA7tE,3490
74
74
  tinybird/tb/modules/agent/banner.py,sha256=l6cO5Fi7lbVKp-GsBP8jf3IkjOWxg2jpAt9NBCy0WR8,4085
75
- tinybird/tb/modules/agent/command_agent.py,sha256=NTzgb9qnuG-gDpk87VijKs1UUMukJPaJI5UiZtRWUoQ,2864
75
+ tinybird/tb/modules/agent/command_agent.py,sha256=Wcdtmo7vJZ5EbBFW9J7zPCME0ShG_KqF6-qHmMB1XXk,3103
76
76
  tinybird/tb/modules/agent/compactor.py,sha256=BK5AxZFhrp3xWnsRnYaleiYoIWtVNc-_m650Hsopt8g,13841
77
77
  tinybird/tb/modules/agent/explore_agent.py,sha256=HkzKmggfSMz7S3RSeKnZXufq-z_U0tTQJpF7JfNIaGQ,3504
78
78
  tinybird/tb/modules/agent/memory.py,sha256=vBewB_64L_wHoT4tLT6UX2uxcHwSY880QZ26F9rPqXs,3793
79
79
  tinybird/tb/modules/agent/models.py,sha256=IAxqlnHy8c2OeSnDrrSp2Mg38W9_r0GsDM87Wv-YNfM,925
80
- tinybird/tb/modules/agent/prompts.py,sha256=PZ-WymaU1Dni-jh_xk8P_DO4mRtSN7Bv7tfoZ89nzJs,35066
80
+ tinybird/tb/modules/agent/prompts.py,sha256=TSzfK255Y6oBSOgy10hVU8TxalhJVcopT27hD4gELQU,37575
81
81
  tinybird/tb/modules/agent/testing_agent.py,sha256=AtwtJViH7805i7djyBgDb7SSUtDyJnw0TWJu6lBFsrg,2953
82
82
  tinybird/tb/modules/agent/utils.py,sha256=U1s6_tGynArRA42GvDr5qz2acxVVKfO8NwBLMngyqSI,31788
83
83
  tinybird/tb/modules/agent/tools/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -94,7 +94,7 @@ tinybird/tb/modules/agent/tools/get_openapi_definition.py,sha256=4TIMO2XzHBMhpt9
94
94
  tinybird/tb/modules/agent/tools/mock.py,sha256=RvdsKIr0vKEs91GuK5vKg0fDj8SI-cdcX4XqgvnSwuQ,4508
95
95
  tinybird/tb/modules/agent/tools/plan.py,sha256=2KHLNkr2f1RfkbAR4mCVsv94LGosXd8-ky7v6BB1OtQ,985
96
96
  tinybird/tb/modules/agent/tools/request_endpoint.py,sha256=xseEDQez2xfnPWNOoGnRmHB2KR9WLCx_q-vzS6NtaOY,3972
97
- tinybird/tb/modules/agent/tools/run_command.py,sha256=XjPDTTzkba9GOQBDiSTwddluyXkguVhxvXnRaC8m-Zc,1657
97
+ tinybird/tb/modules/agent/tools/run_command.py,sha256=ypvIU0j1XVUWghqt-dpWHm3GQIYsZwE7kRHC3Wau_H0,1708
98
98
  tinybird/tb/modules/agent/tools/secret.py,sha256=UbF9YIW4zh5qdF7qCeMhbhsDt_2qdjjntJE1e8HSUG0,4292
99
99
  tinybird/tb/modules/agent/tools/test.py,sha256=4XuEWVHLOTSO51Z9xJ08dTjk0j3IWY_JlPtSBO5aaUs,10373
100
100
  tinybird/tb/modules/datafile/build.py,sha256=NFKBrusFLU0WJNCXePAFWiEDuTaXpwc0lHlOQWEJ43s,51117
@@ -117,8 +117,8 @@ tinybird/tb_cli_modules/config.py,sha256=IsgdtFRnUrkY8-Zo32lmk6O7u3bHie1QCxLwgp4
117
117
  tinybird/tb_cli_modules/exceptions.py,sha256=pmucP4kTF4irIt7dXiG-FcnI-o3mvDusPmch1L8RCWk,3367
118
118
  tinybird/tb_cli_modules/regions.py,sha256=QjsL5H6Kg-qr0aYVLrvb1STeJ5Sx_sjvbOYO0LrEGMk,166
119
119
  tinybird/tb_cli_modules/telemetry.py,sha256=Hh2Io8ZPROSunbOLuMvuIFU4TqwWPmQTqal4WS09K1A,10449
120
- tinybird-0.0.1.dev276.dist-info/METADATA,sha256=EILhMFhFnfIsfN1iaV2ZG3Ex5EmbLNELsIXRrC1ODPo,1763
121
- tinybird-0.0.1.dev276.dist-info/WHEEL,sha256=In9FTNxeP60KnTkGw7wk6mJPYd_dQSjEZmXdBdMCI-8,91
122
- tinybird-0.0.1.dev276.dist-info/entry_points.txt,sha256=LwdHU6TfKx4Qs7BqqtaczEZbImgU7Abe9Lp920zb_fo,43
123
- tinybird-0.0.1.dev276.dist-info/top_level.txt,sha256=VqqqEmkAy7UNaD8-V51FCoMMWXjLUlR0IstvK7tJYVY,54
124
- tinybird-0.0.1.dev276.dist-info/RECORD,,
120
+ tinybird-0.0.1.dev278.dist-info/METADATA,sha256=je4JoDXmuMdnk5cvk5Fl1ZXpzTrzyx9V9bJ1suLZrg8,1763
121
+ tinybird-0.0.1.dev278.dist-info/WHEEL,sha256=In9FTNxeP60KnTkGw7wk6mJPYd_dQSjEZmXdBdMCI-8,91
122
+ tinybird-0.0.1.dev278.dist-info/entry_points.txt,sha256=LwdHU6TfKx4Qs7BqqtaczEZbImgU7Abe9Lp920zb_fo,43
123
+ tinybird-0.0.1.dev278.dist-info/top_level.txt,sha256=VqqqEmkAy7UNaD8-V51FCoMMWXjLUlR0IstvK7tJYVY,54
124
+ tinybird-0.0.1.dev278.dist-info/RECORD,,