devloop 0.3.2__tar.gz → 0.3.3__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.
Files changed (75) hide show
  1. {devloop-0.3.2 → devloop-0.3.3}/PKG-INFO +1 -1
  2. {devloop-0.3.2 → devloop-0.3.3}/pyproject.toml +1 -1
  3. {devloop-0.3.2 → devloop-0.3.3}/src/devloop/cli/templates/claude_commands/agent-summary.md +1 -1
  4. {devloop-0.3.2 → devloop-0.3.3}/src/devloop/cli/templates/git_hooks/pre-commit +12 -10
  5. devloop-0.3.3/src/devloop/cli/templates/git_hooks/pre-push +114 -0
  6. {devloop-0.3.2 → devloop-0.3.3}/LICENSE +0 -0
  7. {devloop-0.3.2 → devloop-0.3.3}/README.md +0 -0
  8. {devloop-0.3.2 → devloop-0.3.3}/src/devloop/__init__.py +0 -0
  9. {devloop-0.3.2 → devloop-0.3.3}/src/devloop/agents/__init__.py +0 -0
  10. {devloop-0.3.2 → devloop-0.3.3}/src/devloop/agents/agent_health_monitor.py +0 -0
  11. {devloop-0.3.2 → devloop-0.3.3}/src/devloop/agents/ci_monitor.py +0 -0
  12. {devloop-0.3.2 → devloop-0.3.3}/src/devloop/agents/code_rabbit.py +0 -0
  13. {devloop-0.3.2 → devloop-0.3.3}/src/devloop/agents/doc_lifecycle.py +0 -0
  14. {devloop-0.3.2 → devloop-0.3.3}/src/devloop/agents/echo.py +0 -0
  15. {devloop-0.3.2 → devloop-0.3.3}/src/devloop/agents/file_logger.py +0 -0
  16. {devloop-0.3.2 → devloop-0.3.3}/src/devloop/agents/formatter.py +0 -0
  17. {devloop-0.3.2 → devloop-0.3.3}/src/devloop/agents/git_commit_assistant.py +0 -0
  18. {devloop-0.3.2 → devloop-0.3.3}/src/devloop/agents/linter.py +0 -0
  19. {devloop-0.3.2 → devloop-0.3.3}/src/devloop/agents/performance_profiler.py +0 -0
  20. {devloop-0.3.2 → devloop-0.3.3}/src/devloop/agents/sandbox_helper.py +0 -0
  21. {devloop-0.3.2 → devloop-0.3.3}/src/devloop/agents/security_scanner.py +0 -0
  22. {devloop-0.3.2 → devloop-0.3.3}/src/devloop/agents/snyk.py +0 -0
  23. {devloop-0.3.2 → devloop-0.3.3}/src/devloop/agents/test_runner.py +0 -0
  24. {devloop-0.3.2 → devloop-0.3.3}/src/devloop/agents/type_checker.py +0 -0
  25. {devloop-0.3.2 → devloop-0.3.3}/src/devloop/cli/__init__.py +0 -0
  26. {devloop-0.3.2 → devloop-0.3.3}/src/devloop/cli/commands/__init__.py +0 -0
  27. {devloop-0.3.2 → devloop-0.3.3}/src/devloop/cli/commands/custom_agents.py +0 -0
  28. {devloop-0.3.2 → devloop-0.3.3}/src/devloop/cli/commands/feedback.py +0 -0
  29. {devloop-0.3.2 → devloop-0.3.3}/src/devloop/cli/commands/summary.py +0 -0
  30. {devloop-0.3.2 → devloop-0.3.3}/src/devloop/cli/main.py +0 -0
  31. {devloop-0.3.2 → devloop-0.3.3}/src/devloop/cli/main_v1.py +0 -0
  32. {devloop-0.3.2 → devloop-0.3.3}/src/devloop/cli/pyodide_installer.py +0 -0
  33. {devloop-0.3.2 → devloop-0.3.3}/src/devloop/cli/templates/claude_commands/README.md +0 -0
  34. {devloop-0.3.2 → devloop-0.3.3}/src/devloop/cli/templates/claude_commands/devloop-findings.md +0 -0
  35. {devloop-0.3.2 → devloop-0.3.3}/src/devloop/cli/templates/claude_commands/devloop-status.md +0 -0
  36. {devloop-0.3.2 → devloop-0.3.3}/src/devloop/cli/templates/git_hooks/pre-commit-checks +0 -0
  37. {devloop-0.3.2 → devloop-0.3.3}/src/devloop/collectors/__init__.py +0 -0
  38. {devloop-0.3.2 → devloop-0.3.3}/src/devloop/collectors/base.py +0 -0
  39. {devloop-0.3.2 → devloop-0.3.3}/src/devloop/collectors/filesystem.py +0 -0
  40. {devloop-0.3.2 → devloop-0.3.3}/src/devloop/collectors/git.py +0 -0
  41. {devloop-0.3.2 → devloop-0.3.3}/src/devloop/collectors/manager.py +0 -0
  42. {devloop-0.3.2 → devloop-0.3.3}/src/devloop/collectors/process.py +0 -0
  43. {devloop-0.3.2 → devloop-0.3.3}/src/devloop/collectors/system.py +0 -0
  44. {devloop-0.3.2 → devloop-0.3.3}/src/devloop/core/__init__.py +0 -0
  45. {devloop-0.3.2 → devloop-0.3.3}/src/devloop/core/agent.py +0 -0
  46. {devloop-0.3.2 → devloop-0.3.3}/src/devloop/core/agent_template.py +0 -0
  47. {devloop-0.3.2 → devloop-0.3.3}/src/devloop/core/amp_integration.py +0 -0
  48. {devloop-0.3.2 → devloop-0.3.3}/src/devloop/core/auto_fix.py +0 -0
  49. {devloop-0.3.2 → devloop-0.3.3}/src/devloop/core/backup_manager.py +0 -0
  50. {devloop-0.3.2 → devloop-0.3.3}/src/devloop/core/config.py +0 -0
  51. {devloop-0.3.2 → devloop-0.3.3}/src/devloop/core/context.py +0 -0
  52. {devloop-0.3.2 → devloop-0.3.3}/src/devloop/core/context_store.py +0 -0
  53. {devloop-0.3.2 → devloop-0.3.3}/src/devloop/core/contextual_feedback.py +0 -0
  54. {devloop-0.3.2 → devloop-0.3.3}/src/devloop/core/custom_agent.py +0 -0
  55. {devloop-0.3.2 → devloop-0.3.3}/src/devloop/core/debug_trace.py +0 -0
  56. {devloop-0.3.2 → devloop-0.3.3}/src/devloop/core/event.py +0 -0
  57. {devloop-0.3.2 → devloop-0.3.3}/src/devloop/core/event_store.py +0 -0
  58. {devloop-0.3.2 → devloop-0.3.3}/src/devloop/core/feedback.py +0 -0
  59. {devloop-0.3.2 → devloop-0.3.3}/src/devloop/core/learning.py +0 -0
  60. {devloop-0.3.2 → devloop-0.3.3}/src/devloop/core/manager.py +0 -0
  61. {devloop-0.3.2 → devloop-0.3.3}/src/devloop/core/operational_health.py +0 -0
  62. {devloop-0.3.2 → devloop-0.3.3}/src/devloop/core/performance.py +0 -0
  63. {devloop-0.3.2 → devloop-0.3.3}/src/devloop/core/proactive_feedback.py +0 -0
  64. {devloop-0.3.2 → devloop-0.3.3}/src/devloop/core/summary_formatter.py +0 -0
  65. {devloop-0.3.2 → devloop-0.3.3}/src/devloop/core/summary_generator.py +0 -0
  66. {devloop-0.3.2 → devloop-0.3.3}/src/devloop/security/__init__.py +0 -0
  67. {devloop-0.3.2 → devloop-0.3.3}/src/devloop/security/audit_logger.py +0 -0
  68. {devloop-0.3.2 → devloop-0.3.3}/src/devloop/security/bubblewrap_sandbox.py +0 -0
  69. {devloop-0.3.2 → devloop-0.3.3}/src/devloop/security/cgroups_helper.py +0 -0
  70. {devloop-0.3.2 → devloop-0.3.3}/src/devloop/security/factory.py +0 -0
  71. {devloop-0.3.2 → devloop-0.3.3}/src/devloop/security/no_sandbox.py +0 -0
  72. {devloop-0.3.2 → devloop-0.3.3}/src/devloop/security/package.json +0 -0
  73. {devloop-0.3.2 → devloop-0.3.3}/src/devloop/security/pyodide_runner.js +0 -0
  74. {devloop-0.3.2 → devloop-0.3.3}/src/devloop/security/pyodide_sandbox.py +0 -0
  75. {devloop-0.3.2 → devloop-0.3.3}/src/devloop/security/sandbox.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: devloop
