moai-adk 0.32.8__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/cli/commands/init.py +4 -1
- moai_adk/cli/commands/update.py +31 -26
- moai_adk/cli/worktree/cli.py +54 -43
- moai_adk/cli/worktree/manager.py +17 -14
- moai_adk/cli/worktree/registry.py +313 -19
- moai_adk/core/config/unified.py +237 -63
- moai_adk/core/error_recovery_system.py +22 -4
- moai_adk/core/git/conflict_detector.py +10 -1
- moai_adk/core/git/event_detector.py +16 -5
- moai_adk/core/language_config_resolver.py +96 -3
- moai_adk/core/merge/analyzer.py +509 -324
- moai_adk/core/migration/alfred_to_moai_migrator.py +7 -1
- moai_adk/core/migration/backup_manager.py +54 -4
- moai_adk/core/migration/file_migrator.py +174 -2
- moai_adk/core/migration/interactive_checkbox_ui.py +42 -31
- moai_adk/core/migration/version_detector.py +123 -19
- moai_adk/core/migration/version_migrator.py +44 -9
- moai_adk/core/project/backup_utils.py +9 -1
- moai_adk/core/project/initializer.py +33 -96
- moai_adk/core/project/phase_executor.py +79 -33
- moai_adk/core/quality/trust_checker.py +30 -10
- moai_adk/core/realtime_monitoring_dashboard.py +3 -3
- moai_adk/core/rollback_manager.py +46 -19
- moai_adk/core/template/backup.py +4 -3
- moai_adk/core/template/config.py +33 -9
- moai_adk/core/template/merger.py +34 -8
- moai_adk/core/template/processor.py +144 -9
- moai_adk/core/template_engine.py +10 -1
- moai_adk/core/template_variable_synchronizer.py +16 -2
- moai_adk/core/version_sync.py +54 -6
- moai_adk/project/configuration.py +1 -1
- moai_adk/statusline/config.py +5 -2
- moai_adk/statusline/main.py +58 -0
- moai_adk/statusline/renderer.py +38 -78
- moai_adk/templates/.claude/agents/moai/ai-nano-banana.md +218 -51
- moai_adk/templates/.claude/agents/moai/builder-agent.md +46 -11
- moai_adk/templates/.claude/agents/moai/builder-command.md +88 -26
- moai_adk/templates/.claude/agents/moai/builder-plugin.md +753 -0
- moai_adk/templates/.claude/agents/moai/builder-skill.md +79 -8
- moai_adk/templates/.claude/agents/moai/expert-backend.md +100 -28
- moai_adk/templates/.claude/agents/moai/expert-database.md +20 -12
- moai_adk/templates/.claude/agents/moai/expert-debug.md +19 -8
- moai_adk/templates/.claude/agents/moai/expert-devops.md +36 -25
- moai_adk/templates/.claude/agents/moai/expert-frontend.md +99 -38
- 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 +55 -4
- moai_adk/templates/.claude/agents/moai/expert-testing.md +737 -0
- moai_adk/templates/.claude/agents/moai/expert-uiux.md +20 -11
- moai_adk/templates/.claude/agents/moai/manager-claude-code.md +13 -4
- moai_adk/templates/.claude/agents/moai/manager-docs.md +15 -7
- moai_adk/templates/.claude/agents/moai/manager-git.md +192 -37
- moai_adk/templates/.claude/agents/moai/manager-project.md +13 -7
- moai_adk/templates/.claude/agents/moai/manager-quality.md +48 -6
- moai_adk/templates/.claude/agents/moai/manager-spec.md +110 -8
- moai_adk/templates/.claude/agents/moai/manager-strategy.md +203 -17
- moai_adk/templates/.claude/agents/moai/manager-tdd.md +217 -23
- moai_adk/templates/.claude/agents/moai/mcp-context7.md +102 -7
- moai_adk/templates/.claude/agents/moai/mcp-figma.md +107 -86
- moai_adk/templates/.claude/agents/moai/mcp-notion.md +50 -4
- moai_adk/templates/.claude/agents/moai/mcp-playwright.md +52 -4
- moai_adk/templates/.claude/agents/moai/mcp-sequential-thinking.md +49 -5
- moai_adk/templates/.claude/commands/moai/0-project.md +503 -307
- moai_adk/templates/.claude/commands/moai/1-plan.md +255 -323
- moai_adk/templates/.claude/commands/moai/2-run.md +257 -315
- moai_adk/templates/.claude/commands/moai/3-sync.md +421 -56
- moai_adk/templates/.claude/commands/moai/9-feedback.md +40 -34
- moai_adk/templates/.claude/hooks/moai/__init__.py +0 -0
- moai_adk/templates/.claude/hooks/moai/lib/README.md +143 -0
- moai_adk/templates/.claude/hooks/moai/lib/__init__.py +19 -0
- moai_adk/templates/.claude/hooks/moai/lib/checkpoint.py +4 -1
- moai_adk/templates/.claude/hooks/moai/lib/common.py +35 -5
- moai_adk/templates/.claude/hooks/moai/lib/config_manager.py +12 -14
- moai_adk/templates/.claude/hooks/moai/lib/exceptions.py +171 -0
- moai_adk/templates/.claude/hooks/moai/lib/git_operations_manager.py +1 -1
- moai_adk/templates/.claude/hooks/moai/lib/language_validator.py +104 -14
- moai_adk/templates/.claude/hooks/moai/lib/models.py +9 -7
- moai_adk/templates/.claude/hooks/moai/lib/path_utils.py +204 -13
- moai_adk/templates/.claude/hooks/moai/lib/project.py +23 -14
- moai_adk/templates/.claude/hooks/moai/lib/tool_registry.py +804 -0
- moai_adk/templates/.claude/hooks/moai/lib/unified_timeout_manager.py +14 -2
- 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 +28 -24
- moai_adk/templates/.claude/hooks/moai/session_start__show_project_info.py +236 -32
- moai_adk/templates/.claude/output-styles/moai/r2d2.md +265 -2
- moai_adk/templates/.claude/output-styles/moai/yoda.md +23 -2
- moai_adk/templates/.claude/settings.json +43 -6
- 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 +251 -196
- moai_adk/templates/.claude/skills/moai-docs-generation/examples.md +252 -0
- moai_adk/templates/.claude/skills/moai-docs-generation/modules/README.md +39 -27
- moai_adk/templates/.claude/skills/moai-docs-generation/modules/api-documentation.md +115 -125
- moai_adk/templates/.claude/skills/moai-docs-generation/modules/code-documentation.md +150 -150
- moai_adk/templates/.claude/skills/moai-docs-generation/modules/multi-format-output.md +182 -175
- moai_adk/templates/.claude/skills/moai-docs-generation/modules/user-guides.md +198 -138
- moai_adk/templates/.claude/skills/moai-docs-generation/reference.md +234 -0
- moai_adk/templates/.claude/skills/moai-domain-backend/SKILL.md +18 -13
- 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 +20 -14
- moai_adk/templates/.claude/skills/moai-domain-database/examples.md +830 -0
- moai_adk/templates/.claude/skills/moai-domain-database/reference.md +545 -0
- moai_adk/templates/.claude/skills/moai-domain-frontend/SKILL.md +123 -425
- 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 +16 -15
- moai_adk/templates/.claude/skills/moai-formats-data/SKILL.md +104 -315
- moai_adk/templates/.claude/skills/moai-formats-data/examples.md +804 -0
- moai_adk/templates/.claude/skills/moai-formats-data/modules/README.md +299 -70
- moai_adk/templates/.claude/skills/moai-formats-data/modules/toon-encoding.md +6 -6
- moai_adk/templates/.claude/skills/moai-formats-data/reference.md +585 -0
- moai_adk/templates/.claude/skills/moai-foundation-claude/SKILL.md +196 -154
- 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/claude-code-cli-reference-official.md +420 -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 +110 -0
- moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-memory-official.md +2 -2
- 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-skills-official.md +425 -71
- 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 +325 -143
- moai_adk/templates/.claude/skills/moai-foundation-claude/reference.md +209 -0
- moai_adk/templates/.claude/skills/moai-foundation-context/SKILL.md +12 -1
- 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 +33 -134
- moai_adk/templates/.claude/skills/moai-foundation-core/examples.md +358 -0
- moai_adk/templates/.claude/skills/moai-foundation-core/modules/agents-reference.md +31 -18
- moai_adk/templates/.claude/skills/moai-foundation-core/modules/commands-reference.md +30 -30
- 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 +121 -650
- moai_adk/templates/.claude/skills/moai-foundation-core/modules/patterns.md +22 -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 +37 -730
- moai_adk/templates/.claude/skills/moai-foundation-core/modules/spec-tdd-implementation.md +275 -0
- moai_adk/templates/.claude/skills/moai-foundation-core/modules/trust-5-framework.md +77 -819
- 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 +17 -16
- 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 +93 -227
- moai_adk/templates/.claude/skills/moai-library-nextra/SKILL.md +25 -6
- moai_adk/templates/.claude/skills/moai-library-nextra/examples.md +592 -0
- moai_adk/templates/.claude/skills/moai-library-nextra/modules/advanced-patterns.md +331 -12
- moai_adk/templates/.claude/skills/moai-library-nextra/modules/configuration.md +330 -37
- moai_adk/templates/.claude/skills/moai-library-nextra/reference.md +379 -0
- moai_adk/templates/.claude/skills/moai-library-shadcn/SKILL.md +16 -13
- moai_adk/templates/.claude/skills/moai-library-shadcn/modules/shadcn-theming.md +1 -1
- 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 +189 -424
- moai_adk/templates/.claude/skills/moai-workflow-jit-docs/examples.md +544 -0
- moai_adk/templates/.claude/skills/moai-workflow-jit-docs/reference.md +307 -0
- moai_adk/templates/.claude/skills/moai-workflow-project/SKILL.md +187 -314
- 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/tab_schema.json +284 -212
- moai_adk/templates/.claude/skills/moai-workflow-project/templates/doc-templates/product-template.md +2 -2
- moai_adk/templates/.claude/skills/moai-workflow-project/templates/doc-templates/structure-template.md +1 -1
- moai_adk/templates/.claude/skills/moai-workflow-project/templates/doc-templates/tech-template.md +22 -1
- 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 +12 -0
- moai_adk/templates/.claude/skills/moai-workflow-templates/examples.md +552 -0
- moai_adk/templates/.claude/skills/moai-workflow-templates/reference.md +346 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/SKILL.md +221 -367
- moai_adk/templates/.claude/skills/moai-workflow-testing/examples.md +672 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/README.md +52 -3
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/ai-debugging.md +263 -806
- 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 +191 -1344
- 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/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 +287 -1194
- 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 +262 -1192
- 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 +227 -1222
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/trust5-validation.md +428 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/reference.md +440 -0
- moai_adk/templates/.claude/skills/moai-workflow-worktree/SKILL.md +227 -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/.git-hooks/pre-push +168 -50
- moai_adk/templates/.gitignore +0 -3
- moai_adk/templates/.lsp.json +152 -0
- moai_adk/templates/.mcp.json +5 -12
- moai_adk/templates/.moai/config/config.yaml +20 -306
- moai_adk/templates/.moai/config/multilingual-triggers.yaml +213 -0
- moai_adk/templates/.moai/config/questions/_schema.yaml +105 -10
- moai_adk/templates/.moai/config/questions/tab0-init.yaml +259 -0
- moai_adk/templates/.moai/config/questions/tab1-user.yaml +4 -5
- moai_adk/templates/.moai/config/questions/tab2-project.yaml +12 -55
- moai_adk/templates/.moai/config/questions/tab3-git.yaml +111 -21
- moai_adk/templates/.moai/config/questions/tab4-quality.yaml +34 -18
- moai_adk/templates/.moai/config/questions/tab5-system.yaml +19 -75
- moai_adk/templates/.moai/config/sections/git-strategy.yaml +83 -7
- moai_adk/templates/.moai/config/sections/language.yaml +7 -7
- moai_adk/templates/.moai/config/sections/project.yaml +1 -1
- moai_adk/templates/.moai/config/sections/quality.yaml +7 -4
- moai_adk/templates/.moai/config/sections/system.yaml +11 -1
- moai_adk/templates/.moai/config/statusline-config.yaml +19 -13
- moai_adk/templates/.moai/scripts/setup-glm.py +4 -4
- moai_adk/templates/CLAUDE.md +578 -154
- moai_adk/utils/common.py +33 -0
- moai_adk/version.py +1 -1
- {moai_adk-0.32.8.dist-info → moai_adk-0.41.0.dist-info}/METADATA +905 -109
- moai_adk-0.41.0.dist-info/RECORD +683 -0
- moai_adk/core/config/auto_spec_config.py +0 -340
- moai_adk/core/hooks/post_tool_auto_spec_completion.py +0 -901
- moai_adk/core/spec/confidence_scoring.py +0 -680
- moai_adk/core/spec/ears_template_engine.py +0 -1247
- moai_adk/core/spec/quality_validator.py +0 -687
- moai_adk/templates/.claude/skills/moai-domain-uiux/modules/design-system-tokens.md +0 -405
- moai_adk/templates/.claude/skills/moai-integration-mcp/SKILL.md +0 -352
- moai_adk/templates/.claude/skills/moai-integration-mcp/modules/README.md +0 -52
- moai_adk/templates/.claude/skills/moai-integration-mcp/modules/error-handling.md +0 -334
- moai_adk/templates/.claude/skills/moai-integration-mcp/modules/integration-patterns.md +0 -310
- moai_adk/templates/.claude/skills/moai-integration-mcp/modules/security-authentication.md +0 -256
- moai_adk/templates/.claude/skills/moai-integration-mcp/modules/server-architecture.md +0 -253
- moai_adk/templates/.claude/skills/moai-lang-unified/README.md +0 -133
- moai_adk/templates/.claude/skills/moai-lang-unified/SKILL.md +0 -296
- moai_adk/templates/.claude/skills/moai-lang-unified/examples.md +0 -1269
- moai_adk/templates/.claude/skills/moai-lang-unified/reference.md +0 -331
- moai_adk/templates/.claude/skills/moai-library-nextra/advanced-patterns.md +0 -336
- moai_adk/templates/.claude/skills/moai-platform-baas/README.md +0 -186
- moai_adk/templates/.claude/skills/moai-platform-baas/SKILL.md +0 -290
- moai_adk/templates/.claude/skills/moai-platform-baas/examples.md +0 -1225
- moai_adk/templates/.claude/skills/moai-platform-baas/reference.md +0 -567
- moai_adk/templates/.claude/skills/moai-platform-baas/scripts/provider-selector.py +0 -323
- moai_adk/templates/.claude/skills/moai-platform-baas/templates/stack-config.yaml +0 -204
- moai_adk/templates/.claude/skills/moai-workflow-project/__init__.py +0 -520
- moai_adk/templates/.claude/skills/moai-workflow-project/complete_workflow_demo_fixed.py +0 -574
- moai_adk/templates/.claude/skills/moai-workflow-project/examples/complete_project_setup.py +0 -317
- moai_adk/templates/.claude/skills/moai-workflow-project/examples/complete_workflow_demo.py +0 -663
- moai_adk/templates/.claude/skills/moai-workflow-project/examples/config-migration-example.json +0 -190
- moai_adk/templates/.claude/skills/moai-workflow-project/examples/question-examples.json +0 -135
- moai_adk/templates/.claude/skills/moai-workflow-project/examples/quick_start.py +0 -196
- moai_adk/templates/.claude/skills/moai-workflow-project/modules/__init__.py +0 -17
- moai_adk/templates/.claude/skills/moai-workflow-project/modules/advanced-patterns.md +0 -158
- moai_adk/templates/.claude/skills/moai-workflow-project/modules/ask_user_integration.py +0 -340
- moai_adk/templates/.claude/skills/moai-workflow-project/modules/batch_questions.py +0 -713
- moai_adk/templates/.claude/skills/moai-workflow-project/modules/config_manager.py +0 -538
- moai_adk/templates/.claude/skills/moai-workflow-project/modules/documentation_manager.py +0 -1336
- moai_adk/templates/.claude/skills/moai-workflow-project/modules/language_initializer.py +0 -730
- moai_adk/templates/.claude/skills/moai-workflow-project/modules/migration_manager.py +0 -608
- moai_adk/templates/.claude/skills/moai-workflow-project/modules/template_optimizer.py +0 -1005
- moai_adk/templates/.claude/skills/moai-workflow-project/test_integration_simple.py +0 -436
- moai_adk/templates/.claude/skills/moai-worktree/SKILL.md +0 -410
- moai_adk/templates/.claude/skills/moai-worktree/modules/integration-patterns.md +0 -982
- moai_adk/templates/.claude/skills/moai-worktree/modules/parallel-development.md +0 -778
- moai_adk/templates/.claude/skills/moai-worktree/modules/worktree-commands.md +0 -646
- moai_adk/templates/.claude/skills/moai-worktree/modules/worktree-management.md +0 -782
- moai_adk/templates/.moai/cache/personalization.json +0 -10
- moai_adk/templates/.moai/config/presets/manual.yaml +0 -28
- moai_adk/templates/.moai/config/presets/personal.yaml +0 -30
- moai_adk/templates/.moai/config/presets/team.yaml +0 -33
- moai_adk-0.32.8.dist-info/RECORD +0 -396
- /moai_adk/templates/.claude/skills/moai-library-mermaid/{advanced-patterns.md → modules/advanced-patterns.md} +0 -0
- /moai_adk/templates/.claude/skills/moai-library-mermaid/{optimization.md → modules/optimization.md} +0 -0
- /moai_adk/templates/.claude/skills/moai-library-nextra/{optimization.md → modules/optimization.md} +0 -0
- /moai_adk/templates/.claude/skills/moai-workflow-jit-docs/{advanced-patterns.md → modules/advanced-patterns.md} +0 -0
- /moai_adk/templates/.claude/skills/moai-workflow-jit-docs/{optimization.md → modules/optimization.md} +0 -0
- /moai_adk/templates/.claude/skills/moai-workflow-testing/{advanced-patterns.md → modules/advanced-patterns.md} +0 -0
- /moai_adk/templates/.claude/skills/moai-workflow-testing/{optimization.md → modules/optimization.md} +0 -0
- /moai_adk/templates/.claude/skills/{moai-worktree → moai-workflow-worktree}/examples.md +0 -0
- /moai_adk/templates/.claude/skills/{moai-worktree → moai-workflow-worktree}/reference.md +0 -0
- {moai_adk-0.32.8.dist-info → moai_adk-0.41.0.dist-info}/WHEEL +0 -0
- {moai_adk-0.32.8.dist-info → moai_adk-0.41.0.dist-info}/entry_points.txt +0 -0
- {moai_adk-0.32.8.dist-info → moai_adk-0.41.0.dist-info}/licenses/LICENSE +0 -0
|
@@ -8,7 +8,9 @@ which migrations are needed.
|
|
|
8
8
|
import json
|
|
9
9
|
import logging
|
|
10
10
|
from pathlib import Path
|
|
11
|
-
from typing import Any, Dict
|
|
11
|
+
from typing import Any, Dict, Optional
|
|
12
|
+
|
|
13
|
+
import yaml
|
|
12
14
|
|
|
13
15
|
logger = logging.getLogger(__name__)
|
|
14
16
|
|
|
@@ -24,26 +26,79 @@ class VersionDetector:
|
|
|
24
26
|
project_root: Root directory of the project
|
|
25
27
|
"""
|
|
26
28
|
self.project_root = Path(project_root)
|
|
29
|
+
# Legacy config paths (pre-v0.24.0)
|
|
27
30
|
self.old_config = self.project_root / ".moai" / "config.json"
|
|
28
|
-
|
|
31
|
+
# Intermediate config path (v0.24.0)
|
|
32
|
+
self.intermediate_config = self.project_root / ".moai" / "config" / "config.json"
|
|
33
|
+
# New section YAML paths (v0.36.0+)
|
|
34
|
+
self.sections_dir = self.project_root / ".moai" / "config" / "sections"
|
|
35
|
+
self.system_yaml = self.sections_dir / "system.yaml"
|
|
36
|
+
# Statusline config paths
|
|
29
37
|
self.old_statusline = self.project_root / ".claude" / "statusline-config.yaml"
|
|
30
38
|
self.new_statusline = self.project_root / ".moai" / "config" / "statusline-config.yaml"
|
|
31
39
|
|
|
40
|
+
def _read_yaml_file(self, file_path: Path) -> Optional[Dict[str, Any]]:
|
|
41
|
+
"""
|
|
42
|
+
Read a YAML file safely
|
|
43
|
+
|
|
44
|
+
Args:
|
|
45
|
+
file_path: Path to the YAML file
|
|
46
|
+
|
|
47
|
+
Returns:
|
|
48
|
+
Dictionary with file contents, or None if read failed
|
|
49
|
+
"""
|
|
50
|
+
try:
|
|
51
|
+
if file_path.exists():
|
|
52
|
+
with open(file_path, "r", encoding="utf-8") as f:
|
|
53
|
+
return yaml.safe_load(f)
|
|
54
|
+
except Exception as e:
|
|
55
|
+
logger.warning(f"Failed to read YAML file {file_path}: {e}")
|
|
56
|
+
return None
|
|
57
|
+
|
|
58
|
+
def _get_version_from_section_yaml(self) -> Optional[str]:
|
|
59
|
+
"""
|
|
60
|
+
Get version from section YAML files (new format)
|
|
61
|
+
|
|
62
|
+
Returns:
|
|
63
|
+
Version string from system.yaml, or None if not found
|
|
64
|
+
"""
|
|
65
|
+
system_data = self._read_yaml_file(self.system_yaml)
|
|
66
|
+
if system_data and "moai" in system_data:
|
|
67
|
+
version = system_data["moai"].get("version")
|
|
68
|
+
if version:
|
|
69
|
+
return str(version)
|
|
70
|
+
return None
|
|
71
|
+
|
|
32
72
|
def detect_version(self) -> str:
|
|
33
73
|
"""
|
|
34
74
|
Detect current project version based on file structure
|
|
35
75
|
|
|
36
76
|
Returns:
|
|
37
|
-
Version string (e.g., "0.23.0", "0.24.0+", "unknown")
|
|
77
|
+
Version string (e.g., "0.23.0", "0.24.0+", "0.36.0+", "unknown")
|
|
38
78
|
"""
|
|
39
|
-
# Check if
|
|
40
|
-
if self.
|
|
41
|
-
|
|
79
|
+
# Check if using new section YAML format (v0.36.0+)
|
|
80
|
+
if self.sections_dir.exists() and self.system_yaml.exists():
|
|
81
|
+
version = self._get_version_from_section_yaml()
|
|
82
|
+
if version:
|
|
83
|
+
return version
|
|
84
|
+
return "0.36.0+"
|
|
85
|
+
|
|
86
|
+
# Check if already migrated to v0.24.0+ (intermediate config.json)
|
|
87
|
+
if self.intermediate_config.exists():
|
|
88
|
+
try:
|
|
89
|
+
with open(self.intermediate_config, "r", encoding="utf-8") as f:
|
|
90
|
+
config_data = json.load(f)
|
|
91
|
+
if "moai_version" in config_data:
|
|
92
|
+
return config_data["moai_version"]
|
|
93
|
+
return "0.24.0+"
|
|
94
|
+
except Exception as e:
|
|
95
|
+
logger.warning(f"Failed to read intermediate config: {e}")
|
|
96
|
+
return "0.24.0+"
|
|
42
97
|
|
|
43
|
-
# Check if v0.23.0 or earlier
|
|
98
|
+
# Check if v0.23.0 or earlier (old config.json at .moai/config.json)
|
|
44
99
|
if self.old_config.exists():
|
|
45
100
|
try:
|
|
46
|
-
with open(self.old_config, "r") as f:
|
|
101
|
+
with open(self.old_config, "r", encoding="utf-8") as f:
|
|
47
102
|
config_data = json.load(f)
|
|
48
103
|
# Try to get version from config
|
|
49
104
|
if "moai_version" in config_data:
|
|
@@ -67,10 +122,16 @@ class VersionDetector:
|
|
|
67
122
|
logger.info("Unknown version, assuming no migration needed")
|
|
68
123
|
return False
|
|
69
124
|
|
|
70
|
-
if
|
|
71
|
-
|
|
125
|
+
# Check if using new section YAML format (v0.36.0+)
|
|
126
|
+
if self.sections_dir.exists() and self.system_yaml.exists():
|
|
127
|
+
logger.info("Project already using section YAML format (v0.36.0+)")
|
|
72
128
|
return False
|
|
73
129
|
|
|
130
|
+
if version == "0.24.0+":
|
|
131
|
+
logger.info("Project on v0.24.0+, may need migration to section YAML format")
|
|
132
|
+
# Could still need migration to section YAML format
|
|
133
|
+
return not self.sections_dir.exists()
|
|
134
|
+
|
|
74
135
|
# Version 0.23.0 or earlier needs migration
|
|
75
136
|
return True
|
|
76
137
|
|
|
@@ -83,24 +144,46 @@ class VersionDetector:
|
|
|
83
144
|
{
|
|
84
145
|
"move": [{"from": "...", "to": "..."}],
|
|
85
146
|
"create": ["directory1", "directory2"],
|
|
86
|
-
"cleanup": ["old_file1", "old_file2"]
|
|
147
|
+
"cleanup": ["old_file1", "old_file2"],
|
|
148
|
+
"convert": [{"from": "...", "to_dir": "...", "description": "..."}]
|
|
87
149
|
}
|
|
88
150
|
"""
|
|
89
|
-
plan: Dict[str, Any] = {"move": [], "create": [], "cleanup": []}
|
|
151
|
+
plan: Dict[str, Any] = {"move": [], "create": [], "cleanup": [], "convert": []}
|
|
90
152
|
|
|
91
153
|
if not self.needs_migration():
|
|
92
154
|
return plan
|
|
93
155
|
|
|
94
|
-
# Create config directory
|
|
95
|
-
|
|
156
|
+
# Create config directory structure
|
|
157
|
+
config_dir = self.project_root / ".moai" / "config"
|
|
158
|
+
plan["create"].append(str(config_dir))
|
|
96
159
|
|
|
97
|
-
#
|
|
98
|
-
if
|
|
160
|
+
# Create sections directory for new YAML format
|
|
161
|
+
if not self.sections_dir.exists():
|
|
162
|
+
plan["create"].append(str(self.sections_dir))
|
|
163
|
+
|
|
164
|
+
# Handle old config.json migration (pre-v0.24.0)
|
|
165
|
+
if self.old_config.exists() and not self.intermediate_config.exists():
|
|
99
166
|
plan["move"].append(
|
|
100
167
|
{
|
|
101
168
|
"from": str(self.old_config.relative_to(self.project_root)),
|
|
102
|
-
"to": str(self.
|
|
103
|
-
"description": "Main configuration file",
|
|
169
|
+
"to": str(self.intermediate_config.relative_to(self.project_root)),
|
|
170
|
+
"description": "Main configuration file (legacy)",
|
|
171
|
+
}
|
|
172
|
+
)
|
|
173
|
+
|
|
174
|
+
# Mark config.json files for conversion to section YAML
|
|
175
|
+
config_json_to_convert = None
|
|
176
|
+
if self.intermediate_config.exists():
|
|
177
|
+
config_json_to_convert = self.intermediate_config
|
|
178
|
+
elif self.old_config.exists():
|
|
179
|
+
config_json_to_convert = self.old_config
|
|
180
|
+
|
|
181
|
+
if config_json_to_convert and not self.system_yaml.exists():
|
|
182
|
+
plan["convert"].append(
|
|
183
|
+
{
|
|
184
|
+
"from": str(config_json_to_convert.relative_to(self.project_root)),
|
|
185
|
+
"to_dir": str(self.sections_dir.relative_to(self.project_root)),
|
|
186
|
+
"description": "Convert config.json to section YAML files",
|
|
104
187
|
}
|
|
105
188
|
)
|
|
106
189
|
|
|
@@ -119,6 +202,9 @@ class VersionDetector:
|
|
|
119
202
|
plan["cleanup"].append(str(self.old_config.relative_to(self.project_root)))
|
|
120
203
|
if self.old_statusline.exists():
|
|
121
204
|
plan["cleanup"].append(str(self.old_statusline.relative_to(self.project_root)))
|
|
205
|
+
# Also cleanup intermediate config.json after conversion to YAML
|
|
206
|
+
if self.intermediate_config.exists() and self.sections_dir.exists():
|
|
207
|
+
plan["cleanup"].append(str(self.intermediate_config.relative_to(self.project_root)))
|
|
122
208
|
|
|
123
209
|
return plan
|
|
124
210
|
|
|
@@ -133,7 +219,25 @@ class VersionDetector:
|
|
|
133
219
|
"detected_version": self.detect_version(),
|
|
134
220
|
"needs_migration": self.needs_migration(),
|
|
135
221
|
"has_old_config": self.old_config.exists(),
|
|
136
|
-
"
|
|
222
|
+
"has_intermediate_config": self.intermediate_config.exists(),
|
|
223
|
+
"has_sections_dir": self.sections_dir.exists(),
|
|
224
|
+
"has_system_yaml": self.system_yaml.exists(),
|
|
137
225
|
"has_old_statusline": self.old_statusline.exists(),
|
|
138
226
|
"has_new_statusline": self.new_statusline.exists(),
|
|
227
|
+
"config_format": self._get_config_format(),
|
|
139
228
|
}
|
|
229
|
+
|
|
230
|
+
def _get_config_format(self) -> str:
|
|
231
|
+
"""
|
|
232
|
+
Determine the current configuration format
|
|
233
|
+
|
|
234
|
+
Returns:
|
|
235
|
+
One of: "section_yaml", "intermediate_json", "legacy_json", "none"
|
|
236
|
+
"""
|
|
237
|
+
if self.sections_dir.exists() and self.system_yaml.exists():
|
|
238
|
+
return "section_yaml"
|
|
239
|
+
elif self.intermediate_config.exists():
|
|
240
|
+
return "intermediate_json"
|
|
241
|
+
elif self.old_config.exists():
|
|
242
|
+
return "legacy_json"
|
|
243
|
+
return "none"
|
|
@@ -3,12 +3,20 @@ Main version migration orchestrator for MoAI-ADK
|
|
|
3
3
|
|
|
4
4
|
Coordinates version detection, backup creation, file migration,
|
|
5
5
|
and cleanup processes for automatic project upgrades.
|
|
6
|
+
|
|
7
|
+
Supports migration from:
|
|
8
|
+
- Legacy config.json (.moai/config.json) - pre-v0.24.0
|
|
9
|
+
- Intermediate config.json (.moai/config/config.json) - v0.24.0
|
|
10
|
+
- Section YAML files (.moai/config/sections/*.yaml) - v0.36.0+
|
|
6
11
|
"""
|
|
7
12
|
|
|
13
|
+
import json
|
|
8
14
|
import logging
|
|
9
15
|
from pathlib import Path
|
|
10
16
|
from typing import Any, Dict
|
|
11
17
|
|
|
18
|
+
import yaml
|
|
19
|
+
|
|
12
20
|
from .backup_manager import BackupManager
|
|
13
21
|
from .file_migrator import FileMigrator
|
|
14
22
|
from .version_detector import VersionDetector
|
|
@@ -165,6 +173,13 @@ class VersionMigrator:
|
|
|
165
173
|
print(f" • {move_op['description']}")
|
|
166
174
|
print(f" {move_op['from']} → {move_op['to']}")
|
|
167
175
|
|
|
176
|
+
# Show conversion operations (config.json to section YAML)
|
|
177
|
+
if plan.get("convert"):
|
|
178
|
+
print("\n🔄 Files to convert:")
|
|
179
|
+
for convert_op in plan.get("convert", []):
|
|
180
|
+
print(f" • {convert_op['description']}")
|
|
181
|
+
print(f" {convert_op['from']} → {convert_op['to_dir']}/")
|
|
182
|
+
|
|
168
183
|
print("\n🗑️ Files to cleanup after migration:")
|
|
169
184
|
for cleanup_file in plan.get("cleanup", []):
|
|
170
185
|
print(f" - {cleanup_file}")
|
|
@@ -176,20 +191,40 @@ class VersionMigrator:
|
|
|
176
191
|
Returns:
|
|
177
192
|
True if verification passed
|
|
178
193
|
"""
|
|
179
|
-
# Check that
|
|
180
|
-
new_config = self.project_root / ".moai" / "config" / "config.json"
|
|
181
|
-
if not new_config.exists():
|
|
182
|
-
logger.error("Verification failed: new config.json not found")
|
|
183
|
-
return False
|
|
184
|
-
|
|
185
|
-
# Check that new config directory exists
|
|
194
|
+
# Check that config directory exists
|
|
186
195
|
config_dir = self.project_root / ".moai" / "config"
|
|
187
196
|
if not config_dir.is_dir():
|
|
188
197
|
logger.error("Verification failed: config directory not found")
|
|
189
198
|
return False
|
|
190
199
|
|
|
191
|
-
|
|
192
|
-
|
|
200
|
+
# Check for section YAML format (preferred v0.36.0+)
|
|
201
|
+
sections_dir = self.project_root / ".moai" / "config" / "sections"
|
|
202
|
+
system_yaml = sections_dir / "system.yaml"
|
|
203
|
+
|
|
204
|
+
if sections_dir.exists() and system_yaml.exists():
|
|
205
|
+
# Verify system.yaml is valid
|
|
206
|
+
try:
|
|
207
|
+
with open(system_yaml, "r", encoding="utf-8") as f:
|
|
208
|
+
data = yaml.safe_load(f)
|
|
209
|
+
if data and "moai" in data:
|
|
210
|
+
logger.debug("Section YAML format verification passed")
|
|
211
|
+
return True
|
|
212
|
+
except Exception as e:
|
|
213
|
+
logger.warning(f"Failed to verify system.yaml: {e}")
|
|
214
|
+
|
|
215
|
+
# Fallback: check for intermediate config.json (v0.24.0 format)
|
|
216
|
+
intermediate_config = self.project_root / ".moai" / "config" / "config.json"
|
|
217
|
+
if intermediate_config.exists():
|
|
218
|
+
try:
|
|
219
|
+
with open(intermediate_config, "r", encoding="utf-8") as f:
|
|
220
|
+
json.load(f)
|
|
221
|
+
logger.debug("Intermediate config.json verification passed")
|
|
222
|
+
return True
|
|
223
|
+
except Exception as e:
|
|
224
|
+
logger.warning(f"Failed to verify config.json: {e}")
|
|
225
|
+
|
|
226
|
+
logger.error("Verification failed: no valid configuration found")
|
|
227
|
+
return False
|
|
193
228
|
|
|
194
229
|
def check_status(self) -> Dict[str, Any]:
|
|
195
230
|
"""
|
|
@@ -8,13 +8,21 @@ Selective backup strategy:
|
|
|
8
8
|
from pathlib import Path
|
|
9
9
|
|
|
10
10
|
# Backup targets (OR condition - back up when any exist)
|
|
11
|
+
# Note: Both YAML and JSON config files are checked for backward compatibility
|
|
11
12
|
BACKUP_TARGETS = [
|
|
12
|
-
".moai/config/config.
|
|
13
|
+
".moai/config/config.yaml",
|
|
14
|
+
".moai/config/config.json", # Legacy support
|
|
15
|
+
".moai/config/sections/", # Section-based config files
|
|
13
16
|
".moai/project/",
|
|
14
17
|
".moai/memory/",
|
|
15
18
|
".claude/",
|
|
16
19
|
".github/",
|
|
17
20
|
"CLAUDE.md",
|
|
21
|
+
# MCP/LSP configuration (v2.0.0)
|
|
22
|
+
".mcp.json", # MCP server configuration
|
|
23
|
+
".lsp.json", # LSP server configuration
|
|
24
|
+
# Git hooks (v2.0.0)
|
|
25
|
+
".git-hooks/", # Custom git hooks
|
|
18
26
|
]
|
|
19
27
|
|
|
20
28
|
# User data protection paths (excluded from backups)
|
|
@@ -58,61 +58,6 @@ class ProjectInitializer:
|
|
|
58
58
|
self.validator = ProjectValidator()
|
|
59
59
|
self.executor = PhaseExecutor(self.validator)
|
|
60
60
|
|
|
61
|
-
def _create_memory_files(self) -> list[str]:
|
|
62
|
-
"""Create runtime session and memory files (auto-generated per user/session)
|
|
63
|
-
|
|
64
|
-
Returns:
|
|
65
|
-
List of created memory files
|
|
66
|
-
|
|
67
|
-
"""
|
|
68
|
-
memory_dir = self.path / ".moai" / "memory"
|
|
69
|
-
memory_dir.mkdir(parents=True, exist_ok=True)
|
|
70
|
-
created_files = []
|
|
71
|
-
|
|
72
|
-
# 1. project-notes.json - Project tracking notes (empty on init)
|
|
73
|
-
project_notes = {
|
|
74
|
-
"tech_debt": [],
|
|
75
|
-
"performance_bottlenecks": [],
|
|
76
|
-
"recent_patterns": {
|
|
77
|
-
"frequent_file_edits": [],
|
|
78
|
-
"test_failures": [],
|
|
79
|
-
"git_operations": "daily commits, feature branches",
|
|
80
|
-
},
|
|
81
|
-
"next_priorities": [],
|
|
82
|
-
}
|
|
83
|
-
project_notes_file = memory_dir / "project-notes.json"
|
|
84
|
-
project_notes_file.write_text(json.dumps(project_notes, indent=2))
|
|
85
|
-
created_files.append(str(project_notes_file))
|
|
86
|
-
|
|
87
|
-
# 2. session-hint.json - Last session state
|
|
88
|
-
session_hint = {
|
|
89
|
-
"last_command": None,
|
|
90
|
-
"command_timestamp": None,
|
|
91
|
-
"hours_ago": None,
|
|
92
|
-
"active_spec": None,
|
|
93
|
-
"current_branch": "main",
|
|
94
|
-
}
|
|
95
|
-
session_hint_file = memory_dir / "session-hint.json"
|
|
96
|
-
session_hint_file.write_text(json.dumps(session_hint, indent=2))
|
|
97
|
-
created_files.append(str(session_hint_file))
|
|
98
|
-
|
|
99
|
-
# 3. user-patterns.json - User preferences and expertise
|
|
100
|
-
user_patterns = {
|
|
101
|
-
"tech_preferences": {},
|
|
102
|
-
"expertise_signals": {
|
|
103
|
-
"ask_question_skip_rate": 0.0,
|
|
104
|
-
"custom_workflows": 0,
|
|
105
|
-
"estimated_level": "beginner",
|
|
106
|
-
},
|
|
107
|
-
"skip_questions": [],
|
|
108
|
-
"last_updated": datetime.now().isoformat() + "Z",
|
|
109
|
-
}
|
|
110
|
-
user_patterns_file = memory_dir / "user-patterns.json"
|
|
111
|
-
user_patterns_file.write_text(json.dumps(user_patterns, indent=2))
|
|
112
|
-
created_files.append(str(user_patterns_file))
|
|
113
|
-
|
|
114
|
-
return created_files
|
|
115
|
-
|
|
116
61
|
def _create_user_settings(self) -> list[str]:
|
|
117
62
|
"""Create user-specific settings files (.claude/settings.local.json)
|
|
118
63
|
|
|
@@ -213,12 +158,38 @@ class ProjectInitializer:
|
|
|
213
158
|
# Phase 2: Directory (create directories)
|
|
214
159
|
self.executor.execute_directory_phase(self.path, progress_callback)
|
|
215
160
|
|
|
161
|
+
# Build language_config BEFORE Phase 3 for template variable substitution
|
|
162
|
+
# This fixes the bug where language selection was not applied to section files
|
|
163
|
+
language_names = {
|
|
164
|
+
"ko": "Korean",
|
|
165
|
+
"en": "English",
|
|
166
|
+
"ja": "Japanese",
|
|
167
|
+
"zh": "Chinese",
|
|
168
|
+
}
|
|
169
|
+
if locale == "other" and custom_language:
|
|
170
|
+
language_config = {
|
|
171
|
+
"conversation_language": "other",
|
|
172
|
+
"conversation_language_name": custom_language,
|
|
173
|
+
}
|
|
174
|
+
elif locale in language_names:
|
|
175
|
+
language_config = {
|
|
176
|
+
"conversation_language": locale,
|
|
177
|
+
"conversation_language_name": language_names[locale],
|
|
178
|
+
}
|
|
179
|
+
else:
|
|
180
|
+
# Default fallback
|
|
181
|
+
language_config = {
|
|
182
|
+
"conversation_language": locale or "en",
|
|
183
|
+
"conversation_language_name": language_names.get(locale, "English"),
|
|
184
|
+
}
|
|
185
|
+
|
|
216
186
|
# Prepare config for template variable substitution (Phase 3)
|
|
217
187
|
config = {
|
|
218
188
|
"name": self.path.name,
|
|
219
189
|
"mode": mode,
|
|
220
190
|
"locale": locale,
|
|
221
|
-
"language": detected_language,
|
|
191
|
+
"language": detected_language, # Programming language (string)
|
|
192
|
+
"language_settings": language_config, # Language settings (dict)
|
|
222
193
|
"description": "",
|
|
223
194
|
"version": "0.1.0",
|
|
224
195
|
"author": "@user",
|
|
@@ -242,32 +213,8 @@ class ProjectInitializer:
|
|
|
242
213
|
except Exception:
|
|
243
214
|
pass # Silently ignore permission errors
|
|
244
215
|
|
|
245
|
-
# Phase 4: Configuration (
|
|
246
|
-
#
|
|
247
|
-
language_config = {}
|
|
248
|
-
if locale == "other" and custom_language:
|
|
249
|
-
language_config = {
|
|
250
|
-
"conversation_language": "other",
|
|
251
|
-
"conversation_language_name": custom_language,
|
|
252
|
-
}
|
|
253
|
-
elif locale in ["ko", "en", "ja", "zh"]:
|
|
254
|
-
language_names = {
|
|
255
|
-
"ko": "Korean",
|
|
256
|
-
"en": "English",
|
|
257
|
-
"ja": "Japanese",
|
|
258
|
-
"zh": "Chinese",
|
|
259
|
-
}
|
|
260
|
-
language_config = {
|
|
261
|
-
"conversation_language": locale,
|
|
262
|
-
"conversation_language_name": language_names.get(locale, "English"),
|
|
263
|
-
}
|
|
264
|
-
else:
|
|
265
|
-
# Default fallback
|
|
266
|
-
language_config = {
|
|
267
|
-
"conversation_language": locale,
|
|
268
|
-
"conversation_language_name": "English",
|
|
269
|
-
}
|
|
270
|
-
|
|
216
|
+
# Phase 4: Configuration (update section YAML files)
|
|
217
|
+
# Note: language_config is already created before Phase 3
|
|
271
218
|
config_data: dict[str, str | bool | dict] = {
|
|
272
219
|
"project": {
|
|
273
220
|
"name": self.path.name,
|
|
@@ -286,14 +233,7 @@ class ProjectInitializer:
|
|
|
286
233
|
"language": language_config,
|
|
287
234
|
"constitution": {
|
|
288
235
|
"enforce_tdd": True,
|
|
289
|
-
"
|
|
290
|
-
"simplicity": {
|
|
291
|
-
"max_projects": 5,
|
|
292
|
-
"notes": "Default recommendation. Adjust in .moai/config.json "
|
|
293
|
-
"or via SPEC/ADR with documented rationale based on project size.",
|
|
294
|
-
}
|
|
295
|
-
},
|
|
296
|
-
"test_coverage_target": 90,
|
|
236
|
+
"test_coverage_target": 85,
|
|
297
237
|
},
|
|
298
238
|
"git_strategy": {
|
|
299
239
|
"personal": {
|
|
@@ -320,7 +260,7 @@ class ProjectInitializer:
|
|
|
320
260
|
"auto_pr": False,
|
|
321
261
|
"develop_branch": "develop",
|
|
322
262
|
"draft_pr": False,
|
|
323
|
-
"
|
|
263
|
+
"branch_prefix": "feature/SPEC-",
|
|
324
264
|
"main_branch": "main",
|
|
325
265
|
"use_gitflow": True,
|
|
326
266
|
"default_pr_base": "develop",
|
|
@@ -338,10 +278,7 @@ class ProjectInitializer:
|
|
|
338
278
|
# Phase 5: Validation (verify and finalize)
|
|
339
279
|
self.executor.execute_validation_phase(self.path, mode, progress_callback)
|
|
340
280
|
|
|
341
|
-
# Phase 6: Create
|
|
342
|
-
memory_files = self._create_memory_files()
|
|
343
|
-
|
|
344
|
-
# Phase 7: Create user settings (gitignored, user-specific)
|
|
281
|
+
# Phase 6: Create user settings (gitignored, user-specific)
|
|
345
282
|
user_settings_files = self._create_user_settings()
|
|
346
283
|
|
|
347
284
|
# Generate result
|
|
@@ -353,7 +290,7 @@ class ProjectInitializer:
|
|
|
353
290
|
mode=mode,
|
|
354
291
|
locale=locale,
|
|
355
292
|
duration=duration,
|
|
356
|
-
created_files=resource_files + config_files +
|
|
293
|
+
created_files=resource_files + config_files + user_settings_files,
|
|
357
294
|
)
|
|
358
295
|
|
|
359
296
|
except Exception as e:
|
|
@@ -304,13 +304,25 @@ class PhaseExecutor:
|
|
|
304
304
|
|
|
305
305
|
# Set template variable context (if provided)
|
|
306
306
|
if config:
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
307
|
+
# Get language settings from 'language_settings' key (dict)
|
|
308
|
+
# Falls back to 'language' key for backwards compatibility
|
|
309
|
+
language_config: dict[str, Any] = config.get("language_settings") or {}
|
|
310
|
+
if not language_config or not isinstance(language_config, dict):
|
|
311
|
+
# Backwards compatibility: try 'language' key as dict
|
|
312
|
+
legacy_lang = config.get("language", {})
|
|
313
|
+
language_config = legacy_lang if isinstance(legacy_lang, dict) else {}
|
|
310
314
|
|
|
311
315
|
# Detect OS for cross-platform Hook path configuration
|
|
312
316
|
hook_project_dir = "%CLAUDE_PROJECT_DIR%" if platform.system() == "Windows" else "$CLAUDE_PROJECT_DIR"
|
|
313
317
|
|
|
318
|
+
# Detect OS for cross-platform statusline command
|
|
319
|
+
# Windows: Use python -m for better PATH compatibility
|
|
320
|
+
# Unix: Use moai-adk directly (assumes installed via uv tool)
|
|
321
|
+
if platform.system() == "Windows":
|
|
322
|
+
statusline_command = "python -m moai_adk statusline"
|
|
323
|
+
else:
|
|
324
|
+
statusline_command = "moai-adk statusline"
|
|
325
|
+
|
|
314
326
|
# Get enhanced version context with fallback strategies
|
|
315
327
|
version_context = self._get_enhanced_version_context()
|
|
316
328
|
|
|
@@ -327,6 +339,7 @@ class PhaseExecutor:
|
|
|
327
339
|
"CONVERSATION_LANGUAGE_NAME": language_config.get("conversation_language_name", "English"),
|
|
328
340
|
"CODEBASE_LANGUAGE": config.get("language", "generic"),
|
|
329
341
|
"PROJECT_DIR": hook_project_dir,
|
|
342
|
+
"STATUSLINE_COMMAND": statusline_command,
|
|
330
343
|
}
|
|
331
344
|
processor.set_context(context)
|
|
332
345
|
|
|
@@ -365,54 +378,87 @@ class PhaseExecutor:
|
|
|
365
378
|
config: dict[str, str | bool | dict[Any, Any]],
|
|
366
379
|
progress_callback: ProgressCallback | None = None,
|
|
367
380
|
) -> list[str]:
|
|
368
|
-
"""Phase 4:
|
|
381
|
+
"""Phase 4: Update section YAML configuration files.
|
|
382
|
+
|
|
383
|
+
Note: As of v0.37.0, we use modular section YAML files instead of a single config.json.
|
|
384
|
+
Section files are located in .moai/config/sections/ and loaded by CLAUDE.md.
|
|
369
385
|
|
|
370
386
|
Args:
|
|
371
387
|
project_path: Project path.
|
|
372
|
-
config: Configuration dictionary.
|
|
388
|
+
config: Configuration dictionary with project, language, etc.
|
|
373
389
|
progress_callback: Optional progress callback.
|
|
374
390
|
|
|
375
391
|
Returns:
|
|
376
|
-
List of
|
|
392
|
+
List of updated section files.
|
|
377
393
|
"""
|
|
378
394
|
self.current_phase = 4
|
|
379
|
-
self._report_progress("Phase 4:
|
|
395
|
+
self._report_progress("Phase 4: Updating section configurations...", progress_callback)
|
|
380
396
|
|
|
381
397
|
logger = logging.getLogger(__name__)
|
|
398
|
+
sections_dir = project_path / ".moai" / "config" / "sections"
|
|
399
|
+
updated_files: list[str] = []
|
|
400
|
+
|
|
401
|
+
# Update project.yaml with dynamic values
|
|
402
|
+
project_yaml = sections_dir / "project.yaml"
|
|
403
|
+
if project_yaml.exists():
|
|
404
|
+
self._update_section_yaml(
|
|
405
|
+
project_yaml,
|
|
406
|
+
{
|
|
407
|
+
"project.name": config.get("project", {}).get("name", project_path.name),
|
|
408
|
+
"project.initialized": "true",
|
|
409
|
+
"project.created_at": datetime.now().isoformat() + "Z",
|
|
410
|
+
},
|
|
411
|
+
)
|
|
412
|
+
updated_files.append(str(project_yaml))
|
|
413
|
+
logger.debug(f"Updated {project_yaml}")
|
|
382
414
|
|
|
383
|
-
#
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
if config_path.exists():
|
|
415
|
+
# Update system.yaml with version
|
|
416
|
+
system_yaml = sections_dir / "system.yaml"
|
|
417
|
+
if system_yaml.exists():
|
|
387
418
|
try:
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
419
|
+
version_reader = self._get_version_reader()
|
|
420
|
+
current_version = version_reader.get_version()
|
|
421
|
+
except Exception:
|
|
422
|
+
current_version = __version__
|
|
423
|
+
|
|
424
|
+
self._update_section_yaml(
|
|
425
|
+
system_yaml,
|
|
426
|
+
{"moai.version": current_version},
|
|
427
|
+
)
|
|
428
|
+
updated_files.append(str(system_yaml))
|
|
429
|
+
logger.debug(f"Updated {system_yaml}")
|
|
394
430
|
|
|
395
|
-
|
|
396
|
-
|
|
431
|
+
logger.info(f"Updated {len(updated_files)} section configuration files")
|
|
432
|
+
return updated_files
|
|
397
433
|
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
current_config_version = version_reader.get_version()
|
|
434
|
+
def _update_section_yaml(self, yaml_path: Path, updates: dict[str, str]) -> None:
|
|
435
|
+
"""
|
|
436
|
+
Update specific values in a YAML section file.
|
|
402
437
|
|
|
403
|
-
|
|
404
|
-
|
|
438
|
+
Args:
|
|
439
|
+
yaml_path: Path to the YAML file
|
|
440
|
+
updates: Dictionary of dotted paths to new values (e.g., {"project.name": "MyProject"})
|
|
441
|
+
"""
|
|
442
|
+
import yaml
|
|
405
443
|
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
444
|
+
try:
|
|
445
|
+
with open(yaml_path, "r", encoding="utf-8") as f:
|
|
446
|
+
content = yaml.safe_load(f) or {}
|
|
447
|
+
|
|
448
|
+
for dotted_key, value in updates.items():
|
|
449
|
+
keys = dotted_key.split(".")
|
|
450
|
+
current = content
|
|
451
|
+
for key in keys[:-1]:
|
|
452
|
+
if key not in current:
|
|
453
|
+
current[key] = {}
|
|
454
|
+
current = current[key]
|
|
455
|
+
current[keys[-1]] = value
|
|
410
456
|
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
logger.info(f"Configuration file written to {config_path}")
|
|
457
|
+
with open(yaml_path, "w", encoding="utf-8") as f:
|
|
458
|
+
yaml.dump(content, f, default_flow_style=False, allow_unicode=True, sort_keys=False)
|
|
414
459
|
|
|
415
|
-
|
|
460
|
+
except Exception as e:
|
|
461
|
+
logging.getLogger(__name__).warning(f"Failed to update {yaml_path}: {e}")
|
|
416
462
|
|
|
417
463
|
def _merge_configuration_preserving_versions(
|
|
418
464
|
self, new_config: dict[str, Any], existing_config: dict[str, Any]
|