lemming-cli 0.1.0__py3-none-any.whl
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.
- lemming/__init__.py +1 -0
- lemming/api/__init__.py +5 -0
- lemming/api/auth.py +34 -0
- lemming/api/auth_test.py +40 -0
- lemming/api/config.py +85 -0
- lemming/api/config_test.py +84 -0
- lemming/api/conftest.py +204 -0
- lemming/api/context.py +39 -0
- lemming/api/context_test.py +62 -0
- lemming/api/directories.py +57 -0
- lemming/api/directories_test.py +94 -0
- lemming/api/files.py +116 -0
- lemming/api/files_test.py +163 -0
- lemming/api/hooks.py +15 -0
- lemming/api/hooks_test.py +33 -0
- lemming/api/logging.py +16 -0
- lemming/api/logging_test.py +59 -0
- lemming/api/loop.py +45 -0
- lemming/api/loop_test.py +58 -0
- lemming/api/main.py +53 -0
- lemming/api/main_test.py +30 -0
- lemming/api/tasks.py +170 -0
- lemming/api/tasks_test.py +426 -0
- lemming/api.py +5 -0
- lemming/api_test.py +7 -0
- lemming/cli/__init__.py +12 -0
- lemming/cli/config.py +67 -0
- lemming/cli/config_test.py +50 -0
- lemming/cli/context.py +40 -0
- lemming/cli/context_test.py +49 -0
- lemming/cli/hooks.py +147 -0
- lemming/cli/hooks_test.py +50 -0
- lemming/cli/main.py +42 -0
- lemming/cli/main_test.py +21 -0
- lemming/cli/operations.py +226 -0
- lemming/cli/operations_test.py +44 -0
- lemming/cli/progress.py +54 -0
- lemming/cli/progress_test.py +40 -0
- lemming/cli/readability_cli.py +28 -0
- lemming/cli/readability_cli_test.py +57 -0
- lemming/cli/tasks.py +529 -0
- lemming/cli/tasks_test.py +168 -0
- lemming/cli.py +5 -0
- lemming/cli_test.py +22 -0
- lemming/conftest.py +13 -0
- lemming/hooks.py +145 -0
- lemming/hooks_test.py +180 -0
- lemming/integration_test.py +299 -0
- lemming/main.py +6 -0
- lemming/main_test.py +44 -0
- lemming/models.py +88 -0
- lemming/models_test.py +91 -0
- lemming/orchestrator.py +407 -0
- lemming/orchestrator_test.py +468 -0
- lemming/paths.py +245 -0
- lemming/paths_test.py +186 -0
- lemming/persistence.py +179 -0
- lemming/persistence_test.py +150 -0
- lemming/prompts/hooks/readability.md +42 -0
- lemming/prompts/hooks/roadmap.md +61 -0
- lemming/prompts/hooks/testing.md +44 -0
- lemming/prompts/taskrunner.md +69 -0
- lemming/prompts.py +354 -0
- lemming/prompts_test.py +421 -0
- lemming/providers.py +190 -0
- lemming/providers_test.py +73 -0
- lemming/runner.py +327 -0
- lemming/runner_test.py +378 -0
- lemming/tasks/__init__.py +75 -0
- lemming/tasks/lifecycle.py +331 -0
- lemming/tasks/lifecycle_test.py +312 -0
- lemming/tasks/operations.py +258 -0
- lemming/tasks/operations_test.py +172 -0
- lemming/tasks/progress.py +29 -0
- lemming/tasks/progress_test.py +22 -0
- lemming/tasks/queries.py +128 -0
- lemming/tasks/queries_test.py +233 -0
- lemming/web/dashboard.spec.js +350 -0
- lemming/web/dashboard.test.js +998 -0
- lemming/web/favicon.js +40 -0
- lemming/web/favicon.spec.js +242 -0
- lemming/web/files.html +375 -0
- lemming/web/files.spec.js +97 -0
- lemming/web/index.html +983 -0
- lemming/web/index.js +753 -0
- lemming/web/logs.html +358 -0
- lemming/web/logs.test.js +195 -0
- lemming/web/mancha.js +58 -0
- lemming/web/screenshots.spec.js +328 -0
- lemming_cli-0.1.0.dist-info/METADATA +314 -0
- lemming_cli-0.1.0.dist-info/RECORD +94 -0
- lemming_cli-0.1.0.dist-info/WHEEL +4 -0
- lemming_cli-0.1.0.dist-info/entry_points.txt +2 -0
- lemming_cli-0.1.0.dist-info/licenses/LICENSE +21 -0
|
@@ -0,0 +1,314 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: lemming-cli
|
|
3
|
+
Version: 0.1.0
|
|
4
|
+
Summary: An autonomous, iterative task runner for AI coding agents.
|
|
5
|
+
Project-URL: Homepage, https://github.com/owahltinez/lemming
|
|
6
|
+
Project-URL: Repository, https://github.com/owahltinez/lemming
|
|
7
|
+
Author: Lemming Contributors
|
|
8
|
+
License: MIT
|
|
9
|
+
License-File: LICENSE
|
|
10
|
+
Keywords: agents,ai,aider,antigravity,automation,claude
|
|
11
|
+
Requires-Python: >=3.12
|
|
12
|
+
Requires-Dist: beautifulsoup4>=4.13.3
|
|
13
|
+
Requires-Dist: click>=8.0.0
|
|
14
|
+
Requires-Dist: fastapi>=0.124.4
|
|
15
|
+
Requires-Dist: markdownify>=0.14.1
|
|
16
|
+
Requires-Dist: pydantic>=2.12.5
|
|
17
|
+
Requires-Dist: pyyaml>=6.0.3
|
|
18
|
+
Requires-Dist: readability-cli>=0.4.0
|
|
19
|
+
Requires-Dist: requests>=2.32.3
|
|
20
|
+
Requires-Dist: uvicorn>=0.33.0
|
|
21
|
+
Description-Content-Type: text/markdown
|
|
22
|
+
|
|
23
|
+
# Lemming 🐹
|
|
24
|
+
|
|
25
|
+
**The transparent, tool-agnostic orchestrator for autonomous AI coding agents.**
|
|
26
|
+
|
|
27
|
+
Lemming bridges the gap between high-level project strategy and low-level agent
|
|
28
|
+
execution. Instead of letting an agent wander through your codebase in a single,
|
|
29
|
+
massive context window, Lemming forces a structured, iterative workflow via a
|
|
30
|
+
human-readable `tasks.yml` file.
|
|
31
|
+
|
|
32
|
+
## Why Lemming?
|
|
33
|
+
|
|
34
|
+
- **Zero Context Drift**: By breaking projects into discrete tasks, Lemming
|
|
35
|
+
ensures agents stay focused. They only see the project context, relevant
|
|
36
|
+
history, and the specific task at hand.
|
|
37
|
+
- **Transparency & Control**: Every decision, technical finding, and progress
|
|
38
|
+
update is recorded in a human-readable `tasks.yml` file. You can step in,
|
|
39
|
+
adjust the roadmap, or swap agents at any time.
|
|
40
|
+
- **Tool Agnostic**: Lemming doesn't care which agent you use. It works
|
|
41
|
+
out-of-the-box with `agy`, `aider`, `claude`, `codex`, or even your own custom
|
|
42
|
+
scripts.
|
|
43
|
+
- **Resilient Execution**: With built-in heartbeat monitoring, automatic
|
|
44
|
+
retries, and progress tracking, Lemming handles process crashes and rate
|
|
45
|
+
limits gracefully.
|
|
46
|
+
- **Human-Agent Collaboration**: Use the CLI or the Web UI to collaborate with
|
|
47
|
+
your agents in real-time. Mark tasks, edit descriptions, and review progress
|
|
48
|
+
as they happen.
|
|
49
|
+
|
|
50
|
+
---
|
|
51
|
+
|
|
52
|
+
## Installation
|
|
53
|
+
|
|
54
|
+
Install globally using `uv`:
|
|
55
|
+
|
|
56
|
+
```bash
|
|
57
|
+
uv tool install git+https://github.com/owahltinez/lemming.git
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
## Quick Start in 3 Steps
|
|
61
|
+
|
|
62
|
+
### 1. Scaffold the Roadmap
|
|
63
|
+
|
|
64
|
+
Initialize your project context and define your goals.
|
|
65
|
+
|
|
66
|
+
```bash
|
|
67
|
+
# Set project-wide rules (e.g. tech stack, style guides)
|
|
68
|
+
lemming context "Use React, TypeScript, and Tailwind. Follow TDD."
|
|
69
|
+
|
|
70
|
+
# Add tasks to the queue
|
|
71
|
+
lemming add "Initialize the project with Vite"
|
|
72
|
+
lemming add "Create the Button component"
|
|
73
|
+
lemming add "Implement the authentication flow"
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
### 2. Review and Refine
|
|
77
|
+
|
|
78
|
+
See exactly what's pending and what the agent will see.
|
|
79
|
+
|
|
80
|
+
```bash
|
|
81
|
+
# Show the current roadmap
|
|
82
|
+
lemming status
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
### 3. Release the Lemming
|
|
86
|
+
|
|
87
|
+
Start the autonomous loop.
|
|
88
|
+
|
|
89
|
+
```bash
|
|
90
|
+
# Run using the project's configured agent (defaults to the first
|
|
91
|
+
# supported runner found on PATH: agy, aider, claude, or codex)
|
|
92
|
+
lemming run
|
|
93
|
+
|
|
94
|
+
# Flags passed after -- are sent directly to the underlying runner
|
|
95
|
+
lemming run -- --model claude-3-5-sonnet
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
---
|
|
99
|
+
|
|
100
|
+
## The Web Dashboard
|
|
101
|
+
|
|
102
|
+
Lemming includes a modern, fast Web UI to monitor your projects.
|
|
103
|
+
|
|
104
|
+
```bash
|
|
105
|
+
lemming serve
|
|
106
|
+
|
|
107
|
+
# Or share it remotely via a secure tunnel with token auth
|
|
108
|
+
lemming serve --tunnel cloudflare
|
|
109
|
+
```
|
|
110
|
+
|
|
111
|
+
- **Real-time Monitoring**: Watch tasks move from pending to in-progress to
|
|
112
|
+
completed.
|
|
113
|
+
- **Switch Project**: Easily switch between different projects or create new
|
|
114
|
+
folders directly from the UI.
|
|
115
|
+
- **Browse Files**: Quickly open your workspace in a separate window to inspect
|
|
116
|
+
files and directory structure alongside the roadmap.
|
|
117
|
+
- **Interactive Controls**: Add tasks, edit context, and manage the execution
|
|
118
|
+
loop from your browser.
|
|
119
|
+
|
|
120
|
+
---
|
|
121
|
+
|
|
122
|
+
## How it Works
|
|
123
|
+
|
|
124
|
+
Lemming maintains a human-readable `tasks.yml` file containing your project
|
|
125
|
+
context, a queue of tasks, and recorded progress. When you run `lemming run`, it
|
|
126
|
+
loops through each pending task:
|
|
127
|
+
|
|
128
|
+
1. **Build a scoped prompt**: Lemming assembles a prompt containing only the
|
|
129
|
+
project context, a summary of completed tasks and their progress, and the
|
|
130
|
+
current task description.
|
|
131
|
+
2. **Invoke the agent**: It launches your chosen agent CLI with that prompt,
|
|
132
|
+
monitors it with heartbeats, and streams output to a log file.
|
|
133
|
+
3. **Collect results**: The agent reports back via the Lemming CLI — recording
|
|
134
|
+
findings with `lemming progress`, then marking the task with
|
|
135
|
+
`lemming complete` or `lemming fail`. Agents can also schedule new tasks
|
|
136
|
+
with `lemming add`, breaking down complex work into smaller steps that
|
|
137
|
+
Lemming will pick up automatically.
|
|
138
|
+
4. **Retry or advance**: On failure, Lemming retries the task (up to
|
|
139
|
+
`--retries`) with accumulated progress as context, so the agent learns from
|
|
140
|
+
previous attempts. On success, it moves to the next task.
|
|
141
|
+
5. **Orchestration**: After each task, Lemming can run one or more
|
|
142
|
+
**Orchestrator Hooks** (like the built-in `roadmap` hook) to evaluate the
|
|
143
|
+
results and adapt the roadmap if needed. Hooks are enabled by default but
|
|
144
|
+
can be disabled via configuration.
|
|
145
|
+
|
|
146
|
+
---
|
|
147
|
+
|
|
148
|
+
## Orchestrator Hooks ⚓️
|
|
149
|
+
|
|
150
|
+
For longer, multi-stage projects, the initial task list often can't anticipate
|
|
151
|
+
everything. Tasks may fail in ways that retrying won't fix, or completing all
|
|
152
|
+
tasks may not fully achieve the stated goal. **Orchestrator Hooks** address this
|
|
153
|
+
by running custom agents or scripts after each task execution to evaluate
|
|
154
|
+
results and adapt the roadmap.
|
|
155
|
+
|
|
156
|
+
By default, Lemming runs all available hooks (including the built-in `roadmap`
|
|
157
|
+
hook). You can customize this behavior via the `hooks` subcommand:
|
|
158
|
+
|
|
159
|
+
```bash
|
|
160
|
+
# Enable or disable hooks for the project
|
|
161
|
+
lemming hooks enable lint
|
|
162
|
+
lemming hooks disable roadmap
|
|
163
|
+
|
|
164
|
+
# Set the exact list of active hooks
|
|
165
|
+
lemming hooks set roadmap lint
|
|
166
|
+
|
|
167
|
+
# Reset to default (run all available hooks)
|
|
168
|
+
lemming hooks reset
|
|
169
|
+
```
|
|
170
|
+
|
|
171
|
+
### Built-in Hooks ⚓️
|
|
172
|
+
|
|
173
|
+
Lemming comes with several built-in hooks to help manage your project:
|
|
174
|
+
|
|
175
|
+
- **`roadmap`**: The primary mechanism for autonomous project management. It
|
|
176
|
+
analyzes the results of the finished task and decides if the remaining roadmap
|
|
177
|
+
needs to be adjusted (e.g., adding a missing prerequisite, skipping obsolete
|
|
178
|
+
tasks, or breaking down a broad task).
|
|
179
|
+
- **`readability`**: A code quality hook that reviews changes for adherence to
|
|
180
|
+
the Google Style Guide and general readability using the
|
|
181
|
+
[readability](https://github.com/owahltinez/readability) tool (exposed as
|
|
182
|
+
`lemming readability`). It can record findings as task progress or suggest
|
|
183
|
+
follow-up refactoring tasks.
|
|
184
|
+
|
|
185
|
+
### Custom and Global Hooks
|
|
186
|
+
|
|
187
|
+
You can create your own hooks by adding Markdown files to:
|
|
188
|
+
|
|
189
|
+
1. **Project-specific**: `.lemming/hooks/*.md`
|
|
190
|
+
2. **Global**: `~/.local/lemming/hooks/*.md`
|
|
191
|
+
|
|
192
|
+
Lemming's built-in hooks can be symlinked to the global directory using
|
|
193
|
+
`lemming hooks install`. This allows you to easily **override** a built-in hook
|
|
194
|
+
by replacing its symlink with a file, or **disable** a global override by
|
|
195
|
+
deleting the symlink.
|
|
196
|
+
|
|
197
|
+
Hooks follow a specific discovery precedence: **Project > Global > Built-in**.
|
|
198
|
+
See [DOCS/HOOKS.md](docs/HOOKS.md) for more details.
|
|
199
|
+
|
|
200
|
+
### Managing Hooks and Configuration
|
|
201
|
+
|
|
202
|
+
Use the `config` and `hooks` commands to manage your project's execution loop:
|
|
203
|
+
|
|
204
|
+
```bash
|
|
205
|
+
# List all available hooks (built-in and local)
|
|
206
|
+
lemming hooks list
|
|
207
|
+
|
|
208
|
+
# Install (symlink) built-in hooks to the global directory
|
|
209
|
+
lemming hooks install
|
|
210
|
+
|
|
211
|
+
# View current project configuration
|
|
212
|
+
lemming config list
|
|
213
|
+
|
|
214
|
+
# Persist configuration to tasks.yml
|
|
215
|
+
lemming config set runner aider
|
|
216
|
+
lemming hooks set roadmap lint
|
|
217
|
+
```
|
|
218
|
+
|
|
219
|
+
---
|
|
220
|
+
|
|
221
|
+
## Command Reference
|
|
222
|
+
|
|
223
|
+
### Roadmap Management
|
|
224
|
+
|
|
225
|
+
- **`status [<id>]`**: Roadmap overview or deep-dive into a specific task.
|
|
226
|
+
- **`context [<text>]`**: Set or view project-wide instructions. Supports
|
|
227
|
+
`-f/--file`.
|
|
228
|
+
- **`add <desc>`**: Append a new task. Supports `--index` and `--runner`.
|
|
229
|
+
- **`edit <id>`**: Modify a task's description, runner, or position.
|
|
230
|
+
- **`delete <id>`**: Remove a task. Supports `--all` and `--completed` for bulk
|
|
231
|
+
operations.
|
|
232
|
+
- **`progress`**: Manage progress entries and findings for specific tasks.
|
|
233
|
+
- `list <id>`: List all progress for a task.
|
|
234
|
+
- `add <id> <finding>`: Record a new technical detail.
|
|
235
|
+
- `edit <id> <index> <text>`: Modify an existing progress entry.
|
|
236
|
+
- `delete <id> <index>`: Remove a progress entry.
|
|
237
|
+
- **`config`**: Manage project configuration (runner, retries).
|
|
238
|
+
- `list`: View current configuration.
|
|
239
|
+
- `set <key> <value>`: Update a setting.
|
|
240
|
+
- **`hooks`**: Manage orchestrator hooks.
|
|
241
|
+
- `list`: View available and active hooks.
|
|
242
|
+
- `install`: Install built-in hooks to the global directory.
|
|
243
|
+
- `enable <name>...`: Activate one or more hooks.
|
|
244
|
+
- `disable <name>...`: Deactivate one or more hooks.
|
|
245
|
+
- `set <name>...`: Set the exact list of active hooks.
|
|
246
|
+
- `reset`: Restore default hooks (run all available).
|
|
247
|
+
- **`readability`**: Code quality tool for style guide adherence, wrapping the
|
|
248
|
+
[readability](https://github.com/owahltinez/readability) package. Ruff and
|
|
249
|
+
Pyrefly run with bundled Google-style defaults unless the target project
|
|
250
|
+
defines its own configuration.
|
|
251
|
+
- `check <paths>...`: Run formatters and linters.
|
|
252
|
+
- `guide <language>`: Fetch and view style guides.
|
|
253
|
+
- `languages`: List all supported languages.
|
|
254
|
+
- `sync`: Synchronize style guides from the web.
|
|
255
|
+
|
|
256
|
+
### Task Status
|
|
257
|
+
|
|
258
|
+
- **`complete <id>`**: Mark a task as successful.
|
|
259
|
+
- **`fail <id>`**: Mark a task as a terminal failure (will not be retried).
|
|
260
|
+
- **`cancel <id>`**: Stop an in-progress task (kills the runner process).
|
|
261
|
+
- **`reset <id>`**: Clear attempts and progress to start a task fresh.
|
|
262
|
+
- **`logs [<id>]`**: Print a task's execution log to stdout. If no ID is
|
|
263
|
+
provided, it defaults to the active or most recent task. Orchestrator hook
|
|
264
|
+
output is automatically appended.
|
|
265
|
+
|
|
266
|
+
### Execution
|
|
267
|
+
|
|
268
|
+
- **`run`**: Start the autonomous orchestrator loop.
|
|
269
|
+
- `--retry-delay`: Seconds to wait before retries (default 10).
|
|
270
|
+
- `--yolo`: Run the runner in auto-approve mode (default: True).
|
|
271
|
+
- `--env`: Set environment variables for the runner (e.g., `--env KEY=VALUE`).
|
|
272
|
+
- `--no-defaults`: Skip default flag injection for known runners.
|
|
273
|
+
- `--`: Use `--` to pass any flag directly to the underlying runner.
|
|
274
|
+
- **`serve`**: Launch the interactive Web UI.
|
|
275
|
+
- `--port`: The port to bind the server to (default: 8999).
|
|
276
|
+
- `--host`: The host address to bind the server to (default: 127.0.0.1).
|
|
277
|
+
- `--tunnel cloudflare|tailscale`: Expose the UI to the public internet via a
|
|
278
|
+
secure tunnel.
|
|
279
|
+
- `--timeout`: Auto-shutdown after a duration (e.g., `8h`, `30m`). Defaults to
|
|
280
|
+
`8h` with `--tunnel`, disabled otherwise.
|
|
281
|
+
|
|
282
|
+
---
|
|
283
|
+
|
|
284
|
+
## Advanced: Runner Customization
|
|
285
|
+
|
|
286
|
+
Lemming uses **fuzzy matching** to automatically inject the correct "YOLO"
|
|
287
|
+
(auto-approve) and "Quiet" flags for popular tools:
|
|
288
|
+
|
|
289
|
+
- **Antigravity (`agy`)**: Adds `--dangerously-skip-permissions`
|
|
290
|
+
- **Aider**: Adds `--yes --quiet`
|
|
291
|
+
- **Claude**: Adds `--dangerously-skip-permissions`
|
|
292
|
+
- **Codex**: Adds `--yolo`
|
|
293
|
+
|
|
294
|
+
You can disable this behavior with `--no-defaults`, or use a **template** to
|
|
295
|
+
fully control the command layout:
|
|
296
|
+
|
|
297
|
+
```bash
|
|
298
|
+
lemming run --runner "my-tool --input={{prompt}} --json"
|
|
299
|
+
```
|
|
300
|
+
|
|
301
|
+
When `{{prompt}}` is present in the runner string, Lemming replaces it with the
|
|
302
|
+
prompt text and skips all default flag injection.
|
|
303
|
+
|
|
304
|
+
---
|
|
305
|
+
|
|
306
|
+
## Screenshots
|
|
307
|
+
|
|
308
|
+
### Dashboard
|
|
309
|
+
|
|
310
|
+

|
|
311
|
+
|
|
312
|
+
### Task Log
|
|
313
|
+
|
|
314
|
+

|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
lemming/__init__.py,sha256=U6NU1dYYEEG5uWWd0_oNqxLMir4dp8VCc_q-tl0Vtcc,67
|
|
2
|
+
lemming/api.py,sha256=6OQjpHCPOqugydLL5pWLGz2V43PNRG4B2Ph7m3x4yiU,150
|
|
3
|
+
lemming/api_test.py,sha256=Uj_PAfqkvH7U2YCjUSh9pI7gAUzvo-sSHahGSSQ7gho,166
|
|
4
|
+
lemming/cli.py,sha256=U0zIwUOJyWCrkspmjOnqZFqkKFX3KBluLQdWr0UU568,87
|
|
5
|
+
lemming/cli_test.py,sha256=bOGzBlm1Uyxx7BlRpLSz8p6li2PIZHtIZjzU2DwuXwA,535
|
|
6
|
+
lemming/conftest.py,sha256=udpLvr1AIZYbzJFtWLI-IjAaLVeCyIILpE0sOS15U-c,367
|
|
7
|
+
lemming/hooks.py,sha256=re3w1n8SYgH2QKlMSpmhJqLkqNN-J3wiWrzt8q5VoQY,5241
|
|
8
|
+
lemming/hooks_test.py,sha256=Zo1YXRx0gn_BgCzQsYrC9SKpeJ9L6TIXm-RURhmRrgE,5887
|
|
9
|
+
lemming/integration_test.py,sha256=IdfPWQuNhk1akPiBWfYuU3mQ32y8gbZ9EAN9BED3GTY,11912
|
|
10
|
+
lemming/main.py,sha256=YI51bShlNZ3WYyfxSIqQdcYi3aORo1IUQHRviOTaokQ,119
|
|
11
|
+
lemming/main_test.py,sha256=XCZNAkOC1-OBII9TVpld3fNSJo8qycNukLm7RudH4Ss,1275
|
|
12
|
+
lemming/models.py,sha256=CDFXi8KX_iKrgkFII9Vw8TTOE0Mugg_2kGzyfKhXLIU,2451
|
|
13
|
+
lemming/models_test.py,sha256=k3c6hYx7Qy9bWADdFPvTOB0ZiNG6NhA7Ra-QOTyIgj8,2824
|
|
14
|
+
lemming/orchestrator.py,sha256=ODJjws2tJRSeDcoiQY2k96e6kqIRZpluhcFVFmqYly0,12286
|
|
15
|
+
lemming/orchestrator_test.py,sha256=WYWrE8qO1E_SHQN-d5JNCWpBkUjEPHn4V83UPTuZ59Q,14126
|
|
16
|
+
lemming/paths.py,sha256=89elo32umyAZFP6D5n2fVXNA01WhNCN8mO1LZyMEnQc,7502
|
|
17
|
+
lemming/paths_test.py,sha256=hDZuaj-RzGaBIg0NjKKOx_O6DDr2QL9VN0HaAT4RONQ,6377
|
|
18
|
+
lemming/persistence.py,sha256=Kkh6ltyg_48MH-A8mbvQ_1Wwma0nzPwzE2wqHcjQD6o,5807
|
|
19
|
+
lemming/persistence_test.py,sha256=hw2oW3Y4eKNFq93ay7eC8NXtwikJAohBBTuEHxpJElI,4442
|
|
20
|
+
lemming/prompts.py,sha256=OXUS1mWaw3U1vMF1pLeo9v0ZGVQ3GtZXVIqSkbeGMc0,12892
|
|
21
|
+
lemming/prompts_test.py,sha256=wUz-KqkO49hwEsiiLTzj3l0xo9Z0QYtyHUAzyDcSbug,13465
|
|
22
|
+
lemming/providers.py,sha256=-yeWxX2pdx1qunYeO-ZcxxY27Q0eCJnsR-mgmVQcEMg,6098
|
|
23
|
+
lemming/providers_test.py,sha256=oJNzKspi1sX7ks_tyLkIc8n86Cyj8eAKuoQKFJxGiRA,2286
|
|
24
|
+
lemming/runner.py,sha256=NH4CNi8LM_Ad1cDiGnF1IMo4W9E0bScyc-Rb2GFzczI,10834
|
|
25
|
+
lemming/runner_test.py,sha256=Y-mFJtbSoRs2a64VHOXCMQ8FQUkZ1rQxc6B2tGu-fIU,12407
|
|
26
|
+
lemming/api/__init__.py,sha256=FUKjBXQC-3T6oidTshfmQaSFQ5iC2qBugPrJurJUqHY,135
|
|
27
|
+
lemming/api/auth.py,sha256=3XCaL6qzuQTu7cThHYcwIXoW515Bx2KxvEePJx7jpV4,1211
|
|
28
|
+
lemming/api/auth_test.py,sha256=rmCgydQzT8tMxuUekW4v-wkWs1_avqdBEiqbLbdHEcY,1376
|
|
29
|
+
lemming/api/config.py,sha256=Hb-wJcFx0fAbMzSVbV3V8SjRrfPj3kTPPWTK22jmrOE,2289
|
|
30
|
+
lemming/api/config_test.py,sha256=-QHhhO6Tt9OHMXhd_X20eU5ApTCmOzcgzEQYex3RTS8,2762
|
|
31
|
+
lemming/api/conftest.py,sha256=Ig2qPrvYtwfKbPl8fcB6XcZoXg4m5SYWxDWszUv3xZA,6205
|
|
32
|
+
lemming/api/context.py,sha256=7wrfAhoLIultMvjr_HHCrEghPIDTdxpNKAvsXKZUYSk,1197
|
|
33
|
+
lemming/api/context_test.py,sha256=S5dXLx1Hj7GWd-uo8pWgJLyyFdHyV-zKhWjf6RfIyyI,1736
|
|
34
|
+
lemming/api/directories.py,sha256=EpVHrvq-xrvPZ0VSXSlG1AlHyATPGuZ4MLqGwqAQgTg,1935
|
|
35
|
+
lemming/api/directories_test.py,sha256=Ul75zYS6ANqxKMctr0OCypfhfIwRcNG9XY2W1K83ZRY,3303
|
|
36
|
+
lemming/api/files.py,sha256=VB8hcjVj7OW4ogQHFAiZfjUD6inpXqwo-8USnD1tqMo,3514
|
|
37
|
+
lemming/api/files_test.py,sha256=H9mYgC4bjU1FWgPXFMyd_cf8E9EQJUWZ2cu4GAe1uAU,5403
|
|
38
|
+
lemming/api/hooks.py,sha256=vhyD7NfdpNYL-EUSgq_CAHozHFzdneDjfNxM6I0L9wc,434
|
|
39
|
+
lemming/api/hooks_test.py,sha256=JQB_hVI0E3wPHFu8InNbWsvo4jOUbdFBu1GXzcmZIX0,1140
|
|
40
|
+
lemming/api/logging.py,sha256=TbRK8AHAtJ9c3bD9xW9nqT3u0DPqAoLEYwoEip2f38w,540
|
|
41
|
+
lemming/api/logging_test.py,sha256=M0is_faEb0-WoH_wJ55-X7O7oHWvH0BeENEfigqsWCM,1900
|
|
42
|
+
lemming/api/loop.py,sha256=z2EtZBqQyiN0mU9jcHLreUqqHN3yWEGOCvMHTYzHi68,1066
|
|
43
|
+
lemming/api/loop_test.py,sha256=DD5IlPWnxPylJwF6KWGKBI0t7X_uQ-sQ4IsAa74TwyE,1963
|
|
44
|
+
lemming/api/main.py,sha256=VaNBFHjD4jbgP_rdkBY9fjhwTE_UFMg_TRLyRBnEC94,1538
|
|
45
|
+
lemming/api/main_test.py,sha256=scTP5zee1LBDgZ_P20X-MgbBAb4iQAde4ADIuhY1nww,1128
|
|
46
|
+
lemming/api/tasks.py,sha256=Ca7kf1bNYFNK1jjucPc2A0r6mqGq3IknxTCMQ2nIYVY,5442
|
|
47
|
+
lemming/api/tasks_test.py,sha256=G6_o_WMPArWEO2oibrakQPswAyieRBmSYEhKb3s9HIo,14771
|
|
48
|
+
lemming/cli/__init__.py,sha256=bX_VbCou4hpOnZGdV7eMezHJ_mMnICH7eRFt0Tj5-mA,492
|
|
49
|
+
lemming/cli/config.py,sha256=rrI_MnZ914BdpP8K3CFAQhmNcVv-_D_0QjyjuFZ9ZF4,1956
|
|
50
|
+
lemming/cli/config_test.py,sha256=BMhzQEwNXqOoZpRml-v_OJYmvA2SxWxjYeUxONKZfJc,1404
|
|
51
|
+
lemming/cli/context.py,sha256=V29HhcqazA2FeL9z2a_wrpBh8wP14DzU5b-tMKcrgko,1177
|
|
52
|
+
lemming/cli/context_test.py,sha256=dRtAbceb8PfpGBRbbdKXepjw4QgBG62vTVwwXx_tgfE,1390
|
|
53
|
+
lemming/cli/hooks.py,sha256=fJcWSdHvvnGBpIm8dhn-KVO1w3DjVo_297rrcHxcFdQ,4506
|
|
54
|
+
lemming/cli/hooks_test.py,sha256=iVNY0oxXR-hWXrWnhmhfJZS3WNnPAy9bckvaAgh1D9Q,1381
|
|
55
|
+
lemming/cli/main.py,sha256=dYWBwH0VCPtaQfCKkFiZIjZD6X0YbE0XfA8s5SF1lxw,1165
|
|
56
|
+
lemming/cli/main_test.py,sha256=wBVgQsw_492Cv-YJRTElPmSjb4u0hJmnUqSqkjh8HII,475
|
|
57
|
+
lemming/cli/operations.py,sha256=UugqEv-57oGR7DKmxFWly_XT9VdDD0R1pMnnpjOfqd8,6585
|
|
58
|
+
lemming/cli/operations_test.py,sha256=gcCSSmSXrF1LYU_baJBmV1RWuTbKYgmiJgVLLmI8xoQ,1216
|
|
59
|
+
lemming/cli/progress.py,sha256=ul7mZVrrmizxLfdR81Xy8V5_LF49T6Fk-xNgCzNjcoE,1431
|
|
60
|
+
lemming/cli/progress_test.py,sha256=nr7Nj0n8ZgLLi_I5UkmTUWIHDFhnoaogFh691I9BzQw,988
|
|
61
|
+
lemming/cli/readability_cli.py,sha256=nAfdOuSZDy49qLSf4EpoQz9Fekh8TwawxP4creROyzg,868
|
|
62
|
+
lemming/cli/readability_cli_test.py,sha256=-UQjOhevYEGbpcVJrmC9RVRq4g9Se3Lgw9ge-dQLLQo,1793
|
|
63
|
+
lemming/cli/tasks.py,sha256=v3FYLWxam_HFhFdTKVpN-uyajOYnYZ2AYp0lcJ2POBc,16421
|
|
64
|
+
lemming/cli/tasks_test.py,sha256=eenSIfO1Vgi908aGYvN1fLheWJIhdMpVJwixmvQUCJg,5757
|
|
65
|
+
lemming/prompts/taskrunner.md,sha256=98QWkP6yaFm2uRT6FPIqAQcH5RKY1imyPqvOz1twSU4,3775
|
|
66
|
+
lemming/prompts/hooks/readability.md,sha256=stDhoUvOH5BZSl81-_Ex7agJ3ZAsm03JDhB9S-txc0E,1478
|
|
67
|
+
lemming/prompts/hooks/roadmap.md,sha256=bjXgHrzD2W0oeSwg9sfqsYNwpOI_D0KXDDeXTP2Nm0w,2726
|
|
68
|
+
lemming/prompts/hooks/testing.md,sha256=V8Q3lUw2xvUC8vjV0Oui7-KkOBqo0vosPVFTqbPOZ-4,1622
|
|
69
|
+
lemming/tasks/__init__.py,sha256=xlLg0a19yjY9QoAcIqodiI8aRDiIiFonUHRYmhKrvcQ,1924
|
|
70
|
+
lemming/tasks/lifecycle.py,sha256=2HV3CCo3DxfrVX6cz7C6YM697ib4aGUJSbQwLZDObvQ,10308
|
|
71
|
+
lemming/tasks/lifecycle_test.py,sha256=Af68tYa6vqlVWl1yyea0pISXTAHLSMgwDrjRCkK7Xg8,9345
|
|
72
|
+
lemming/tasks/operations.py,sha256=ZW_Sq0Mzhp_6mOmobwHLW-NWIwbTdgxcMhfUlfp_bc0,8529
|
|
73
|
+
lemming/tasks/operations_test.py,sha256=6aJ4_DZJAhh5wAQzbf809nyXDWstNJQ46lCoTnYHF8M,5280
|
|
74
|
+
lemming/tasks/progress.py,sha256=pQzmWU47IN7ZO7S4e3AjLekSg4oYk26oqr2Lc4wtUJ8,788
|
|
75
|
+
lemming/tasks/progress_test.py,sha256=YSTr5hr2Of0I69HAb5nsUFkYEUNBdO68iOONNAn3oT4,604
|
|
76
|
+
lemming/tasks/queries.py,sha256=gdMI_4aY2vwxfkJCNjUCjN4cutRxSaspq2SrfAtWvuE,4044
|
|
77
|
+
lemming/tasks/queries_test.py,sha256=DNrXWxHyk1I8bgoyCNeyWkEW6F4ANbnySm_m1D8l2BI,7102
|
|
78
|
+
lemming/web/dashboard.spec.js,sha256=yyCTigQ9fMTu0-9898UBjA4sgJaZyO4-J-mQFF05RkU,11727
|
|
79
|
+
lemming/web/dashboard.test.js,sha256=Vd2Z-6ult9bZWns_mnSELt1SgHLfLVmGh1oov0ukVY0,31166
|
|
80
|
+
lemming/web/favicon.js,sha256=dwq2KvQWX0t9A6s-sr-Almn1quwpOzx8gEgb0SU1RSA,1476
|
|
81
|
+
lemming/web/favicon.spec.js,sha256=Xe9lzlM5FVPBdGomEt0y_uau11fwAKFYs_Ikfa4SjxA,7828
|
|
82
|
+
lemming/web/files.html,sha256=P_GpyZGA7WjM-pHncNYuwmxv0JG19h1NeIbJ2XzmH7c,13544
|
|
83
|
+
lemming/web/files.spec.js,sha256=gVWeElxbuO2RzkMrAcXoCONFfD9zq6uUWUVEO1NT-uQ,2821
|
|
84
|
+
lemming/web/index.html,sha256=RkWvLx5mO32zzqQ35nqGkD94L9rzQ7UQcRNML5Uk_ZE,43835
|
|
85
|
+
lemming/web/index.js,sha256=Ym2N-voOOyIBmYid-h2LMxM9GjbL7l2ewPNfylZlHzQ,23931
|
|
86
|
+
lemming/web/logs.html,sha256=p6wUalVhczgl94HAxdo14_PZrPgus6BRth9MaR8tup0,13119
|
|
87
|
+
lemming/web/logs.test.js,sha256=MmKVi4ohIwO_vus56euK4eiG75Qk1g1r8HiJW5rN4Go,6874
|
|
88
|
+
lemming/web/mancha.js,sha256=FVnnKTL8eU8Ov89m4Z0zLXLXNqWSkeiQPO-qM228ISY,73049
|
|
89
|
+
lemming/web/screenshots.spec.js,sha256=bSUJFOt4x9lD-2g-5ZwqM0Tgu2hnGi85aIHz31hniwE,9881
|
|
90
|
+
lemming_cli-0.1.0.dist-info/METADATA,sha256=jfWQYV1BwW-L43B6e12QC8QOxZ9UvqA_BGISavAGvlQ,11363
|
|
91
|
+
lemming_cli-0.1.0.dist-info/WHEEL,sha256=lCkmxWfQsSc9CfIClYeavTdQeEX2toPqufh9gI35EQA,87
|
|
92
|
+
lemming_cli-0.1.0.dist-info/entry_points.txt,sha256=_sap_0UXhFI1pbQQC2sNBgPWhgWSDy4EnOcBYZOL_T8,45
|
|
93
|
+
lemming_cli-0.1.0.dist-info/licenses/LICENSE,sha256=ESYyLizI0WWtxMeS7rGVcX3ivMezm-HOd5WdeOh-9oU,1056
|
|
94
|
+
lemming_cli-0.1.0.dist-info/RECORD,,
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026
|
|
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.
|