@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.
Files changed (36) hide show
  1. package/.claude/skills/dashboard/SKILL.md +118 -0
  2. package/CHANGELOG.md +21 -0
  3. package/README.md +2 -2
  4. package/bin/devflow-dashboard.js +10 -0
  5. package/bin/devflow-swarm.js +11 -0
  6. package/bin/devflow.js +2 -0
  7. package/package.json +3 -1
  8. package/tooling/.automation/memory/knowledge/kg_integration-test.json +85 -1
  9. package/tooling/.automation/memory/knowledge/kg_test-story.json +284 -2
  10. package/tooling/.automation/memory/shared/shared_integration-test.json +25 -1
  11. package/tooling/.automation/memory/shared/shared_test-story.json +73 -1
  12. package/tooling/.automation/memory/shared/shared_test.json +157 -1
  13. package/tooling/.automation/memory/shared/shared_validation-check.json +27 -1
  14. package/tooling/.automation/validation/history/2026-01-16_val_0b81ec2f.json +41 -0
  15. package/tooling/.automation/validation/history/2026-01-16_val_26c18e64.json +32 -0
  16. package/tooling/.automation/validation/history/2026-01-16_val_32af0152.json +32 -0
  17. package/tooling/.automation/validation/history/2026-01-16_val_353d1569.json +32 -0
  18. package/tooling/.automation/validation/history/2026-01-16_val_39e3c143.json +59 -0
  19. package/tooling/.automation/validation/history/2026-01-16_val_77fb42e4.json +32 -0
  20. package/tooling/.automation/validation/history/2026-01-16_val_a0752656.json +41 -0
  21. package/tooling/.automation/validation/history/2026-01-16_val_a29213b0.json +41 -0
  22. package/tooling/.automation/validation/history/2026-01-16_val_a9375d4c.json +32 -0
  23. package/tooling/.automation/validation/history/2026-01-16_val_c147bbdf.json +32 -0
  24. package/tooling/.automation/validation/history/2026-01-16_val_d06ccf8d.json +32 -0
  25. package/tooling/.automation/validation/history/2026-01-16_val_d6a80295.json +59 -0
  26. package/tooling/.automation/validation/history/2026-01-16_val_dce5005d.json +41 -0
  27. package/tooling/.automation/validation/history/2026-01-16_val_e53b3a63.json +32 -0
  28. package/tooling/scripts/lib/__init__.py +1 -1
  29. package/tooling/scripts/lib/cost_display.py +7 -1
  30. package/tooling/scripts/lib/pair_programming.py +6 -4
  31. package/tooling/scripts/lib/swarm_orchestrator.py +13 -11
  32. package/tooling/scripts/live_dashboard.py +832 -0
  33. package/tooling/scripts/new-doc.py +1 -1
  34. package/tooling/scripts/run-collab.py +2 -2
  35. package/tooling/scripts/run-story.py +21 -9
  36. 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
+ }
@@ -25,7 +25,7 @@ Usage:
25
25
  from lib.platform import get_platform, IS_WINDOWS
26
26
  """
27
27
 
28
- __version__ = "1.19.0"
28
+ __version__ = "1.20.0"
29
29
 
30
30
  # Lazy imports to avoid circular dependencies
31
31
  __all__ = [
@@ -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
- from platform import IS_WINDOWS
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 platform import IS_WINDOWS
47
-
48
- from agent_handoff import HandoffGenerator
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 shared_memory import get_knowledge_graph, get_shared_memory
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.agent_handoff import HandoffGenerator
61
- from lib.agent_router import AgentRouter
62
- from lib.personality_system import (
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 lib.platform import IS_WINDOWS
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: