devloop 0.9.0__tar.gz → 0.10.1__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.
- {devloop-0.9.0 → devloop-0.10.1}/PKG-INFO +1 -1
- {devloop-0.9.0 → devloop-0.10.1}/pyproject.toml +1 -1
- {devloop-0.9.0 → devloop-0.10.1}/src/devloop/cli/agent_rules.py +1 -1
- {devloop-0.9.0 → devloop-0.10.1}/src/devloop/cli/commands/marketplace.py +42 -2
- {devloop-0.9.0 → devloop-0.10.1}/src/devloop/cli/commands/metrics.py +3 -3
- {devloop-0.9.0 → devloop-0.10.1}/src/devloop/cli/main.py +346 -198
- {devloop-0.9.0 → devloop-0.10.1}/src/devloop/cli/prerequisites.py +2 -2
- {devloop-0.9.0 → devloop-0.10.1}/src/devloop/collectors/filesystem.py +3 -1
- {devloop-0.9.0 → devloop-0.10.1}/src/devloop/collectors/manager.py +1 -1
- {devloop-0.9.0 → devloop-0.10.1}/src/devloop/collectors/process.py +1 -1
- {devloop-0.9.0 → devloop-0.10.1}/src/devloop/collectors/system.py +1 -1
- {devloop-0.9.0 → devloop-0.10.1}/src/devloop/lsp/mapper.py +1 -1
- {devloop-0.9.0 → devloop-0.10.1}/src/devloop/lsp/server.py +3 -3
- {devloop-0.9.0 → devloop-0.10.1}/src/devloop/marketplace/api.py +4 -2
- {devloop-0.9.0 → devloop-0.10.1}/src/devloop/marketplace/http_server.py +3 -3
- {devloop-0.9.0 → devloop-0.10.1}/src/devloop/marketplace/installer.py +1 -1
- {devloop-0.9.0 → devloop-0.10.1}/src/devloop/marketplace/metadata.py +1 -1
- {devloop-0.9.0 → devloop-0.10.1}/src/devloop/marketplace/publisher.py +1 -1
- {devloop-0.9.0 → devloop-0.10.1}/src/devloop/marketplace/registry.py +1 -1
- {devloop-0.9.0 → devloop-0.10.1}/src/devloop/marketplace/registry_client.py +5 -1
- {devloop-0.9.0 → devloop-0.10.1}/src/devloop/marketplace/signing.py +1 -1
- {devloop-0.9.0 → devloop-0.10.1}/src/devloop/mcp/resources.py +7 -7
- {devloop-0.9.0 → devloop-0.10.1}/src/devloop/providers/artifactory_registry.py +1 -1
- {devloop-0.9.0 → devloop-0.10.1}/src/devloop/providers/ci_provider.py +2 -2
- {devloop-0.9.0 → devloop-0.10.1}/src/devloop/providers/circleci_provider.py +1 -1
- {devloop-0.9.0 → devloop-0.10.1}/src/devloop/providers/jenkins_provider.py +1 -1
- {devloop-0.9.0 → devloop-0.10.1}/src/devloop/providers/pypi_registry.py +1 -1
- {devloop-0.9.0 → devloop-0.10.1}/src/devloop/providers/registry_provider.py +2 -2
- {devloop-0.9.0 → devloop-0.10.1}/src/devloop/release/release_manager.py +3 -4
- {devloop-0.9.0 → devloop-0.10.1}/src/devloop/security/pyodide_sandbox.py +1 -0
- {devloop-0.9.0 → devloop-0.10.1}/src/devloop/telemetry/telemetry_manager.py +1 -1
- {devloop-0.9.0 → devloop-0.10.1}/LICENSE +0 -0
- {devloop-0.9.0 → devloop-0.10.1}/README.md +0 -0
- {devloop-0.9.0 → devloop-0.10.1}/src/devloop/__init__.py +0 -0
- {devloop-0.9.0 → devloop-0.10.1}/src/devloop/agents/__init__.py +0 -0
- {devloop-0.9.0 → devloop-0.10.1}/src/devloop/agents/agent_health_monitor.py +0 -0
- {devloop-0.9.0 → devloop-0.10.1}/src/devloop/agents/ci_monitor.py +0 -0
- {devloop-0.9.0 → devloop-0.10.1}/src/devloop/agents/code_rabbit.py +0 -0
- {devloop-0.9.0 → devloop-0.10.1}/src/devloop/agents/doc_lifecycle.py +0 -0
- {devloop-0.9.0 → devloop-0.10.1}/src/devloop/agents/echo.py +0 -0
- {devloop-0.9.0 → devloop-0.10.1}/src/devloop/agents/file_logger.py +0 -0
- {devloop-0.9.0 → devloop-0.10.1}/src/devloop/agents/formatter.py +0 -0
- {devloop-0.9.0 → devloop-0.10.1}/src/devloop/agents/git_commit_assistant.py +0 -0
- {devloop-0.9.0 → devloop-0.10.1}/src/devloop/agents/linter.py +0 -0
- {devloop-0.9.0 → devloop-0.10.1}/src/devloop/agents/performance_profiler.py +0 -0
- {devloop-0.9.0 → devloop-0.10.1}/src/devloop/agents/sandbox_helper.py +0 -0
- {devloop-0.9.0 → devloop-0.10.1}/src/devloop/agents/security_scanner.py +0 -0
- {devloop-0.9.0 → devloop-0.10.1}/src/devloop/agents/snyk.py +0 -0
- {devloop-0.9.0 → devloop-0.10.1}/src/devloop/agents/test_runner.py +0 -0
- {devloop-0.9.0 → devloop-0.10.1}/src/devloop/agents/type_checker.py +0 -0
- {devloop-0.9.0 → devloop-0.10.1}/src/devloop/cli/__init__.py +0 -0
- {devloop-0.9.0 → devloop-0.10.1}/src/devloop/cli/coderabbit_installer.py +0 -0
- {devloop-0.9.0 → devloop-0.10.1}/src/devloop/cli/commands/__init__.py +0 -0
- {devloop-0.9.0 → devloop-0.10.1}/src/devloop/cli/commands/agent_publish.py +0 -0
- {devloop-0.9.0 → devloop-0.10.1}/src/devloop/cli/commands/audit.py +0 -0
- {devloop-0.9.0 → devloop-0.10.1}/src/devloop/cli/commands/custom_agents.py +0 -0
- {devloop-0.9.0 → devloop-0.10.1}/src/devloop/cli/commands/feedback.py +0 -0
- {devloop-0.9.0 → devloop-0.10.1}/src/devloop/cli/commands/insights.py +0 -0
- {devloop-0.9.0 → devloop-0.10.1}/src/devloop/cli/commands/marketplace_server.py +0 -0
- {devloop-0.9.0 → devloop-0.10.1}/src/devloop/cli/commands/mcp_server.py +0 -0
- {devloop-0.9.0 → devloop-0.10.1}/src/devloop/cli/commands/release.py +0 -0
- {devloop-0.9.0 → devloop-0.10.1}/src/devloop/cli/commands/summary.py +0 -0
- {devloop-0.9.0 → devloop-0.10.1}/src/devloop/cli/commands/telemetry.py +0 -0
- {devloop-0.9.0 → devloop-0.10.1}/src/devloop/cli/commands/tools.py +0 -0
- {devloop-0.9.0 → devloop-0.10.1}/src/devloop/cli/main_v1.py +0 -0
- {devloop-0.9.0 → devloop-0.10.1}/src/devloop/cli/pre_push_check.py +0 -0
- {devloop-0.9.0 → devloop-0.10.1}/src/devloop/cli/pyodide_installer.py +0 -0
- {devloop-0.9.0 → devloop-0.10.1}/src/devloop/cli/snyk_installer.py +0 -0
- {devloop-0.9.0 → devloop-0.10.1}/src/devloop/cli/templates/.devloop/tools-registry.json +0 -0
- {devloop-0.9.0 → devloop-0.10.1}/src/devloop/cli/templates/claude_commands/README.md +0 -0
- {devloop-0.9.0 → devloop-0.10.1}/src/devloop/cli/templates/claude_commands/agent-summary.md +0 -0
- {devloop-0.9.0 → devloop-0.10.1}/src/devloop/cli/templates/claude_commands/devloop-findings.md +0 -0
- {devloop-0.9.0 → devloop-0.10.1}/src/devloop/cli/templates/claude_commands/devloop-status.md +0 -0
- {devloop-0.9.0 → devloop-0.10.1}/src/devloop/cli/templates/claude_commands/extract-findings.md +0 -0
- {devloop-0.9.0 → devloop-0.10.1}/src/devloop/cli/templates/claude_commands/verify-work.md +0 -0
- {devloop-0.9.0 → devloop-0.10.1}/src/devloop/cli/templates/devloop_agents_template.md +0 -0
- {devloop-0.9.0 → devloop-0.10.1}/src/devloop/cli/templates/git_hooks/post-commit +0 -0
- {devloop-0.9.0 → devloop-0.10.1}/src/devloop/cli/templates/git_hooks/pre-commit +0 -0
- {devloop-0.9.0 → devloop-0.10.1}/src/devloop/cli/templates/git_hooks/pre-commit-checks +0 -0
- {devloop-0.9.0 → devloop-0.10.1}/src/devloop/cli/templates/git_hooks/pre-push +0 -0
- {devloop-0.9.0 → devloop-0.10.1}/src/devloop/cli/templates/supervisor/devloop.conf +0 -0
- {devloop-0.9.0 → devloop-0.10.1}/src/devloop/cli/templates/systemd/devloop.service +0 -0
- {devloop-0.9.0 → devloop-0.10.1}/src/devloop/collectors/__init__.py +0 -0
- {devloop-0.9.0 → devloop-0.10.1}/src/devloop/collectors/base.py +0 -0
- {devloop-0.9.0 → devloop-0.10.1}/src/devloop/collectors/git.py +0 -0
- {devloop-0.9.0 → devloop-0.10.1}/src/devloop/core/__init__.py +0 -0
- {devloop-0.9.0 → devloop-0.10.1}/src/devloop/core/action_logger.py +0 -0
- {devloop-0.9.0 → devloop-0.10.1}/src/devloop/core/agent.py +0 -0
- {devloop-0.9.0 → devloop-0.10.1}/src/devloop/core/agent_audit_logger.py +0 -0
- {devloop-0.9.0 → devloop-0.10.1}/src/devloop/core/agent_template.py +0 -0
- {devloop-0.9.0 → devloop-0.10.1}/src/devloop/core/amp_integration.py +0 -0
- {devloop-0.9.0 → devloop-0.10.1}/src/devloop/core/amp_thread_mapper.py +0 -0
- {devloop-0.9.0 → devloop-0.10.1}/src/devloop/core/auto_fix.py +0 -0
- {devloop-0.9.0 → devloop-0.10.1}/src/devloop/core/backup_manager.py +0 -0
- {devloop-0.9.0 → devloop-0.10.1}/src/devloop/core/claude_adapter.py +0 -0
- {devloop-0.9.0 → devloop-0.10.1}/src/devloop/core/config.py +0 -0
- {devloop-0.9.0 → devloop-0.10.1}/src/devloop/core/config_schema.py +0 -0
- {devloop-0.9.0 → devloop-0.10.1}/src/devloop/core/context.py +0 -0
- {devloop-0.9.0 → devloop-0.10.1}/src/devloop/core/context_store.py +0 -0
- {devloop-0.9.0 → devloop-0.10.1}/src/devloop/core/contextual_feedback.py +0 -0
- {devloop-0.9.0 → devloop-0.10.1}/src/devloop/core/custom_agent.py +0 -0
- {devloop-0.9.0 → devloop-0.10.1}/src/devloop/core/daemon_health.py +0 -0
- {devloop-0.9.0 → devloop-0.10.1}/src/devloop/core/debug_trace.py +0 -0
- {devloop-0.9.0 → devloop-0.10.1}/src/devloop/core/error_handler.py +0 -0
- {devloop-0.9.0 → devloop-0.10.1}/src/devloop/core/error_notifier.py +0 -0
- {devloop-0.9.0 → devloop-0.10.1}/src/devloop/core/event.py +0 -0
- {devloop-0.9.0 → devloop-0.10.1}/src/devloop/core/event_replayer.py +0 -0
- {devloop-0.9.0 → devloop-0.10.1}/src/devloop/core/event_store.py +0 -0
- {devloop-0.9.0 → devloop-0.10.1}/src/devloop/core/feedback.py +0 -0
- {devloop-0.9.0 → devloop-0.10.1}/src/devloop/core/file_lock_manager.py +0 -0
- {devloop-0.9.0 → devloop-0.10.1}/src/devloop/core/learning.py +0 -0
- {devloop-0.9.0 → devloop-0.10.1}/src/devloop/core/manager.py +0 -0
- {devloop-0.9.0 → devloop-0.10.1}/src/devloop/core/operational_health.py +0 -0
- {devloop-0.9.0 → devloop-0.10.1}/src/devloop/core/pattern_analyzer.py +0 -0
- {devloop-0.9.0 → devloop-0.10.1}/src/devloop/core/pattern_detector.py +0 -0
- {devloop-0.9.0 → devloop-0.10.1}/src/devloop/core/performance.py +0 -0
- {devloop-0.9.0 → devloop-0.10.1}/src/devloop/core/proactive_feedback.py +0 -0
- {devloop-0.9.0 → devloop-0.10.1}/src/devloop/core/project_context.py +0 -0
- {devloop-0.9.0 → devloop-0.10.1}/src/devloop/core/summary_formatter.py +0 -0
- {devloop-0.9.0 → devloop-0.10.1}/src/devloop/core/summary_generator.py +0 -0
- {devloop-0.9.0 → devloop-0.10.1}/src/devloop/core/telemetry.py +0 -0
- {devloop-0.9.0 → devloop-0.10.1}/src/devloop/core/tool_dependencies.py +0 -0
- {devloop-0.9.0 → devloop-0.10.1}/src/devloop/core/tool_registry.py +0 -0
- {devloop-0.9.0 → devloop-0.10.1}/src/devloop/core/tool_runner.py +0 -0
- {devloop-0.9.0 → devloop-0.10.1}/src/devloop/core/transactional_io.py +0 -0
- {devloop-0.9.0 → devloop-0.10.1}/src/devloop/integrations/__init__.py +0 -0
- {devloop-0.9.0 → devloop-0.10.1}/src/devloop/integrations/beads_integration.py +0 -0
- {devloop-0.9.0 → devloop-0.10.1}/src/devloop/lsp/__init__.py +0 -0
- {devloop-0.9.0 → devloop-0.10.1}/src/devloop/lsp/__main__.py +0 -0
- {devloop-0.9.0 → devloop-0.10.1}/src/devloop/marketplace/__init__.py +0 -0
- {devloop-0.9.0 → devloop-0.10.1}/src/devloop/marketplace/cache.py +0 -0
- {devloop-0.9.0 → devloop-0.10.1}/src/devloop/marketplace/reviews.py +0 -0
- {devloop-0.9.0 → devloop-0.10.1}/src/devloop/marketplace/search.py +0 -0
- {devloop-0.9.0 → devloop-0.10.1}/src/devloop/mcp/__init__.py +0 -0
- {devloop-0.9.0 → devloop-0.10.1}/src/devloop/mcp/server.py +0 -0
- {devloop-0.9.0 → devloop-0.10.1}/src/devloop/mcp/subscriptions.py +0 -0
- {devloop-0.9.0 → devloop-0.10.1}/src/devloop/mcp/tools.py +0 -0
- {devloop-0.9.0 → devloop-0.10.1}/src/devloop/metrics/__init__.py +0 -0
- {devloop-0.9.0 → devloop-0.10.1}/src/devloop/metrics/dora.py +0 -0
- {devloop-0.9.0 → devloop-0.10.1}/src/devloop/metrics/value_metrics.py +0 -0
- {devloop-0.9.0 → devloop-0.10.1}/src/devloop/providers/__init__.py +0 -0
- {devloop-0.9.0 → devloop-0.10.1}/src/devloop/providers/github_actions_provider.py +0 -0
- {devloop-0.9.0 → devloop-0.10.1}/src/devloop/providers/gitlab_ci_provider.py +0 -0
- {devloop-0.9.0 → devloop-0.10.1}/src/devloop/providers/provider_manager.py +0 -0
- {devloop-0.9.0 → devloop-0.10.1}/src/devloop/release/__init__.py +0 -0
- {devloop-0.9.0 → devloop-0.10.1}/src/devloop/security/__init__.py +0 -0
- {devloop-0.9.0 → devloop-0.10.1}/src/devloop/security/audit_logger.py +0 -0
- {devloop-0.9.0 → devloop-0.10.1}/src/devloop/security/bubblewrap_sandbox.py +0 -0
- {devloop-0.9.0 → devloop-0.10.1}/src/devloop/security/cgroups_helper.py +0 -0
- {devloop-0.9.0 → devloop-0.10.1}/src/devloop/security/factory.py +0 -0
- {devloop-0.9.0 → devloop-0.10.1}/src/devloop/security/no_sandbox.py +0 -0
- {devloop-0.9.0 → devloop-0.10.1}/src/devloop/security/package.json +0 -0
- {devloop-0.9.0 → devloop-0.10.1}/src/devloop/security/path_validator.py +0 -0
- {devloop-0.9.0 → devloop-0.10.1}/src/devloop/security/pyodide_runner.js +0 -0
- {devloop-0.9.0 → devloop-0.10.1}/src/devloop/security/sandbox.py +0 -0
- {devloop-0.9.0 → devloop-0.10.1}/src/devloop/security/token_manager.py +0 -0
- {devloop-0.9.0 → devloop-0.10.1}/src/devloop/telemetry/__init__.py +0 -0
|
@@ -198,7 +198,7 @@ def _parse_markdown_sections(content: str) -> List[Dict[str, str]]:
|
|
|
198
198
|
"""
|
|
199
199
|
sections = []
|
|
200
200
|
current_title = "Preamble"
|
|
201
|
-
current_content = []
|
|
201
|
+
current_content: list[str] = []
|
|
202
202
|
|
|
203
203
|
for line in content.split("\n"):
|
|
204
204
|
if line.startswith("## "):
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
import logging
|
|
4
4
|
from pathlib import Path
|
|
5
|
-
from typing import Optional
|
|
5
|
+
from typing import List, Optional
|
|
6
6
|
|
|
7
7
|
import typer
|
|
8
8
|
from rich.console import Console
|
|
@@ -34,7 +34,7 @@ def get_registry_client() -> RegistryClient:
|
|
|
34
34
|
registry = AgentRegistry(config)
|
|
35
35
|
|
|
36
36
|
# TODO: Load remote registry URLs from config
|
|
37
|
-
remote_urls = []
|
|
37
|
+
remote_urls: List[str] = []
|
|
38
38
|
|
|
39
39
|
return RegistryClient(registry, remote_urls)
|
|
40
40
|
|
|
@@ -378,6 +378,46 @@ def list_installed() -> None:
|
|
|
378
378
|
console.print(table)
|
|
379
379
|
|
|
380
380
|
|
|
381
|
+
@app.command()
|
|
382
|
+
def publish(
|
|
383
|
+
agent_dir: Path = typer.Argument(
|
|
384
|
+
..., help="Directory containing the agent package"
|
|
385
|
+
),
|
|
386
|
+
force: bool = typer.Option(False, "--force", help="Overwrite existing version"),
|
|
387
|
+
) -> None:
|
|
388
|
+
"""Publish an agent to the local marketplace registry."""
|
|
389
|
+
from devloop.marketplace.publisher import AgentPackage, AgentPublisher
|
|
390
|
+
|
|
391
|
+
if not agent_dir.exists():
|
|
392
|
+
console.print(f"[red]Directory not found: {agent_dir}[/red]")
|
|
393
|
+
raise typer.Exit(1)
|
|
394
|
+
|
|
395
|
+
# Validate first
|
|
396
|
+
try:
|
|
397
|
+
package = AgentPackage(agent_dir)
|
|
398
|
+
except ValueError as e:
|
|
399
|
+
console.print(f"[red]{e}[/red]")
|
|
400
|
+
raise typer.Exit(1)
|
|
401
|
+
|
|
402
|
+
is_valid, errors = package.validate()
|
|
403
|
+
if not is_valid:
|
|
404
|
+
console.print("[red]Package validation failed:[/red]")
|
|
405
|
+
for err in errors:
|
|
406
|
+
console.print(f" - {err}")
|
|
407
|
+
raise typer.Exit(1)
|
|
408
|
+
|
|
409
|
+
# Publish
|
|
410
|
+
client = get_registry_client()
|
|
411
|
+
publisher = AgentPublisher(client)
|
|
412
|
+
success, message = publisher.publish_agent(agent_dir, force=force)
|
|
413
|
+
|
|
414
|
+
if success:
|
|
415
|
+
console.print(f"[green]{message}[/green]")
|
|
416
|
+
else:
|
|
417
|
+
console.print(f"[red]{message}[/red]")
|
|
418
|
+
raise typer.Exit(1)
|
|
419
|
+
|
|
420
|
+
|
|
381
421
|
@app.command()
|
|
382
422
|
def review(
|
|
383
423
|
name: str = typer.Argument(..., help="Agent name to review"),
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
from datetime import datetime, timedelta, UTC
|
|
4
4
|
from pathlib import Path
|
|
5
|
-
from typing import Optional
|
|
5
|
+
from typing import Any, Optional
|
|
6
6
|
|
|
7
7
|
import typer
|
|
8
8
|
from rich.console import Console
|
|
@@ -102,7 +102,7 @@ def _filter_events_by_period(
|
|
|
102
102
|
return filtered
|
|
103
103
|
|
|
104
104
|
|
|
105
|
-
def _calculate_time_saved(events: list[dict]) -> dict[str,
|
|
105
|
+
def _calculate_time_saved(events: list[dict]) -> dict[str, Any]:
|
|
106
106
|
"""Calculate time saved from value events.
|
|
107
107
|
|
|
108
108
|
Args:
|
|
@@ -134,7 +134,7 @@ def _calculate_time_saved(events: list[dict]) -> dict[str, any]:
|
|
|
134
134
|
}
|
|
135
135
|
|
|
136
136
|
|
|
137
|
-
def _calculate_ci_metrics(events: list[dict]) -> dict[str,
|
|
137
|
+
def _calculate_ci_metrics(events: list[dict]) -> dict[str, Any]:
|
|
138
138
|
"""Calculate CI-related metrics.
|
|
139
139
|
|
|
140
140
|
Args:
|