tinybird 0.0.1.dev241__tar.gz → 0.0.1.dev242__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 (124) hide show
  1. {tinybird-0.0.1.dev241 → tinybird-0.0.1.dev242}/PKG-INFO +1 -1
  2. {tinybird-0.0.1.dev241 → tinybird-0.0.1.dev242}/tinybird/tb/__cli__.py +2 -2
  3. {tinybird-0.0.1.dev241 → tinybird-0.0.1.dev242}/tinybird/tb/modules/agent/agent.py +9 -2
  4. tinybird-0.0.1.dev242/tinybird/tb/modules/agent/animations.py +86 -0
  5. {tinybird-0.0.1.dev241 → tinybird-0.0.1.dev242}/tinybird/tb/modules/agent/tools/create_datafile.py +2 -0
  6. {tinybird-0.0.1.dev241 → tinybird-0.0.1.dev242}/tinybird/tb/modules/agent/tools/plan.py +5 -2
  7. {tinybird-0.0.1.dev241 → tinybird-0.0.1.dev242}/tinybird/tb/modules/agent/utils.py +1 -0
  8. {tinybird-0.0.1.dev241 → tinybird-0.0.1.dev242}/tinybird.egg-info/PKG-INFO +1 -1
  9. {tinybird-0.0.1.dev241 → tinybird-0.0.1.dev242}/tinybird.egg-info/SOURCES.txt +1 -0
  10. {tinybird-0.0.1.dev241 → tinybird-0.0.1.dev242}/setup.cfg +0 -0
  11. {tinybird-0.0.1.dev241 → tinybird-0.0.1.dev242}/tinybird/__cli__.py +0 -0
  12. {tinybird-0.0.1.dev241 → tinybird-0.0.1.dev242}/tinybird/ch_utils/constants.py +0 -0
  13. {tinybird-0.0.1.dev241 → tinybird-0.0.1.dev242}/tinybird/ch_utils/engine.py +0 -0
  14. {tinybird-0.0.1.dev241 → tinybird-0.0.1.dev242}/tinybird/check_pypi.py +0 -0
  15. {tinybird-0.0.1.dev241 → tinybird-0.0.1.dev242}/tinybird/client.py +0 -0
  16. {tinybird-0.0.1.dev241 → tinybird-0.0.1.dev242}/tinybird/config.py +0 -0
  17. {tinybird-0.0.1.dev241 → tinybird-0.0.1.dev242}/tinybird/connectors.py +0 -0
  18. {tinybird-0.0.1.dev241 → tinybird-0.0.1.dev242}/tinybird/context.py +0 -0
  19. {tinybird-0.0.1.dev241 → tinybird-0.0.1.dev242}/tinybird/datafile/common.py +0 -0
  20. {tinybird-0.0.1.dev241 → tinybird-0.0.1.dev242}/tinybird/datafile/exceptions.py +0 -0
  21. {tinybird-0.0.1.dev241 → tinybird-0.0.1.dev242}/tinybird/datafile/parse_connection.py +0 -0
  22. {tinybird-0.0.1.dev241 → tinybird-0.0.1.dev242}/tinybird/datafile/parse_datasource.py +0 -0
  23. {tinybird-0.0.1.dev241 → tinybird-0.0.1.dev242}/tinybird/datafile/parse_pipe.py +0 -0
  24. {tinybird-0.0.1.dev241 → tinybird-0.0.1.dev242}/tinybird/datatypes.py +0 -0
  25. {tinybird-0.0.1.dev241 → tinybird-0.0.1.dev242}/tinybird/feedback_manager.py +0 -0
  26. {tinybird-0.0.1.dev241 → tinybird-0.0.1.dev242}/tinybird/git_settings.py +0 -0
  27. {tinybird-0.0.1.dev241 → tinybird-0.0.1.dev242}/tinybird/prompts.py +0 -0
  28. {tinybird-0.0.1.dev241 → tinybird-0.0.1.dev242}/tinybird/sql.py +0 -0
  29. {tinybird-0.0.1.dev241 → tinybird-0.0.1.dev242}/tinybird/sql_template.py +0 -0
  30. {tinybird-0.0.1.dev241 → tinybird-0.0.1.dev242}/tinybird/sql_template_fmt.py +0 -0
  31. {tinybird-0.0.1.dev241 → tinybird-0.0.1.dev242}/tinybird/sql_toolset.py +0 -0
  32. {tinybird-0.0.1.dev241 → tinybird-0.0.1.dev242}/tinybird/syncasync.py +0 -0
  33. {tinybird-0.0.1.dev241 → tinybird-0.0.1.dev242}/tinybird/tb/check_pypi.py +0 -0
  34. {tinybird-0.0.1.dev241 → tinybird-0.0.1.dev242}/tinybird/tb/cli.py +0 -0
  35. {tinybird-0.0.1.dev241 → tinybird-0.0.1.dev242}/tinybird/tb/client.py +0 -0
  36. {tinybird-0.0.1.dev241 → tinybird-0.0.1.dev242}/tinybird/tb/config.py +0 -0
  37. {tinybird-0.0.1.dev241 → tinybird-0.0.1.dev242}/tinybird/tb/modules/agent/__init__.py +0 -0
  38. {tinybird-0.0.1.dev241 → tinybird-0.0.1.dev242}/tinybird/tb/modules/agent/banner.py +0 -0
  39. {tinybird-0.0.1.dev241 → tinybird-0.0.1.dev242}/tinybird/tb/modules/agent/memory.py +0 -0
  40. {tinybird-0.0.1.dev241 → tinybird-0.0.1.dev242}/tinybird/tb/modules/agent/models.py +0 -0
  41. {tinybird-0.0.1.dev241 → tinybird-0.0.1.dev242}/tinybird/tb/modules/agent/prompts.py +0 -0
  42. {tinybird-0.0.1.dev241 → tinybird-0.0.1.dev242}/tinybird/tb/modules/agent/tools/__init__.py +0 -0
  43. {tinybird-0.0.1.dev241 → tinybird-0.0.1.dev242}/tinybird/tb/modules/agent/tools/explore.py +0 -0
  44. {tinybird-0.0.1.dev241 → tinybird-0.0.1.dev242}/tinybird/tb/modules/agent/tools/preview_datafile.py +0 -0
  45. {tinybird-0.0.1.dev241 → tinybird-0.0.1.dev242}/tinybird/tb/modules/build.py +0 -0
  46. {tinybird-0.0.1.dev241 → tinybird-0.0.1.dev242}/tinybird/tb/modules/cicd.py +0 -0
  47. {tinybird-0.0.1.dev241 → tinybird-0.0.1.dev242}/tinybird/tb/modules/cli.py +0 -0
  48. {tinybird-0.0.1.dev241 → tinybird-0.0.1.dev242}/tinybird/tb/modules/common.py +0 -0
  49. {tinybird-0.0.1.dev241 → tinybird-0.0.1.dev242}/tinybird/tb/modules/config.py +0 -0
  50. {tinybird-0.0.1.dev241 → tinybird-0.0.1.dev242}/tinybird/tb/modules/connection.py +0 -0
  51. {tinybird-0.0.1.dev241 → tinybird-0.0.1.dev242}/tinybird/tb/modules/copy.py +0 -0
  52. {tinybird-0.0.1.dev241 → tinybird-0.0.1.dev242}/tinybird/tb/modules/create.py +0 -0
  53. {tinybird-0.0.1.dev241 → tinybird-0.0.1.dev242}/tinybird/tb/modules/datafile/build.py +0 -0
  54. {tinybird-0.0.1.dev241 → tinybird-0.0.1.dev242}/tinybird/tb/modules/datafile/build_common.py +0 -0
  55. {tinybird-0.0.1.dev241 → tinybird-0.0.1.dev242}/tinybird/tb/modules/datafile/build_datasource.py +0 -0
  56. {tinybird-0.0.1.dev241 → tinybird-0.0.1.dev242}/tinybird/tb/modules/datafile/build_pipe.py +0 -0
  57. {tinybird-0.0.1.dev241 → tinybird-0.0.1.dev242}/tinybird/tb/modules/datafile/diff.py +0 -0
  58. {tinybird-0.0.1.dev241 → tinybird-0.0.1.dev242}/tinybird/tb/modules/datafile/fixture.py +0 -0
  59. {tinybird-0.0.1.dev241 → tinybird-0.0.1.dev242}/tinybird/tb/modules/datafile/format_common.py +0 -0
  60. {tinybird-0.0.1.dev241 → tinybird-0.0.1.dev242}/tinybird/tb/modules/datafile/format_datasource.py +0 -0
  61. {tinybird-0.0.1.dev241 → tinybird-0.0.1.dev242}/tinybird/tb/modules/datafile/format_pipe.py +0 -0
  62. {tinybird-0.0.1.dev241 → tinybird-0.0.1.dev242}/tinybird/tb/modules/datafile/pipe_checker.py +0 -0
  63. {tinybird-0.0.1.dev241 → tinybird-0.0.1.dev242}/tinybird/tb/modules/datafile/playground.py +0 -0
  64. {tinybird-0.0.1.dev241 → tinybird-0.0.1.dev242}/tinybird/tb/modules/datafile/pull.py +0 -0
  65. {tinybird-0.0.1.dev241 → tinybird-0.0.1.dev242}/tinybird/tb/modules/datasource.py +0 -0
  66. {tinybird-0.0.1.dev241 → tinybird-0.0.1.dev242}/tinybird/tb/modules/deployment.py +0 -0
  67. {tinybird-0.0.1.dev241 → tinybird-0.0.1.dev242}/tinybird/tb/modules/deprecations.py +0 -0
  68. {tinybird-0.0.1.dev241 → tinybird-0.0.1.dev242}/tinybird/tb/modules/dev_server.py +0 -0
  69. {tinybird-0.0.1.dev241 → tinybird-0.0.1.dev242}/tinybird/tb/modules/endpoint.py +0 -0
  70. {tinybird-0.0.1.dev241 → tinybird-0.0.1.dev242}/tinybird/tb/modules/exceptions.py +0 -0
  71. {tinybird-0.0.1.dev241 → tinybird-0.0.1.dev242}/tinybird/tb/modules/feedback_manager.py +0 -0
  72. {tinybird-0.0.1.dev241 → tinybird-0.0.1.dev242}/tinybird/tb/modules/info.py +0 -0
  73. {tinybird-0.0.1.dev241 → tinybird-0.0.1.dev242}/tinybird/tb/modules/infra.py +0 -0
  74. {tinybird-0.0.1.dev241 → tinybird-0.0.1.dev242}/tinybird/tb/modules/job.py +0 -0
  75. {tinybird-0.0.1.dev241 → tinybird-0.0.1.dev242}/tinybird/tb/modules/llm.py +0 -0
  76. {tinybird-0.0.1.dev241 → tinybird-0.0.1.dev242}/tinybird/tb/modules/llm_utils.py +0 -0
  77. {tinybird-0.0.1.dev241 → tinybird-0.0.1.dev242}/tinybird/tb/modules/local.py +0 -0
  78. {tinybird-0.0.1.dev241 → tinybird-0.0.1.dev242}/tinybird/tb/modules/local_common.py +0 -0
  79. {tinybird-0.0.1.dev241 → tinybird-0.0.1.dev242}/tinybird/tb/modules/login.py +0 -0
  80. {tinybird-0.0.1.dev241 → tinybird-0.0.1.dev242}/tinybird/tb/modules/logout.py +0 -0
  81. {tinybird-0.0.1.dev241 → tinybird-0.0.1.dev242}/tinybird/tb/modules/materialization.py +0 -0
  82. {tinybird-0.0.1.dev241 → tinybird-0.0.1.dev242}/tinybird/tb/modules/mock.py +0 -0
  83. {tinybird-0.0.1.dev241 → tinybird-0.0.1.dev242}/tinybird/tb/modules/open.py +0 -0
  84. {tinybird-0.0.1.dev241 → tinybird-0.0.1.dev242}/tinybird/tb/modules/pipe.py +0 -0
  85. {tinybird-0.0.1.dev241 → tinybird-0.0.1.dev242}/tinybird/tb/modules/project.py +0 -0
  86. {tinybird-0.0.1.dev241 → tinybird-0.0.1.dev242}/tinybird/tb/modules/regions.py +0 -0
  87. {tinybird-0.0.1.dev241 → tinybird-0.0.1.dev242}/tinybird/tb/modules/secret.py +0 -0
  88. {tinybird-0.0.1.dev241 → tinybird-0.0.1.dev242}/tinybird/tb/modules/shell.py +0 -0
  89. {tinybird-0.0.1.dev241 → tinybird-0.0.1.dev242}/tinybird/tb/modules/sink.py +0 -0
  90. {tinybird-0.0.1.dev241 → tinybird-0.0.1.dev242}/tinybird/tb/modules/table.py +0 -0
  91. {tinybird-0.0.1.dev241 → tinybird-0.0.1.dev242}/tinybird/tb/modules/telemetry.py +0 -0
  92. {tinybird-0.0.1.dev241 → tinybird-0.0.1.dev242}/tinybird/tb/modules/test.py +0 -0
  93. {tinybird-0.0.1.dev241 → tinybird-0.0.1.dev242}/tinybird/tb/modules/tinyunit/tinyunit.py +0 -0
  94. {tinybird-0.0.1.dev241 → tinybird-0.0.1.dev242}/tinybird/tb/modules/tinyunit/tinyunit_lib.py +0 -0
  95. {tinybird-0.0.1.dev241 → tinybird-0.0.1.dev242}/tinybird/tb/modules/token.py +0 -0
  96. {tinybird-0.0.1.dev241 → tinybird-0.0.1.dev242}/tinybird/tb/modules/watch.py +0 -0
  97. {tinybird-0.0.1.dev241 → tinybird-0.0.1.dev242}/tinybird/tb/modules/workspace.py +0 -0
  98. {tinybird-0.0.1.dev241 → tinybird-0.0.1.dev242}/tinybird/tb/modules/workspace_members.py +0 -0
  99. {tinybird-0.0.1.dev241 → tinybird-0.0.1.dev242}/tinybird/tb_cli.py +0 -0
  100. {tinybird-0.0.1.dev241 → tinybird-0.0.1.dev242}/tinybird/tb_cli_modules/auth.py +0 -0
  101. {tinybird-0.0.1.dev241 → tinybird-0.0.1.dev242}/tinybird/tb_cli_modules/branch.py +0 -0
  102. {tinybird-0.0.1.dev241 → tinybird-0.0.1.dev242}/tinybird/tb_cli_modules/cicd.py +0 -0
  103. {tinybird-0.0.1.dev241 → tinybird-0.0.1.dev242}/tinybird/tb_cli_modules/cli.py +0 -0
  104. {tinybird-0.0.1.dev241 → tinybird-0.0.1.dev242}/tinybird/tb_cli_modules/common.py +0 -0
  105. {tinybird-0.0.1.dev241 → tinybird-0.0.1.dev242}/tinybird/tb_cli_modules/config.py +0 -0
  106. {tinybird-0.0.1.dev241 → tinybird-0.0.1.dev242}/tinybird/tb_cli_modules/connection.py +0 -0
  107. {tinybird-0.0.1.dev241 → tinybird-0.0.1.dev242}/tinybird/tb_cli_modules/datasource.py +0 -0
  108. {tinybird-0.0.1.dev241 → tinybird-0.0.1.dev242}/tinybird/tb_cli_modules/exceptions.py +0 -0
  109. {tinybird-0.0.1.dev241 → tinybird-0.0.1.dev242}/tinybird/tb_cli_modules/fmt.py +0 -0
  110. {tinybird-0.0.1.dev241 → tinybird-0.0.1.dev242}/tinybird/tb_cli_modules/job.py +0 -0
  111. {tinybird-0.0.1.dev241 → tinybird-0.0.1.dev242}/tinybird/tb_cli_modules/pipe.py +0 -0
  112. {tinybird-0.0.1.dev241 → tinybird-0.0.1.dev242}/tinybird/tb_cli_modules/regions.py +0 -0
  113. {tinybird-0.0.1.dev241 → tinybird-0.0.1.dev242}/tinybird/tb_cli_modules/tag.py +0 -0
  114. {tinybird-0.0.1.dev241 → tinybird-0.0.1.dev242}/tinybird/tb_cli_modules/telemetry.py +0 -0
  115. {tinybird-0.0.1.dev241 → tinybird-0.0.1.dev242}/tinybird/tb_cli_modules/test.py +0 -0
  116. {tinybird-0.0.1.dev241 → tinybird-0.0.1.dev242}/tinybird/tb_cli_modules/tinyunit/tinyunit.py +0 -0
  117. {tinybird-0.0.1.dev241 → tinybird-0.0.1.dev242}/tinybird/tb_cli_modules/tinyunit/tinyunit_lib.py +0 -0
  118. {tinybird-0.0.1.dev241 → tinybird-0.0.1.dev242}/tinybird/tb_cli_modules/workspace.py +0 -0
  119. {tinybird-0.0.1.dev241 → tinybird-0.0.1.dev242}/tinybird/tb_cli_modules/workspace_members.py +0 -0
  120. {tinybird-0.0.1.dev241 → tinybird-0.0.1.dev242}/tinybird/tornado_template.py +0 -0
  121. {tinybird-0.0.1.dev241 → tinybird-0.0.1.dev242}/tinybird.egg-info/dependency_links.txt +0 -0
  122. {tinybird-0.0.1.dev241 → tinybird-0.0.1.dev242}/tinybird.egg-info/entry_points.txt +0 -0
  123. {tinybird-0.0.1.dev241 → tinybird-0.0.1.dev242}/tinybird.egg-info/requires.txt +0 -0
  124. {tinybird-0.0.1.dev241 → tinybird-0.0.1.dev242}/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.dev241
