utim-cli 1.45.6__tar.gz → 1.45.8__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.
- {utim_cli-1.45.6/utim_cli.egg-info → utim_cli-1.45.8}/PKG-INFO +1 -1
- {utim_cli-1.45.6 → utim_cli-1.45.8}/pyproject.toml +1 -1
- {utim_cli-1.45.6 → utim_cli-1.45.8}/utim_cli/auth.py +6 -1
- {utim_cli-1.45.6 → utim_cli-1.45.8}/utim_cli/utim.py +8 -5
- {utim_cli-1.45.6 → utim_cli-1.45.8/utim_cli.egg-info}/PKG-INFO +1 -1
- {utim_cli-1.45.6 → utim_cli-1.45.8}/CHANGELOG.md +0 -0
- {utim_cli-1.45.6 → utim_cli-1.45.8}/LICENSE +0 -0
- {utim_cli-1.45.6 → utim_cli-1.45.8}/MANIFEST.in +0 -0
- {utim_cli-1.45.6 → utim_cli-1.45.8}/README.md +0 -0
- {utim_cli-1.45.6 → utim_cli-1.45.8}/setup.cfg +0 -0
- {utim_cli-1.45.6 → utim_cli-1.45.8}/setup.py +0 -0
- {utim_cli-1.45.6 → utim_cli-1.45.8}/utim_cli/__init__.py +0 -0
- {utim_cli-1.45.6 → utim_cli-1.45.8}/utim_cli/agent.py +0 -0
- {utim_cli-1.45.6 → utim_cli-1.45.8}/utim_cli/backup.py +0 -0
- {utim_cli-1.45.6 → utim_cli-1.45.8}/utim_cli/blender_agent.py +0 -0
- {utim_cli-1.45.6 → utim_cli-1.45.8}/utim_cli/bootstrap.py +0 -0
- {utim_cli-1.45.6 → utim_cli-1.45.8}/utim_cli/client_utils.py +0 -0
- {utim_cli-1.45.6 → utim_cli-1.45.8}/utim_cli/config.py +0 -0
- {utim_cli-1.45.6 → utim_cli-1.45.8}/utim_cli/constants.py +0 -0
- {utim_cli-1.45.6 → utim_cli-1.45.8}/utim_cli/context_pruner.py +0 -0
- {utim_cli-1.45.6 → utim_cli-1.45.8}/utim_cli/doctor.py +0 -0
- {utim_cli-1.45.6 → utim_cli-1.45.8}/utim_cli/knowledge_graph.py +0 -0
- {utim_cli-1.45.6 → utim_cli-1.45.8}/utim_cli/logger.py +0 -0
- {utim_cli-1.45.6 → utim_cli-1.45.8}/utim_cli/mcp_clean_wrapper.py +0 -0
- {utim_cli-1.45.6 → utim_cli-1.45.8}/utim_cli/mcp_client.py +0 -0
- {utim_cli-1.45.6 → utim_cli-1.45.8}/utim_cli/mcp_registry.json +0 -0
- {utim_cli-1.45.6 → utim_cli-1.45.8}/utim_cli/orchestrator.py +0 -0
- {utim_cli-1.45.6 → utim_cli-1.45.8}/utim_cli/reflection.py +0 -0
- {utim_cli-1.45.6 → utim_cli-1.45.8}/utim_cli/report.py +0 -0
- {utim_cli-1.45.6 → utim_cli-1.45.8}/utim_cli/scrapy_search.py +0 -0
- {utim_cli-1.45.6 → utim_cli-1.45.8}/utim_cli/server/__init__.py +0 -0
- {utim_cli-1.45.6 → utim_cli-1.45.8}/utim_cli/server/auth.py +0 -0
- {utim_cli-1.45.6 → utim_cli-1.45.8}/utim_cli/server/db.py +0 -0
- {utim_cli-1.45.6 → utim_cli-1.45.8}/utim_cli/server/email_utils.py +0 -0
- {utim_cli-1.45.6 → utim_cli-1.45.8}/utim_cli/server/firebase.py +0 -0
- {utim_cli-1.45.6 → utim_cli-1.45.8}/utim_cli/server/history.py +0 -0
- {utim_cli-1.45.6 → utim_cli-1.45.8}/utim_cli/server/logging_config.py +0 -0
- {utim_cli-1.45.6 → utim_cli-1.45.8}/utim_cli/server/models.py +0 -0
- {utim_cli-1.45.6 → utim_cli-1.45.8}/utim_cli/server/rate_limit.py +0 -0
- {utim_cli-1.45.6 → utim_cli-1.45.8}/utim_cli/server/router.py +0 -0
- {utim_cli-1.45.6 → utim_cli-1.45.8}/utim_cli/server/routes/__init__.py +0 -0
- {utim_cli-1.45.6 → utim_cli-1.45.8}/utim_cli/server/routes/auth_routes.py +0 -0
- {utim_cli-1.45.6 → utim_cli-1.45.8}/utim_cli/server/routes/completion_routes.py +0 -0
- {utim_cli-1.45.6 → utim_cli-1.45.8}/utim_cli/server/routes/credit_routes.py +0 -0
- {utim_cli-1.45.6 → utim_cli-1.45.8}/utim_cli/server/routes/quota_routes.py +0 -0
- {utim_cli-1.45.6 → utim_cli-1.45.8}/utim_cli/server/routes/session_routes.py +0 -0
- {utim_cli-1.45.6 → utim_cli-1.45.8}/utim_cli/server/routes/share_routes.py +0 -0
- {utim_cli-1.45.6 → utim_cli-1.45.8}/utim_cli/server/server.py +0 -0
- {utim_cli-1.45.6 → utim_cli-1.45.8}/utim_cli/share.py +0 -0
- {utim_cli-1.45.6 → utim_cli-1.45.8}/utim_cli/share_tui.py +0 -0
- {utim_cli-1.45.6 → utim_cli-1.45.8}/utim_cli/situational_scoring.py +0 -0
- {utim_cli-1.45.6 → utim_cli-1.45.8}/utim_cli/state.py +0 -0
- {utim_cli-1.45.6 → utim_cli-1.45.8}/utim_cli/tools.py +0 -0
- {utim_cli-1.45.6 → utim_cli-1.45.8}/utim_cli/tui/__init__.py +0 -0
- {utim_cli-1.45.6 → utim_cli-1.45.8}/utim_cli/tui/history_dialog.py +0 -0
- {utim_cli-1.45.6 → utim_cli-1.45.8}/utim_cli/tui/mcp_dialog.py +0 -0
- {utim_cli-1.45.6 → utim_cli-1.45.8}/utim_cli/tui/model_dialog.py +0 -0
- {utim_cli-1.45.6 → utim_cli-1.45.8}/utim_cli/tui/resume_dialog.py +0 -0
- {utim_cli-1.45.6 → utim_cli-1.45.8}/utim_cli/tui/tools_dialog.py +0 -0
- {utim_cli-1.45.6 → utim_cli-1.45.8}/utim_cli/tui/update_dialog.py +0 -0
- {utim_cli-1.45.6 → utim_cli-1.45.8}/utim_cli/vector_memory.py +0 -0
- {utim_cli-1.45.6 → utim_cli-1.45.8}/utim_cli/workspace.py +0 -0
- {utim_cli-1.45.6 → utim_cli-1.45.8}/utim_cli.egg-info/SOURCES.txt +0 -0
- {utim_cli-1.45.6 → utim_cli-1.45.8}/utim_cli.egg-info/dependency_links.txt +0 -0
- {utim_cli-1.45.6 → utim_cli-1.45.8}/utim_cli.egg-info/entry_points.txt +0 -0
- {utim_cli-1.45.6 → utim_cli-1.45.8}/utim_cli.egg-info/requires.txt +0 -0
- {utim_cli-1.45.6 → utim_cli-1.45.8}/utim_cli.egg-info/top_level.txt +0 -0
|
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "utim-cli"
|
|
7
|
-
version = "1.45.
|
|
7
|
+
version = "1.45.8"
|
|
8
8
|
description = "UTIM – Universal Terminal Intelligence Manager. A powerful agentic AI coding assistant for your terminal."
|
|
9
9
|
readme = "README.md"
|
|
10
10
|
requires-python = ">=3.9"
|
|
@@ -114,7 +114,12 @@ def login() -> None:
|
|
|
114
114
|
console.print(f"\n [bold {PURPLE}]Opening browser for sign-in…[/bold {PURPLE}]")
|
|
115
115
|
console.print(f" [dim]If the browser doesn't open, visit:[/dim]")
|
|
116
116
|
console.print(f" [bold {BLUE}]{auth_url}[/bold {BLUE}]\n")
|
|
117
|
-
|
|
117
|
+
|
|
118
|
+
import sys
|
|
119
|
+
sys.stdout.flush()
|
|
120
|
+
|
|
121
|
+
# Run webbrowser.open in a daemon thread so it never hangs the CLI on Termux/mobile
|
|
122
|
+
threading.Thread(target=webbrowser.open, args=(auth_url,), daemon=True).start()
|
|
118
123
|
|
|
119
124
|
# Block until the callback arrives with a 5-minute timeout
|
|
120
125
|
import time
|
|
@@ -585,7 +585,7 @@ def _print_animated_banner():
|
|
|
585
585
|
# Speed up for spaces to make it feel more like typing
|
|
586
586
|
time.sleep(0.002 if char == " " else 0.005)
|
|
587
587
|
|
|
588
|
-
console.print(f"\n [bold white]U Think I Make[/bold white] [dim]v1.45.
|
|
588
|
+
console.print(f"\n [bold white]U Think I Make[/bold white] [dim]v1.45.8[/dim]")
|
|
589
589
|
user_email = config.email
|
|
590
590
|
user_type = "UTIM Community"
|
|
591
591
|
api_key = config.get("api_key")
|
|
@@ -2420,7 +2420,10 @@ def _build_pt_app(orchestrator, last_sigint):
|
|
|
2420
2420
|
if STATE["busy"]:
|
|
2421
2421
|
console.print(f"\n[dim yellow]⚠ Cannot execute command {text} while agent is busy.[/dim yellow]")
|
|
2422
2422
|
return
|
|
2423
|
-
|
|
2423
|
+
if cmd_word == "/login":
|
|
2424
|
+
run_in_terminal(lambda: _handle_command(cmd_word, orchestrator, event.app), in_executor=True)
|
|
2425
|
+
else:
|
|
2426
|
+
run_in_terminal(lambda: _handle_command(cmd_word, orchestrator, event.app))
|
|
2424
2427
|
return
|
|
2425
2428
|
|
|
2426
2429
|
# Check if the user pasted a UTIM share URL/ID
|
|
@@ -2436,7 +2439,7 @@ def _build_pt_app(orchestrator, last_sigint):
|
|
|
2436
2439
|
auth.login()
|
|
2437
2440
|
except Exception as exc:
|
|
2438
2441
|
console.print(f"\n [bold red]✗ Login failed: {exc}[/bold red]\n")
|
|
2439
|
-
run_in_terminal(run_auth_login)
|
|
2442
|
+
run_in_terminal(run_auth_login, in_executor=True)
|
|
2440
2443
|
# Restore their prompt text so they don't have to retype it
|
|
2441
2444
|
input_field.text = text
|
|
2442
2445
|
return
|
|
@@ -2691,7 +2694,7 @@ def check_and_update_background():
|
|
|
2691
2694
|
return
|
|
2692
2695
|
|
|
2693
2696
|
latest_ver = resp.json().get("version", "")
|
|
2694
|
-
current_ver = "1.45.
|
|
2697
|
+
current_ver = "1.45.8"
|
|
2695
2698
|
|
|
2696
2699
|
def parse_ver(v):
|
|
2697
2700
|
return [int(x) for x in v.split(".") if x.isdigit()]
|
|
@@ -2887,7 +2890,7 @@ app = typer.Typer()
|
|
|
2887
2890
|
def version_callback(value: bool):
|
|
2888
2891
|
if value:
|
|
2889
2892
|
import typer
|
|
2890
|
-
print("U Think I Make v1.45.
|
|
2893
|
+
print("U Think I Make v1.45.8")
|
|
2891
2894
|
raise typer.Exit()
|
|
2892
2895
|
|
|
2893
2896
|
@app.callback(invoke_without_command=True)
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|