@pjmendonca/devflow 1.19.0 → 1.20.0
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.
- package/.claude/skills/dashboard/SKILL.md +118 -0
- package/CHANGELOG.md +21 -0
- package/README.md +2 -2
- package/bin/devflow-dashboard.js +10 -0
- package/bin/devflow-swarm.js +11 -0
- package/bin/devflow.js +2 -0
- package/package.json +3 -1
- package/tooling/.automation/memory/knowledge/kg_integration-test.json +85 -1
- package/tooling/.automation/memory/knowledge/kg_test-story.json +284 -2
- package/tooling/.automation/memory/shared/shared_integration-test.json +25 -1
- package/tooling/.automation/memory/shared/shared_test-story.json +73 -1
- package/tooling/.automation/memory/shared/shared_test.json +157 -1
- package/tooling/.automation/memory/shared/shared_validation-check.json +27 -1
- package/tooling/.automation/validation/history/2026-01-16_val_0b81ec2f.json +41 -0
- package/tooling/.automation/validation/history/2026-01-16_val_26c18e64.json +32 -0
- package/tooling/.automation/validation/history/2026-01-16_val_32af0152.json +32 -0
- package/tooling/.automation/validation/history/2026-01-16_val_353d1569.json +32 -0
- package/tooling/.automation/validation/history/2026-01-16_val_39e3c143.json +59 -0
- package/tooling/.automation/validation/history/2026-01-16_val_77fb42e4.json +32 -0
- package/tooling/.automation/validation/history/2026-01-16_val_a0752656.json +41 -0
- package/tooling/.automation/validation/history/2026-01-16_val_a29213b0.json +41 -0
- package/tooling/.automation/validation/history/2026-01-16_val_a9375d4c.json +32 -0
- package/tooling/.automation/validation/history/2026-01-16_val_c147bbdf.json +32 -0
- package/tooling/.automation/validation/history/2026-01-16_val_d06ccf8d.json +32 -0
- package/tooling/.automation/validation/history/2026-01-16_val_d6a80295.json +59 -0
- package/tooling/.automation/validation/history/2026-01-16_val_dce5005d.json +41 -0
- package/tooling/.automation/validation/history/2026-01-16_val_e53b3a63.json +32 -0
- package/tooling/scripts/lib/__init__.py +1 -1
- package/tooling/scripts/lib/cost_display.py +7 -1
- package/tooling/scripts/lib/pair_programming.py +6 -4
- package/tooling/scripts/lib/swarm_orchestrator.py +13 -11
- package/tooling/scripts/live_dashboard.py +832 -0
- package/tooling/scripts/new-doc.py +1 -1
- package/tooling/scripts/run-collab.py +2 -2
- package/tooling/scripts/run-story.py +21 -9
- package/tooling/scripts/setup-checkpoint-service.py +1 -1
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": "val_d06ccf8d",
|
|
3
|
+
"timestamp": "2026-01-16T12:33:31.101848",
|
|
4
|
+
"story_key": "test",
|
|
5
|
+
"tier": 3,
|
|
6
|
+
"gate_results": [
|
|
7
|
+
{
|
|
8
|
+
"gate_name": "test",
|
|
9
|
+
"result": "pass",
|
|
10
|
+
"message": "Validation passed",
|
|
11
|
+
"duration_ms": 0.0,
|
|
12
|
+
"retry_count": 0,
|
|
13
|
+
"auto_fixed": false,
|
|
14
|
+
"details": {}
|
|
15
|
+
}
|
|
16
|
+
],
|
|
17
|
+
"overall_result": "pass",
|
|
18
|
+
"total_duration_ms": 0.0021457672119140625,
|
|
19
|
+
"passed": true,
|
|
20
|
+
"context": {
|
|
21
|
+
"story_key": "test",
|
|
22
|
+
"iteration": 0,
|
|
23
|
+
"max_iterations": 3,
|
|
24
|
+
"accumulated_issues": [],
|
|
25
|
+
"accumulated_fixes": [],
|
|
26
|
+
"cost_so_far": 0.0,
|
|
27
|
+
"time_elapsed_seconds": 0.0,
|
|
28
|
+
"phase": "",
|
|
29
|
+
"from_agent": "",
|
|
30
|
+
"to_agent": ""
|
|
31
|
+
}
|
|
32
|
+
}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": "val_d6a80295",
|
|
3
|
+
"timestamp": "2026-01-16T12:33:49.127176",
|
|
4
|
+
"story_key": "validation-check",
|
|
5
|
+
"tier": 3,
|
|
6
|
+
"gate_results": [
|
|
7
|
+
{
|
|
8
|
+
"gate_name": "tests_pass",
|
|
9
|
+
"result": "pass",
|
|
10
|
+
"message": "Validation passed",
|
|
11
|
+
"duration_ms": 504.8868656158447,
|
|
12
|
+
"retry_count": 0,
|
|
13
|
+
"auto_fixed": false,
|
|
14
|
+
"details": {}
|
|
15
|
+
},
|
|
16
|
+
{
|
|
17
|
+
"gate_name": "lint_clean",
|
|
18
|
+
"result": "pass",
|
|
19
|
+
"message": "Validation passed",
|
|
20
|
+
"duration_ms": 15.291213989257812,
|
|
21
|
+
"retry_count": 0,
|
|
22
|
+
"auto_fixed": false,
|
|
23
|
+
"details": {}
|
|
24
|
+
},
|
|
25
|
+
{
|
|
26
|
+
"gate_name": "types_valid",
|
|
27
|
+
"result": "pass",
|
|
28
|
+
"message": "Validation passed",
|
|
29
|
+
"duration_ms": 14.148235321044922,
|
|
30
|
+
"retry_count": 0,
|
|
31
|
+
"auto_fixed": false,
|
|
32
|
+
"details": {}
|
|
33
|
+
},
|
|
34
|
+
{
|
|
35
|
+
"gate_name": "version_synced",
|
|
36
|
+
"result": "pass",
|
|
37
|
+
"message": "Validation passed",
|
|
38
|
+
"duration_ms": 28.812885284423828,
|
|
39
|
+
"retry_count": 0,
|
|
40
|
+
"auto_fixed": false,
|
|
41
|
+
"details": {}
|
|
42
|
+
}
|
|
43
|
+
],
|
|
44
|
+
"overall_result": "pass",
|
|
45
|
+
"total_duration_ms": 563.2259845733643,
|
|
46
|
+
"passed": true,
|
|
47
|
+
"context": {
|
|
48
|
+
"story_key": "validation-check",
|
|
49
|
+
"iteration": 0,
|
|
50
|
+
"max_iterations": 3,
|
|
51
|
+
"accumulated_issues": [],
|
|
52
|
+
"accumulated_fixes": [],
|
|
53
|
+
"cost_so_far": 0.0,
|
|
54
|
+
"time_elapsed_seconds": 0.0,
|
|
55
|
+
"phase": "tier_3",
|
|
56
|
+
"from_agent": "",
|
|
57
|
+
"to_agent": ""
|
|
58
|
+
}
|
|
59
|
+
}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": "val_dce5005d",
|
|
3
|
+
"timestamp": "2026-01-16T12:33:31.096647",
|
|
4
|
+
"story_key": "test",
|
|
5
|
+
"tier": 1,
|
|
6
|
+
"gate_results": [
|
|
7
|
+
{
|
|
8
|
+
"gate_name": "gate1",
|
|
9
|
+
"result": "pass",
|
|
10
|
+
"message": "Validation passed",
|
|
11
|
+
"duration_ms": 0.0,
|
|
12
|
+
"retry_count": 0,
|
|
13
|
+
"auto_fixed": false,
|
|
14
|
+
"details": {}
|
|
15
|
+
},
|
|
16
|
+
{
|
|
17
|
+
"gate_name": "gate2",
|
|
18
|
+
"result": "pass",
|
|
19
|
+
"message": "Validation passed",
|
|
20
|
+
"duration_ms": 0.0,
|
|
21
|
+
"retry_count": 0,
|
|
22
|
+
"auto_fixed": false,
|
|
23
|
+
"details": {}
|
|
24
|
+
}
|
|
25
|
+
],
|
|
26
|
+
"overall_result": "pass",
|
|
27
|
+
"total_duration_ms": 0.0059604644775390625,
|
|
28
|
+
"passed": true,
|
|
29
|
+
"context": {
|
|
30
|
+
"story_key": "test",
|
|
31
|
+
"iteration": 0,
|
|
32
|
+
"max_iterations": 3,
|
|
33
|
+
"accumulated_issues": [],
|
|
34
|
+
"accumulated_fixes": [],
|
|
35
|
+
"cost_so_far": 0.0,
|
|
36
|
+
"time_elapsed_seconds": 0.0,
|
|
37
|
+
"phase": "",
|
|
38
|
+
"from_agent": "",
|
|
39
|
+
"to_agent": ""
|
|
40
|
+
}
|
|
41
|
+
}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": "val_e53b3a63",
|
|
3
|
+
"timestamp": "2026-01-16T12:33:31.099384",
|
|
4
|
+
"story_key": "test",
|
|
5
|
+
"tier": 1,
|
|
6
|
+
"gate_results": [
|
|
7
|
+
{
|
|
8
|
+
"gate_name": "block",
|
|
9
|
+
"result": "fail",
|
|
10
|
+
"message": "Validation failed",
|
|
11
|
+
"duration_ms": 0.0,
|
|
12
|
+
"retry_count": 0,
|
|
13
|
+
"auto_fixed": false,
|
|
14
|
+
"details": {}
|
|
15
|
+
}
|
|
16
|
+
],
|
|
17
|
+
"overall_result": "fail",
|
|
18
|
+
"total_duration_ms": 0.015735626220703125,
|
|
19
|
+
"passed": false,
|
|
20
|
+
"context": {
|
|
21
|
+
"story_key": "test",
|
|
22
|
+
"iteration": 0,
|
|
23
|
+
"max_iterations": 3,
|
|
24
|
+
"accumulated_issues": [],
|
|
25
|
+
"accumulated_fixes": [],
|
|
26
|
+
"cost_so_far": 0.0,
|
|
27
|
+
"time_elapsed_seconds": 0.0,
|
|
28
|
+
"phase": "",
|
|
29
|
+
"from_agent": "",
|
|
30
|
+
"to_agent": ""
|
|
31
|
+
}
|
|
32
|
+
}
|
|
@@ -22,7 +22,13 @@ from typing import Optional
|
|
|
22
22
|
# Add parent for imports
|
|
23
23
|
sys.path.insert(0, str(Path(__file__).parent))
|
|
24
24
|
|
|
25
|
-
|
|
25
|
+
try:
|
|
26
|
+
from lib.platform import IS_WINDOWS
|
|
27
|
+
except ImportError:
|
|
28
|
+
# Fallback for when running from lib directory
|
|
29
|
+
import sys as _sys
|
|
30
|
+
|
|
31
|
+
IS_WINDOWS = _sys.platform == "win32"
|
|
26
32
|
|
|
27
33
|
from colors import Colors
|
|
28
34
|
from cost_tracker import PRICING, CostTracker
|
|
@@ -32,12 +32,14 @@ from typing import Optional
|
|
|
32
32
|
|
|
33
33
|
# Import dependencies
|
|
34
34
|
try:
|
|
35
|
-
from platform import IS_WINDOWS
|
|
36
|
-
|
|
37
|
-
from shared_memory import get_knowledge_graph, get_shared_memory
|
|
38
|
-
except ImportError:
|
|
39
35
|
from lib.platform import IS_WINDOWS
|
|
40
36
|
from lib.shared_memory import get_knowledge_graph, get_shared_memory
|
|
37
|
+
except ImportError:
|
|
38
|
+
# Fallback for when running from lib directory
|
|
39
|
+
import sys as _sys
|
|
40
|
+
|
|
41
|
+
IS_WINDOWS = _sys.platform == "win32"
|
|
42
|
+
from shared_memory import get_knowledge_graph, get_shared_memory
|
|
41
43
|
|
|
42
44
|
# Try to import validation loop
|
|
43
45
|
try:
|
|
@@ -43,11 +43,9 @@ from typing import Optional
|
|
|
43
43
|
|
|
44
44
|
# Import dependencies
|
|
45
45
|
try:
|
|
46
|
-
from
|
|
47
|
-
|
|
48
|
-
from
|
|
49
|
-
from agent_router import AgentRouter
|
|
50
|
-
from personality_system import (
|
|
46
|
+
from lib.agent_handoff import HandoffGenerator
|
|
47
|
+
from lib.agent_router import AgentRouter
|
|
48
|
+
from lib.personality_system import (
|
|
51
49
|
ConvergenceDetector,
|
|
52
50
|
DebatePosition,
|
|
53
51
|
PersonalityHandoff,
|
|
@@ -55,11 +53,16 @@ try:
|
|
|
55
53
|
PersonalitySelector,
|
|
56
54
|
extract_arguments_from_response,
|
|
57
55
|
)
|
|
58
|
-
from
|
|
56
|
+
from lib.platform import IS_WINDOWS
|
|
57
|
+
from lib.shared_memory import get_knowledge_graph, get_shared_memory
|
|
59
58
|
except ImportError:
|
|
60
|
-
from lib
|
|
61
|
-
|
|
62
|
-
|
|
59
|
+
# Fallback for when running from lib directory
|
|
60
|
+
import sys as _sys
|
|
61
|
+
|
|
62
|
+
IS_WINDOWS = _sys.platform == "win32"
|
|
63
|
+
from agent_handoff import HandoffGenerator
|
|
64
|
+
from agent_router import AgentRouter
|
|
65
|
+
from personality_system import (
|
|
63
66
|
ConvergenceDetector,
|
|
64
67
|
DebatePosition,
|
|
65
68
|
PersonalityHandoff,
|
|
@@ -67,8 +70,7 @@ except ImportError:
|
|
|
67
70
|
PersonalitySelector,
|
|
68
71
|
extract_arguments_from_response,
|
|
69
72
|
)
|
|
70
|
-
from
|
|
71
|
-
from lib.shared_memory import get_knowledge_graph, get_shared_memory
|
|
73
|
+
from shared_memory import get_knowledge_graph, get_shared_memory
|
|
72
74
|
|
|
73
75
|
# Try to import validation loop
|
|
74
76
|
try:
|