3
+ Version: 0.0.1.dev242
4
4
  Summary: Tinybird Command Line Tool
5
5
  Home-page: https://www.tinybird.co/docs/forward/commands
6
6
  Author: Tinybird
@@ -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.dev241'
8
- __revision__ = 'b44ab3b'
7
+ __version__ = '0.0.1.dev242'
8
+ __revision__ = '62ad714'
@@ -22,6 +22,7 @@ from tinybird.prompts import (
22
22
  sink_pipe_instructions,
23
23
  )
24
24
  from tinybird.tb.client import TinyB
25
+ from tinybird.tb.modules.agent.animations import ThinkingAnimation
25
26
  from tinybird.tb.modules.agent.banner import display_banner
26
27
  from tinybird.tb.modules.agent.memory import clear_history, load_history
27
28
  from tinybird.tb.modules.agent.models import create_model
@@ -125,7 +126,7 @@ Today is {datetime.now().strftime("%Y-%m-%d")}
125
126
  Tool(explore_data, docstring_format="google", require_parameter_descriptions=True, takes_ctx=True),
126
127
  Tool(preview_datafile, docstring_format="google", require_parameter_descriptions=True, takes_ctx=False),
127
128
  Tool(create_datafile, docstring_format="google", require_parameter_descriptions=True, takes_ctx=True),
