moai-adk 0.34.0__py3-none-any.whl → 1.1.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.
- moai_adk/__main__.py +136 -5
- moai_adk/astgrep/__init__.py +37 -0
- moai_adk/astgrep/analyzer.py +522 -0
- moai_adk/astgrep/models.py +124 -0
- moai_adk/astgrep/rules.py +179 -0
- moai_adk/cli/commands/analyze.py +11 -2
- moai_adk/cli/commands/doctor.py +7 -1
- moai_adk/cli/commands/init.py +321 -11
- moai_adk/cli/commands/language.py +7 -1
- moai_adk/cli/commands/rank.py +449 -0
- moai_adk/cli/commands/status.py +7 -1
- moai_adk/cli/commands/switch.py +325 -0
- moai_adk/cli/commands/update.py +296 -23
- moai_adk/cli/prompts/init_prompts.py +362 -66
- moai_adk/cli/prompts/translations/__init__.py +573 -0
- moai_adk/cli/ui/prompts.py +61 -2
- moai_adk/cli/worktree/cli.py +106 -1
- moai_adk/cli/worktree/manager.py +155 -0
- moai_adk/core/config/unified.py +244 -63
- moai_adk/core/credentials.py +264 -0
- 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/integration/engine.py +2 -2
- moai_adk/core/integration/integration_tester.py +5 -5
- moai_adk/core/language_config_resolver.py +9 -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/model_allocator.py +241 -0
- moai_adk/core/project/backup_utils.py +12 -2
- moai_adk/core/project/initializer.py +44 -87
- moai_adk/core/project/phase_executor.py +95 -33
- moai_adk/core/project/validator.py +16 -1
- moai_adk/core/quality/trust_checker.py +30 -10
- moai_adk/core/rollback_manager.py +60 -25
- moai_adk/core/template/backup.py +88 -6
- moai_adk/core/template/config.py +33 -9
- moai_adk/core/template/merger.py +34 -8
- moai_adk/core/template/processor.py +334 -11
- 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/foundation/__init__.py +1 -20
- moai_adk/foundation/testing.py +1 -1
- moai_adk/loop/__init__.py +54 -0
- moai_adk/loop/controller.py +305 -0
- moai_adk/loop/feedback.py +230 -0
- moai_adk/loop/state.py +209 -0
- moai_adk/loop/storage.py +220 -0
- moai_adk/lsp/__init__.py +70 -0
- moai_adk/lsp/client.py +320 -0
- moai_adk/lsp/models.py +261 -0
- moai_adk/lsp/protocol.py +404 -0
- moai_adk/lsp/server_manager.py +248 -0
- moai_adk/project/configuration.py +8 -1
- moai_adk/py.typed +0 -0
- moai_adk/ralph/__init__.py +37 -0
- moai_adk/ralph/engine.py +307 -0
- moai_adk/rank/__init__.py +21 -0
- moai_adk/rank/auth.py +425 -0
- moai_adk/rank/client.py +557 -0
- moai_adk/rank/config.py +147 -0
- moai_adk/rank/hook.py +1503 -0
- moai_adk/rank/py.typed +0 -0
- moai_adk/statusline/__init__.py +3 -0
- moai_adk/statusline/enhanced_output_style_detector.py +5 -5
- moai_adk/statusline/main.py +20 -1
- moai_adk/statusline/memory_collector.py +268 -0
- moai_adk/statusline/renderer.py +54 -38
- moai_adk/tag_system/__init__.py +48 -0
- moai_adk/tag_system/atomic_ops.py +117 -0
- moai_adk/tag_system/linkage.py +335 -0
- moai_adk/tag_system/parser.py +176 -0
- moai_adk/tag_system/validator.py +200 -0
- moai_adk/templates/.claude/agents/moai/builder-agent.md +19 -3
- moai_adk/templates/.claude/agents/moai/builder-command.md +62 -16
- moai_adk/templates/.claude/agents/moai/builder-plugin.md +763 -0
- moai_adk/templates/.claude/agents/moai/builder-skill.md +21 -5
- moai_adk/templates/.claude/agents/moai/expert-backend.md +103 -39
- moai_adk/templates/.claude/agents/moai/expert-debug.md +9 -3
- moai_adk/templates/.claude/agents/moai/expert-devops.md +16 -14
- moai_adk/templates/.claude/agents/moai/expert-frontend.md +45 -31
- moai_adk/templates/.claude/agents/moai/expert-performance.md +13 -9
- moai_adk/templates/.claude/agents/moai/expert-refactoring.md +228 -0
- moai_adk/templates/.claude/agents/moai/expert-security.md +19 -3
- moai_adk/templates/.claude/agents/moai/expert-testing.md +13 -9
- moai_adk/templates/.claude/agents/moai/manager-claude-code.md +8 -2
- moai_adk/templates/.claude/agents/moai/manager-docs.md +10 -5
- moai_adk/templates/.claude/agents/moai/manager-git.md +99 -27
- moai_adk/templates/.claude/agents/moai/manager-project.md +87 -7
- moai_adk/templates/.claude/agents/moai/manager-quality.md +22 -5
- moai_adk/templates/.claude/agents/moai/manager-spec.md +8 -2
- moai_adk/templates/.claude/agents/moai/manager-strategy.md +45 -14
- moai_adk/templates/.claude/agents/moai/manager-tdd.md +16 -3
- moai_adk/templates/.claude/commands/moai/0-project.md +239 -1185
- moai_adk/templates/.claude/commands/moai/1-plan.md +383 -363
- moai_adk/templates/.claude/commands/moai/2-run.md +254 -347
- moai_adk/templates/.claude/commands/moai/3-sync.md +174 -100
- moai_adk/templates/.claude/commands/moai/9-feedback.md +49 -33
- moai_adk/templates/.claude/commands/moai/alfred.md +339 -0
- moai_adk/templates/.claude/commands/moai/cancel-loop.md +163 -0
- moai_adk/templates/.claude/commands/moai/fix.md +264 -0
- moai_adk/templates/.claude/commands/moai/loop.md +363 -0
- moai_adk/templates/.claude/hooks/moai/lib/README.md +143 -0
- moai_adk/templates/.claude/hooks/moai/lib/__init__.py +37 -81
- moai_adk/templates/.claude/hooks/moai/lib/alfred_detector.py +105 -0
- moai_adk/templates/.claude/hooks/moai/lib/atomic_write.py +122 -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.py +376 -0
- moai_adk/templates/.claude/hooks/moai/lib/config_manager.py +24 -28
- moai_adk/templates/.claude/hooks/moai/lib/config_validator.py +14 -14
- moai_adk/templates/.claude/hooks/moai/lib/enhanced_output_style_detector.py +372 -0
- moai_adk/templates/.claude/hooks/moai/lib/exceptions.py +171 -0
- moai_adk/templates/.claude/hooks/moai/lib/file_utils.py +95 -0
- moai_adk/templates/.claude/hooks/moai/lib/git_collector.py +190 -0
- moai_adk/templates/.claude/hooks/moai/lib/git_operations_manager.py +15 -13
- moai_adk/templates/.claude/hooks/moai/lib/language_detector.py +298 -0
- moai_adk/templates/.claude/hooks/moai/lib/language_validator.py +125 -25
- moai_adk/templates/.claude/hooks/moai/lib/main.py +341 -0
- moai_adk/templates/.claude/hooks/moai/lib/memory_collector.py +268 -0
- moai_adk/templates/.claude/hooks/moai/lib/metrics_tracker.py +78 -0
- 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/renderer.py +359 -0
- moai_adk/templates/.claude/hooks/moai/lib/tag_linkage.py +333 -0
- moai_adk/templates/.claude/hooks/moai/lib/tag_parser.py +176 -0
- moai_adk/templates/.claude/hooks/moai/lib/tag_validator.py +200 -0
- moai_adk/templates/.claude/hooks/moai/lib/timeout.py +5 -5
- moai_adk/templates/.claude/hooks/moai/lib/tool_registry.py +896 -0
- moai_adk/templates/.claude/hooks/moai/lib/unified_timeout_manager.py +30 -18
- moai_adk/templates/.claude/hooks/moai/lib/update_checker.py +129 -0
- moai_adk/templates/.claude/hooks/moai/lib/version_reader.py +741 -0
- moai_adk/templates/.claude/hooks/moai/post_tool__ast_grep_scan.py +276 -0
- moai_adk/templates/.claude/hooks/moai/post_tool__code_formatter.py +255 -0
- moai_adk/templates/.claude/hooks/moai/post_tool__coverage_guard.py +325 -0
- moai_adk/templates/.claude/hooks/moai/post_tool__linter.py +315 -0
- moai_adk/templates/.claude/hooks/moai/post_tool__lsp_diagnostic.py +508 -0
- moai_adk/templates/.claude/hooks/moai/pre_commit__tag_validator.py +287 -0
- moai_adk/templates/.claude/hooks/moai/pre_tool__security_guard.py +268 -0
- moai_adk/templates/.claude/hooks/moai/pre_tool__tdd_enforcer.py +208 -0
- moai_adk/templates/.claude/hooks/moai/session_end__auto_cleanup.py +93 -61
- moai_adk/templates/.claude/hooks/moai/session_end__rank_submit.py +69 -0
- moai_adk/templates/.claude/hooks/moai/session_start__show_project_info.py +165 -70
- moai_adk/templates/.claude/hooks/moai/shared/utils/announcement_translator.py +206 -0
- moai_adk/templates/.claude/hooks/moai/stop__loop_controller.py +621 -0
- moai_adk/templates/.claude/output-styles/moai/alfred.md +758 -0
- moai_adk/templates/.claude/output-styles/moai/r2d2.md +86 -3
- moai_adk/templates/.claude/output-styles/moai/yoda.md +2 -2
- moai_adk/templates/.claude/settings.json +154 -77
- moai_adk/templates/.claude/skills/moai-docs-generation/SKILL.md +252 -198
- moai_adk/templates/.claude/skills/moai-docs-generation/examples.md +169 -323
- 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 +226 -320
- moai_adk/templates/.claude/skills/moai-domain-backend/SKILL.md +43 -222
- moai_adk/templates/.claude/skills/moai-domain-database/SKILL.md +75 -219
- moai_adk/templates/.claude/skills/moai-domain-frontend/SKILL.md +103 -463
- 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-uiux/SKILL.md +118 -339
- moai_adk/templates/.claude/skills/moai-formats-data/SKILL.md +74 -377
- moai_adk/templates/.claude/skills/moai-formats-data/modules/README.md +299 -70
- moai_adk/templates/.claude/skills/moai-foundation-claude/SKILL.md +205 -182
- 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-custom-slash-commands-official.md +32 -22
- 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-plugin-marketplaces-official.md +308 -0
- moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-plugins-official.md +640 -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-context/SKILL.md +96 -316
- moai_adk/templates/.claude/skills/moai-foundation-core/SKILL.md +116 -294
- 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-philosopher/SKILL.md +14 -18
- moai_adk/templates/.claude/skills/moai-foundation-quality/SKILL.md +86 -270
- moai_adk/templates/.claude/skills/moai-framework-electron/SKILL.md +288 -0
- moai_adk/templates/.claude/skills/moai-framework-electron/examples.md +2082 -0
- moai_adk/templates/.claude/skills/moai-framework-electron/reference.md +1649 -0
- moai_adk/templates/.claude/skills/moai-lang-cpp/SKILL.md +76 -582
- moai_adk/templates/.claude/skills/moai-lang-cpp/examples.md +1239 -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 +1136 -0
- moai_adk/templates/.claude/skills/moai-lang-csharp/SKILL.md +82 -436
- 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 +65 -542
- moai_adk/templates/.claude/skills/moai-lang-elixir/examples.md +1171 -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 +889 -0
- moai_adk/templates/.claude/skills/moai-lang-flutter/SKILL.md +32 -405
- moai_adk/templates/.claude/skills/moai-lang-go/SKILL.md +114 -293
- moai_adk/templates/.claude/skills/moai-lang-java/SKILL.md +83 -307
- moai_adk/templates/.claude/skills/moai-lang-javascript/SKILL.md +179 -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 +42 -279
- moai_adk/templates/.claude/skills/moai-lang-php/SKILL.md +94 -556
- moai_adk/templates/.claude/skills/moai-lang-php/examples.md +1608 -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 +1323 -0
- moai_adk/templates/.claude/skills/moai-lang-python/SKILL.md +108 -358
- moai_adk/templates/.claude/skills/moai-lang-r/SKILL.md +84 -482
- moai_adk/templates/.claude/skills/moai-lang-r/examples.md +1154 -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 +1087 -0
- moai_adk/templates/.claude/skills/moai-lang-ruby/SKILL.md +106 -610
- moai_adk/templates/.claude/skills/moai-lang-ruby/examples.md +1106 -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 +1024 -0
- moai_adk/templates/.claude/skills/moai-lang-rust/SKILL.md +51 -265
- moai_adk/templates/.claude/skills/moai-lang-scala/SKILL.md +106 -442
- 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-swift/SKILL.md +88 -457
- 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-typescript/SKILL.md +75 -283
- moai_adk/templates/.claude/skills/moai-library-mermaid/SKILL.md +97 -252
- moai_adk/templates/.claude/skills/moai-library-nextra/SKILL.md +64 -240
- 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-shadcn/SKILL.md +90 -287
- moai_adk/templates/.claude/skills/moai-platform-auth0/SKILL.md +200 -206
- 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 +75 -330
- moai_adk/templates/.claude/skills/moai-platform-clerk/examples.md +1426 -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 +100 -340
- 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 +113 -326
- 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 +71 -302
- 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 +101 -412
- 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 +96 -327
- 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 +103 -428
- 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 +96 -446
- 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-tool-ast-grep/SKILL.md +193 -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-workflow-jit-docs/SKILL.md +225 -423
- moai_adk/templates/.claude/skills/moai-workflow-loop/SKILL.md +197 -0
- moai_adk/templates/.claude/skills/moai-workflow-loop/examples.md +1063 -0
- moai_adk/templates/.claude/skills/moai-workflow-loop/reference.md +1414 -0
- moai_adk/templates/.claude/skills/moai-workflow-project/SKILL.md +211 -314
- moai_adk/templates/.claude/skills/moai-workflow-project/schemas/tab_schema.json +15 -43
- moai_adk/templates/.claude/skills/moai-workflow-spec/SKILL.md +119 -316
- moai_adk/templates/.claude/skills/moai-workflow-spec/modules/advanced-patterns.md +237 -0
- moai_adk/templates/.claude/skills/moai-workflow-templates/SKILL.md +96 -203
- moai_adk/templates/.claude/skills/moai-workflow-testing/SKILL.md +201 -388
- 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-worktree/SKILL.md +228 -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 +162 -59
- moai_adk/templates/.github/workflows/ci-universal.yml +934 -133
- moai_adk/templates/.gitignore +65 -107
- moai_adk/templates/.lsp.json +152 -0
- moai_adk/templates/.mcp.json +2 -20
- moai_adk/templates/.moai/announcements/en.json +18 -0
- moai_adk/templates/.moai/announcements/ja.json +18 -0
- moai_adk/templates/.moai/announcements/ko.json +18 -0
- moai_adk/templates/.moai/announcements/zh.json +18 -0
- moai_adk/templates/.moai/config/config.yaml +8 -2
- moai_adk/templates/.moai/config/multilingual-triggers.yaml +213 -0
- moai_adk/templates/.moai/config/sections/language.yaml +2 -2
- moai_adk/templates/.moai/config/sections/llm.yaml +41 -0
- moai_adk/templates/.moai/config/sections/pricing.yaml +30 -0
- moai_adk/templates/.moai/config/sections/project.yaml +2 -2
- moai_adk/templates/.moai/config/sections/quality.yaml +43 -5
- moai_adk/templates/.moai/config/sections/ralph.yaml +55 -0
- moai_adk/templates/.moai/config/sections/system.yaml +46 -1
- moai_adk/templates/.moai/config/sections/user.yaml +1 -1
- moai_adk/templates/.moai/config/statusline-config.yaml +2 -2
- moai_adk/templates/.moai/llm-configs/glm.json +22 -0
- moai_adk/templates/CLAUDE.ja.md +343 -0
- moai_adk/templates/CLAUDE.ko.md +343 -0
- moai_adk/templates/CLAUDE.md +200 -499
- moai_adk/templates/CLAUDE.zh.md +343 -0
- moai_adk/utils/common.py +37 -0
- moai_adk/version.py +1 -1
- moai_adk-1.1.0.dist-info/METADATA +2443 -0
- moai_adk-1.1.0.dist-info/RECORD +701 -0
- {moai_adk-0.34.0.dist-info → moai_adk-1.1.0.dist-info}/entry_points.txt +2 -0
- moai_adk-1.1.0.dist-info/licenses/LICENSE +99 -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/agents/moai/ai-nano-banana.md +0 -670
- moai_adk/templates/.claude/agents/moai/expert-database.md +0 -777
- moai_adk/templates/.claude/agents/moai/expert-uiux.md +0 -1041
- moai_adk/templates/.claude/agents/moai/mcp-context7.md +0 -458
- moai_adk/templates/.claude/agents/moai/mcp-figma.md +0 -1607
- moai_adk/templates/.claude/agents/moai/mcp-notion.md +0 -789
- moai_adk/templates/.claude/agents/moai/mcp-playwright.md +0 -469
- moai_adk/templates/.claude/agents/moai/mcp-sequential-thinking.md +0 -1032
- moai_adk/templates/.claude/skills/moai-ai-nano-banana/SKILL.md +0 -438
- moai_adk/templates/.claude/skills/moai-ai-nano-banana/examples.md +0 -431
- moai_adk/templates/.claude/skills/moai-domain-uiux/modules/design-system-tokens.md +0 -405
- moai_adk/templates/.claude/skills/moai-library-nextra/advanced-patterns.md +0 -336
- moai_adk/templates/.claude/skills/moai-mcp-figma/SKILL.md +0 -402
- moai_adk/templates/.claude/skills/moai-mcp-figma/advanced-patterns.md +0 -607
- moai_adk/templates/.claude/skills/moai-mcp-notion/SKILL.md +0 -300
- moai_adk/templates/.claude/skills/moai-mcp-notion/advanced-patterns.md +0 -537
- 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 -175
- 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 -411
- 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/config/questions/_schema.yaml +0 -151
- moai_adk/templates/.moai/config/questions/tab0-init.yaml +0 -251
- moai_adk/templates/.moai/config/questions/tab1-user.yaml +0 -108
- moai_adk/templates/.moai/config/questions/tab2-project.yaml +0 -81
- moai_adk/templates/.moai/config/questions/tab3-git.yaml +0 -634
- moai_adk/templates/.moai/config/questions/tab4-quality.yaml +0 -170
- moai_adk/templates/.moai/config/questions/tab5-system.yaml +0 -87
- moai_adk/templates/.moai/scripts/setup-glm.py +0 -136
- moai_adk-0.34.0.dist-info/METADATA +0 -2999
- moai_adk-0.34.0.dist-info/RECORD +0 -463
- moai_adk-0.34.0.dist-info/licenses/LICENSE +0 -21
- /moai_adk/foundation/{git.py → git/__init__.py} +0 -0
- /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.34.0.dist-info → moai_adk-1.1.0.dist-info}/WHEEL +0 -0
moai_adk/cli/commands/update.py
CHANGED
|
@@ -44,8 +44,10 @@ from __future__ import annotations
|
|
|
44
44
|
|
|
45
45
|
import json
|
|
46
46
|
import logging
|
|
47
|
+
import os
|
|
47
48
|
import shutil
|
|
48
49
|
import subprocess
|
|
50
|
+
import sys
|
|
49
51
|
from datetime import datetime
|
|
50
52
|
from pathlib import Path
|
|
51
53
|
from typing import Any, Union, cast
|
|
@@ -65,8 +67,14 @@ from moai_adk.core.migration.custom_element_scanner import create_custom_element
|
|
|
65
67
|
from moai_adk.core.migration.selective_restorer import create_selective_restorer
|
|
66
68
|
from moai_adk.core.migration.user_selection_ui import create_user_selection_ui
|
|
67
69
|
from moai_adk.core.template.processor import TemplateProcessor
|
|
68
|
-
|
|
69
|
-
|
|
70
|
+
from moai_adk.utils.common import reset_stdin
|
|
71
|
+
|
|
72
|
+
# Force UTF-8 encoding for Windows compatibility
|
|
73
|
+
# Windows PowerShell/Console uses 'charmap' by default, which can't encode emojis
|
|
74
|
+
if sys.platform == "win32":
|
|
75
|
+
console = Console(force_terminal=True, legacy_windows=False)
|
|
76
|
+
else:
|
|
77
|
+
console = Console()
|
|
70
78
|
logger = logging.getLogger(__name__)
|
|
71
79
|
|
|
72
80
|
# Constants for tool detection
|
|
@@ -263,10 +271,10 @@ def _get_latest_version() -> str:
|
|
|
263
271
|
Raises:
|
|
264
272
|
RuntimeError: If PyPI API unavailable or parsing fails
|
|
265
273
|
"""
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
import urllib.request
|
|
274
|
+
import urllib.error
|
|
275
|
+
import urllib.request
|
|
269
276
|
|
|
277
|
+
try:
|
|
270
278
|
url = "https://pypi.org/pypi/moai-adk/json"
|
|
271
279
|
with urllib.request.urlopen(url, timeout=5) as response: # nosec B310 - URL is hardcoded HTTPS to PyPI API, no user input
|
|
272
280
|
data = json.loads(response.read().decode("utf-8"))
|
|
@@ -983,9 +991,9 @@ def _restore_user_settings(project_path: Path, preserved: dict[str, Path | None]
|
|
|
983
991
|
success = True
|
|
984
992
|
|
|
985
993
|
# Restore settings.local.json
|
|
986
|
-
|
|
994
|
+
backup_path = preserved.get("settings.local.json")
|
|
995
|
+
if backup_path is not None:
|
|
987
996
|
try:
|
|
988
|
-
backup_path = preserved["settings.local.json"]
|
|
989
997
|
settings_local = claude_dir / "settings.local.json"
|
|
990
998
|
settings_local.write_text(backup_path.read_text(encoding="utf-8"))
|
|
991
999
|
console.print(" [cyan]✓ Restored user settings[/cyan]")
|
|
@@ -1445,18 +1453,13 @@ def _restore_selected_skills(skills: list[str], backup_path: Path, project_path:
|
|
|
1445
1453
|
|
|
1446
1454
|
|
|
1447
1455
|
def _show_post_update_guidance(backup_path: Path) -> None:
|
|
1448
|
-
"""Show post-update
|
|
1456
|
+
"""Show post-update completion message.
|
|
1449
1457
|
|
|
1450
1458
|
Args:
|
|
1451
1459
|
backup_path: Backup directory path for reference
|
|
1452
1460
|
"""
|
|
1453
1461
|
console.print("\n" + "[cyan]" + "=" * 60 + "[/cyan]")
|
|
1454
1462
|
console.print("[green]✅ Update complete![/green]")
|
|
1455
|
-
console.print("\n[yellow]📝 IMPORTANT - Next step:[/yellow]")
|
|
1456
|
-
console.print(" Run [cyan]/moai:0-project update[/cyan] in Claude Code")
|
|
1457
|
-
console.print("\n This will:")
|
|
1458
|
-
console.print(" • Merge your settings with new templates")
|
|
1459
|
-
console.print(" • Validate configuration compatibility")
|
|
1460
1463
|
console.print("\n[dim]💡 Personal instructions should go in CLAUDE.local.md[/dim]")
|
|
1461
1464
|
console.print(f"[dim]📂 Backup location: {backup_path}[/dim]")
|
|
1462
1465
|
console.print("[cyan]" + "=" * 60 + "[/cyan]\n")
|
|
@@ -1500,15 +1503,14 @@ def _sync_templates(project_path: Path, force: bool = False, yes: bool = False)
|
|
|
1500
1503
|
backup_path = backup.create_backup()
|
|
1501
1504
|
console.print(f"💾 Created backup: {backup_path.name}")
|
|
1502
1505
|
|
|
1503
|
-
# Merge analysis using
|
|
1506
|
+
# Merge analysis using Pure Python semantic heuristics
|
|
1504
1507
|
try:
|
|
1505
1508
|
analyzer = MergeAnalyzer(project_path)
|
|
1506
1509
|
# Template source path from installed package
|
|
1507
1510
|
template_path = Path(__file__).parent.parent.parent / "templates"
|
|
1508
1511
|
|
|
1509
|
-
console.print("\n[cyan]🔍 Starting merge analysis
|
|
1510
|
-
console.print("[dim] Analyzing
|
|
1511
|
-
console.print("[dim] Please wait...[/dim]\n")
|
|
1512
|
+
console.print("\n[cyan]🔍 Starting merge analysis...[/cyan]")
|
|
1513
|
+
console.print("[dim] Analyzing templates with semantic heuristics.[/dim]\n")
|
|
1512
1514
|
analysis = analyzer.analyze_merge(backup_path, template_path)
|
|
1513
1515
|
|
|
1514
1516
|
# Ask user confirmation
|
|
@@ -1556,6 +1558,7 @@ def _sync_templates(project_path: Path, force: bool = False, yes: bool = False)
|
|
|
1556
1558
|
if not validation_passed:
|
|
1557
1559
|
if backup_path:
|
|
1558
1560
|
console.print(f"[yellow]🔄 Rolling back to backup: {backup_path.name}[/yellow]")
|
|
1561
|
+
backup = TemplateBackup(project_path)
|
|
1559
1562
|
backup.restore_backup(backup_path)
|
|
1560
1563
|
return False
|
|
1561
1564
|
|
|
@@ -1577,7 +1580,7 @@ def _sync_templates(project_path: Path, force: bool = False, yes: bool = False)
|
|
|
1577
1580
|
if utils_dir.exists():
|
|
1578
1581
|
sys.path.insert(0, str(utils_dir))
|
|
1579
1582
|
try:
|
|
1580
|
-
from announcement_translator import auto_translate_and_update
|
|
1583
|
+
from announcement_translator import auto_translate_and_update # type: ignore[import-not-found]
|
|
1581
1584
|
|
|
1582
1585
|
console.print("[cyan]Updating announcements...[/cyan]")
|
|
1583
1586
|
auto_translate_and_update(project_path)
|
|
@@ -1601,6 +1604,9 @@ def _sync_templates(project_path: Path, force: bool = False, yes: bool = False)
|
|
|
1601
1604
|
# Clean up legacy presets directory
|
|
1602
1605
|
_cleanup_legacy_presets(project_path)
|
|
1603
1606
|
|
|
1607
|
+
# Clean up CLI redesign obsolete files (v0.41+)
|
|
1608
|
+
_cleanup_cli_redesign_obsolete_files(project_path)
|
|
1609
|
+
|
|
1604
1610
|
# NEW: Show post-update guidance
|
|
1605
1611
|
if backup_path:
|
|
1606
1612
|
_show_post_update_guidance(backup_path)
|
|
@@ -1733,6 +1739,14 @@ def _build_template_context(
|
|
|
1733
1739
|
# Detect OS for cross-platform Hook path configuration
|
|
1734
1740
|
hook_project_dir = "%CLAUDE_PROJECT_DIR%" if platform.system() == "Windows" else "$CLAUDE_PROJECT_DIR"
|
|
1735
1741
|
|
|
1742
|
+
# Detect OS for cross-platform statusline command
|
|
1743
|
+
# Windows: Use python -m for better PATH compatibility
|
|
1744
|
+
# Unix: Use moai-adk directly (assumes installed via uv tool)
|
|
1745
|
+
if platform.system() == "Windows":
|
|
1746
|
+
statusline_command = "python -m moai_adk statusline"
|
|
1747
|
+
else:
|
|
1748
|
+
statusline_command = "moai-adk statusline"
|
|
1749
|
+
|
|
1736
1750
|
# Extract and resolve language configuration using centralized resolver
|
|
1737
1751
|
try:
|
|
1738
1752
|
from moai_adk.core.language_config_resolver import get_resolver
|
|
@@ -1830,6 +1844,7 @@ def _build_template_context(
|
|
|
1830
1844
|
"CODEBASE_LANGUAGE": project_section.get("language", "generic"),
|
|
1831
1845
|
"PROJECT_OWNER": project_section.get("author", "@user"),
|
|
1832
1846
|
"AUTHOR": project_section.get("author", "@user"),
|
|
1847
|
+
"STATUSLINE_COMMAND": statusline_command,
|
|
1833
1848
|
}
|
|
1834
1849
|
|
|
1835
1850
|
|
|
@@ -1932,7 +1947,7 @@ def _validate_template_substitution(project_path: Path) -> None:
|
|
|
1932
1947
|
console.print("[red]✗ Template substitution validation failed:[/red]")
|
|
1933
1948
|
for issue in issues_found:
|
|
1934
1949
|
console.print(f" {issue}")
|
|
1935
|
-
console.print("[yellow]💡
|
|
1950
|
+
console.print("[yellow]💡 Check .moai/config/ files for missing variable values[/yellow]")
|
|
1936
1951
|
else:
|
|
1937
1952
|
console.print("[green]✅ Template substitution validation passed[/green]")
|
|
1938
1953
|
|
|
@@ -1975,7 +1990,7 @@ def _validate_template_substitution_with_rollback(project_path: Path, backup_pat
|
|
|
1975
1990
|
if backup_path:
|
|
1976
1991
|
console.print("[yellow]🔄 Rolling back due to validation failure...[/yellow]")
|
|
1977
1992
|
else:
|
|
1978
|
-
console.print("[yellow]💡
|
|
1993
|
+
console.print("[yellow]💡 Check .moai/config/ files for missing variable values[/yellow]")
|
|
1979
1994
|
console.print("[red]⚠️ No backup available - manual fix required[/red]")
|
|
1980
1995
|
|
|
1981
1996
|
return False
|
|
@@ -2082,6 +2097,7 @@ def _execute_migration_if_needed(project_path: Path, yes: bool = False) -> bool:
|
|
|
2082
2097
|
|
|
2083
2098
|
# Confirm with user (unless --yes)
|
|
2084
2099
|
if not yes:
|
|
2100
|
+
reset_stdin() # Reset stdin before interactive prompt
|
|
2085
2101
|
if not click.confirm("Do you want to proceed with migration?", default=True):
|
|
2086
2102
|
console.print("[yellow]⚠️ Migration skipped. Some features may not work correctly.[/yellow]")
|
|
2087
2103
|
console.print("[cyan]💡 Run 'moai-adk migrate' manually when ready[/cyan]")
|
|
@@ -2116,6 +2132,13 @@ def _execute_migration_if_needed(project_path: Path, yes: bool = False) -> bool:
|
|
|
2116
2132
|
@click.option("--check", is_flag=True, help="Only check version (do not update)")
|
|
2117
2133
|
@click.option("--templates-only", is_flag=True, help="Skip package upgrade, sync templates only")
|
|
2118
2134
|
@click.option("--yes", is_flag=True, help="Auto-confirm all prompts (CI/CD mode)")
|
|
2135
|
+
@click.option(
|
|
2136
|
+
"-c",
|
|
2137
|
+
"--config",
|
|
2138
|
+
"edit_config",
|
|
2139
|
+
is_flag=True,
|
|
2140
|
+
help="Edit project configuration (same as init wizard)",
|
|
2141
|
+
)
|
|
2119
2142
|
@click.option(
|
|
2120
2143
|
"--merge",
|
|
2121
2144
|
"merge_strategy",
|
|
@@ -2134,6 +2157,7 @@ def update(
|
|
|
2134
2157
|
check: bool,
|
|
2135
2158
|
templates_only: bool,
|
|
2136
2159
|
yes: bool,
|
|
2160
|
+
edit_config: bool,
|
|
2137
2161
|
merge_strategy: str | None,
|
|
2138
2162
|
) -> None:
|
|
2139
2163
|
"""Update command with 3-stage workflow + merge strategy selection (v0.26.0+).
|
|
@@ -2178,15 +2202,27 @@ def update(
|
|
|
2178
2202
|
- Guide: .moai/guides/merge-guide.md (manual merge only)
|
|
2179
2203
|
"""
|
|
2180
2204
|
try:
|
|
2181
|
-
|
|
2205
|
+
# Use os.getcwd() for consistent path resolution in test environments
|
|
2206
|
+
if path == ".":
|
|
2207
|
+
project_path = Path(os.getcwd()).resolve()
|
|
2208
|
+
else:
|
|
2209
|
+
project_path = Path(path).resolve()
|
|
2182
2210
|
|
|
2183
2211
|
# Verify the project is initialized
|
|
2184
2212
|
if not (project_path / ".moai").exists():
|
|
2185
2213
|
console.print("[yellow]⚠ Project not initialized[/yellow]")
|
|
2186
2214
|
raise click.Abort()
|
|
2187
2215
|
|
|
2216
|
+
# Handle --config / -c mode (edit configuration only, no template updates)
|
|
2217
|
+
if edit_config:
|
|
2218
|
+
_edit_configuration(project_path)
|
|
2219
|
+
return
|
|
2220
|
+
|
|
2188
2221
|
# Get versions (needed for --check and normal workflow, but not for --templates-only alone)
|
|
2189
2222
|
# Note: If --check is used, always fetch versions even if --templates-only is also present
|
|
2223
|
+
# Initialize with defaults to satisfy type checker (will be set in the block below if needed)
|
|
2224
|
+
current: str = __version__
|
|
2225
|
+
latest: str = __version__
|
|
2190
2226
|
if check or not templates_only:
|
|
2191
2227
|
try:
|
|
2192
2228
|
# Try to use new spinner UI
|
|
@@ -2265,6 +2301,7 @@ def update(
|
|
|
2265
2301
|
|
|
2266
2302
|
# Confirm upgrade (unless --yes)
|
|
2267
2303
|
if not yes:
|
|
2304
|
+
reset_stdin() # Reset stdin before interactive prompt
|
|
2268
2305
|
if not click.confirm(f"Upgrade {current} → {latest}?", default=True):
|
|
2269
2306
|
console.print("Cancelled")
|
|
2270
2307
|
return
|
|
@@ -2394,6 +2431,14 @@ def update(
|
|
|
2394
2431
|
processor = TemplateProcessor(project_path)
|
|
2395
2432
|
backup_path = processor.create_backup()
|
|
2396
2433
|
console.print(f" [green]✓ Backup: {backup_path.relative_to(project_path)}/[/green]")
|
|
2434
|
+
|
|
2435
|
+
# Clean up old backups (keep last 5)
|
|
2436
|
+
from moai_adk.core.template.backup import TemplateBackup
|
|
2437
|
+
|
|
2438
|
+
template_backup = TemplateBackup(project_path)
|
|
2439
|
+
deleted_count = template_backup.cleanup_old_backups(keep_count=5)
|
|
2440
|
+
if deleted_count > 0:
|
|
2441
|
+
console.print(f" [cyan]🧹 Cleaned up {deleted_count} old backup(s)[/cyan]")
|
|
2397
2442
|
except Exception as e:
|
|
2398
2443
|
console.print(f" [yellow]⚠ Backup failed: {e}[/yellow]")
|
|
2399
2444
|
console.print(" [yellow]⚠ Continuing without backup...[/yellow]")
|
|
@@ -2424,7 +2469,14 @@ def update(
|
|
|
2424
2469
|
console.print(" [yellow]⚙️ Set optimized=false (optimization needed)[/yellow]")
|
|
2425
2470
|
|
|
2426
2471
|
console.print("\n[green]✓ Update complete![/green]")
|
|
2427
|
-
|
|
2472
|
+
|
|
2473
|
+
# Prompt for MoAI Rank hook installation if eligible
|
|
2474
|
+
try:
|
|
2475
|
+
from moai_adk.rank.hook import prompt_hook_installation
|
|
2476
|
+
|
|
2477
|
+
prompt_hook_installation(console=console)
|
|
2478
|
+
except ImportError:
|
|
2479
|
+
pass # rank module not available
|
|
2428
2480
|
|
|
2429
2481
|
except Exception as e:
|
|
2430
2482
|
console.print(f"[red]✗ Update failed: {e}[/red]")
|
|
@@ -2465,7 +2517,10 @@ def _handle_custom_element_restoration(project_path: Path, backup_path: Path | N
|
|
|
2465
2517
|
return
|
|
2466
2518
|
|
|
2467
2519
|
# Create enhanced user selection UI
|
|
2468
|
-
|
|
2520
|
+
# IMPORTANT: Use backup_path, not project_path!
|
|
2521
|
+
# At this point, custom elements in project have been deleted by copy_templates().
|
|
2522
|
+
# The UI must scan the BACKUP to find elements available for restoration.
|
|
2523
|
+
ui = create_user_selection_ui(backup_path)
|
|
2469
2524
|
|
|
2470
2525
|
console.print(f"\n[cyan]🔍 Found {backup_element_count} custom elements in backup[/cyan]")
|
|
2471
2526
|
|
|
@@ -2548,6 +2603,69 @@ def _cleanup_legacy_presets(project_path: Path) -> None:
|
|
|
2548
2603
|
logger.warning(f"Failed to remove legacy presets directory {presets_dir}: {e}")
|
|
2549
2604
|
|
|
2550
2605
|
|
|
2606
|
+
def _cleanup_cli_redesign_obsolete_files(project_path: Path, dry_run: bool = False) -> int:
|
|
2607
|
+
"""
|
|
2608
|
+
Remove obsolete files from CLI redesign migration (v0.41+).
|
|
2609
|
+
|
|
2610
|
+
Cleans up:
|
|
2611
|
+
- .moai/scripts/setup-glm.py (replaced by moai init CLI)
|
|
2612
|
+
- .moai/config/questions/ (replaced by moai init CLI prompts)
|
|
2613
|
+
- .moai/scripts/ (if empty after cleanup)
|
|
2614
|
+
|
|
2615
|
+
Args:
|
|
2616
|
+
project_path: Project directory path
|
|
2617
|
+
dry_run: If True, only simulate cleanup
|
|
2618
|
+
|
|
2619
|
+
Returns:
|
|
2620
|
+
Number of items cleaned up
|
|
2621
|
+
"""
|
|
2622
|
+
obsolete_items = [
|
|
2623
|
+
".moai/scripts/setup-glm.py",
|
|
2624
|
+
".moai/config/questions",
|
|
2625
|
+
]
|
|
2626
|
+
|
|
2627
|
+
cleaned_count = 0
|
|
2628
|
+
|
|
2629
|
+
for relative_path in obsolete_items:
|
|
2630
|
+
full_path = project_path / relative_path
|
|
2631
|
+
|
|
2632
|
+
if not full_path.exists():
|
|
2633
|
+
continue
|
|
2634
|
+
|
|
2635
|
+
try:
|
|
2636
|
+
if dry_run:
|
|
2637
|
+
console.print(f" [dim]Would remove: {relative_path}[/dim]")
|
|
2638
|
+
cleaned_count += 1
|
|
2639
|
+
else:
|
|
2640
|
+
if full_path.is_dir():
|
|
2641
|
+
shutil.rmtree(full_path)
|
|
2642
|
+
console.print(f" [cyan]Removed obsolete directory: {relative_path}[/cyan]")
|
|
2643
|
+
else:
|
|
2644
|
+
full_path.unlink()
|
|
2645
|
+
console.print(f" [cyan]Removed obsolete file: {relative_path}[/cyan]")
|
|
2646
|
+
logger.info(f"Cleaned up obsolete: {relative_path}")
|
|
2647
|
+
cleaned_count += 1
|
|
2648
|
+
except Exception as e:
|
|
2649
|
+
logger.warning(f"Failed to clean up {relative_path}: {e}")
|
|
2650
|
+
|
|
2651
|
+
# Remove .moai/scripts/ if empty
|
|
2652
|
+
scripts_dir = project_path / ".moai" / "scripts"
|
|
2653
|
+
if scripts_dir.exists() and scripts_dir.is_dir():
|
|
2654
|
+
try:
|
|
2655
|
+
if not any(scripts_dir.iterdir()):
|
|
2656
|
+
if dry_run:
|
|
2657
|
+
console.print(" [dim]Would remove: .moai/scripts (empty)[/dim]")
|
|
2658
|
+
else:
|
|
2659
|
+
shutil.rmtree(scripts_dir)
|
|
2660
|
+
console.print(" [cyan]Removed empty .moai/scripts directory[/cyan]")
|
|
2661
|
+
logger.info("Removed empty .moai/scripts directory")
|
|
2662
|
+
cleaned_count += 1
|
|
2663
|
+
except Exception as e:
|
|
2664
|
+
logger.warning(f"Failed to remove empty scripts directory: {e}")
|
|
2665
|
+
|
|
2666
|
+
return cleaned_count
|
|
2667
|
+
|
|
2668
|
+
|
|
2551
2669
|
def _migrate_config_json_to_yaml(project_path: Path) -> bool:
|
|
2552
2670
|
"""Migrate legacy config.json to config.yaml format.
|
|
2553
2671
|
|
|
@@ -2675,3 +2793,158 @@ def _migrate_preset_files_to_yaml(config_dir: Path) -> None:
|
|
|
2675
2793
|
if migrated_count > 0:
|
|
2676
2794
|
console.print(f" [cyan]🔄 Migrated {migrated_count} preset file(s) to YAML[/cyan]")
|
|
2677
2795
|
logger.info(f"Migrated {migrated_count} preset files to YAML")
|
|
2796
|
+
|
|
2797
|
+
|
|
2798
|
+
def _load_current_settings(project_path: Path) -> dict[str, Any]:
|
|
2799
|
+
"""Load current settings from section YAML files.
|
|
2800
|
+
|
|
2801
|
+
Args:
|
|
2802
|
+
project_path: Project directory path
|
|
2803
|
+
|
|
2804
|
+
Returns:
|
|
2805
|
+
Dictionary with current settings from all section files
|
|
2806
|
+
"""
|
|
2807
|
+
sections_dir = project_path / ".moai" / "config" / "sections"
|
|
2808
|
+
settings: dict[str, Any] = {}
|
|
2809
|
+
|
|
2810
|
+
section_files = [
|
|
2811
|
+
("language", "language.yaml"),
|
|
2812
|
+
("project", "project.yaml"),
|
|
2813
|
+
("pricing", "pricing.yaml"),
|
|
2814
|
+
("git_strategy", "git-strategy.yaml"),
|
|
2815
|
+
("user", "user.yaml"),
|
|
2816
|
+
("llm", "llm.yaml"),
|
|
2817
|
+
]
|
|
2818
|
+
|
|
2819
|
+
for key, filename in section_files:
|
|
2820
|
+
file_path = sections_dir / filename
|
|
2821
|
+
if file_path.exists():
|
|
2822
|
+
try:
|
|
2823
|
+
data = yaml.safe_load(file_path.read_text(encoding="utf-8"))
|
|
2824
|
+
if data:
|
|
2825
|
+
settings[key] = data
|
|
2826
|
+
except yaml.YAMLError:
|
|
2827
|
+
pass
|
|
2828
|
+
|
|
2829
|
+
return settings
|
|
2830
|
+
|
|
2831
|
+
|
|
2832
|
+
def _show_current_config(project_path: Path) -> None:
|
|
2833
|
+
"""Display current configuration summary in a panel.
|
|
2834
|
+
|
|
2835
|
+
Args:
|
|
2836
|
+
project_path: Project directory path
|
|
2837
|
+
"""
|
|
2838
|
+
from rich.panel import Panel
|
|
2839
|
+
|
|
2840
|
+
settings = _load_current_settings(project_path)
|
|
2841
|
+
|
|
2842
|
+
# Extract values with defaults
|
|
2843
|
+
project_name = settings.get("project", {}).get("project", {}).get("name", project_path.name)
|
|
2844
|
+
if isinstance(settings.get("project", {}).get("project"), dict):
|
|
2845
|
+
project_name = settings["project"]["project"].get("name", project_path.name)
|
|
2846
|
+
elif "project" in settings and "name" in settings.get("project", {}).get("project", {}):
|
|
2847
|
+
project_name = settings["project"]["project"]["name"]
|
|
2848
|
+
else:
|
|
2849
|
+
# Try alternative structure
|
|
2850
|
+
project_name = settings.get("project", {}).get("name", project_path.name)
|
|
2851
|
+
|
|
2852
|
+
user_name = settings.get("user", {}).get("user", {}).get("name", "")
|
|
2853
|
+
if not user_name and isinstance(settings.get("user"), dict):
|
|
2854
|
+
user_name = settings.get("user", {}).get("name", "")
|
|
2855
|
+
|
|
2856
|
+
conv_lang = settings.get("language", {}).get("language", {}).get("conversation_language", "en")
|
|
2857
|
+
conv_lang_name = settings.get("language", {}).get("language", {}).get("conversation_language_name", "English")
|
|
2858
|
+
|
|
2859
|
+
# GLM-only simplified flow - service is always GLM
|
|
2860
|
+
glm_pricing_plan = settings.get("pricing", {}).get("service", {}).get("glm_pricing_plan", "basic")
|
|
2861
|
+
|
|
2862
|
+
git_mode = settings.get("git_strategy", {}).get("git_strategy", {}).get("mode", "personal")
|
|
2863
|
+
|
|
2864
|
+
llm_mode = settings.get("llm", {}).get("llm", {}).get("mode", "claude-only")
|
|
2865
|
+
|
|
2866
|
+
# Build display content
|
|
2867
|
+
lines = [
|
|
2868
|
+
f"📁 Project: [cyan]{project_name}[/cyan]",
|
|
2869
|
+
]
|
|
2870
|
+
if user_name:
|
|
2871
|
+
lines.append(f"👤 User: [cyan]{user_name}[/cyan]")
|
|
2872
|
+
|
|
2873
|
+
lines.append("")
|
|
2874
|
+
lines.append(f"🌐 Language: [green]{conv_lang}[/green] ({conv_lang_name})")
|
|
2875
|
+
lines.append("🔧 Service: [green]GLM CodePlan[/green]" + (f" ({glm_pricing_plan})" if glm_pricing_plan else ""))
|
|
2876
|
+
lines.append(f"🔀 Git: [green]{git_mode}[/green]")
|
|
2877
|
+
lines.append(f"🤖 LLM Mode: [green]{llm_mode}[/green]")
|
|
2878
|
+
|
|
2879
|
+
content = "\n".join(lines)
|
|
2880
|
+
console.print(Panel(content, title="[yellow]Current Configuration[/yellow]", border_style="cyan"))
|
|
2881
|
+
|
|
2882
|
+
|
|
2883
|
+
def _edit_configuration(project_path: Path) -> None:
|
|
2884
|
+
"""Interactive configuration editing using init prompts.
|
|
2885
|
+
|
|
2886
|
+
Args:
|
|
2887
|
+
project_path: Project directory path
|
|
2888
|
+
"""
|
|
2889
|
+
from moai_adk.cli.commands.init import _save_additional_config
|
|
2890
|
+
from moai_adk.cli.prompts.init_prompts import prompt_project_setup
|
|
2891
|
+
|
|
2892
|
+
console.print("\n[cyan]⚙️ Configuration Edit Mode[/cyan]")
|
|
2893
|
+
console.print("[dim]Edit your project settings (same as init wizard)[/dim]\n")
|
|
2894
|
+
|
|
2895
|
+
# Show current config
|
|
2896
|
+
_show_current_config(project_path)
|
|
2897
|
+
console.print()
|
|
2898
|
+
|
|
2899
|
+
# Load current settings to pre-fill
|
|
2900
|
+
settings = _load_current_settings(project_path)
|
|
2901
|
+
|
|
2902
|
+
# Extract current locale for pre-fill
|
|
2903
|
+
current_locale = settings.get("language", {}).get("language", {}).get("conversation_language", "en")
|
|
2904
|
+
project_name = project_path.name
|
|
2905
|
+
|
|
2906
|
+
# Try to get project name from settings
|
|
2907
|
+
project_data = settings.get("project", {})
|
|
2908
|
+
if isinstance(project_data.get("project"), dict):
|
|
2909
|
+
project_name = project_data["project"].get("name", project_path.name)
|
|
2910
|
+
elif "name" in project_data:
|
|
2911
|
+
project_name = project_data.get("name", project_path.name)
|
|
2912
|
+
|
|
2913
|
+
# Run interactive prompt
|
|
2914
|
+
try:
|
|
2915
|
+
answers = prompt_project_setup(
|
|
2916
|
+
project_name=project_name,
|
|
2917
|
+
is_current_dir=True,
|
|
2918
|
+
project_path=project_path,
|
|
2919
|
+
initial_locale=current_locale,
|
|
2920
|
+
)
|
|
2921
|
+
except KeyboardInterrupt:
|
|
2922
|
+
console.print("\n[yellow]Configuration edit cancelled.[/yellow]")
|
|
2923
|
+
return
|
|
2924
|
+
|
|
2925
|
+
if not answers:
|
|
2926
|
+
console.print("[yellow]No changes made.[/yellow]")
|
|
2927
|
+
return
|
|
2928
|
+
|
|
2929
|
+
# Save configuration to section files
|
|
2930
|
+
# Note: API keys are not modified in config edit mode (pass None to preserve existing)
|
|
2931
|
+
# GLM-only flow: service_type is always "glm", glm_pricing_plan defaults to "basic"
|
|
2932
|
+
_save_additional_config(
|
|
2933
|
+
project_path=project_path,
|
|
2934
|
+
project_name=answers.get("project_name", project_name),
|
|
2935
|
+
locale=answers.get("locale", current_locale),
|
|
2936
|
+
user_name=answers.get("user_name", ""),
|
|
2937
|
+
service_type="glm", # Always GLM in simplified flow
|
|
2938
|
+
pricing_plan=None, # Not used in GLM-only flow
|
|
2939
|
+
glm_pricing_plan="basic", # Default GLM pricing plan
|
|
2940
|
+
anthropic_api_key=None, # Not used in GLM-only flow
|
|
2941
|
+
glm_api_key=None, # Preserve existing key
|
|
2942
|
+
git_mode=answers.get("git_mode", "personal"),
|
|
2943
|
+
github_username=answers.get("github_username"),
|
|
2944
|
+
git_commit_lang=answers.get("git_commit_lang", "en"),
|
|
2945
|
+
code_comment_lang=answers.get("code_comment_lang", "en"),
|
|
2946
|
+
doc_lang=answers.get("doc_lang", "en"),
|
|
2947
|
+
)
|
|
2948
|
+
|
|
2949
|
+
console.print("\n[green]✓ Configuration updated successfully![/green]")
|
|
2950
|
+
console.print("[dim]Changes saved to .moai/config/sections/[/dim]")
|