3
- Version: 0.3.2
3
+ Version: 0.3.3
4
4
  Summary: Intelligent background agents for development workflow automation
5
5
  License: MIT
6
6
  License-File: LICENSE
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "devloop"
3
- version = "0.3.2"
3
+ version = "0.3.3"
4
4
  description = "Intelligent background agents for development workflow automation"
5
5
  authors = ["DevLoop Contributors <devloop@example.com>"]
6
6
  license = "MIT"
@@ -4,7 +4,7 @@ description: Show intelligent summary of recent dev-agent findings
4
4
 
5
5
  Generate a summary of recent devloop agent findings by running:
6
6
  ```bash
7
- poetry run devloop summary agent-summary recent
7
+ devloop summary agent-summary recent
8
8
  ```
9
9
 
10
10
  The summary should include:
@@ -9,16 +9,18 @@
9
9
  # 4. Any existing pre-commit.old hook
10
10
  #
11
11
 
12
- # Check if pyproject.toml changed but poetry.lock didn't
13
- if git diff --cached --name-only | grep -q "pyproject.toml"; then
14
- if ! git diff --cached --name-only | grep -q "poetry.lock"; then
15
- echo "ERROR: pyproject.toml changed but poetry.lock not updated"
16
- echo "This will cause CI failure: 'poetry.lock was last generated' error"
17
- echo ""
18
- echo "Fix: Run 'poetry lock' and stage both files"
19
- echo " poetry lock"
20
- echo " git add poetry.lock"
21
- exit 1
12
+ # Check if pyproject.toml changed but poetry.lock didn't (only in Poetry projects)
13
+ if [ -f "poetry.lock" ]; then
14
+ if git diff --cached --name-only | grep -q "pyproject.toml"; then
15
+ if ! git diff --cached --name-only | grep -q "poetry.lock"; then
16
+ echo "ERROR: pyproject.toml changed but poetry.lock not updated"
17
+ echo "This will cause CI failure: 'poetry.lock was last generated' error"
18
+ echo ""
19
+ echo "Fix: Run 'poetry lock' and stage both files"
20
+ echo " poetry lock"
21
+ echo " git add poetry.lock"
22
+ exit 1
23
+ fi
22
24
  fi