128
- Tool(plan, docstring_format="google", require_parameter_descriptions=True, takes_ctx=False),
129
+ Tool(plan, docstring_format="google", require_parameter_descriptions=True, takes_ctx=True),
129
130
  ],
130
131
  )
131
132
 
@@ -135,18 +136,24 @@ Today is {datetime.now().strftime("%Y-%m-%d")}
135
136
 
136
137
  def run(self, user_prompt: str) -> None:
137
138
  client = TinyB(token=self.token, host=self.host)
139
+
140
+ thinking_animation = ThinkingAnimation(message="Chirping", delay=0.15)
141
+ thinking_animation.start()
142
+
138
143
  result = self.agent.run_sync(
139
144
  user_prompt,
140
145
  deps=TinybirdAgentContext(
141
146
  # context does not support the whole client, so we need to pass only the functions we need
142
147
  explore_data=client.explore_data,
143
148
  folder=self.folder,
149
+ thinking_animation=thinking_animation,
144
150
  ),
145
151
  message_history=self.messages,
146
152
  )
147
153
  new_messages = result.new_messages()
148
154
  self.messages.extend(new_messages)
149
- click.echo("\n")
155
+ thinking_animation.stop()
156
+
150
157
  click.echo(result.output)
151
158
  click.echo("\n")
