tiesta 0.1.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 (35) hide show
  1. tiesta-0.1.0/MANIFEST.in +5 -0
  2. tiesta-0.1.0/PKG-INFO +116 -0
  3. tiesta-0.1.0/README.md +83 -0
  4. tiesta-0.1.0/pyproject.toml +59 -0
  5. tiesta-0.1.0/setup.cfg +4 -0
  6. tiesta-0.1.0/tiesta/__init__.py +0 -0
  7. tiesta-0.1.0/tiesta/core/__init__.py +2 -0
  8. tiesta-0.1.0/tiesta/core/config.py +55 -0
  9. tiesta-0.1.0/tiesta/core/llm_client.py +664 -0
  10. tiesta-0.1.0/tiesta/core/lsp_client.py +113 -0
  11. tiesta-0.1.0/tiesta/core/orchestrator.py +802 -0
  12. tiesta-0.1.0/tiesta/core/permissions.py +50 -0
  13. tiesta-0.1.0/tiesta/core/skill_loader.py +73 -0
  14. tiesta-0.1.0/tiesta/main.py +574 -0
  15. tiesta-0.1.0/tiesta/skills_template/web_scraper.py +131 -0
  16. tiesta-0.1.0/tiesta/skills_template/web_search.py +105 -0
  17. tiesta-0.1.0/tiesta/tools/__init__.py +2 -0
  18. tiesta-0.1.0/tiesta/tools/architecture_ops.py +126 -0
  19. tiesta-0.1.0/tiesta/tools/base.py +178 -0
  20. tiesta-0.1.0/tiesta/tools/bash_executor.py +347 -0
  21. tiesta-0.1.0/tiesta/tools/explorer.py +155 -0
  22. tiesta-0.1.0/tiesta/tools/file_ops.py +847 -0
  23. tiesta-0.1.0/tiesta/tools/git_ops.py +180 -0
  24. tiesta-0.1.0/tiesta/tools/hardware_ops.py +130 -0
  25. tiesta-0.1.0/tiesta/tools/lsp_tools.py +124 -0
  26. tiesta-0.1.0/tiesta/tools/semantic_search.py +297 -0
  27. tiesta-0.1.0/tiesta/ui/__init__.py +1 -0
  28. tiesta-0.1.0/tiesta/ui/console.py +482 -0
  29. tiesta-0.1.0/tiesta/ui/wizard.py +106 -0
  30. tiesta-0.1.0/tiesta.egg-info/PKG-INFO +116 -0
  31. tiesta-0.1.0/tiesta.egg-info/SOURCES.txt +33 -0
  32. tiesta-0.1.0/tiesta.egg-info/dependency_links.txt +1 -0
  33. tiesta-0.1.0/tiesta.egg-info/entry_points.txt +2 -0
  34. tiesta-0.1.0/tiesta.egg-info/requires.txt +10 -0
  35. tiesta-0.1.0/tiesta.egg-info/top_level.txt +1 -0
