moai-adk 0.25.4__py3-none-any.whl → 0.32.8__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of moai-adk might be problematic. Click here for more details.
- moai_adk/__init__.py +2 -5
- moai_adk/__main__.py +114 -82
- moai_adk/cli/__init__.py +6 -1
- moai_adk/cli/commands/__init__.py +1 -3
- moai_adk/cli/commands/analyze.py +5 -16
- moai_adk/cli/commands/doctor.py +6 -18
- moai_adk/cli/commands/init.py +56 -125
- moai_adk/cli/commands/language.py +14 -35
- moai_adk/cli/commands/status.py +9 -15
- moai_adk/cli/commands/update.py +1555 -190
- moai_adk/cli/prompts/init_prompts.py +112 -56
- moai_adk/cli/spec_status.py +263 -0
- moai_adk/cli/ui/__init__.py +44 -0
- moai_adk/cli/ui/progress.py +422 -0
- moai_adk/cli/ui/prompts.py +389 -0
- moai_adk/cli/ui/theme.py +129 -0
- moai_adk/cli/worktree/__init__.py +27 -0
- moai_adk/cli/worktree/__main__.py +31 -0
- moai_adk/cli/worktree/cli.py +672 -0
- moai_adk/cli/worktree/exceptions.py +89 -0
- moai_adk/cli/worktree/manager.py +490 -0
- moai_adk/cli/worktree/models.py +65 -0
- moai_adk/cli/worktree/registry.py +128 -0
- moai_adk/core/PHASE2_OPTIMIZATIONS.md +467 -0
- moai_adk/core/analysis/session_analyzer.py +17 -56
- moai_adk/core/claude_integration.py +26 -54
- moai_adk/core/command_helpers.py +10 -10
- moai_adk/core/comprehensive_monitoring_system.py +1183 -0
- moai_adk/core/config/auto_spec_config.py +5 -11
- moai_adk/core/config/migration.py +19 -9
- moai_adk/core/config/unified.py +436 -0
- moai_adk/core/context_manager.py +6 -12
- moai_adk/core/enterprise_features.py +1404 -0
- moai_adk/core/error_recovery_system.py +725 -112
- moai_adk/core/event_driven_hook_system.py +1371 -0
- moai_adk/core/git/__init__.py +8 -0
- moai_adk/core/git/branch_manager.py +3 -11
- moai_adk/core/git/checkpoint.py +1 -3
- moai_adk/core/git/conflict_detector.py +413 -0
- moai_adk/core/git/manager.py +91 -1
- moai_adk/core/hooks/post_tool_auto_spec_completion.py +56 -80
- moai_adk/core/input_validation_middleware.py +1006 -0
- moai_adk/core/integration/engine.py +6 -18
- moai_adk/core/integration/integration_tester.py +10 -9
- moai_adk/core/integration/utils.py +1 -1
- moai_adk/core/issue_creator.py +10 -28
- moai_adk/core/jit_context_loader.py +956 -0
- moai_adk/core/jit_enhanced_hook_manager.py +1987 -0
- moai_adk/core/language_config_resolver.py +485 -0
- moai_adk/core/language_validator.py +28 -41
- moai_adk/core/mcp/setup.py +15 -12
- moai_adk/core/merge/__init__.py +9 -0
- moai_adk/core/merge/analyzer.py +481 -0
- moai_adk/core/migration/alfred_to_moai_migrator.py +383 -0
- moai_adk/core/migration/backup_manager.py +78 -9
- moai_adk/core/migration/custom_element_scanner.py +358 -0
- moai_adk/core/migration/file_migrator.py +8 -17
- moai_adk/core/migration/interactive_checkbox_ui.py +488 -0
- moai_adk/core/migration/selective_restorer.py +470 -0
- moai_adk/core/migration/template_utils.py +74 -0
- moai_adk/core/migration/user_selection_ui.py +338 -0
- moai_adk/core/migration/version_detector.py +6 -10
- moai_adk/core/migration/version_migrator.py +3 -3
- moai_adk/core/performance/cache_system.py +8 -10
- moai_adk/core/phase_optimized_hook_scheduler.py +879 -0
- moai_adk/core/project/checker.py +2 -4
- moai_adk/core/project/detector.py +1 -3
- moai_adk/core/project/initializer.py +135 -23
- moai_adk/core/project/phase_executor.py +54 -81
- moai_adk/core/project/validator.py +6 -12
- moai_adk/core/quality/trust_checker.py +9 -27
- moai_adk/core/realtime_monitoring_dashboard.py +1724 -0
- moai_adk/core/robust_json_parser.py +611 -0
- moai_adk/core/rollback_manager.py +73 -148
- moai_adk/core/session_manager.py +10 -26
- moai_adk/core/skill_loading_system.py +579 -0
- moai_adk/core/spec/confidence_scoring.py +31 -100
- moai_adk/core/spec/ears_template_engine.py +351 -286
- moai_adk/core/spec/quality_validator.py +35 -69
- moai_adk/core/spec_status_manager.py +64 -74
- moai_adk/core/template/backup.py +45 -20
- moai_adk/core/template/config.py +112 -39
- moai_adk/core/template/merger.py +11 -19
- moai_adk/core/template/processor.py +253 -149
- moai_adk/core/template_engine.py +73 -40
- moai_adk/core/template_variable_synchronizer.py +417 -0
- moai_adk/core/unified_permission_manager.py +745 -0
- moai_adk/core/user_behavior_analytics.py +851 -0
- moai_adk/core/version_sync.py +429 -0
- moai_adk/foundation/__init__.py +56 -0
- moai_adk/foundation/backend.py +1027 -0
- moai_adk/foundation/database.py +1115 -0
- moai_adk/foundation/devops.py +1585 -0
- moai_adk/foundation/ears.py +431 -0
- moai_adk/foundation/frontend.py +870 -0
- moai_adk/foundation/git/commit_templates.py +4 -12
- moai_adk/foundation/git.py +376 -0
- moai_adk/foundation/langs.py +484 -0
- moai_adk/foundation/ml_ops.py +1162 -0
- moai_adk/foundation/testing.py +1524 -0
- moai_adk/foundation/trust/trust_principles.py +23 -72
- moai_adk/foundation/trust/validation_checklist.py +57 -162
- moai_adk/project/__init__.py +0 -0
- moai_adk/project/configuration.py +1084 -0
- moai_adk/project/documentation.py +566 -0
- moai_adk/project/schema.py +447 -0
- moai_adk/statusline/alfred_detector.py +1 -3
- moai_adk/statusline/config.py +13 -4
- moai_adk/statusline/enhanced_output_style_detector.py +23 -15
- moai_adk/statusline/main.py +51 -15
- moai_adk/statusline/renderer.py +104 -48
- moai_adk/statusline/update_checker.py +3 -9
- moai_adk/statusline/version_reader.py +140 -46
- moai_adk/templates/.claude/agents/moai/ai-nano-banana.md +549 -0
- moai_adk/templates/.claude/agents/moai/builder-agent.md +445 -0
- moai_adk/templates/.claude/agents/moai/builder-command.md +1132 -0
- moai_adk/templates/.claude/agents/moai/builder-skill.md +601 -0
- moai_adk/templates/.claude/agents/moai/expert-backend.md +831 -0
- moai_adk/templates/.claude/agents/moai/expert-database.md +774 -0
- moai_adk/templates/.claude/agents/moai/expert-debug.md +396 -0
- moai_adk/templates/.claude/agents/moai/expert-devops.md +711 -0
- moai_adk/templates/.claude/agents/moai/expert-frontend.md +666 -0
- moai_adk/templates/.claude/agents/moai/expert-security.md +474 -0
- moai_adk/templates/.claude/agents/moai/expert-uiux.md +1038 -0
- moai_adk/templates/.claude/agents/moai/manager-claude-code.md +429 -0
- moai_adk/templates/.claude/agents/moai/manager-docs.md +570 -0
- moai_adk/templates/.claude/agents/moai/manager-git.md +937 -0
- moai_adk/templates/.claude/agents/moai/manager-project.md +891 -0
- moai_adk/templates/.claude/agents/moai/manager-quality.md +598 -0
- moai_adk/templates/.claude/agents/moai/manager-spec.md +713 -0
- moai_adk/templates/.claude/agents/moai/manager-strategy.md +600 -0
- moai_adk/templates/.claude/agents/moai/manager-tdd.md +603 -0
- moai_adk/templates/.claude/agents/moai/mcp-context7.md +369 -0
- moai_adk/templates/.claude/agents/moai/mcp-figma.md +1567 -0
- moai_adk/templates/.claude/agents/moai/mcp-notion.md +749 -0
- moai_adk/templates/.claude/agents/moai/mcp-playwright.md +427 -0
- moai_adk/templates/.claude/agents/moai/mcp-sequential-thinking.md +994 -0
- moai_adk/templates/.claude/commands/moai/0-project.md +1143 -0
- moai_adk/templates/.claude/commands/moai/1-plan.md +1435 -0
- moai_adk/templates/.claude/commands/moai/2-run.md +883 -0
- moai_adk/templates/.claude/commands/moai/3-sync.md +993 -0
- moai_adk/templates/.claude/commands/moai/9-feedback.md +314 -0
- moai_adk/templates/.claude/hooks/__init__.py +8 -0
- moai_adk/templates/.claude/hooks/moai/__init__.py +8 -0
- moai_adk/templates/.claude/hooks/moai/lib/__init__.py +85 -0
- moai_adk/templates/.claude/hooks/moai/lib/checkpoint.py +244 -0
- moai_adk/templates/.claude/hooks/moai/lib/common.py +131 -0
- moai_adk/templates/.claude/hooks/moai/lib/config_manager.py +446 -0
- moai_adk/templates/.claude/hooks/moai/lib/config_validator.py +639 -0
- moai_adk/templates/.claude/hooks/moai/lib/example_config.json +104 -0
- moai_adk/templates/.claude/hooks/moai/lib/git_operations_manager.py +590 -0
- moai_adk/templates/.claude/hooks/moai/lib/language_validator.py +317 -0
- moai_adk/templates/.claude/hooks/moai/lib/models.py +102 -0
- moai_adk/templates/.claude/hooks/moai/lib/path_utils.py +28 -0
- moai_adk/templates/.claude/hooks/moai/lib/project.py +768 -0
- moai_adk/templates/.claude/hooks/moai/lib/test_hooks_improvements.py +443 -0
- moai_adk/templates/.claude/hooks/moai/lib/timeout.py +160 -0
- moai_adk/templates/.claude/hooks/moai/lib/unified_timeout_manager.py +530 -0
- moai_adk/templates/.claude/hooks/moai/session_end__auto_cleanup.py +862 -0
- moai_adk/templates/.claude/hooks/moai/session_start__show_project_info.py +921 -0
- moai_adk/templates/.claude/output-styles/moai/r2d2.md +380 -0
- moai_adk/templates/.claude/output-styles/moai/yoda.md +338 -0
- moai_adk/templates/.claude/settings.json +172 -0
- moai_adk/templates/.claude/skills/moai-docs-generation/SKILL.md +247 -0
- moai_adk/templates/.claude/skills/moai-docs-generation/modules/README.md +44 -0
- moai_adk/templates/.claude/skills/moai-docs-generation/modules/api-documentation.md +130 -0
- moai_adk/templates/.claude/skills/moai-docs-generation/modules/code-documentation.md +152 -0
- moai_adk/templates/.claude/skills/moai-docs-generation/modules/multi-format-output.md +178 -0
- moai_adk/templates/.claude/skills/moai-docs-generation/modules/user-guides.md +147 -0
- moai_adk/templates/.claude/skills/moai-domain-backend/SKILL.md +319 -0
- moai_adk/templates/.claude/skills/moai-domain-database/SKILL.md +320 -0
- moai_adk/templates/.claude/skills/moai-domain-database/modules/README.md +53 -0
- moai_adk/templates/.claude/skills/moai-domain-database/modules/mongodb.md +231 -0
- moai_adk/templates/.claude/skills/moai-domain-database/modules/postgresql.md +169 -0
- moai_adk/templates/.claude/skills/moai-domain-database/modules/redis.md +262 -0
- moai_adk/templates/.claude/skills/moai-domain-frontend/SKILL.md +496 -0
- moai_adk/templates/.claude/skills/moai-domain-uiux/SKILL.md +453 -0
- moai_adk/templates/.claude/skills/moai-domain-uiux/examples.md +560 -0
- moai_adk/templates/.claude/skills/moai-domain-uiux/modules/accessibility-wcag.md +260 -0
- moai_adk/templates/.claude/skills/moai-domain-uiux/modules/component-architecture.md +228 -0
- moai_adk/templates/.claude/skills/moai-domain-uiux/modules/design-system-tokens.md +405 -0
- moai_adk/templates/.claude/skills/moai-domain-uiux/modules/icon-libraries.md +401 -0
- moai_adk/templates/.claude/skills/moai-domain-uiux/modules/theming-system.md +373 -0
- moai_adk/templates/.claude/skills/moai-domain-uiux/reference.md +243 -0
- moai_adk/templates/.claude/skills/moai-formats-data/SKILL.md +491 -0
- moai_adk/templates/.claude/skills/moai-formats-data/modules/README.md +98 -0
- moai_adk/templates/.claude/skills/moai-formats-data/modules/SKILL-MODULARIZATION-TEMPLATE.md +278 -0
- moai_adk/templates/.claude/skills/moai-formats-data/modules/caching-performance.md +459 -0
- moai_adk/templates/.claude/skills/moai-formats-data/modules/data-validation.md +485 -0
- moai_adk/templates/.claude/skills/moai-formats-data/modules/json-optimization.md +374 -0
- moai_adk/templates/.claude/skills/moai-formats-data/modules/toon-encoding.md +308 -0
- moai_adk/templates/.claude/skills/moai-foundation-claude/SKILL.md +201 -0
- moai_adk/templates/.claude/skills/moai-foundation-claude/reference/best-practices-checklist.md +616 -0
- moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-custom-slash-commands-official.md +729 -0
- moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-hooks-official.md +560 -0
- moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-iam-official.md +635 -0
- moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-memory-official.md +543 -0
- moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-settings-official.md +663 -0
- moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-skills-official.md +113 -0
- moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-sub-agents-official.md +238 -0
- moai_adk/templates/.claude/skills/moai-foundation-claude/reference/complete-configuration-guide.md +175 -0
- moai_adk/templates/.claude/skills/moai-foundation-claude/reference/skill-examples.md +1674 -0
- moai_adk/templates/.claude/skills/moai-foundation-claude/reference/skill-formatting-guide.md +729 -0
- moai_adk/templates/.claude/skills/moai-foundation-claude/reference/sub-agents/sub-agent-examples.md +1513 -0
- moai_adk/templates/.claude/skills/moai-foundation-claude/reference/sub-agents/sub-agent-formatting-guide.md +1086 -0
- moai_adk/templates/.claude/skills/moai-foundation-claude/reference/sub-agents/sub-agent-integration-patterns.md +1100 -0
- moai_adk/templates/.claude/skills/moai-foundation-context/SKILL.md +438 -0
- moai_adk/templates/.claude/skills/moai-foundation-core/SKILL.md +515 -0
- moai_adk/templates/.claude/skills/moai-foundation-core/modules/README.md +296 -0
- moai_adk/templates/.claude/skills/moai-foundation-core/modules/agents-reference.md +346 -0
- moai_adk/templates/.claude/skills/moai-foundation-core/modules/commands-reference.md +432 -0
- moai_adk/templates/.claude/skills/moai-foundation-core/modules/delegation-patterns.md +757 -0
- moai_adk/templates/.claude/skills/moai-foundation-core/modules/execution-rules.md +687 -0
- moai_adk/templates/.claude/skills/moai-foundation-core/modules/modular-system.md +665 -0
- moai_adk/templates/.claude/skills/moai-foundation-core/modules/progressive-disclosure.md +649 -0
- moai_adk/templates/.claude/skills/moai-foundation-core/modules/spec-first-tdd.md +864 -0
- moai_adk/templates/.claude/skills/moai-foundation-core/modules/token-optimization.md +708 -0
- moai_adk/templates/.claude/skills/moai-foundation-core/modules/trust-5-framework.md +981 -0
- moai_adk/templates/.claude/skills/moai-foundation-quality/SKILL.md +362 -0
- moai_adk/templates/.claude/skills/moai-foundation-quality/examples.md +1232 -0
- moai_adk/templates/.claude/skills/moai-foundation-quality/modules/best-practices.md +261 -0
- moai_adk/templates/.claude/skills/moai-foundation-quality/modules/integration-patterns.md +194 -0
- moai_adk/templates/.claude/skills/moai-foundation-quality/modules/proactive-analysis.md +229 -0
- moai_adk/templates/.claude/skills/moai-foundation-quality/modules/trust5-validation.md +169 -0
- moai_adk/templates/.claude/skills/moai-foundation-quality/reference.md +1266 -0
- moai_adk/templates/.claude/skills/moai-foundation-quality/scripts/quality-gate.sh +668 -0
- moai_adk/templates/.claude/skills/moai-foundation-quality/templates/github-actions-quality.yml +481 -0
- moai_adk/templates/.claude/skills/moai-foundation-quality/templates/quality-config.yaml +519 -0
- moai_adk/templates/.claude/skills/moai-integration-mcp/SKILL.md +352 -0
- moai_adk/templates/.claude/skills/moai-integration-mcp/modules/README.md +52 -0
- moai_adk/templates/.claude/skills/moai-integration-mcp/modules/error-handling.md +334 -0
- moai_adk/templates/.claude/skills/moai-integration-mcp/modules/integration-patterns.md +310 -0
- moai_adk/templates/.claude/skills/moai-integration-mcp/modules/security-authentication.md +256 -0
- moai_adk/templates/.claude/skills/moai-integration-mcp/modules/server-architecture.md +253 -0
- moai_adk/templates/.claude/skills/moai-lang-unified/README.md +133 -0
- moai_adk/templates/.claude/skills/moai-lang-unified/SKILL.md +296 -0
- moai_adk/templates/.claude/skills/moai-lang-unified/examples.md +1269 -0
- moai_adk/templates/.claude/skills/moai-lang-unified/reference.md +331 -0
- moai_adk/templates/.claude/skills/moai-library-mermaid/SKILL.md +298 -0
- moai_adk/templates/.claude/skills/moai-library-mermaid/advanced-patterns.md +465 -0
- moai_adk/templates/.claude/skills/moai-library-mermaid/examples.md +270 -0
- moai_adk/templates/.claude/skills/moai-library-mermaid/optimization.md +440 -0
- moai_adk/templates/.claude/skills/moai-library-mermaid/reference.md +228 -0
- moai_adk/templates/.claude/skills/moai-library-nextra/SKILL.md +316 -0
- moai_adk/templates/.claude/skills/moai-library-nextra/advanced-patterns.md +336 -0
- moai_adk/templates/.claude/skills/moai-library-nextra/modules/advanced-deployment-patterns.md +182 -0
- moai_adk/templates/.claude/skills/moai-library-nextra/modules/advanced-patterns.md +17 -0
- moai_adk/templates/.claude/skills/moai-library-nextra/modules/configuration.md +57 -0
- moai_adk/templates/.claude/skills/moai-library-nextra/modules/content-architecture-optimization.md +162 -0
- moai_adk/templates/.claude/skills/moai-library-nextra/modules/deployment.md +52 -0
- moai_adk/templates/.claude/skills/moai-library-nextra/modules/framework-core-configuration.md +186 -0
- moai_adk/templates/.claude/skills/moai-library-nextra/modules/i18n-setup.md +55 -0
- moai_adk/templates/.claude/skills/moai-library-nextra/modules/mdx-components.md +52 -0
- moai_adk/templates/.claude/skills/moai-library-nextra/optimization.md +303 -0
- moai_adk/templates/.claude/skills/moai-library-shadcn/SKILL.md +370 -0
- moai_adk/templates/.claude/skills/moai-library-shadcn/examples.md +575 -0
- moai_adk/templates/.claude/skills/moai-library-shadcn/modules/advanced-patterns.md +394 -0
- moai_adk/templates/.claude/skills/moai-library-shadcn/modules/optimization.md +278 -0
- moai_adk/templates/.claude/skills/moai-library-shadcn/modules/shadcn-components.md +457 -0
- moai_adk/templates/.claude/skills/moai-library-shadcn/modules/shadcn-theming.md +373 -0
- moai_adk/templates/.claude/skills/moai-library-shadcn/reference.md +74 -0
- moai_adk/templates/.claude/skills/moai-platform-baas/README.md +186 -0
- moai_adk/templates/.claude/skills/moai-platform-baas/SKILL.md +290 -0
- moai_adk/templates/.claude/skills/moai-platform-baas/examples.md +1225 -0
- moai_adk/templates/.claude/skills/moai-platform-baas/reference.md +567 -0
- moai_adk/templates/.claude/skills/moai-platform-baas/scripts/provider-selector.py +323 -0
- moai_adk/templates/.claude/skills/moai-platform-baas/templates/stack-config.yaml +204 -0
- moai_adk/templates/.claude/skills/moai-workflow-jit-docs/SKILL.md +446 -0
- moai_adk/templates/.claude/skills/moai-workflow-jit-docs/advanced-patterns.md +379 -0
- moai_adk/templates/.claude/skills/moai-workflow-jit-docs/optimization.md +286 -0
- moai_adk/templates/.claude/skills/moai-workflow-project/README.md +190 -0
- moai_adk/templates/.claude/skills/moai-workflow-project/SKILL.md +387 -0
- moai_adk/templates/.claude/skills/moai-workflow-project/__init__.py +520 -0
- moai_adk/templates/.claude/skills/moai-workflow-project/complete_workflow_demo_fixed.py +574 -0
- moai_adk/templates/.claude/skills/moai-workflow-project/examples/complete_project_setup.py +317 -0
- moai_adk/templates/.claude/skills/moai-workflow-project/examples/complete_workflow_demo.py +663 -0
- moai_adk/templates/.claude/skills/moai-workflow-project/examples/config-migration-example.json +190 -0
- moai_adk/templates/.claude/skills/moai-workflow-project/examples/question-examples.json +135 -0
- moai_adk/templates/.claude/skills/moai-workflow-project/examples/quick_start.py +196 -0
- moai_adk/templates/.claude/skills/moai-workflow-project/modules/__init__.py +17 -0
- moai_adk/templates/.claude/skills/moai-workflow-project/modules/advanced-patterns.md +158 -0
- moai_adk/templates/.claude/skills/moai-workflow-project/modules/ask_user_integration.py +340 -0
- moai_adk/templates/.claude/skills/moai-workflow-project/modules/batch_questions.py +713 -0
- moai_adk/templates/.claude/skills/moai-workflow-project/modules/config_manager.py +538 -0
- moai_adk/templates/.claude/skills/moai-workflow-project/modules/documentation_manager.py +1336 -0
- moai_adk/templates/.claude/skills/moai-workflow-project/modules/language_initializer.py +730 -0
- moai_adk/templates/.claude/skills/moai-workflow-project/modules/migration_manager.py +608 -0
- moai_adk/templates/.claude/skills/moai-workflow-project/modules/template_optimizer.py +1005 -0
- moai_adk/templates/.claude/skills/moai-workflow-project/schemas/config-schema.json +316 -0
- moai_adk/templates/.claude/skills/moai-workflow-project/schemas/tab_schema.json +1362 -0
- moai_adk/templates/.claude/skills/moai-workflow-project/templates/config-template.json +71 -0
- moai_adk/templates/.claude/skills/moai-workflow-project/templates/doc-templates/product-template.md +44 -0
- moai_adk/templates/.claude/skills/moai-workflow-project/templates/doc-templates/structure-template.md +48 -0
- moai_adk/templates/.claude/skills/moai-workflow-project/templates/doc-templates/tech-template.md +71 -0
- moai_adk/templates/.claude/skills/moai-workflow-project/templates/question-templates/config-manager-setup.json +109 -0
- moai_adk/templates/.claude/skills/moai-workflow-project/templates/question-templates/language-initializer.json +228 -0
- moai_adk/templates/.claude/skills/moai-workflow-project/templates/question-templates/menu-project-config.json +130 -0
- moai_adk/templates/.claude/skills/moai-workflow-project/templates/question-templates/project-batch-questions.json +97 -0
- moai_adk/templates/.claude/skills/moai-workflow-project/templates/question-templates/spec-workflow-setup.json +150 -0
- moai_adk/templates/.claude/skills/moai-workflow-project/test_integration_simple.py +436 -0
- moai_adk/templates/.claude/skills/moai-workflow-templates/SKILL.md +374 -0
- moai_adk/templates/.claude/skills/moai-workflow-templates/modules/code-templates.md +124 -0
- moai_adk/templates/.claude/skills/moai-workflow-templates/modules/feedback-templates.md +100 -0
- moai_adk/templates/.claude/skills/moai-workflow-templates/modules/template-optimizer.md +138 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/LICENSE.txt +202 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/SKILL.md +453 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/advanced-patterns.md +576 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/examples/ai-powered-testing.py +294 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/examples/console_logging.py +35 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/examples/element_discovery.py +40 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/examples/static_html_automation.py +34 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/README.md +220 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/ai-debugging.md +845 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/automated-code-review.md +1416 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/performance-optimization.md +1234 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/smart-refactoring.md +1243 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/tdd-context7.md +1260 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/optimization.md +505 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/reference/playwright-best-practices.md +57 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/scripts/with_server.py +218 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/templates/alfred-integration.md +376 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/workflows/enterprise-testing-workflow.py +571 -0
- moai_adk/templates/.claude/skills/moai-worktree/SKILL.md +410 -0
- moai_adk/templates/.claude/skills/moai-worktree/examples.md +606 -0
- moai_adk/templates/.claude/skills/moai-worktree/modules/integration-patterns.md +982 -0
- moai_adk/templates/.claude/skills/moai-worktree/modules/parallel-development.md +778 -0
- moai_adk/templates/.claude/skills/moai-worktree/modules/worktree-commands.md +646 -0
- moai_adk/templates/.claude/skills/moai-worktree/modules/worktree-management.md +782 -0
- moai_adk/templates/.claude/skills/moai-worktree/reference.md +357 -0
- moai_adk/templates/.git-hooks/pre-commit +103 -41
- moai_adk/templates/.git-hooks/pre-push +116 -21
- moai_adk/templates/.github/workflows/ci-universal.yml +513 -0
- moai_adk/templates/.github/workflows/security-secrets-check.yml +179 -0
- moai_adk/templates/.gitignore +184 -44
- moai_adk/templates/.mcp.json +7 -9
- moai_adk/templates/.moai/cache/personalization.json +10 -0
- moai_adk/templates/.moai/config/config.yaml +344 -0
- moai_adk/templates/.moai/config/presets/manual.yaml +28 -0
- moai_adk/templates/.moai/config/presets/personal.yaml +30 -0
- moai_adk/templates/.moai/config/presets/team.yaml +33 -0
- moai_adk/templates/.moai/config/questions/_schema.yaml +79 -0
- moai_adk/templates/.moai/config/questions/tab1-user.yaml +108 -0
- moai_adk/templates/.moai/config/questions/tab2-project.yaml +122 -0
- moai_adk/templates/.moai/config/questions/tab3-git.yaml +542 -0
- moai_adk/templates/.moai/config/questions/tab4-quality.yaml +167 -0
- moai_adk/templates/.moai/config/questions/tab5-system.yaml +152 -0
- moai_adk/templates/.moai/config/sections/git-strategy.yaml +40 -0
- moai_adk/templates/.moai/config/sections/language.yaml +11 -0
- moai_adk/templates/.moai/config/sections/project.yaml +13 -0
- moai_adk/templates/.moai/config/sections/quality.yaml +15 -0
- moai_adk/templates/.moai/config/sections/system.yaml +14 -0
- moai_adk/templates/.moai/config/sections/user.yaml +5 -0
- moai_adk/templates/.moai/config/statusline-config.yaml +86 -0
- moai_adk/templates/.moai/scripts/setup-glm.py +136 -0
- moai_adk/templates/CLAUDE.md +382 -501
- moai_adk/utils/__init__.py +24 -1
- moai_adk/utils/banner.py +7 -10
- moai_adk/utils/common.py +16 -30
- moai_adk/utils/link_validator.py +4 -12
- moai_adk/utils/safe_file_reader.py +2 -6
- moai_adk/utils/timeout.py +160 -0
- moai_adk/utils/toon_utils.py +256 -0
- moai_adk/version.py +22 -0
- moai_adk-0.32.8.dist-info/METADATA +2478 -0
- moai_adk-0.32.8.dist-info/RECORD +396 -0
- {moai_adk-0.25.4.dist-info → moai_adk-0.32.8.dist-info}/WHEEL +1 -1
- {moai_adk-0.25.4.dist-info → moai_adk-0.32.8.dist-info}/entry_points.txt +1 -0
- moai_adk/cli/commands/backup.py +0 -82
- moai_adk/cli/commands/improve_user_experience.py +0 -348
- moai_adk/cli/commands/migrate.py +0 -158
- moai_adk/cli/commands/validate_links.py +0 -118
- moai_adk/templates/.github/workflows/moai-gitflow.yml +0 -413
- moai_adk/templates/.github/workflows/moai-release-create.yml +0 -100
- moai_adk/templates/.github/workflows/moai-release-pipeline.yml +0 -188
- moai_adk/utils/user_experience.py +0 -531
- moai_adk-0.25.4.dist-info/METADATA +0 -2279
- moai_adk-0.25.4.dist-info/RECORD +0 -112
- {moai_adk-0.25.4.dist-info → moai_adk-0.32.8.dist-info}/licenses/LICENSE +0 -0
moai_adk/cli/commands/init.py
CHANGED
|
@@ -19,7 +19,7 @@ Project initialization command (interactive/non-interactive):
|
|
|
19
19
|
- Run `Skill("moai-foundation-langs")` to validate detected language stack
|
|
20
20
|
|
|
21
21
|
2. **Before first SPEC creation**:
|
|
22
|
-
- Use `Skill("moai-
|
|
22
|
+
- Use `Skill("moai-core-language-detection")` to confirm language selection
|
|
23
23
|
|
|
24
24
|
3. **Project reinitialization** (`--force`):
|
|
25
25
|
- Skills automatically adapt to new project structure
|
|
@@ -31,14 +31,17 @@ from pathlib import Path
|
|
|
31
31
|
from typing import Sequence
|
|
32
32
|
|
|
33
33
|
import click
|
|
34
|
+
import yaml
|
|
34
35
|
from rich.console import Console
|
|
35
36
|
from rich.progress import BarColumn, Progress, SpinnerColumn, TaskID, TextColumn
|
|
36
37
|
|
|
37
38
|
from moai_adk import __version__
|
|
38
39
|
from moai_adk.cli.prompts import prompt_project_setup
|
|
39
|
-
from moai_adk.core.mcp.setup import MCPSetupManager
|
|
40
40
|
from moai_adk.core.project.initializer import ProjectInitializer
|
|
41
|
-
from moai_adk.statusline.version_reader import
|
|
41
|
+
from moai_adk.statusline.version_reader import (
|
|
42
|
+
VersionConfig,
|
|
43
|
+
VersionReader,
|
|
44
|
+
)
|
|
42
45
|
from moai_adk.utils.banner import print_banner, print_welcome_message
|
|
43
46
|
|
|
44
47
|
console = Console()
|
|
@@ -96,17 +99,6 @@ def create_progress_callback(progress: Progress, task_ids: Sequence[TaskID]):
|
|
|
96
99
|
default=None,
|
|
97
100
|
help="Programming language (auto-detect if not specified)",
|
|
98
101
|
)
|
|
99
|
-
@click.option(
|
|
100
|
-
"--with-mcp",
|
|
101
|
-
multiple=True,
|
|
102
|
-
type=click.Choice(["context7", "figma", "playwright", "sequential-thinking"]),
|
|
103
|
-
help="Install MCP servers automatically (can be used multiple times)",
|
|
104
|
-
)
|
|
105
|
-
@click.option(
|
|
106
|
-
"--mcp-auto",
|
|
107
|
-
is_flag=True,
|
|
108
|
-
help="Auto-install all recommended MCP servers",
|
|
109
|
-
)
|
|
110
102
|
@click.option(
|
|
111
103
|
"--force",
|
|
112
104
|
is_flag=True,
|
|
@@ -118,8 +110,6 @@ def init(
|
|
|
118
110
|
mode: str,
|
|
119
111
|
locale: str,
|
|
120
112
|
language: str | None,
|
|
121
|
-
with_mcp: tuple,
|
|
122
|
-
mcp_auto: bool,
|
|
123
113
|
force: bool,
|
|
124
114
|
) -> None:
|
|
125
115
|
"""Initialize a new MoAI-ADK project
|
|
@@ -163,38 +153,17 @@ def init(
|
|
|
163
153
|
# 3. Interactive vs Non-Interactive
|
|
164
154
|
if non_interactive:
|
|
165
155
|
# Non-Interactive Mode
|
|
166
|
-
console.print(
|
|
167
|
-
f"\n[cyan]🚀 Initializing project at {project_path}...[/cyan]\n"
|
|
168
|
-
)
|
|
156
|
+
console.print(f"\n[cyan]🚀 Initializing project at {project_path}...[/cyan]\n")
|
|
169
157
|
project_name = project_path.name if is_current_dir else path
|
|
170
158
|
locale = locale or "en"
|
|
171
|
-
# Language detection happens in /
|
|
159
|
+
# Language detection happens in /moai:0-project, so default to None here
|
|
172
160
|
# This will become "generic" internally, but Summary will show more helpful message
|
|
173
161
|
if not language:
|
|
174
162
|
language = None
|
|
175
|
-
|
|
176
|
-
# Handle MCP options in non-interactive mode
|
|
177
|
-
if mcp_auto:
|
|
178
|
-
mcp_servers = ["context7", "playwright", "sequential-thinking"]
|
|
179
|
-
console.print(
|
|
180
|
-
"[cyan]🔧 MCP servers:[/cyan] Auto-installing all recommended servers"
|
|
181
|
-
)
|
|
182
|
-
elif with_mcp:
|
|
183
|
-
mcp_servers = list(with_mcp)
|
|
184
|
-
console.print(f"[cyan]🔧 MCP servers:[/cyan] {', '.join(mcp_servers)}")
|
|
185
|
-
else:
|
|
186
|
-
mcp_servers = []
|
|
187
163
|
else:
|
|
188
164
|
# Interactive Mode
|
|
189
165
|
print_welcome_message()
|
|
190
166
|
|
|
191
|
-
# Check for MCP CLI options in interactive mode (warn user)
|
|
192
|
-
if mcp_auto or with_mcp:
|
|
193
|
-
console.print(
|
|
194
|
-
"[yellow]⚠️ MCP options ignored in interactive mode[/yellow]"
|
|
195
|
-
)
|
|
196
|
-
console.print(" Please use the interactive prompts instead.\n")
|
|
197
|
-
|
|
198
167
|
# Interactive prompt
|
|
199
168
|
answers = prompt_project_setup(
|
|
200
169
|
project_name=None if is_current_dir else path,
|
|
@@ -208,7 +177,6 @@ def init(
|
|
|
208
177
|
locale = answers["locale"]
|
|
209
178
|
language = answers["language"]
|
|
210
179
|
project_name = answers["project_name"]
|
|
211
|
-
mcp_servers = answers.get("mcp_servers", [])
|
|
212
180
|
custom_language = answers.get("custom_language")
|
|
213
181
|
|
|
214
182
|
console.print("\n[cyan]🚀 Starting installation...[/cyan]\n")
|
|
@@ -222,9 +190,7 @@ def init(
|
|
|
222
190
|
if initializer.is_initialized():
|
|
223
191
|
# Always reinitialize without confirmation (force mode by default)
|
|
224
192
|
if non_interactive:
|
|
225
|
-
console.print(
|
|
226
|
-
"\n[green]🔄 Reinitializing project (force mode)...[/green]\n"
|
|
227
|
-
)
|
|
193
|
+
console.print("\n[green]🔄 Reinitializing project (force mode)...[/green]\n")
|
|
228
194
|
else:
|
|
229
195
|
# Interactive mode: Simple notification
|
|
230
196
|
console.print("\n[cyan]🔄 Reinitializing project...[/cyan]")
|
|
@@ -248,11 +214,20 @@ def init(
|
|
|
248
214
|
except Exception:
|
|
249
215
|
pass # Ignore removal failures
|
|
250
216
|
|
|
251
|
-
|
|
217
|
+
# Support both YAML (v0.32.5+) and JSON (legacy) config files
|
|
218
|
+
config_yaml_path = project_path / ".moai" / "config" / "config.yaml"
|
|
219
|
+
config_json_path = project_path / ".moai" / "config" / "config.json"
|
|
220
|
+
|
|
221
|
+
config_path = config_yaml_path if config_yaml_path.exists() else config_json_path
|
|
222
|
+
is_yaml = config_path.suffix in (".yaml", ".yml")
|
|
223
|
+
|
|
252
224
|
if config_path.exists():
|
|
253
225
|
try:
|
|
254
226
|
with open(config_path, "r", encoding="utf-8") as f:
|
|
255
|
-
|
|
227
|
+
if is_yaml:
|
|
228
|
+
config_data = yaml.safe_load(f) or {}
|
|
229
|
+
else:
|
|
230
|
+
config_data = json.load(f)
|
|
256
231
|
|
|
257
232
|
# Update version and optimization flags
|
|
258
233
|
if "moai" not in config_data:
|
|
@@ -277,9 +252,14 @@ def init(
|
|
|
277
252
|
config_data["project"]["optimized"] = False
|
|
278
253
|
|
|
279
254
|
with open(config_path, "w", encoding="utf-8") as f:
|
|
280
|
-
|
|
255
|
+
if is_yaml:
|
|
256
|
+
yaml.safe_dump(
|
|
257
|
+
config_data, f, default_flow_style=False, allow_unicode=True, sort_keys=False
|
|
258
|
+
)
|
|
259
|
+
else:
|
|
260
|
+
json.dump(config_data, f, indent=2, ensure_ascii=False)
|
|
281
261
|
except Exception:
|
|
282
|
-
# Ignore read/write failures; config
|
|
262
|
+
# Ignore read/write failures; config is regenerated during initialization
|
|
283
263
|
pass
|
|
284
264
|
|
|
285
265
|
with Progress(
|
|
@@ -313,103 +293,56 @@ def init(
|
|
|
313
293
|
# 6. Output results
|
|
314
294
|
if result.success:
|
|
315
295
|
separator = "[dim]" + ("─" * 60) + "[/dim]"
|
|
316
|
-
console.print(
|
|
317
|
-
"\n[green bold]✅ Initialization Completed Successfully![/green bold]"
|
|
318
|
-
)
|
|
296
|
+
console.print("\n[green bold]✅ Initialization Completed Successfully![/green bold]")
|
|
319
297
|
console.print(separator)
|
|
320
298
|
console.print("\n[cyan]📊 Summary:[/cyan]")
|
|
321
299
|
console.print(f" [dim]📁 Location:[/dim] {result.project_path}")
|
|
322
300
|
# Show language more clearly - "generic" means auto-detect
|
|
323
|
-
language_display = (
|
|
324
|
-
"Auto-detect (use /alfred:0-project)"
|
|
325
|
-
if result.language == "generic"
|
|
326
|
-
else result.language
|
|
327
|
-
)
|
|
301
|
+
language_display = "Auto-detect (use /moai:0-project)" if result.language == "generic" else result.language
|
|
328
302
|
console.print(f" [dim]🌐 Language:[/dim] {language_display}")
|
|
329
|
-
|
|
303
|
+
# Show Git Strategy (default: manual = local-only, no auto-branch)
|
|
304
|
+
console.print(" [dim]🔀 Git:[/dim] manual (github-flow, branch: manual)")
|
|
330
305
|
console.print(f" [dim]🌍 Locale:[/dim] {result.locale}")
|
|
331
|
-
console.print(
|
|
332
|
-
f" [dim]📄 Files:[/dim] {len(result.created_files)} created"
|
|
333
|
-
)
|
|
306
|
+
console.print(f" [dim]📄 Files:[/dim] {len(result.created_files)} created")
|
|
334
307
|
console.print(f" [dim]⏱️ Duration:[/dim] {result.duration}ms")
|
|
335
308
|
|
|
336
|
-
# Show MCP setup info
|
|
337
|
-
if mcp_servers:
|
|
338
|
-
console.print(f" [dim]🔧 MCP Servers:[/dim] {', '.join(mcp_servers)}")
|
|
339
|
-
|
|
340
|
-
# MCP Setup (if servers selected)
|
|
341
|
-
if mcp_servers:
|
|
342
|
-
console.print("\n[cyan]🔧 Setting up MCP servers...[/cyan]")
|
|
343
|
-
mcp_manager = MCPSetupManager(project_path)
|
|
344
|
-
mcp_success = mcp_manager.setup_mcp_servers(mcp_servers)
|
|
345
|
-
if not mcp_success:
|
|
346
|
-
console.print(
|
|
347
|
-
"[yellow]⚠️ MCP setup completed with warnings[/yellow]"
|
|
348
|
-
)
|
|
349
|
-
|
|
350
309
|
# Show backup info if reinitialized
|
|
351
310
|
if is_reinit:
|
|
352
311
|
backup_dir = project_path / ".moai-backups"
|
|
353
312
|
if backup_dir.exists():
|
|
354
|
-
latest_backup = max(
|
|
355
|
-
backup_dir.iterdir(), key=lambda p: p.stat().st_mtime
|
|
356
|
-
)
|
|
313
|
+
latest_backup = max(backup_dir.iterdir(), key=lambda p: p.stat().st_mtime)
|
|
357
314
|
console.print(f" [dim]💾 Backup:[/dim] {latest_backup.name}/")
|
|
358
315
|
|
|
359
316
|
console.print(f"\n{separator}")
|
|
360
317
|
|
|
361
318
|
# Show config merge notice if reinitialized
|
|
362
319
|
if is_reinit:
|
|
363
|
-
console.print("\n[yellow]⚠️ Configuration
|
|
364
|
-
console.print(
|
|
365
|
-
|
|
366
|
-
)
|
|
367
|
-
console.print(
|
|
368
|
-
|
|
369
|
-
)
|
|
370
|
-
console.print("
|
|
371
|
-
console.print(
|
|
372
|
-
|
|
373
|
-
)
|
|
374
|
-
console.print(
|
|
375
|
-
|
|
376
|
-
)
|
|
320
|
+
console.print("\n[yellow]⚠️ Configuration Status: optimized=false (merge required)[/yellow]")
|
|
321
|
+
console.print()
|
|
322
|
+
console.print("[cyan]What Happened:[/cyan]")
|
|
323
|
+
console.print(" ✅ Template files updated to latest version")
|
|
324
|
+
console.print(" 💾 Your previous settings backed up in: [cyan].moai-backups/backup/[/cyan]")
|
|
325
|
+
console.print(" ⏳ Configuration merge required")
|
|
326
|
+
console.print()
|
|
327
|
+
console.print("[cyan]What is optimized=false?[/cyan]")
|
|
328
|
+
console.print(" • Template version changed (you get new features)")
|
|
329
|
+
console.print(" • Your previous settings are safe (backed up)")
|
|
330
|
+
console.print(" • Next: Run /moai:0-project to merge")
|
|
331
|
+
console.print()
|
|
332
|
+
console.print("[cyan]What Happens Next:[/cyan]")
|
|
333
|
+
console.print(" 1. Run [bold]/moai:0-project[/bold] in Claude Code")
|
|
334
|
+
console.print(" 2. System intelligently merges old settings + new template")
|
|
335
|
+
console.print(" 3. After successful merge → optimized becomes true")
|
|
336
|
+
console.print(" 4. You're ready to continue developing\n")
|
|
377
337
|
|
|
378
338
|
console.print("\n[cyan]🚀 Next Steps:[/cyan]")
|
|
379
339
|
if not is_current_dir:
|
|
380
|
-
console.print(
|
|
381
|
-
|
|
382
|
-
)
|
|
383
|
-
console.print(
|
|
384
|
-
" [blue]2.[/blue] Run [bold]/alfred:0-project[/bold] in Claude Code for full setup"
|
|
385
|
-
)
|
|
386
|
-
console.print(
|
|
387
|
-
" (Configure: mode, language, report generation, etc.)"
|
|
388
|
-
)
|
|
340
|
+
console.print(f" [blue]1.[/blue] Run [bold]cd {project_name}[/bold] to enter the project")
|
|
341
|
+
console.print(" [blue]2.[/blue] Run [bold]/moai:0-project[/bold] in Claude Code for full setup")
|
|
342
|
+
console.print(" (Configure: mode, language, report generation, etc.)")
|
|
389
343
|
else:
|
|
390
|
-
console.print(
|
|
391
|
-
|
|
392
|
-
)
|
|
393
|
-
console.print(
|
|
394
|
-
" (Configure: mode, language, report generation, etc.)"
|
|
395
|
-
)
|
|
396
|
-
|
|
397
|
-
# Figma token setup guidance
|
|
398
|
-
if mcp_servers and "figma" in mcp_servers:
|
|
399
|
-
console.print("\n[yellow]🔐 Figma Access Token Setup:[/yellow]")
|
|
400
|
-
console.print(
|
|
401
|
-
" [dim]Figma MCP requires an access token to function:[/dim]"
|
|
402
|
-
)
|
|
403
|
-
console.print(
|
|
404
|
-
" 1. Visit: https://www.figma.com/developers/api#access-tokens"
|
|
405
|
-
)
|
|
406
|
-
console.print(" 2. Create a new access token")
|
|
407
|
-
console.print(
|
|
408
|
-
" 3. Run [bold]/alfred:0-project[/bold] and follow the Figma setup prompts"
|
|
409
|
-
)
|
|
410
|
-
console.print(
|
|
411
|
-
" 4. The token will be securely stored in your environment\n"
|
|
412
|
-
)
|
|
344
|
+
console.print(" [blue]1.[/blue] Run [bold]/moai:0-project[/bold] in Claude Code for full setup")
|
|
345
|
+
console.print(" (Configure: mode, language, report generation, etc.)")
|
|
413
346
|
|
|
414
347
|
if not is_current_dir:
|
|
415
348
|
console.print(" [blue]3.[/blue] Start developing with MoAI-ADK!\n")
|
|
@@ -429,9 +362,7 @@ def init(
|
|
|
429
362
|
raise click.Abort()
|
|
430
363
|
except FileExistsError as e:
|
|
431
364
|
console.print("\n[yellow]⚠ Project already initialized[/yellow]")
|
|
432
|
-
console.print(
|
|
433
|
-
"[dim] Use 'python -m moai_adk status' to check configuration[/dim]\n"
|
|
434
|
-
)
|
|
365
|
+
console.print("[dim] Use 'python -m moai_adk status' to check configuration[/dim]\n")
|
|
435
366
|
raise click.Abort() from e
|
|
436
367
|
except Exception as e:
|
|
437
368
|
console.print(f"\n[red]✗ Initialization failed: {e}[/red]\n")
|
|
@@ -94,9 +94,7 @@ def render_template(template_path, variables_file, output, language):
|
|
|
94
94
|
template_path_obj = Path(template_path)
|
|
95
95
|
output_path_obj = Path(output) if output else None
|
|
96
96
|
|
|
97
|
-
rendered = template_engine.render_file(
|
|
98
|
-
template_path_obj, variables, output_path_obj
|
|
99
|
-
)
|
|
97
|
+
rendered = template_engine.render_file(template_path_obj, variables, output_path_obj)
|
|
100
98
|
|
|
101
99
|
if not output:
|
|
102
100
|
console.print("[bold]Rendered Template:[/bold]")
|
|
@@ -121,9 +119,7 @@ def translate_descriptions(base_description, target_languages, output):
|
|
|
121
119
|
languages = ["en", "ko", "ja", "es", "fr", "de"]
|
|
122
120
|
|
|
123
121
|
claude_integration = ClaudeCLIIntegration()
|
|
124
|
-
descriptions = claude_integration.generate_multilingual_descriptions(
|
|
125
|
-
{"base": base_description}, languages
|
|
126
|
-
)
|
|
122
|
+
descriptions = claude_integration.generate_multilingual_descriptions({"base": base_description}, languages)
|
|
127
123
|
|
|
128
124
|
if output:
|
|
129
125
|
with open(output, "w", encoding="utf-8") as f:
|
|
@@ -139,13 +135,9 @@ def translate_descriptions(base_description, target_languages, output):
|
|
|
139
135
|
|
|
140
136
|
@language.command()
|
|
141
137
|
@click.argument("prompt_template")
|
|
142
|
-
@click.option(
|
|
143
|
-
"--variables", "-v", type=click.Path(exists=True), help="Variables JSON file"
|
|
144
|
-
)
|
|
138
|
+
@click.option("--variables", "-v", type=click.Path(exists=True), help="Variables JSON file")
|
|
145
139
|
@click.option("--language", "-l", help="Target language code")
|
|
146
|
-
@click.option(
|
|
147
|
-
"--output-format", default="json", help="Output format (text, json, stream-json)"
|
|
148
|
-
)
|
|
140
|
+
@click.option("--output-format", default="json", help="Output format (text, json, stream-json)")
|
|
149
141
|
@click.option("--dry-run", is_flag=True, help="Show command without executing")
|
|
150
142
|
def execute(prompt_template, variables, language, output_format, dry_run):
|
|
151
143
|
"""Execute Claude CLI with template variables and language support."""
|
|
@@ -166,9 +158,7 @@ def execute(prompt_template, variables, language, output_format, dry_run):
|
|
|
166
158
|
|
|
167
159
|
if dry_run:
|
|
168
160
|
console.print("[bold]Dry Run - Command that would be executed:[/bold]")
|
|
169
|
-
console.print(
|
|
170
|
-
f"claude --print --output-format {output_format} '{processed_prompt}'"
|
|
171
|
-
)
|
|
161
|
+
console.print(f"claude --print --output-format {output_format} '{processed_prompt}'")
|
|
172
162
|
console.print("[bold]Variables used:[/bold]")
|
|
173
163
|
console.print(json.dumps(template_vars, indent=2, ensure_ascii=False))
|
|
174
164
|
return
|
|
@@ -202,9 +192,7 @@ def execute(prompt_template, variables, language, output_format, dry_run):
|
|
|
202
192
|
|
|
203
193
|
@language.command()
|
|
204
194
|
@click.argument("config_file", type=click.Path(exists=True))
|
|
205
|
-
@click.option(
|
|
206
|
-
"--validate-languages", is_flag=True, help="Validate language codes in config"
|
|
207
|
-
)
|
|
195
|
+
@click.option("--validate-languages", is_flag=True, help="Validate language codes in config")
|
|
208
196
|
def validate_config(config_file, validate_languages):
|
|
209
197
|
"""Validate language configuration in MoAI-ADK config file."""
|
|
210
198
|
try:
|
|
@@ -227,30 +215,23 @@ def validate_config(config_file, validate_languages):
|
|
|
227
215
|
conv_lang = lang_config.get("conversation_language")
|
|
228
216
|
if conv_lang:
|
|
229
217
|
if conv_lang in get_all_supported_codes():
|
|
230
|
-
console.print(
|
|
231
|
-
f"[green]✓ conversation_language '{conv_lang}' is supported[/green]"
|
|
232
|
-
)
|
|
218
|
+
console.print(f"[green]✓ conversation_language '{conv_lang}' is supported[/green]")
|
|
233
219
|
else:
|
|
234
|
-
console.print(
|
|
235
|
-
f"[red]✗ conversation_language '{conv_lang}' is not supported[/red]"
|
|
236
|
-
)
|
|
220
|
+
console.print(f"[red]✗ conversation_language '{conv_lang}' is not supported[/red]")
|
|
237
221
|
else:
|
|
238
|
-
console.print(
|
|
239
|
-
"[yellow]⚠ No conversation_language specified[/yellow]"
|
|
240
|
-
)
|
|
222
|
+
console.print("[yellow]⚠ No conversation_language specified[/yellow]")
|
|
241
223
|
|
|
242
224
|
# Check conversation_language_name
|
|
243
225
|
conv_lang_name = lang_config.get("conversation_language_name")
|
|
244
226
|
if conv_lang_name and conv_lang:
|
|
245
227
|
expected_name = get_native_name(conv_lang)
|
|
246
228
|
if conv_lang_name == expected_name:
|
|
247
|
-
console.print(
|
|
248
|
-
"[green]✓ conversation_language_name matches[/green]"
|
|
249
|
-
)
|
|
229
|
+
console.print("[green]✓ conversation_language_name matches[/green]")
|
|
250
230
|
else:
|
|
251
|
-
|
|
252
|
-
f"
|
|
231
|
+
warning_msg = (
|
|
232
|
+
f"⚠ conversation_language_name '{conv_lang_name}' doesn't match expected '{expected_name}'"
|
|
253
233
|
)
|
|
234
|
+
console.print(f"[yellow]{warning_msg}[/yellow]")
|
|
254
235
|
|
|
255
236
|
if validate_languages:
|
|
256
237
|
# Scan entire config for language codes
|
|
@@ -261,9 +242,7 @@ def validate_config(config_file, validate_languages):
|
|
|
261
242
|
found_codes.append(code)
|
|
262
243
|
|
|
263
244
|
if found_codes:
|
|
264
|
-
console.print(
|
|
265
|
-
f"[blue]Found language codes in config: {', '.join(found_codes)}[/blue]"
|
|
266
|
-
)
|
|
245
|
+
console.print(f"[blue]Found language codes in config: {', '.join(found_codes)}[/blue]")
|
|
267
246
|
|
|
268
247
|
except Exception as e:
|
|
269
248
|
console.print(f"[red]Error validating config: {e}[/red]")
|
moai_adk/cli/commands/status.py
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"""MoAI-ADK status command
|
|
2
2
|
|
|
3
3
|
Project status display:
|
|
4
|
-
- Read project information from config.
|
|
4
|
+
- Read project information from config.yaml
|
|
5
5
|
- Show the number of SPEC documents
|
|
6
6
|
- Summarize the Git status
|
|
7
7
|
|
|
@@ -30,10 +30,10 @@ Project status display:
|
|
|
30
30
|
- When SPEC count grows, verify with `Skill("moai-foundation-trust")`
|
|
31
31
|
"""
|
|
32
32
|
|
|
33
|
-
import json
|
|
34
33
|
from pathlib import Path
|
|
35
34
|
|
|
36
35
|
import click
|
|
36
|
+
import yaml
|
|
37
37
|
from rich.console import Console
|
|
38
38
|
from rich.panel import Panel
|
|
39
39
|
from rich.table import Table
|
|
@@ -52,23 +52,19 @@ def status() -> None:
|
|
|
52
52
|
- Git branch and status
|
|
53
53
|
"""
|
|
54
54
|
try:
|
|
55
|
-
# Read config.
|
|
56
|
-
config_path = Path.cwd() / ".moai" / "config" / "config.
|
|
55
|
+
# Read config.yaml
|
|
56
|
+
config_path = Path.cwd() / ".moai" / "config" / "config.yaml"
|
|
57
57
|
if not config_path.exists():
|
|
58
|
-
console.print("[yellow]⚠ No .moai/config/config.
|
|
59
|
-
console.print(
|
|
60
|
-
"[dim]Run [cyan]python -m moai_adk init .[/cyan] to initialize the project[/dim]"
|
|
61
|
-
)
|
|
58
|
+
console.print("[yellow]⚠ No .moai/config/config.yaml found[/yellow]")
|
|
59
|
+
console.print("[dim]Run [cyan]python -m moai_adk init .[/cyan] to initialize the project[/dim]")
|
|
62
60
|
raise click.Abort()
|
|
63
61
|
|
|
64
62
|
with open(config_path) as f:
|
|
65
|
-
config =
|
|
63
|
+
config = yaml.safe_load(f) or {}
|
|
66
64
|
|
|
67
65
|
# Count SPEC documents
|
|
68
66
|
specs_dir = Path.cwd() / ".moai" / "specs"
|
|
69
|
-
spec_count = (
|
|
70
|
-
len(list(specs_dir.glob("SPEC-*/spec.md"))) if specs_dir.exists() else 0
|
|
71
|
-
)
|
|
67
|
+
spec_count = len(list(specs_dir.glob("SPEC-*/spec.md"))) if specs_dir.exists() else 0
|
|
72
68
|
|
|
73
69
|
# Build the status table
|
|
74
70
|
table = Table(show_header=False, box=None, padding=(0, 2))
|
|
@@ -78,9 +74,7 @@ def status() -> None:
|
|
|
78
74
|
# Read from project section (with legacy fallback)
|
|
79
75
|
project = config.get("project", {})
|
|
80
76
|
table.add_row("Mode", project.get("mode") or config.get("mode", "unknown"))
|
|
81
|
-
table.add_row(
|
|
82
|
-
"Locale", project.get("locale") or config.get("locale", "unknown")
|
|
83
|
-
)
|
|
77
|
+
table.add_row("Locale", project.get("locale") or config.get("locale", "unknown"))
|
|
84
78
|
table.add_row("SPECs", str(spec_count))
|
|
85
79
|
|
|
86
80
|
# Optionally include Git information
|