utim-cli 1.0.0__tar.gz → 1.43.0__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.
Files changed (42) hide show
  1. {utim_cli-1.0.0/utim_cli.egg-info → utim_cli-1.43.0}/PKG-INFO +1 -1
  2. {utim_cli-1.0.0 → utim_cli-1.43.0}/pyproject.toml +1 -1
  3. {utim_cli-1.0.0 → utim_cli-1.43.0}/utim_cli/utim.py +33 -8
  4. {utim_cli-1.0.0 → utim_cli-1.43.0/utim_cli.egg-info}/PKG-INFO +1 -1
  5. {utim_cli-1.0.0 → utim_cli-1.43.0}/CHANGELOG.md +0 -0
  6. {utim_cli-1.0.0 → utim_cli-1.43.0}/LICENSE +0 -0
  7. {utim_cli-1.0.0 → utim_cli-1.43.0}/MANIFEST.in +0 -0
  8. {utim_cli-1.0.0 → utim_cli-1.43.0}/README.md +0 -0
  9. {utim_cli-1.0.0 → utim_cli-1.43.0}/setup.cfg +0 -0
  10. {utim_cli-1.0.0 → utim_cli-1.43.0}/setup.py +0 -0
  11. {utim_cli-1.0.0 → utim_cli-1.43.0}/utim_cli/__init__.py +0 -0
  12. {utim_cli-1.0.0 → utim_cli-1.43.0}/utim_cli/agent.py +0 -0
  13. {utim_cli-1.0.0 → utim_cli-1.43.0}/utim_cli/auth.py +0 -0
  14. {utim_cli-1.0.0 → utim_cli-1.43.0}/utim_cli/backup.py +0 -0
  15. {utim_cli-1.0.0 → utim_cli-1.43.0}/utim_cli/billing.py +0 -0
  16. {utim_cli-1.0.0 → utim_cli-1.43.0}/utim_cli/blender_agent.py +0 -0
  17. {utim_cli-1.0.0 → utim_cli-1.43.0}/utim_cli/bootstrap.py +0 -0
  18. {utim_cli-1.0.0 → utim_cli-1.43.0}/utim_cli/client_utils.py +0 -0
  19. {utim_cli-1.0.0 → utim_cli-1.43.0}/utim_cli/config.py +0 -0
  20. {utim_cli-1.0.0 → utim_cli-1.43.0}/utim_cli/context_pruner.py +0 -0
  21. {utim_cli-1.0.0 → utim_cli-1.43.0}/utim_cli/doctor.py +0 -0
  22. {utim_cli-1.0.0 → utim_cli-1.43.0}/utim_cli/knowledge_graph.py +0 -0
  23. {utim_cli-1.0.0 → utim_cli-1.43.0}/utim_cli/logger.py +0 -0
  24. {utim_cli-1.0.0 → utim_cli-1.43.0}/utim_cli/mcp_clean_wrapper.py +0 -0
  25. {utim_cli-1.0.0 → utim_cli-1.43.0}/utim_cli/mcp_client.py +0 -0
  26. {utim_cli-1.0.0 → utim_cli-1.43.0}/utim_cli/mcp_registry.json +0 -0
  27. {utim_cli-1.0.0 → utim_cli-1.43.0}/utim_cli/orchestrator.py +0 -0
  28. {utim_cli-1.0.0 → utim_cli-1.43.0}/utim_cli/reflection.py +0 -0
  29. {utim_cli-1.0.0 → utim_cli-1.43.0}/utim_cli/report.py +0 -0
  30. {utim_cli-1.0.0 → utim_cli-1.43.0}/utim_cli/scrapy_search.py +0 -0
  31. {utim_cli-1.0.0 → utim_cli-1.43.0}/utim_cli/share.py +0 -0
  32. {utim_cli-1.0.0 → utim_cli-1.43.0}/utim_cli/share_tui.py +0 -0
  33. {utim_cli-1.0.0 → utim_cli-1.43.0}/utim_cli/situational_scoring.py +0 -0
  34. {utim_cli-1.0.0 → utim_cli-1.43.0}/utim_cli/state.py +0 -0
  35. {utim_cli-1.0.0 → utim_cli-1.43.0}/utim_cli/tools.py +0 -0
  36. {utim_cli-1.0.0 → utim_cli-1.43.0}/utim_cli/vector_memory.py +0 -0
  37. {utim_cli-1.0.0 → utim_cli-1.43.0}/utim_cli/workspace.py +0 -0
  38. {utim_cli-1.0.0 → utim_cli-1.43.0}/utim_cli.egg-info/SOURCES.txt +0 -0
  39. {utim_cli-1.0.0 → utim_cli-1.43.0}/utim_cli.egg-info/dependency_links.txt +0 -0
  40. {utim_cli-1.0.0 → utim_cli-1.43.0}/utim_cli.egg-info/entry_points.txt +0 -0
  41. {utim_cli-1.0.0 → utim_cli-1.43.0}/utim_cli.egg-info/requires.txt +0 -0
  42. {utim_cli-1.0.0 → utim_cli-1.43.0}/utim_cli.egg-info/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: utim-cli