152
159
 
@@ -0,0 +1,86 @@
1
+ import random
2
+ import sys
3
+ import threading
4
+ from time import sleep
5
+ from typing import Optional
6
+
7
+ import click
8
+
9
+
10
+ class ThinkingAnimation:
11
+ """Thinking animation that shows changing sparkles as a prefix."""
12
+
13
+ def __init__(
14
+ self,
15
+ message: str = "Thinking",
16
+ delay: float = 0.15,
17
+ colors: bool = True,
18
+ dots: bool = True,
19
+ ):
20
+ self.message = message
21
+ self.delay = delay
22
+ self.running = False
23
+ self.thread: Optional[threading.Thread] = None
24
+ self.colors = colors and sys.stdout.isatty()
25
+ self.dots = dots
26
+
27
+ # Default sparkle characters
28
+ self.sparkle_chars = ["✧", "✦", "⋆", "✳", "✺", "✹", "*", "·"]
29
+
30
+ # ANSI color codes
31
+ self.colors_list = [
32
+ "\033[33m", # Yellow
33
+ "\033[36m", # Cyan
34
+ "\033[35m", # Magenta
35
+ "\033[93m", # Bright Yellow
36
+ "\033[96m", # Bright Cyan
37
+ ]
38
+ self.reset_color = "\033[0m"
39
+
40
+ def start(self):
41
+ """Start the animation in a separate thread."""
42
+ self.running = True
43
+ self.thread = threading.Thread(target=self._run_animation)
44
+ self.thread.daemon = True
45
+
46
+ click.echo("\n")
47
+ self.thread.start()
48
+
49
+ def stop(self):
50
+ """Stop the animation."""
51
+ self.running = False
52
+ if self.thread:
53
+ self.thread.join()
54
+ # Clear the line and reset cursor position
55
+ sys.stdout.write("\r" + " " * (len(self.message) + 10) + "\r")
56
+ sys.stdout.flush()
57
+
58
+ def _run_animation(self):
59
+ """Run the animation until stopped."""
60
+ frame_count = 0
61
+ dots_count = 0
62
+
63
+ while self.running:
64
+ # Choose a random sparkle for this frame
65
+ sparkle = random.choice(self.sparkle_chars)
66
+
67
+ if self.colors:
68
+ color = random.choice(self.colors_list)
69
+ colored_sparkle = f"{color}{sparkle}{self.reset_color}"
70
+ else:
71
+ colored_sparkle = sparkle
72
+
73
+ # Handle dots animation if enabled
74
+ if self.dots:
75
+ dots_count = (frame_count // 4) % 4 # Change dots every 4 frames
76
+ dots = "." * dots_count
77
+ display_message = f"{self.message}{dots}"
78
+ else:
79
+ display_message = self.message
80
+
81
+ # Print the message with the prefix sparkle
82
+ sys.stdout.write(f"\r{colored_sparkle} {display_message}")
83
+ sys.stdout.flush()
84
+
85
+ sleep(self.delay)
86
+ frame_count += 1
@@ -35,9 +35,11 @@ def create_datafile(ctx: RunContext[TinybirdAgentContext], resource: Datafile) -
35
35
  str: If the resource was created or not.
36
36
  """
37
37
  try:
38
+ ctx.deps.thinking_animation.stop()
38
39
  click.echo()
39
40
  click.echo(resource.content)
40
41
  confirmation = get_resource_confirmation(resource)
42
+ ctx.deps.thinking_animation.start()
41
43
 
42
44
  if not confirmation:
43
45
  return f"Resource {resource.pathname} was not created. User cancelled creation."
@@ -1,6 +1,7 @@
1
1
  import click
2
+ from pydantic_ai import RunContext
2
3
 
3
- from tinybird.tb.modules.agent.utils import show_options
4
+ from tinybird.tb.modules.agent.utils import TinybirdAgentContext, show_options
4
5
 
5
6
 
6
7
  def get_plan_confirmation() -> bool:
@@ -22,7 +23,7 @@ def get_plan_confirmation() -> bool:
22
23
  return False
23
24
 
24
25
 
25
- def plan(plan: str) -> str:
26
+ def plan(ctx: RunContext[TinybirdAgentContext], plan: str) -> str:
26
27
  """Given a plan, ask the user for confirmation to implement it
27
28
 
28
29
  Args:
@@ -32,9 +33,11 @@ def plan(plan: str) -> str:
32
33
  str: If the plan was implemented or not.
33
34
  """
34
35
  try:
36
+ ctx.deps.thinking_animation.stop()
35
37
  click.echo()
36
38
  click.echo(plan)
37
39
  confirmation = get_plan_confirmation()
40
+ ctx.deps.thinking_animation.start()
38
41
 
39
42
  if not confirmation:
40
43
  return "Plan was not implemented. User cancelled implementation."
@@ -20,6 +20,7 @@ from pydantic import BaseModel, Field
20
20
  class TinybirdAgentContext(BaseModel):
21
21
  explore_data: Callable[[str], str]
22
22
  folder: str
23
+ thinking_animation: Any
23
24
 
24
25
 
25
26
  default_style = Style.from_dict(
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: tinybird
3
- Version: 0.0.1.dev241
3
+ Version: 0.0.1.dev242
4
4
  Summary: Tinybird Command Line Tool
5
5
  Home-page: https://www.tinybird.co/docs/forward/commands
6
6
  Author: Tinybird
@@ -75,6 +75,7 @@ tinybird/tb/modules/workspace.py
75
75
  tinybird/tb/modules/workspace_members.py
76
76
  tinybird/tb/modules/agent/__init__.py
77
77
  tinybird/tb/modules/agent/agent.py
78
+ tinybird/tb/modules/agent/animations.py
78
79
  tinybird/tb/modules/agent/banner.py
79
80
  tinybird/tb/modules/agent/memory.py
80
81
  tinybird/tb/modules/agent/models.py