@pjmendonca/devflow 1.9.0 → 1.10.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/CHANGELOG.md +11 -1
- package/README.md +50 -48
- package/bin/create-devflow.js +140 -0
- package/lib/python-check.js +5 -5
- package/package.json +2 -1
- package/tooling/.automation/agents/dev.md +2 -2
- package/tooling/.automation/agents/reviewer.md +8 -8
- package/tooling/.automation/agents/sm.md +1 -1
- package/tooling/.automation/memory/knowledge/kg_integration-test.json +137 -1
- package/tooling/.automation/memory/knowledge/kg_test-story.json +438 -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/overrides/templates/reviewer/mentoring-reviewer.yaml +5 -5
- package/tooling/docs/DOC-STANDARD.md +21 -21
- package/tooling/docs/templates/bug-report.md +1 -1
- package/tooling/scripts/context_checkpoint.py +16 -16
- package/tooling/scripts/create-persona.py +7 -7
- package/tooling/scripts/create-persona.sh +4 -4
- package/tooling/scripts/init-project-workflow.sh +19 -19
- package/tooling/scripts/lib/__init__.py +1 -1
- package/tooling/scripts/lib/agent_handoff.py +4 -6
- package/tooling/scripts/lib/agent_router.py +6 -6
- package/tooling/scripts/lib/checkpoint-integration.sh +14 -14
- package/tooling/scripts/lib/claude-cli.sh +50 -50
- package/tooling/scripts/lib/cost_tracker.py +4 -4
- package/tooling/scripts/lib/errors.py +9 -9
- package/tooling/scripts/lib/pair_programming.py +5 -5
- package/tooling/scripts/lib/shared_memory.py +4 -4
- package/tooling/scripts/lib/swarm_orchestrator.py +18 -18
- package/tooling/scripts/new-doc.sh +12 -12
- package/tooling/scripts/personalize_agent.py +4 -4
- package/tooling/scripts/rollback-migration.sh +4 -4
- package/tooling/scripts/run-collab.ps1 +2 -2
- package/tooling/scripts/run-collab.py +13 -13
- package/tooling/scripts/run-story.py +1 -1
- package/tooling/scripts/run-story.sh +20 -20
- package/tooling/scripts/setup-checkpoint-service.sh +4 -4
- package/tooling/scripts/tech-debt-tracker.py +12 -12
- package/tooling/scripts/update_version.py +10 -10
- package/tooling/scripts/validate-overrides.py +10 -12
- package/tooling/scripts/validate-overrides.sh +7 -7
- package/tooling/scripts/validate_setup.py +8 -8
|
@@ -205,38 +205,38 @@ def main():
|
|
|
205
205
|
if v is not None
|
|
206
206
|
)
|
|
207
207
|
if all_match:
|
|
208
|
-
print("
|
|
208
|
+
print("[OK] All versions are in sync")
|
|
209
209
|
sys.exit(0)
|
|
210
210
|
else:
|
|
211
|
-
print("
|
|
211
|
+
print("[X] Versions are out of sync")
|
|
212
212
|
sys.exit(1)
|
|
213
213
|
|
|
214
214
|
# Update all files
|
|
215
215
|
success = True
|
|
216
216
|
|
|
217
217
|
if update_readme_version(readme_path, target_version):
|
|
218
|
-
print(f"
|
|
218
|
+
print(f"[OK] Updated README.md to version {target_version}")
|
|
219
219
|
else:
|
|
220
|
-
print("
|
|
220
|
+
print("[X] Failed to update README.md")
|
|
221
221
|
success = False
|
|
222
222
|
|
|
223
223
|
if update_pyproject_version(pyproject_path, target_version):
|
|
224
|
-
print(f"
|
|
224
|
+
print(f"[OK] Updated pyproject.toml to version {target_version}")
|
|
225
225
|
else:
|
|
226
|
-
print("
|
|
226
|
+
print("[X] Failed to update pyproject.toml")
|
|
227
227
|
success = False
|
|
228
228
|
|
|
229
229
|
if update_init_version(init_path, target_version):
|
|
230
|
-
print(f"
|
|
230
|
+
print(f"[OK] Updated __init__.py to version {target_version}")
|
|
231
231
|
else:
|
|
232
|
-
print("
|
|
232
|
+
print("[X] Failed to update __init__.py")
|
|
233
233
|
success = False
|
|
234
234
|
|
|
235
235
|
if success:
|
|
236
|
-
print("\n
|
|
236
|
+
print("\n[OK] All versions synced successfully!")
|
|
237
237
|
print(" Don't forget to commit the changes.")
|
|
238
238
|
else:
|
|
239
|
-
print("\
|
|
239
|
+
print("\nSome updates failed. Check errors above.")
|
|
240
240
|
sys.exit(1)
|
|
241
241
|
|
|
242
242
|
|
|
@@ -369,19 +369,19 @@ def print_result(result: ValidationResult, verbose: bool = False):
|
|
|
369
369
|
print(f"{Colors.BLUE}Validating:{Colors.NC} {os.path.basename(result.file_path)}")
|
|
370
370
|
|
|
371
371
|
for error in result.errors:
|
|
372
|
-
print(f"{Colors.RED}
|
|
372
|
+
print(f"{Colors.RED} [X] ERROR:{Colors.NC} {error}")
|
|
373
373
|
|
|
374
374
|
for warning in result.warnings:
|
|
375
|
-
print(f"{Colors.YELLOW}
|
|
375
|
+
print(f"{Colors.YELLOW} WARNING:{Colors.NC} {warning}")
|
|
376
376
|
|
|
377
377
|
if verbose:
|
|
378
378
|
for info in result.info:
|
|
379
|
-
print(f"{Colors.GREEN}
|
|
379
|
+
print(f"{Colors.GREEN} [OK]{Colors.NC} {info}")
|
|
380
380
|
else:
|
|
381
381
|
# Show success messages only for key validations
|
|
382
382
|
for info in result.info:
|
|
383
383
|
if any(key in info for key in ["syntax is valid", "override is valid", "defined:"]):
|
|
384
|
-
print(f"{Colors.GREEN}
|
|
384
|
+
print(f"{Colors.GREEN} [OK]{Colors.NC} {info}")
|
|
385
385
|
|
|
386
386
|
|
|
387
387
|
def main():
|
|
@@ -429,7 +429,7 @@ def main():
|
|
|
429
429
|
if not args.json:
|
|
430
430
|
print(f"\n{Colors.YELLOW}Auto-fixing:{Colors.NC} {file_path.name}")
|
|
431
431
|
for fix in fixes:
|
|
432
|
-
print(f"{Colors.GREEN}
|
|
432
|
+
print(f"{Colors.GREEN} [OK]{Colors.NC} {fix}")
|
|
433
433
|
|
|
434
434
|
result = validate_override_file(file_path, agents_dir, args.verbose)
|
|
435
435
|
results.append(result)
|
|
@@ -444,7 +444,7 @@ def main():
|
|
|
444
444
|
if not args.json:
|
|
445
445
|
print(f"\n{Colors.YELLOW}Auto-fixing:{Colors.NC} {profile_path.name}")
|
|
446
446
|
for fix in fixes:
|
|
447
|
-
print(f"{Colors.GREEN}
|
|
447
|
+
print(f"{Colors.GREEN} [OK]{Colors.NC} {fix}")
|
|
448
448
|
|
|
449
449
|
result = validate_user_profile(profile_path, args.verbose)
|
|
450
450
|
results.append(result)
|
|
@@ -456,7 +456,7 @@ def main():
|
|
|
456
456
|
if not args.json:
|
|
457
457
|
print(f"\n{Colors.YELLOW}Auto-fixing:{Colors.NC} {file_path.name}")
|
|
458
458
|
for fix in fixes:
|
|
459
|
-
print(f"{Colors.GREEN}
|
|
459
|
+
print(f"{Colors.GREEN} [OK]{Colors.NC} {fix}")
|
|
460
460
|
|
|
461
461
|
result = validate_override_file(file_path, agents_dir, args.verbose)
|
|
462
462
|
results.append(result)
|
|
@@ -497,14 +497,12 @@ def main():
|
|
|
497
497
|
print()
|
|
498
498
|
|
|
499
499
|
if total_errors > 0:
|
|
500
|
-
print(f"{Colors.RED}
|
|
500
|
+
print(f"{Colors.RED} Validation failed with {total_errors} error(s){Colors.NC}")
|
|
501
501
|
sys.exit(1)
|
|
502
502
|
elif total_warnings > 0:
|
|
503
|
-
print(
|
|
504
|
-
f"{Colors.YELLOW}⚠️ Validation passed with {total_warnings} warning(s){Colors.NC}"
|
|
505
|
-
)
|
|
503
|
+
print(f"{Colors.YELLOW} Validation passed with {total_warnings} warning(s){Colors.NC}")
|
|
506
504
|
else:
|
|
507
|
-
print(f"{Colors.GREEN}
|
|
505
|
+
print(f"{Colors.GREEN} All validations passed!{Colors.NC}")
|
|
508
506
|
|
|
509
507
|
|
|
510
508
|
if __name__ == "__main__":
|
|
@@ -56,21 +56,21 @@ print_header() {
|
|
|
56
56
|
}
|
|
57
57
|
|
|
58
58
|
error() {
|
|
59
|
-
echo -e "${RED}
|
|
59
|
+
echo -e "${RED} [X] ERROR:${NC} $1"
|
|
60
60
|
((ERRORS++))
|
|
61
61
|
}
|
|
62
62
|
|
|
63
63
|
warning() {
|
|
64
|
-
echo -e "${YELLOW}
|
|
64
|
+
echo -e "${YELLOW} WARNING:${NC} $1"
|
|
65
65
|
((WARNINGS++))
|
|
66
66
|
}
|
|
67
67
|
|
|
68
68
|
success() {
|
|
69
|
-
echo -e "${GREEN}
|
|
69
|
+
echo -e "${GREEN} [OK]${NC} $1"
|
|
70
70
|
}
|
|
71
71
|
|
|
72
72
|
info() {
|
|
73
|
-
[[ "$VERBOSE" == "true" ]] && echo -e "${BLUE}
|
|
73
|
+
[[ "$VERBOSE" == "true" ]] && echo -e "${BLUE} [i]${NC} $1"
|
|
74
74
|
}
|
|
75
75
|
|
|
76
76
|
################################################################################
|
|
@@ -418,13 +418,13 @@ main() {
|
|
|
418
418
|
echo ""
|
|
419
419
|
|
|
420
420
|
if [[ $ERRORS -gt 0 ]]; then
|
|
421
|
-
echo -e "${RED}
|
|
421
|
+
echo -e "${RED} Validation failed with $ERRORS error(s)${NC}"
|
|
422
422
|
exit 1
|
|
423
423
|
elif [[ $WARNINGS -gt 0 ]]; then
|
|
424
|
-
echo -e "${YELLOW}
|
|
424
|
+
echo -e "${YELLOW} Validation passed with $WARNINGS warning(s)${NC}"
|
|
425
425
|
exit 0
|
|
426
426
|
else
|
|
427
|
-
echo -e "${GREEN}
|
|
427
|
+
echo -e "${GREEN} All validations passed!${NC}"
|
|
428
428
|
exit 0
|
|
429
429
|
fi
|
|
430
430
|
}
|
|
@@ -28,11 +28,11 @@ from typing import Optional
|
|
|
28
28
|
class CheckStatus(Enum):
|
|
29
29
|
"""Status of a validation check."""
|
|
30
30
|
|
|
31
|
-
PASS = "
|
|
32
|
-
FAIL = "
|
|
33
|
-
WARN = "
|
|
34
|
-
SKIP = "
|
|
35
|
-
INFO = "
|
|
31
|
+
PASS = "[PASS]"
|
|
32
|
+
FAIL = "[FAIL]"
|
|
33
|
+
WARN = "[WARNING]"
|
|
34
|
+
SKIP = "[SKIP]"
|
|
35
|
+
INFO = "[INFO]"
|
|
36
36
|
|
|
37
37
|
|
|
38
38
|
@dataclass
|
|
@@ -443,7 +443,7 @@ class SetupValidator:
|
|
|
443
443
|
|
|
444
444
|
def run_all_checks(self) -> bool:
|
|
445
445
|
"""Run all validation checks."""
|
|
446
|
-
print(f"\n{Colors.BOLD}
|
|
446
|
+
print(f"\n{Colors.BOLD}Devflow Setup Validation{Colors.RESET}\n")
|
|
447
447
|
print(f" Project: {PROJECT_ROOT}")
|
|
448
448
|
print(f" Python: {sys.executable}")
|
|
449
449
|
print()
|
|
@@ -475,12 +475,12 @@ class SetupValidator:
|
|
|
475
475
|
|
|
476
476
|
if failed == 0:
|
|
477
477
|
print(
|
|
478
|
-
f"\n{Colors.GREEN}{Colors.BOLD}
|
|
478
|
+
f"\n{Colors.GREEN}{Colors.BOLD}[OK] All checks passed! Devflow is ready to use.{Colors.RESET}\n"
|
|
479
479
|
)
|
|
480
480
|
return True
|
|
481
481
|
else:
|
|
482
482
|
print(
|
|
483
|
-
f"\n{Colors.RED}{Colors.BOLD}
|
|
483
|
+
f"\n{Colors.RED}{Colors.BOLD}[FAIL] {failed} check(s) failed. Please fix the issues above.{Colors.RESET}"
|
|
484
484
|
)
|
|
485
485
|
if not self.fix:
|
|
486
486
|
print(f" {Colors.DIM}Run with --fix to auto-fix some issues.{Colors.RESET}\n")
|