utim-cli 1.46.2__tar.gz → 1.46.6__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.46.2/utim_cli.egg-info → utim_cli-1.46.6}/PKG-INFO +1 -1
- {utim_cli-1.46.2 → utim_cli-1.46.6}/pyproject.toml +1 -1
- {utim_cli-1.46.2 → utim_cli-1.46.6}/utim_cli/server/router.py +6 -1
- {utim_cli-1.46.2 → utim_cli-1.46.6}/utim_cli/tui/model_dialog.py +8 -52
- {utim_cli-1.46.2 → utim_cli-1.46.6}/utim_cli/utim.py +3 -3
- {utim_cli-1.46.2 → utim_cli-1.46.6/utim_cli.egg-info}/PKG-INFO +1 -1
- {utim_cli-1.46.2 → utim_cli-1.46.6}/CHANGELOG.md +0 -0
- {utim_cli-1.46.2 → utim_cli-1.46.6}/LICENSE +0 -0
- {utim_cli-1.46.2 → utim_cli-1.46.6}/MANIFEST.in +0 -0
- {utim_cli-1.46.2 → utim_cli-1.46.6}/README.md +0 -0
- {utim_cli-1.46.2 → utim_cli-1.46.6}/setup.cfg +0 -0
- {utim_cli-1.46.2 → utim_cli-1.46.6}/setup.py +0 -0
- {utim_cli-1.46.2 → utim_cli-1.46.6}/utim_cli/__init__.py +0 -0
- {utim_cli-1.46.2 → utim_cli-1.46.6}/utim_cli/agent.py +0 -0
- {utim_cli-1.46.2 → utim_cli-1.46.6}/utim_cli/auth.py +0 -0
- {utim_cli-1.46.2 → utim_cli-1.46.6}/utim_cli/backup.py +0 -0
- {utim_cli-1.46.2 → utim_cli-1.46.6}/utim_cli/blender_agent.py +0 -0
- {utim_cli-1.46.2 → utim_cli-1.46.6}/utim_cli/bootstrap.py +0 -0
- {utim_cli-1.46.2 → utim_cli-1.46.6}/utim_cli/client_utils.py +0 -0
- {utim_cli-1.46.2 → utim_cli-1.46.6}/utim_cli/config.py +0 -0
- {utim_cli-1.46.2 → utim_cli-1.46.6}/utim_cli/constants.py +0 -0
- {utim_cli-1.46.2 → utim_cli-1.46.6}/utim_cli/context_pruner.py +0 -0
- {utim_cli-1.46.2 → utim_cli-1.46.6}/utim_cli/doctor.py +0 -0
- {utim_cli-1.46.2 → utim_cli-1.46.6}/utim_cli/knowledge_graph.py +0 -0
- {utim_cli-1.46.2 → utim_cli-1.46.6}/utim_cli/logger.py +0 -0
- {utim_cli-1.46.2 → utim_cli-1.46.6}/utim_cli/mcp_clean_wrapper.py +0 -0
- {utim_cli-1.46.2 → utim_cli-1.46.6}/utim_cli/mcp_client.py +0 -0
- {utim_cli-1.46.2 → utim_cli-1.46.6}/utim_cli/mcp_registry.json +0 -0
- {utim_cli-1.46.2 → utim_cli-1.46.6}/utim_cli/orchestrator.py +0 -0
- {utim_cli-1.46.2 → utim_cli-1.46.6}/utim_cli/reflection.py +0 -0
- {utim_cli-1.46.2 → utim_cli-1.46.6}/utim_cli/report.py +0 -0
- {utim_cli-1.46.2 → utim_cli-1.46.6}/utim_cli/scrapy_search.py +0 -0
- {utim_cli-1.46.2 → utim_cli-1.46.6}/utim_cli/server/__init__.py +0 -0
- {utim_cli-1.46.2 → utim_cli-1.46.6}/utim_cli/server/auth.py +0 -0
- {utim_cli-1.46.2 → utim_cli-1.46.6}/utim_cli/server/db.py +0 -0
- {utim_cli-1.46.2 → utim_cli-1.46.6}/utim_cli/server/email_utils.py +0 -0
- {utim_cli-1.46.2 → utim_cli-1.46.6}/utim_cli/server/firebase.py +0 -0
- {utim_cli-1.46.2 → utim_cli-1.46.6}/utim_cli/server/history.py +0 -0
- {utim_cli-1.46.2 → utim_cli-1.46.6}/utim_cli/server/logging_config.py +0 -0
- {utim_cli-1.46.2 → utim_cli-1.46.6}/utim_cli/server/models.py +0 -0
- {utim_cli-1.46.2 → utim_cli-1.46.6}/utim_cli/server/rate_limit.py +0 -0
- {utim_cli-1.46.2 → utim_cli-1.46.6}/utim_cli/server/routes/__init__.py +0 -0
- {utim_cli-1.46.2 → utim_cli-1.46.6}/utim_cli/server/routes/auth_routes.py +0 -0
- {utim_cli-1.46.2 → utim_cli-1.46.6}/utim_cli/server/routes/completion_routes.py +0 -0
- {utim_cli-1.46.2 → utim_cli-1.46.6}/utim_cli/server/routes/credit_routes.py +0 -0
- {utim_cli-1.46.2 → utim_cli-1.46.6}/utim_cli/server/routes/quota_routes.py +0 -0
- {utim_cli-1.46.2 → utim_cli-1.46.6}/utim_cli/server/routes/session_routes.py +0 -0
- {utim_cli-1.46.2 → utim_cli-1.46.6}/utim_cli/server/routes/share_routes.py +0 -0
- {utim_cli-1.46.2 → utim_cli-1.46.6}/utim_cli/server/server.py +0 -0
- {utim_cli-1.46.2 → utim_cli-1.46.6}/utim_cli/share.py +0 -0
- {utim_cli-1.46.2 → utim_cli-1.46.6}/utim_cli/share_tui.py +0 -0
- {utim_cli-1.46.2 → utim_cli-1.46.6}/utim_cli/situational_scoring.py +0 -0
- {utim_cli-1.46.2 → utim_cli-1.46.6}/utim_cli/state.py +0 -0
- {utim_cli-1.46.2 → utim_cli-1.46.6}/utim_cli/tools.py +0 -0
- {utim_cli-1.46.2 → utim_cli-1.46.6}/utim_cli/tui/__init__.py +0 -0
- {utim_cli-1.46.2 → utim_cli-1.46.6}/utim_cli/tui/history_dialog.py +0 -0
- {utim_cli-1.46.2 → utim_cli-1.46.6}/utim_cli/tui/mcp_dialog.py +0 -0
- {utim_cli-1.46.2 → utim_cli-1.46.6}/utim_cli/tui/resume_dialog.py +0 -0
- {utim_cli-1.46.2 → utim_cli-1.46.6}/utim_cli/tui/tools_dialog.py +0 -0
- {utim_cli-1.46.2 → utim_cli-1.46.6}/utim_cli/tui/update_dialog.py +0 -0
- {utim_cli-1.46.2 → utim_cli-1.46.6}/utim_cli/vector_memory.py +0 -0
- {utim_cli-1.46.2 → utim_cli-1.46.6}/utim_cli/workspace.py +0 -0
- {utim_cli-1.46.2 → utim_cli-1.46.6}/utim_cli.egg-info/SOURCES.txt +0 -0
- {utim_cli-1.46.2 → utim_cli-1.46.6}/utim_cli.egg-info/dependency_links.txt +0 -0
- {utim_cli-1.46.2 → utim_cli-1.46.6}/utim_cli.egg-info/entry_points.txt +0 -0
- {utim_cli-1.46.2 → utim_cli-1.46.6}/utim_cli.egg-info/requires.txt +0 -0
- {utim_cli-1.46.2 → utim_cli-1.46.6}/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.46.
|
|
7
|
+
version = "1.46.6"
|
|
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"
|
|
@@ -62,7 +62,12 @@ if allowed_origins_env:
|
|
|
62
62
|
else:
|
|
63
63
|
# Default to secure origins in prod, wildcard in dev
|
|
64
64
|
is_prod = os.environ.get("RAILWAY_ENVIRONMENT_NAME", "").lower() in ("production", "prod") or os.environ.get("NODE_ENV") == "production"
|
|
65
|
-
allowed_origins = [
|
|
65
|
+
allowed_origins = [
|
|
66
|
+
"https://utim.dev",
|
|
67
|
+
"https://api.utim.dev",
|
|
68
|
+
"http://localhost:5173",
|
|
69
|
+
"http://localhost:3000"
|
|
70
|
+
] if is_prod else ["*"]
|
|
66
71
|
|
|
67
72
|
app.add_middleware(
|
|
68
73
|
CORSMiddleware,
|
|
@@ -128,32 +128,6 @@ def _dialog_model_main(orchestrator, target="main"):
|
|
|
128
128
|
}
|
|
129
129
|
if is_paid_plan:
|
|
130
130
|
approved_set.update({
|
|
131
|
-
"recraft/recraft-v4.1",
|
|
132
|
-
"recraft/recraft-v4.1-pro",
|
|
133
|
-
"recraft/recraft-v4.1-utility",
|
|
134
|
-
"recraft/recraft-v4.1-utility-pro",
|
|
135
|
-
"recraft/recraft-v4.1-vector",
|
|
136
|
-
"recraft/recraft-v4.1-pro-vector",
|
|
137
|
-
"x-ai/grok-imagine-image-quality",
|
|
138
|
-
"microsoft/mai-image-2.5",
|
|
139
|
-
"sourceful/riverflow-v2.5-fast",
|
|
140
|
-
"sourceful/riverflow-v2.5-pro",
|
|
141
|
-
"google/gemini-3-pro-image",
|
|
142
|
-
"google/gemini-3.1-flash-image",
|
|
143
|
-
"openai/gpt-image-1",
|
|
144
|
-
"openai/gpt-image-1-mini",
|
|
145
|
-
"openai/gpt-image-2",
|
|
146
|
-
"google/gemini-2.5-flash-image",
|
|
147
|
-
"openai/gpt-5-image",
|
|
148
|
-
"openai/gpt-5-image-mini",
|
|
149
|
-
"google/gemini-3-pro-image-preview",
|
|
150
|
-
"black-forest-labs/flux.2-pro",
|
|
151
|
-
"black-forest-labs/flux.2-flex",
|
|
152
|
-
"black-forest-labs/flux.2-max",
|
|
153
|
-
"bytedance-seed/seedream-4.5",
|
|
154
|
-
"black-forest-labs/flux.2-klein-4b",
|
|
155
|
-
"sourceful/riverflow-v2-fast",
|
|
156
|
-
"sourceful/riverflow-v2-pro",
|
|
157
131
|
"anthropic/claude-sonnet-4.6",
|
|
158
132
|
"inclusionai/ling-2.6-flash",
|
|
159
133
|
"xiaomi/mimo-v2.5",
|
|
@@ -207,32 +181,6 @@ def _dialog_model_main(orchestrator, target="main"):
|
|
|
207
181
|
}
|
|
208
182
|
if is_paid_plan:
|
|
209
183
|
approved_set.update({
|
|
210
|
-
"recraft/recraft-v4.1",
|
|
211
|
-
"recraft/recraft-v4.1-pro",
|
|
212
|
-
"recraft/recraft-v4.1-utility",
|
|
213
|
-
"recraft/recraft-v4.1-utility-pro",
|
|
214
|
-
"recraft/recraft-v4.1-vector",
|
|
215
|
-
"recraft/recraft-v4.1-pro-vector",
|
|
216
|
-
"x-ai/grok-imagine-image-quality",
|
|
217
|
-
"microsoft/mai-image-2.5",
|
|
218
|
-
"sourceful/riverflow-v2.5-fast",
|
|
219
|
-
"sourceful/riverflow-v2.5-pro",
|
|
220
|
-
"google/gemini-3-pro-image",
|
|
221
|
-
"google/gemini-3.1-flash-image",
|
|
222
|
-
"openai/gpt-image-1",
|
|
223
|
-
"openai/gpt-image-1-mini",
|
|
224
|
-
"openai/gpt-image-2",
|
|
225
|
-
"google/gemini-2.5-flash-image",
|
|
226
|
-
"openai/gpt-5-image",
|
|
227
|
-
"openai/gpt-5-image-mini",
|
|
228
|
-
"google/gemini-3-pro-image-preview",
|
|
229
|
-
"black-forest-labs/flux.2-pro",
|
|
230
|
-
"black-forest-labs/flux.2-flex",
|
|
231
|
-
"black-forest-labs/flux.2-max",
|
|
232
|
-
"bytedance-seed/seedream-4.5",
|
|
233
|
-
"black-forest-labs/flux.2-klein-4b",
|
|
234
|
-
"sourceful/riverflow-v2-fast",
|
|
235
|
-
"sourceful/riverflow-v2-pro",
|
|
236
184
|
DEFAULT_MODEL,
|
|
237
185
|
"anthropic/claude-sonnet-4.6",
|
|
238
186
|
"inclusionai/ling-2.6-flash",
|
|
@@ -586,12 +534,20 @@ def _dialog_model_main(orchestrator, target="main"):
|
|
|
586
534
|
mid = rm.get("id")
|
|
587
535
|
if mid:
|
|
588
536
|
live_descs[mid] = rm.get("description", "")
|
|
537
|
+
# Dynamically approve all free models for both free and paid plans
|
|
538
|
+
if mid.endswith(":free") or ":free" in mid:
|
|
539
|
+
approved_set.add(mid)
|
|
589
540
|
except Exception:
|
|
590
541
|
pass # Offline — use local descriptions only
|
|
591
542
|
|
|
592
543
|
primary_models = []
|
|
593
544
|
for mid in approved_set:
|
|
594
545
|
desc_val, tags_val = model_descs.get(mid, (live_descs.get(mid, "Fast, efficient model."), []))
|
|
546
|
+
# Tag any free model with 'free' tag dynamically
|
|
547
|
+
if mid.endswith(":free") or ":free" in mid:
|
|
548
|
+
if "free" not in tags_val:
|
|
549
|
+
tags_val = list(tags_val) + ["free"]
|
|
550
|
+
|
|
595
551
|
primary_models.append({
|
|
596
552
|
"model_id": mid,
|
|
597
553
|
"desc": desc_val,
|
|
@@ -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.46.
|
|
588
|
+
console.print(f"\n [bold white]U Think I Make[/bold white] [dim]v1.46.6[/dim]")
|
|
589
589
|
user_email = config.email
|
|
590
590
|
user_type = "UTIM Community"
|
|
591
591
|
api_key = config.get("api_key")
|
|
@@ -2691,7 +2691,7 @@ def check_and_update_background():
|
|
|
2691
2691
|
return
|
|
2692
2692
|
|
|
2693
2693
|
latest_ver = resp.json().get("version", "")
|
|
2694
|
-
current_ver = "1.46.
|
|
2694
|
+
current_ver = "1.46.6"
|
|
2695
2695
|
|
|
2696
2696
|
def parse_ver(v):
|
|
2697
2697
|
return [int(x) for x in v.split(".") if x.isdigit()]
|
|
@@ -2887,7 +2887,7 @@ app = typer.Typer()
|
|
|
2887
2887
|
def version_callback(value: bool):
|
|
2888
2888
|
if value:
|
|
2889
2889
|
import typer
|
|
2890
|
-
print("U Think I Make v1.46.
|
|
2890
|
+
print("U Think I Make v1.46.6")
|
|
2891
2891
|
raise typer.Exit()
|
|
2892
2892
|
|
|
2893
2893
|
@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
|