cliara 0.3.0__tar.gz → 0.3.2__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 (55) hide show
  1. {cliara-0.3.0 → cliara-0.3.2}/PKG-INFO +1 -1
  2. {cliara-0.3.0 → cliara-0.3.2}/cliara/__init__.py +1 -1
  3. {cliara-0.3.0 → cliara-0.3.2}/cliara/config.py +14 -4
  4. cliara-0.3.2/cliara/install_logo.py +128 -0
  5. {cliara-0.3.0 → cliara-0.3.2}/cliara.egg-info/PKG-INFO +1 -1
  6. {cliara-0.3.0 → cliara-0.3.2}/cliara.egg-info/SOURCES.txt +1 -0
  7. {cliara-0.3.0 → cliara-0.3.2}/pyproject.toml +1 -1
  8. {cliara-0.3.0 → cliara-0.3.2}/README.md +0 -0
  9. {cliara-0.3.0 → cliara-0.3.2}/cliara/agents/__init__.py +0 -0
  10. {cliara-0.3.0 → cliara-0.3.2}/cliara/agents/commit_and_deploy.py +0 -0
  11. {cliara-0.3.0 → cliara-0.3.2}/cliara/agents/copilot_explain.py +0 -0
  12. {cliara-0.3.0 → cliara-0.3.2}/cliara/agents/explain.py +0 -0
  13. {cliara-0.3.0 → cliara-0.3.2}/cliara/agents/fix.py +0 -0
  14. {cliara-0.3.0 → cliara-0.3.2}/cliara/agents/history_search.py +0 -0
  15. {cliara-0.3.0 → cliara-0.3.2}/cliara/agents/history_summary.py +0 -0
  16. {cliara-0.3.0 → cliara-0.3.2}/cliara/agents/nl_to_commands.py +0 -0
  17. {cliara-0.3.0 → cliara-0.3.2}/cliara/agents/prompts/commit_message.txt +0 -0
  18. {cliara-0.3.0 → cliara-0.3.2}/cliara/agents/prompts/copilot_explain.txt +0 -0
  19. {cliara-0.3.0 → cliara-0.3.2}/cliara/agents/prompts/deploy.txt +0 -0
  20. {cliara-0.3.0 → cliara-0.3.2}/cliara/agents/prompts/explain.txt +0 -0
  21. {cliara-0.3.0 → cliara-0.3.2}/cliara/agents/prompts/fix.txt +0 -0
  22. {cliara-0.3.0 → cliara-0.3.2}/cliara/agents/prompts/history_search.txt +0 -0
  23. {cliara-0.3.0 → cliara-0.3.2}/cliara/agents/prompts/history_summary.txt +0 -0
  24. {cliara-0.3.0 → cliara-0.3.2}/cliara/agents/prompts/nl_to_commands.txt +0 -0
  25. {cliara-0.3.0 → cliara-0.3.2}/cliara/console.py +0 -0
  26. {cliara-0.3.0 → cliara-0.3.2}/cliara/copilot_gate.py +0 -0
  27. {cliara-0.3.0 → cliara-0.3.2}/cliara/cross_platform.py +0 -0
  28. {cliara-0.3.0 → cliara-0.3.2}/cliara/deploy_detector.py +0 -0
  29. {cliara-0.3.0 → cliara-0.3.2}/cliara/deploy_store.py +0 -0
  30. {cliara-0.3.0 → cliara-0.3.2}/cliara/diff_preview.py +0 -0
  31. {cliara-0.3.0 → cliara-0.3.2}/cliara/execution_graph.py +0 -0
  32. {cliara-0.3.0 → cliara-0.3.2}/cliara/highlighting.py +0 -0
  33. {cliara-0.3.0 → cliara-0.3.2}/cliara/macros.py +0 -0
  34. {cliara-0.3.0 → cliara-0.3.2}/cliara/main.py +0 -0
  35. {cliara-0.3.0 → cliara-0.3.2}/cliara/nl_handler.py +0 -0
  36. {cliara-0.3.0 → cliara-0.3.2}/cliara/regression.py +0 -0
  37. {cliara-0.3.0 → cliara-0.3.2}/cliara/safety.py +0 -0
  38. {cliara-0.3.0 → cliara-0.3.2}/cliara/semantic_history.py +0 -0
  39. {cliara-0.3.0 → cliara-0.3.2}/cliara/session_store.py +0 -0
  40. {cliara-0.3.0 → cliara-0.3.2}/cliara/setup_ollama.py +0 -0
  41. {cliara-0.3.0 → cliara-0.3.2}/cliara/setup_wizard.py +0 -0
  42. {cliara-0.3.0 → cliara-0.3.2}/cliara/shell.py +0 -0
  43. {cliara-0.3.0 → cliara-0.3.2}/cliara/storage/__init__.py +0 -0
  44. {cliara-0.3.0 → cliara-0.3.2}/cliara/storage/factory.py +0 -0
  45. {cliara-0.3.0 → cliara-0.3.2}/cliara/storage/json_backend.py +0 -0
  46. {cliara-0.3.0 → cliara-0.3.2}/cliara/storage/postgres_backend.py +0 -0
  47. {cliara-0.3.0 → cliara-0.3.2}/cliara/tools/__init__.py +0 -0
  48. {cliara-0.3.0 → cliara-0.3.2}/cliara/tools/migrate.py +0 -0
  49. {cliara-0.3.0 → cliara-0.3.2}/cliara.egg-info/dependency_links.txt +0 -0
  50. {cliara-0.3.0 → cliara-0.3.2}/cliara.egg-info/entry_points.txt +0 -0
  51. {cliara-0.3.0 → cliara-0.3.2}/cliara.egg-info/requires.txt +0 -0
  52. {cliara-0.3.0 → cliara-0.3.2}/cliara.egg-info/top_level.txt +0 -0
  53. {cliara-0.3.0 → cliara-0.3.2}/setup.cfg +0 -0
  54. {cliara-0.3.0 → cliara-0.3.2}/tests/test_basic.py +0 -0
  55. {cliara-0.3.0 → cliara-0.3.2}/tests/test_copilot_gate.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: cliara
