romyq 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.
- romyq-0.1.0/LICENSE +21 -0
- romyq-0.1.0/PKG-INFO +261 -0
- romyq-0.1.0/README.md +233 -0
- romyq-0.1.0/pyproject.toml +44 -0
- romyq-0.1.0/romyq/__init__.py +6 -0
- romyq-0.1.0/romyq/__main__.py +4 -0
- romyq-0.1.0/romyq/activity.py +6 -0
- romyq-0.1.0/romyq/cli.py +454 -0
- romyq-0.1.0/romyq/findings.py +112 -0
- romyq-0.1.0/romyq/history.py +64 -0
- romyq-0.1.0/romyq/loop.py +338 -0
- romyq-0.1.0/romyq/manager.py +235 -0
- romyq-0.1.0/romyq/mission.py +42 -0
- romyq-0.1.0/romyq/notes.py +21 -0
- romyq-0.1.0/romyq/runner.py +210 -0
- romyq-0.1.0/romyq/state.py +79 -0
- romyq-0.1.0/romyq/store.py +76 -0
- romyq-0.1.0/romyq/validator.py +54 -0
- romyq-0.1.0/romyq/workspace.py +544 -0
- romyq-0.1.0/romyq.egg-info/PKG-INFO +261 -0
- romyq-0.1.0/romyq.egg-info/SOURCES.txt +24 -0
- romyq-0.1.0/romyq.egg-info/dependency_links.txt +1 -0
- romyq-0.1.0/romyq.egg-info/entry_points.txt +2 -0
- romyq-0.1.0/romyq.egg-info/requires.txt +2 -0
- romyq-0.1.0/romyq.egg-info/top_level.txt +1 -0
- romyq-0.1.0/setup.cfg +4 -0
romyq-0.1.0/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Adarsh
|
|
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.
|
romyq-0.1.0/PKG-INFO
ADDED
|
@@ -0,0 +1,261 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: romyq
|
|
3
|
+
Version: 0.1.0
|
|
4
|
+
Summary: Autonomous AI software project manager
|
|
5
|
+
Author-email: Adarsh <great.adarsh@gmail.com>
|
|
6
|
+
License: MIT
|
|
7
|
+
Project-URL: Repository, https://github.com/adarsh/romyq
|
|
8
|
+
Project-URL: Issues, https://github.com/adarsh/romyq/issues
|
|
9
|
+
Keywords: ai,automation,cli,developer-tools,llm
|
|
10
|
+
Classifier: Development Status :: 3 - Alpha
|
|
11
|
+
Classifier: Environment :: Console
|
|
12
|
+
Classifier: Intended Audience :: Developers
|
|
13
|
+
Classifier: License :: OSI Approved :: MIT License
|
|
14
|
+
Classifier: Operating System :: OS Independent
|
|
15
|
+
Classifier: Programming Language :: Python :: 3
|
|
16
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
17
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
18
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
19
|
+
Classifier: Topic :: Software Development
|
|
20
|
+
Classifier: Topic :: Software Development :: Build Tools
|
|
21
|
+
Classifier: Topic :: Utilities
|
|
22
|
+
Requires-Python: >=3.11
|
|
23
|
+
Description-Content-Type: text/markdown
|
|
24
|
+
License-File: LICENSE
|
|
25
|
+
Requires-Dist: openai>=2.0
|
|
26
|
+
Requires-Dist: python-dotenv>=1.0
|
|
27
|
+
Dynamic: license-file
|
|
28
|
+
|
|
29
|
+
# Romyq
|
|
30
|
+
|
|
31
|
+
Autonomous AI software project manager.
|
|
32
|
+
|
|
33
|
+
Write a mission. Romyq builds it.
|
|
34
|
+
|
|
35
|
+
```
|
|
36
|
+
cd myproject
|
|
37
|
+
romyq attach
|
|
38
|
+
romyq run
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
## How it works
|
|
42
|
+
|
|
43
|
+
1. You write a free-form mission in `mission.md`
|
|
44
|
+
2. Romyq reads the mission and generates the next coding task (via DeepSeek)
|
|
45
|
+
3. Claude Code implements the task and commits the result
|
|
46
|
+
4. Romyq validates the commit, records the result, and repeats
|
|
47
|
+
5. The loop continues until the mission is complete
|
|
48
|
+
|
|
49
|
+
The repository is the source of truth. Every completed task produces a git commit.
|
|
50
|
+
|
|
51
|
+
## Requirements
|
|
52
|
+
|
|
53
|
+
- Python 3.11+
|
|
54
|
+
- [Claude Code](https://claude.ai/code) CLI installed and authenticated (`claude`)
|
|
55
|
+
- [DeepSeek](https://platform.deepseek.com/) API key
|
|
56
|
+
- git
|
|
57
|
+
|
|
58
|
+
## Installation
|
|
59
|
+
|
|
60
|
+
```bash
|
|
61
|
+
pip install romyq
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
## Quick start
|
|
65
|
+
|
|
66
|
+
### Existing repository
|
|
67
|
+
|
|
68
|
+
```bash
|
|
69
|
+
cd myproject
|
|
70
|
+
echo "DEEPSEEK_API_KEY=your-key-here" > .env
|
|
71
|
+
romyq attach # set up .romyq/ and create mission.md
|
|
72
|
+
echo "Add a REST API for user management." > mission.md
|
|
73
|
+
romyq run # start the loop
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
### New project from scratch
|
|
77
|
+
|
|
78
|
+
```bash
|
|
79
|
+
mkdir myproject && cd myproject
|
|
80
|
+
echo "DEEPSEEK_API_KEY=your-key-here" > .env
|
|
81
|
+
romyq init # creates workspace/ subdirectory
|
|
82
|
+
echo "Build a CLI tool that converts Markdown to HTML." > mission.md
|
|
83
|
+
romyq run workspace # run on the workspace/ subdirectory
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
> **Safety:** Romyq will not restore (reset) the working tree if you have
|
|
87
|
+
> uncommitted changes when a task starts. Commit or stash any in-progress
|
|
88
|
+
> work before running for full safety guarantees.
|
|
89
|
+
|
|
90
|
+
## Commands
|
|
91
|
+
|
|
92
|
+
### `romyq attach [path]`
|
|
93
|
+
|
|
94
|
+
Attaches Romyq to an **existing** repository. Safe to run on any project —
|
|
95
|
+
never modifies application code, never creates commits, never initializes git.
|
|
96
|
+
|
|
97
|
+
```bash
|
|
98
|
+
cd myproject
|
|
99
|
+
romyq attach # attaches to current directory
|
|
100
|
+
romyq attach /path/to/repo
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
What it does:
|
|
104
|
+
- Creates `{repo}/.romyq/` for state storage
|
|
105
|
+
- Adds `.romyq/` to the repo's `.gitignore`
|
|
106
|
+
- Creates `mission.md` in the current directory if absent
|
|
107
|
+
|
|
108
|
+
### `romyq info [path]`
|
|
109
|
+
|
|
110
|
+
Shows what Romyq detects about a repository before starting a run.
|
|
111
|
+
|
|
112
|
+
```bash
|
|
113
|
+
romyq info # inspect current directory
|
|
114
|
+
romyq info /path/to/repo
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
Example output:
|
|
118
|
+
```
|
|
119
|
+
Language: python
|
|
120
|
+
Frameworks: FastAPI, SQLAlchemy
|
|
121
|
+
Test suite: pytest (dirs: tests/ | config: pytest.ini)
|
|
122
|
+
Build: make dev
|
|
123
|
+
make test
|
|
124
|
+
pytest
|
|
125
|
+
Branch: main
|
|
126
|
+
|
|
127
|
+
Mission: ✓ found
|
|
128
|
+
Tasks: 0 completed (status: running)
|
|
129
|
+
State dir: ✓ /path/to/repo/.romyq/
|
|
130
|
+
```
|
|
131
|
+
|
|
132
|
+
### `romyq note "message" [workspace]`
|
|
133
|
+
|
|
134
|
+
Appends a steering note for the AI manager. Notes are injected into every
|
|
135
|
+
task generation call as highest-priority guidance, so they take effect
|
|
136
|
+
immediately on the next task without restarting.
|
|
137
|
+
|
|
138
|
+
```bash
|
|
139
|
+
romyq note "Focus on admin UX."
|
|
140
|
+
romyq note "Ignore mobile support."
|
|
141
|
+
romyq note "Prioritize scanner stability."
|
|
142
|
+
```
|
|
143
|
+
|
|
144
|
+
Notes accumulate in `{workspace}/.romyq/notes.md` and persist across runs.
|
|
145
|
+
They do not overwrite `mission.md`. View current notes with `romyq info`.
|
|
146
|
+
|
|
147
|
+
### `romyq init [workspace]`
|
|
148
|
+
|
|
149
|
+
Initializes a **new** project. Creates `mission.md` if it does not exist and
|
|
150
|
+
bootstraps the workspace as a git repository.
|
|
151
|
+
|
|
152
|
+
```bash
|
|
153
|
+
romyq init # uses workspace/ subdirectory
|
|
154
|
+
romyq init /path/to/repo # uses an existing directory
|
|
155
|
+
```
|
|
156
|
+
|
|
157
|
+
### `romyq run [workspace]`
|
|
158
|
+
|
|
159
|
+
Starts the autonomous development loop. Reads `mission.md` from the current
|
|
160
|
+
directory. Defaults to the current directory; override with a path or
|
|
161
|
+
`$ROMYQ_WORKSPACE`.
|
|
162
|
+
|
|
163
|
+
By default Romyq runs indefinitely. When the mission is considered complete it
|
|
164
|
+
logs the result and continues generating improvements (tests, docs, performance,
|
|
165
|
+
reliability, UX). Pass `--until-complete` to stop instead.
|
|
166
|
+
|
|
167
|
+
```bash
|
|
168
|
+
romyq run # current directory, continuous
|
|
169
|
+
romyq run --until-complete # stop when mission is complete
|
|
170
|
+
romyq run /path/to/repo # explicit path
|
|
171
|
+
romyq run workspace # workspace/ subdirectory (romyq init default)
|
|
172
|
+
ROMYQ_WORKSPACE=/path/to/repo romyq run
|
|
173
|
+
```
|
|
174
|
+
|
|
175
|
+
### `romyq status [workspace]`
|
|
176
|
+
|
|
177
|
+
Shows the current run state: tasks completed, last commit, heartbeat.
|
|
178
|
+
|
|
179
|
+
```bash
|
|
180
|
+
romyq status
|
|
181
|
+
romyq status /path/to/repo
|
|
182
|
+
```
|
|
183
|
+
|
|
184
|
+
### `romyq logs [workspace] [--last N]`
|
|
185
|
+
|
|
186
|
+
Shows recent task history. Defaults to the last 10 entries.
|
|
187
|
+
|
|
188
|
+
```bash
|
|
189
|
+
romyq logs
|
|
190
|
+
romyq logs --last 25
|
|
191
|
+
romyq logs /path/to/repo --last 20
|
|
192
|
+
```
|
|
193
|
+
|
|
194
|
+
### `romyq doctor [workspace]`
|
|
195
|
+
|
|
196
|
+
Checks that all prerequisites are in place before running.
|
|
197
|
+
|
|
198
|
+
```bash
|
|
199
|
+
romyq doctor
|
|
200
|
+
romyq doctor /path/to/repo
|
|
201
|
+
```
|
|
202
|
+
|
|
203
|
+
Example output:
|
|
204
|
+
|
|
205
|
+
```
|
|
206
|
+
romyq doctor
|
|
207
|
+
|
|
208
|
+
✓ DEEPSEEK_API_KEY (set)
|
|
209
|
+
✓ claude CLI (/usr/local/bin/claude)
|
|
210
|
+
✓ git (/usr/bin/git)
|
|
211
|
+
✓ mission.md (found)
|
|
212
|
+
✓ workspace (workspace/) (exists)
|
|
213
|
+
✓ workspace is a git repo (yes)
|
|
214
|
+
|
|
215
|
+
All checks passed. Ready to run: romyq run
|
|
216
|
+
```
|
|
217
|
+
|
|
218
|
+
## Configuration
|
|
219
|
+
|
|
220
|
+
| Variable | Default | Description |
|
|
221
|
+
|---|---|---|
|
|
222
|
+
| `DEEPSEEK_API_KEY` | — | Required. DeepSeek API key. |
|
|
223
|
+
| `ROMYQ_WORKSPACE` | current directory | Workspace directory path override. |
|
|
224
|
+
| `ROMYQ_CLAUDE_TIMEOUT` | `1800` | Claude subprocess timeout in seconds (default: 30 minutes). |
|
|
225
|
+
|
|
226
|
+
Place these in a `.env` file in the directory where you run `romyq`.
|
|
227
|
+
|
|
228
|
+
## State files
|
|
229
|
+
|
|
230
|
+
Romyq writes `mission.md` to the current directory and stores all runtime
|
|
231
|
+
state inside the managed repository under `.romyq/`:
|
|
232
|
+
|
|
233
|
+
| Location | Purpose |
|
|
234
|
+
|---|---|
|
|
235
|
+
| `mission.md` | Your mission — you write this, lives where you run romyq |
|
|
236
|
+
| `<workspace>/.romyq/state.json` | Current run state |
|
|
237
|
+
| `<workspace>/.romyq/state.md` | Human-readable summary of the last task |
|
|
238
|
+
| `<workspace>/.romyq/history.json` | Full task history |
|
|
239
|
+
| `<workspace>/.romyq/findings.json` | Audit findings |
|
|
240
|
+
|
|
241
|
+
`.romyq/` is automatically added to the workspace's `.gitignore` so it does
|
|
242
|
+
not pollute the repository's commit history.
|
|
243
|
+
|
|
244
|
+
Each managed repository has its own independent `.romyq/` directory, so
|
|
245
|
+
multiple repositories can be managed simultaneously with separate state.
|
|
246
|
+
|
|
247
|
+
### Working with state from any directory
|
|
248
|
+
|
|
249
|
+
`romyq status` and `romyq logs` accept a workspace argument (or read
|
|
250
|
+
`$ROMYQ_WORKSPACE`) so you can inspect state without being in the romyq
|
|
251
|
+
launch directory:
|
|
252
|
+
|
|
253
|
+
```bash
|
|
254
|
+
romyq status /path/to/repo
|
|
255
|
+
romyq logs /path/to/repo --last 20
|
|
256
|
+
ROMYQ_WORKSPACE=/path/to/repo romyq status
|
|
257
|
+
```
|
|
258
|
+
|
|
259
|
+
## License
|
|
260
|
+
|
|
261
|
+
MIT
|
romyq-0.1.0/README.md
ADDED
|
@@ -0,0 +1,233 @@
|
|
|
1
|
+
# Romyq
|
|
2
|
+
|
|
3
|
+
Autonomous AI software project manager.
|
|
4
|
+
|
|
5
|
+
Write a mission. Romyq builds it.
|
|
6
|
+
|
|
7
|
+
```
|
|
8
|
+
cd myproject
|
|
9
|
+
romyq attach
|
|
10
|
+
romyq run
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
## How it works
|
|
14
|
+
|
|
15
|
+
1. You write a free-form mission in `mission.md`
|
|
16
|
+
2. Romyq reads the mission and generates the next coding task (via DeepSeek)
|
|
17
|
+
3. Claude Code implements the task and commits the result
|
|
18
|
+
4. Romyq validates the commit, records the result, and repeats
|
|
19
|
+
5. The loop continues until the mission is complete
|
|
20
|
+
|
|
21
|
+
The repository is the source of truth. Every completed task produces a git commit.
|
|
22
|
+
|
|
23
|
+
## Requirements
|
|
24
|
+
|
|
25
|
+
- Python 3.11+
|
|
26
|
+
- [Claude Code](https://claude.ai/code) CLI installed and authenticated (`claude`)
|
|
27
|
+
- [DeepSeek](https://platform.deepseek.com/) API key
|
|
28
|
+
- git
|
|
29
|
+
|
|
30
|
+
## Installation
|
|
31
|
+
|
|
32
|
+
```bash
|
|
33
|
+
pip install romyq
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
## Quick start
|
|
37
|
+
|
|
38
|
+
### Existing repository
|
|
39
|
+
|
|
40
|
+
```bash
|
|
41
|
+
cd myproject
|
|
42
|
+
echo "DEEPSEEK_API_KEY=your-key-here" > .env
|
|
43
|
+
romyq attach # set up .romyq/ and create mission.md
|
|
44
|
+
echo "Add a REST API for user management." > mission.md
|
|
45
|
+
romyq run # start the loop
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
### New project from scratch
|
|
49
|
+
|
|
50
|
+
```bash
|
|
51
|
+
mkdir myproject && cd myproject
|
|
52
|
+
echo "DEEPSEEK_API_KEY=your-key-here" > .env
|
|
53
|
+
romyq init # creates workspace/ subdirectory
|
|
54
|
+
echo "Build a CLI tool that converts Markdown to HTML." > mission.md
|
|
55
|
+
romyq run workspace # run on the workspace/ subdirectory
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
> **Safety:** Romyq will not restore (reset) the working tree if you have
|
|
59
|
+
> uncommitted changes when a task starts. Commit or stash any in-progress
|
|
60
|
+
> work before running for full safety guarantees.
|
|
61
|
+
|
|
62
|
+
## Commands
|
|
63
|
+
|
|
64
|
+
### `romyq attach [path]`
|
|
65
|
+
|
|
66
|
+
Attaches Romyq to an **existing** repository. Safe to run on any project —
|
|
67
|
+
never modifies application code, never creates commits, never initializes git.
|
|
68
|
+
|
|
69
|
+
```bash
|
|
70
|
+
cd myproject
|
|
71
|
+
romyq attach # attaches to current directory
|
|
72
|
+
romyq attach /path/to/repo
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
What it does:
|
|
76
|
+
- Creates `{repo}/.romyq/` for state storage
|
|
77
|
+
- Adds `.romyq/` to the repo's `.gitignore`
|
|
78
|
+
- Creates `mission.md` in the current directory if absent
|
|
79
|
+
|
|
80
|
+
### `romyq info [path]`
|
|
81
|
+
|
|
82
|
+
Shows what Romyq detects about a repository before starting a run.
|
|
83
|
+
|
|
84
|
+
```bash
|
|
85
|
+
romyq info # inspect current directory
|
|
86
|
+
romyq info /path/to/repo
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
Example output:
|
|
90
|
+
```
|
|
91
|
+
Language: python
|
|
92
|
+
Frameworks: FastAPI, SQLAlchemy
|
|
93
|
+
Test suite: pytest (dirs: tests/ | config: pytest.ini)
|
|
94
|
+
Build: make dev
|
|
95
|
+
make test
|
|
96
|
+
pytest
|
|
97
|
+
Branch: main
|
|
98
|
+
|
|
99
|
+
Mission: ✓ found
|
|
100
|
+
Tasks: 0 completed (status: running)
|
|
101
|
+
State dir: ✓ /path/to/repo/.romyq/
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
### `romyq note "message" [workspace]`
|
|
105
|
+
|
|
106
|
+
Appends a steering note for the AI manager. Notes are injected into every
|
|
107
|
+
task generation call as highest-priority guidance, so they take effect
|
|
108
|
+
immediately on the next task without restarting.
|
|
109
|
+
|
|
110
|
+
```bash
|
|
111
|
+
romyq note "Focus on admin UX."
|
|
112
|
+
romyq note "Ignore mobile support."
|
|
113
|
+
romyq note "Prioritize scanner stability."
|
|
114
|
+
```
|
|
115
|
+
|
|
116
|
+
Notes accumulate in `{workspace}/.romyq/notes.md` and persist across runs.
|
|
117
|
+
They do not overwrite `mission.md`. View current notes with `romyq info`.
|
|
118
|
+
|
|
119
|
+
### `romyq init [workspace]`
|
|
120
|
+
|
|
121
|
+
Initializes a **new** project. Creates `mission.md` if it does not exist and
|
|
122
|
+
bootstraps the workspace as a git repository.
|
|
123
|
+
|
|
124
|
+
```bash
|
|
125
|
+
romyq init # uses workspace/ subdirectory
|
|
126
|
+
romyq init /path/to/repo # uses an existing directory
|
|
127
|
+
```
|
|
128
|
+
|
|
129
|
+
### `romyq run [workspace]`
|
|
130
|
+
|
|
131
|
+
Starts the autonomous development loop. Reads `mission.md` from the current
|
|
132
|
+
directory. Defaults to the current directory; override with a path or
|
|
133
|
+
`$ROMYQ_WORKSPACE`.
|
|
134
|
+
|
|
135
|
+
By default Romyq runs indefinitely. When the mission is considered complete it
|
|
136
|
+
logs the result and continues generating improvements (tests, docs, performance,
|
|
137
|
+
reliability, UX). Pass `--until-complete` to stop instead.
|
|
138
|
+
|
|
139
|
+
```bash
|
|
140
|
+
romyq run # current directory, continuous
|
|
141
|
+
romyq run --until-complete # stop when mission is complete
|
|
142
|
+
romyq run /path/to/repo # explicit path
|
|
143
|
+
romyq run workspace # workspace/ subdirectory (romyq init default)
|
|
144
|
+
ROMYQ_WORKSPACE=/path/to/repo romyq run
|
|
145
|
+
```
|
|
146
|
+
|
|
147
|
+
### `romyq status [workspace]`
|
|
148
|
+
|
|
149
|
+
Shows the current run state: tasks completed, last commit, heartbeat.
|
|
150
|
+
|
|
151
|
+
```bash
|
|
152
|
+
romyq status
|
|
153
|
+
romyq status /path/to/repo
|
|
154
|
+
```
|
|
155
|
+
|
|
156
|
+
### `romyq logs [workspace] [--last N]`
|
|
157
|
+
|
|
158
|
+
Shows recent task history. Defaults to the last 10 entries.
|
|
159
|
+
|
|
160
|
+
```bash
|
|
161
|
+
romyq logs
|
|
162
|
+
romyq logs --last 25
|
|
163
|
+
romyq logs /path/to/repo --last 20
|
|
164
|
+
```
|
|
165
|
+
|
|
166
|
+
### `romyq doctor [workspace]`
|
|
167
|
+
|
|
168
|
+
Checks that all prerequisites are in place before running.
|
|
169
|
+
|
|
170
|
+
```bash
|
|
171
|
+
romyq doctor
|
|
172
|
+
romyq doctor /path/to/repo
|
|
173
|
+
```
|
|
174
|
+
|
|
175
|
+
Example output:
|
|
176
|
+
|
|
177
|
+
```
|
|
178
|
+
romyq doctor
|
|
179
|
+
|
|
180
|
+
✓ DEEPSEEK_API_KEY (set)
|
|
181
|
+
✓ claude CLI (/usr/local/bin/claude)
|
|
182
|
+
✓ git (/usr/bin/git)
|
|
183
|
+
✓ mission.md (found)
|
|
184
|
+
✓ workspace (workspace/) (exists)
|
|
185
|
+
✓ workspace is a git repo (yes)
|
|
186
|
+
|
|
187
|
+
All checks passed. Ready to run: romyq run
|
|
188
|
+
```
|
|
189
|
+
|
|
190
|
+
## Configuration
|
|
191
|
+
|
|
192
|
+
| Variable | Default | Description |
|
|
193
|
+
|---|---|---|
|
|
194
|
+
| `DEEPSEEK_API_KEY` | — | Required. DeepSeek API key. |
|
|
195
|
+
| `ROMYQ_WORKSPACE` | current directory | Workspace directory path override. |
|
|
196
|
+
| `ROMYQ_CLAUDE_TIMEOUT` | `1800` | Claude subprocess timeout in seconds (default: 30 minutes). |
|
|
197
|
+
|
|
198
|
+
Place these in a `.env` file in the directory where you run `romyq`.
|
|
199
|
+
|
|
200
|
+
## State files
|
|
201
|
+
|
|
202
|
+
Romyq writes `mission.md` to the current directory and stores all runtime
|
|
203
|
+
state inside the managed repository under `.romyq/`:
|
|
204
|
+
|
|
205
|
+
| Location | Purpose |
|
|
206
|
+
|---|---|
|
|
207
|
+
| `mission.md` | Your mission — you write this, lives where you run romyq |
|
|
208
|
+
| `<workspace>/.romyq/state.json` | Current run state |
|
|
209
|
+
| `<workspace>/.romyq/state.md` | Human-readable summary of the last task |
|
|
210
|
+
| `<workspace>/.romyq/history.json` | Full task history |
|
|
211
|
+
| `<workspace>/.romyq/findings.json` | Audit findings |
|
|
212
|
+
|
|
213
|
+
`.romyq/` is automatically added to the workspace's `.gitignore` so it does
|
|
214
|
+
not pollute the repository's commit history.
|
|
215
|
+
|
|
216
|
+
Each managed repository has its own independent `.romyq/` directory, so
|
|
217
|
+
multiple repositories can be managed simultaneously with separate state.
|
|
218
|
+
|
|
219
|
+
### Working with state from any directory
|
|
220
|
+
|
|
221
|
+
`romyq status` and `romyq logs` accept a workspace argument (or read
|
|
222
|
+
`$ROMYQ_WORKSPACE`) so you can inspect state without being in the romyq
|
|
223
|
+
launch directory:
|
|
224
|
+
|
|
225
|
+
```bash
|
|
226
|
+
romyq status /path/to/repo
|
|
227
|
+
romyq logs /path/to/repo --last 20
|
|
228
|
+
ROMYQ_WORKSPACE=/path/to/repo romyq status
|
|
229
|
+
```
|
|
230
|
+
|
|
231
|
+
## License
|
|
232
|
+
|
|
233
|
+
MIT
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
[build-system]
|
|
2
|
+
requires = ["setuptools>=68"]
|
|
3
|
+
build-backend = "setuptools.build_meta"
|
|
4
|
+
|
|
5
|
+
[project]
|
|
6
|
+
name = "romyq"
|
|
7
|
+
version = "0.1.0"
|
|
8
|
+
description = "Autonomous AI software project manager"
|
|
9
|
+
readme = "README.md"
|
|
10
|
+
license = {text = "MIT"}
|
|
11
|
+
authors = [
|
|
12
|
+
{name = "Adarsh", email = "great.adarsh@gmail.com"},
|
|
13
|
+
]
|
|
14
|
+
requires-python = ">=3.11"
|
|
15
|
+
keywords = ["ai", "automation", "cli", "developer-tools", "llm"]
|
|
16
|
+
classifiers = [
|
|
17
|
+
"Development Status :: 3 - Alpha",
|
|
18
|
+
"Environment :: Console",
|
|
19
|
+
"Intended Audience :: Developers",
|
|
20
|
+
"License :: OSI Approved :: MIT License",
|
|
21
|
+
"Operating System :: OS Independent",
|
|
22
|
+
"Programming Language :: Python :: 3",
|
|
23
|
+
"Programming Language :: Python :: 3.11",
|
|
24
|
+
"Programming Language :: Python :: 3.12",
|
|
25
|
+
"Programming Language :: Python :: 3.13",
|
|
26
|
+
"Topic :: Software Development",
|
|
27
|
+
"Topic :: Software Development :: Build Tools",
|
|
28
|
+
"Topic :: Utilities",
|
|
29
|
+
]
|
|
30
|
+
dependencies = [
|
|
31
|
+
"openai>=2.0",
|
|
32
|
+
"python-dotenv>=1.0",
|
|
33
|
+
]
|
|
34
|
+
|
|
35
|
+
[project.urls]
|
|
36
|
+
Repository = "https://github.com/adarsh/romyq"
|
|
37
|
+
Issues = "https://github.com/adarsh/romyq/issues"
|
|
38
|
+
|
|
39
|
+
[project.scripts]
|
|
40
|
+
romyq = "romyq.cli:main"
|
|
41
|
+
|
|
42
|
+
[tool.setuptools.packages.find]
|
|
43
|
+
where = ["."]
|
|
44
|
+
include = ["romyq*"]
|