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
|
@@ -438,9 +438,7 @@ class CommitTemplates:
|
|
|
438
438
|
"""Get template by commit type"""
|
|
439
439
|
return self.templates.get(commit_type)
|
|
440
440
|
|
|
441
|
-
def generate_from_template(
|
|
442
|
-
self, template: CommitTemplate, scope: str, description: str
|
|
443
|
-
) -> Dict[str, Any]:
|
|
441
|
+
def generate_from_template(self, template: CommitTemplate, scope: str, description: str) -> Dict[str, Any]:
|
|
444
442
|
"""Generate commit from template"""
|
|
445
443
|
import re
|
|
446
444
|
|
|
@@ -489,9 +487,7 @@ class CommitTemplates:
|
|
|
489
487
|
category_stats[category.value] = len(templates)
|
|
490
488
|
|
|
491
489
|
# Find most used types
|
|
492
|
-
most_used_types = sorted(
|
|
493
|
-
self.templates.items(), key=lambda x: len(x[1].examples), reverse=True
|
|
494
|
-
)[:5]
|
|
490
|
+
most_used_types = sorted(self.templates.items(), key=lambda x: len(x[1].examples), reverse=True)[:5]
|
|
495
491
|
|
|
496
492
|
return {
|
|
497
493
|
"total_templates": total_templates,
|
|
@@ -521,10 +517,7 @@ class CommitTemplates:
|
|
|
521
517
|
matching_templates = []
|
|
522
518
|
|
|
523
519
|
for template in self.templates.values():
|
|
524
|
-
if any(
|
|
525
|
-
keyword.lower() in [k.lower() for k in template.keywords]
|
|
526
|
-
for keyword in keywords
|
|
527
|
-
):
|
|
520
|
+
if any(keyword.lower() in [k.lower() for k in template.keywords] for keyword in keywords):
|
|
528
521
|
matching_templates.append(template)
|
|
529
522
|
|
|
530
523
|
return matching_templates
|
|
@@ -545,8 +538,7 @@ class CommitTemplates:
|
|
|
545
538
|
for name, template in self.templates.items()
|
|
546
539
|
},
|
|
547
540
|
"categories": {
|
|
548
|
-
category.value: [t.type for t in templates]
|
|
549
|
-
for category, templates in self.categories.items()
|
|
541
|
+
category.value: [t.type for t in templates] for category, templates in self.categories.items()
|
|
550
542
|
},
|
|
551
543
|
}
|
|
552
544
|
|
|
@@ -0,0 +1,376 @@
|
|
|
1
|
+
"""
|
|
2
|
+
Git Workflow Management Implementation (moai-foundation-git).
|
|
3
|
+
|
|
4
|
+
Provides:
|
|
5
|
+
- GitVersionDetector: Detect Git version and modern features
|
|
6
|
+
- ConventionalCommitValidator: Validate Conventional Commits format
|
|
7
|
+
- BranchingStrategySelector: Select appropriate branching strategy
|
|
8
|
+
- GitWorkflowManager: Manage Git workflow operations
|
|
9
|
+
- GitPerformanceOptimizer: Performance optimization recommendations
|
|
10
|
+
|
|
11
|
+
Reference: moai-foundation-git for enterprise Git workflows
|
|
12
|
+
"""
|
|
13
|
+
|
|
14
|
+
import re
|
|
15
|
+
from dataclasses import dataclass, field
|
|
16
|
+
from typing import Dict, List, Optional
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
@dataclass
|
|
20
|
+
class GitInfo:
|
|
21
|
+
"""Git version and feature information."""
|
|
22
|
+
|
|
23
|
+
version: str
|
|
24
|
+
supports_switch: bool = False
|
|
25
|
+
supports_worktree: bool = False
|
|
26
|
+
supports_sparse_checkout: bool = False
|
|
27
|
+
modern_features: List[str] = field(default_factory=list)
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
@dataclass
|
|
31
|
+
class ValidateResult:
|
|
32
|
+
"""Conventional Commits validation result."""
|
|
33
|
+
|
|
34
|
+
is_valid: bool
|
|
35
|
+
commit_type: Optional[str] = None
|
|
36
|
+
scope: Optional[str] = None
|
|
37
|
+
subject: Optional[str] = None
|
|
38
|
+
errors: List[str] = field(default_factory=list)
|
|
39
|
+
is_breaking_change: bool = False
|
|
40
|
+
suggestions: List[str] = field(default_factory=list)
|
|
41
|
+
|
|
42
|
+
|
|
43
|
+
@dataclass
|
|
44
|
+
class TDDCommitPhase:
|
|
45
|
+
"""TDD commit phase information."""
|
|
46
|
+
|
|
47
|
+
phase_name: str # "RED", "GREEN", or "REFACTOR"
|
|
48
|
+
commit_type: str # "test", "feat", "refactor"
|
|
49
|
+
description: str
|
|
50
|
+
test_status: str # "failing", "passing", or "optimizing"
|
|
51
|
+
|
|
52
|
+
|
|
53
|
+
class GitVersionDetector:
|
|
54
|
+
"""Detects Git version and supported modern features."""
|
|
55
|
+
|
|
56
|
+
MODERN_FEATURES = {
|
|
57
|
+
"switch": (2, 40), # git switch - alternative to checkout
|
|
58
|
+
"restore": (2, 40), # git restore - alternative to checkout
|
|
59
|
+
"worktree": (2, 30), # git worktree - parallel development
|
|
60
|
+
"sparse-checkout": (2, 25), # git sparse-checkout - monorepo optimization
|
|
61
|
+
"partial-clone": (2, 24), # --filter for partial clones
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
def detect(self, version_string: str) -> GitInfo:
|
|
65
|
+
"""Detect Git version from version string."""
|
|
66
|
+
match = re.search(r"git version ([\d.]+)", version_string)
|
|
67
|
+
if not match:
|
|
68
|
+
return GitInfo(version="unknown")
|
|
69
|
+
|
|
70
|
+
version = match.group(1)
|
|
71
|
+
parts = [int(x) for x in version.split(".")[:2]] # major.minor
|
|
72
|
+
major = parts[0]
|
|
73
|
+
minor = parts[1] if len(parts) > 1 else 0
|
|
74
|
+
|
|
75
|
+
# Determine supported features
|
|
76
|
+
modern_features = []
|
|
77
|
+
supports_switch = False
|
|
78
|
+
supports_worktree = False
|
|
79
|
+
supports_sparse = False
|
|
80
|
+
|
|
81
|
+
for feature, (req_major, req_minor) in self.MODERN_FEATURES.items():
|
|
82
|
+
if major > req_major or (major == req_major and minor >= req_minor):
|
|
83
|
+
modern_features.append(feature)
|
|
84
|
+
if feature == "switch":
|
|
85
|
+
supports_switch = True
|
|
86
|
+
elif feature == "worktree":
|
|
87
|
+
supports_worktree = True
|
|
88
|
+
elif feature == "sparse-checkout":
|
|
89
|
+
supports_sparse = True
|
|
90
|
+
|
|
91
|
+
return GitInfo(
|
|
92
|
+
version=version,
|
|
93
|
+
supports_switch=supports_switch,
|
|
94
|
+
supports_worktree=supports_worktree,
|
|
95
|
+
supports_sparse_checkout=supports_sparse,
|
|
96
|
+
modern_features=modern_features,
|
|
97
|
+
)
|
|
98
|
+
|
|
99
|
+
def get_recommended_commands(self, git_info: GitInfo) -> Dict[str, str]:
|
|
100
|
+
"""Get recommended commands based on Git version."""
|
|
101
|
+
commands = {}
|
|
102
|
+
|
|
103
|
+
if git_info.supports_switch:
|
|
104
|
+
commands["create_branch"] = "git switch -c branch-name"
|
|
105
|
+
commands["switch_branch"] = "git switch branch-name"
|
|
106
|
+
else:
|
|
107
|
+
commands["create_branch"] = "git checkout -b branch-name"
|
|
108
|
+
commands["switch_branch"] = "git checkout branch-name"
|
|
109
|
+
|
|
110
|
+
if git_info.supports_sparse_checkout:
|
|
111
|
+
commands["sparse_clone"] = "git clone --sparse repo.git"
|
|
112
|
+
|
|
113
|
+
if git_info.supports_worktree:
|
|
114
|
+
commands["parallel_work"] = "git worktree add ../dir branch-name"
|
|
115
|
+
|
|
116
|
+
return commands
|
|
117
|
+
|
|
118
|
+
|
|
119
|
+
class ConventionalCommitValidator:
|
|
120
|
+
"""Validates Conventional Commits 2025 format."""
|
|
121
|
+
|
|
122
|
+
VALID_TYPES = {
|
|
123
|
+
"feat": "New feature",
|
|
124
|
+
"fix": "Bug fix",
|
|
125
|
+
"docs": "Documentation",
|
|
126
|
+
"style": "Code style (no logic change)",
|
|
127
|
+
"refactor": "Code refactoring",
|
|
128
|
+
"perf": "Performance improvement",
|
|
129
|
+
"test": "Test updates",
|
|
130
|
+
"chore": "Build/dependencies/tooling",
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
def validate(self, message: str) -> ValidateResult:
|
|
134
|
+
"""Validate Conventional Commits format."""
|
|
135
|
+
lines = message.strip().split("\n")
|
|
136
|
+
first_line = lines[0]
|
|
137
|
+
|
|
138
|
+
# Check for breaking change indicator
|
|
139
|
+
is_breaking = "!" in first_line
|
|
140
|
+
if any("BREAKING CHANGE:" in line for line in lines):
|
|
141
|
+
is_breaking = True
|
|
142
|
+
|
|
143
|
+
# Validate format: type(scope): subject
|
|
144
|
+
pattern = r"^(feat|fix|docs|style|refactor|perf|test|chore)(\(.+?\))?(!)?:\s+.+$"
|
|
145
|
+
match = re.match(pattern, first_line)
|
|
146
|
+
|
|
147
|
+
if not match:
|
|
148
|
+
return ValidateResult(
|
|
149
|
+
is_valid=False,
|
|
150
|
+
errors=[
|
|
151
|
+
"Invalid Conventional Commits format",
|
|
152
|
+
"Expected: type(scope): subject",
|
|
153
|
+
f"Got: {first_line[:50]}...",
|
|
154
|
+
],
|
|
155
|
+
suggestions=[
|
|
156
|
+
"Use one of: feat, fix, docs, style, refactor, perf, test, chore",
|
|
157
|
+
"Add scope in parentheses: feat(auth): ...",
|
|
158
|
+
"Use lowercase with clear description",
|
|
159
|
+
],
|
|
160
|
+
)
|
|
161
|
+
|
|
162
|
+
# Extract components
|
|
163
|
+
type_match = re.match(r"^(\w+)(\((.+?)\))?(!)?", first_line)
|
|
164
|
+
if not type_match:
|
|
165
|
+
return ValidateResult(is_valid=False, errors=["Could not parse commit message"])
|
|
166
|
+
|
|
167
|
+
commit_type = type_match.group(1)
|
|
168
|
+
scope = type_match.group(3) if type_match.group(3) else None
|
|
169
|
+
|
|
170
|
+
# Extract subject (everything after ': ')
|
|
171
|
+
subject_match = re.search(r":\s+(.+)$", first_line)
|
|
172
|
+
subject = subject_match.group(1) if subject_match else None
|
|
173
|
+
|
|
174
|
+
return ValidateResult(
|
|
175
|
+
is_valid=True,
|
|
176
|
+
commit_type=commit_type,
|
|
177
|
+
scope=scope,
|
|
178
|
+
subject=subject,
|
|
179
|
+
is_breaking_change=is_breaking,
|
|
180
|
+
)
|
|
181
|
+
|
|
182
|
+
def validate_batch(self, messages: List[str]) -> Dict[str, ValidateResult]:
|
|
183
|
+
"""Validate multiple commit messages."""
|
|
184
|
+
return {msg: self.validate(msg) for msg in messages}
|
|
185
|
+
|
|
186
|
+
|
|
187
|
+
class BranchingStrategySelector:
|
|
188
|
+
"""Selects appropriate branching strategy for project."""
|
|
189
|
+
|
|
190
|
+
STRATEGIES = {
|
|
191
|
+
"feature_branch": {
|
|
192
|
+
"name": "Feature Branch",
|
|
193
|
+
"description": "Create feature branches, use PRs for review",
|
|
194
|
+
"best_for": ["Teams", "High-risk changes", "Code review required"],
|
|
195
|
+
"commands": [
|
|
196
|
+
"git switch -c feature/SPEC-001",
|
|
197
|
+
"gh pr create --base develop",
|
|
198
|
+
"gh pr merge --squash --auto",
|
|
199
|
+
],
|
|
200
|
+
},
|
|
201
|
+
"direct_commit": {
|
|
202
|
+
"name": "Direct Commit",
|
|
203
|
+
"description": "Commit directly to main/develop branch",
|
|
204
|
+
"best_for": ["Solo developers", "Low-risk changes", "Rapid prototyping"],
|
|
205
|
+
"commands": [
|
|
206
|
+
"git switch develop",
|
|
207
|
+
"git commit -m 'feat: ...'",
|
|
208
|
+
"git push origin develop",
|
|
209
|
+
],
|
|
210
|
+
},
|
|
211
|
+
"per_spec": {
|
|
212
|
+
"name": "Per-SPEC Choice",
|
|
213
|
+
"description": "Decide strategy for each SPEC",
|
|
214
|
+
"best_for": ["Hybrid workflows", "Mixed team projects"],
|
|
215
|
+
"commands": ["Flexible based on SPEC requirements"],
|
|
216
|
+
},
|
|
217
|
+
}
|
|
218
|
+
|
|
219
|
+
def select_strategy(self, team_size: int, risk_level: str, need_review: bool) -> str:
|
|
220
|
+
"""Select branching strategy based on parameters."""
|
|
221
|
+
# Feature branch for teams, risky changes, or review requirements
|
|
222
|
+
if team_size > 1 or risk_level == "high" or need_review:
|
|
223
|
+
return "feature_branch"
|
|
224
|
+
|
|
225
|
+
# Direct commit for solo developers with low risk
|
|
226
|
+
if team_size == 1 and risk_level in ["low", "medium"] and not need_review:
|
|
227
|
+
return "direct_commit"
|
|
228
|
+
|
|
229
|
+
# Default to flexible per-SPEC choice
|
|
230
|
+
return "per_spec"
|
|
231
|
+
|
|
232
|
+
def get_strategy_details(self, strategy: str) -> Dict:
|
|
233
|
+
"""Get details about a strategy."""
|
|
234
|
+
return self.STRATEGIES.get(strategy, {})
|
|
235
|
+
|
|
236
|
+
|
|
237
|
+
class GitWorkflowManager:
|
|
238
|
+
"""Manages Git workflow operations for SPEC-first TDD."""
|
|
239
|
+
|
|
240
|
+
TDD_PHASES = {
|
|
241
|
+
"RED": {
|
|
242
|
+
"commit_type": "test",
|
|
243
|
+
"description": "Write failing tests",
|
|
244
|
+
"tests_status": "failing",
|
|
245
|
+
},
|
|
246
|
+
"GREEN": {
|
|
247
|
+
"commit_type": "feat",
|
|
248
|
+
"description": "Implement to pass tests",
|
|
249
|
+
"tests_status": "passing",
|
|
250
|
+
},
|
|
251
|
+
"REFACTOR": {
|
|
252
|
+
"commit_type": "refactor",
|
|
253
|
+
"description": "Optimize implementation",
|
|
254
|
+
"tests_status": "passing",
|
|
255
|
+
},
|
|
256
|
+
}
|
|
257
|
+
|
|
258
|
+
def create_branch_command(self, branch_name: str, use_modern: bool = True) -> str:
|
|
259
|
+
"""Create branch creation command."""
|
|
260
|
+
if use_modern:
|
|
261
|
+
return f"git switch -c {branch_name}"
|
|
262
|
+
return f"git checkout -b {branch_name}"
|
|
263
|
+
|
|
264
|
+
def format_tdd_commit(self, commit_type: str, scope: str, subject: str, phase: str) -> str:
|
|
265
|
+
"""Format TDD phase commit message."""
|
|
266
|
+
base_msg = f"{commit_type}({scope}): {subject}"
|
|
267
|
+
|
|
268
|
+
# Add phase indicator
|
|
269
|
+
phase_indicators = {
|
|
270
|
+
"RED": "(RED phase)",
|
|
271
|
+
"GREEN": "(GREEN phase)",
|
|
272
|
+
"REFACTOR": "(REFACTOR phase)",
|
|
273
|
+
}
|
|
274
|
+
|
|
275
|
+
phase_indicator = phase_indicators.get(phase, f"({phase})")
|
|
276
|
+
return f"{base_msg} {phase_indicator}"
|
|
277
|
+
|
|
278
|
+
def get_workflow_commands(self, strategy: str, spec_id: str) -> List[str]:
|
|
279
|
+
"""Get workflow commands for strategy."""
|
|
280
|
+
commands = []
|
|
281
|
+
|
|
282
|
+
if strategy == "feature_branch":
|
|
283
|
+
commands = [
|
|
284
|
+
f"git switch -c feature/{spec_id}",
|
|
285
|
+
"# RED phase: git commit -m 'test(...): add tests'",
|
|
286
|
+
"# GREEN phase: git commit -m 'feat(...): implement'",
|
|
287
|
+
"# REFACTOR phase: git commit -m 'refactor(...): optimize'",
|
|
288
|
+
"gh pr create --base develop --generate-description",
|
|
289
|
+
f"gh pr merge {spec_id} --auto --squash",
|
|
290
|
+
]
|
|
291
|
+
elif strategy == "direct_commit":
|
|
292
|
+
commands = [
|
|
293
|
+
"git switch develop",
|
|
294
|
+
"# RED phase: git commit -m 'test(...): add tests'",
|
|
295
|
+
"# GREEN phase: git commit -m 'feat(...): implement'",
|
|
296
|
+
"# REFACTOR phase: git commit -m 'refactor(...): optimize'",
|
|
297
|
+
"git push origin develop",
|
|
298
|
+
]
|
|
299
|
+
|
|
300
|
+
return commands
|
|
301
|
+
|
|
302
|
+
|
|
303
|
+
class GitPerformanceOptimizer:
|
|
304
|
+
"""Provides Git performance optimization recommendations."""
|
|
305
|
+
|
|
306
|
+
PERFORMANCE_TIPS = {
|
|
307
|
+
"small": [
|
|
308
|
+
"Standard clone operations sufficient",
|
|
309
|
+
"Keep working directory clean",
|
|
310
|
+
"Regular garbage collection",
|
|
311
|
+
],
|
|
312
|
+
"medium": [
|
|
313
|
+
"Enable MIDX for faster operations",
|
|
314
|
+
"Use shallow clones for CI/CD",
|
|
315
|
+
"Consider sparse-checkout for selective directories",
|
|
316
|
+
],
|
|
317
|
+
"large": [
|
|
318
|
+
"Enable MIDX: git config --global gc.writeMultiPackIndex true",
|
|
319
|
+
"Use partial clones: git clone --filter=blob:none (81% smaller)",
|
|
320
|
+
"Use sparse-checkout for monorepo (70% faster clone)",
|
|
321
|
+
"Implement shallow clones for CI/CD: git clone --depth 100",
|
|
322
|
+
"Run: git repack -ad --write-midx for 38% performance improvement",
|
|
323
|
+
],
|
|
324
|
+
}
|
|
325
|
+
|
|
326
|
+
OPTIMIZATION_CONFIGS = {
|
|
327
|
+
"midx": {
|
|
328
|
+
"name": "Multi-Pack Indexes (MIDX)",
|
|
329
|
+
"benefit": "38% faster repository operations",
|
|
330
|
+
"command": "git config --global gc.writeMultiPackIndex true",
|
|
331
|
+
},
|
|
332
|
+
"partial_clone": {
|
|
333
|
+
"name": "Partial Clones (Blob-less)",
|
|
334
|
+
"benefit": "81% smaller downloads",
|
|
335
|
+
"command": "git clone --filter=blob:none https://repo.git",
|
|
336
|
+
},
|
|
337
|
+
"sparse_checkout": {
|
|
338
|
+
"name": "Sparse Checkout",
|
|
339
|
+
"benefit": "70% faster clone for monorepos",
|
|
340
|
+
"command": "git clone --sparse && git sparse-checkout init --cone",
|
|
341
|
+
},
|
|
342
|
+
"shallow_clone": {
|
|
343
|
+
"name": "Shallow Clones",
|
|
344
|
+
"benefit": "73% smaller initial download",
|
|
345
|
+
"command": "git clone --depth 100 https://repo.git",
|
|
346
|
+
},
|
|
347
|
+
}
|
|
348
|
+
|
|
349
|
+
def get_tips_for_repo_size(self, size: str) -> List[str]:
|
|
350
|
+
"""Get performance tips for repository size."""
|
|
351
|
+
return self.PERFORMANCE_TIPS.get(size, [])
|
|
352
|
+
|
|
353
|
+
def get_optimization_configs(self) -> Dict:
|
|
354
|
+
"""Get all optimization configurations."""
|
|
355
|
+
return self.OPTIMIZATION_CONFIGS
|
|
356
|
+
|
|
357
|
+
def get_recommended_optimizations(self, repo_size: str) -> List[str]:
|
|
358
|
+
"""Get recommended optimizations for repo size."""
|
|
359
|
+
if repo_size == "large":
|
|
360
|
+
return ["midx", "partial_clone", "sparse_checkout"]
|
|
361
|
+
elif repo_size == "medium":
|
|
362
|
+
return ["midx", "shallow_clone"]
|
|
363
|
+
return []
|
|
364
|
+
|
|
365
|
+
|
|
366
|
+
# Export public API
|
|
367
|
+
__all__ = [
|
|
368
|
+
"GitInfo",
|
|
369
|
+
"ValidateResult",
|
|
370
|
+
"TDDCommitPhase",
|
|
371
|
+
"GitVersionDetector",
|
|
372
|
+
"ConventionalCommitValidator",
|
|
373
|
+
"BranchingStrategySelector",
|
|
374
|
+
"GitWorkflowManager",
|
|
375
|
+
"GitPerformanceOptimizer",
|
|
376
|
+
]
|