@@ -0,0 +1,5 @@
1
+ include README.md
2
+ include LICENSE
3
+ include pyproject.toml
4
+ recursive-include tiesta/skills_template *
5
+ recursive-include tiesta *.py
tiesta-0.1.0/PKG-INFO ADDED
@@ -0,0 +1,116 @@
1
+ Metadata-Version: 2.4
2
+ Name: tiesta
3
+ Version: 0.1.0
4
+ Summary: Tiesta — Local AI Coding Assistant powered by Ollama
5
+ Author-email: Yakup Karatas <yakup.karatas.developer@gmail.com>
6
+ License: MIT
7
+ Project-URL: Homepage, https://github.com/yakup-karatass/tiesta
8
+ Project-URL: Repository, https://github.com/yakup-karatass/tiesta
9
+ Project-URL: Issues, https://github.com/yakup-karatass/tiesta/issues
10
+ Keywords: ai,coding-assistant,cli,ollama,local-llm
11
+ Classifier: Development Status :: 3 - Alpha
12
+ Classifier: Environment :: Console
13
+ Classifier: Intended Audience :: Developers
14
+ Classifier: License :: OSI Approved :: MIT License
15
+ Classifier: Programming Language :: Python :: 3
16
+ Classifier: Programming Language :: Python :: 3.10
17
+ Classifier: Programming Language :: Python :: 3.11
18
+ Classifier: Programming Language :: Python :: 3.12
19
+ Classifier: Programming Language :: Python :: 3.13
20
+ Classifier: Topic :: Software Development :: Libraries :: Python Modules
21
+ Classifier: Topic :: Software Development :: Code Generators
22
+ Requires-Python: >=3.10
23
+ Description-Content-Type: text/markdown
24
+ Requires-Dist: openai>=1.0.0
25
+ Requires-Dist: rich>=13.0.0
26
+ Requires-Dist: chromadb>=0.4.0
27
+ Requires-Dist: duckduckgo-search>=6.0.0
28
+ Requires-Dist: jedi>=0.19.0
29
+ Requires-Dist: pyserial>=3.5
30
+ Provides-Extra: dev
31
+ Requires-Dist: pytest>=7.0; extra == "dev"
32
+ Requires-Dist: pytest-asyncio>=0.21; extra == "dev"
33
+
34
+ <div align="center">
35
+ <h1>Tiesta: Your AI Engineering Companion</h1>
36
+ <p><strong>A fully autonomous, 100% local, VRAM-efficient AI agent powered by Ollama.</strong></p>
37
+
38
+ [![PyPI Version](https://img.shields.io/pypi/v/tiesta.svg)](https://pypi.org/project/tiesta/)
39
+ [![Python Support](https://img.shields.io/pypi/pyversions/tiesta.svg)](https://pypi.org/project/tiesta/)
40
+ [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
41
+
42
+ </div>
43
+
44
+ ---
45
+
46
+ Tiesta is not just an agent; it's your second engineer. It goes beyond simple autocomplete or conversational chatbots. Tiesta is a true companion who actively explores your codebase, autonomously executes terminal commands, resolves compilation errors, and, when finished, politely asks: *"I've finished my part, what's next?"*
47
+
48
+ Designed from the ground up to run entirely locally, Tiesta empowers developers to build, refactor, and debug complex applications with zero data privacy concerns and absolute flexibility.
49
+
50
+ ---
51
+
52
+ ## 🌟 Features
53
+
54
+ * **100% Local & Private:** No external API calls. Your code never leaves your machine. Powered natively by Ollama.
55
+ * **Bring Your Own Model (BYOM):** During onboarding, dynamically discover and select any Ollama model installed on your system. Highly optimized for `qwen2.5-coder:3b` for ultra-fast, low-VRAM execution.
56
+ * **Hardware-in-the-Loop:** A killer feature for embedded systems. Tiesta can autonomously scan active serial ports and read hardware logs (ESP32, ROS 2, Arduino) to instantly debug your hardware and patch the corresponding Python/C++ code.
57
+ * **Unified Permission Control Plane:** An elegant `Rich`-powered UI intercepts and gates destructive terminal commands (`rm`, massive code deletions), ensuring absolute human oversight before modifying your system.
58
+ * **Polyglot Linter:** Validates syntax proactively. If Tiesta makes a syntax error in Python, JavaScript, C++, Rust, or Dart, it will instantly catch the traceback and self-correct without bothering you.
59
+ * **Dynamic Architecture Maps:** Automatically generates and updates Mermaid.js visual maps (`TIESTA_ARCHITECTURE.md`), allowing the agent to *see* your project structurally while providing human-readable documentation.
60
+ * **Zero-Dependency Semantic RAG:** Instead of relying on heavy `tree-sitter` C-bindings, Tiesta uses a highly efficient, regex-powered semantic chunking system to precisely locate symbols, classes, and variables.
61
+ * **LSP Integration:** Built on `jedi`, it understands your code context natively (go to definition, find usages) without spinning up a heavy background language server.
62
+
63
+ ---
64
+
65
+ ## 🚀 Getting Started
66
+
67
+ ### Prerequisites
68
+
69
+ 1. Install [Ollama](https://ollama.com/) and ensure the daemon is running.
70
+ 2. Pull the recommended default model (or any model of your choice):
71
+ ```bash
72
+ ollama pull qwen2.5-coder:3b
73
+ ```
74
+
75
+ ### Installation
76
+
77
+ Install Tiesta globally via PyPI:
78
+ ```bash
79
+ pip install tiesta
80
+ ```
81
+
82
+ ### Quickstart
83
+
84
+ Run Tiesta interactively in your current project directory:
85
+ ```bash
86
+ tiesta
87
+ ```
88
+ On the very first run, Tiesta's **Onboarding Wizard** will automatically launch to detect your installed Ollama models and set up your preferred environment.
89
+
90
+ You can also run one-shot tasks directly from the terminal:
91
+ ```bash
92
+ tiesta "Refactor the user authentication logic in core/auth.py"
93
+ ```
94
+
95
+ ---
96
+
97
+ ## 🧠 How it Works
98
+
99
+ Tiesta employs a sophisticated "Precision Coding Protocol" via a customized Agentic Execution Loop (The **Orchestrator**):
100
+
101
+ 1. **Context Loading:** Tiesta silently loads a lightweight Zero-Shot workspace awareness map (directory trees, git statuses, architecture graphs).
102
+ 2. **Decomposition:** It forces the underlying LLM to think step-by-step and enumerate a checklist of sub-tasks.
103
+ 3. **Execution & Self-Correction:** Tiesta executes tools natively in a sandboxed environment. If a compilation error or git conflict occurs, the Orchestrator autonomously feeds the traceback back to the LLM to self-correct up to 3 times before asking for human help.
104
+ 4. **Result Verification:** Before rendering the final response to the user, the agent cross-verifies its output against its internal checklist to guarantee completeness.
105
+
106
+ ---
107
+
108
+ ## 🔗 Links
109
+ - **Repository:** [Click here to view the repo](https://github.com/yakup-karatass/tiesta)
110
+ - **Issue Tracker:** [Report bugs/issues here](https://github.com/yakup-karatass/tiesta/issues)
111
+
112
+ ---
113
+
114
+ <div align="center">
115
+ <i>"Speed is secondary to correctness. Measure Twice, Cut Once."</i>
116
+ </div>
tiesta-0.1.0/README.md ADDED
@@ -0,0 +1,83 @@
1
+ <div align="center">
2
+ <h1>Tiesta: Your AI Engineering Companion</h1>
3
+ <p><strong>A fully autonomous, 100% local, VRAM-efficient AI agent powered by Ollama.</strong></p>
4
+
5
+ [![PyPI Version](https://img.shields.io/pypi/v/tiesta.svg)](https://pypi.org/project/tiesta/)
6
+ [![Python Support](https://img.shields.io/pypi/pyversions/tiesta.svg)](https://pypi.org/project/tiesta/)
7
+ [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
8
+
9
+ </div>
10
+
11
+ ---
12
+
13
+ Tiesta is not just an agent; it's your second engineer. It goes beyond simple autocomplete or conversational chatbots. Tiesta is a true companion who actively explores your codebase, autonomously executes terminal commands, resolves compilation errors, and, when finished, politely asks: *"I've finished my part, what's next?"*
14
+
15
+ Designed from the ground up to run entirely locally, Tiesta empowers developers to build, refactor, and debug complex applications with zero data privacy concerns and absolute flexibility.
16
+
17
+ ---
18
+
19
+ ## 🌟 Features
20
+
21
+ * **100% Local & Private:** No external API calls. Your code never leaves your machine. Powered natively by Ollama.
22
+ * **Bring Your Own Model (BYOM):** During onboarding, dynamically discover and select any Ollama model installed on your system. Highly optimized for `qwen2.5-coder:3b` for ultra-fast, low-VRAM execution.
23
+ * **Hardware-in-the-Loop:** A killer feature for embedded systems. Tiesta can autonomously scan active serial ports and read hardware logs (ESP32, ROS 2, Arduino) to instantly debug your hardware and patch the corresponding Python/C++ code.
24
+ * **Unified Permission Control Plane:** An elegant `Rich`-powered UI intercepts and gates destructive terminal commands (`rm`, massive code deletions), ensuring absolute human oversight before modifying your system.
25
+ * **Polyglot Linter:** Validates syntax proactively. If Tiesta makes a syntax error in Python, JavaScript, C++, Rust, or Dart, it will instantly catch the traceback and self-correct without bothering you.
26
+ * **Dynamic Architecture Maps:** Automatically generates and updates Mermaid.js visual maps (`TIESTA_ARCHITECTURE.md`), allowing the agent to *see* your project structurally while providing human-readable documentation.
27
+ * **Zero-Dependency Semantic RAG:** Instead of relying on heavy `tree-sitter` C-bindings, Tiesta uses a highly efficient, regex-powered semantic chunking system to precisely locate symbols, classes, and variables.
28
+ * **LSP Integration:** Built on `jedi`, it understands your code context natively (go to definition, find usages) without spinning up a heavy background language server.
29
+
30
+ ---
31
+
32
+ ## 🚀 Getting Started
33
+
34
+ ### Prerequisites
35
+
36
+ 1. Install [Ollama](https://ollama.com/) and ensure the daemon is running.
37
+ 2. Pull the recommended default model (or any model of your choice):
38
+ ```bash
39
+ ollama pull qwen2.5-coder:3b
40
+ ```
41
+
42
+ ### Installation
43
+
44
+ Install Tiesta globally via PyPI:
45
+ ```bash
46
+ pip install tiesta
47
+ ```
48
+
49
+ ### Quickstart
50
+
51
+ Run Tiesta interactively in your current project directory:
52
+ ```bash
53
+ tiesta
54
+ ```
55
+ On the very first run, Tiesta's **Onboarding Wizard** will automatically launch to detect your installed Ollama models and set up your preferred environment.
56
+
57
+ You can also run one-shot tasks directly from the terminal:
58
+ ```bash
59
+ tiesta "Refactor the user authentication logic in core/auth.py"
60
+ ```
61
+
62
+ ---
63
+
64
+ ## 🧠 How it Works
65
+
66
+ Tiesta employs a sophisticated "Precision Coding Protocol" via a customized Agentic Execution Loop (The **Orchestrator**):
67
+
68
+ 1. **Context Loading:** Tiesta silently loads a lightweight Zero-Shot workspace awareness map (directory trees, git statuses, architecture graphs).
69
+ 2. **Decomposition:** It forces the underlying LLM to think step-by-step and enumerate a checklist of sub-tasks.
70
+ 3. **Execution & Self-Correction:** Tiesta executes tools natively in a sandboxed environment. If a compilation error or git conflict occurs, the Orchestrator autonomously feeds the traceback back to the LLM to self-correct up to 3 times before asking for human help.
71
+ 4. **Result Verification:** Before rendering the final response to the user, the agent cross-verifies its output against its internal checklist to guarantee completeness.
72
+
73
+ ---
74
+
75
+ ## 🔗 Links
76
+ - **Repository:** [Click here to view the repo](https://github.com/yakup-karatass/tiesta)
77
+ - **Issue Tracker:** [Report bugs/issues here](https://github.com/yakup-karatass/tiesta/issues)
78
+
79
+ ---
80
+
81
+ <div align="center">
82
+ <i>"Speed is secondary to correctness. Measure Twice, Cut Once."</i>
83
+ </div>
@@ -0,0 +1,59 @@
1
+ [build-system]
2
+ requires = ["setuptools>=68.0", "wheel"]
3
+ build-backend = "setuptools.build_meta"
4
+
5
+ [project]
6
+ name = "tiesta"
7
+ version = "0.1.0"
8
+ description = "Tiesta — Local AI Coding Assistant powered by Ollama"
9
+ readme = "README.md"
10
+ requires-python = ">=3.10"
11
+ license = {text = "MIT"}
12
+ authors = [
13
+ {name = "Yakup Karatas", email = "yakup.karatas.developer@gmail.com"},
14
+ ]
15
+ keywords = ["ai", "coding-assistant", "cli", "ollama", "local-llm"]
16
+ classifiers = [
17
+ "Development Status :: 3 - Alpha",
18
+ "Environment :: Console",
19
+ "Intended Audience :: Developers",
20
+ "License :: OSI Approved :: MIT License",
21
+ "Programming Language :: Python :: 3",
22
+ "Programming Language :: Python :: 3.10",
23
+ "Programming Language :: Python :: 3.11",
24
+ "Programming Language :: Python :: 3.12",
25
+ "Programming Language :: Python :: 3.13",
26
+ "Topic :: Software Development :: Libraries :: Python Modules",
27
+ "Topic :: Software Development :: Code Generators",
28
+ ]
29
+ dependencies = [
30
+ "openai>=1.0.0",
31
+ "rich>=13.0.0",
32
+ "chromadb>=0.4.0",
33
+ "duckduckgo-search>=6.0.0",
34
+ "jedi>=0.19.0",
35
+ "pyserial>=3.5",
36
+ ]
37
+
38
+ [project.scripts]
39
+ tiesta = "tiesta.main:cli_entry"
40
+
41
+ [project.urls]
42
+ Homepage = "https://github.com/yakup-karatass/tiesta"
43
+ Repository = "https://github.com/yakup-karatass/tiesta"
44
+ Issues = "https://github.com/yakup-karatass/tiesta/issues"
45
+
46
+ # ── Package discovery ──────────────────────────────────────────────
47
+ # We use a standard layout: tiesta/ is the top-level package.
48
+
49
+ [tool.setuptools.packages.find]
50
+ where = ["."]
51
+ include = ["tiesta*"]
52
+
53
+ # ── Optional dev dependencies ──────────────────────────────────────
54
+
55
+ [project.optional-dependencies]
56
+ dev = [
57
+ "pytest>=7.0",
58
+ "pytest-asyncio>=0.21",
59
+ ]
tiesta-0.1.0/setup.cfg ADDED
@@ -0,0 +1,4 @@
1
+ [egg_info]
2
+ tag_build =
3
+ tag_date = 0
4
+
File without changes
@@ -0,0 +1,2 @@
1
+ # Tiesta Core Package
2
+ # Multi-agent orchestration and LLM client infrastructure.
@@ -0,0 +1,55 @@
1
+ """
2
+ tiesta/core/config.py
3
+ ─────────────────────
4
+ Global configuration manager for Tiesta.
5
+
6
+ Manages user preferences stored in `~/.tiesta/config.json`.
7
+ """
8
+
9
+ import json
10
+ import logging
11
+ from dataclasses import asdict, dataclass, field
12
+ from pathlib import Path
13
+ from typing import List
14
+
15
+ logger = logging.getLogger(__name__)
16
+
17
+
18
+ @dataclass
19
+ class Config:
20
+ default_model: str = "qwen2.5-coder:3b"
21
+ enabled_skills: List[str] = field(default_factory=list)
22
+
23
+
24
+ class ConfigManager:
25
+ """Handles reading and writing the global Tiesta config."""
26
+
27
+ def __init__(self) -> None:
28
+ self.config_dir = Path.home() / ".tiesta"
29
+ self.config_path = self.config_dir / "config.json"
30
+
31
+ def exists(self) -> bool:
32
+ """Check if the global config file exists (indicates completed onboarding)."""
33
+ return self.config_path.exists()
34
+
35
+ def load(self) -> Config:
36
+ """Load the global config, returning default if not found."""
37
+ if not self.exists():
38
+ return Config()
39
+
40
+ try:
41
+ with open(self.config_path, "r", encoding="utf-8") as f:
42
+ data = json.load(f)
43
+ return Config(**data)
44
+ except Exception as exc:
45
+ logger.error("Failed to load config from %s: %s", self.config_path, exc)
46
+ return Config()
47
+
48
+ def save(self, config: Config) -> None:
49
+ """Save the config to disk."""
50
+ self.config_dir.mkdir(parents=True, exist_ok=True)
51
+ try:
52
+ with open(self.config_path, "w", encoding="utf-8") as f:
53
+ json.dump(asdict(config), f, indent=4)
54
+ except Exception as exc:
55
+ logger.error("Failed to save config to %s: %s", self.config_path, exc)