steerdev 0.5.6__tar.gz → 0.5.7__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.
- {steerdev-0.5.6 → steerdev-0.5.7}/PKG-INFO +1 -1
- {steerdev-0.5.6 → steerdev-0.5.7}/pyproject.toml +1 -1
- {steerdev-0.5.6 → steerdev-0.5.7}/src/steerdev_agent/cli.py +17 -1
- steerdev-0.5.7/src/steerdev_agent/update_check.py +67 -0
- {steerdev-0.5.6 → steerdev-0.5.7}/.github/workflows/pre-commit.yml +0 -0
- {steerdev-0.5.6 → steerdev-0.5.7}/.github/workflows/publish.yml +0 -0
- {steerdev-0.5.6 → steerdev-0.5.7}/.gitignore +0 -0
- {steerdev-0.5.6 → steerdev-0.5.7}/.pre-commit-config.yaml +0 -0
- {steerdev-0.5.6 → steerdev-0.5.7}/AGENTS.md +0 -0
- {steerdev-0.5.6 → steerdev-0.5.7}/CLAUDE.md +0 -0
- {steerdev-0.5.6 → steerdev-0.5.7}/README.md +0 -0
- {steerdev-0.5.6 → steerdev-0.5.7}/scripts/pre-commit-version-bump.sh +0 -0
- {steerdev-0.5.6 → steerdev-0.5.7}/src/steerdev_agent/__init__.py +0 -0
- {steerdev-0.5.6 → steerdev-0.5.7}/src/steerdev_agent/api/__init__.py +0 -0
- {steerdev-0.5.6 → steerdev-0.5.7}/src/steerdev_agent/api/activity.py +0 -0
- {steerdev-0.5.6 → steerdev-0.5.7}/src/steerdev_agent/api/agents.py +0 -0
- {steerdev-0.5.6 → steerdev-0.5.7}/src/steerdev_agent/api/client.py +0 -0
- {steerdev-0.5.6 → steerdev-0.5.7}/src/steerdev_agent/api/commands.py +0 -0
- {steerdev-0.5.6 → steerdev-0.5.7}/src/steerdev_agent/api/configs.py +0 -0
- {steerdev-0.5.6 → steerdev-0.5.7}/src/steerdev_agent/api/context.py +0 -0
- {steerdev-0.5.6 → steerdev-0.5.7}/src/steerdev_agent/api/events.py +0 -0
- {steerdev-0.5.6 → steerdev-0.5.7}/src/steerdev_agent/api/hooks.py +0 -0
- {steerdev-0.5.6 → steerdev-0.5.7}/src/steerdev_agent/api/implementation_plan.py +0 -0
- {steerdev-0.5.6 → steerdev-0.5.7}/src/steerdev_agent/api/messages.py +0 -0
- {steerdev-0.5.6 → steerdev-0.5.7}/src/steerdev_agent/api/prd.py +0 -0
- {steerdev-0.5.6 → steerdev-0.5.7}/src/steerdev_agent/api/runs.py +0 -0
- {steerdev-0.5.6 → steerdev-0.5.7}/src/steerdev_agent/api/sessions.py +0 -0
- {steerdev-0.5.6 → steerdev-0.5.7}/src/steerdev_agent/api/specs.py +0 -0
- {steerdev-0.5.6 → steerdev-0.5.7}/src/steerdev_agent/api/tasks.py +0 -0
- {steerdev-0.5.6 → steerdev-0.5.7}/src/steerdev_agent/api/workflow_runs.py +0 -0
- {steerdev-0.5.6 → steerdev-0.5.7}/src/steerdev_agent/api/workflows.py +0 -0
- {steerdev-0.5.6 → steerdev-0.5.7}/src/steerdev_agent/config/__init__.py +0 -0
- {steerdev-0.5.6 → steerdev-0.5.7}/src/steerdev_agent/config/models.py +0 -0
- {steerdev-0.5.6 → steerdev-0.5.7}/src/steerdev_agent/config/platform.py +0 -0
- {steerdev-0.5.6 → steerdev-0.5.7}/src/steerdev_agent/config/settings.py +0 -0
- {steerdev-0.5.6 → steerdev-0.5.7}/src/steerdev_agent/daemon.py +0 -0
- {steerdev-0.5.6 → steerdev-0.5.7}/src/steerdev_agent/executor/__init__.py +0 -0
- {steerdev-0.5.6 → steerdev-0.5.7}/src/steerdev_agent/executor/base.py +0 -0
- {steerdev-0.5.6 → steerdev-0.5.7}/src/steerdev_agent/executor/claude.py +0 -0
- {steerdev-0.5.6 → steerdev-0.5.7}/src/steerdev_agent/executor/stream.py +0 -0
- {steerdev-0.5.6 → steerdev-0.5.7}/src/steerdev_agent/handlers/__init__.py +0 -0
- {steerdev-0.5.6 → steerdev-0.5.7}/src/steerdev_agent/handlers/prd.py +0 -0
- {steerdev-0.5.6 → steerdev-0.5.7}/src/steerdev_agent/integration.py +0 -0
- {steerdev-0.5.6 → steerdev-0.5.7}/src/steerdev_agent/prompt/__init__.py +0 -0
- {steerdev-0.5.6 → steerdev-0.5.7}/src/steerdev_agent/prompt/builder.py +0 -0
- {steerdev-0.5.6 → steerdev-0.5.7}/src/steerdev_agent/prompt/templates.py +0 -0
- {steerdev-0.5.6 → steerdev-0.5.7}/src/steerdev_agent/py.typed +0 -0
- {steerdev-0.5.6 → steerdev-0.5.7}/src/steerdev_agent/runner.py +0 -0
- {steerdev-0.5.6 → steerdev-0.5.7}/src/steerdev_agent/setup/__init__.py +0 -0
- {steerdev-0.5.6 → steerdev-0.5.7}/src/steerdev_agent/setup/claude_setup.py +0 -0
- {steerdev-0.5.6 → steerdev-0.5.7}/src/steerdev_agent/setup/templates/claude_md_section.md +0 -0
- {steerdev-0.5.6 → steerdev-0.5.7}/src/steerdev_agent/setup/templates/settings.json +0 -0
- {steerdev-0.5.6 → steerdev-0.5.7}/src/steerdev_agent/setup/templates/skills/activity/SKILL.md +0 -0
- {steerdev-0.5.6 → steerdev-0.5.7}/src/steerdev_agent/setup/templates/skills/context/SKILL.md +0 -0
- {steerdev-0.5.6 → steerdev-0.5.7}/src/steerdev_agent/setup/templates/skills/git-workflow/SKILL.md +0 -0
- {steerdev-0.5.6 → steerdev-0.5.7}/src/steerdev_agent/setup/templates/skills/progress-logging/SKILL.md +0 -0
- {steerdev-0.5.6 → steerdev-0.5.7}/src/steerdev_agent/setup/templates/skills/specs-management/SKILL.md +0 -0
- {steerdev-0.5.6 → steerdev-0.5.7}/src/steerdev_agent/setup/templates/skills/task-management/SKILL.md +0 -0
- {steerdev-0.5.6 → steerdev-0.5.7}/src/steerdev_agent/setup/templates/steerdev.yaml +0 -0
- {steerdev-0.5.6 → steerdev-0.5.7}/src/steerdev_agent/version.py +0 -0
- {steerdev-0.5.6 → steerdev-0.5.7}/src/steerdev_agent/workflow/__init__.py +0 -0
- {steerdev-0.5.6 → steerdev-0.5.7}/src/steerdev_agent/workflow/executor.py +0 -0
- {steerdev-0.5.6 → steerdev-0.5.7}/src/steerdev_agent/workflow/memory.py +0 -0
- {steerdev-0.5.6 → steerdev-0.5.7}/tests/__init__.py +0 -0
- {steerdev-0.5.6 → steerdev-0.5.7}/tests/test_config.py +0 -0
- {steerdev-0.5.6 → steerdev-0.5.7}/tests/test_executor.py +0 -0
- {steerdev-0.5.6 → steerdev-0.5.7}/tests/test_prompt.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: steerdev
|
|
3
|
-
Version: 0.5.
|
|
3
|
+
Version: 0.5.7
|
|
4
4
|
Summary: Backend task runner for steerdev.com - orchestrates CLI coding agents with activity reporting
|
|
5
5
|
Project-URL: Homepage, https://github.com/pentoai/steerdev-agent
|
|
6
6
|
Project-URL: Repository, https://github.com/pentoai/steerdev-agent
|
|
@@ -12,6 +12,7 @@ from rich.console import Console
|
|
|
12
12
|
from rich.panel import Panel
|
|
13
13
|
|
|
14
14
|
from steerdev_agent.config.models import SteerDevConfig
|
|
15
|
+
from steerdev_agent.update_check import check_for_update
|
|
15
16
|
from steerdev_agent.version import get_version
|
|
16
17
|
|
|
17
18
|
console = Console()
|
|
@@ -1313,10 +1314,22 @@ def git_status() -> None:
|
|
|
1313
1314
|
raise typer.Exit(1) from None
|
|
1314
1315
|
|
|
1315
1316
|
|
|
1317
|
+
def _print_update_notice(current: str) -> None:
|
|
1318
|
+
"""Print an update notice if a newer version is available."""
|
|
1319
|
+
latest = check_for_update(current)
|
|
1320
|
+
if latest:
|
|
1321
|
+
console.print(
|
|
1322
|
+
f"\n[yellow]Update available: {current} → {latest}[/yellow]\n"
|
|
1323
|
+
f"Run [bold]uv tool install steerdev[/bold] to upgrade\n"
|
|
1324
|
+
)
|
|
1325
|
+
|
|
1326
|
+
|
|
1316
1327
|
def version_callback(value: bool) -> None:
|
|
1317
1328
|
"""Print version and exit."""
|
|
1318
1329
|
if value:
|
|
1319
|
-
|
|
1330
|
+
current = get_version()
|
|
1331
|
+
console.print(f"steerdev version {current}")
|
|
1332
|
+
_print_update_notice(current)
|
|
1320
1333
|
raise typer.Exit()
|
|
1321
1334
|
|
|
1322
1335
|
|
|
@@ -1354,6 +1367,9 @@ def main(
|
|
|
1354
1367
|
else:
|
|
1355
1368
|
ctx.obj = SteerDevConfig()
|
|
1356
1369
|
|
|
1370
|
+
# Check for updates (non-blocking, cached)
|
|
1371
|
+
_print_update_notice(get_version())
|
|
1372
|
+
|
|
1357
1373
|
|
|
1358
1374
|
@app.command()
|
|
1359
1375
|
def run(
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
"""Check for newer versions of steerdev on PyPI."""
|
|
2
|
+
|
|
3
|
+
import json
|
|
4
|
+
import time
|
|
5
|
+
from pathlib import Path
|
|
6
|
+
|
|
7
|
+
import httpx
|
|
8
|
+
|
|
9
|
+
PYPI_URL = "https://pypi.org/pypi/steerdev/json"
|
|
10
|
+
CACHE_FILE = Path.home() / ".cache" / "steerdev" / "update_check.json"
|
|
11
|
+
CHECK_INTERVAL = 3600 # 1 hour between checks
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
def _parse_version(v: str) -> tuple[int, ...]:
|
|
15
|
+
"""Parse a version string into a tuple of ints for comparison."""
|
|
16
|
+
try:
|
|
17
|
+
return tuple(int(x) for x in v.split("."))
|
|
18
|
+
except (ValueError, AttributeError):
|
|
19
|
+
return (0,)
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
def _read_cache() -> dict | None:
|
|
23
|
+
"""Read cached update check result."""
|
|
24
|
+
try:
|
|
25
|
+
if CACHE_FILE.exists():
|
|
26
|
+
data = json.loads(CACHE_FILE.read_text())
|
|
27
|
+
if time.time() - data.get("checked_at", 0) < CHECK_INTERVAL:
|
|
28
|
+
return data
|
|
29
|
+
except (json.JSONDecodeError, OSError):
|
|
30
|
+
pass
|
|
31
|
+
return None
|
|
32
|
+
|
|
33
|
+
|
|
34
|
+
def _write_cache(latest: str) -> None:
|
|
35
|
+
"""Write update check result to cache."""
|
|
36
|
+
try:
|
|
37
|
+
CACHE_FILE.parent.mkdir(parents=True, exist_ok=True)
|
|
38
|
+
CACHE_FILE.write_text(json.dumps({"latest": latest, "checked_at": time.time()}))
|
|
39
|
+
except OSError:
|
|
40
|
+
pass
|
|
41
|
+
|
|
42
|
+
|
|
43
|
+
def get_latest_version() -> str | None:
|
|
44
|
+
"""Fetch the latest version from PyPI. Returns None on failure."""
|
|
45
|
+
cached = _read_cache()
|
|
46
|
+
if cached:
|
|
47
|
+
return cached["latest"]
|
|
48
|
+
|
|
49
|
+
try:
|
|
50
|
+
resp = httpx.get(PYPI_URL, timeout=3)
|
|
51
|
+
resp.raise_for_status()
|
|
52
|
+
latest = resp.json()["info"]["version"]
|
|
53
|
+
_write_cache(latest)
|
|
54
|
+
return latest
|
|
55
|
+
except Exception:
|
|
56
|
+
return None
|
|
57
|
+
|
|
58
|
+
|
|
59
|
+
def check_for_update(current: str) -> str | None:
|
|
60
|
+
"""Check if a newer version is available.
|
|
61
|
+
|
|
62
|
+
Returns the latest version string if an update is available, None otherwise.
|
|
63
|
+
"""
|
|
64
|
+
latest = get_latest_version()
|
|
65
|
+
if latest and _parse_version(latest) > _parse_version(current):
|
|
66
|
+
return latest
|
|
67
|
+
return None
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{steerdev-0.5.6 → steerdev-0.5.7}/src/steerdev_agent/setup/templates/skills/activity/SKILL.md
RENAMED
|
File without changes
|
{steerdev-0.5.6 → steerdev-0.5.7}/src/steerdev_agent/setup/templates/skills/context/SKILL.md
RENAMED
|
File without changes
|
{steerdev-0.5.6 → steerdev-0.5.7}/src/steerdev_agent/setup/templates/skills/git-workflow/SKILL.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{steerdev-0.5.6 → steerdev-0.5.7}/src/steerdev_agent/setup/templates/skills/task-management/SKILL.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|