ayechat 0.0.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 (38) hide show
  1. ayechat-0.0.0/.github/dependabot.yml +11 -0
  2. ayechat-0.0.0/.github/workflows/pylint.yml +28 -0
  3. ayechat-0.0.0/.github/workflows/python-publish.yml +64 -0
  4. ayechat-0.0.0/.gitignore +222 -0
  5. ayechat-0.0.0/.pylintrc +2 -0
  6. ayechat-0.0.0/LICENSE +21 -0
  7. ayechat-0.0.0/PKG-INFO +156 -0
  8. ayechat-0.0.0/README.md +134 -0
  9. ayechat-0.0.0/publish_pypi.sh +11 -0
  10. ayechat-0.0.0/pyproject.toml +46 -0
  11. ayechat-0.0.0/requirements.txt +5 -0
  12. ayechat-0.0.0/setup.cfg +4 -0
  13. ayechat-0.0.0/src/aye/__init__.py +0 -0
  14. ayechat-0.0.0/src/aye/__main__.py +255 -0
  15. ayechat-0.0.0/src/aye/api.py +93 -0
  16. ayechat-0.0.0/src/aye/auth.py +54 -0
  17. ayechat-0.0.0/src/aye/config.py +53 -0
  18. ayechat-0.0.0/src/aye/download_plugins.py +107 -0
  19. ayechat-0.0.0/src/aye/plugin_base.py +25 -0
  20. ayechat-0.0.0/src/aye/plugin_manager.py +93 -0
  21. ayechat-0.0.0/src/aye/plugins/.gitignore +2 -0
  22. ayechat-0.0.0/src/aye/plugins/__init__.py +0 -0
  23. ayechat-0.0.0/src/aye/plugins/auto_detect_mask.py +175 -0
  24. ayechat-0.0.0/src/aye/plugins/completer.py +96 -0
  25. ayechat-0.0.0/src/aye/plugins/shell_executor.py +45 -0
  26. ayechat-0.0.0/src/aye/repl.py +232 -0
  27. ayechat-0.0.0/src/aye/service.py +380 -0
  28. ayechat-0.0.0/src/aye/snapshot.py +379 -0
  29. ayechat-0.0.0/src/aye/source_collector.py +140 -0
  30. ayechat-0.0.0/src/aye/ui.py +59 -0
  31. ayechat-0.0.0/src/ayechat.egg-info/PKG-INFO +156 -0
  32. ayechat-0.0.0/src/ayechat.egg-info/SOURCES.txt +36 -0
  33. ayechat-0.0.0/src/ayechat.egg-info/dependency_links.txt +1 -0
  34. ayechat-0.0.0/src/ayechat.egg-info/entry_points.txt +2 -0
  35. ayechat-0.0.0/src/ayechat.egg-info/requires.txt +9 -0
  36. ayechat-0.0.0/src/ayechat.egg-info/top_level.txt +1 -0
  37. ayechat-0.0.0/tests/__init__.py +0 -0
  38. ayechat-0.0.0/tests/test_cli.py +13 -0
