agy-pilot 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.
- agy_pilot-0.1.0/.env.example +20 -0
- agy_pilot-0.1.0/.github/ISSUE_TEMPLATE/bug_report.yml +44 -0
- agy_pilot-0.1.0/.github/ISSUE_TEMPLATE/feature_request.yml +28 -0
- agy_pilot-0.1.0/.github/pull_request_template.md +19 -0
- agy_pilot-0.1.0/.github/workflows/ci.yml +50 -0
- agy_pilot-0.1.0/.github/workflows/release.yml +39 -0
- agy_pilot-0.1.0/.gitignore +14 -0
- agy_pilot-0.1.0/CODE_OF_CONDUCT.md +60 -0
- agy_pilot-0.1.0/CONTRIBUTING.md +95 -0
- agy_pilot-0.1.0/GLOSSARY.md +37 -0
- agy_pilot-0.1.0/LICENSE +21 -0
- agy_pilot-0.1.0/Makefile +66 -0
- agy_pilot-0.1.0/PKG-INFO +299 -0
- agy_pilot-0.1.0/README.md +272 -0
- agy_pilot-0.1.0/SECURITY.md +25 -0
- agy_pilot-0.1.0/pyproject.toml +71 -0
- agy_pilot-0.1.0/src/agy_pilot/__init__.py +3 -0
- agy_pilot-0.1.0/src/agy_pilot/adapters/__init__.py +6 -0
- agy_pilot-0.1.0/src/agy_pilot/adapters/base.py +33 -0
- agy_pilot-0.1.0/src/agy_pilot/adapters/registry.py +45 -0
- agy_pilot-0.1.0/src/agy_pilot/adapters/telegram/__init__.py +30 -0
- agy_pilot-0.1.0/src/agy_pilot/adapters/telegram/adapter.py +934 -0
- agy_pilot-0.1.0/src/agy_pilot/adapters/telegram/heartbeat.py +87 -0
- agy_pilot-0.1.0/src/agy_pilot/adapters/telegram/keyboards.py +300 -0
- agy_pilot-0.1.0/src/agy_pilot/adapters/telegram/middleware.py +48 -0
- agy_pilot-0.1.0/src/agy_pilot/bot.py +38 -0
- agy_pilot-0.1.0/src/agy_pilot/cli.py +339 -0
- agy_pilot-0.1.0/src/agy_pilot/config.py +118 -0
- agy_pilot-0.1.0/src/agy_pilot/controller.py +585 -0
- agy_pilot-0.1.0/src/agy_pilot/discovery.py +152 -0
- agy_pilot-0.1.0/src/agy_pilot/heartbeat.py +85 -0
- agy_pilot-0.1.0/src/agy_pilot/service.py +310 -0
- agy_pilot-0.1.0/src/agy_pilot/skills.py +216 -0
- agy_pilot-0.1.0/src/agy_pilot/storage.py +115 -0
- agy_pilot-0.1.0/src/agy_pilot/transcript.py +434 -0
- agy_pilot-0.1.0/tests/test_adapters.py +46 -0
- agy_pilot-0.1.0/tests/test_bot_handlers.py +429 -0
- agy_pilot-0.1.0/tests/test_bot_utils.py +190 -0
- agy_pilot-0.1.0/tests/test_cli.py +124 -0
- agy_pilot-0.1.0/tests/test_config.py +95 -0
- agy_pilot-0.1.0/tests/test_controller.py +229 -0
- agy_pilot-0.1.0/tests/test_controller_prompt.py +10 -0
- agy_pilot-0.1.0/tests/test_discovery.py +95 -0
- agy_pilot-0.1.0/tests/test_heartbeat.py +55 -0
- agy_pilot-0.1.0/tests/test_interaction.py +282 -0
- agy_pilot-0.1.0/tests/test_service.py +63 -0
- agy_pilot-0.1.0/tests/test_skills.py +167 -0
- agy_pilot-0.1.0/tests/test_storage.py +45 -0
- agy_pilot-0.1.0/tests/test_transcript.py +252 -0
- agy_pilot-0.1.0/uv.lock +1040 -0
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
# ==============================================================================
|
|
2
|
+
# Antigravity Pilot (agy-pilot) Configuration Template
|
|
3
|
+
# Copy this file to .env or ~/.config/agy-pilot/config.env
|
|
4
|
+
# ==============================================================================
|
|
5
|
+
|
|
6
|
+
# IM Adapter to activate (default: telegram)
|
|
7
|
+
AGY_ADAPTER=telegram
|
|
8
|
+
|
|
9
|
+
# Telegram Bot API Token obtained from @BotFather
|
|
10
|
+
# Example: 123456789:ABCdef-ghijklm_nopqrstuvwxyz
|
|
11
|
+
TELEGRAM_BOT_TOKEN=your_telegram_bot_token_here
|
|
12
|
+
|
|
13
|
+
# Whitelist of Telegram User IDs allowed to access Antigravity Pilot.
|
|
14
|
+
# Get your numeric User ID by messaging @userinfobot on Telegram.
|
|
15
|
+
# Supports a single ID or comma-separated list of multiple IDs.
|
|
16
|
+
# Example: 12345678,87654321
|
|
17
|
+
TELEGRAM_ALLOWED_USER_IDS=12345678
|
|
18
|
+
|
|
19
|
+
# Logging verbosity level (DEBUG, INFO, WARNING, ERROR)
|
|
20
|
+
LOG_LEVEL=INFO
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
name: ๐ Bug Report
|
|
2
|
+
description: Create a report to help us fix an unexpected error or issue
|
|
3
|
+
labels: ["bug"]
|
|
4
|
+
body:
|
|
5
|
+
- type: markdown
|
|
6
|
+
attributes:
|
|
7
|
+
value: |
|
|
8
|
+
Thanks for taking the time to report this bug!
|
|
9
|
+
- type: textarea
|
|
10
|
+
id: what-happened
|
|
11
|
+
attributes:
|
|
12
|
+
label: What happened?
|
|
13
|
+
description: Describe what bug or unexpected behavior occurred.
|
|
14
|
+
placeholder: Tell us what you see...
|
|
15
|
+
validations:
|
|
16
|
+
required: true
|
|
17
|
+
- type: textarea
|
|
18
|
+
id: reproduce
|
|
19
|
+
attributes:
|
|
20
|
+
label: Steps to Reproduce
|
|
21
|
+
description: How can we reproduce this issue?
|
|
22
|
+
placeholder: |
|
|
23
|
+
1. Run '...'
|
|
24
|
+
2. Send message '...'
|
|
25
|
+
3. See error '...'
|
|
26
|
+
validations:
|
|
27
|
+
required: true
|
|
28
|
+
- type: textarea
|
|
29
|
+
id: environment
|
|
30
|
+
attributes:
|
|
31
|
+
label: Environment Info
|
|
32
|
+
description: Operating System, Python version, Antigravity version, etc.
|
|
33
|
+
placeholder: |
|
|
34
|
+
- OS: macOS 15.0 / Ubuntu 24.04
|
|
35
|
+
- Python: 3.12.x
|
|
36
|
+
- Adapter: Telegram
|
|
37
|
+
validations:
|
|
38
|
+
required: true
|
|
39
|
+
- type: textarea
|
|
40
|
+
id: logs
|
|
41
|
+
attributes:
|
|
42
|
+
label: Relevant Log Output
|
|
43
|
+
description: Please copy and paste any relevant logs from `agy-pilot service logs` or terminal.
|
|
44
|
+
render: shell
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
name: ๐ก Feature Request
|
|
2
|
+
description: Suggest an idea or enhancement for Antigravity Pilot
|
|
3
|
+
labels: ["enhancement"]
|
|
4
|
+
body:
|
|
5
|
+
- type: markdown
|
|
6
|
+
attributes:
|
|
7
|
+
value: |
|
|
8
|
+
Thank you for suggesting a new feature or improvement!
|
|
9
|
+
- type: textarea
|
|
10
|
+
id: problem
|
|
11
|
+
attributes:
|
|
12
|
+
label: Problem or Pain Point
|
|
13
|
+
description: Is your feature request related to a problem or limitation?
|
|
14
|
+
placeholder: I am always frustrated when...
|
|
15
|
+
validations:
|
|
16
|
+
required: true
|
|
17
|
+
- type: textarea
|
|
18
|
+
id: solution
|
|
19
|
+
attributes:
|
|
20
|
+
label: Proposed Solution / Ideal Experience
|
|
21
|
+
description: Describe what you would like to happen or how the feature should behave.
|
|
22
|
+
validations:
|
|
23
|
+
required: true
|
|
24
|
+
- type: textarea
|
|
25
|
+
id: alternatives
|
|
26
|
+
attributes:
|
|
27
|
+
label: Alternatives Considered
|
|
28
|
+
description: Have you considered any alternative solutions or workarounds?
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
## Summary
|
|
2
|
+
|
|
3
|
+
<!-- Briefly explain the goal of this pull request and the changes made. -->
|
|
4
|
+
|
|
5
|
+
## Motivation / Context
|
|
6
|
+
|
|
7
|
+
<!-- Why is this change required? What issue does it fix? Link issue using #123. -->
|
|
8
|
+
|
|
9
|
+
## Changes Checklist
|
|
10
|
+
|
|
11
|
+
- [ ] Code follows project standards and clean code guidelines
|
|
12
|
+
- [ ] Added or updated unit tests for the changes
|
|
13
|
+
- [ ] All tests pass locally (`make test` / `make test-cov`)
|
|
14
|
+
- [ ] No secrets, API tokens, or personal paths committed
|
|
15
|
+
- [ ] Documentation updated if relevant (README, GLOSSARY, or docs)
|
|
16
|
+
|
|
17
|
+
## How Has This Been Tested?
|
|
18
|
+
|
|
19
|
+
<!-- Describe tests you ran to verify your changes. -->
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
name: CI
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
branches: [main]
|
|
6
|
+
pull_request:
|
|
7
|
+
branches: [main]
|
|
8
|
+
|
|
9
|
+
jobs:
|
|
10
|
+
test:
|
|
11
|
+
name: Test (Python ${{ matrix.python-version }} on ${{ matrix.os }})
|
|
12
|
+
runs-on: ${{ matrix.os }}
|
|
13
|
+
strategy:
|
|
14
|
+
fail-fast: false
|
|
15
|
+
matrix:
|
|
16
|
+
os: [ubuntu-latest, macos-latest]
|
|
17
|
+
python-version: ["3.12"]
|
|
18
|
+
|
|
19
|
+
steps:
|
|
20
|
+
- name: Checkout repository
|
|
21
|
+
uses: actions/checkout@v4
|
|
22
|
+
|
|
23
|
+
- name: Install uv
|
|
24
|
+
uses: astral-sh/setup-uv@v5
|
|
25
|
+
with:
|
|
26
|
+
enable-cache: true
|
|
27
|
+
|
|
28
|
+
- name: Set up Python ${{ matrix.python-version }}
|
|
29
|
+
run: uv python install ${{ matrix.python-version }}
|
|
30
|
+
|
|
31
|
+
- name: Install dependencies
|
|
32
|
+
run: uv sync --all-groups
|
|
33
|
+
|
|
34
|
+
- name: Run test suite with coverage
|
|
35
|
+
run: uv run pytest --cov=agy_pilot --cov-report=term-missing
|
|
36
|
+
|
|
37
|
+
lint:
|
|
38
|
+
name: Lint & Format Check
|
|
39
|
+
runs-on: ubuntu-latest
|
|
40
|
+
steps:
|
|
41
|
+
- name: Checkout repository
|
|
42
|
+
uses: actions/checkout@v4
|
|
43
|
+
|
|
44
|
+
- name: Install uv
|
|
45
|
+
uses: astral-sh/setup-uv@v5
|
|
46
|
+
|
|
47
|
+
- name: Install ruff and run lint
|
|
48
|
+
run: |
|
|
49
|
+
uv tool run ruff check .
|
|
50
|
+
uv tool run ruff format --check .
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
name: Release
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
tags:
|
|
6
|
+
- "v*.*.*"
|
|
7
|
+
|
|
8
|
+
jobs:
|
|
9
|
+
build-and-publish:
|
|
10
|
+
name: Build package and publish to PyPI
|
|
11
|
+
runs-on: ubuntu-latest
|
|
12
|
+
permissions:
|
|
13
|
+
contents: write
|
|
14
|
+
id-token: write
|
|
15
|
+
|
|
16
|
+
steps:
|
|
17
|
+
- name: Checkout repository
|
|
18
|
+
uses: actions/checkout@v4
|
|
19
|
+
|
|
20
|
+
- name: Install uv
|
|
21
|
+
uses: astral-sh/setup-uv@v5
|
|
22
|
+
|
|
23
|
+
- name: Set up Python
|
|
24
|
+
run: uv python install 3.12
|
|
25
|
+
|
|
26
|
+
- name: Build distributions
|
|
27
|
+
run: uv build
|
|
28
|
+
|
|
29
|
+
- name: Create GitHub Release
|
|
30
|
+
uses: softprops/action-gh-release@v2
|
|
31
|
+
with:
|
|
32
|
+
files: dist/*
|
|
33
|
+
generate_release_notes: true
|
|
34
|
+
|
|
35
|
+
- name: Publish to PyPI
|
|
36
|
+
uses: pypa/gh-action-pypi-publish@release/v1
|
|
37
|
+
with:
|
|
38
|
+
password: ${{ secrets.PYPI_API_TOKEN }}
|
|
39
|
+
continue-on-error: true
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
# Contributor Covenant Code of Conduct
|
|
2
|
+
|
|
3
|
+
## Our Pledge
|
|
4
|
+
|
|
5
|
+
We as members, contributors, and leaders pledge to make participation in our
|
|
6
|
+
community a harassment-free experience for everyone, regardless of age, body
|
|
7
|
+
size, visible or invisible disability, ethnicity, sex characteristics, gender
|
|
8
|
+
identity and expression, level of experience, education, socio-economic status,
|
|
9
|
+
nationality, personal appearance, race, caste, color, religion, or sexual
|
|
10
|
+
identity and orientation.
|
|
11
|
+
|
|
12
|
+
We pledge to act and interact in ways that contribute to an open, welcoming,
|
|
13
|
+
diverse, inclusive, and healthy community.
|
|
14
|
+
|
|
15
|
+
## Our Standards
|
|
16
|
+
|
|
17
|
+
Examples of behavior that contributes to a positive environment for our
|
|
18
|
+
community include:
|
|
19
|
+
|
|
20
|
+
* Demonstrating empathy and kindness toward other people
|
|
21
|
+
* Being respectful of differing opinions, viewpoints, and experiences
|
|
22
|
+
* Giving and gracefully accepting constructive feedback
|
|
23
|
+
* Accepting responsibility and apologizing to those affected by our mistakes,
|
|
24
|
+
and learning from the experience
|
|
25
|
+
* Focusing on what is best not just for us as individuals, but for the
|
|
26
|
+
overall community
|
|
27
|
+
|
|
28
|
+
Examples of unacceptable behavior include:
|
|
29
|
+
|
|
30
|
+
* The use of sexualized language or imagery, and sexual attention or advances of
|
|
31
|
+
any kind
|
|
32
|
+
* Trolling, insulting or derogatory comments, and personal or political attacks
|
|
33
|
+
* Public or private harassment
|
|
34
|
+
* Publishing others' private information, such as a physical or email
|
|
35
|
+
address, without their explicit permission
|
|
36
|
+
* Other conduct which could reasonably be considered inappropriate in a
|
|
37
|
+
professional setting
|
|
38
|
+
|
|
39
|
+
## Enforcement Responsibilities
|
|
40
|
+
|
|
41
|
+
Community leaders are responsible for clarifying and enforcing our standards of
|
|
42
|
+
acceptable behavior and will take appropriate and fair corrective action in
|
|
43
|
+
response to any behavior that they deem inappropriate, threatening, offensive,
|
|
44
|
+
or harmful.
|
|
45
|
+
|
|
46
|
+
## Scope
|
|
47
|
+
|
|
48
|
+
This Code of Conduct applies within all community spaces, and also applies when
|
|
49
|
+
an individual is officially representing the community in public spaces.
|
|
50
|
+
|
|
51
|
+
## Contact
|
|
52
|
+
|
|
53
|
+
Instances of abusive, harassing, or otherwise unacceptable behavior may be
|
|
54
|
+
reported to the project maintainer at `doni.leong@gmail.com`. All complaints will
|
|
55
|
+
be reviewed and investigated promptly and fairly.
|
|
56
|
+
|
|
57
|
+
## Attribution
|
|
58
|
+
|
|
59
|
+
This Code of Conduct is adapted from the [Contributor Covenant](https://www.contributor-covenant.org),
|
|
60
|
+
version 2.1.
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
# Contributing to Antigravity Pilot
|
|
2
|
+
|
|
3
|
+
Thank you for your interest in contributing to **Antigravity Pilot (`agy-pilot`)**! We welcome bug reports, feature requests, adapter extensions, and pull requests.
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## Code of Conduct
|
|
8
|
+
|
|
9
|
+
By participating in this project, you agree to abide by the [Code of Conduct](CODE_OF_CONDUCT.md).
|
|
10
|
+
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
## Development Setup
|
|
14
|
+
|
|
15
|
+
We use [uv](https://github.com/astral-sh/uv) as the single, fast Python package and environment manager.
|
|
16
|
+
|
|
17
|
+
### Prerequisites
|
|
18
|
+
* Python 3.12+
|
|
19
|
+
* [uv](https://github.com/astral-sh/uv) (`curl -LsSf https://astral.sh/uv/install.sh | sh` or `brew install uv`)
|
|
20
|
+
* Google Antigravity 2 installed locally
|
|
21
|
+
|
|
22
|
+
### Setup Steps
|
|
23
|
+
```bash
|
|
24
|
+
# 1. Clone the repository
|
|
25
|
+
git clone https://github.com/donileong/agy-pilot.git
|
|
26
|
+
cd agy-pilot
|
|
27
|
+
|
|
28
|
+
# 2. Synchronize virtual environment and dependencies
|
|
29
|
+
uv sync
|
|
30
|
+
|
|
31
|
+
# 3. Copy configuration template
|
|
32
|
+
cp .env.example .env
|
|
33
|
+
# Edit .env with your Telegram Bot Token & User ID
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
---
|
|
37
|
+
|
|
38
|
+
## Testing & Quality Assurance
|
|
39
|
+
|
|
40
|
+
Before submitting any code changes, ensure all tests pass:
|
|
41
|
+
|
|
42
|
+
```bash
|
|
43
|
+
# Run test suite
|
|
44
|
+
make test
|
|
45
|
+
|
|
46
|
+
# Run tests with coverage report
|
|
47
|
+
make test-cov
|
|
48
|
+
|
|
49
|
+
# Run linting with Ruff
|
|
50
|
+
make lint
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
---
|
|
54
|
+
|
|
55
|
+
## Implementing a New IM Adapter
|
|
56
|
+
|
|
57
|
+
One of the best ways to contribute is by adding support for new Instant Messaging platforms (e.g. Discord, Slack, Feishu/Lark, DingTalk, Matrix):
|
|
58
|
+
|
|
59
|
+
1. **Subclass `BaseIMAdapter`**:
|
|
60
|
+
Create a new directory in `src/agy_pilot/adapters/<platform>/` and implement `start()` and `stop()` methods:
|
|
61
|
+
```python
|
|
62
|
+
from agy_pilot.adapters.base import BaseIMAdapter
|
|
63
|
+
|
|
64
|
+
class DiscordAdapter(BaseIMAdapter):
|
|
65
|
+
async def start(self) -> None:
|
|
66
|
+
# Initialize client, register command handlers, and begin event loop
|
|
67
|
+
...
|
|
68
|
+
|
|
69
|
+
async def stop(self) -> None:
|
|
70
|
+
# Clean up connections
|
|
71
|
+
...
|
|
72
|
+
```
|
|
73
|
+
2. **Register the Adapter**:
|
|
74
|
+
Add it to `src/agy_pilot/adapters/registry.py`:
|
|
75
|
+
```python
|
|
76
|
+
from agy_pilot.adapters.registry import register_adapter
|
|
77
|
+
register_adapter("discord", DiscordAdapter)
|
|
78
|
+
```
|
|
79
|
+
3. **Write Unit Tests**:
|
|
80
|
+
Add test coverage in `tests/test_adapters.py`.
|
|
81
|
+
|
|
82
|
+
---
|
|
83
|
+
|
|
84
|
+
## Pull Request Guidelines
|
|
85
|
+
|
|
86
|
+
1. **Branch Naming**: Use descriptive branch names:
|
|
87
|
+
- `feat/add-discord-adapter`
|
|
88
|
+
- `fix/voice-download-timeout`
|
|
89
|
+
- `docs/update-quickstart`
|
|
90
|
+
2. **Commit Messages**: Follow Conventional Commits format:
|
|
91
|
+
- `feat: add Discord IM adapter support`
|
|
92
|
+
- `fix: handle reconnection gracefully on network loss`
|
|
93
|
+
- `docs: improve onboarding wizard instructions`
|
|
94
|
+
3. **Keep PRs Focused**: A single PR should address a single concern.
|
|
95
|
+
4. **Never Commit Secrets**: Do not commit tokens, keys, passwords, or personal absolute directory paths.
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
# Antigravity Pilot (agy-pilot) Glossary
|
|
2
|
+
|
|
3
|
+
A headless remote controller and bridge service allowing interaction and control of local Google Antigravity 2 AI sessions via Instant Messaging platforms.
|
|
4
|
+
|
|
5
|
+
## Domain Terms
|
|
6
|
+
|
|
7
|
+
**Antigravity Pilot (`agy-pilot`)**:
|
|
8
|
+
The headless background daemon and multi-platform bridge providing remote control of Google Antigravity 2.
|
|
9
|
+
_Avoid_: Bot, proxy
|
|
10
|
+
|
|
11
|
+
**Hub**:
|
|
12
|
+
The local background language server instance running as `subclient_type hub` that manages IDE workspaces and session state.
|
|
13
|
+
_Avoid_: Core, backend, server
|
|
14
|
+
|
|
15
|
+
**Host Bridge**:
|
|
16
|
+
The internal IPC URL and port pair exposed by the Hub, used to infer gRPC and agent API communication endpoints.
|
|
17
|
+
_Avoid_: Gateway, proxy
|
|
18
|
+
|
|
19
|
+
**AgentAPI**:
|
|
20
|
+
The command-line interface subcommand of `language_server` executed to query workspaces, conversations, and send prompt steps.
|
|
21
|
+
_Avoid_: API, CLI, RPC
|
|
22
|
+
|
|
23
|
+
**Transcript**:
|
|
24
|
+
The JSON-lines event log (`transcript.jsonl`) generated per conversation containing incremental execution steps, model thinking, and tool invocations.
|
|
25
|
+
_Avoid_: History, event log, audit log
|
|
26
|
+
|
|
27
|
+
**Step Tracker**:
|
|
28
|
+
The state machine responsible for tailing transcript deltas, tracking tool execution progress, and debouncing status messages.
|
|
29
|
+
_Avoid_: Event listener, stream handler
|
|
30
|
+
|
|
31
|
+
**IM Adapter**:
|
|
32
|
+
The pluggable interface and protocol adapter (e.g. Telegram, Discord, Slack) responsible for translating chat events and user commands to and from the remote controller.
|
|
33
|
+
_Avoid_: Bot, connector, frontend
|
|
34
|
+
|
|
35
|
+
**Session**:
|
|
36
|
+
The persistent mapping between an authorized user/chat and an active Antigravity project or conversation.
|
|
37
|
+
_Avoid_: Thread, connection
|
agy_pilot-0.1.0/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Doni Leong
|
|
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.
|
agy_pilot-0.1.0/Makefile
ADDED
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
.PHONY: help init run restart status logs test test-cov lint format sync update clean clean-all install-service uninstall-service
|
|
2
|
+
|
|
3
|
+
help:
|
|
4
|
+
@echo "๐ ๏ธ agy-pilot (Antigravity Pilot) Management Commands:"
|
|
5
|
+
@echo ""
|
|
6
|
+
@echo " make init - ๐ง Interactive onboarding setup wizard"
|
|
7
|
+
@echo " make update - ๐ Self-update agy-pilot to latest version & restart"
|
|
8
|
+
@echo " make status - ๐ Inspect daemon service status (PID, health)"
|
|
9
|
+
@echo " make restart - ๐ Restart background daemon service"
|
|
10
|
+
@echo " make logs - ๐ Follow runtime logs"
|
|
11
|
+
@echo " make clean - ๐งน Clean service and logs"
|
|
12
|
+
@echo " make clean-all - ๐๏ธ Clean service, logs, database, and config"
|
|
13
|
+
@echo " make run - ๐ป Run directly in foreground (for debugging)"
|
|
14
|
+
@echo " make test - ๐งช Run complete test suite"
|
|
15
|
+
@echo " make test-cov - ๐ Run tests with code coverage report"
|
|
16
|
+
@echo " make lint - ๐ Check code quality and style with Ruff"
|
|
17
|
+
@echo " make format - ๐จ Auto-format code with Ruff"
|
|
18
|
+
@echo " make sync - ๐ฆ Sync dependencies with uv"
|
|
19
|
+
@echo " make install-service - โ๏ธ Install and load background daemon"
|
|
20
|
+
@echo " make uninstall-service - ๐๏ธ Stop and remove background daemon"
|
|
21
|
+
@echo ""
|
|
22
|
+
|
|
23
|
+
init:
|
|
24
|
+
uv run agy-pilot init
|
|
25
|
+
|
|
26
|
+
clean:
|
|
27
|
+
uv run agy-pilot clean
|
|
28
|
+
|
|
29
|
+
clean-all:
|
|
30
|
+
uv run agy-pilot clean --all
|
|
31
|
+
|
|
32
|
+
run:
|
|
33
|
+
uv run agy-pilot
|
|
34
|
+
|
|
35
|
+
restart:
|
|
36
|
+
uv run agy-pilot service restart
|
|
37
|
+
|
|
38
|
+
update:
|
|
39
|
+
uv run agy-pilot update
|
|
40
|
+
|
|
41
|
+
status:
|
|
42
|
+
uv run agy-pilot service status
|
|
43
|
+
|
|
44
|
+
logs:
|
|
45
|
+
uv run agy-pilot service logs -f
|
|
46
|
+
|
|
47
|
+
test:
|
|
48
|
+
uv run pytest
|
|
49
|
+
|
|
50
|
+
test-cov:
|
|
51
|
+
uv run pytest --cov=agy_pilot
|
|
52
|
+
|
|
53
|
+
lint:
|
|
54
|
+
uv tool run ruff check .
|
|
55
|
+
|
|
56
|
+
format:
|
|
57
|
+
uv tool run ruff format .
|
|
58
|
+
|
|
59
|
+
sync:
|
|
60
|
+
uv sync
|
|
61
|
+
|
|
62
|
+
install-service:
|
|
63
|
+
uv run agy-pilot service install
|
|
64
|
+
|
|
65
|
+
uninstall-service:
|
|
66
|
+
uv run agy-pilot service uninstall
|