moai-adk 0.25.4__py3-none-any.whl → 0.32.8__py3-none-any.whl
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.
Potentially problematic release.
This version of moai-adk might be problematic. Click here for more details.
- moai_adk/__init__.py +2 -5
- moai_adk/__main__.py +114 -82
- moai_adk/cli/__init__.py +6 -1
- moai_adk/cli/commands/__init__.py +1 -3
- moai_adk/cli/commands/analyze.py +5 -16
- moai_adk/cli/commands/doctor.py +6 -18
- moai_adk/cli/commands/init.py +56 -125
- moai_adk/cli/commands/language.py +14 -35
- moai_adk/cli/commands/status.py +9 -15
- moai_adk/cli/commands/update.py +1555 -190
- moai_adk/cli/prompts/init_prompts.py +112 -56
- moai_adk/cli/spec_status.py +263 -0
- moai_adk/cli/ui/__init__.py +44 -0
- moai_adk/cli/ui/progress.py +422 -0
- moai_adk/cli/ui/prompts.py +389 -0
- moai_adk/cli/ui/theme.py +129 -0
- moai_adk/cli/worktree/__init__.py +27 -0
- moai_adk/cli/worktree/__main__.py +31 -0
- moai_adk/cli/worktree/cli.py +672 -0
- moai_adk/cli/worktree/exceptions.py +89 -0
- moai_adk/cli/worktree/manager.py +490 -0
- moai_adk/cli/worktree/models.py +65 -0
- moai_adk/cli/worktree/registry.py +128 -0
- moai_adk/core/PHASE2_OPTIMIZATIONS.md +467 -0
- moai_adk/core/analysis/session_analyzer.py +17 -56
- moai_adk/core/claude_integration.py +26 -54
- moai_adk/core/command_helpers.py +10 -10
- moai_adk/core/comprehensive_monitoring_system.py +1183 -0
- moai_adk/core/config/auto_spec_config.py +5 -11
- moai_adk/core/config/migration.py +19 -9
- moai_adk/core/config/unified.py +436 -0
- moai_adk/core/context_manager.py +6 -12
- moai_adk/core/enterprise_features.py +1404 -0
- moai_adk/core/error_recovery_system.py +725 -112
- moai_adk/core/event_driven_hook_system.py +1371 -0
- moai_adk/core/git/__init__.py +8 -0
- moai_adk/core/git/branch_manager.py +3 -11
- moai_adk/core/git/checkpoint.py +1 -3
- moai_adk/core/git/conflict_detector.py +413 -0
- moai_adk/core/git/manager.py +91 -1
- moai_adk/core/hooks/post_tool_auto_spec_completion.py +56 -80
- moai_adk/core/input_validation_middleware.py +1006 -0
- moai_adk/core/integration/engine.py +6 -18
- moai_adk/core/integration/integration_tester.py +10 -9
- moai_adk/core/integration/utils.py +1 -1
- moai_adk/core/issue_creator.py +10 -28
- moai_adk/core/jit_context_loader.py +956 -0
- moai_adk/core/jit_enhanced_hook_manager.py +1987 -0
- moai_adk/core/language_config_resolver.py +485 -0
- moai_adk/core/language_validator.py +28 -41
- moai_adk/core/mcp/setup.py +15 -12
- moai_adk/core/merge/__init__.py +9 -0
- moai_adk/core/merge/analyzer.py +481 -0
- moai_adk/core/migration/alfred_to_moai_migrator.py +383 -0
- moai_adk/core/migration/backup_manager.py +78 -9
- moai_adk/core/migration/custom_element_scanner.py +358 -0
- moai_adk/core/migration/file_migrator.py +8 -17
- moai_adk/core/migration/interactive_checkbox_ui.py +488 -0
- moai_adk/core/migration/selective_restorer.py +470 -0
- moai_adk/core/migration/template_utils.py +74 -0
- moai_adk/core/migration/user_selection_ui.py +338 -0
- moai_adk/core/migration/version_detector.py +6 -10
- moai_adk/core/migration/version_migrator.py +3 -3
- moai_adk/core/performance/cache_system.py +8 -10
- moai_adk/core/phase_optimized_hook_scheduler.py +879 -0
- moai_adk/core/project/checker.py +2 -4
- moai_adk/core/project/detector.py +1 -3
- moai_adk/core/project/initializer.py +135 -23
- moai_adk/core/project/phase_executor.py +54 -81
- moai_adk/core/project/validator.py +6 -12
- moai_adk/core/quality/trust_checker.py +9 -27
- moai_adk/core/realtime_monitoring_dashboard.py +1724 -0
- moai_adk/core/robust_json_parser.py +611 -0
- moai_adk/core/rollback_manager.py +73 -148
- moai_adk/core/session_manager.py +10 -26
- moai_adk/core/skill_loading_system.py +579 -0
- moai_adk/core/spec/confidence_scoring.py +31 -100
- moai_adk/core/spec/ears_template_engine.py +351 -286
- moai_adk/core/spec/quality_validator.py +35 -69
- moai_adk/core/spec_status_manager.py +64 -74
- moai_adk/core/template/backup.py +45 -20
- moai_adk/core/template/config.py +112 -39
- moai_adk/core/template/merger.py +11 -19
- moai_adk/core/template/processor.py +253 -149
- moai_adk/core/template_engine.py +73 -40
- moai_adk/core/template_variable_synchronizer.py +417 -0
- moai_adk/core/unified_permission_manager.py +745 -0
- moai_adk/core/user_behavior_analytics.py +851 -0
- moai_adk/core/version_sync.py +429 -0
- moai_adk/foundation/__init__.py +56 -0
- moai_adk/foundation/backend.py +1027 -0
- moai_adk/foundation/database.py +1115 -0
- moai_adk/foundation/devops.py +1585 -0
- moai_adk/foundation/ears.py +431 -0
- moai_adk/foundation/frontend.py +870 -0
- moai_adk/foundation/git/commit_templates.py +4 -12
- moai_adk/foundation/git.py +376 -0
- moai_adk/foundation/langs.py +484 -0
- moai_adk/foundation/ml_ops.py +1162 -0
- moai_adk/foundation/testing.py +1524 -0
- moai_adk/foundation/trust/trust_principles.py +23 -72
- moai_adk/foundation/trust/validation_checklist.py +57 -162
- moai_adk/project/__init__.py +0 -0
- moai_adk/project/configuration.py +1084 -0
- moai_adk/project/documentation.py +566 -0
- moai_adk/project/schema.py +447 -0
- moai_adk/statusline/alfred_detector.py +1 -3
- moai_adk/statusline/config.py +13 -4
- moai_adk/statusline/enhanced_output_style_detector.py +23 -15
- moai_adk/statusline/main.py +51 -15
- moai_adk/statusline/renderer.py +104 -48
- moai_adk/statusline/update_checker.py +3 -9
- moai_adk/statusline/version_reader.py +140 -46
- moai_adk/templates/.claude/agents/moai/ai-nano-banana.md +549 -0
- moai_adk/templates/.claude/agents/moai/builder-agent.md +445 -0
- moai_adk/templates/.claude/agents/moai/builder-command.md +1132 -0
- moai_adk/templates/.claude/agents/moai/builder-skill.md +601 -0
- moai_adk/templates/.claude/agents/moai/expert-backend.md +831 -0
- moai_adk/templates/.claude/agents/moai/expert-database.md +774 -0
- moai_adk/templates/.claude/agents/moai/expert-debug.md +396 -0
- moai_adk/templates/.claude/agents/moai/expert-devops.md +711 -0
- moai_adk/templates/.claude/agents/moai/expert-frontend.md +666 -0
- moai_adk/templates/.claude/agents/moai/expert-security.md +474 -0
- moai_adk/templates/.claude/agents/moai/expert-uiux.md +1038 -0
- moai_adk/templates/.claude/agents/moai/manager-claude-code.md +429 -0
- moai_adk/templates/.claude/agents/moai/manager-docs.md +570 -0
- moai_adk/templates/.claude/agents/moai/manager-git.md +937 -0
- moai_adk/templates/.claude/agents/moai/manager-project.md +891 -0
- moai_adk/templates/.claude/agents/moai/manager-quality.md +598 -0
- moai_adk/templates/.claude/agents/moai/manager-spec.md +713 -0
- moai_adk/templates/.claude/agents/moai/manager-strategy.md +600 -0
- moai_adk/templates/.claude/agents/moai/manager-tdd.md +603 -0
- moai_adk/templates/.claude/agents/moai/mcp-context7.md +369 -0
- moai_adk/templates/.claude/agents/moai/mcp-figma.md +1567 -0
- moai_adk/templates/.claude/agents/moai/mcp-notion.md +749 -0
- moai_adk/templates/.claude/agents/moai/mcp-playwright.md +427 -0
- moai_adk/templates/.claude/agents/moai/mcp-sequential-thinking.md +994 -0
- moai_adk/templates/.claude/commands/moai/0-project.md +1143 -0
- moai_adk/templates/.claude/commands/moai/1-plan.md +1435 -0
- moai_adk/templates/.claude/commands/moai/2-run.md +883 -0
- moai_adk/templates/.claude/commands/moai/3-sync.md +993 -0
- moai_adk/templates/.claude/commands/moai/9-feedback.md +314 -0
- moai_adk/templates/.claude/hooks/__init__.py +8 -0
- moai_adk/templates/.claude/hooks/moai/__init__.py +8 -0
- moai_adk/templates/.claude/hooks/moai/lib/__init__.py +85 -0
- moai_adk/templates/.claude/hooks/moai/lib/checkpoint.py +244 -0
- moai_adk/templates/.claude/hooks/moai/lib/common.py +131 -0
- moai_adk/templates/.claude/hooks/moai/lib/config_manager.py +446 -0
- moai_adk/templates/.claude/hooks/moai/lib/config_validator.py +639 -0
- moai_adk/templates/.claude/hooks/moai/lib/example_config.json +104 -0
- moai_adk/templates/.claude/hooks/moai/lib/git_operations_manager.py +590 -0
- moai_adk/templates/.claude/hooks/moai/lib/language_validator.py +317 -0
- moai_adk/templates/.claude/hooks/moai/lib/models.py +102 -0
- moai_adk/templates/.claude/hooks/moai/lib/path_utils.py +28 -0
- moai_adk/templates/.claude/hooks/moai/lib/project.py +768 -0
- moai_adk/templates/.claude/hooks/moai/lib/test_hooks_improvements.py +443 -0
- moai_adk/templates/.claude/hooks/moai/lib/timeout.py +160 -0
- moai_adk/templates/.claude/hooks/moai/lib/unified_timeout_manager.py +530 -0
- moai_adk/templates/.claude/hooks/moai/session_end__auto_cleanup.py +862 -0
- moai_adk/templates/.claude/hooks/moai/session_start__show_project_info.py +921 -0
- moai_adk/templates/.claude/output-styles/moai/r2d2.md +380 -0
- moai_adk/templates/.claude/output-styles/moai/yoda.md +338 -0
- moai_adk/templates/.claude/settings.json +172 -0
- moai_adk/templates/.claude/skills/moai-docs-generation/SKILL.md +247 -0
- moai_adk/templates/.claude/skills/moai-docs-generation/modules/README.md +44 -0
- moai_adk/templates/.claude/skills/moai-docs-generation/modules/api-documentation.md +130 -0
- moai_adk/templates/.claude/skills/moai-docs-generation/modules/code-documentation.md +152 -0
- moai_adk/templates/.claude/skills/moai-docs-generation/modules/multi-format-output.md +178 -0
- moai_adk/templates/.claude/skills/moai-docs-generation/modules/user-guides.md +147 -0
- moai_adk/templates/.claude/skills/moai-domain-backend/SKILL.md +319 -0
- moai_adk/templates/.claude/skills/moai-domain-database/SKILL.md +320 -0
- moai_adk/templates/.claude/skills/moai-domain-database/modules/README.md +53 -0
- moai_adk/templates/.claude/skills/moai-domain-database/modules/mongodb.md +231 -0
- moai_adk/templates/.claude/skills/moai-domain-database/modules/postgresql.md +169 -0
- moai_adk/templates/.claude/skills/moai-domain-database/modules/redis.md +262 -0
- moai_adk/templates/.claude/skills/moai-domain-frontend/SKILL.md +496 -0
- moai_adk/templates/.claude/skills/moai-domain-uiux/SKILL.md +453 -0
- moai_adk/templates/.claude/skills/moai-domain-uiux/examples.md +560 -0
- moai_adk/templates/.claude/skills/moai-domain-uiux/modules/accessibility-wcag.md +260 -0
- moai_adk/templates/.claude/skills/moai-domain-uiux/modules/component-architecture.md +228 -0
- moai_adk/templates/.claude/skills/moai-domain-uiux/modules/design-system-tokens.md +405 -0
- moai_adk/templates/.claude/skills/moai-domain-uiux/modules/icon-libraries.md +401 -0
- moai_adk/templates/.claude/skills/moai-domain-uiux/modules/theming-system.md +373 -0
- moai_adk/templates/.claude/skills/moai-domain-uiux/reference.md +243 -0
- moai_adk/templates/.claude/skills/moai-formats-data/SKILL.md +491 -0
- moai_adk/templates/.claude/skills/moai-formats-data/modules/README.md +98 -0
- moai_adk/templates/.claude/skills/moai-formats-data/modules/SKILL-MODULARIZATION-TEMPLATE.md +278 -0
- moai_adk/templates/.claude/skills/moai-formats-data/modules/caching-performance.md +459 -0
- moai_adk/templates/.claude/skills/moai-formats-data/modules/data-validation.md +485 -0
- moai_adk/templates/.claude/skills/moai-formats-data/modules/json-optimization.md +374 -0
- moai_adk/templates/.claude/skills/moai-formats-data/modules/toon-encoding.md +308 -0
- moai_adk/templates/.claude/skills/moai-foundation-claude/SKILL.md +201 -0
- moai_adk/templates/.claude/skills/moai-foundation-claude/reference/best-practices-checklist.md +616 -0
- moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-custom-slash-commands-official.md +729 -0
- moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-hooks-official.md +560 -0
- moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-iam-official.md +635 -0
- moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-memory-official.md +543 -0
- moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-settings-official.md +663 -0
- moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-skills-official.md +113 -0
- moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-sub-agents-official.md +238 -0
- moai_adk/templates/.claude/skills/moai-foundation-claude/reference/complete-configuration-guide.md +175 -0
- moai_adk/templates/.claude/skills/moai-foundation-claude/reference/skill-examples.md +1674 -0
- moai_adk/templates/.claude/skills/moai-foundation-claude/reference/skill-formatting-guide.md +729 -0
- moai_adk/templates/.claude/skills/moai-foundation-claude/reference/sub-agents/sub-agent-examples.md +1513 -0
- moai_adk/templates/.claude/skills/moai-foundation-claude/reference/sub-agents/sub-agent-formatting-guide.md +1086 -0
- moai_adk/templates/.claude/skills/moai-foundation-claude/reference/sub-agents/sub-agent-integration-patterns.md +1100 -0
- moai_adk/templates/.claude/skills/moai-foundation-context/SKILL.md +438 -0
- moai_adk/templates/.claude/skills/moai-foundation-core/SKILL.md +515 -0
- moai_adk/templates/.claude/skills/moai-foundation-core/modules/README.md +296 -0
- moai_adk/templates/.claude/skills/moai-foundation-core/modules/agents-reference.md +346 -0
- moai_adk/templates/.claude/skills/moai-foundation-core/modules/commands-reference.md +432 -0
- moai_adk/templates/.claude/skills/moai-foundation-core/modules/delegation-patterns.md +757 -0
- moai_adk/templates/.claude/skills/moai-foundation-core/modules/execution-rules.md +687 -0
- moai_adk/templates/.claude/skills/moai-foundation-core/modules/modular-system.md +665 -0
- moai_adk/templates/.claude/skills/moai-foundation-core/modules/progressive-disclosure.md +649 -0
- moai_adk/templates/.claude/skills/moai-foundation-core/modules/spec-first-tdd.md +864 -0
- moai_adk/templates/.claude/skills/moai-foundation-core/modules/token-optimization.md +708 -0
- moai_adk/templates/.claude/skills/moai-foundation-core/modules/trust-5-framework.md +981 -0
- moai_adk/templates/.claude/skills/moai-foundation-quality/SKILL.md +362 -0
- moai_adk/templates/.claude/skills/moai-foundation-quality/examples.md +1232 -0
- moai_adk/templates/.claude/skills/moai-foundation-quality/modules/best-practices.md +261 -0
- moai_adk/templates/.claude/skills/moai-foundation-quality/modules/integration-patterns.md +194 -0
- moai_adk/templates/.claude/skills/moai-foundation-quality/modules/proactive-analysis.md +229 -0
- moai_adk/templates/.claude/skills/moai-foundation-quality/modules/trust5-validation.md +169 -0
- moai_adk/templates/.claude/skills/moai-foundation-quality/reference.md +1266 -0
- moai_adk/templates/.claude/skills/moai-foundation-quality/scripts/quality-gate.sh +668 -0
- moai_adk/templates/.claude/skills/moai-foundation-quality/templates/github-actions-quality.yml +481 -0
- moai_adk/templates/.claude/skills/moai-foundation-quality/templates/quality-config.yaml +519 -0
- moai_adk/templates/.claude/skills/moai-integration-mcp/SKILL.md +352 -0
- moai_adk/templates/.claude/skills/moai-integration-mcp/modules/README.md +52 -0
- moai_adk/templates/.claude/skills/moai-integration-mcp/modules/error-handling.md +334 -0
- moai_adk/templates/.claude/skills/moai-integration-mcp/modules/integration-patterns.md +310 -0
- moai_adk/templates/.claude/skills/moai-integration-mcp/modules/security-authentication.md +256 -0
- moai_adk/templates/.claude/skills/moai-integration-mcp/modules/server-architecture.md +253 -0
- moai_adk/templates/.claude/skills/moai-lang-unified/README.md +133 -0
- moai_adk/templates/.claude/skills/moai-lang-unified/SKILL.md +296 -0
- moai_adk/templates/.claude/skills/moai-lang-unified/examples.md +1269 -0
- moai_adk/templates/.claude/skills/moai-lang-unified/reference.md +331 -0
- moai_adk/templates/.claude/skills/moai-library-mermaid/SKILL.md +298 -0
- moai_adk/templates/.claude/skills/moai-library-mermaid/advanced-patterns.md +465 -0
- moai_adk/templates/.claude/skills/moai-library-mermaid/examples.md +270 -0
- moai_adk/templates/.claude/skills/moai-library-mermaid/optimization.md +440 -0
- moai_adk/templates/.claude/skills/moai-library-mermaid/reference.md +228 -0
- moai_adk/templates/.claude/skills/moai-library-nextra/SKILL.md +316 -0
- moai_adk/templates/.claude/skills/moai-library-nextra/advanced-patterns.md +336 -0
- moai_adk/templates/.claude/skills/moai-library-nextra/modules/advanced-deployment-patterns.md +182 -0
- moai_adk/templates/.claude/skills/moai-library-nextra/modules/advanced-patterns.md +17 -0
- moai_adk/templates/.claude/skills/moai-library-nextra/modules/configuration.md +57 -0
- moai_adk/templates/.claude/skills/moai-library-nextra/modules/content-architecture-optimization.md +162 -0
- moai_adk/templates/.claude/skills/moai-library-nextra/modules/deployment.md +52 -0
- moai_adk/templates/.claude/skills/moai-library-nextra/modules/framework-core-configuration.md +186 -0
- moai_adk/templates/.claude/skills/moai-library-nextra/modules/i18n-setup.md +55 -0
- moai_adk/templates/.claude/skills/moai-library-nextra/modules/mdx-components.md +52 -0
- moai_adk/templates/.claude/skills/moai-library-nextra/optimization.md +303 -0
- moai_adk/templates/.claude/skills/moai-library-shadcn/SKILL.md +370 -0
- moai_adk/templates/.claude/skills/moai-library-shadcn/examples.md +575 -0
- moai_adk/templates/.claude/skills/moai-library-shadcn/modules/advanced-patterns.md +394 -0
- moai_adk/templates/.claude/skills/moai-library-shadcn/modules/optimization.md +278 -0
- moai_adk/templates/.claude/skills/moai-library-shadcn/modules/shadcn-components.md +457 -0
- moai_adk/templates/.claude/skills/moai-library-shadcn/modules/shadcn-theming.md +373 -0
- moai_adk/templates/.claude/skills/moai-library-shadcn/reference.md +74 -0
- moai_adk/templates/.claude/skills/moai-platform-baas/README.md +186 -0
- moai_adk/templates/.claude/skills/moai-platform-baas/SKILL.md +290 -0
- moai_adk/templates/.claude/skills/moai-platform-baas/examples.md +1225 -0
- moai_adk/templates/.claude/skills/moai-platform-baas/reference.md +567 -0
- moai_adk/templates/.claude/skills/moai-platform-baas/scripts/provider-selector.py +323 -0
- moai_adk/templates/.claude/skills/moai-platform-baas/templates/stack-config.yaml +204 -0
- moai_adk/templates/.claude/skills/moai-workflow-jit-docs/SKILL.md +446 -0
- moai_adk/templates/.claude/skills/moai-workflow-jit-docs/advanced-patterns.md +379 -0
- moai_adk/templates/.claude/skills/moai-workflow-jit-docs/optimization.md +286 -0
- moai_adk/templates/.claude/skills/moai-workflow-project/README.md +190 -0
- moai_adk/templates/.claude/skills/moai-workflow-project/SKILL.md +387 -0
- moai_adk/templates/.claude/skills/moai-workflow-project/__init__.py +520 -0
- moai_adk/templates/.claude/skills/moai-workflow-project/complete_workflow_demo_fixed.py +574 -0
- moai_adk/templates/.claude/skills/moai-workflow-project/examples/complete_project_setup.py +317 -0
- moai_adk/templates/.claude/skills/moai-workflow-project/examples/complete_workflow_demo.py +663 -0
- moai_adk/templates/.claude/skills/moai-workflow-project/examples/config-migration-example.json +190 -0
- moai_adk/templates/.claude/skills/moai-workflow-project/examples/question-examples.json +135 -0
- moai_adk/templates/.claude/skills/moai-workflow-project/examples/quick_start.py +196 -0
- moai_adk/templates/.claude/skills/moai-workflow-project/modules/__init__.py +17 -0
- moai_adk/templates/.claude/skills/moai-workflow-project/modules/advanced-patterns.md +158 -0
- moai_adk/templates/.claude/skills/moai-workflow-project/modules/ask_user_integration.py +340 -0
- moai_adk/templates/.claude/skills/moai-workflow-project/modules/batch_questions.py +713 -0
- moai_adk/templates/.claude/skills/moai-workflow-project/modules/config_manager.py +538 -0
- moai_adk/templates/.claude/skills/moai-workflow-project/modules/documentation_manager.py +1336 -0
- moai_adk/templates/.claude/skills/moai-workflow-project/modules/language_initializer.py +730 -0
- moai_adk/templates/.claude/skills/moai-workflow-project/modules/migration_manager.py +608 -0
- moai_adk/templates/.claude/skills/moai-workflow-project/modules/template_optimizer.py +1005 -0
- moai_adk/templates/.claude/skills/moai-workflow-project/schemas/config-schema.json +316 -0
- moai_adk/templates/.claude/skills/moai-workflow-project/schemas/tab_schema.json +1362 -0
- moai_adk/templates/.claude/skills/moai-workflow-project/templates/config-template.json +71 -0
- moai_adk/templates/.claude/skills/moai-workflow-project/templates/doc-templates/product-template.md +44 -0
- moai_adk/templates/.claude/skills/moai-workflow-project/templates/doc-templates/structure-template.md +48 -0
- moai_adk/templates/.claude/skills/moai-workflow-project/templates/doc-templates/tech-template.md +71 -0
- moai_adk/templates/.claude/skills/moai-workflow-project/templates/question-templates/config-manager-setup.json +109 -0
- moai_adk/templates/.claude/skills/moai-workflow-project/templates/question-templates/language-initializer.json +228 -0
- moai_adk/templates/.claude/skills/moai-workflow-project/templates/question-templates/menu-project-config.json +130 -0
- moai_adk/templates/.claude/skills/moai-workflow-project/templates/question-templates/project-batch-questions.json +97 -0
- moai_adk/templates/.claude/skills/moai-workflow-project/templates/question-templates/spec-workflow-setup.json +150 -0
- moai_adk/templates/.claude/skills/moai-workflow-project/test_integration_simple.py +436 -0
- moai_adk/templates/.claude/skills/moai-workflow-templates/SKILL.md +374 -0
- moai_adk/templates/.claude/skills/moai-workflow-templates/modules/code-templates.md +124 -0
- moai_adk/templates/.claude/skills/moai-workflow-templates/modules/feedback-templates.md +100 -0
- moai_adk/templates/.claude/skills/moai-workflow-templates/modules/template-optimizer.md +138 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/LICENSE.txt +202 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/SKILL.md +453 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/advanced-patterns.md +576 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/examples/ai-powered-testing.py +294 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/examples/console_logging.py +35 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/examples/element_discovery.py +40 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/examples/static_html_automation.py +34 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/README.md +220 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/ai-debugging.md +845 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/automated-code-review.md +1416 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/performance-optimization.md +1234 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/smart-refactoring.md +1243 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/tdd-context7.md +1260 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/optimization.md +505 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/reference/playwright-best-practices.md +57 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/scripts/with_server.py +218 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/templates/alfred-integration.md +376 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/workflows/enterprise-testing-workflow.py +571 -0
- moai_adk/templates/.claude/skills/moai-worktree/SKILL.md +410 -0
- moai_adk/templates/.claude/skills/moai-worktree/examples.md +606 -0
- moai_adk/templates/.claude/skills/moai-worktree/modules/integration-patterns.md +982 -0
- moai_adk/templates/.claude/skills/moai-worktree/modules/parallel-development.md +778 -0
- moai_adk/templates/.claude/skills/moai-worktree/modules/worktree-commands.md +646 -0
- moai_adk/templates/.claude/skills/moai-worktree/modules/worktree-management.md +782 -0
- moai_adk/templates/.claude/skills/moai-worktree/reference.md +357 -0
- moai_adk/templates/.git-hooks/pre-commit +103 -41
- moai_adk/templates/.git-hooks/pre-push +116 -21
- moai_adk/templates/.github/workflows/ci-universal.yml +513 -0
- moai_adk/templates/.github/workflows/security-secrets-check.yml +179 -0
- moai_adk/templates/.gitignore +184 -44
- moai_adk/templates/.mcp.json +7 -9
- moai_adk/templates/.moai/cache/personalization.json +10 -0
- moai_adk/templates/.moai/config/config.yaml +344 -0
- moai_adk/templates/.moai/config/presets/manual.yaml +28 -0
- moai_adk/templates/.moai/config/presets/personal.yaml +30 -0
- moai_adk/templates/.moai/config/presets/team.yaml +33 -0
- moai_adk/templates/.moai/config/questions/_schema.yaml +79 -0
- moai_adk/templates/.moai/config/questions/tab1-user.yaml +108 -0
- moai_adk/templates/.moai/config/questions/tab2-project.yaml +122 -0
- moai_adk/templates/.moai/config/questions/tab3-git.yaml +542 -0
- moai_adk/templates/.moai/config/questions/tab4-quality.yaml +167 -0
- moai_adk/templates/.moai/config/questions/tab5-system.yaml +152 -0
- moai_adk/templates/.moai/config/sections/git-strategy.yaml +40 -0
- moai_adk/templates/.moai/config/sections/language.yaml +11 -0
- moai_adk/templates/.moai/config/sections/project.yaml +13 -0
- moai_adk/templates/.moai/config/sections/quality.yaml +15 -0
- moai_adk/templates/.moai/config/sections/system.yaml +14 -0
- moai_adk/templates/.moai/config/sections/user.yaml +5 -0
- moai_adk/templates/.moai/config/statusline-config.yaml +86 -0
- moai_adk/templates/.moai/scripts/setup-glm.py +136 -0
- moai_adk/templates/CLAUDE.md +382 -501
- moai_adk/utils/__init__.py +24 -1
- moai_adk/utils/banner.py +7 -10
- moai_adk/utils/common.py +16 -30
- moai_adk/utils/link_validator.py +4 -12
- moai_adk/utils/safe_file_reader.py +2 -6
- moai_adk/utils/timeout.py +160 -0
- moai_adk/utils/toon_utils.py +256 -0
- moai_adk/version.py +22 -0
- moai_adk-0.32.8.dist-info/METADATA +2478 -0
- moai_adk-0.32.8.dist-info/RECORD +396 -0
- {moai_adk-0.25.4.dist-info → moai_adk-0.32.8.dist-info}/WHEEL +1 -1
- {moai_adk-0.25.4.dist-info → moai_adk-0.32.8.dist-info}/entry_points.txt +1 -0
- moai_adk/cli/commands/backup.py +0 -82
- moai_adk/cli/commands/improve_user_experience.py +0 -348
- moai_adk/cli/commands/migrate.py +0 -158
- moai_adk/cli/commands/validate_links.py +0 -118
- moai_adk/templates/.github/workflows/moai-gitflow.yml +0 -413
- moai_adk/templates/.github/workflows/moai-release-create.yml +0 -100
- moai_adk/templates/.github/workflows/moai-release-pipeline.yml +0 -188
- moai_adk/utils/user_experience.py +0 -531
- moai_adk-0.25.4.dist-info/METADATA +0 -2279
- moai_adk-0.25.4.dist-info/RECORD +0 -112
- {moai_adk-0.25.4.dist-info → moai_adk-0.32.8.dist-info}/licenses/LICENSE +0 -0
|
@@ -628,9 +628,7 @@ class TRUSTValidationChecklist:
|
|
|
628
628
|
|
|
629
629
|
return checklists
|
|
630
630
|
|
|
631
|
-
def execute_checklist(
|
|
632
|
-
self, project_path: str, checklist_type: ChecklistType
|
|
633
|
-
) -> ChecklistReport:
|
|
631
|
+
def execute_checklist(self, project_path: str, checklist_type: ChecklistType) -> ChecklistReport:
|
|
634
632
|
"""Execute a specific checklist"""
|
|
635
633
|
import time
|
|
636
634
|
|
|
@@ -671,9 +669,7 @@ class TRUSTValidationChecklist:
|
|
|
671
669
|
|
|
672
670
|
return report
|
|
673
671
|
|
|
674
|
-
def _execute_checklist_item(
|
|
675
|
-
self, project_path: str, item: ChecklistItem
|
|
676
|
-
) -> ChecklistResult:
|
|
672
|
+
def _execute_checklist_item(self, project_path: str, item: ChecklistItem) -> ChecklistResult:
|
|
677
673
|
"""Execute a single checklist item"""
|
|
678
674
|
import time
|
|
679
675
|
|
|
@@ -681,9 +677,7 @@ class TRUSTValidationChecklist:
|
|
|
681
677
|
|
|
682
678
|
try:
|
|
683
679
|
# Parse validation rule and execute appropriate check
|
|
684
|
-
passed, details = self._evaluate_validation_rule(
|
|
685
|
-
project_path, item.validation_rule
|
|
686
|
-
)
|
|
680
|
+
passed, details = self._evaluate_validation_rule(project_path, item.validation_rule)
|
|
687
681
|
|
|
688
682
|
result = ChecklistResult(
|
|
689
683
|
item=item,
|
|
@@ -711,9 +705,7 @@ class TRUSTValidationChecklist:
|
|
|
711
705
|
|
|
712
706
|
return result
|
|
713
707
|
|
|
714
|
-
def _evaluate_validation_rule(
|
|
715
|
-
self, project_path: str, rule: str
|
|
716
|
-
) -> Tuple[bool, Dict[str, Any]]:
|
|
708
|
+
def _evaluate_validation_rule(self, project_path: str, rule: str) -> Tuple[bool, Dict[str, Any]]:
|
|
717
709
|
"""Evaluate a validation rule"""
|
|
718
710
|
project_dir = Path(project_path)
|
|
719
711
|
|
|
@@ -828,9 +820,7 @@ class TRUSTValidationChecklist:
|
|
|
828
820
|
else:
|
|
829
821
|
return False, {"error": f"Unknown validation rule: {rule}"}
|
|
830
822
|
|
|
831
|
-
def _check_test_coverage(
|
|
832
|
-
self, project_dir: Path, rule: str
|
|
833
|
-
) -> Tuple[bool, Dict[str, Any]]:
|
|
823
|
+
def _check_test_coverage(self, project_dir: Path, rule: str) -> Tuple[bool, Dict[str, Any]]:
|
|
834
824
|
"""Check test coverage ratio"""
|
|
835
825
|
try:
|
|
836
826
|
# Extract target ratio from rule
|
|
@@ -842,8 +832,7 @@ class TRUSTValidationChecklist:
|
|
|
842
832
|
source_files = [
|
|
843
833
|
f
|
|
844
834
|
for f in python_files
|
|
845
|
-
if not f.name.startswith("test_")
|
|
846
|
-
and not any(parent.name == "tests" for parent in f.parents)
|
|
835
|
+
if not f.name.startswith("test_") and not any(parent.name == "tests" for parent in f.parents)
|
|
847
836
|
]
|
|
848
837
|
|
|
849
838
|
coverage_ratio = len(test_files) / max(len(source_files), 1)
|
|
@@ -877,9 +866,7 @@ class TRUSTValidationChecklist:
|
|
|
877
866
|
except Exception as e:
|
|
878
867
|
return False, {"error": str(e)}
|
|
879
868
|
|
|
880
|
-
def _check_integration_tests(
|
|
881
|
-
self, project_dir: Path
|
|
882
|
-
) -> Tuple[bool, Dict[str, Any]]:
|
|
869
|
+
def _check_integration_tests(self, project_dir: Path) -> Tuple[bool, Dict[str, Any]]:
|
|
883
870
|
"""Check for integration tests"""
|
|
884
871
|
try:
|
|
885
872
|
python_files = list(project_dir.rglob("*.py"))
|
|
@@ -901,9 +888,7 @@ class TRUSTValidationChecklist:
|
|
|
901
888
|
except Exception as e:
|
|
902
889
|
return False, {"error": str(e)}
|
|
903
890
|
|
|
904
|
-
def _check_test_docstrings(
|
|
905
|
-
self, project_dir: Path, rule: str
|
|
906
|
-
) -> Tuple[bool, Dict[str, Any]]:
|
|
891
|
+
def _check_test_docstrings(self, project_dir: Path, rule: str) -> Tuple[bool, Dict[str, Any]]:
|
|
907
892
|
"""Check test docstring coverage"""
|
|
908
893
|
try:
|
|
909
894
|
target_ratio = float(rule.split(">=")[-1].strip())
|
|
@@ -939,9 +924,7 @@ class TRUSTValidationChecklist:
|
|
|
939
924
|
except Exception as e:
|
|
940
925
|
return False, {"error": str(e)}
|
|
941
926
|
|
|
942
|
-
def _check_assertion_quality(
|
|
943
|
-
self, project_dir: Path
|
|
944
|
-
) -> Tuple[bool, Dict[str, Any]]:
|
|
927
|
+
def _check_assertion_quality(self, project_dir: Path) -> Tuple[bool, Dict[str, Any]]:
|
|
945
928
|
"""Check assertion quality"""
|
|
946
929
|
try:
|
|
947
930
|
python_files = list(project_dir.rglob("test_*.py"))
|
|
@@ -987,9 +970,7 @@ class TRUSTValidationChecklist:
|
|
|
987
970
|
except Exception as e:
|
|
988
971
|
return False, {"error": str(e)}
|
|
989
972
|
|
|
990
|
-
def _check_test_data_isolation(
|
|
991
|
-
self, project_dir: Path
|
|
992
|
-
) -> Tuple[bool, Dict[str, Any]]:
|
|
973
|
+
def _check_test_data_isolation(self, project_dir: Path) -> Tuple[bool, Dict[str, Any]]:
|
|
993
974
|
"""Check test data isolation"""
|
|
994
975
|
try:
|
|
995
976
|
python_files = list(project_dir.rglob("test_*.py"))
|
|
@@ -1002,12 +983,8 @@ class TRUSTValidationChecklist:
|
|
|
1002
983
|
content = file_path.read_text(encoding="utf-8")
|
|
1003
984
|
|
|
1004
985
|
# Look for isolation patterns
|
|
1005
|
-
isolation_patterns += len(
|
|
1006
|
-
|
|
1007
|
-
)
|
|
1008
|
-
fixtures_count += len(
|
|
1009
|
-
re.findall(r"def\s+test_\w+.*\(.*\):", content)
|
|
1010
|
-
)
|
|
986
|
+
isolation_patterns += len(re.findall(r"@pytest\.fixture|setUp|tearDown", content))
|
|
987
|
+
fixtures_count += len(re.findall(r"def\s+test_\w+.*\(.*\):", content))
|
|
1011
988
|
|
|
1012
989
|
except Exception:
|
|
1013
990
|
continue
|
|
@@ -1049,9 +1026,7 @@ class TRUSTValidationChecklist:
|
|
|
1049
1026
|
except Exception as e:
|
|
1050
1027
|
return False, {"error": str(e)}
|
|
1051
1028
|
|
|
1052
|
-
def _check_performance_tests(
|
|
1053
|
-
self, project_dir: Path
|
|
1054
|
-
) -> Tuple[bool, Dict[str, Any]]:
|
|
1029
|
+
def _check_performance_tests(self, project_dir: Path) -> Tuple[bool, Dict[str, Any]]:
|
|
1055
1030
|
"""Check for performance tests"""
|
|
1056
1031
|
try:
|
|
1057
1032
|
python_files = list(project_dir.rglob("*.py"))
|
|
@@ -1111,7 +1086,7 @@ class TRUSTValidationChecklist:
|
|
|
1111
1086
|
def _check_ci_automation(self, project_dir: Path) -> Tuple[bool, Dict[str, Any]]:
|
|
1112
1087
|
"""Check CI automated testing"""
|
|
1113
1088
|
try:
|
|
1114
|
-
ci_files = []
|
|
1089
|
+
ci_files: List[Path] = []
|
|
1115
1090
|
ci_patterns = [
|
|
1116
1091
|
".github/workflows/",
|
|
1117
1092
|
".gitlab-ci.yml",
|
|
@@ -1127,7 +1102,7 @@ class TRUSTValidationChecklist:
|
|
|
1127
1102
|
ci_files.extend(list((project_dir / pattern).rglob("*.yaml")))
|
|
1128
1103
|
else:
|
|
1129
1104
|
if (project_dir / pattern).exists():
|
|
1130
|
-
ci_files.append(pattern)
|
|
1105
|
+
ci_files.append(Path(pattern))
|
|
1131
1106
|
|
|
1132
1107
|
return len(ci_files) > 0, {"result": len(ci_files), "ci_files": ci_files}
|
|
1133
1108
|
except Exception as e:
|
|
@@ -1136,9 +1111,7 @@ class TRUSTValidationChecklist:
|
|
|
1136
1111
|
# Add other validation methods as needed...
|
|
1137
1112
|
# For brevity, implementing a few key ones
|
|
1138
1113
|
|
|
1139
|
-
def _check_function_length(
|
|
1140
|
-
self, project_dir: Path, rule: str
|
|
1141
|
-
) -> Tuple[bool, Dict[str, Any]]:
|
|
1114
|
+
def _check_function_length(self, project_dir: Path, rule: str) -> Tuple[bool, Dict[str, Any]]:
|
|
1142
1115
|
"""Check maximum function length"""
|
|
1143
1116
|
try:
|
|
1144
1117
|
max_length = int(rule.split("<=")[-1].strip())
|
|
@@ -1159,9 +1132,7 @@ class TRUSTValidationChecklist:
|
|
|
1159
1132
|
for line_num, line in enumerate(lines, 1):
|
|
1160
1133
|
stripped = line.strip()
|
|
1161
1134
|
|
|
1162
|
-
if stripped.startswith("def ") or stripped.startswith(
|
|
1163
|
-
"async def "
|
|
1164
|
-
):
|
|
1135
|
+
if stripped.startswith("def ") or stripped.startswith("async def "):
|
|
1165
1136
|
if in_function:
|
|
1166
1137
|
total_functions += 1
|
|
1167
1138
|
if function_lines > max_length:
|
|
@@ -1172,10 +1143,7 @@ class TRUSTValidationChecklist:
|
|
|
1172
1143
|
function_indent = len(line) - len(line.lstrip())
|
|
1173
1144
|
|
|
1174
1145
|
elif in_function:
|
|
1175
|
-
if (
|
|
1176
|
-
stripped
|
|
1177
|
-
and len(line) - len(line.lstrip()) <= function_indent
|
|
1178
|
-
):
|
|
1146
|
+
if stripped and len(line) - len(line.lstrip()) <= function_indent:
|
|
1179
1147
|
total_functions += 1
|
|
1180
1148
|
if function_lines > max_length:
|
|
1181
1149
|
long_functions += 1
|
|
@@ -1204,9 +1172,7 @@ class TRUSTValidationChecklist:
|
|
|
1204
1172
|
except Exception as e:
|
|
1205
1173
|
return False, {"error": str(e)}
|
|
1206
1174
|
|
|
1207
|
-
def _check_class_length(
|
|
1208
|
-
self, project_dir: Path, rule: str
|
|
1209
|
-
) -> Tuple[bool, Dict[str, Any]]:
|
|
1175
|
+
def _check_class_length(self, project_dir: Path, rule: str) -> Tuple[bool, Dict[str, Any]]:
|
|
1210
1176
|
"""Check maximum class length"""
|
|
1211
1177
|
try:
|
|
1212
1178
|
max_length = int(rule.split("<=")[-1].strip())
|
|
@@ -1260,9 +1226,7 @@ class TRUSTValidationChecklist:
|
|
|
1260
1226
|
except Exception as e:
|
|
1261
1227
|
return False, {"error": str(e)}
|
|
1262
1228
|
|
|
1263
|
-
def _check_naming_conventions(
|
|
1264
|
-
self, project_dir: Path
|
|
1265
|
-
) -> Tuple[bool, Dict[str, Any]]:
|
|
1229
|
+
def _check_naming_conventions(self, project_dir: Path) -> Tuple[bool, Dict[str, Any]]:
|
|
1266
1230
|
"""Check naming conventions consistency"""
|
|
1267
1231
|
try:
|
|
1268
1232
|
python_files = list(project_dir.rglob("*.py"))
|
|
@@ -1279,14 +1243,10 @@ class TRUSTValidationChecklist:
|
|
|
1279
1243
|
violations += snake_case_violations
|
|
1280
1244
|
|
|
1281
1245
|
# Check for UPPER_CASE constants
|
|
1282
|
-
constant_violations = len(
|
|
1283
|
-
re.findall(r"[a-z_][a-z0-9_]*\s*=\s*[A-Z_][A-Z0-9_]*", content)
|
|
1284
|
-
)
|
|
1246
|
+
constant_violations = len(re.findall(r"[a-z_][a-z0-9_]*\s*=\s*[A-Z_][A-Z0-9_]*", content))
|
|
1285
1247
|
violations += constant_violations
|
|
1286
1248
|
|
|
1287
|
-
total_checks += len(re.findall(r"def\s+\w+", content)) + len(
|
|
1288
|
-
re.findall(r"\w+\s*=", content)
|
|
1289
|
-
)
|
|
1249
|
+
total_checks += len(re.findall(r"def\s+\w+", content)) + len(re.findall(r"\w+\s*=", content))
|
|
1290
1250
|
|
|
1291
1251
|
except Exception:
|
|
1292
1252
|
continue
|
|
@@ -1300,9 +1260,7 @@ class TRUSTValidationChecklist:
|
|
|
1300
1260
|
except Exception as e:
|
|
1301
1261
|
return False, {"error": str(e)}
|
|
1302
1262
|
|
|
1303
|
-
def _check_docstring_coverage(
|
|
1304
|
-
self, project_dir: Path, rule: str
|
|
1305
|
-
) -> Tuple[bool, Dict[str, Any]]:
|
|
1263
|
+
def _check_docstring_coverage(self, project_dir: Path, rule: str) -> Tuple[bool, Dict[str, Any]]:
|
|
1306
1264
|
"""Check docstring coverage"""
|
|
1307
1265
|
try:
|
|
1308
1266
|
target_ratio = float(rule.split(">=")[-1].strip())
|
|
@@ -1319,9 +1277,7 @@ class TRUSTValidationChecklist:
|
|
|
1319
1277
|
tree = ast.parse(content)
|
|
1320
1278
|
|
|
1321
1279
|
for node in ast.walk(tree):
|
|
1322
|
-
if isinstance(
|
|
1323
|
-
node, (ast.FunctionDef, ast.AsyncFunctionDef, ast.ClassDef)
|
|
1324
|
-
):
|
|
1280
|
+
if isinstance(node, (ast.FunctionDef, ast.AsyncFunctionDef, ast.ClassDef)):
|
|
1325
1281
|
total_items += 1
|
|
1326
1282
|
if ast.get_docstring(node):
|
|
1327
1283
|
docstringed_items += 1
|
|
@@ -1338,9 +1294,7 @@ class TRUSTValidationChecklist:
|
|
|
1338
1294
|
except Exception as e:
|
|
1339
1295
|
return False, {"error": str(e)}
|
|
1340
1296
|
|
|
1341
|
-
def _check_type_hint_coverage(
|
|
1342
|
-
self, project_dir: Path, rule: str
|
|
1343
|
-
) -> Tuple[bool, Dict[str, Any]]:
|
|
1297
|
+
def _check_type_hint_coverage(self, project_dir: Path, rule: str) -> Tuple[bool, Dict[str, Any]]:
|
|
1344
1298
|
"""Check type hint coverage"""
|
|
1345
1299
|
try:
|
|
1346
1300
|
target_ratio = float(rule.split(">=")[-1].strip())
|
|
@@ -1360,8 +1314,7 @@ class TRUSTValidationChecklist:
|
|
|
1360
1314
|
if isinstance(node, (ast.FunctionDef, ast.AsyncFunctionDef)):
|
|
1361
1315
|
total_functions += 1
|
|
1362
1316
|
if node.returns or any(
|
|
1363
|
-
isinstance(arg, ast.arg) and arg.annotation
|
|
1364
|
-
for arg in node.args.args
|
|
1317
|
+
isinstance(arg, ast.arg) and arg.annotation for arg in node.args.args
|
|
1365
1318
|
):
|
|
1366
1319
|
hinted_functions += 1
|
|
1367
1320
|
except Exception:
|
|
@@ -1386,28 +1339,20 @@ class TRUSTValidationChecklist:
|
|
|
1386
1339
|
"""Check code structure"""
|
|
1387
1340
|
return True, {"result": "Code structure is logical"}
|
|
1388
1341
|
|
|
1389
|
-
def _check_cyclomatic_complexity(
|
|
1390
|
-
self, project_dir: Path, rule: str
|
|
1391
|
-
) -> Tuple[bool, Dict[str, Any]]:
|
|
1342
|
+
def _check_cyclomatic_complexity(self, project_dir: Path, rule: str) -> Tuple[bool, Dict[str, Any]]:
|
|
1392
1343
|
"""Check cyclomatic complexity"""
|
|
1393
1344
|
max_complexity = int(rule.split("<=")[-1].strip())
|
|
1394
1345
|
return True, {"result": f"Complexity within {max_complexity}"}
|
|
1395
1346
|
|
|
1396
|
-
def _check_import_compliance(
|
|
1397
|
-
self, project_dir: Path
|
|
1398
|
-
) -> Tuple[bool, Dict[str, Any]]:
|
|
1347
|
+
def _check_import_compliance(self, project_dir: Path) -> Tuple[bool, Dict[str, Any]]:
|
|
1399
1348
|
"""Check import PEP 8 compliance"""
|
|
1400
1349
|
return True, {"result": "Imports follow PEP 8"}
|
|
1401
1350
|
|
|
1402
|
-
def _check_error_message_quality(
|
|
1403
|
-
self, project_dir: Path
|
|
1404
|
-
) -> Tuple[bool, Dict[str, Any]]:
|
|
1351
|
+
def _check_error_message_quality(self, project_dir: Path) -> Tuple[bool, Dict[str, Any]]:
|
|
1405
1352
|
"""Check error message quality"""
|
|
1406
1353
|
return True, {"result": "Error messages are clear"}
|
|
1407
1354
|
|
|
1408
|
-
def _check_architectural_consistency(
|
|
1409
|
-
self, project_dir: Path
|
|
1410
|
-
) -> Tuple[bool, Dict[str, Any]]:
|
|
1355
|
+
def _check_architectural_consistency(self, project_dir: Path) -> Tuple[bool, Dict[str, Any]]:
|
|
1411
1356
|
"""Check architectural consistency"""
|
|
1412
1357
|
return True, {"result": "Architecture is consistent"}
|
|
1413
1358
|
|
|
@@ -1415,21 +1360,15 @@ class TRUSTValidationChecklist:
|
|
|
1415
1360
|
"""Check design patterns"""
|
|
1416
1361
|
return True, {"result": "Design patterns are appropriate"}
|
|
1417
1362
|
|
|
1418
|
-
def _check_error_handling_consistency(
|
|
1419
|
-
self, project_dir: Path
|
|
1420
|
-
) -> Tuple[bool, Dict[str, Any]]:
|
|
1363
|
+
def _check_error_handling_consistency(self, project_dir: Path) -> Tuple[bool, Dict[str, Any]]:
|
|
1421
1364
|
"""Check error handling consistency"""
|
|
1422
1365
|
return True, {"result": "Error handling is consistent"}
|
|
1423
1366
|
|
|
1424
|
-
def _check_logging_consistency(
|
|
1425
|
-
self, project_dir: Path
|
|
1426
|
-
) -> Tuple[bool, Dict[str, Any]]:
|
|
1367
|
+
def _check_logging_consistency(self, project_dir: Path) -> Tuple[bool, Dict[str, Any]]:
|
|
1427
1368
|
"""Check logging consistency"""
|
|
1428
1369
|
return True, {"result": "Logging is consistent"}
|
|
1429
1370
|
|
|
1430
|
-
def _check_configuration_consistency(
|
|
1431
|
-
self, project_dir: Path
|
|
1432
|
-
) -> Tuple[bool, Dict[str, Any]]:
|
|
1371
|
+
def _check_configuration_consistency(self, project_dir: Path) -> Tuple[bool, Dict[str, Any]]:
|
|
1433
1372
|
"""Check configuration consistency"""
|
|
1434
1373
|
return True, {"result": "Configuration is consistent"}
|
|
1435
1374
|
|
|
@@ -1437,9 +1376,7 @@ class TRUSTValidationChecklist:
|
|
|
1437
1376
|
"""Check API standards"""
|
|
1438
1377
|
return True, {"result": "API standards are consistent"}
|
|
1439
1378
|
|
|
1440
|
-
def _check_database_patterns(
|
|
1441
|
-
self, project_dir: Path
|
|
1442
|
-
) -> Tuple[bool, Dict[str, Any]]:
|
|
1379
|
+
def _check_database_patterns(self, project_dir: Path) -> Tuple[bool, Dict[str, Any]]:
|
|
1443
1380
|
"""Check database patterns"""
|
|
1444
1381
|
return True, {"result": "Database patterns are consistent"}
|
|
1445
1382
|
|
|
@@ -1447,9 +1384,7 @@ class TRUSTValidationChecklist:
|
|
|
1447
1384
|
"""Check state management"""
|
|
1448
1385
|
return True, {"result": "State management is consistent"}
|
|
1449
1386
|
|
|
1450
|
-
def _check_file_organization(
|
|
1451
|
-
self, project_dir: Path
|
|
1452
|
-
) -> Tuple[bool, Dict[str, Any]]:
|
|
1387
|
+
def _check_file_organization(self, project_dir: Path) -> Tuple[bool, Dict[str, Any]]:
|
|
1453
1388
|
"""Check file organization"""
|
|
1454
1389
|
return True, {"result": "File organization is consistent"}
|
|
1455
1390
|
|
|
@@ -1461,9 +1396,7 @@ class TRUSTValidationChecklist:
|
|
|
1461
1396
|
"""Check input validation"""
|
|
1462
1397
|
return True, {"result": "Input validation is present"}
|
|
1463
1398
|
|
|
1464
|
-
def _check_sql_injection_prevention(
|
|
1465
|
-
self, project_dir: Path
|
|
1466
|
-
) -> Tuple[bool, Dict[str, Any]]:
|
|
1399
|
+
def _check_sql_injection_prevention(self, project_dir: Path) -> Tuple[bool, Dict[str, Any]]:
|
|
1467
1400
|
"""Check SQL injection prevention"""
|
|
1468
1401
|
return True, {"result": "SQL injection is prevented"}
|
|
1469
1402
|
|
|
@@ -1475,15 +1408,11 @@ class TRUSTValidationChecklist:
|
|
|
1475
1408
|
"""Check authentication"""
|
|
1476
1409
|
return True, {"result": "Authentication is present"}
|
|
1477
1410
|
|
|
1478
|
-
def _check_secret_management(
|
|
1479
|
-
self, project_dir: Path
|
|
1480
|
-
) -> Tuple[bool, Dict[str, Any]]:
|
|
1411
|
+
def _check_secret_management(self, project_dir: Path) -> Tuple[bool, Dict[str, Any]]:
|
|
1481
1412
|
"""Check secret management"""
|
|
1482
1413
|
return True, {"result": "Secrets are properly managed"}
|
|
1483
1414
|
|
|
1484
|
-
def _check_https_enforcement(
|
|
1485
|
-
self, project_dir: Path
|
|
1486
|
-
) -> Tuple[bool, Dict[str, Any]]:
|
|
1415
|
+
def _check_https_enforcement(self, project_dir: Path) -> Tuple[bool, Dict[str, Any]]:
|
|
1487
1416
|
"""Check HTTPS enforcement"""
|
|
1488
1417
|
return True, {"result": "HTTPS is enforced"}
|
|
1489
1418
|
|
|
@@ -1491,9 +1420,7 @@ class TRUSTValidationChecklist:
|
|
|
1491
1420
|
"""Check security headers"""
|
|
1492
1421
|
return True, {"result": "Security headers are present"}
|
|
1493
1422
|
|
|
1494
|
-
def _check_dependency_security(
|
|
1495
|
-
self, project_dir: Path
|
|
1496
|
-
) -> Tuple[bool, Dict[str, Any]]:
|
|
1423
|
+
def _check_dependency_security(self, project_dir: Path) -> Tuple[bool, Dict[str, Any]]:
|
|
1497
1424
|
"""Check dependency security"""
|
|
1498
1425
|
return True, {"result": "Dependencies are secure"}
|
|
1499
1426
|
|
|
@@ -1501,9 +1428,7 @@ class TRUSTValidationChecklist:
|
|
|
1501
1428
|
"""Check logging security"""
|
|
1502
1429
|
return True, {"result": "Logging is secure"}
|
|
1503
1430
|
|
|
1504
|
-
def _check_error_message_security(
|
|
1505
|
-
self, project_dir: Path
|
|
1506
|
-
) -> Tuple[bool, Dict[str, Any]]:
|
|
1431
|
+
def _check_error_message_security(self, project_dir: Path) -> Tuple[bool, Dict[str, Any]]:
|
|
1507
1432
|
"""Check error message security"""
|
|
1508
1433
|
return True, {"result": "Error messages are secure"}
|
|
1509
1434
|
|
|
@@ -1527,9 +1452,7 @@ class TRUSTValidationChecklist:
|
|
|
1527
1452
|
"documentation_files": len(doc_files),
|
|
1528
1453
|
}
|
|
1529
1454
|
|
|
1530
|
-
def _check_semantic_versioning(
|
|
1531
|
-
self, project_dir: Path
|
|
1532
|
-
) -> Tuple[bool, Dict[str, Any]]:
|
|
1455
|
+
def _check_semantic_versioning(self, project_dir: Path) -> Tuple[bool, Dict[str, Any]]:
|
|
1533
1456
|
"""Check semantic versioning"""
|
|
1534
1457
|
return True, {"result": "Semantic versioning is used"}
|
|
1535
1458
|
|
|
@@ -1543,23 +1466,17 @@ class TRUSTValidationChecklist:
|
|
|
1543
1466
|
"""Check code annotations"""
|
|
1544
1467
|
return True, {"result": "Code annotations are present"}
|
|
1545
1468
|
|
|
1546
|
-
def _check_api_documentation(
|
|
1547
|
-
self, project_dir: Path
|
|
1548
|
-
) -> Tuple[bool, Dict[str, Any]]:
|
|
1469
|
+
def _check_api_documentation(self, project_dir: Path) -> Tuple[bool, Dict[str, Any]]:
|
|
1549
1470
|
"""Check API documentation"""
|
|
1550
1471
|
return True, {"result": "API documentation is present"}
|
|
1551
1472
|
|
|
1552
|
-
def _check_dependency_tracking(
|
|
1553
|
-
self, project_dir: Path
|
|
1554
|
-
) -> Tuple[bool, Dict[str, Any]]:
|
|
1473
|
+
def _check_dependency_tracking(self, project_dir: Path) -> Tuple[bool, Dict[str, Any]]:
|
|
1555
1474
|
"""Check dependency tracking"""
|
|
1556
1475
|
req_files = ["requirements.txt", "pyproject.toml", "setup.py"]
|
|
1557
1476
|
exists = any((project_dir / f).exists() for f in req_files)
|
|
1558
1477
|
return exists, {"result": exists, "dependency_files": req_files}
|
|
1559
1478
|
|
|
1560
|
-
def _generate_recommendations(
|
|
1561
|
-
self, checklist_type: ChecklistType, results: List[ChecklistResult]
|
|
1562
|
-
) -> List[str]:
|
|
1479
|
+
def _generate_recommendations(self, checklist_type: ChecklistType, results: List[ChecklistResult]) -> List[str]:
|
|
1563
1480
|
"""Generate recommendations based on checklist results"""
|
|
1564
1481
|
recommendations = []
|
|
1565
1482
|
|
|
@@ -1568,9 +1485,7 @@ class TRUSTValidationChecklist:
|
|
|
1568
1485
|
if len(failed_results) == 0:
|
|
1569
1486
|
recommendations.append("✅ Excellent! All checklists passed")
|
|
1570
1487
|
else:
|
|
1571
|
-
recommendations.append(
|
|
1572
|
-
f"🔍 Review {len(failed_results)} failed checklist items"
|
|
1573
|
-
)
|
|
1488
|
+
recommendations.append(f"🔍 Review {len(failed_results)} failed checklist items")
|
|
1574
1489
|
|
|
1575
1490
|
# Generate specific recommendations based on failed items
|
|
1576
1491
|
for result in failed_results[:5]: # Top 5 failed items
|
|
@@ -1585,40 +1500,30 @@ class TRUSTValidationChecklist:
|
|
|
1585
1500
|
|
|
1586
1501
|
return recommendations
|
|
1587
1502
|
|
|
1588
|
-
def execute_all_checklists(
|
|
1589
|
-
self, project_path: str
|
|
1590
|
-
) -> Dict[ChecklistType, ChecklistReport]:
|
|
1503
|
+
def execute_all_checklists(self, project_path: str) -> Dict[ChecklistType, ChecklistReport]:
|
|
1591
1504
|
"""Execute all TRUST checklists"""
|
|
1592
1505
|
reports = {}
|
|
1593
1506
|
|
|
1594
1507
|
for checklist_type in ChecklistType:
|
|
1595
|
-
reports[checklist_type] = self.execute_checklist(
|
|
1596
|
-
project_path, checklist_type
|
|
1597
|
-
)
|
|
1508
|
+
reports[checklist_type] = self.execute_checklist(project_path, checklist_type)
|
|
1598
1509
|
|
|
1599
1510
|
return reports
|
|
1600
1511
|
|
|
1601
|
-
def generate_summary_report(
|
|
1602
|
-
self, reports: Dict[ChecklistType, ChecklistReport]
|
|
1603
|
-
) -> str:
|
|
1512
|
+
def generate_summary_report(self, reports: Dict[ChecklistType, ChecklistReport]) -> str:
|
|
1604
1513
|
"""Generate summary report for all checklists"""
|
|
1605
1514
|
summary = []
|
|
1606
1515
|
summary.append("# TRUST 5 Principles Checklist Summary")
|
|
1607
1516
|
summary.append("")
|
|
1608
1517
|
|
|
1609
|
-
total_score = 0
|
|
1610
|
-
total_max_score = 0
|
|
1518
|
+
total_score: float = 0.0
|
|
1519
|
+
total_max_score: float = 0.0
|
|
1611
1520
|
total_passed = 0
|
|
1612
1521
|
total_items = 0
|
|
1613
1522
|
|
|
1614
1523
|
for checklist_type, report in reports.items():
|
|
1615
1524
|
summary.append(f"## {checklist_type.value.replace('_', ' ').title()}")
|
|
1616
|
-
summary.append(
|
|
1617
|
-
|
|
1618
|
-
)
|
|
1619
|
-
summary.append(
|
|
1620
|
-
f"**Status**: {report.passed_items}/{report.total_items} passed"
|
|
1621
|
-
)
|
|
1525
|
+
summary.append(f"**Score**: {report.total_score}/{report.max_score} ({report.percentage_score}%)")
|
|
1526
|
+
summary.append(f"**Status**: {report.passed_items}/{report.total_items} passed")
|
|
1622
1527
|
summary.append(f"**Time**: {report.execution_time:.2f}s")
|
|
1623
1528
|
summary.append("")
|
|
1624
1529
|
|
|
@@ -1634,30 +1539,20 @@ class TRUSTValidationChecklist:
|
|
|
1634
1539
|
total_items += report.total_items
|
|
1635
1540
|
|
|
1636
1541
|
# Overall summary
|
|
1637
|
-
overall_percentage = (
|
|
1638
|
-
(total_score / total_max_score) * 100 if total_max_score > 0 else 0
|
|
1639
|
-
)
|
|
1542
|
+
overall_percentage = (total_score / total_max_score) * 100 if total_max_score > 0 else 0
|
|
1640
1543
|
summary.append("## Overall Summary")
|
|
1641
|
-
summary.append(
|
|
1642
|
-
f"**Total Score**: {total_score}/{total_max_score} ({overall_percentage:.1f}%)"
|
|
1643
|
-
)
|
|
1544
|
+
summary.append(f"**Total Score**: {total_score}/{total_max_score} ({overall_percentage:.1f}%)")
|
|
1644
1545
|
summary.append(f"**Total Passed**: {total_passed}/{total_items}")
|
|
1645
1546
|
summary.append("")
|
|
1646
1547
|
|
|
1647
1548
|
if overall_percentage >= 90:
|
|
1648
|
-
summary.append(
|
|
1649
|
-
"🟢 **EXCELLENT**: Project meets TRUST principles at an excellent level"
|
|
1650
|
-
)
|
|
1549
|
+
summary.append("🟢 **EXCELLENT**: Project meets TRUST principles at an excellent level")
|
|
1651
1550
|
elif overall_percentage >= 80:
|
|
1652
1551
|
summary.append("🟡 **GOOD**: Project mostly follows TRUST principles")
|
|
1653
1552
|
elif overall_percentage >= 70:
|
|
1654
|
-
summary.append(
|
|
1655
|
-
"🟠 **NEEDS IMPROVEMENT**: Project has gaps in TRUST principles"
|
|
1656
|
-
)
|
|
1553
|
+
summary.append("🟠 **NEEDS IMPROVEMENT**: Project has gaps in TRUST principles")
|
|
1657
1554
|
else:
|
|
1658
|
-
summary.append(
|
|
1659
|
-
"🔴 **CRITICAL**: Project requires immediate attention to TRUST principles"
|
|
1660
|
-
)
|
|
1555
|
+
summary.append("🔴 **CRITICAL**: Project requires immediate attention to TRUST principles")
|
|
1661
1556
|
|
|
1662
1557
|
return "\n".join(summary)
|
|
1663
1558
|
|
|
File without changes
|