aizen-ai-cli 2.2.3__tar.gz → 2.2.4__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 (34) hide show
  1. {aizen_ai_cli-2.2.3/aizen_ai_cli.egg-info → aizen_ai_cli-2.2.4}/PKG-INFO +1 -1
  2. {aizen_ai_cli-2.2.3 → aizen_ai_cli-2.2.4}/aizen/config.py +25 -8
  3. {aizen_ai_cli-2.2.3 → aizen_ai_cli-2.2.4}/aizen/tools.py +22 -13
  4. {aizen_ai_cli-2.2.3 → aizen_ai_cli-2.2.4/aizen_ai_cli.egg-info}/PKG-INFO +1 -1
  5. {aizen_ai_cli-2.2.3 → aizen_ai_cli-2.2.4}/pyproject.toml +1 -1
  6. {aizen_ai_cli-2.2.3 → aizen_ai_cli-2.2.4}/setup.py +1 -1
  7. {aizen_ai_cli-2.2.3 → aizen_ai_cli-2.2.4}/MANIFEST.in +0 -0
  8. {aizen_ai_cli-2.2.3 → aizen_ai_cli-2.2.4}/README.md +0 -0
  9. {aizen_ai_cli-2.2.3 → aizen_ai_cli-2.2.4}/aizen/__init__.py +0 -0
  10. {aizen_ai_cli-2.2.3 → aizen_ai_cli-2.2.4}/aizen/commands.py +0 -0
  11. {aizen_ai_cli-2.2.3 → aizen_ai_cli-2.2.4}/aizen/context.py +0 -0
  12. {aizen_ai_cli-2.2.3 → aizen_ai_cli-2.2.4}/aizen/exceptions.py +0 -0
  13. {aizen_ai_cli-2.2.3 → aizen_ai_cli-2.2.4}/aizen/logging_config.py +0 -0
  14. {aizen_ai_cli-2.2.3 → aizen_ai_cli-2.2.4}/aizen/main.py +0 -0
  15. {aizen_ai_cli-2.2.3 → aizen_ai_cli-2.2.4}/aizen/mcp.py +0 -0
  16. {aizen_ai_cli-2.2.3 → aizen_ai_cli-2.2.4}/aizen/plugins.py +0 -0
  17. {aizen_ai_cli-2.2.3 → aizen_ai_cli-2.2.4}/aizen/retry.py +0 -0
  18. {aizen_ai_cli-2.2.3 → aizen_ai_cli-2.2.4}/aizen/session.py +0 -0
  19. {aizen_ai_cli-2.2.3 → aizen_ai_cli-2.2.4}/aizen/utils.py +0 -0
  20. {aizen_ai_cli-2.2.3 → aizen_ai_cli-2.2.4}/aizen_ai_cli.egg-info/SOURCES.txt +0 -0
  21. {aizen_ai_cli-2.2.3 → aizen_ai_cli-2.2.4}/aizen_ai_cli.egg-info/dependency_links.txt +0 -0
  22. {aizen_ai_cli-2.2.3 → aizen_ai_cli-2.2.4}/aizen_ai_cli.egg-info/entry_points.txt +0 -0
  23. {aizen_ai_cli-2.2.3 → aizen_ai_cli-2.2.4}/aizen_ai_cli.egg-info/requires.txt +0 -0
  24. {aizen_ai_cli-2.2.3 → aizen_ai_cli-2.2.4}/aizen_ai_cli.egg-info/top_level.txt +0 -0
  25. {aizen_ai_cli-2.2.3 → aizen_ai_cli-2.2.4}/requirements.txt +0 -0
  26. {aizen_ai_cli-2.2.3 → aizen_ai_cli-2.2.4}/setup.cfg +0 -0
  27. {aizen_ai_cli-2.2.3 → aizen_ai_cli-2.2.4}/tests/test_commands.py +0 -0
  28. {aizen_ai_cli-2.2.3 → aizen_ai_cli-2.2.4}/tests/test_config.py +0 -0
  29. {aizen_ai_cli-2.2.3 → aizen_ai_cli-2.2.4}/tests/test_context.py +0 -0
  30. {aizen_ai_cli-2.2.3 → aizen_ai_cli-2.2.4}/tests/test_main.py +0 -0
  31. {aizen_ai_cli-2.2.3 → aizen_ai_cli-2.2.4}/tests/test_mcp.py +0 -0
  32. {aizen_ai_cli-2.2.3 → aizen_ai_cli-2.2.4}/tests/test_session.py +0 -0
  33. {aizen_ai_cli-2.2.3 → aizen_ai_cli-2.2.4}/tests/test_tools.py +0 -0
  34. {aizen_ai_cli-2.2.3 → aizen_ai_cli-2.2.4}/tests/test_utils.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: aizen-ai-cli
3
- Version: 2.2.3
3
+ Version: 2.2.4
4
4
  Summary: Aizen AI Agent — A professional-grade AI coding assistant for your terminal.
5
5
  Author: Irtaza Malik
6
6
  License: MIT
@@ -21,7 +21,7 @@ logger = logging.getLogger("aizen")
21
21
 
22
22
  # Read version from installed package metadata (stays in sync with pyproject.toml).
23
23
  # Falls back to a hardcoded value only when running from source without installing.
24
- _FALLBACK_VERSION = "2.2.3"
24
+ _FALLBACK_VERSION = "2.2.4"
25
25
  try:
26
26
  VERSION = _pkg_version("aizen-ai-cli")