23
25
  fi
24
26
 
@@ -0,0 +1,114 @@
1
+ #!/bin/bash
2
+ # Pre-push hook: Verify CI passes before pushing to remote
3
+ # Prevents pushing code that fails local checks
4
+
5
+ set -e
6
+
7
+ # Colors for output
8
+ RED='\033[0;31m'
9
+ GREEN='\033[0;32m'
10
+ YELLOW='\033[1;33m'
11
+ NC='\033[0m' # No Color
12
+
13
+ echo -e "${YELLOW}[CI Check] Running pre-push verification...${NC}"
14
+
15
+ # Check if gh CLI is available
16
+ if ! command -v gh &> /dev/null; then
17
+ echo -e "${YELLOW}[CI Check] gh CLI not found, skipping remote CI check${NC}"
18
+ echo -e "${YELLOW}[CI Check] Install GitHub CLI to enable CI verification: https://cli.github.com${NC}"
19
+ exit 0
20
+ fi
21
+
22
+ # Check if jq is available
23
+ if ! command -v jq &> /dev/null; then
24
+ echo -e "${YELLOW}[CI Check] jq not found, skipping remote CI check${NC}"
25
+ echo -e "${YELLOW}[CI Check] Install jq to enable CI verification: https://jqlang.github.io/jq/download/${NC}"
26
+ exit 0
27
+ fi
28
+
29
+ # Get the branch being pushed
30
+ BRANCH=$(git rev-parse --abbrev-ref HEAD)
31
+
32
+ echo -e "${YELLOW}[CI Check] Checking CI status for branch: $BRANCH${NC}"
33
+
34
+ # Check recent CI runs on this branch (get last completed run)
35
+ LAST_RUN=$(gh run list --branch "$BRANCH" --limit 1 --json status,conclusion --jq '.[0]' 2>/dev/null || echo "")
36
+
37
+ if [ -z "$LAST_RUN" ]; then
38
+ echo -e "${YELLOW}[CI Check] No previous CI runs found${NC}"
39
+ exit 0
40
+ fi
41
+
42
+ STATUS=$(echo "$LAST_RUN" | jq -r '.status' 2>/dev/null || echo "")
43
+ CONCLUSION=$(echo "$LAST_RUN" | jq -r '.conclusion' 2>/dev/null || echo "")
44
+
45
+ # If run is in progress, wait for completion (up to 2 minutes)
46
+ if [ "$STATUS" != "completed" ]; then
47
+ echo -e "${YELLOW}[CI Check] Previous CI run in progress, waiting for completion...${NC}"
48
+
49
+ WAIT_TIME=0
50
+ MAX_WAIT=120 # 2 minutes
51
+ POLL_INTERVAL=5
52
+
53
+ while [ $WAIT_TIME -lt $MAX_WAIT ]; do
54
+ sleep $POLL_INTERVAL
55
+ WAIT_TIME=$((WAIT_TIME + POLL_INTERVAL))
56
+
57
+ LAST_RUN=$(gh run list --branch "$BRANCH" --limit 1 --json status,conclusion --jq '.[0]' 2>/dev/null || echo "")
58
+ STATUS=$(echo "$LAST_RUN" | jq -r '.status' 2>/dev/null || echo "")
59
+ CONCLUSION=$(echo "$LAST_RUN" | jq -r '.conclusion' 2>/dev/null || echo "")
60
+
61
+ if [ "$STATUS" = "completed" ]; then
62
+ echo -e "${YELLOW}[CI Check] CI completed with status: $CONCLUSION${NC}"
63
+ break
64
+ fi
65
+
66
+ echo -e "${YELLOW}[CI Check] Still waiting... ($WAIT_TIME/$MAX_WAIT seconds)${NC}"
67
+ done
68
+
69
+ # If still not completed, inform user
70
+ if [ "$STATUS" != "completed" ]; then
71
+ echo -e "${YELLOW}[CI Check] CI still running after 2 minutes${NC}"
72
+ echo -e "${YELLOW}[CI Check] You can push and monitor at: https://github.com/$(git config --get remote.origin.url | sed 's/.*github.com[:/]\(.*\)\.git/\1/')/actions${NC}"
73
+ exit 0
74
+ fi
75
+ fi
76
+
77
+ # Check conclusion
78
+ if [ "$CONCLUSION" = "failure" ] || [ "$CONCLUSION" = "timed_out" ] || [ "$CONCLUSION" = "cancelled" ]; then
79
+ echo -e "${RED}[CI Check] ❌ Last CI run failed with status: $CONCLUSION${NC}"
80
+ echo -e "${RED}[CI Check] View the failed run: gh run list --branch $BRANCH${NC}"
81
+ echo -e "${RED}[CI Check] Please fix CI issues before pushing${NC}"
82
+ exit 1
83
+ fi
84
+
85
+ if [ "$CONCLUSION" = "success" ]; then
86
+ echo -e "${GREEN}[CI Check] ✅ Latest CI run passed${NC}"
87
+
88
+ # After CI passes, extract DevLoop findings and create Beads issues
89
+ echo -e "${YELLOW}[Findings] Extracting DevLoop findings...${NC}"
90
+
91
+ # Find the extract-findings-to-beads script
92
+ SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
93
+ FINDINGS_SCRIPT="$SCRIPT_DIR/../../.agents/hooks/extract-findings-to-beads"
94
+
95
+ if [ -x "$FINDINGS_SCRIPT" ]; then
96
+ # Get current git commit hash to link findings
97
+ CURRENT_COMMIT=$(git rev-parse HEAD)
98
+
99
+ # Extract findings and create Beads issues
100
+ if "$FINDINGS_SCRIPT"; then
101
+ echo -e "${GREEN}[Findings] ✅ DevLoop findings processed${NC}"
102
+ else
103
+ echo -e "${YELLOW}[Findings] ⚠️ Could not process DevLoop findings (non-blocking)${NC}"
104
+ fi
105
+ else
106
+ echo -e "${YELLOW}[Findings] 📝 Extract-findings script not found (optional)${NC}"
107
+ fi
108
+
109
+ exit 0
110
+ fi
111
+
112
+ # For any other status, allow push
113
+ echo -e "${YELLOW}[CI Check] Unable to verify CI status (status: $CONCLUSION), allowing push${NC}"
114
+ exit 0
File without changes
File without changes
File without changes
File without changes