3
- Version: 1.0.0
3
+ Version: 1.43.0
4
4
  Summary: UTIM – Universal Terminal Intelligence Manager. A powerful agentic AI coding assistant for your terminal.
5
5
  License: MIT
6
6
  Project-URL: Homepage, https://utim.ai
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "utim-cli"
7
- version = "1.0.0"
7
+ version = "1.43.0"
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"
@@ -422,6 +422,7 @@ PT_STYLE = PTStyle.from_dict({
422
422
  'input-field': 'fg:#cdd6f4',
423
423
  'input-prompt': 'fg:#cdd6f4 bold',
424
424
  'image-path': 'fg:#a6e3a1',
425
+ 'placeholder': 'fg:#45475a italic',
425
426
 
426
427
  # Status bar
427
428
  'status-bar': '',
@@ -992,7 +993,7 @@ def _handle_command(cmd: str, orchestrator: Orchestrator, app_ref) -> None:
992
993
  con.print(Panel(
993
994
  Text.from_markup(
994
995
  "[bold white]U Think I Make (UTIM)[/bold white]\n"
995
- "[dim]Version 0.43.0[/dim]\n\n"
996
+ "[dim]Version 1.43.0[/dim]\n\n"
996
997
  "The next-generation CLI agent for autonomous software engineering.\n"
997
998
  "Built with [bold #42bcf5]UTIM AI[/bold #42bcf5].\n\n"
998
999
  "[dim]Website:[/dim] https://utim.dev\n"
@@ -2864,6 +2865,10 @@ def _manual_confirm_internal(tool_name: str, arguments: dict, diff_lines: list =
2864
2865
  if tool_name == "run_command":
2865
2866
  import utim_cli.tools as _t
2866
2867
  is_safe, reason = _t.analyze_command_safety(target_str)
2868
+ # ── Session-level safe-command bypass ─────────────────────────────
2869
+ if is_safe and STATE.get("session_allow_safe_cmds"):
2870
+ _t.approve_command(target_str)
2871
+ return "allow"
2867
2872
  if is_safe:
2868
2873
  body.append(f"? {label} (Safe): ", style="bold green")
2869
2874
  body.append(target_str, style="bold white")
@@ -2929,12 +2934,16 @@ def _manual_confirm_internal(tool_name: str, arguments: dict, diff_lines: list =
2929
2934
  _t.approve_command(target_str)
2930
2935
  console.print("[dim] ✓ Allowed[/dim]\n")
2931
2936
  return "allow"
2932
- elif choice == 1: # Allow session
2937
+ elif choice == 1: # Allow session / auto-allow safe
2933
2938
  if tool_name == "run_command":
2934
2939
  import utim_cli.tools as _t
2935
2940
  _t.approve_command(target_str)
2936
- console.print("[dim] ✓ Allowed for session auto-accepting remaining changes[/dim]\n")
2937
- STATE["mode"] = "auto-accept edits"
2941
+ # Mark that safe commands should be auto-allowed for the rest of the session
2942
+ STATE["session_allow_safe_cmds"] = True
2943
+ console.print("[dim] ✓ Allowed for session — safe commands will auto-run[/dim]\n")
2944
+ else:
2945
+ console.print("[dim] ✓ Allowed for session — auto-accepting remaining changes[/dim]\n")
2946
+ STATE["mode"] = "auto-accept edits"
2938
2947
  return "allow_session"
2939
2948
  else: # Reject / Escape
2940
2949
  if tool_name == "run_command":
@@ -3275,6 +3284,13 @@ def _build_pt_app(orchestrator, last_sigint):
3275
3284
 
3276
3285
  @kb.add('enter')
3277
3286
  def _on_enter(event):
3287
+ buf = input_field.buffer
3288
+
3289
+ # ── If completion menu is open, accept the highlighted item ──────────
3290
+ if buf.complete_state:
3291
+ buf.apply_completion(buf.complete_state.current_completion)
3292
+ return
3293
+
3278
3294
  text = input_field.text.strip()
3279
3295
  input_field.text = ''
3280
3296
  _hist_state["cursor"] = -1
@@ -3282,12 +3298,21 @@ def _build_pt_app(orchestrator, last_sigint):
3282
3298
 
3283
3299
  if not text:
3284
3300
  return
3285
-
3301
+
3286
3302
  if text.startswith('/'):
3303
+ # Strip to just the command word (e.g. "/res" → "/resume" after completion)
3304
+ cmd_word = text.split()[0].lower()
3305
+ # If incomplete slash command with no match, try to find best prefix match
3306
+ bare = cmd_word.lstrip('/')
3307
+ if bare and bare not in COMMANDS:
3308
+ match = next((c for c in COMMANDS if c.startswith(bare)), None)
3309
+ if match:
3310
+ cmd_word = '/' + match
3311
+ text = cmd_word # replace with resolved command
3287
3312
  if STATE["busy"]:
3288
3313
  console.print(f"\n[dim yellow]⚠ Cannot execute command {text} while agent is busy.[/dim yellow]")
3289
3314
  return
3290
- run_in_terminal(lambda: _handle_command(text, orchestrator, event.app))
3315
+ run_in_terminal(lambda: _handle_command(cmd_word, orchestrator, event.app))
3291
3316
  return
3292
3317
 
3293
3318
  if not _prompt_history or _prompt_history[-1] != text:
@@ -3420,7 +3445,7 @@ def _build_pt_app(orchestrator, last_sigint):
3420
3445
  Float(
3421
3446
  xcursor=True,
3422
3447
  ycursor=True,
3423
- content=CompletionsMenu(max_height=10),
3448
+ content=CompletionsMenu(max_height=8, scroll_offset=2),
3424
3449
  ),
3425
3450
  ],
3426
3451
  ),
@@ -3657,7 +3682,7 @@ app = typer.Typer()
3657
3682
  def version_callback(value: bool):
3658
3683
  if value:
3659
3684
  import typer
3660
- print("utim version 1.0.0")
3685
+ print("U Think I Make v1.43.0")
3661
3686
  raise typer.Exit()
3662
3687
 
3663
3688
  @app.callback(invoke_without_command=True)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: utim-cli
3
- Version: 1.0.0
3
+ Version: 1.43.0
4
4
  Summary: UTIM – Universal Terminal Intelligence Manager. A powerful agentic AI coding assistant for your terminal.
5
5
  License: MIT
6
6
  Project-URL: Homepage, https://utim.ai
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