vibecore 0.5.0__py3-none-any.whl → 0.6.1__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 vibecore might be problematic. Click here for more details.

@@ -2,14 +2,14 @@
2
2
 
3
3
  from agents import RunContextWrapper, function_tool
4
4
 
5
- from vibecore.context import VibecoreContext
5
+ from vibecore.context import PathValidatorContext
6
6
 
7
7
  from .executor import bash_executor, glob_files, grep_files, list_directory
8
8
 
9
9
 
10
10
  @function_tool
11
11
  async def bash(
12
- ctx: RunContextWrapper[VibecoreContext],
12
+ ctx: RunContextWrapper[PathValidatorContext],
13
13
  command: str,
14
14
  timeout: int | None = None,
15
15
  description: str | None = None,
@@ -66,7 +66,7 @@ async def bash(
66
66
 
67
67
  @function_tool
68
68
  async def glob(
69
- ctx: RunContextWrapper[VibecoreContext],
69
+ ctx: RunContextWrapper[PathValidatorContext],
70
70
  pattern: str,
71
71
  path: str | None = None,
72
72
  ) -> str:
@@ -98,7 +98,7 @@ async def glob(
98
98
 
99
99
  @function_tool
100
100
  async def grep(
101
- ctx: RunContextWrapper[VibecoreContext],
101
+ ctx: RunContextWrapper[PathValidatorContext],
102
102
  pattern: str,
103
103
  path: str | None = None,
104
104
  include: str | None = None,
@@ -132,7 +132,7 @@ async def grep(
132
132
 
133
133
  @function_tool
134
134
  async def ls(
135
- ctx: RunContextWrapper[VibecoreContext],
135
+ ctx: RunContextWrapper[PathValidatorContext],
136
136
  path: str,
137
137
  ignore: list[str] | None = None,
138
138
  ) -> str:
@@ -8,12 +8,12 @@ from agents import (
8
8
  from textual import log
9
9
 
10
10
  from vibecore.agents.task import create_task_agent
11
- from vibecore.context import VibecoreContext
11
+ from vibecore.context import FullVibecoreContext
12
12
  from vibecore.settings import settings
13
13
 
14
14
 
15
15
  async def execute_task(
16
- context: VibecoreContext,
16
+ context: FullVibecoreContext,
17
17
  description: str,
18
18
  prompt: str,
19
19
  tool_name: str,
@@ -3,14 +3,14 @@
3
3
  from agents import function_tool
4
4
  from agents.tool_context import ToolContext
5
5
 
6
- from vibecore.context import VibecoreContext
6
+ from vibecore.context import FullVibecoreContext
7
7
 
8
8
  from .executor import execute_task
9
9
 
10
10
 
11
11
  @function_tool
12
12
  async def task(
13
- ctx: ToolContext[VibecoreContext],
13
+ ctx: ToolContext[FullVibecoreContext],
14
14
  description: str,
15
15
  prompt: str,
16
16
  ) -> str:
@@ -4,13 +4,13 @@ from typing import Any
4
4
 
5
5
  from agents import RunContextWrapper, function_tool
6
6
 
7
- from vibecore.context import VibecoreContext
7
+ from vibecore.context import TodoToolContext
8
8
 
9
9
  from .models import TodoItem
10
10
 
11
11
 
12
12
  @function_tool
13
- async def todo_read(ctx: RunContextWrapper[VibecoreContext]) -> list[dict[str, Any]]:
13
+ async def todo_read(ctx: RunContextWrapper[TodoToolContext]) -> list[dict[str, Any]]:
14
14
  """Use this tool to read the current to-do list for the session. This tool should be used proactively and
15
15
  frequently to ensure that you are aware of the status of the current task list. You should make use of this
16
16
  tool as often as possible, especially in the following situations:
@@ -38,7 +38,7 @@ async def todo_read(ctx: RunContextWrapper[VibecoreContext]) -> list[dict[str, A
38
38
 
39
39
 
40
40
  @function_tool
41
- async def todo_write(ctx: RunContextWrapper[VibecoreContext], todos: list[TodoItem]) -> str:
41
+ async def todo_write(ctx: RunContextWrapper[TodoToolContext], todos: list[TodoItem]) -> str:
42
42
  """Use this tool to create and manage a structured task list for your current coding session. This helps you
43
43
  track progress, organize complex tasks, and demonstrate thoroughness to the user. It also helps the user
44
44
  understand the progress of the task and overall progress of their requests.
@@ -1,8 +1,6 @@
1
1
  """Webfetch tool for Vibecore agents."""
2
2
 
3
- from agents import RunContextWrapper, function_tool
4
-
5
- from vibecore.context import VibecoreContext
3
+ from agents import function_tool
6
4
 
7
5
  from .executor import fetch_url
8
6
  from .models import WebFetchParams
@@ -10,7 +8,6 @@ from .models import WebFetchParams
10
8
 
11
9
  @function_tool
12
10
  async def webfetch(
13
- ctx: RunContextWrapper[VibecoreContext],
14
11
  url: str,
15
12
  timeout: int = 30,
16
13
  follow_redirects: bool = True,
@@ -1,8 +1,6 @@
1
1
  """Websearch tool for Vibecore agents."""
2
2
 
3
- from agents import RunContextWrapper, function_tool
4
-
5
- from vibecore.context import VibecoreContext
3
+ from agents import function_tool
6
4
 
7
5
  from .executor import perform_websearch
8
6
  from .models import SearchParams
@@ -10,7 +8,6 @@ from .models import SearchParams
10
8
 
11
9
  @function_tool
12
10
  async def websearch(
13
- ctx: RunContextWrapper[VibecoreContext],
14
11
  query: str,
15
12
  max_results: int = 5,
16
13
  region: str | None = None,
vibecore/widgets/core.py CHANGED
@@ -94,10 +94,10 @@ class MyTextArea(TextArea):
94
94
  history = []
95
95
 
96
96
  # First, load history from the session
97
- if app.session:
97
+ if app.runner.session:
98
98
  try:
99
99
  # Get all items from the session
100
- session_items = await app.session.get_items()
100
+ session_items = await app.runner.session.get_items()
101
101
  for item in session_items:
102
102
  # Filter for user messages
103
103
  if isinstance(item, dict):
@@ -113,13 +113,6 @@ class MyTextArea(TextArea):
113
113
 
114
114
  log(f"Error loading session history: {e}")
115
115
 
116
- # Then add current session's messages (in memory, not yet persisted)
117
- for item in app.input_items:
118
- if isinstance(item, dict) and item.get("role") == "user":
119
- content = item.get("content")
120
- if isinstance(content, str) and content not in history:
121
- history.append(content)
122
-
123
116
  return history
124
117
  return []
125
118
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: vibecore
3
- Version: 0.5.0
3
+ Version: 0.6.1
4
4
  Summary: Build your own AI-powered automation tools in the terminal with this extensible agent framework
5
5
  Project-URL: Homepage, https://github.com/serialx/vibecore
6
6
  Project-URL: Repository, https://github.com/serialx/vibecore
@@ -158,7 +158,6 @@ Once vibecore is running, you can:
158
158
  ### Commands
159
159
 
160
160
  - `/help` - Show help and keyboard shortcuts
161
- - `/clear` - Clear the current session and start a new one
162
161
 
163
162
  ## Flow Mode (Experimental)
164
163
 
@@ -177,37 +176,56 @@ Flow Mode allows you to:
177
176
 
178
177
  ```python
179
178
  import asyncio
180
- from agents import Agent, Runner
181
- from vibecore.flow import flow, UserInputFunc
179
+ from agents import Agent
180
+ from vibecore.flow import Vibecore, VibecoreRunnerBase
182
181
  from vibecore.context import VibecoreContext
182
+ from vibecore.settings import settings
183
183
 
184
184
  # Define your agent with tools
185
185
  agent = Agent[VibecoreContext](
186
186
  name="Assistant",
187
187
  instructions="You are a helpful assistant",
188
188
  tools=[...], # Your tools here
189
+ model=settings.model,
189
190
  )
190
191
 
191
- # Define your conversation logic
192
- async def logic(app, ctx: VibecoreContext, user_input: UserInputFunc):
192
+ # Create Vibecore instance
193
+ vibecore = Vibecore[VibecoreContext, str]()
194
+
195
+ # Define your conversation logic with decorator
196
+ @vibecore.workflow()
197
+ async def logic(
198
+ runner: VibecoreRunnerBase[VibecoreContext, str],
199
+ ) -> str:
193
200
  # Get user input programmatically
194
- user_message = await user_input("What would you like to do?")
195
-
196
- # Process with agent
197
- result = Runner.run_streamed(
201
+ user_message = await runner.user_input("What would you like to do?")
202
+
203
+ # Print status updates
204
+ await runner.print(f"Processing: {user_message}")
205
+
206
+ # Process with agent (handles streaming automatically)
207
+ result = await runner.run_agent(
198
208
  agent,
199
209
  input=user_message,
200
- context=ctx,
201
- session=app.session,
210
+ context=runner.context,
211
+ session=runner.session,
202
212
  )
203
-
204
- # Handle the response
205
- app.current_worker = app.handle_streamed_response(result)
206
- await app.current_worker.wait()
207
213
 
208
- # Run the flow
214
+ await runner.print("Done!")
215
+ return result.final_output
216
+
217
+ # Run the flow in different modes
209
218
  async def main():
210
- await flow(agent, logic)
219
+ # Option 1: TUI mode (full terminal interface)
220
+ result = await vibecore.run_textual(shutdown=False)
221
+
222
+ # Option 2: CLI mode (simple stdin/stdout)
223
+ # result = await vibecore.run_cli()
224
+
225
+ # Option 3: Static mode (programmatic, for testing)
226
+ # result = await vibecore.run("Calculate 2+2")
227
+
228
+ print(f"Final output: {result}")
211
229
 
212
230
  if __name__ == "__main__":
213
231
  asyncio.run(main())
@@ -225,11 +243,53 @@ Flow Mode shines when building complex multi-agent systems. See `examples/custom
225
243
 
226
244
  ### Key Components
227
245
 
228
- - **`flow()`**: Entry point that sets up the Vibecore app with your custom logic
229
- - **`logic()`**: Your async function that controls the conversation flow
230
- - **`UserInputFunc`**: Provides programmatic user input collection
231
- - **`VibecoreContext`**: Shared state across tools and agents
232
- - **Agent Handoffs**: Transfer control between specialized agents
246
+ - **`Vibecore` class**: Main entry point that orchestrates your workflow
247
+ - **`@vibecore.workflow()` decorator**: Defines your conversation logic function
248
+ - **Runner argument**: Every workflow receives a runner instance for user input, printing, and agent execution
249
+ - **`runner.user_input()`**: Programmatically collect user input
250
+ - **`runner.print()`**: Display status messages to the user
251
+ - **`runner.run_agent()`**: Execute agent with automatic streaming handling
252
+ - **`runner.context`**: Shared state (VibecoreContext) across tools and agents
253
+ - **`runner.session`**: Conversation history and persistence
254
+ - **Multiple execution modes**:
255
+ - `run_textual()`: Full TUI with streaming (original behavior)
256
+ - `run_cli()`: Simple CLI with stdin/stdout
257
+ - `run()`: Static mode with predefined inputs (perfect for testing)
258
+ - **Agent Handoffs**: Transfer control between specialized agents with context preservation
259
+
260
+ > 🛠️ Upgrading from an older release? Read the [Runner Migration Guide](docs/runner_migration.md) for step-by-step instructions.
261
+
262
+ ### Multi-Mode Execution
263
+
264
+ One of vibecore's key strengths is the ability to run the **same workflow code** in different execution modes without modification:
265
+
266
+ #### TUI Mode (Textual User Interface)
267
+ Full-featured terminal interface with streaming responses, tool visualization, and interactive controls:
268
+ ```python
269
+ result = await vibecore.run_textual(shutdown=False)
270
+ ```
271
+
272
+ #### CLI Mode (Command-Line Interface)
273
+ Simple stdin/stdout interaction for scripting and automation:
274
+ ```python
275
+ result = await vibecore.run_cli()
276
+ ```
277
+
278
+ #### Static Mode (Programmatic)
279
+ Execute with predefined inputs, perfect for testing and batch processing:
280
+ ```python
281
+ # Single input
282
+ result = await vibecore.run("Calculate 2+2")
283
+
284
+ # Multiple inputs (for multi-turn workflows)
285
+ result = await vibecore.run(["First query", "Follow-up", "Final question"])
286
+ ```
287
+
288
+ This unified interface means you can:
289
+ - **Develop once, deploy anywhere**: Write your workflow logic once and run it in any mode
290
+ - **Test easily**: Use static mode for automated testing with predefined inputs
291
+ - **Choose the right interface**: TUI for development, CLI for scripts, static for tests
292
+ - **Extend to new modes**: Add custom runners (HTTP API, Discord bot, etc.) by implementing the runner interface
233
293
 
234
294
  ### Use Cases
235
295
 
@@ -446,11 +506,6 @@ When enabled, the path confinement system:
446
506
  - Resolves symlinks to prevent escapes
447
507
  - Blocks access to files outside allowed directories
448
508
 
449
- ### Reasoning Effort
450
-
451
- - Set default via env var: `VIBECORE_REASONING_EFFORT` (minimal | low | medium | high)
452
- - Keyword triggers: `think` → low, `think hard` → medium, `ultrathink` → high
453
-
454
509
  ### Environment Variables
455
510
 
456
511
  ```bash
@@ -507,10 +562,15 @@ vibecore is built with a modular, extensible architecture:
507
562
 
508
563
  ## Recent Updates
509
564
 
510
- - **Path Confinement**: New security feature to restrict file and shell operations to specified directories
511
- - **Reasoning View**: New ReasoningMessage widget with live reasoning summaries during streaming
565
+ - **Flow Mode Refactor (v0.5.0)**: Complete redesign with multi-mode execution support
566
+ - New `Vibecore` class with decorator-based workflow definition
567
+ - Unified interface: `user_input()`, `print()`, `run_agent()`
568
+ - Three execution modes: TUI, CLI, and static (perfect for testing)
569
+ - Cleaner API with less boilerplate and better type safety
570
+ - **Path Confinement**: Security feature to restrict file and shell operations to specified directories
571
+ - **Reasoning View**: ReasoningMessage widget with live reasoning summaries during streaming
512
572
  - **Context Usage Bar & CWD**: Footer shows token usage progress and current working directory
513
- - **Keyboard & Commands**: Ctrl+Shift+D toggles theme, Esc cancels, Ctrl+D double-press to exit, `/help` and `/clear` commands
573
+ - **Keyboard & Commands**: Ctrl+Shift+D toggles theme, Esc cancels, Ctrl+D double-press to exit, `/help` command
514
574
  - **MCP Tool Output**: Improved rendering with Markdown and JSON prettification
515
575
  - **MCP Support**: Full integration with Model Context Protocol for external tool connections
516
576
  - **Print Mode**: `-p` flag to print response and exit for pipes/automation
@@ -1,14 +1,14 @@
1
1
  vibecore/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
2
- vibecore/cli.py,sha256=HU2cjvEDzMWlauoArUItBlTpsVAdgVuKFMLshtaqvUE,7119
3
- vibecore/context.py,sha256=SZdWOOBKOPBRVC66Y3NohkWdxR5dbAycCHynuqhmEFo,2577
4
- vibecore/flow.py,sha256=1Tcbnox4UwDHFJ3i0hBGu7TZsBfjLkEsGFuJVhJjmcY,12205
5
- vibecore/main.py,sha256=JeUhWOoWZDmvFrufMHe01DiUlTNsovcmpH9w8uudTm8,20127
2
+ vibecore/cli.py,sha256=_DUP66ICv383PtHJGp8FIGoN2K7ntc-ofZHW7XOgI1Y,8416
3
+ vibecore/context.py,sha256=mfm3IBTnnoyfL3jDisr_B-z_44eanmXw6Lqz3tXw8Vg,3045
4
+ vibecore/flow.py,sha256=beN1kgd4krhMoPia0m_ygveXX0JCw1K2LB05rh4syfU,13071
5
+ vibecore/main.py,sha256=mpmxFMc74gyC-wWhk2-y3Pw0notZnHcF4zJwxs7gx_s,12439
6
6
  vibecore/main.tcss,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
7
7
  vibecore/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
8
8
  vibecore/settings.py,sha256=0hugs44VOKB47ysmkJ1BqZnfR8-Lvm_8OmEt3VTUjak,8471
9
- vibecore/agents/default.py,sha256=wxeP3Hsq9MVBChyMF_sNkVHCtFFXgy5ghDIxy9eH_fQ,2287
9
+ vibecore/agents/default.py,sha256=LTMZcDzzl4s8B4QeqF6EY2TqP3El-LuuaQuGrt3ytSk,2299
10
10
  vibecore/agents/prompts.py,sha256=0oO9QzcytIbzgZcKJQjWD9fSRNQqBqqK5ku0fcYZZrA,324
11
- vibecore/agents/task.py,sha256=cdhZDzKDA8eHHNYPhogFIKBms3oVAMvYeiBB2GqYNuE,1898
11
+ vibecore/agents/task.py,sha256=jtYurlSHcSmPz0oRGDmBDUqD0F4HZznBm8wNd8Xj6IA,1910
12
12
  vibecore/auth/__init__.py,sha256=lFxAcdjXpmCjU2tWBnej3fyUqJKSc41qHLF8929nMRM,451
13
13
  vibecore/auth/config.py,sha256=xEuChq61dygaDGhpOA9kK3VSximL42Usd-xBOY2XMpw,1650
14
14
  vibecore/auth/interceptor.py,sha256=KsMbnTi8DDVDnwiC1YT4APjcpvpIVQK3kMSS28wizNs,5127
@@ -19,7 +19,7 @@ vibecore/auth/pkce.py,sha256=YMQxddItPqUyy1pkKfYPNWIahWhIUVWL7vPFsQQvb7M,956
19
19
  vibecore/auth/storage.py,sha256=dWSDi4thRHHrSTJmAOInOdArTGQ_t0EdWHrk4Am8LWg,3495
20
20
  vibecore/auth/token_manager.py,sha256=Dwd0EkbBVeoIef7K6RW4QzaS7-6HAM-or0Ra4M1xddg,4611
21
21
  vibecore/handlers/__init__.py,sha256=pFogA2n3GeIi4lmlUEU5jFprNNOaA6AWRR8Wc9X-P4Y,148
22
- vibecore/handlers/stream_handler.py,sha256=e4VJOJcH84QmgKkGjOedwd85EZWmmvipmJpGuDBSPhA,11069
22
+ vibecore/handlers/stream_handler.py,sha256=npSBCTZO_HDTyZOeZq0Ajarb4Emi9bkhocxLg_HS2_I,10697
23
23
  vibecore/mcp/__init__.py,sha256=sl2_8pWjPx4TotO0ZojunVA6Jn6yOhbTQNbQG9-C-Jc,199
24
24
  vibecore/mcp/manager.py,sha256=RRpoFUiQjSg0-h9M7sF3odaSM7LURwrxVlaae5Yml3M,5644
25
25
  vibecore/mcp/server_wrapper.py,sha256=CkTyqZzmy7oeciSml0Q915orho_U2XcHoqhDVMOq7nY,3989
@@ -30,45 +30,45 @@ vibecore/prompts/common_system_prompt.txt,sha256=L-YlOfTJSQLtVg6d0r9lcD5FrgOLzoS
30
30
  vibecore/session/__init__.py,sha256=FXbtw8DZVBw8e3qCA2cQharMzozblhwA0yU4U0JRSkM,121
31
31
  vibecore/session/file_lock.py,sha256=vCuDdfaOGDeVpTjJP6yBJx7onIT7JkkAeAuWAtuLJb8,3739
32
32
  vibecore/session/jsonl_session.py,sha256=hS03fbgPzKEKdUesdg_8OHCoD1nnMFjHe54K2Psh3SY,8771
33
- vibecore/session/loader.py,sha256=vmDwzjtedFEeWhaFa6HbygjL32-bSNXM6KccQC9hyJs,6880
33
+ vibecore/session/loader.py,sha256=HTQDXW9kcw9eBWu7zN34jvRstXlKejyGE6ZoR6ux3Go,6846
34
34
  vibecore/session/path_utils.py,sha256=_meng4PnOR59ekPWp_WICkt8yVkokt8c6oePZvk3m-4,2544
35
35
  vibecore/tools/__init__.py,sha256=nppfKiflvkQRUotBrj9nFU0veWex1DE_YX1fg67SRlw,37
36
36
  vibecore/tools/base.py,sha256=POI1bM89qDWlQ5VfcdUFoIg_Tv5Rlrd6sQTRLj-4YmQ,658
37
37
  vibecore/tools/path_validator.py,sha256=3Dob33-A6aNy92UeFAEEQME10V_P4N6ZODf7o5H6fYU,8566
38
38
  vibecore/tools/file/__init__.py,sha256=EhdebEC6JTaiROkpItoJWK2lGEq2B5ReNL_IRqxZX5w,147
39
- vibecore/tools/file/executor.py,sha256=KRwXZD_n2ypQ8m7kAz06WFgboIW8lJonOBZ_z-fZFo4,12079
40
- vibecore/tools/file/tools.py,sha256=qkR_IxYHaNfjWkLjiA3Y5Uvq6jXycZWvlMAYWE_cCkM,8345
39
+ vibecore/tools/file/executor.py,sha256=2r4r7Q-_2POkxfHHAA2dCo4bEU9c6TtfgBOIIJaV6HU,12136
40
+ vibecore/tools/file/tools.py,sha256=6mwrQNkW7njjqdv_MqHHRwvMFPxELi27QJaUK9n9FP8,8370
41
41
  vibecore/tools/file/utils.py,sha256=0Gef8HZgq520pqYgsF8n4cL9FNtzA7nYEr8bBCZVnro,2356
42
42
  vibecore/tools/python/__init__.py,sha256=bqSKgP2pY3bArCmQxOsWFflfmASq3SybOlrmZiz9y4s,35
43
- vibecore/tools/python/helpers.py,sha256=y-qwCQ4aRMVUZU6F9OpjgrbzsIGn8i16idXEWR5MBNU,2918
43
+ vibecore/tools/python/helpers.py,sha256=NlGzDHseubLsEGVnyU2fAtCeb_nKh9vzEicOlQeWzlY,2922
44
44
  vibecore/tools/python/manager.py,sha256=5r7RAqJL7FAIf3xBNqsr-T_La2XHd3KIy5olubuBRZ4,7502
45
- vibecore/tools/python/tools.py,sha256=OBz9csUUk90Pq3QwHEkz49NcJhgK-3MhaCeCd-mGPOM,917
45
+ vibecore/tools/python/tools.py,sha256=xSPPLbNh7rDmF0Oo6_77I_Q_1zsxyqq5ztELynIxHmg,921
46
46
  vibecore/tools/python/backends/__init__.py,sha256=RTfU7AzlVyDSaldfVNdKAgv4759RQAl07-UFGqc70Oo,50
47
47
  vibecore/tools/python/backends/terminal_backend.py,sha256=3PA4haJN-dyIvnudx6qfx58ThjaeT7DULnCvhacADbw,1908
48
48
  vibecore/tools/shell/__init__.py,sha256=Ias6qmBMDK29q528VtUGtCQeYD4RU_Yx73SIAJrB8No,133
49
- vibecore/tools/shell/executor.py,sha256=9bEXHU83fXo5zCIS0ZcOeF6ZabCcE4zaNqVGLHJnPKk,9333
50
- vibecore/tools/shell/tools.py,sha256=EgbNP5d-MaGfy_UM451GHDLsYUJsSvspQUCvpKzbu9s,6849
49
+ vibecore/tools/shell/executor.py,sha256=vVWZ2jk_TAAkgbOQV0FuC2xzTdeOtdWOqj60bxAOAj4,9358
50
+ vibecore/tools/shell/tools.py,sha256=D_w9m8W1jJjeEnv3t8yie_SXd1Ce1wAtU8dW8xwVAOY,6874
51
51
  vibecore/tools/task/__init__.py,sha256=Fyw33zGiBArMnPuRMm7qwSYE6ZRPCZVbHK6eIUJDiJY,112
52
- vibecore/tools/task/executor.py,sha256=gRIdq0f2gjDKxnWH-b5Rbmk1H2garIs56EDYFVKfUiw,1606
53
- vibecore/tools/task/tools.py,sha256=m6MBOQC3Pz07TZgd3lVAHPGQu9M-Ted-YOxQvIPrGvo,2257
52
+ vibecore/tools/task/executor.py,sha256=Q7rNmPb38CcOrMvPJnxERZc3S4ryti_T_f-yRpA1Ivc,1614
53
+ vibecore/tools/task/tools.py,sha256=uAIAVkcIWmIolpGo9LlS_2CacWmxuWvp5rKwijvwZC0,2265
54
54
  vibecore/tools/todo/__init__.py,sha256=67o76OyzqYKBH461R9H2-rkNx7ZK6tRSydca3GjqKh8,29
55
55
  vibecore/tools/todo/manager.py,sha256=-kww4y57BUFbnKI2eWo44CC1fDNX_UcSm76GwCwL3do,624
56
56
  vibecore/tools/todo/models.py,sha256=qikR5S4VmwkvYTWxhlBxRxXgri5YitZ6hVdRrRySRAk,503
57
- vibecore/tools/todo/tools.py,sha256=oQB-mBmOa3kPLcenFOtYCQcw6rrwFWVirR0jUHIIIuI,5176
57
+ vibecore/tools/todo/tools.py,sha256=KhGZ5LaDPfR4OGUWVNCokIN1VCHgrZ0nsA7sDoRzVI0,5176
58
58
  vibecore/tools/webfetch/__init__.py,sha256=fKfht3oiz-wMNgtukQjYIUcUC4y7g3GLKK7QXHl0Mcg,224
59
59
  vibecore/tools/webfetch/executor.py,sha256=DFjnHgAvDPuwP5h4fgXM2JH270TgF4Vux7ndmZLs9BI,4912
60
60
  vibecore/tools/webfetch/models.py,sha256=YvGR4i8Mi7gygCJe7-VPyrvbgacBUJ1PLHyCmOQPmuU,694
61
- vibecore/tools/webfetch/tools.py,sha256=PWt8hBPD02ua2d9ZnDVfqtNVzachtIPB9QPStbkYY2Y,1494
61
+ vibecore/tools/webfetch/tools.py,sha256=X1uvJLD-7mA1ewZcmYI-MhTNuKcAELEdcF3UDY6g73s,1384
62
62
  vibecore/tools/websearch/__init__.py,sha256=xl3aPD-pOt0Ya4L8khMbOfqpcCpkWTy2-KVk2hUxnOU,97
63
63
  vibecore/tools/websearch/base.py,sha256=El9Mx6MFWM3CKGG8MPbPIKgRjdbNZtylFALsPCUTPFs,596
64
64
  vibecore/tools/websearch/executor.py,sha256=CLwFkPSDzllH7J1hNdjsp5L0SDLqoINlOSl-zoQKs2A,1114
65
65
  vibecore/tools/websearch/models.py,sha256=5cwDw9dWLZ6krP_khx1euwsHjSYLIE4_hNefkjzrkWE,749
66
- vibecore/tools/websearch/tools.py,sha256=leDf9nmvl8577TMrj7MTodYFx1vyXiIPDral0yzEYm8,1734
66
+ vibecore/tools/websearch/tools.py,sha256=1sk6q1ivUIk2rUfojYdHP5gHy7ONH3zxi1v2wHKZGWc,1624
67
67
  vibecore/tools/websearch/ddgs/__init__.py,sha256=XwZ7As5mVqxXz69In96L3TDChPhpc8GnZR72LgdBvX4,113
68
68
  vibecore/tools/websearch/ddgs/backend.py,sha256=HHcckGFoPaFGYSl4k5UH6PURgF1sk8zYWSWVEYeAEtI,1959
69
69
  vibecore/utils/__init__.py,sha256=KIS8TkfaDZ1AclSstkYcG8DvJPNsJNOE4EL4zHJE2k4,112
70
70
  vibecore/utils/text.py,sha256=RLVFrVsD5L7xi68JTgSa0PeN9S32faqIiaF79dNCyTM,978
71
- vibecore/widgets/core.py,sha256=ZIdHBvfIaAXaBhA2X3EUkDlL2pN4l5j5Kc_E-VCsM3g,12068
71
+ vibecore/widgets/core.py,sha256=MIDWvdAiPLbhOmSQR0Aql3TJ1E1qu3z3YVHWRFM_5sg,11711
72
72
  vibecore/widgets/core.tcss,sha256=fgjEv_3G_dAMwmWsaz4Uz-lXQzpN5oLSxeRYU4ygnDY,1016
73
73
  vibecore/widgets/expandable.py,sha256=GIcXXzVGr4BdyATphUrHZqB30DF_WgeyrccjEIf7FWc,5603
74
74
  vibecore/widgets/expandable.tcss,sha256=zmm5zDDabvXiePwwsuSGLPkxHUYunEjmwkp5XrTjxSw,1343
@@ -81,8 +81,8 @@ vibecore/widgets/messages.tcss,sha256=Dhz6X1Fkj2XN9bVGVH_hBelDF7WXNE6hHMkGQRQy1Q
81
81
  vibecore/widgets/tool_message_factory.py,sha256=yrZorT4HKo5b6rWUc0dgQle7q7cvLyq8JllE772RZS0,5730
82
82
  vibecore/widgets/tool_messages.py,sha256=hJOolN3iLTAjqfotfH1elXqsdDo1r_UHjsyRVH0GAeo,29415
83
83
  vibecore/widgets/tool_messages.tcss,sha256=gdChmHClURqn_sD9GkcOGQcQVYvUUl75mLUYp85sKz8,8442
84
- vibecore-0.5.0.dist-info/METADATA,sha256=Ow2rN0Iwmim2skl99Og1fYZEz1VTd_c4GS8crTl6P_0,19550
85
- vibecore-0.5.0.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
86
- vibecore-0.5.0.dist-info/entry_points.txt,sha256=i9mOKvpz07ciV_YYisxNCYZ53_Crjkn9mciiQ3aA6QM,51
87
- vibecore-0.5.0.dist-info/licenses/LICENSE,sha256=KXxxifvrcreHrZ4aOYgP-vA8DRHHueW389KKOeEbtjc,1069
88
- vibecore-0.5.0.dist-info/RECORD,,
84
+ vibecore-0.6.1.dist-info/METADATA,sha256=THwAYTUPeP8Gpnjd95N16rkIeas2_hIVhmNUQp5DYMY,22141
85
+ vibecore-0.6.1.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
86
+ vibecore-0.6.1.dist-info/entry_points.txt,sha256=i9mOKvpz07ciV_YYisxNCYZ53_Crjkn9mciiQ3aA6QM,51
87
+ vibecore-0.6.1.dist-info/licenses/LICENSE,sha256=KXxxifvrcreHrZ4aOYgP-vA8DRHHueW389KKOeEbtjc,1069
88
+ vibecore-0.6.1.dist-info/RECORD,,