forked from cleveragents/cleveragents-core
feat: v3 simulation action configs and improved multi-file extraction
Add 5 action YAML configs for v3 simulation stress tests (todo-cli, bookstore-api, websocket-chat, hn-scraper, flask-auth). Update multi-file markdown extraction regex to also match bold-only headers (**filename.py**) without requiring # prefix.
This commit is contained in:
@@ -0,0 +1,11 @@
|
||||
name: local/todo-cli
|
||||
description: >
|
||||
Build a command-line TODO application in Python with add, list, complete,
|
||||
and delete commands. Store tasks in a JSON file. Include a Task dataclass
|
||||
with id, title, completed, and created_at fields.
|
||||
strategy_actor: anthropic/claude-sonnet-4-20250514
|
||||
execution_actor: anthropic/claude-sonnet-4-20250514
|
||||
definition_of_done: >
|
||||
A todo.py file exists with CLI commands for add, list, complete, and delete.
|
||||
Tasks are persisted in a tasks.json file. A Task dataclass has id, title,
|
||||
completed, and created_at fields.
|
||||
@@ -0,0 +1,13 @@
|
||||
name: local/bookstore-api
|
||||
description: >
|
||||
Build a REST API for a bookstore using FastAPI. Include endpoints for
|
||||
CRUD operations on books (GET /books, GET /books/{id}, POST /books,
|
||||
PUT /books/{id}, DELETE /books/{id}). Use Pydantic models for Book
|
||||
with fields: id, title, author, price, isbn. Store books in memory.
|
||||
Include requirements.txt.
|
||||
strategy_actor: anthropic/claude-sonnet-4-20250514
|
||||
execution_actor: anthropic/claude-sonnet-4-20250514
|
||||
definition_of_done: >
|
||||
A main.py with FastAPI app has all CRUD endpoints for books.
|
||||
A Book Pydantic model has id, title, author, price, isbn fields.
|
||||
A requirements.txt lists dependencies.
|
||||
@@ -0,0 +1,12 @@
|
||||
name: local/websocket-chat
|
||||
description: >
|
||||
Build a WebSocket chat server in Python using the websockets library.
|
||||
Support multiple connected clients, broadcast messages to all clients,
|
||||
handle connect/disconnect events, and include a simple HTML client page.
|
||||
Include requirements.txt.
|
||||
strategy_actor: anthropic/claude-sonnet-4-20250514
|
||||
execution_actor: anthropic/claude-sonnet-4-20250514
|
||||
definition_of_done: >
|
||||
A server.py implements a WebSocket chat server with broadcast support.
|
||||
An index.html provides a browser-based chat client.
|
||||
A requirements.txt lists dependencies.
|
||||
@@ -0,0 +1,12 @@
|
||||
name: local/hn-scraper
|
||||
description: >
|
||||
Build a Hacker News scraper in Python using requests and BeautifulSoup.
|
||||
Scrape the front page for top stories including title, URL, points, and
|
||||
comment count. Output results as JSON. Include a Story dataclass and
|
||||
requirements.txt.
|
||||
strategy_actor: anthropic/claude-sonnet-4-20250514
|
||||
execution_actor: anthropic/claude-sonnet-4-20250514
|
||||
definition_of_done: >
|
||||
A scraper.py fetches and parses Hacker News front page stories.
|
||||
A Story dataclass has title, url, points, and comments fields.
|
||||
Results are output as JSON. A requirements.txt lists dependencies.
|
||||
@@ -0,0 +1,12 @@
|
||||
name: local/flask-auth
|
||||
description: >
|
||||
Build a Flask web application with user authentication. Include register
|
||||
and login endpoints, password hashing with bcrypt, JWT token generation,
|
||||
and a protected endpoint that requires authentication. Use SQLite for
|
||||
user storage. Include requirements.txt.
|
||||
strategy_actor: anthropic/claude-sonnet-4-20250514
|
||||
execution_actor: anthropic/claude-sonnet-4-20250514
|
||||
definition_of_done: >
|
||||
An app.py has Flask routes for register, login, and a protected endpoint.
|
||||
Passwords are hashed with bcrypt. JWT tokens are used for auth.
|
||||
SQLite stores users. A requirements.txt lists dependencies.
|
||||
@@ -63,14 +63,12 @@ PATH_HINT_RE = re.compile(r"@(?P<path>[\w./-]+)")
|
||||
|
||||
# Regex for extracting files from markdown-formatted LLM output.
|
||||
# Supports many common header patterns:
|
||||
# ## filename.py
|
||||
# ## `filename.py`
|
||||
# ## 1. `filename.py`
|
||||
# ### path/to/file.py
|
||||
# ## **filename.py**
|
||||
# # filename.py
|
||||
# ## filename.py ## `filename.py`
|
||||
# ## 1. `filename.py` ### path/to/file.py
|
||||
# ## **filename.py** # filename.py
|
||||
# **filename.py** **`filename.py`**
|
||||
_FILE_HEADER_RE = re.compile(
|
||||
r"^#{1,3}\s+(?:\d+\.\s+)?[`*]*(?P<path>[^\s`*]+\.[a-zA-Z0-9]+)[`*]*\s*$",
|
||||
r"^(?:#{1,3}\s+(?:\d+\.\s+)?)?[`*]*(?P<path>[^\s`*]+\.[a-zA-Z0-9]+)[`*]*\s*$",
|
||||
re.MULTILINE,
|
||||
)
|
||||
_FENCED_BLOCK_RE = re.compile(
|
||||
|
||||
Reference in New Issue
Block a user