@@ -0,0 +1,11 @@
1
+ # To get started with Dependabot version updates, you'll need to specify which
2
+ # package ecosystems to update and where the package manifests are located.
3
+ # Please see the documentation for all configuration options:
4
+ # https://docs.github.com/code-security/dependabot/dependabot-version-updates/configuration-options-for-the-dependabot.yml-file
5
+
6
+ version: 2
7
+ updates:
8
+ - package-ecosystem: "pip" # See documentation for possible values
9
+ directory: "/" # Location of package manifests
10
+ schedule:
11
+ interval: "weekly"
@@ -0,0 +1,28 @@
1
+ name: Pylint
2
+
3
+ on:
4
+ push:
5
+ branches: [ "main" ]
6
+ paths-ignore:
7
+ - 'README.md'
8
+
9
+ jobs:
10
+ build:
11
+ runs-on: ubuntu-latest
12
+ strategy:
13
+ matrix:
14
+ python-version: ["3.14"]
15
+ # python-version: ["3.8", "3.9", "3.10", "3.11", "3.12", "3.13", "3.14"]
16
+ steps:
17
+ - uses: actions/checkout@v4
18
+ - name: Set up Python ${{ matrix.python-version }}
19
+ uses: actions/setup-python@v3
20
+ with:
21
+ python-version: ${{ matrix.python-version }}
22
+ - name: Install dependencies
23
+ run: |
24
+ python -m pip install --upgrade pip
25
+ pip install pylint
26
+ - name: Analysing the code with pylint
27
+ run: |
28
+ pylint $(git ls-files '*.py')
@@ -0,0 +1,64 @@
1
+ # This workflow will upload a Python Package to PyPI when a release is created
2
+ # For more information see: https://docs.github.com/en/actions/automating-builds-and-tests/building-and-testing-python#publishing-to-package-registries
3
+
4
+ # This workflow uses actions that are not certified by GitHub.
5
+ # They are provided by a third-party and are governed by
6
+ # separate terms of service, privacy policy, and support
7
+ # documentation.
8
+
9
+ name: Upload Python Package
10
+
11
+ on:
12
+ release:
13
+ types: [published]
14
+
15
+ permissions:
16
+ contents: read
17
+
18
+ jobs:
19
+ release-build:
20
+ runs-on: ubuntu-latest
21
+
22
+ steps:
23
+ - uses: actions/checkout@v4
24
+
25
+ - uses: actions/setup-python@v5
26
+ with:
27
+ python-version: "3.x"
28
+
29
+ - name: Build release distributions
30
+ run: |
31
+ # NOTE: put your own distribution build steps here.
32
+ python -m pip install build
33
+ python -m build
34
+
35
+ - name: Upload distributions
36
+ uses: actions/upload-artifact@v4
37
+ with:
38
+ name: release-dists
39
+ path: dist/
40
+
41
+ pypi-publish:
42
+ runs-on: ubuntu-latest
43
+ needs:
44
+ - release-build
45
+ permissions:
46
+ # IMPORTANT: this permission is mandatory for trusted publishing
47
+ id-token: write
48
+
49
+ # Dedicated environments with protections for publishing are strongly recommended.
50
+ # For more information, see: https://docs.github.com/en/actions/deployment/targeting-different-environments/using-environments-for-deployment#deployment-protection-rules
51
+ environment:
52
+ name: pypi
53
+
54
+ steps:
55
+ - name: Retrieve release distributions
56
+ uses: actions/download-artifact@v4
57
+ with:
58
+ name: release-dists
59
+ path: dist/
60
+
61
+ - name: Publish release distributions to PyPI
62
+ uses: pypa/gh-action-pypi-publish@release/v1
63
+ with:
64
+ packages-dir: dist/
@@ -0,0 +1,222 @@
1
+ # Custom
2
+ *.swp
3
+ **/*bak
4
+ bak/
5
+ tmp/
6
+ .aye*
7
+
8
+ # Secrets / credentials (never commit!)
9
+ *.pem
10
+ *.key
11
+ *.env*
12
+
13
+ # Snapshot directory (created at runtime)
14
+ .aye/
15
+
16
+ # Byte-compiled / optimized / DLL files
17
+ __pycache__/
18
+ *.py[codz]
19
+ *$py.class
20
+
21
+ # C extensions
22
+ *.so
23
+
24
+ # Distribution / packaging
25
+ .Python
26
+ build/
27
+ develop-eggs/
28
+ dist/
29
+ downloads/
30
+ eggs/
31
+ .eggs/
32
+ lib/
33
+ lib64/
34
+ parts/
35
+ sdist/
36
+ var/
37
+ wheels/
38
+ share/python-wheels/
39
+ *.egg-info/
40
+ .installed.cfg
41
+ *.egg
42
+ MANIFEST
43
+
44
+ # PyInstaller
45
+ # Usually these files are written by a python script from a template
46
+ # before PyInstaller builds the exe, so as to inject date/other infos into it.
47
+ *.manifest
48
+ *.spec
49
+
50
+ # Installer logs
51
+ pip-log.txt
52
+ pip-delete-this-directory.txt
53
+
54
+ # Unit test / coverage reports
55
+ htmlcov/
56
+ .tox/
57
+ .nox/
58
+ .coverage
59
+ .coverage.*
60
+ .cache
61
+ nosetests.xml
62
+ coverage.xml
63
+ *.cover
64
+ *.py.cover
65
+ .hypothesis/
66
+ .pytest_cache/
67
+ cover/
68
+
69
+ # Translations
70
+ *.mo
71
+ *.pot
72
+
73
+ # Django stuff:
74
+ *.log
75
+ local_settings.py
76
+ db.sqlite3
77
+ db.sqlite3-journal
78
+
79
+ # Flask stuff:
80
+ instance/
81
+ .webassets-cache
82
+
83
+ # Scrapy stuff:
84
+ .scrapy
85
+
86
+ # Sphinx documentation
87
+ docs/_build/
88
+
89
+ # PyBuilder
90
+ .pybuilder/
91
+ target/
92
+
93
+ # Jupyter Notebook
94
+ .ipynb_checkpoints
95
+
96
+ # IPython
97
+ profile_default/
98
+ ipython_config.py
99
+
100
+ # pyenv
101
+ # For a library or package, you might want to ignore these files since the code is
102
+ # intended to run in multiple environments; otherwise, check them in:
103
+ # .python-version
104
+
105
+ # pipenv
106
+ # According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control.
107
+ # However, in case of collaboration, if having platform-specific dependencies or dependencies
108
+ # having no cross-platform support, pipenv may install dependencies that don't work, or not
109
+ # install all needed dependencies.
110
+ #Pipfile.lock
111
+
112
+ # UV
113
+ # Similar to Pipfile.lock, it is generally recommended to include uv.lock in version control.
114
+ # This is especially recommended for binary packages to ensure reproducibility, and is more
115
+ # commonly ignored for libraries.
116
+ #uv.lock
117
+
118
+ # poetry
119
+ # Similar to Pipfile.lock, it is generally recommended to include poetry.lock in version control.
120
+ # This is especially recommended for binary packages to ensure reproducibility, and is more
121
+ # commonly ignored for libraries.
122
+ # https://python-poetry.org/docs/basic-usage/#commit-your-poetrylock-file-to-version-control
123
+ #poetry.lock
124
+ #poetry.toml
125
+
126
+ # pdm
127
+ # Similar to Pipfile.lock, it is generally recommended to include pdm.lock in version control.
128
+ # pdm recommends including project-wide configuration in pdm.toml, but excluding .pdm-python.
129
+ # https://pdm-project.org/en/latest/usage/project/#working-with-version-control
130
+ #pdm.lock
131
+ #pdm.toml
132
+ .pdm-python
133
+ .pdm-build/
134
+
135
+ # pixi
136
+ # Similar to Pipfile.lock, it is generally recommended to include pixi.lock in version control.
137
+ #pixi.lock
138
+ # Pixi creates a virtual environment in the .pixi directory, just like venv module creates one
139
+ # in the .venv directory. It is recommended not to include this directory in version control.
140
+ .pixi
141
+
142
+ # PEP 582; used by e.g. github.com/David-OConnor/pyflow and github.com/pdm-project/pdm
143
+ __pypackages__/
144
+
145
+ # Celery stuff
146
+ celerybeat-schedule
147
+ celerybeat.pid
148
+
149
+ # SageMath parsed files
150
+ *.sage.py
151
+
152
+ # Environments
153
+ .env
154
+ .envrc
155
+ .venv
156
+ env/
157
+ venv/
158
+ ENV/
159
+ env.bak/
160
+ venv.bak/
161
+
162
+ # Spyder project settings
163
+ .spyderproject
164
+ .spyproject
165
+
166
+ # Rope project settings
167
+ .ropeproject
168
+
169
+ # mkdocs documentation
170
+ /site
171
+
172
+ # mypy
173
+ .mypy_cache/
174
+ .dmypy.json
175
+ dmypy.json
176
+
177
+ # Pyre type checker
178
+ .pyre/
179
+
180
+ # pytype static type analyzer
181
+ .pytype/
182
+
183
+ # Cython debug symbols
184
+ cython_debug/
185
+
186
+ # PyCharm
187
+ # JetBrains specific template is maintained in a separate JetBrains.gitignore that can
188
+ # be found at https://github.com/github/gitignore/blob/main/Global/JetBrains.gitignore
189
+ # and can be added to the global gitignore or merged into this file. For a more nuclear
190
+ # option (not recommended) you can uncomment the following to ignore the entire idea folder.
191
+ .idea/
192
+
193
+ # Abstra
194
+ # Abstra is an AI-powered process automation framework.
195
+ # Ignore directories containing user credentials, local state, and settings.
196
+ # Learn more at https://abstra.io/docs
197
+ .abstra/
198
+
199
+ # Visual Studio Code
200
+ # Visual Studio Code specific template is maintained in a separate VisualStudioCode.gitignore
201
+ # that can be found at https://github.com/github/gitignore/blob/main/Global/VisualStudioCode.gitignore
202
+ # and can be added to the global gitignore or merged into this file. However, if you prefer,
203
+ # you could uncomment the following to ignore the entire vscode folder
204
+ .vscode/
205
+
206
+ # Ruff stuff:
207
+ .ruff_cache/
208
+
209
+ # PyPI configuration file
210
+ .pypirc
211
+
212
+ # Cursor
213
+ # Cursor is an AI-powered code editor. `.cursorignore` specifies files/directories to
214
+ # exclude from AI features like autocomplete and code analysis. Recommended for sensitive data
215
+ # refer to https://docs.cursor.com/context/ignore-files
216
+ .cursorignore
217
+ .cursorindexingignore
218
+
219
+ # Marimo
220
+ marimo/_static/
221
+ marimo/_lsp/
222
+ __marimo__/
@@ -0,0 +1,2 @@
1
+ [MASTER]
2
+ fail-under=5.0
ayechat-0.0.0/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2025 Acrotron
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
ayechat-0.0.0/PKG-INFO ADDED
@@ -0,0 +1,156 @@
1
+ Metadata-Version: 2.4
2
+ Name: ayechat
3
+ Version: 0.0.0
4
+ Summary: Aye Chat: Terminal-first AI Code Generator
5
+ Author-email: "Acrotron, Inc." <info@acrotron.com>
6
+ License: MIT
7
+ Project-URL: Homepage, https://ayechat.ai
8
+ Project-URL: Repository, https://github.com/acrotron/aye-chat
9
+ Project-URL: Issues, https://github.com/acrotron/aye-chat/issues
10
+ Requires-Python: >=3.8
11
+ Description-Content-Type: text/markdown
12
+ License-File: LICENSE
13
+ Requires-Dist: typer[all]>=0.9.0
14
+ Requires-Dist: httpx>=0.27.0
15
+ Requires-Dist: keyring>=24.0.0
16
+ Requires-Dist: prompt-toolkit>=3.0.0
17
+ Requires-Dist: pathspec>=0.12.1
18
+ Provides-Extra: dev
19
+ Requires-Dist: pytest>=7.0; extra == "dev"
20
+ Requires-Dist: ruff>=0.6; extra == "dev"
21
+ Dynamic: license-file
22
+
23
+ [![Pylint](https://github.com/acrotron/aye-chat/actions/workflows/pylint.yml/badge.svg)](https://github.com/acrotron/aye-chat/actions/workflows/pylint.yml)
24
+ [![CodeQL](https://github.com/acrotron/aye-chat/actions/workflows/github-code-scanning/codeql/badge.svg)](https://github.com/acrotron/aye-chat/actions/workflows/github-code-scanning/codeql)
25
+ [![Dependabot Updates](https://github.com/acrotron/aye-chat/actions/workflows/dependabot/dependabot-updates/badge.svg)](https://github.com/acrotron/aye-chat/actions/workflows/dependabot/dependabot-updates)
26
+
27
+ # Aye Chat - AI-Powered Terminal Code Generator
28
+
29
+ Aye Chat is a terminal-first AI coding assistant that helps you generate, modify, and manage code through natural language prompts. It provides both one-shot generation and interactive chat capabilities with built-in snapshot management for safe code modifications.
30
+
31
+ ## Key Features
32
+
33
+ ### Terminal-First Design
34
+ Unlike GUI-based tools, Aye Chat is built for developers who live in their terminals. All interactions happen through command-line interface with intuitive commands.
35
+
36
+ ### Intelligent File Detection
37
+ - Automatically detects relevant source file types in your project
38
+ - Respects `.gitignore` and `.ayeignore` patterns to exclude irrelevant files
39
+ - Supports multiple comma-separated file masks (e.g., `"*.py,*.js"`)
40
+ - Skips binary and hidden files for efficient processing
41
+
42
+ ### Safe Code Modification with Snapshots
43
+ - Creates timestamped snapshots of your files before any AI-generated changes
44
+ - "Latest" snapshot tracking for quick restores
45
+ - Interactive diff viewing to compare changes
46
+ - History management with pruning capabilities
47
+
48
+ ### Interactive Chat Experience
49
+ - REPL-based chat interface with command completion
50
+ - Supports both AI prompts and shell commands in the same session
51
+ - Persistent chat sessions that remember context
52
+ - Built-in command help system
53
+
54
+ ### Plugin Architecture
55
+ - Extensible plugin system for additional functionality
56
+ - Automatic plugin downloading based on user's license tier
57
+ - Modular design allowing easy addition of new features
58
+
59
+ ### Configuration Management
60
+ - Persistent configuration storage
61
+ - Support for multiple settings including file masks
62
+
63
+ ## Quick Start
64
+
65
+ 1. **Install the tool**:
66
+ ```bash
67
+ pip install ayechat
68
+ ```
69
+
70
+ 2. **Authenticate**:
71
+ ```bash
72
+ aye auth login
73
+ ```
74
+ Visit https://ayechat.ai to obtain your personal access token.
75
+
76
+ 3. **Start Interactive Chat**:
77
+ ```bash
78
+ aye chat
79
+ ```
80
+ (Auto-detect to be implemented soon. Currently, using '*.py' mask by default.) This will automatically detect your project's file types and include relevant source files.
81
+
82
+ 4. **One-Shot Generation**:
83
+ ```bash
84
+ aye generate "Create a function that reverses a string"
85
+ ```
86
+
87
+ ## Usage Examples
88
+ ### Authentication
89
+ ```bash
90
+ aye auth login # Configure your token
91
+ aye auth logout # Remove stored credentials
92
+ ```
93
+
94
+ ### Interactive Chat
95
+ ```bash
96
+ aye chat # Start chat with auto-detected files
97
+ aye chat --root ./src # Specify project root directory
98
+ aye chat --file-mask "*.js" # Work with JavaScript files
99
+ aye chat --file-mask "*.py,*.js" # Work with multiple file types
100
+ ```
101
+
102
+ In chat mode, you can use these built-in commands:
103
+ - `help` - Show available commands
104
+ - `exit`/`quit` - End chat session
105
+ - `new` - Start a new chat
106
+ - `history` - Show snapshot history
107
+ - `restore` - Restore files from snapshot
108
+ - `diff [file] [snapshot]` - Show differences in files
109
+ - `keep [N]` - Keep only N most recent snapshots
110
+
111
+ Any other command is treated as a shell command or AI prompt depending on context. Note that for the shell commands, you do not need to add '/' or any other special indicators: just type your command (e.g., "ls -la"). Some shell commands cannot be executed and will return an error or fail silently: these include those that alter terminal view (e.g., text editors) or attempt to switch shell context (e.g., "sudo su - ").
112
+
113
+ Except for Aye Chat own commands, which are matched and executed first, for each prompt, the tool attempts to find a shell command for the first token, and if successfull - execute it, if not - the prompt is treated as a message to AI.
114
+
115
+ ### Snapshot Management
116
+ ```bash
117
+ aye snap history # List all snapshots
118
+ aye snap history src/main.py # List snapshots for specific file
119
+ aye snap restore # Restore latest snapshot
120
+ aye snap restore 001 # Restore specific snapshot
121
+ aye snap restore 001 file.py # Restore specific file from snapshot
122
+ aye snap keep -n 5 # Keep only 5 most recent snapshots
123
+ aye snap cleanup -d 7 # Delete snapshots older than 7 days
124
+ ```
125
+
126
+ ### Configuration
127
+ ```bash
128
+ aye config list # Show all settings
129
+ aye config get file_mask # Get current file mask
130
+ aye config set file_mask "*.py" # Set file mask
131
+ aye config delete file_mask # Remove file mask setting
132
+ ```
133
+
134
+ ### Running using Visual Code
135
+
136
+ Example of launch.json you can use. Store this file under .vscode/
137
+
138
+ Note that Python 3.14.0, Visual Code and debugpy currently don't work. So we are using Python 3.13.x
139
+
140
+ ```json
141
+ {
142
+ "version": "0.2.0",
143
+ "configurations": [
144
+ {
145
+ "name": "Python: Module",
146
+ "type": "debugpy", // currently python 3.14.0 and visual code don't work well together. You have to use python 3.13.x.
147
+ "request": "launch",
148
+ "module": "aye",
149
+ "console": "integratedTerminal",
150
+ "cwd": "${workspaceFolder}/src/",
151
+ "justMyCode": true,
152
+ "args": [ "--help" ], // adjust/extend for the argument(s) you want to use.
153
+ }
154
+ ]
155
+ }
156
+ ```
@@ -0,0 +1,134 @@
1
+ [![Pylint](https://github.com/acrotron/aye-chat/actions/workflows/pylint.yml/badge.svg)](https://github.com/acrotron/aye-chat/actions/workflows/pylint.yml)
2
+ [![CodeQL](https://github.com/acrotron/aye-chat/actions/workflows/github-code-scanning/codeql/badge.svg)](https://github.com/acrotron/aye-chat/actions/workflows/github-code-scanning/codeql)
3
+ [![Dependabot Updates](https://github.com/acrotron/aye-chat/actions/workflows/dependabot/dependabot-updates/badge.svg)](https://github.com/acrotron/aye-chat/actions/workflows/dependabot/dependabot-updates)
4
+
5
+ # Aye Chat - AI-Powered Terminal Code Generator
6
+
7
+ Aye Chat is a terminal-first AI coding assistant that helps you generate, modify, and manage code through natural language prompts. It provides both one-shot generation and interactive chat capabilities with built-in snapshot management for safe code modifications.
8
+
9
+ ## Key Features
10
+
11
+ ### Terminal-First Design
12
+ Unlike GUI-based tools, Aye Chat is built for developers who live in their terminals. All interactions happen through command-line interface with intuitive commands.
13
+
14
+ ### Intelligent File Detection
15
+ - Automatically detects relevant source file types in your project
16
+ - Respects `.gitignore` and `.ayeignore` patterns to exclude irrelevant files
17
+ - Supports multiple comma-separated file masks (e.g., `"*.py,*.js"`)
18
+ - Skips binary and hidden files for efficient processing
19
+
20
+ ### Safe Code Modification with Snapshots
21
+ - Creates timestamped snapshots of your files before any AI-generated changes
22
+ - "Latest" snapshot tracking for quick restores
23
+ - Interactive diff viewing to compare changes
24
+ - History management with pruning capabilities
25
+
26
+ ### Interactive Chat Experience
27
+ - REPL-based chat interface with command completion
28
+ - Supports both AI prompts and shell commands in the same session
29
+ - Persistent chat sessions that remember context
30
+ - Built-in command help system
31
+
32
+ ### Plugin Architecture
33
+ - Extensible plugin system for additional functionality
34
+ - Automatic plugin downloading based on user's license tier
35
+ - Modular design allowing easy addition of new features
36
+
37
+ ### Configuration Management
38
+ - Persistent configuration storage
39
+ - Support for multiple settings including file masks
40
+
41
+ ## Quick Start
42
+
43
+ 1. **Install the tool**:
44
+ ```bash
45
+ pip install ayechat
46
+ ```
47
+
48
+ 2. **Authenticate**:
49
+ ```bash
50
+ aye auth login
51
+ ```
52
+ Visit https://ayechat.ai to obtain your personal access token.
53
+
54
+ 3. **Start Interactive Chat**:
55
+ ```bash
56
+ aye chat
57
+ ```
58
+ (Auto-detect to be implemented soon. Currently, using '*.py' mask by default.) This will automatically detect your project's file types and include relevant source files.
59
+
60
+ 4. **One-Shot Generation**:
61
+ ```bash
62
+ aye generate "Create a function that reverses a string"
63
+ ```
64
+
65
+ ## Usage Examples
66
+ ### Authentication
67
+ ```bash
68
+ aye auth login # Configure your token
69
+ aye auth logout # Remove stored credentials
70
+ ```
71
+
72
+ ### Interactive Chat
73
+ ```bash
74
+ aye chat # Start chat with auto-detected files
75
+ aye chat --root ./src # Specify project root directory
76
+ aye chat --file-mask "*.js" # Work with JavaScript files
77
+ aye chat --file-mask "*.py,*.js" # Work with multiple file types
78
+ ```
79
+
80
+ In chat mode, you can use these built-in commands:
81
+ - `help` - Show available commands
82
+ - `exit`/`quit` - End chat session
83
+ - `new` - Start a new chat
84
+ - `history` - Show snapshot history
85
+ - `restore` - Restore files from snapshot
86
+ - `diff [file] [snapshot]` - Show differences in files
87
+ - `keep [N]` - Keep only N most recent snapshots
88
+
89
+ Any other command is treated as a shell command or AI prompt depending on context. Note that for the shell commands, you do not need to add '/' or any other special indicators: just type your command (e.g., "ls -la"). Some shell commands cannot be executed and will return an error or fail silently: these include those that alter terminal view (e.g., text editors) or attempt to switch shell context (e.g., "sudo su - ").
90
+
91
+ Except for Aye Chat own commands, which are matched and executed first, for each prompt, the tool attempts to find a shell command for the first token, and if successfull - execute it, if not - the prompt is treated as a message to AI.
92
+
93
+ ### Snapshot Management
94
+ ```bash
95
+ aye snap history # List all snapshots
96
+ aye snap history src/main.py # List snapshots for specific file
97
+ aye snap restore # Restore latest snapshot
98
+ aye snap restore 001 # Restore specific snapshot
99
+ aye snap restore 001 file.py # Restore specific file from snapshot
100
+ aye snap keep -n 5 # Keep only 5 most recent snapshots
101
+ aye snap cleanup -d 7 # Delete snapshots older than 7 days
102
+ ```
103
+
104
+ ### Configuration
105
+ ```bash
106
+ aye config list # Show all settings
107
+ aye config get file_mask # Get current file mask
108
+ aye config set file_mask "*.py" # Set file mask
109
+ aye config delete file_mask # Remove file mask setting
110
+ ```
111
+
112
+ ### Running using Visual Code
113
+
114
+ Example of launch.json you can use. Store this file under .vscode/
115
+
116
+ Note that Python 3.14.0, Visual Code and debugpy currently don't work. So we are using Python 3.13.x
117
+
118
+ ```json
119
+ {
120
+ "version": "0.2.0",
121
+ "configurations": [
122
+ {
123
+ "name": "Python: Module",
124
+ "type": "debugpy", // currently python 3.14.0 and visual code don't work well together. You have to use python 3.13.x.
125
+ "request": "launch",
126
+ "module": "aye",
127
+ "console": "integratedTerminal",
128
+ "cwd": "${workspaceFolder}/src/",
129
+ "justMyCode": true,
130
+ "args": [ "--help" ], // adjust/extend for the argument(s) you want to use.
131
+ }
132
+ ]
133
+ }
134
+ ```
@@ -0,0 +1,11 @@
1
+ #!/bin/bash
2
+
3
+ # clean up
4
+ rm dist/*
5
+
6
+ # build distribution
7
+ python3 -m build
8
+
9
+ # push to pypi
10
+ python3 -m twine upload dist/*
11
+