moai-adk 0.25.4__py3-none-any.whl → 0.41.0__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 +60 -126
- moai_adk/cli/commands/language.py +14 -35
- moai_adk/cli/commands/status.py +9 -15
- moai_adk/cli/commands/update.py +1560 -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 +683 -0
- moai_adk/cli/worktree/exceptions.py +89 -0
- moai_adk/cli/worktree/manager.py +493 -0
- moai_adk/cli/worktree/models.py +65 -0
- moai_adk/cli/worktree/registry.py +422 -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/migration.py +19 -9
- moai_adk/core/config/unified.py +610 -0
- moai_adk/core/context_manager.py +6 -12
- moai_adk/core/enterprise_features.py +1404 -0
- moai_adk/core/error_recovery_system.py +747 -116
- 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 +422 -0
- moai_adk/core/git/event_detector.py +16 -5
- moai_adk/core/git/manager.py +91 -1
- 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 +578 -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 +666 -0
- moai_adk/core/migration/alfred_to_moai_migrator.py +389 -0
- moai_adk/core/migration/backup_manager.py +131 -12
- moai_adk/core/migration/custom_element_scanner.py +358 -0
- moai_adk/core/migration/file_migrator.py +181 -18
- moai_adk/core/migration/interactive_checkbox_ui.py +499 -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 +127 -27
- moai_adk/core/migration/version_migrator.py +47 -12
- moai_adk/core/performance/cache_system.py +8 -10
- moai_adk/core/phase_optimized_hook_scheduler.py +879 -0
- moai_adk/core/project/backup_utils.py +9 -1
- moai_adk/core/project/checker.py +2 -4
- moai_adk/core/project/detector.py +1 -3
- moai_adk/core/project/initializer.py +142 -93
- moai_adk/core/project/phase_executor.py +130 -111
- moai_adk/core/project/validator.py +6 -12
- moai_adk/core/quality/trust_checker.py +39 -37
- moai_adk/core/realtime_monitoring_dashboard.py +1724 -0
- moai_adk/core/robust_json_parser.py +611 -0
- moai_adk/core/rollback_manager.py +116 -164
- moai_adk/core/session_manager.py +10 -26
- moai_adk/core/skill_loading_system.py +579 -0
- moai_adk/core/spec_status_manager.py +64 -74
- moai_adk/core/template/backup.py +48 -22
- moai_adk/core/template/config.py +142 -45
- moai_adk/core/template/merger.py +45 -27
- moai_adk/core/template/processor.py +391 -152
- moai_adk/core/template_engine.py +83 -41
- moai_adk/core/template_variable_synchronizer.py +431 -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 +477 -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 +18 -6
- moai_adk/statusline/enhanced_output_style_detector.py +23 -15
- moai_adk/statusline/main.py +109 -15
- moai_adk/statusline/renderer.py +85 -69
- 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 +716 -0
- moai_adk/templates/.claude/agents/moai/builder-agent.md +480 -0
- moai_adk/templates/.claude/agents/moai/builder-command.md +1194 -0
- moai_adk/templates/.claude/agents/moai/builder-plugin.md +753 -0
- moai_adk/templates/.claude/agents/moai/builder-skill.md +672 -0
- moai_adk/templates/.claude/agents/moai/expert-backend.md +903 -0
- moai_adk/templates/.claude/agents/moai/expert-database.md +782 -0
- moai_adk/templates/.claude/agents/moai/expert-debug.md +407 -0
- moai_adk/templates/.claude/agents/moai/expert-devops.md +722 -0
- moai_adk/templates/.claude/agents/moai/expert-frontend.md +727 -0
- moai_adk/templates/.claude/agents/moai/expert-performance.md +661 -0
- moai_adk/templates/.claude/agents/moai/expert-refactoring.md +218 -0
- moai_adk/templates/.claude/agents/moai/expert-security.md +525 -0
- moai_adk/templates/.claude/agents/moai/expert-testing.md +737 -0
- moai_adk/templates/.claude/agents/moai/expert-uiux.md +1047 -0
- moai_adk/templates/.claude/agents/moai/manager-claude-code.md +438 -0
- moai_adk/templates/.claude/agents/moai/manager-docs.md +578 -0
- moai_adk/templates/.claude/agents/moai/manager-git.md +1092 -0
- moai_adk/templates/.claude/agents/moai/manager-project.md +897 -0
- moai_adk/templates/.claude/agents/moai/manager-quality.md +640 -0
- moai_adk/templates/.claude/agents/moai/manager-spec.md +815 -0
- moai_adk/templates/.claude/agents/moai/manager-strategy.md +786 -0
- moai_adk/templates/.claude/agents/moai/manager-tdd.md +797 -0
- moai_adk/templates/.claude/agents/moai/mcp-context7.md +464 -0
- moai_adk/templates/.claude/agents/moai/mcp-figma.md +1588 -0
- moai_adk/templates/.claude/agents/moai/mcp-notion.md +795 -0
- moai_adk/templates/.claude/agents/moai/mcp-playwright.md +475 -0
- moai_adk/templates/.claude/agents/moai/mcp-sequential-thinking.md +1038 -0
- moai_adk/templates/.claude/commands/moai/0-project.md +1339 -0
- moai_adk/templates/.claude/commands/moai/1-plan.md +1367 -0
- moai_adk/templates/.claude/commands/moai/2-run.md +825 -0
- moai_adk/templates/.claude/commands/moai/3-sync.md +1358 -0
- moai_adk/templates/.claude/commands/moai/9-feedback.md +320 -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/README.md +143 -0
- moai_adk/templates/.claude/hooks/moai/lib/__init__.py +104 -0
- moai_adk/templates/.claude/hooks/moai/lib/checkpoint.py +247 -0
- moai_adk/templates/.claude/hooks/moai/lib/common.py +161 -0
- moai_adk/templates/.claude/hooks/moai/lib/config_manager.py +444 -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/exceptions.py +171 -0
- moai_adk/templates/.claude/hooks/moai/lib/git_operations_manager.py +590 -0
- moai_adk/templates/.claude/hooks/moai/lib/language_validator.py +407 -0
- moai_adk/templates/.claude/hooks/moai/lib/models.py +104 -0
- moai_adk/templates/.claude/hooks/moai/lib/path_utils.py +219 -0
- moai_adk/templates/.claude/hooks/moai/lib/project.py +777 -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/tool_registry.py +804 -0
- moai_adk/templates/.claude/hooks/moai/lib/unified_timeout_manager.py +542 -0
- moai_adk/templates/.claude/hooks/moai/post_tool__ast_grep_scan.py +256 -0
- moai_adk/templates/.claude/hooks/moai/post_tool__code_formatter.py +253 -0
- moai_adk/templates/.claude/hooks/moai/post_tool__linter.py +307 -0
- moai_adk/templates/.claude/hooks/moai/pre_tool__security_guard.py +231 -0
- moai_adk/templates/.claude/hooks/moai/session_end__auto_cleanup.py +866 -0
- moai_adk/templates/.claude/hooks/moai/session_start__show_project_info.py +1125 -0
- moai_adk/templates/.claude/output-styles/moai/r2d2.md +643 -0
- moai_adk/templates/.claude/output-styles/moai/yoda.md +359 -0
- moai_adk/templates/.claude/settings.json +209 -0
- moai_adk/templates/.claude/skills/moai-ai-nano-banana/SKILL.md +302 -0
- moai_adk/templates/.claude/skills/moai-ai-nano-banana/examples.md +431 -0
- moai_adk/templates/.claude/skills/moai-ai-nano-banana/reference.md +139 -0
- moai_adk/templates/.claude/skills/moai-ai-nano-banana/scripts/batch_generate.py +560 -0
- moai_adk/templates/.claude/skills/moai-ai-nano-banana/scripts/generate_image.py +362 -0
- moai_adk/templates/.claude/skills/moai-docs-generation/SKILL.md +302 -0
- moai_adk/templates/.claude/skills/moai-docs-generation/examples.md +252 -0
- moai_adk/templates/.claude/skills/moai-docs-generation/modules/README.md +56 -0
- moai_adk/templates/.claude/skills/moai-docs-generation/modules/api-documentation.md +120 -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 +185 -0
- moai_adk/templates/.claude/skills/moai-docs-generation/modules/user-guides.md +207 -0
- moai_adk/templates/.claude/skills/moai-docs-generation/reference.md +234 -0
- moai_adk/templates/.claude/skills/moai-domain-backend/SKILL.md +324 -0
- moai_adk/templates/.claude/skills/moai-domain-backend/examples.md +718 -0
- moai_adk/templates/.claude/skills/moai-domain-backend/reference.md +464 -0
- moai_adk/templates/.claude/skills/moai-domain-database/SKILL.md +326 -0
- moai_adk/templates/.claude/skills/moai-domain-database/examples.md +830 -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-database/reference.md +545 -0
- moai_adk/templates/.claude/skills/moai-domain-frontend/SKILL.md +194 -0
- moai_adk/templates/.claude/skills/moai-domain-frontend/examples.md +968 -0
- moai_adk/templates/.claude/skills/moai-domain-frontend/modules/component-architecture.md +723 -0
- moai_adk/templates/.claude/skills/moai-domain-frontend/modules/nextjs16-patterns.md +713 -0
- moai_adk/templates/.claude/skills/moai-domain-frontend/modules/performance-optimization.md +694 -0
- moai_adk/templates/.claude/skills/moai-domain-frontend/modules/react19-patterns.md +591 -0
- moai_adk/templates/.claude/skills/moai-domain-frontend/modules/state-management.md +680 -0
- moai_adk/templates/.claude/skills/moai-domain-frontend/modules/vue35-patterns.md +802 -0
- moai_adk/templates/.claude/skills/moai-domain-frontend/reference.md +664 -0
- moai_adk/templates/.claude/skills/moai-domain-uiux/SKILL.md +454 -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/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 +280 -0
- moai_adk/templates/.claude/skills/moai-formats-data/examples.md +804 -0
- moai_adk/templates/.claude/skills/moai-formats-data/modules/README.md +327 -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-formats-data/reference.md +585 -0
- moai_adk/templates/.claude/skills/moai-foundation-claude/SKILL.md +243 -0
- moai_adk/templates/.claude/skills/moai-foundation-claude/examples.md +732 -0
- moai_adk/templates/.claude/skills/moai-foundation-claude/reference/advanced-agent-patterns.md +370 -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-cli-reference-official.md +420 -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-devcontainers-official.md +381 -0
- moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-discover-plugins-official.md +379 -0
- moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-headless-official.md +378 -0
- moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-hooks-official.md +670 -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-plugin-marketplaces-official.md +308 -0
- moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-plugins-official.md +432 -0
- moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-sandboxing-official.md +282 -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 +467 -0
- moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-statusline-official.md +293 -0
- moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-sub-agents-official.md +420 -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-claude/reference.md +209 -0
- moai_adk/templates/.claude/skills/moai-foundation-context/SKILL.md +449 -0
- moai_adk/templates/.claude/skills/moai-foundation-context/examples.md +1048 -0
- moai_adk/templates/.claude/skills/moai-foundation-context/reference.md +246 -0
- moai_adk/templates/.claude/skills/moai-foundation-core/SKILL.md +414 -0
- moai_adk/templates/.claude/skills/moai-foundation-core/examples.md +358 -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 +359 -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-advanced.md +279 -0
- moai_adk/templates/.claude/skills/moai-foundation-core/modules/delegation-implementation.md +267 -0
- moai_adk/templates/.claude/skills/moai-foundation-core/modules/delegation-patterns.md +228 -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/patterns.md +22 -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-ears-format.md +200 -0
- moai_adk/templates/.claude/skills/moai-foundation-core/modules/spec-first-tdd.md +171 -0
- moai_adk/templates/.claude/skills/moai-foundation-core/modules/spec-tdd-implementation.md +275 -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 +239 -0
- moai_adk/templates/.claude/skills/moai-foundation-core/modules/trust-5-implementation.md +244 -0
- moai_adk/templates/.claude/skills/moai-foundation-core/modules/trust-5-validation.md +219 -0
- moai_adk/templates/.claude/skills/moai-foundation-core/reference.md +478 -0
- moai_adk/templates/.claude/skills/moai-foundation-philosopher/SKILL.md +311 -0
- moai_adk/templates/.claude/skills/moai-foundation-philosopher/examples.md +228 -0
- moai_adk/templates/.claude/skills/moai-foundation-philosopher/modules/assumption-matrix.md +80 -0
- moai_adk/templates/.claude/skills/moai-foundation-philosopher/modules/cognitive-bias.md +199 -0
- moai_adk/templates/.claude/skills/moai-foundation-philosopher/modules/first-principles.md +140 -0
- moai_adk/templates/.claude/skills/moai-foundation-philosopher/modules/trade-off-analysis.md +154 -0
- moai_adk/templates/.claude/skills/moai-foundation-philosopher/reference.md +157 -0
- moai_adk/templates/.claude/skills/moai-foundation-quality/SKILL.md +363 -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-lang-cpp/SKILL.md +430 -0
- moai_adk/templates/.claude/skills/moai-lang-cpp/examples.md +17 -0
- moai_adk/templates/.claude/skills/moai-lang-cpp/modules/advanced-patterns.md +401 -0
- moai_adk/templates/.claude/skills/moai-lang-cpp/reference.md +17 -0
- moai_adk/templates/.claude/skills/moai-lang-csharp/SKILL.md +193 -0
- moai_adk/templates/.claude/skills/moai-lang-csharp/examples.md +585 -0
- moai_adk/templates/.claude/skills/moai-lang-csharp/modules/aspnet-core.md +627 -0
- moai_adk/templates/.claude/skills/moai-lang-csharp/modules/blazor-components.md +767 -0
- moai_adk/templates/.claude/skills/moai-lang-csharp/modules/cqrs-validation.md +626 -0
- moai_adk/templates/.claude/skills/moai-lang-csharp/modules/csharp12-features.md +580 -0
- moai_adk/templates/.claude/skills/moai-lang-csharp/modules/efcore-patterns.md +622 -0
- moai_adk/templates/.claude/skills/moai-lang-csharp/reference.md +403 -0
- moai_adk/templates/.claude/skills/moai-lang-elixir/SKILL.md +394 -0
- moai_adk/templates/.claude/skills/moai-lang-elixir/examples.md +17 -0
- moai_adk/templates/.claude/skills/moai-lang-elixir/modules/advanced-patterns.md +531 -0
- moai_adk/templates/.claude/skills/moai-lang-elixir/reference.md +17 -0
- moai_adk/templates/.claude/skills/moai-lang-flutter/SKILL.md +472 -0
- moai_adk/templates/.claude/skills/moai-lang-flutter/examples.md +1090 -0
- moai_adk/templates/.claude/skills/moai-lang-flutter/reference.md +686 -0
- moai_adk/templates/.claude/skills/moai-lang-go/SKILL.md +377 -0
- moai_adk/templates/.claude/skills/moai-lang-go/examples.md +919 -0
- moai_adk/templates/.claude/skills/moai-lang-go/reference.md +737 -0
- moai_adk/templates/.claude/skills/moai-lang-java/SKILL.md +386 -0
- moai_adk/templates/.claude/skills/moai-lang-java/examples.md +864 -0
- moai_adk/templates/.claude/skills/moai-lang-java/reference.md +291 -0
- moai_adk/templates/.claude/skills/moai-lang-javascript/SKILL.md +418 -0
- moai_adk/templates/.claude/skills/moai-lang-javascript/examples.md +973 -0
- moai_adk/templates/.claude/skills/moai-lang-javascript/reference.md +1543 -0
- moai_adk/templates/.claude/skills/moai-lang-kotlin/SKILL.md +383 -0
- moai_adk/templates/.claude/skills/moai-lang-kotlin/examples.md +1006 -0
- moai_adk/templates/.claude/skills/moai-lang-kotlin/reference.md +562 -0
- moai_adk/templates/.claude/skills/moai-lang-php/SKILL.md +504 -0
- moai_adk/templates/.claude/skills/moai-lang-php/examples.md +17 -0
- moai_adk/templates/.claude/skills/moai-lang-php/modules/advanced-patterns.md +538 -0
- moai_adk/templates/.claude/skills/moai-lang-php/reference.md +17 -0
- moai_adk/templates/.claude/skills/moai-lang-python/SKILL.md +489 -0
- moai_adk/templates/.claude/skills/moai-lang-python/examples.md +977 -0
- moai_adk/templates/.claude/skills/moai-lang-python/reference.md +804 -0
- moai_adk/templates/.claude/skills/moai-lang-r/SKILL.md +389 -0
- moai_adk/templates/.claude/skills/moai-lang-r/examples.md +17 -0
- moai_adk/templates/.claude/skills/moai-lang-r/modules/advanced-patterns.md +489 -0
- moai_adk/templates/.claude/skills/moai-lang-r/reference.md +17 -0
- moai_adk/templates/.claude/skills/moai-lang-ruby/SKILL.md +432 -0
- moai_adk/templates/.claude/skills/moai-lang-ruby/examples.md +17 -0
- moai_adk/templates/.claude/skills/moai-lang-ruby/modules/advanced-patterns.md +309 -0
- moai_adk/templates/.claude/skills/moai-lang-ruby/modules/testing-patterns.md +306 -0
- moai_adk/templates/.claude/skills/moai-lang-ruby/reference.md +17 -0
- moai_adk/templates/.claude/skills/moai-lang-rust/SKILL.md +377 -0
- moai_adk/templates/.claude/skills/moai-lang-rust/examples.md +659 -0
- moai_adk/templates/.claude/skills/moai-lang-rust/reference.md +504 -0
- moai_adk/templates/.claude/skills/moai-lang-scala/SKILL.md +211 -0
- moai_adk/templates/.claude/skills/moai-lang-scala/examples.md +633 -0
- moai_adk/templates/.claude/skills/moai-lang-scala/modules/akka-actors.md +479 -0
- moai_adk/templates/.claude/skills/moai-lang-scala/modules/cats-effect.md +489 -0
- moai_adk/templates/.claude/skills/moai-lang-scala/modules/functional-programming.md +460 -0
- moai_adk/templates/.claude/skills/moai-lang-scala/modules/spark-data.md +498 -0
- moai_adk/templates/.claude/skills/moai-lang-scala/modules/zio-patterns.md +541 -0
- moai_adk/templates/.claude/skills/moai-lang-scala/reference.md +423 -0
- moai_adk/templates/.claude/skills/moai-lang-swift/SKILL.md +191 -0
- moai_adk/templates/.claude/skills/moai-lang-swift/examples.md +918 -0
- moai_adk/templates/.claude/skills/moai-lang-swift/modules/combine-reactive.md +256 -0
- moai_adk/templates/.claude/skills/moai-lang-swift/modules/concurrency.md +270 -0
- moai_adk/templates/.claude/skills/moai-lang-swift/modules/swift6-features.md +265 -0
- moai_adk/templates/.claude/skills/moai-lang-swift/modules/swiftui-patterns.md +314 -0
- moai_adk/templates/.claude/skills/moai-lang-swift/reference.md +672 -0
- moai_adk/templates/.claude/skills/moai-lang-typescript/SKILL.md +364 -0
- moai_adk/templates/.claude/skills/moai-lang-typescript/examples.md +1089 -0
- moai_adk/templates/.claude/skills/moai-lang-typescript/reference.md +731 -0
- moai_adk/templates/.claude/skills/moai-library-mermaid/SKILL.md +164 -0
- moai_adk/templates/.claude/skills/moai-library-mermaid/examples.md +270 -0
- moai_adk/templates/.claude/skills/moai-library-mermaid/modules/advanced-patterns.md +465 -0
- moai_adk/templates/.claude/skills/moai-library-mermaid/modules/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 +335 -0
- moai_adk/templates/.claude/skills/moai-library-nextra/examples.md +592 -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 +336 -0
- moai_adk/templates/.claude/skills/moai-library-nextra/modules/configuration.md +350 -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/modules/optimization.md +303 -0
- moai_adk/templates/.claude/skills/moai-library-nextra/reference.md +379 -0
- moai_adk/templates/.claude/skills/moai-library-shadcn/SKILL.md +373 -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-auth0/SKILL.md +283 -0
- moai_adk/templates/.claude/skills/moai-platform-auth0/examples.md +2446 -0
- moai_adk/templates/.claude/skills/moai-platform-auth0/modules/adaptive-mfa.md +233 -0
- moai_adk/templates/.claude/skills/moai-platform-auth0/modules/akamai-integration.md +214 -0
- moai_adk/templates/.claude/skills/moai-platform-auth0/modules/application-credentials.md +280 -0
- moai_adk/templates/.claude/skills/moai-platform-auth0/modules/attack-protection-log-events.md +224 -0
- moai_adk/templates/.claude/skills/moai-platform-auth0/modules/attack-protection-overview.md +140 -0
- moai_adk/templates/.claude/skills/moai-platform-auth0/modules/bot-detection.md +144 -0
- moai_adk/templates/.claude/skills/moai-platform-auth0/modules/breached-password-detection.md +187 -0
- moai_adk/templates/.claude/skills/moai-platform-auth0/modules/brute-force-protection.md +189 -0
- moai_adk/templates/.claude/skills/moai-platform-auth0/modules/certifications.md +282 -0
- moai_adk/templates/.claude/skills/moai-platform-auth0/modules/compliance-overview.md +263 -0
- moai_adk/templates/.claude/skills/moai-platform-auth0/modules/continuous-session-protection.md +307 -0
- moai_adk/templates/.claude/skills/moai-platform-auth0/modules/customize-mfa.md +177 -0
- moai_adk/templates/.claude/skills/moai-platform-auth0/modules/dpop-implementation.md +283 -0
- moai_adk/templates/.claude/skills/moai-platform-auth0/modules/fapi-implementation.md +259 -0
- moai_adk/templates/.claude/skills/moai-platform-auth0/modules/gdpr-compliance.md +313 -0
- moai_adk/templates/.claude/skills/moai-platform-auth0/modules/guardian-configuration.md +269 -0
- moai_adk/templates/.claude/skills/moai-platform-auth0/modules/highly-regulated-identity.md +272 -0
- moai_adk/templates/.claude/skills/moai-platform-auth0/modules/jwt-fundamentals.md +248 -0
- moai_adk/templates/.claude/skills/moai-platform-auth0/modules/mdl-verification.md +210 -0
- moai_adk/templates/.claude/skills/moai-platform-auth0/modules/mfa-api-management.md +278 -0
- moai_adk/templates/.claude/skills/moai-platform-auth0/modules/mfa-factors.md +226 -0
- moai_adk/templates/.claude/skills/moai-platform-auth0/modules/mfa-overview.md +174 -0
- moai_adk/templates/.claude/skills/moai-platform-auth0/modules/mtls-sender-constraining.md +316 -0
- moai_adk/templates/.claude/skills/moai-platform-auth0/modules/ropg-flow-mfa.md +216 -0
- moai_adk/templates/.claude/skills/moai-platform-auth0/modules/security-center.md +325 -0
- moai_adk/templates/.claude/skills/moai-platform-auth0/modules/security-guidance.md +277 -0
- moai_adk/templates/.claude/skills/moai-platform-auth0/modules/state-parameters.md +177 -0
- moai_adk/templates/.claude/skills/moai-platform-auth0/modules/step-up-authentication.md +251 -0
- moai_adk/templates/.claude/skills/moai-platform-auth0/modules/suspicious-ip-throttling.md +240 -0
- moai_adk/templates/.claude/skills/moai-platform-auth0/modules/tenant-access-control.md +179 -0
- moai_adk/templates/.claude/skills/moai-platform-auth0/modules/webauthn-fido.md +235 -0
- moai_adk/templates/.claude/skills/moai-platform-auth0/reference.md +224 -0
- moai_adk/templates/.claude/skills/moai-platform-clerk/SKILL.md +425 -0
- moai_adk/templates/.claude/skills/moai-platform-clerk/modules/advanced-patterns.md +417 -0
- moai_adk/templates/.claude/skills/moai-platform-clerk/reference.md +273 -0
- moai_adk/templates/.claude/skills/moai-platform-convex/SKILL.md +228 -0
- moai_adk/templates/.claude/skills/moai-platform-convex/examples.md +506 -0
- moai_adk/templates/.claude/skills/moai-platform-convex/modules/auth-integration.md +421 -0
- moai_adk/templates/.claude/skills/moai-platform-convex/modules/file-storage.md +474 -0
- moai_adk/templates/.claude/skills/moai-platform-convex/modules/reactive-queries.md +302 -0
- moai_adk/templates/.claude/skills/moai-platform-convex/modules/server-functions.md +452 -0
- moai_adk/templates/.claude/skills/moai-platform-convex/reference.md +385 -0
- moai_adk/templates/.claude/skills/moai-platform-firebase-auth/SKILL.md +249 -0
- moai_adk/templates/.claude/skills/moai-platform-firebase-auth/examples.md +514 -0
- moai_adk/templates/.claude/skills/moai-platform-firebase-auth/modules/custom-claims.md +374 -0
- moai_adk/templates/.claude/skills/moai-platform-firebase-auth/modules/phone-auth.md +372 -0
- moai_adk/templates/.claude/skills/moai-platform-firebase-auth/modules/social-auth.md +339 -0
- moai_adk/templates/.claude/skills/moai-platform-firebase-auth/reference.md +382 -0
- moai_adk/templates/.claude/skills/moai-platform-firestore/SKILL.md +230 -0
- moai_adk/templates/.claude/skills/moai-platform-firestore/examples.md +445 -0
- moai_adk/templates/.claude/skills/moai-platform-firestore/modules/offline-cache.md +392 -0
- moai_adk/templates/.claude/skills/moai-platform-firestore/modules/realtime-listeners.md +441 -0
- moai_adk/templates/.claude/skills/moai-platform-firestore/modules/security-rules.md +352 -0
- moai_adk/templates/.claude/skills/moai-platform-firestore/modules/transactions.md +452 -0
- moai_adk/templates/.claude/skills/moai-platform-firestore/reference.md +322 -0
- moai_adk/templates/.claude/skills/moai-platform-neon/SKILL.md +205 -0
- moai_adk/templates/.claude/skills/moai-platform-neon/examples.md +470 -0
- moai_adk/templates/.claude/skills/moai-platform-neon/modules/auto-scaling.md +349 -0
- moai_adk/templates/.claude/skills/moai-platform-neon/modules/branching-workflows.md +354 -0
- moai_adk/templates/.claude/skills/moai-platform-neon/modules/connection-pooling.md +412 -0
- moai_adk/templates/.claude/skills/moai-platform-neon/modules/pitr-backups.md +458 -0
- moai_adk/templates/.claude/skills/moai-platform-neon/reference.md +272 -0
- moai_adk/templates/.claude/skills/moai-platform-railway/SKILL.md +223 -0
- moai_adk/templates/.claude/skills/moai-platform-railway/examples.md +539 -0
- moai_adk/templates/.claude/skills/moai-platform-railway/modules/docker-deployment.md +261 -0
- moai_adk/templates/.claude/skills/moai-platform-railway/modules/multi-service.md +291 -0
- moai_adk/templates/.claude/skills/moai-platform-railway/modules/networking-domains.md +338 -0
- moai_adk/templates/.claude/skills/moai-platform-railway/modules/volumes-storage.md +353 -0
- moai_adk/templates/.claude/skills/moai-platform-railway/reference.md +374 -0
- moai_adk/templates/.claude/skills/moai-platform-supabase/SKILL.md +206 -0
- moai_adk/templates/.claude/skills/moai-platform-supabase/examples.md +502 -0
- moai_adk/templates/.claude/skills/moai-platform-supabase/modules/auth-integration.md +384 -0
- moai_adk/templates/.claude/skills/moai-platform-supabase/modules/edge-functions.md +371 -0
- moai_adk/templates/.claude/skills/moai-platform-supabase/modules/postgresql-pgvector.md +231 -0
- moai_adk/templates/.claude/skills/moai-platform-supabase/modules/realtime-presence.md +354 -0
- moai_adk/templates/.claude/skills/moai-platform-supabase/modules/row-level-security.md +286 -0
- moai_adk/templates/.claude/skills/moai-platform-supabase/modules/storage-cdn.md +319 -0
- moai_adk/templates/.claude/skills/moai-platform-supabase/modules/typescript-patterns.md +453 -0
- moai_adk/templates/.claude/skills/moai-platform-supabase/reference.md +284 -0
- moai_adk/templates/.claude/skills/moai-platform-vercel/SKILL.md +209 -0
- moai_adk/templates/.claude/skills/moai-platform-vercel/examples.md +502 -0
- moai_adk/templates/.claude/skills/moai-platform-vercel/modules/analytics-speed.md +348 -0
- moai_adk/templates/.claude/skills/moai-platform-vercel/modules/deployment-config.md +344 -0
- moai_adk/templates/.claude/skills/moai-platform-vercel/modules/edge-functions.md +222 -0
- moai_adk/templates/.claude/skills/moai-platform-vercel/modules/isr-caching.md +306 -0
- moai_adk/templates/.claude/skills/moai-platform-vercel/modules/kv-storage.md +399 -0
- moai_adk/templates/.claude/skills/moai-platform-vercel/reference.md +360 -0
- moai_adk/templates/.claude/skills/moai-plugin-builder/SKILL.md +473 -0
- moai_adk/templates/.claude/skills/moai-plugin-builder/examples.md +621 -0
- moai_adk/templates/.claude/skills/moai-plugin-builder/modules/migration.md +341 -0
- moai_adk/templates/.claude/skills/moai-plugin-builder/modules/validation.md +373 -0
- moai_adk/templates/.claude/skills/moai-plugin-builder/reference.md +464 -0
- moai_adk/templates/.claude/skills/moai-tool-ast-grep/SKILL.md +306 -0
- moai_adk/templates/.claude/skills/moai-tool-ast-grep/examples.md +1099 -0
- moai_adk/templates/.claude/skills/moai-tool-ast-grep/modules/language-specific.md +307 -0
- moai_adk/templates/.claude/skills/moai-tool-ast-grep/modules/pattern-syntax.md +237 -0
- moai_adk/templates/.claude/skills/moai-tool-ast-grep/modules/refactoring-patterns.md +260 -0
- moai_adk/templates/.claude/skills/moai-tool-ast-grep/modules/security-rules.md +239 -0
- moai_adk/templates/.claude/skills/moai-tool-ast-grep/reference.md +288 -0
- moai_adk/templates/.claude/skills/moai-tool-ast-grep/rules/languages/go.yml +90 -0
- moai_adk/templates/.claude/skills/moai-tool-ast-grep/rules/languages/python.yml +101 -0
- moai_adk/templates/.claude/skills/moai-tool-ast-grep/rules/languages/typescript.yml +83 -0
- moai_adk/templates/.claude/skills/moai-tool-ast-grep/rules/quality/complexity-check.yml +94 -0
- moai_adk/templates/.claude/skills/moai-tool-ast-grep/rules/quality/deprecated-apis.yml +84 -0
- moai_adk/templates/.claude/skills/moai-tool-ast-grep/rules/security/secrets-detection.yml +89 -0
- moai_adk/templates/.claude/skills/moai-tool-ast-grep/rules/security/sql-injection.yml +45 -0
- moai_adk/templates/.claude/skills/moai-tool-ast-grep/rules/security/xss-prevention.yml +50 -0
- moai_adk/templates/.claude/skills/moai-tool-ast-grep/rules/sgconfig.yml +54 -0
- moai_adk/templates/.claude/skills/moai-tool-opencode/SKILL.md +214 -0
- moai_adk/templates/.claude/skills/moai-tool-opencode/examples.md +697 -0
- moai_adk/templates/.claude/skills/moai-tool-opencode/index.md +96 -0
- moai_adk/templates/.claude/skills/moai-tool-opencode/modules/configure/acp.md +115 -0
- moai_adk/templates/.claude/skills/moai-tool-opencode/modules/configure/agents.md +241 -0
- moai_adk/templates/.claude/skills/moai-tool-opencode/modules/configure/commands.md +197 -0
- moai_adk/templates/.claude/skills/moai-tool-opencode/modules/configure/custom-tools.md +197 -0
- moai_adk/templates/.claude/skills/moai-tool-opencode/modules/configure/formatters.md +164 -0
- moai_adk/templates/.claude/skills/moai-tool-opencode/modules/configure/keybinds.md +150 -0
- moai_adk/templates/.claude/skills/moai-tool-opencode/modules/configure/lsp-servers.md +156 -0
- moai_adk/templates/.claude/skills/moai-tool-opencode/modules/configure/mcp-servers.md +214 -0
- moai_adk/templates/.claude/skills/moai-tool-opencode/modules/configure/models.md +197 -0
- moai_adk/templates/.claude/skills/moai-tool-opencode/modules/configure/permissions.md +162 -0
- moai_adk/templates/.claude/skills/moai-tool-opencode/modules/configure/rules.md +129 -0
- moai_adk/templates/.claude/skills/moai-tool-opencode/modules/configure/skills.md +192 -0
- moai_adk/templates/.claude/skills/moai-tool-opencode/modules/configure/themes.md +200 -0
- moai_adk/templates/.claude/skills/moai-tool-opencode/modules/configure/tools.md +169 -0
- moai_adk/templates/.claude/skills/moai-tool-opencode/modules/core/config.md +211 -0
- moai_adk/templates/.claude/skills/moai-tool-opencode/modules/core/enterprise.md +68 -0
- moai_adk/templates/.claude/skills/moai-tool-opencode/modules/core/intro.md +127 -0
- moai_adk/templates/.claude/skills/moai-tool-opencode/modules/core/migration-1.0.md +82 -0
- moai_adk/templates/.claude/skills/moai-tool-opencode/modules/core/network.md +72 -0
- moai_adk/templates/.claude/skills/moai-tool-opencode/modules/core/providers.md +310 -0
- moai_adk/templates/.claude/skills/moai-tool-opencode/modules/core/troubleshooting.md +124 -0
- moai_adk/templates/.claude/skills/moai-tool-opencode/modules/develop/ecosystem.md +75 -0
- moai_adk/templates/.claude/skills/moai-tool-opencode/modules/develop/plugins.md +218 -0
- moai_adk/templates/.claude/skills/moai-tool-opencode/modules/develop/sdk.md +266 -0
- moai_adk/templates/.claude/skills/moai-tool-opencode/modules/develop/server.md +207 -0
- moai_adk/templates/.claude/skills/moai-tool-opencode/modules/usage/cli.md +159 -0
- moai_adk/templates/.claude/skills/moai-tool-opencode/modules/usage/github.md +181 -0
- moai_adk/templates/.claude/skills/moai-tool-opencode/modules/usage/gitlab.md +122 -0
- moai_adk/templates/.claude/skills/moai-tool-opencode/modules/usage/ide.md +74 -0
- moai_adk/templates/.claude/skills/moai-tool-opencode/modules/usage/share.md +106 -0
- moai_adk/templates/.claude/skills/moai-tool-opencode/modules/usage/tui.md +129 -0
- moai_adk/templates/.claude/skills/moai-tool-opencode/modules/usage/zen.md +118 -0
- moai_adk/templates/.claude/skills/moai-tool-opencode/reference.md +790 -0
- moai_adk/templates/.claude/skills/moai-workflow-jit-docs/SKILL.md +211 -0
- moai_adk/templates/.claude/skills/moai-workflow-jit-docs/examples.md +544 -0
- moai_adk/templates/.claude/skills/moai-workflow-jit-docs/modules/advanced-patterns.md +379 -0
- moai_adk/templates/.claude/skills/moai-workflow-jit-docs/modules/optimization.md +286 -0
- moai_adk/templates/.claude/skills/moai-workflow-jit-docs/reference.md +307 -0
- moai_adk/templates/.claude/skills/moai-workflow-project/README.md +190 -0
- moai_adk/templates/.claude/skills/moai-workflow-project/SKILL.md +260 -0
- moai_adk/templates/.claude/skills/moai-workflow-project/examples.md +547 -0
- moai_adk/templates/.claude/skills/moai-workflow-project/reference.md +275 -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 +1434 -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 +92 -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-spec/SKILL.md +336 -0
- moai_adk/templates/.claude/skills/moai-workflow-spec/examples.md +900 -0
- moai_adk/templates/.claude/skills/moai-workflow-spec/modules/advanced-patterns.md +237 -0
- moai_adk/templates/.claude/skills/moai-workflow-spec/reference.md +704 -0
- moai_adk/templates/.claude/skills/moai-workflow-templates/SKILL.md +386 -0
- moai_adk/templates/.claude/skills/moai-workflow-templates/examples.md +552 -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-templates/reference.md +346 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/LICENSE.txt +202 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/SKILL.md +307 -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/examples.md +672 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/README.md +269 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/advanced-patterns.md +576 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/ai-debugging.md +302 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/automated-code-review/context7-integration.md +286 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/automated-code-review/review-workflows.md +500 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/automated-code-review/trust5-framework/relevance-analysis.md +154 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/automated-code-review/trust5-framework/safety-analysis.md +148 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/automated-code-review/trust5-framework/scoring-algorithms.md +196 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/automated-code-review/trust5-framework/timeliness-analysis.md +168 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/automated-code-review/trust5-framework/truthfulness-analysis.md +136 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/automated-code-review/trust5-framework/usability-analysis.md +153 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/automated-code-review/trust5-framework.md +257 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/automated-code-review.md +263 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/code-review/analysis-patterns.md +340 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/code-review/core-classes.md +299 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/code-review/tool-integration.md +380 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/debugging/debugging-workflows.md +451 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/debugging/error-analysis.md +442 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/optimization.md +505 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/performance/optimization-patterns.md +473 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/performance/profiling-techniques.md +481 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/performance-optimization/ai-optimization.md +241 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/performance-optimization/bottleneck-detection.md +397 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/performance-optimization/optimization-plan.md +315 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/performance-optimization/profiler-core.md +277 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/performance-optimization/real-time-monitoring.md +187 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/performance-optimization.md +327 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/quality-metrics.md +415 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/refactoring/ai-workflows.md +620 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/refactoring/patterns.md +692 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/security-analysis.md +429 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/smart-refactoring.md +313 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/static-analysis.md +438 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/tdd/core-classes.md +397 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/tdd-context7/advanced-features.md +494 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/tdd-context7/red-green-refactor.md +316 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/tdd-context7/test-generation.md +471 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/tdd-context7/test-patterns.md +371 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/tdd-context7.md +265 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/trust5-validation.md +428 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/reference/playwright-best-practices.md +57 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/reference.md +440 -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-workflow-worktree/SKILL.md +227 -0
- moai_adk/templates/.claude/skills/moai-workflow-worktree/examples.md +606 -0
- moai_adk/templates/.claude/skills/moai-workflow-worktree/modules/integration-patterns.md +149 -0
- moai_adk/templates/.claude/skills/moai-workflow-worktree/modules/moai-adk-integration.md +245 -0
- moai_adk/templates/.claude/skills/moai-workflow-worktree/modules/parallel-advanced.md +310 -0
- moai_adk/templates/.claude/skills/moai-workflow-worktree/modules/parallel-development.md +202 -0
- moai_adk/templates/.claude/skills/moai-workflow-worktree/modules/parallel-workflows.md +302 -0
- moai_adk/templates/.claude/skills/moai-workflow-worktree/modules/registry-architecture.md +271 -0
- moai_adk/templates/.claude/skills/moai-workflow-worktree/modules/resource-optimization.md +300 -0
- moai_adk/templates/.claude/skills/moai-workflow-worktree/modules/tools-integration.md +280 -0
- moai_adk/templates/.claude/skills/moai-workflow-worktree/modules/troubleshooting.md +397 -0
- moai_adk/templates/.claude/skills/moai-workflow-worktree/modules/worktree-commands.md +296 -0
- moai_adk/templates/.claude/skills/moai-workflow-worktree/modules/worktree-management.md +217 -0
- moai_adk/templates/.claude/skills/moai-workflow-worktree/reference.md +357 -0
- moai_adk/templates/.git-hooks/pre-commit +103 -41
- moai_adk/templates/.git-hooks/pre-push +244 -31
- 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 +181 -44
- moai_adk/templates/.lsp.json +152 -0
- moai_adk/templates/.mcp.json +6 -15
- moai_adk/templates/.moai/config/config.yaml +58 -0
- moai_adk/templates/.moai/config/multilingual-triggers.yaml +213 -0
- moai_adk/templates/.moai/config/questions/_schema.yaml +174 -0
- moai_adk/templates/.moai/config/questions/tab0-init.yaml +259 -0
- moai_adk/templates/.moai/config/questions/tab1-user.yaml +107 -0
- moai_adk/templates/.moai/config/questions/tab2-project.yaml +79 -0
- moai_adk/templates/.moai/config/questions/tab3-git.yaml +632 -0
- moai_adk/templates/.moai/config/questions/tab4-quality.yaml +183 -0
- moai_adk/templates/.moai/config/questions/tab5-system.yaml +96 -0
- moai_adk/templates/.moai/config/sections/git-strategy.yaml +116 -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 +18 -0
- moai_adk/templates/.moai/config/sections/system.yaml +24 -0
- moai_adk/templates/.moai/config/sections/user.yaml +5 -0
- moai_adk/templates/.moai/config/statusline-config.yaml +92 -0
- moai_adk/templates/.moai/scripts/setup-glm.py +136 -0
- moai_adk/templates/CLAUDE.md +804 -499
- moai_adk/utils/__init__.py +24 -1
- moai_adk/utils/banner.py +7 -10
- moai_adk/utils/common.py +49 -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.41.0.dist-info/METADATA +3274 -0
- moai_adk-0.41.0.dist-info/RECORD +683 -0
- {moai_adk-0.25.4.dist-info → moai_adk-0.41.0.dist-info}/WHEEL +1 -1
- {moai_adk-0.25.4.dist-info → moai_adk-0.41.0.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/core/config/auto_spec_config.py +0 -346
- moai_adk/core/hooks/post_tool_auto_spec_completion.py +0 -925
- moai_adk/core/spec/confidence_scoring.py +0 -749
- moai_adk/core/spec/ears_template_engine.py +0 -1182
- moai_adk/core/spec/quality_validator.py +0 -721
- 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.41.0.dist-info}/licenses/LICENSE +0 -0
|
@@ -224,9 +224,7 @@ class RollbackManager:
|
|
|
224
224
|
restored_files=[],
|
|
225
225
|
)
|
|
226
226
|
|
|
227
|
-
def rollback_research_integration(
|
|
228
|
-
self, component_type: str = None, component_name: str = None
|
|
229
|
-
) -> RollbackResult:
|
|
227
|
+
def rollback_research_integration(self, component_type: str = None, component_name: str = None) -> RollbackResult:
|
|
230
228
|
"""
|
|
231
229
|
Specialized rollback for research integration changes
|
|
232
230
|
|
|
@@ -237,15 +235,11 @@ class RollbackManager:
|
|
|
237
235
|
Returns:
|
|
238
236
|
RollbackResult with operation details
|
|
239
237
|
"""
|
|
240
|
-
logger.info(
|
|
241
|
-
f"Rolling back research integration: {component_type}:{component_name}"
|
|
242
|
-
)
|
|
238
|
+
logger.info(f"Rolling back research integration: {component_type}:{component_name}")
|
|
243
239
|
|
|
244
240
|
try:
|
|
245
241
|
# Find relevant rollback points for research integration
|
|
246
|
-
research_rollback_points = self._find_research_rollback_points(
|
|
247
|
-
component_type, component_name
|
|
248
|
-
)
|
|
242
|
+
research_rollback_points = self._find_research_rollback_points(component_type, component_name)
|
|
249
243
|
|
|
250
244
|
if not research_rollback_points:
|
|
251
245
|
return RollbackResult(
|
|
@@ -256,9 +250,7 @@ class RollbackManager:
|
|
|
256
250
|
)
|
|
257
251
|
|
|
258
252
|
# Use the most recent suitable rollback point
|
|
259
|
-
latest_rollback = max(
|
|
260
|
-
research_rollback_points, key=lambda x: x["timestamp"]
|
|
261
|
-
)
|
|
253
|
+
latest_rollback = max(research_rollback_points, key=lambda x: x["timestamp"])
|
|
262
254
|
|
|
263
255
|
# Perform targeted rollback
|
|
264
256
|
restored_files, failed_files = self._perform_research_rollback(
|
|
@@ -273,7 +265,8 @@ class RollbackManager:
|
|
|
273
265
|
return RollbackResult(
|
|
274
266
|
success=success,
|
|
275
267
|
rollback_point_id=latest_rollback["id"],
|
|
276
|
-
message=f"Research integration rollback
|
|
268
|
+
message=f"Research integration rollback "
|
|
269
|
+
f"{'completed successfully' if success else 'completed with errors'}",
|
|
277
270
|
restored_files=restored_files,
|
|
278
271
|
failed_files=failed_files or [],
|
|
279
272
|
validation_results=validation_results,
|
|
@@ -322,10 +315,12 @@ class RollbackManager:
|
|
|
322
315
|
Returns:
|
|
323
316
|
Validation results with system health information
|
|
324
317
|
"""
|
|
318
|
+
issues: List[str] = []
|
|
319
|
+
recommendations: List[str] = []
|
|
325
320
|
validation_results = {
|
|
326
321
|
"system_healthy": True,
|
|
327
|
-
"issues":
|
|
328
|
-
"recommendations":
|
|
322
|
+
"issues": issues,
|
|
323
|
+
"recommendations": recommendations,
|
|
329
324
|
"rollback_points_count": len(self.registry),
|
|
330
325
|
"backup_size": self._calculate_backup_size(),
|
|
331
326
|
"last_rollback": None,
|
|
@@ -342,48 +337,38 @@ class RollbackManager:
|
|
|
342
337
|
|
|
343
338
|
for dir_path in required_dirs:
|
|
344
339
|
if not dir_path.exists():
|
|
345
|
-
|
|
346
|
-
f"Missing backup directory: {dir_path}"
|
|
347
|
-
)
|
|
340
|
+
issues.append(f"Missing backup directory: {dir_path}")
|
|
348
341
|
validation_results["system_healthy"] = False
|
|
349
342
|
|
|
350
343
|
# Validate rollback points
|
|
351
|
-
invalid_rollback_points = []
|
|
344
|
+
invalid_rollback_points: List[str] = []
|
|
352
345
|
for rollback_id, rollback_data in self.registry.items():
|
|
353
346
|
backup_path = Path(rollback_data["backup_path"])
|
|
354
347
|
if not backup_path.exists():
|
|
355
348
|
invalid_rollback_points.append(rollback_id)
|
|
356
349
|
|
|
357
350
|
if invalid_rollback_points:
|
|
358
|
-
|
|
359
|
-
f"Invalid rollback points: {invalid_rollback_points}"
|
|
360
|
-
)
|
|
351
|
+
issues.append(f"Invalid rollback points: {invalid_rollback_points}")
|
|
361
352
|
validation_results["system_healthy"] = False
|
|
362
353
|
|
|
363
354
|
# Check available disk space
|
|
364
|
-
backup_size = validation_results["backup_size"]
|
|
355
|
+
backup_size: int = validation_results["backup_size"] # type: ignore[assignment]
|
|
365
356
|
free_space = shutil.disk_usage(self.backup_root).free
|
|
366
357
|
if backup_size > free_space * 0.8: # Using more than 80% of free space
|
|
367
|
-
|
|
368
|
-
"Consider cleaning up old rollback points"
|
|
369
|
-
)
|
|
358
|
+
recommendations.append("Consider cleaning up old rollback points")
|
|
370
359
|
|
|
371
360
|
# Check last rollback
|
|
372
361
|
if self.registry:
|
|
373
|
-
last_rollback = max(
|
|
374
|
-
self.registry.values(), key=lambda x: x["timestamp"]
|
|
375
|
-
)
|
|
362
|
+
last_rollback = max(self.registry.values(), key=lambda x: x["timestamp"])
|
|
376
363
|
validation_results["last_rollback"] = last_rollback["timestamp"]
|
|
377
364
|
|
|
378
365
|
except Exception as e:
|
|
379
366
|
validation_results["system_healthy"] = False
|
|
380
|
-
|
|
367
|
+
issues.append(f"Validation error: {str(e)}")
|
|
381
368
|
|
|
382
369
|
return validation_results
|
|
383
370
|
|
|
384
|
-
def cleanup_old_rollbacks(
|
|
385
|
-
self, keep_count: int = 10, dry_run: bool = True
|
|
386
|
-
) -> Dict[str, Any]:
|
|
371
|
+
def cleanup_old_rollbacks(self, keep_count: int = 10, dry_run: bool = True) -> Dict[str, Any]:
|
|
387
372
|
"""
|
|
388
373
|
Clean up old rollback points
|
|
389
374
|
|
|
@@ -406,10 +391,7 @@ class RollbackManager:
|
|
|
406
391
|
"dry_run": True,
|
|
407
392
|
"would_delete_count": len(to_delete),
|
|
408
393
|
"would_keep_count": len(to_keep),
|
|
409
|
-
"would_free_space": sum(
|
|
410
|
-
self._get_directory_size(Path(rp["backup_path"]))
|
|
411
|
-
for rp in to_delete
|
|
412
|
-
),
|
|
394
|
+
"would_free_space": sum(self._get_directory_size(Path(rp["backup_path"])) for rp in to_delete),
|
|
413
395
|
}
|
|
414
396
|
|
|
415
397
|
# Perform actual cleanup
|
|
@@ -429,9 +411,7 @@ class RollbackManager:
|
|
|
429
411
|
deleted_count += 1
|
|
430
412
|
|
|
431
413
|
except Exception as e:
|
|
432
|
-
logger.warning(
|
|
433
|
-
f"Failed to delete rollback point {rollback_point['id']}: {str(e)}"
|
|
434
|
-
)
|
|
414
|
+
logger.warning(f"Failed to delete rollback point {rollback_point['id']}: {str(e)}")
|
|
435
415
|
|
|
436
416
|
# Save updated registry
|
|
437
417
|
self._save_registry()
|
|
@@ -446,14 +426,14 @@ class RollbackManager:
|
|
|
446
426
|
def _generate_rollback_id(self) -> str:
|
|
447
427
|
"""Generate unique rollback point ID"""
|
|
448
428
|
timestamp = datetime.now(timezone.utc).strftime("%Y%m%d_%H%M%S")
|
|
449
|
-
random_suffix = hashlib.md5(os.urandom(4)).hexdigest()[:8]
|
|
429
|
+
random_suffix = hashlib.md5(os.urandom(4), usedforsecurity=False).hexdigest()[:8]
|
|
450
430
|
return f"rollback_{timestamp}_{random_suffix}"
|
|
451
431
|
|
|
452
432
|
def _load_registry(self) -> Dict[str, Any]:
|
|
453
433
|
"""Load rollback registry from file"""
|
|
454
434
|
if self.registry_file.exists():
|
|
455
435
|
try:
|
|
456
|
-
with open(self.registry_file, "r") as f:
|
|
436
|
+
with open(self.registry_file, "r", encoding="utf-8") as f:
|
|
457
437
|
return json.load(f)
|
|
458
438
|
except Exception as e:
|
|
459
439
|
logger.warning(f"Failed to load rollback registry: {str(e)}")
|
|
@@ -463,21 +443,28 @@ class RollbackManager:
|
|
|
463
443
|
def _save_registry(self):
|
|
464
444
|
"""Save rollback registry to file"""
|
|
465
445
|
try:
|
|
466
|
-
with open(self.registry_file, "w") as f:
|
|
467
|
-
json.dump(self.registry, f, indent=2, default=str)
|
|
446
|
+
with open(self.registry_file, "w", encoding="utf-8") as f:
|
|
447
|
+
json.dump(self.registry, f, indent=2, default=str, ensure_ascii=False)
|
|
468
448
|
except Exception as e:
|
|
469
449
|
logger.error(f"Failed to save rollback registry: {str(e)}")
|
|
470
450
|
raise
|
|
471
451
|
|
|
472
452
|
def _backup_configuration(self, rollback_dir: Path) -> str:
|
|
473
|
-
"""Backup configuration files"""
|
|
453
|
+
"""Backup configuration files (both legacy and section-based)"""
|
|
474
454
|
config_backup_path = rollback_dir / "config"
|
|
475
455
|
config_backup_path.mkdir(parents=True, exist_ok=True)
|
|
476
456
|
|
|
477
|
-
# Backup
|
|
478
|
-
|
|
479
|
-
|
|
480
|
-
|
|
457
|
+
# Backup legacy monolithic config files
|
|
458
|
+
for config_name in ["config.json", "config.yaml"]:
|
|
459
|
+
config_file = self.project_root / ".moai" / "config" / config_name
|
|
460
|
+
if config_file.exists():
|
|
461
|
+
shutil.copy2(config_file, config_backup_path / config_name)
|
|
462
|
+
|
|
463
|
+
# Backup section-based config directory
|
|
464
|
+
sections_dir = self.project_root / ".moai" / "config" / "sections"
|
|
465
|
+
if sections_dir.exists():
|
|
466
|
+
sections_backup_path = config_backup_path / "sections"
|
|
467
|
+
shutil.copytree(sections_dir, sections_backup_path, dirs_exist_ok=True)
|
|
481
468
|
|
|
482
469
|
# Backup .claude/settings.json
|
|
483
470
|
settings_file = self.project_root / ".claude" / "settings.json"
|
|
@@ -487,9 +474,7 @@ class RollbackManager:
|
|
|
487
474
|
# Backup .claude/settings.local.json
|
|
488
475
|
local_settings_file = self.project_root / ".claude" / "settings.local.json"
|
|
489
476
|
if local_settings_file.exists():
|
|
490
|
-
shutil.copy2(
|
|
491
|
-
local_settings_file, config_backup_path / "settings.local.json"
|
|
492
|
-
)
|
|
477
|
+
shutil.copy2(local_settings_file, config_backup_path / "settings.local.json")
|
|
493
478
|
|
|
494
479
|
return str(config_backup_path)
|
|
495
480
|
|
|
@@ -537,18 +522,17 @@ class RollbackManager:
|
|
|
537
522
|
with open(file_path, "rb") as f:
|
|
538
523
|
# Update hash with file content and path
|
|
539
524
|
checksum_hash.update(f.read())
|
|
540
|
-
checksum_hash.update(
|
|
541
|
-
str(file_path.relative_to(backup_dir)).encode()
|
|
542
|
-
)
|
|
525
|
+
checksum_hash.update(str(file_path.relative_to(backup_dir)).encode())
|
|
543
526
|
|
|
544
527
|
return checksum_hash.hexdigest()
|
|
545
528
|
|
|
546
529
|
def _validate_rollback_point(self, rollback_point: RollbackPoint) -> Dict[str, Any]:
|
|
547
530
|
"""Validate rollback point before restoration"""
|
|
531
|
+
warnings: List[str] = []
|
|
548
532
|
validation_result = {
|
|
549
533
|
"valid": True,
|
|
550
534
|
"message": "Rollback point is valid",
|
|
551
|
-
"warnings":
|
|
535
|
+
"warnings": warnings,
|
|
552
536
|
}
|
|
553
537
|
|
|
554
538
|
try:
|
|
@@ -562,21 +546,20 @@ class RollbackManager:
|
|
|
562
546
|
# Verify checksum
|
|
563
547
|
current_checksum = self._calculate_backup_checksum(backup_path)
|
|
564
548
|
if current_checksum != rollback_point.checksum:
|
|
565
|
-
|
|
566
|
-
"Backup checksum mismatch - possible corruption"
|
|
567
|
-
)
|
|
549
|
+
warnings.append("Backup checksum mismatch - possible corruption")
|
|
568
550
|
|
|
569
|
-
# Check essential files exist
|
|
570
|
-
|
|
571
|
-
backup_path / "config" / "config.json"
|
|
572
|
-
backup_path / "
|
|
573
|
-
|
|
551
|
+
# Check essential files exist (check for either legacy or section-based config)
|
|
552
|
+
config_exists = (
|
|
553
|
+
(backup_path / "config" / "config.json").exists()
|
|
554
|
+
or (backup_path / "config" / "config.yaml").exists()
|
|
555
|
+
or (backup_path / "config" / "sections").exists()
|
|
556
|
+
)
|
|
574
557
|
|
|
575
|
-
|
|
576
|
-
|
|
577
|
-
|
|
578
|
-
|
|
579
|
-
)
|
|
558
|
+
if not config_exists:
|
|
559
|
+
warnings.append("No configuration backup found (expected config.json, config.yaml, or sections/)")
|
|
560
|
+
|
|
561
|
+
if not (backup_path / "research").exists():
|
|
562
|
+
warnings.append("Missing research component backup")
|
|
580
563
|
|
|
581
564
|
except Exception as e:
|
|
582
565
|
validation_result["valid"] = False
|
|
@@ -584,13 +567,11 @@ class RollbackManager:
|
|
|
584
567
|
|
|
585
568
|
return validation_result
|
|
586
569
|
|
|
587
|
-
def _perform_rollback(
|
|
588
|
-
self, rollback_point: RollbackPoint
|
|
589
|
-
) -> Tuple[List[str], List[str]]:
|
|
570
|
+
def _perform_rollback(self, rollback_point: RollbackPoint) -> Tuple[List[str], List[str]]:
|
|
590
571
|
"""Perform the actual rollback operation"""
|
|
591
572
|
backup_path = Path(rollback_point.backup_path)
|
|
592
|
-
restored_files = []
|
|
593
|
-
failed_files = []
|
|
573
|
+
restored_files: List[str] = []
|
|
574
|
+
failed_files: List[str] = []
|
|
594
575
|
|
|
595
576
|
try:
|
|
596
577
|
# Restore configuration
|
|
@@ -598,51 +579,43 @@ class RollbackManager:
|
|
|
598
579
|
if config_backup.exists():
|
|
599
580
|
for config_file in config_backup.rglob("*"):
|
|
600
581
|
if config_file.is_file():
|
|
601
|
-
target_path = (
|
|
602
|
-
self.project_root
|
|
603
|
-
/ ".moai"
|
|
604
|
-
/ config_file.relative_to(config_backup)
|
|
605
|
-
)
|
|
582
|
+
target_path = self.project_root / ".moai" / config_file.relative_to(config_backup)
|
|
606
583
|
target_path.parent.mkdir(parents=True, exist_ok=True)
|
|
607
584
|
try:
|
|
608
585
|
shutil.copy2(config_file, target_path)
|
|
609
586
|
restored_files.append(str(target_path))
|
|
610
587
|
except Exception as e:
|
|
611
|
-
failed_files.append(
|
|
588
|
+
failed_files.append(f"{target_path}: {str(e)}")
|
|
612
589
|
|
|
613
590
|
# Restore research components
|
|
614
591
|
research_backup = backup_path / "research"
|
|
615
592
|
if research_backup.exists():
|
|
616
593
|
for research_file in research_backup.rglob("*"):
|
|
617
594
|
if research_file.is_file():
|
|
618
|
-
target_path = self.project_root / research_file.relative_to(
|
|
619
|
-
research_backup
|
|
620
|
-
)
|
|
595
|
+
target_path = self.project_root / research_file.relative_to(research_backup)
|
|
621
596
|
target_path.parent.mkdir(parents=True, exist_ok=True)
|
|
622
597
|
try:
|
|
623
598
|
shutil.copy2(research_file, target_path)
|
|
624
599
|
restored_files.append(str(target_path))
|
|
625
600
|
except Exception as e:
|
|
626
|
-
failed_files.append(
|
|
601
|
+
failed_files.append(f"{target_path}: {str(e)}")
|
|
627
602
|
|
|
628
603
|
# Restore code files
|
|
629
604
|
code_backup = backup_path / "code"
|
|
630
605
|
if code_backup.exists():
|
|
631
606
|
for code_file in code_backup.rglob("*"):
|
|
632
607
|
if code_file.is_file():
|
|
633
|
-
target_path = self.project_root / code_file.relative_to(
|
|
634
|
-
code_backup
|
|
635
|
-
)
|
|
608
|
+
target_path = self.project_root / code_file.relative_to(code_backup)
|
|
636
609
|
target_path.parent.mkdir(parents=True, exist_ok=True)
|
|
637
610
|
try:
|
|
638
611
|
shutil.copy2(code_file, target_path)
|
|
639
612
|
restored_files.append(str(target_path))
|
|
640
613
|
except Exception as e:
|
|
641
|
-
failed_files.append(
|
|
614
|
+
failed_files.append(f"{target_path}: {str(e)}")
|
|
642
615
|
|
|
643
616
|
except Exception as e:
|
|
644
617
|
logger.error(f"Rollback operation failed: {str(e)}")
|
|
645
|
-
failed_files.append(
|
|
618
|
+
failed_files.append(f"rollback_operation: {str(e)}")
|
|
646
619
|
|
|
647
620
|
return restored_files, failed_files
|
|
648
621
|
|
|
@@ -656,11 +629,11 @@ class RollbackManager:
|
|
|
656
629
|
backup_path = Path(rollback_point["backup_path"])
|
|
657
630
|
research_backup = backup_path / "research"
|
|
658
631
|
|
|
659
|
-
restored_files = []
|
|
660
|
-
failed_files = []
|
|
632
|
+
restored_files: List[str] = []
|
|
633
|
+
failed_files: List[str] = []
|
|
661
634
|
|
|
662
635
|
if not research_backup.exists():
|
|
663
|
-
failed_files.append(
|
|
636
|
+
failed_files.append("research_backup: Research backup not found")
|
|
664
637
|
return restored_files, failed_files
|
|
665
638
|
|
|
666
639
|
try:
|
|
@@ -679,9 +652,7 @@ class RollbackManager:
|
|
|
679
652
|
shutil.copy2(component_file, target_file)
|
|
680
653
|
restored_files.append(str(target_file))
|
|
681
654
|
else:
|
|
682
|
-
failed_files.append(
|
|
683
|
-
(component_name, "Component file not found in backup")
|
|
684
|
-
)
|
|
655
|
+
failed_files.append(f"{component_name}: Component file not found in backup")
|
|
685
656
|
else:
|
|
686
657
|
# Restore entire component type
|
|
687
658
|
if target_dir.exists():
|
|
@@ -689,9 +660,7 @@ class RollbackManager:
|
|
|
689
660
|
shutil.copytree(component_backup_dir, target_dir)
|
|
690
661
|
restored_files.append(str(target_dir))
|
|
691
662
|
else:
|
|
692
|
-
failed_files.append(
|
|
693
|
-
(component_type, "Component type not found in backup")
|
|
694
|
-
)
|
|
663
|
+
failed_files.append(f"{component_type}: Component type not found in backup")
|
|
695
664
|
else:
|
|
696
665
|
# Restore all research components
|
|
697
666
|
for research_dir in research_backup.iterdir():
|
|
@@ -704,31 +673,49 @@ class RollbackManager:
|
|
|
704
673
|
|
|
705
674
|
except Exception as e:
|
|
706
675
|
logger.error(f"Research rollback failed: {str(e)}")
|
|
707
|
-
failed_files.append(
|
|
676
|
+
failed_files.append(f"research_rollback: {str(e)}")
|
|
708
677
|
|
|
709
678
|
return restored_files, failed_files
|
|
710
679
|
|
|
711
680
|
def _validate_system_after_rollback(self) -> Dict[str, Any]:
|
|
712
681
|
"""Validate system state after rollback"""
|
|
682
|
+
issues: List[str] = []
|
|
713
683
|
validation_results = {
|
|
714
684
|
"config_valid": True,
|
|
715
685
|
"research_valid": True,
|
|
716
|
-
"issues":
|
|
686
|
+
"issues": issues,
|
|
717
687
|
}
|
|
718
688
|
|
|
719
689
|
try:
|
|
720
|
-
# Validate configuration
|
|
721
|
-
|
|
722
|
-
|
|
690
|
+
# Validate configuration (check for both legacy and section-based)
|
|
691
|
+
config_json = self.project_root / ".moai" / "config" / "config.json"
|
|
692
|
+
config_yaml = self.project_root / ".moai" / "config" / "config.yaml"
|
|
693
|
+
sections_dir = self.project_root / ".moai" / "config" / "sections"
|
|
694
|
+
|
|
695
|
+
config_found = False
|
|
696
|
+
|
|
697
|
+
# Validate legacy JSON config
|
|
698
|
+
if config_json.exists():
|
|
699
|
+
config_found = True
|
|
723
700
|
try:
|
|
724
|
-
with open(
|
|
701
|
+
with open(config_json, "r", encoding="utf-8") as f:
|
|
725
702
|
json.load(f) # Validate JSON syntax
|
|
726
703
|
except json.JSONDecodeError:
|
|
727
704
|
validation_results["config_valid"] = False
|
|
728
|
-
|
|
729
|
-
|
|
705
|
+
issues.append("Invalid JSON in config.json")
|
|
706
|
+
|
|
707
|
+
# Validate legacy YAML config
|
|
708
|
+
if config_yaml.exists():
|
|
709
|
+
config_found = True
|
|
710
|
+
# YAML validation would require PyYAML, skip for now
|
|
711
|
+
|
|
712
|
+
# Check for section-based config
|
|
713
|
+
if sections_dir.exists() and sections_dir.is_dir():
|
|
714
|
+
config_found = True
|
|
715
|
+
|
|
716
|
+
if not config_found:
|
|
730
717
|
validation_results["config_valid"] = False
|
|
731
|
-
|
|
718
|
+
issues.append("No configuration found (expected config.json, config.yaml, or sections/)")
|
|
732
719
|
|
|
733
720
|
# Validate research components
|
|
734
721
|
for research_dir in self.research_dirs:
|
|
@@ -740,23 +727,22 @@ class RollbackManager:
|
|
|
740
727
|
f.read() # Validate file can be read
|
|
741
728
|
except Exception as e:
|
|
742
729
|
validation_results["research_valid"] = False
|
|
743
|
-
|
|
744
|
-
f"Cannot read {file_path}: {str(e)}"
|
|
745
|
-
)
|
|
730
|
+
issues.append(f"Cannot read {file_path}: {str(e)}")
|
|
746
731
|
|
|
747
732
|
except Exception as e:
|
|
748
|
-
|
|
733
|
+
issues.append(f"Validation error: {str(e)}")
|
|
749
734
|
|
|
750
735
|
return validation_results
|
|
751
736
|
|
|
752
737
|
def _validate_research_components(self) -> Dict[str, Any]:
|
|
753
738
|
"""Validate research components after rollback"""
|
|
739
|
+
issues: List[str] = []
|
|
754
740
|
validation_results = {
|
|
755
741
|
"skills_valid": True,
|
|
756
742
|
"agents_valid": True,
|
|
757
743
|
"commands_valid": True,
|
|
758
744
|
"hooks_valid": True,
|
|
759
|
-
"issues":
|
|
745
|
+
"issues": issues,
|
|
760
746
|
}
|
|
761
747
|
|
|
762
748
|
component_checks = [
|
|
@@ -772,9 +758,7 @@ class RollbackManager:
|
|
|
772
758
|
files = list(component_path.rglob("*.md"))
|
|
773
759
|
if not files:
|
|
774
760
|
validation_results[f"{component_key}_valid"] = False
|
|
775
|
-
|
|
776
|
-
f"{component_name} directory is empty"
|
|
777
|
-
)
|
|
761
|
+
issues.append(f"{component_name} directory is empty")
|
|
778
762
|
|
|
779
763
|
# Validate file content
|
|
780
764
|
for file_path in files[:5]: # Check first 5 files
|
|
@@ -783,19 +767,13 @@ class RollbackManager:
|
|
|
783
767
|
content = f.read()
|
|
784
768
|
if not content.strip():
|
|
785
769
|
validation_results[f"{component_key}_valid"] = False
|
|
786
|
-
|
|
787
|
-
f"Empty file: {file_path}"
|
|
788
|
-
)
|
|
770
|
+
issues.append(f"Empty file: {file_path}")
|
|
789
771
|
except Exception as e:
|
|
790
772
|
validation_results[f"{component_key}_valid"] = False
|
|
791
|
-
|
|
792
|
-
f"Cannot read {file_path}: {str(e)}"
|
|
793
|
-
)
|
|
773
|
+
issues.append(f"Cannot read {file_path}: {str(e)}")
|
|
794
774
|
else:
|
|
795
775
|
validation_results[f"{component_key}_valid"] = False
|
|
796
|
-
|
|
797
|
-
f"{component_name} directory not found"
|
|
798
|
-
)
|
|
776
|
+
issues.append(f"{component_name} directory not found")
|
|
799
777
|
|
|
800
778
|
return validation_results
|
|
801
779
|
|
|
@@ -833,9 +811,7 @@ class RollbackManager:
|
|
|
833
811
|
"""Mark rollback point as used in registry"""
|
|
834
812
|
if rollback_id in self.registry:
|
|
835
813
|
self.registry[rollback_id]["used"] = True
|
|
836
|
-
self.registry[rollback_id]["used_timestamp"] = datetime.now(
|
|
837
|
-
timezone.utc
|
|
838
|
-
).isoformat()
|
|
814
|
+
self.registry[rollback_id]["used_timestamp"] = datetime.now(timezone.utc).isoformat()
|
|
839
815
|
self._save_registry()
|
|
840
816
|
|
|
841
817
|
def _cleanup_partial_backup(self, rollback_id: str):
|
|
@@ -883,37 +859,25 @@ def main():
|
|
|
883
859
|
|
|
884
860
|
# List rollback points
|
|
885
861
|
list_parser = subparsers.add_parser("list", help="List rollback points")
|
|
886
|
-
list_parser.add_argument(
|
|
887
|
-
"--limit", type=int, default=10, help="Maximum number to show"
|
|
888
|
-
)
|
|
862
|
+
list_parser.add_argument("--limit", type=int, default=10, help="Maximum number to show")
|
|
889
863
|
|
|
890
864
|
# Perform rollback
|
|
891
865
|
rollback_parser = subparsers.add_parser("rollback", help="Rollback to point")
|
|
892
866
|
rollback_parser.add_argument("rollback_id", help="Rollback point ID")
|
|
893
|
-
rollback_parser.add_argument(
|
|
894
|
-
"--no-validate", action="store_true", help="Skip validation"
|
|
895
|
-
)
|
|
867
|
+
rollback_parser.add_argument("--no-validate", action="store_true", help="Skip validation")
|
|
896
868
|
|
|
897
869
|
# Research rollback
|
|
898
|
-
research_parser = subparsers.add_parser(
|
|
899
|
-
|
|
900
|
-
)
|
|
901
|
-
research_parser.add_argument(
|
|
902
|
-
"--type", help="Component type (skills, agents, commands, hooks)"
|
|
903
|
-
)
|
|
870
|
+
research_parser = subparsers.add_parser("research-rollback", help="Rollback research components")
|
|
871
|
+
research_parser.add_argument("--type", help="Component type (skills, agents, commands, hooks)")
|
|
904
872
|
research_parser.add_argument("--name", help="Component name")
|
|
905
873
|
|
|
906
874
|
# Validate system
|
|
907
|
-
|
|
875
|
+
subparsers.add_parser("validate", help="Validate rollback system")
|
|
908
876
|
|
|
909
877
|
# Cleanup
|
|
910
|
-
cleanup_parser = subparsers.add_parser(
|
|
911
|
-
"cleanup", help="Cleanup old rollback points"
|
|
912
|
-
)
|
|
878
|
+
cleanup_parser = subparsers.add_parser("cleanup", help="Cleanup old rollback points")
|
|
913
879
|
cleanup_parser.add_argument("--keep", type=int, default=10, help="Number to keep")
|
|
914
|
-
cleanup_parser.add_argument(
|
|
915
|
-
"--execute", action="store_true", help="Execute cleanup (default: dry run)"
|
|
916
|
-
)
|
|
880
|
+
cleanup_parser.add_argument("--execute", action="store_true", help="Execute cleanup (default: dry run)")
|
|
917
881
|
|
|
918
882
|
args = parser.parse_args()
|
|
919
883
|
|
|
@@ -926,9 +890,7 @@ def main():
|
|
|
926
890
|
|
|
927
891
|
try:
|
|
928
892
|
if args.command == "create":
|
|
929
|
-
rollback_id = rollback_manager.create_rollback_point(
|
|
930
|
-
args.description, args.changes
|
|
931
|
-
)
|
|
893
|
+
rollback_id = rollback_manager.create_rollback_point(args.description, args.changes)
|
|
932
894
|
print(f"Rollback point created: {rollback_id}")
|
|
933
895
|
|
|
934
896
|
elif args.command == "list":
|
|
@@ -939,9 +901,7 @@ def main():
|
|
|
939
901
|
print(f" {rp['id']} - {rp['description']} ({status})")
|
|
940
902
|
|
|
941
903
|
elif args.command == "rollback":
|
|
942
|
-
result = rollback_manager.rollback_to_point(
|
|
943
|
-
args.rollback_id, validate_before=not args.no_validate
|
|
944
|
-
)
|
|
904
|
+
result = rollback_manager.rollback_to_point(args.rollback_id, validate_before=not args.no_validate)
|
|
945
905
|
if result.success:
|
|
946
906
|
print("Rollback completed successfully")
|
|
947
907
|
print(f"Restored {len(result.restored_files)} files")
|
|
@@ -949,9 +909,7 @@ def main():
|
|
|
949
909
|
print(f"Rollback failed: {result.message}")
|
|
950
910
|
|
|
951
911
|
elif args.command == "research-rollback":
|
|
952
|
-
result = rollback_manager.rollback_research_integration(
|
|
953
|
-
args.type, args.name
|
|
954
|
-
)
|
|
912
|
+
result = rollback_manager.rollback_research_integration(args.type, args.name)
|
|
955
913
|
if result.success:
|
|
956
914
|
print("Research rollback completed successfully")
|
|
957
915
|
else:
|
|
@@ -959,9 +917,7 @@ def main():
|
|
|
959
917
|
|
|
960
918
|
elif args.command == "validate":
|
|
961
919
|
validation = rollback_manager.validate_rollback_system()
|
|
962
|
-
print(
|
|
963
|
-
f"Rollback system health: {'HEALTHY' if validation['system_healthy'] else 'UNHEALTHY'}"
|
|
964
|
-
)
|
|
920
|
+
print(f"Rollback system health: {'HEALTHY' if validation['system_healthy'] else 'UNHEALTHY'}")
|
|
965
921
|
if validation["issues"]:
|
|
966
922
|
print("Issues found:")
|
|
967
923
|
for issue in validation["issues"]:
|
|
@@ -972,13 +928,9 @@ def main():
|
|
|
972
928
|
print(f" - {rec}")
|
|
973
929
|
|
|
974
930
|
elif args.command == "cleanup":
|
|
975
|
-
result = rollback_manager.
|
|
976
|
-
args.keep, dry_run=not args.execute
|
|
977
|
-
)
|
|
931
|
+
result = rollback_manager.cleanup_old_rollbacks(args.keep, dry_run=not args.execute)
|
|
978
932
|
if result["dry_run"]:
|
|
979
|
-
print(
|
|
980
|
-
f"Dry run: Would delete {result['would_delete_count']} rollback points"
|
|
981
|
-
)
|
|
933
|
+
print(f"Dry run: Would delete {result['would_delete_count']} rollback points")
|
|
982
934
|
print(f"Would free {result['would_free_space'] / 1024 / 1024:.1f} MB")
|
|
983
935
|
else:
|
|
984
936
|
print(f"Deleted {result['deleted_count']} rollback points")
|