3
- Version: 0.3.0
3
+ Version: 0.3.2
4
4
  Summary: An AI-powered shell that understands natural language and macros
5
5
  Author: Cliara Contributors
6
6
  License: MIT
@@ -8,7 +8,7 @@ A shell wrapper that lets you:
8
8
  - Save command history as macros
9
9
  """
10
10
 
11
- __version__ = "0.3.0"
11
+ __version__ = "0.3.2"
12
12
  __author__ = "Cliara Contributors"
13
13
 
14
14
  from cliara.shell import CliaraShell
@@ -191,10 +191,20 @@ class Config:
191
191
 
192
192
  def setup_first_run(self):
193
193
  """Interactive first-run setup."""
194
- print("\n" + "="*60)
195
- print(" Welcome to Cliara!")
196
- print(" Let's get you set up...")
197
- print("="*60 + "\n")
194
+ try:
195
+ from cliara.install_logo import print_install_logo
196
+ try:
197
+ from importlib.metadata import version as _pkg_version
198
+ _ver = _pkg_version("cliara")
199
+ except Exception:
200
+ _ver = ""
201
+ print_install_logo(version=_ver)
202
+ except Exception:
203
+ print("\n" + "=" * 60)
204
+ print(" Welcome to Cliara!")
205
+ print("=" * 60 + "\n")
206
+
207
+ print(" Let's get you set up...\n")
198
208
 
199
209
  # Detect and confirm shell
200
210
  detected_shell = self._detect_shell()
@@ -0,0 +1,128 @@
1
+ """
2
+ Cliara installation welcome logo.
3
+
4
+ Displayed exactly once — on the first run after installation.
5
+ Uses pixel-block art (similar to Claude Code's style) rendered via Rich.
6
+ """
7
+
8
+ from __future__ import annotations
9
+
10
+ # ---------------------------------------------------------------------------
11
+ # Pixel-block font — each letter is a 5-row × 5-col grid.
12
+ # Each grid cell is 2 terminal characters wide: "██" (filled) or " " (empty).
13
+ # Total per-letter width = 10 chars.
14
+ # ---------------------------------------------------------------------------
15
+ _LETTERS: dict[str, list[str]] = {
16
+ "C": [
17
+ " ██████ ",
18
+ "██ ",
19
+ "██ ",
20
+ "██ ",
21
+ " ██████ ",
22
+ ],
23
+ "L": [
24
+ "██ ",
25
+ "██ ",
26
+ "██ ",
27
+ "██ ",
28
+ "██████████",
29
+ ],
30
+ "I": [
31
+ "██████████",
32
+ " ██ ",
33
+ " ██ ",
34
+ " ██ ",
35
+ "██████████",
36
+ ],
37
+ "A": [
38
+ " ██████ ",
39
+ "██ ██",
40
+ "██████████",
41
+ "██ ██",
42
+ "██ ██",
43
+ ],
44
+ "R": [
45
+ "████████ ",
46
+ "██ ██",
47
+ "████████ ",
48
+ "██ ██ ",
49
+ "██ ██",
50
+ ],
51
+ }
52
+
53
+ # Gradient colors applied top-to-bottom across the logo rows
54
+ _ROW_COLORS = [
55
+ "#00e5cc", # bright teal
56
+ "#00cfba",
57
+ "#00b8a5",
58
+ "#00cfba",
59
+ "#00e5cc",
60
+ ]
61
+
62
+
63
+ def _build_logo_lines(word: str) -> list[str]:
64
+ """Return 5 assembled pixel-art rows for *word*."""
65
+ gap = " "
66
+ rows = []
67
+ for row_idx in range(5):
68
+ parts = [_LETTERS[ch][row_idx] for ch in word.upper() if ch in _LETTERS]
69
+ rows.append(gap.join(parts))
70
+ return rows
71
+
72
+
73
+ def print_install_logo(version: str = "") -> None:
74
+ """Print the Cliara pixel-art welcome banner to stdout.
75
+
76
+ Falls back gracefully to plain text if Rich is unavailable or the
77
+ terminal cannot render Unicode block characters.
78
+ """
79
+ try:
80
+ import sys
81
+
82
+ # Ensure stdout uses UTF-8 so block characters render on Windows.
83
+ if hasattr(sys.stdout, "reconfigure"):
84
+ try:
85
+ sys.stdout.reconfigure(encoding="utf-8", errors="replace")
86
+ except Exception:
87
+ pass
88
+
89
+ from rich.console import Console
90
+ from rich.text import Text
91
+ from rich.align import Align
92
+
93
+ console = Console(highlight=False)
94
+ logo_lines = _build_logo_lines("CLIARA")
95
+
96
+ logo_text = Text()
97
+ for i, line in enumerate(logo_lines):
98
+ color = _ROW_COLORS[i % len(_ROW_COLORS)]
99
+ logo_text.append(line, style=f"bold {color}")
100
+ logo_text.append("\n")
101
+
102
+ ver_str = f"v{version} · " if version else ""
103
+
104
+ console.print()
105
+ console.print(Align.center(logo_text))
106
+ console.print(
107
+ Align.center(
108
+ f"[bold #00e5cc]AI-powered shell[/] [dim]·[/] "
109
+ "[dim]natural language[/] [dim]·[/] [dim]macros[/]"
110
+ )
111
+ )
112
+ console.print(
113
+ Align.center(f"[dim]{ver_str}Type [bold]help[/bold] to get started[/dim]")
114
+ )
115
+ console.print()
116
+
117
+ except Exception:
118
+ _plain_fallback(version)
119
+
120
+
121
+ def _plain_fallback(version: str = "") -> None:
122
+ ver = f" v{version}" if version else ""
123
+ print()
124
+ print("=" * 60)
125
+ print(f" Welcome to Cliara{ver}!")
126
+ print(" AI-powered shell · natural language · macros")
127
+ print("=" * 60)
128
+ print()
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: cliara
3
- Version: 0.3.0
3
+ Version: 0.3.2
4
4
  Summary: An AI-powered shell that understands natural language and macros
5
5
  Author: Cliara Contributors
6
6
  License: MIT
@@ -10,6 +10,7 @@ cliara/deploy_store.py
10
10
  cliara/diff_preview.py
11
11
  cliara/execution_graph.py
12
12
  cliara/highlighting.py
13
+ cliara/install_logo.py
13
14
  cliara/macros.py
14
15
  cliara/main.py
15
16
  cliara/nl_handler.py
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "cliara"
7
- version = "0.3.0"
7
+ version = "0.3.2"
8
8
  description = "An AI-powered shell that understands natural language and macros"
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.8"
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