27
27
  except PackageNotFoundError:
@@ -273,12 +273,20 @@ def _do_update_check(config: dict):
273
273
  except Exception as e:
274
274
  logger.debug("Failed to save config after update check: %s", e)
275
275
 
276
- if latest != VERSION:
276
+ try:
277
+ latest_parts = tuple(map(int, latest.split('.')))
278
+ current_parts = tuple(map(int, VERSION.split('.')))
279
+ is_newer = latest_parts > current_parts
280
+ except Exception:
281
+ is_newer = latest != VERSION
282
+
283
+ if is_newer:
277
284
  console.print(
278
285
  f"\n[bold magenta]🔔 Update available:[/bold magenta] v{VERSION} → v{latest}"
279
286
  )
280
287
  console.print("[dim]Run: pip install -U aizen-ai-cli (or brew upgrade aizen)[/dim]")
281
- console.print("[dim]Then restart Aizen to use the new version![/dim]\n")
288
+ console.print("[dim]Then restart Aizen to use the new version![/dim]\n"
289
+ )
282
290
  except Exception as e:
283
291
  logger.debug("Update check failed (network/parsing): %s", e)
284
292
 
@@ -295,11 +303,20 @@ def check_for_updates(config: dict | None = None):
295
303
  # Check if we have a cached latest version that's newer
296
304
  cached = config.get("_latest_version")
297
305
  if cached and cached != VERSION:
298
- console.print(
299
- f"\n[bold magenta]🔔 Update available:[/bold magenta] v{VERSION} → v{cached}"
300
- )
301
- console.print("[dim]Run: pip install -U aizen-ai-cli (or brew upgrade aizen)[/dim]")
302
- console.print("[dim]Then restart Aizen to use the new version![/dim]\n")
306
+ try:
307
+ cached_parts = tuple(map(int, cached.split('.')))
308
+ current_parts = tuple(map(int, VERSION.split('.')))
309
+ is_newer = cached_parts > current_parts
310
+ except Exception:
311
+ is_newer = cached != VERSION
312
+
313
+ if is_newer:
314
+ console.print(
315
+ f"\n[bold magenta]🔔 Update available:[/bold magenta] v{VERSION} → v{cached}"
316
+ )
317
+ console.print("[dim]Run: pip install -U aizen-ai-cli (or brew upgrade aizen)[/dim]")
318
+ console.print("[dim]Then restart Aizen to use the new version![/dim]\n"
319
+ )
303
320
  return
304
321
 
305
322
  thread = threading.Thread(target=_do_update_check, args=(config,), daemon=True)
@@ -697,19 +697,28 @@ def run_command_impl(command: str, auto_approve: bool = False, timeout: int = 12
697
697
  logger.warning("Command timed out after %ds: %s", timeout, command)
698
698
  return f"Error: Command timed out after {timeout} seconds."
699
699
 
700
- # Read available stdout non-blockingly
701
- if proc.stdout:
702
- rlist, _, _ = select.select([proc.stdout], [], [], 0.1)
703
- if rlist:
704
- line = proc.stdout.readline()
705
- if line:
706
- stdout_lines.append(line)
707
- # Show live output tail (last 15 lines)
708
- tail = "".join(stdout_lines[-15:])
709
- display = Text()
710
- display.append(f" ▶ Running ({elapsed:.0f}s)\n", style="dim italic")
711
- display.append(tail.rstrip(), style="dim")
712
- live.update(display)
700
+ # Read available stdout and stderr non-blockingly
701
+ reads = []
702
+ if proc.stdout: reads.append(proc.stdout)
703
+ if proc.stderr: reads.append(proc.stderr)
704
+
705
+ if reads:
706
+ rlist, _, _ = select.select(reads, [], [], 0.1)
707
+ for fd in rlist:
708
+ if fd == proc.stdout:
709
+ line = proc.stdout.readline()
710
+ if line:
711
+ stdout_lines.append(line)
712
+ # Show live output tail (last 15 lines)
713
+ tail = "".join(stdout_lines[-15:])
714
+ display = Text()
715
+ display.append(f" ▶ Running ({elapsed:.0f}s)\n", style="dim italic")
716
+ display.append(tail.rstrip(), style="dim")
717
+ live.update(display)
718
+ elif fd == proc.stderr:
719
+ line = proc.stderr.readline()
720
+ if line:
721
+ stderr_lines.append(line)
713
722
 
714
723
  # Read remaining output after process exits
715
724
  if proc.stdout:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: aizen-ai-cli
3
- Version: 2.2.3
3
+ Version: 2.2.4
4
4
  Summary: Aizen AI Agent — A professional-grade AI coding assistant for your terminal.
5
5
  Author: Irtaza Malik
6
6
  License: MIT
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "aizen-ai-cli"
7
- version = "2.2.3"
7
+ version = "2.2.4"
8
8
  description = "Aizen AI Agent — A professional-grade AI coding assistant for your terminal."
9
9
  readme = "README.md"
10
10
  license = {text = "MIT"}
@@ -8,7 +8,7 @@ def parse_requirements(filename):
8
8
 
9
9
  setup(
10
10
  name="aizen-ai-cli",
11
- version="2.2.3",
11
+ version="2.2.4",
12
12
  description="Aizen AI Agent — A professional-grade AI coding assistant for your terminal.",
13
13
  packages=["aizen"],
14
14
  install_requires=parse_requirements("requirements.txt"),
File without changes
File without changes
File without changes
File without changes
File without changes