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
|
@@ -1,413 +0,0 @@
|
|
|
1
|
-
name: MoAI-ADK GitFlow Automation
|
|
2
|
-
|
|
3
|
-
# MoAI-ADK 3-stage pipeline: spec → build → sync
|
|
4
|
-
# Full GitFlow transparency — no Git expertise needed
|
|
5
|
-
|
|
6
|
-
on:
|
|
7
|
-
push:
|
|
8
|
-
branches: [develop, "feature/**"]
|
|
9
|
-
pull_request:
|
|
10
|
-
types: [opened, ready_for_review, converted_to_draft]
|
|
11
|
-
|
|
12
|
-
jobs:
|
|
13
|
-
moai-pipeline:
|
|
14
|
-
name: 🗿 MoAI-ADK Pipeline
|
|
15
|
-
runs-on: ubuntu-latest
|
|
16
|
-
|
|
17
|
-
strategy:
|
|
18
|
-
matrix:
|
|
19
|
-
python-version: ["3.11", "3.12", "3.13"]
|
|
20
|
-
|
|
21
|
-
steps:
|
|
22
|
-
- name: Checkout
|
|
23
|
-
uses: actions/checkout@v4
|
|
24
|
-
|
|
25
|
-
# Multi-language toolchains (conditional)
|
|
26
|
-
- name: Setup Python
|
|
27
|
-
if: ${{ hashFiles('requirements.txt') != '' || hashFiles('pyproject.toml') != '' || hashFiles('setup.py') != '' }}
|
|
28
|
-
uses: actions/setup-python@v5
|
|
29
|
-
with:
|
|
30
|
-
python-version: ${{ matrix.python-version }}
|
|
31
|
-
|
|
32
|
-
- name: Setup Node.js
|
|
33
|
-
if: ${{ hashFiles('package.json') != '' }}
|
|
34
|
-
uses: actions/setup-node@v4
|
|
35
|
-
with:
|
|
36
|
-
node-version: "22"
|
|
37
|
-
|
|
38
|
-
- name: Setup Bun
|
|
39
|
-
if: ${{ hashFiles('bun.lockb') != '' }}
|
|
40
|
-
uses: oven-sh/setup-bun@v2
|
|
41
|
-
with:
|
|
42
|
-
bun-version: "latest"
|
|
43
|
-
|
|
44
|
-
- name: Setup Go
|
|
45
|
-
if: ${{ hashFiles('go.mod') != '' }}
|
|
46
|
-
uses: actions/setup-go@v5
|
|
47
|
-
with:
|
|
48
|
-
go-version: "1.23"
|
|
49
|
-
|
|
50
|
-
- name: Setup Rust
|
|
51
|
-
if: ${{ hashFiles('Cargo.toml') != '' }}
|
|
52
|
-
uses: dtolnay/rust-toolchain@stable
|
|
53
|
-
|
|
54
|
-
- name: Setup Java
|
|
55
|
-
if: ${{ hashFiles('pom.xml') != '' || hashFiles('build.gradle') != '' || hashFiles('build.gradle.kts') != '' }}
|
|
56
|
-
uses: actions/setup-java@v4
|
|
57
|
-
with:
|
|
58
|
-
distribution: "temurin"
|
|
59
|
-
java-version: "21"
|
|
60
|
-
|
|
61
|
-
- name: Setup .NET
|
|
62
|
-
if: ${{ hashFiles('**/*.sln') != '' || hashFiles('**/*.csproj') != '' }}
|
|
63
|
-
uses: actions/setup-dotnet@v4
|
|
64
|
-
with:
|
|
65
|
-
dotnet-version: "8.0.x"
|
|
66
|
-
|
|
67
|
-
- name: Setup Ruby
|
|
68
|
-
if: ${{ hashFiles('Gemfile') != '' }}
|
|
69
|
-
uses: ruby/setup-ruby@v1
|
|
70
|
-
with:
|
|
71
|
-
ruby-version: "3.3"
|
|
72
|
-
bundler-cache: true
|
|
73
|
-
|
|
74
|
-
- name: Setup Flutter
|
|
75
|
-
if: ${{ hashFiles('pubspec.yaml') != '' }}
|
|
76
|
-
uses: subosito/flutter-action@v2
|
|
77
|
-
with:
|
|
78
|
-
flutter-version: "3.24.x"
|
|
79
|
-
channel: "stable"
|
|
80
|
-
|
|
81
|
-
- name: Setup Swift (Xcode)
|
|
82
|
-
if: ${{ hashFiles('Package.swift') != '' || hashFiles('**/*.xcodeproj') != '' || hashFiles('**/*.xcworkspace') != '' }}
|
|
83
|
-
uses: maxim-lobanov/setup-xcode@v1
|
|
84
|
-
with:
|
|
85
|
-
xcode-version: "latest-stable"
|
|
86
|
-
|
|
87
|
-
- name: Setup Kotlin
|
|
88
|
-
if: ${{ hashFiles('build.gradle.kts') != '' || hashFiles('settings.gradle.kts') != '' }}
|
|
89
|
-
uses: actions/setup-java@v4
|
|
90
|
-
with:
|
|
91
|
-
distribution: "temurin"
|
|
92
|
-
java-version: "21"
|
|
93
|
-
|
|
94
|
-
# TRUST 5 Principles — automated validation
|
|
95
|
-
# Note: Validation is handled by TypeScript-based tools
|
|
96
|
-
- name: 🧭 TRUST 5 Principles Check
|
|
97
|
-
run: |
|
|
98
|
-
echo "✅ TRUST validation is performed by TypeScript-based tools"
|
|
99
|
-
echo " - Uses @agent-trust-checker"
|
|
100
|
-
echo " - Leverages TypeScript hook system"
|
|
101
|
-
|
|
102
|
-
# Ignore test failures on Draft PRs; fail CI on Ready PRs
|
|
103
|
-
- name: Run language-aware tests
|
|
104
|
-
run: |
|
|
105
|
-
set -e
|
|
106
|
-
ALLOW_FAILURE="${{ github.event.pull_request.draft == true }}"
|
|
107
|
-
echo "🔎 Running language-aware tests (Draft PR: allow failure = $ALLOW_FAILURE)"
|
|
108
|
-
|
|
109
|
-
# Python tests
|
|
110
|
-
if [ -f "requirements.txt" ] || [ -f "pyproject.toml" ] || [ -f "setup.py" ]; then
|
|
111
|
-
echo "➡️ Python tests"
|
|
112
|
-
pip install -q pytest pytest-cov 2>/dev/null || true
|
|
113
|
-
pip install -e . 2>/dev/null || pip install -e .[dev] || true
|
|
114
|
-
if [ "$ALLOW_FAILURE" = "true" ]; then
|
|
115
|
-
pytest --cov --cov-report=term-missing --no-cov-fail-under || true
|
|
116
|
-
else
|
|
117
|
-
pytest --cov --cov-report=term-missing --no-cov-fail-under || true
|
|
118
|
-
fi
|
|
119
|
-
fi
|
|
120
|
-
|
|
121
|
-
# Node.js/Bun tests
|
|
122
|
-
if [ -f "package.json" ]; then
|
|
123
|
-
echo "➡️ Node.js/Bun tests"
|
|
124
|
-
if [ -f "bun.lockb" ]; then
|
|
125
|
-
bun install --frozen-lockfile || bun install
|
|
126
|
-
if [ "$ALLOW_FAILURE" = "true" ]; then
|
|
127
|
-
bun test || true
|
|
128
|
-
else
|
|
129
|
-
bun test
|
|
130
|
-
fi
|
|
131
|
-
else
|
|
132
|
-
npm ci --prefer-offline || npm install
|
|
133
|
-
if [ "$ALLOW_FAILURE" = "true" ]; then
|
|
134
|
-
npm test --if-present -- --coverage || true
|
|
135
|
-
else
|
|
136
|
-
npm test --if-present -- --coverage
|
|
137
|
-
fi
|
|
138
|
-
fi
|
|
139
|
-
fi
|
|
140
|
-
|
|
141
|
-
# Go tests
|
|
142
|
-
if [ -f "go.mod" ]; then
|
|
143
|
-
echo "➡️ Go tests"
|
|
144
|
-
if [ "$ALLOW_FAILURE" = "true" ]; then
|
|
145
|
-
go test -v -cover ./... || true
|
|
146
|
-
else
|
|
147
|
-
go test -v -cover ./...
|
|
148
|
-
fi
|
|
149
|
-
fi
|
|
150
|
-
|
|
151
|
-
# Rust tests
|
|
152
|
-
if [ -f "Cargo.toml" ]; then
|
|
153
|
-
echo "➡️ Rust tests"
|
|
154
|
-
if [ "$ALLOW_FAILURE" = "true" ]; then
|
|
155
|
-
cargo test --all --locked || cargo test || true
|
|
156
|
-
else
|
|
157
|
-
cargo test --all --locked || cargo test
|
|
158
|
-
fi
|
|
159
|
-
fi
|
|
160
|
-
|
|
161
|
-
# Java tests (Maven)
|
|
162
|
-
if [ -f "pom.xml" ]; then
|
|
163
|
-
echo "➡️ Java tests (Maven)"
|
|
164
|
-
if [ "$ALLOW_FAILURE" = "true" ]; then
|
|
165
|
-
mvn -q -DskipTests=false test || true
|
|
166
|
-
else
|
|
167
|
-
mvn -q -DskipTests=false test
|
|
168
|
-
fi
|
|
169
|
-
fi
|
|
170
|
-
|
|
171
|
-
# Java/Kotlin tests (Gradle)
|
|
172
|
-
if [ -f "build.gradle" ] || [ -f "build.gradle.kts" ]; then
|
|
173
|
-
echo "➡️ Java/Kotlin tests (Gradle)"
|
|
174
|
-
if [ "$ALLOW_FAILURE" = "true" ]; then
|
|
175
|
-
./gradlew test || gradle test || true
|
|
176
|
-
else
|
|
177
|
-
./gradlew test || gradle test
|
|
178
|
-
fi
|
|
179
|
-
fi
|
|
180
|
-
|
|
181
|
-
# .NET tests
|
|
182
|
-
if compgen -G "**/*.sln" > /dev/null || compgen -G "**/*.csproj" > /dev/null; then
|
|
183
|
-
echo "➡️ .NET tests"
|
|
184
|
-
if [ "$ALLOW_FAILURE" = "true" ]; then
|
|
185
|
-
dotnet test || true
|
|
186
|
-
else
|
|
187
|
-
dotnet test
|
|
188
|
-
fi
|
|
189
|
-
fi
|
|
190
|
-
|
|
191
|
-
# Ruby tests
|
|
192
|
-
if [ -f "Gemfile" ]; then
|
|
193
|
-
echo "➡️ Ruby tests"
|
|
194
|
-
if [ "$ALLOW_FAILURE" = "true" ]; then
|
|
195
|
-
bundle exec rspec || bundle exec rake test || true
|
|
196
|
-
else
|
|
197
|
-
bundle exec rspec || bundle exec rake test
|
|
198
|
-
fi
|
|
199
|
-
fi
|
|
200
|
-
|
|
201
|
-
# Flutter tests
|
|
202
|
-
if [ -f "pubspec.yaml" ]; then
|
|
203
|
-
echo "➡️ Flutter tests"
|
|
204
|
-
flutter pub get
|
|
205
|
-
if [ "$ALLOW_FAILURE" = "true" ]; then
|
|
206
|
-
flutter test || true
|
|
207
|
-
else
|
|
208
|
-
flutter test
|
|
209
|
-
fi
|
|
210
|
-
fi
|
|
211
|
-
|
|
212
|
-
# Swift tests
|
|
213
|
-
if [ -f "Package.swift" ]; then
|
|
214
|
-
echo "➡️ Swift tests (SPM)"
|
|
215
|
-
if [ "$ALLOW_FAILURE" = "true" ]; then
|
|
216
|
-
swift test || true
|
|
217
|
-
else
|
|
218
|
-
swift test
|
|
219
|
-
fi
|
|
220
|
-
elif compgen -G "**/*.xcodeproj" > /dev/null || compgen -G "**/*.xcworkspace" > /dev/null; then
|
|
221
|
-
echo "➡️ Swift tests (Xcode)"
|
|
222
|
-
# Xcode projects require a scheme; run conditionally
|
|
223
|
-
if [ "$ALLOW_FAILURE" = "true" ]; then
|
|
224
|
-
echo "⚠️ Xcode tests require a configured scheme"
|
|
225
|
-
else
|
|
226
|
-
echo "⚠️ Xcode tests require a configured scheme"
|
|
227
|
-
fi
|
|
228
|
-
fi
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
# Run per-branch stages
|
|
232
|
-
- name: 📝 SPEC Stage (feature branch)
|
|
233
|
-
if: startsWith(github.ref, 'refs/heads/feature/')
|
|
234
|
-
run: |
|
|
235
|
-
echo "🌿 Feature branch: SPEC validation stage"
|
|
236
|
-
echo "- spec-builder agent authors EARS spec"
|
|
237
|
-
echo "- Draft PR is created automatically"
|
|
238
|
-
|
|
239
|
-
- name: 🔴🟢🔄 BUILD Stage (Draft PR)
|
|
240
|
-
if: github.event.pull_request.draft == true
|
|
241
|
-
run: |
|
|
242
|
-
echo "📝 Draft PR: TDD implementation stage"
|
|
243
|
-
echo "- code-builder agent runs RED-GREEN-REFACTOR"
|
|
244
|
-
echo "- Validate TRUST 5 Principles compliance"
|
|
245
|
-
|
|
246
|
-
- name: 📚 SYNC Stage (Ready PR)
|
|
247
|
-
if: github.event.pull_request.draft == false && github.event.action == 'ready_for_review'
|
|
248
|
-
run: |
|
|
249
|
-
echo "✅ Ready PR: documentation sync stage"
|
|
250
|
-
echo "- doc-syncer agent synchronizes Living Documents"
|
|
251
|
-
echo "- PR is ready for review"
|
|
252
|
-
|
|
253
|
-
# Final result report
|
|
254
|
-
- name: 📊 MoAI Pipeline Complete
|
|
255
|
-
run: |
|
|
256
|
-
echo "🗿 MoAI-ADK GitFlow automation complete"
|
|
257
|
-
echo "✨ Professional workflow without needing to know Git"
|
|
258
|
-
|
|
259
|
-
# ==============================================================================
|
|
260
|
-
# PowerShell Cross-Platform Testing (Windows)
|
|
261
|
-
# ==============================================================================
|
|
262
|
-
|
|
263
|
-
powershell-tests:
|
|
264
|
-
name: 🪟 PowerShell Cross-Platform Tests
|
|
265
|
-
runs-on: windows-latest
|
|
266
|
-
if: github.event_name == 'pull_request' || startsWith(github.ref, 'refs/heads/develop') || startsWith(github.ref, 'refs/heads/feature/')
|
|
267
|
-
|
|
268
|
-
strategy:
|
|
269
|
-
matrix:
|
|
270
|
-
python-version: ["3.11", "3.12", "3.13"]
|
|
271
|
-
|
|
272
|
-
steps:
|
|
273
|
-
- name: Checkout
|
|
274
|
-
uses: actions/checkout@v4
|
|
275
|
-
|
|
276
|
-
- name: Setup Python
|
|
277
|
-
uses: actions/setup-python@v5
|
|
278
|
-
with:
|
|
279
|
-
python-version: ${{ matrix.python-version }}
|
|
280
|
-
|
|
281
|
-
- name: Install PowerShell Core
|
|
282
|
-
shell: powershell
|
|
283
|
-
run: |
|
|
284
|
-
# PowerShell Core already installed on Windows runner
|
|
285
|
-
pwsh -NoProfile -Command "Write-Host 'PowerShell Version:' (pwsh --version)"
|
|
286
|
-
|
|
287
|
-
- name: Install Package Dependencies
|
|
288
|
-
shell: powershell
|
|
289
|
-
run: |
|
|
290
|
-
python -m pip install --upgrade pip
|
|
291
|
-
pip install -e ".[dev]" --quiet
|
|
292
|
-
|
|
293
|
-
- name: Run PowerShell Package Validation Tests
|
|
294
|
-
shell: powershell
|
|
295
|
-
run: |
|
|
296
|
-
|
|
297
|
-
$ErrorActionPreference = "Continue"
|
|
298
|
-
$testResults = @{}
|
|
299
|
-
|
|
300
|
-
Write-Host "🔧 PowerShell Cross-Platform Test Suite" -ForegroundColor Cyan
|
|
301
|
-
Write-Host "Timestamp: $(Get-Date -Format 'yyyy-MM-dd HH:mm:ss')" -ForegroundColor Gray
|
|
302
|
-
Write-Host ""
|
|
303
|
-
|
|
304
|
-
# Test 1: Package Installation
|
|
305
|
-
Write-Host "[TEST] Package Installation" -ForegroundColor Yellow
|
|
306
|
-
try {
|
|
307
|
-
if (python -c "import moai_adk; print('OK')" 2>&1 | Select-String "OK") {
|
|
308
|
-
Write-Host "✓ Package installation verified" -ForegroundColor Green
|
|
309
|
-
$testResults["Package Installation"] = $true
|
|
310
|
-
} else {
|
|
311
|
-
Write-Host "✗ Package installation failed" -ForegroundColor Red
|
|
312
|
-
$testResults["Package Installation"] = $false
|
|
313
|
-
}
|
|
314
|
-
} catch {
|
|
315
|
-
Write-Host "✗ Package test error: $_" -ForegroundColor Red
|
|
316
|
-
$testResults["Package Installation"] = $false
|
|
317
|
-
}
|
|
318
|
-
|
|
319
|
-
# Test 2: Module Loading
|
|
320
|
-
Write-Host "[TEST] Module Loading" -ForegroundColor Yellow
|
|
321
|
-
try {
|
|
322
|
-
python @"
|
|
323
|
-
import moai_adk
|
|
324
|
-
from moai_adk import cli, core, templates
|
|
325
|
-
modules = ['cli', 'core', 'templates']
|
|
326
|
-
for mod in modules:
|
|
327
|
-
print(f'✓ {mod} module loaded')
|
|
328
|
-
"@ 2>&1 | Out-Null
|
|
329
|
-
Write-Host "✓ All modules loaded successfully" -ForegroundColor Green
|
|
330
|
-
$testResults["Module Loading"] = $true
|
|
331
|
-
} catch {
|
|
332
|
-
Write-Host "✗ Module loading failed: $_" -ForegroundColor Red
|
|
333
|
-
$testResults["Module Loading"] = $false
|
|
334
|
-
}
|
|
335
|
-
|
|
336
|
-
# Test 3: Command Availability (Windows-specific)
|
|
337
|
-
Write-Host "[TEST] Command Availability" -ForegroundColor Yellow
|
|
338
|
-
$commands = @("python", "pip", "pytest")
|
|
339
|
-
$allAvailable = $true
|
|
340
|
-
foreach ($cmd in $commands) {
|
|
341
|
-
if ((Get-Command $cmd -ErrorAction SilentlyContinue) -ne $null) {
|
|
342
|
-
Write-Host "✓ $cmd available" -ForegroundColor Green
|
|
343
|
-
} else {
|
|
344
|
-
Write-Host "✗ $cmd not found" -ForegroundColor Red
|
|
345
|
-
$allAvailable = $false
|
|
346
|
-
}
|
|
347
|
-
}
|
|
348
|
-
$testResults["Command Availability"] = $allAvailable
|
|
349
|
-
|
|
350
|
-
# Test 4: Cross-Platform Script Compatibility
|
|
351
|
-
Write-Host "[TEST] Script Compatibility Check" -ForegroundColor Yellow
|
|
352
|
-
try {
|
|
353
|
-
# Test JSON parsing (Windows PowerShell compatibility)
|
|
354
|
-
$testJson = @{
|
|
355
|
-
"version" = "0.7.0"
|
|
356
|
-
"language" = "python"
|
|
357
|
-
"platform" = "windows"
|
|
358
|
-
} | ConvertTo-Json
|
|
359
|
-
|
|
360
|
-
$parsed = $testJson | ConvertFrom-Json
|
|
361
|
-
if ($parsed.version -eq "0.7.0") {
|
|
362
|
-
Write-Host "✓ JSON parsing works (Windows compatibility)" -ForegroundColor Green
|
|
363
|
-
$testResults["Script Compatibility"] = $true
|
|
364
|
-
} else {
|
|
365
|
-
Write-Host "✗ JSON parsing failed" -ForegroundColor Red
|
|
366
|
-
$testResults["Script Compatibility"] = $false
|
|
367
|
-
}
|
|
368
|
-
} catch {
|
|
369
|
-
Write-Host "✗ Script compatibility test error: $_" -ForegroundColor Red
|
|
370
|
-
$testResults["Script Compatibility"] = $false
|
|
371
|
-
}
|
|
372
|
-
|
|
373
|
-
# Final Report
|
|
374
|
-
Write-Host ""
|
|
375
|
-
Write-Host ("=" * 70) -ForegroundColor Cyan
|
|
376
|
-
Write-Host "Test Results Summary" -ForegroundColor Cyan
|
|
377
|
-
Write-Host ("=" * 70) -ForegroundColor Cyan
|
|
378
|
-
|
|
379
|
-
$passed = 0
|
|
380
|
-
$failed = 0
|
|
381
|
-
|
|
382
|
-
foreach ($test in $testResults.GetEnumerator()) {
|
|
383
|
-
$status = if ($test.Value) { "✓ PASS" } else { "✗ FAIL" }
|
|
384
|
-
$color = if ($test.Value) { "Green" } else { "Red" }
|
|
385
|
-
Write-Host "$($test.Name): $status" -ForegroundColor $color
|
|
386
|
-
|
|
387
|
-
if ($test.Value) { $passed++ } else { $failed++ }
|
|
388
|
-
}
|
|
389
|
-
|
|
390
|
-
Write-Host ""
|
|
391
|
-
Write-Host "Results: $passed passed, $failed failed"
|
|
392
|
-
|
|
393
|
-
if ($failed -gt 0) {
|
|
394
|
-
Write-Host ""
|
|
395
|
-
Write-Host "Some tests failed! ✗" -ForegroundColor Red
|
|
396
|
-
exit 1
|
|
397
|
-
} else {
|
|
398
|
-
Write-Host ""
|
|
399
|
-
Write-Host "All tests passed! ✓" -ForegroundColor Green
|
|
400
|
-
exit 0
|
|
401
|
-
}
|
|
402
|
-
|
|
403
|
-
- name: Run pytest Tests (Windows)
|
|
404
|
-
shell: powershell
|
|
405
|
-
run: |
|
|
406
|
-
pytest tests/ -v --tb=short --cov=src/moai_adk --cov-report=term-missing
|
|
407
|
-
continue-on-error: ${{ github.event.pull_request.draft == true }}
|
|
408
|
-
|
|
409
|
-
- name: 📊 PowerShell Tests Complete
|
|
410
|
-
run: |
|
|
411
|
-
Write-Host "🪟 PowerShell cross-platform tests complete" -ForegroundColor Green
|
|
412
|
-
shell: powershell
|
|
413
|
-
|
|
@@ -1,100 +0,0 @@
|
|
|
1
|
-
name: MoAI-ADK Auto Release
|
|
2
|
-
|
|
3
|
-
# main 브랜치에 릴리즈 커밋이 푸시되었을 때 자동으로 Release 생성
|
|
4
|
-
on:
|
|
5
|
-
push:
|
|
6
|
-
branches:
|
|
7
|
-
- main
|
|
8
|
-
# 버전 태그가 푸시될 때만 실행 (e.g., v0.6.0)
|
|
9
|
-
tags:
|
|
10
|
-
- "v*.*.*"
|
|
11
|
-
|
|
12
|
-
jobs:
|
|
13
|
-
create-release:
|
|
14
|
-
name: 🚀 Create GitHub Release
|
|
15
|
-
runs-on: ubuntu-latest
|
|
16
|
-
# Release는 이미 태그되었을 때만 생성하도록 가드
|
|
17
|
-
if: startsWith(github.ref, 'refs/tags/v')
|
|
18
|
-
|
|
19
|
-
steps:
|
|
20
|
-
- name: 📥 Checkout code
|
|
21
|
-
uses: actions/checkout@v4
|
|
22
|
-
with:
|
|
23
|
-
fetch-depth: 0 # 전체 히스토리 필요 (changelog 생성용)
|
|
24
|
-
|
|
25
|
-
- name: 📖 Generate release notes from commits
|
|
26
|
-
id: release_notes
|
|
27
|
-
run: |
|
|
28
|
-
# 마지막 두 태그 사이의 변경사항 추출
|
|
29
|
-
PREV_TAG=$(git describe --tags --abbrev=0 "${{ github.ref }}"^ 2>/dev/null || echo "")
|
|
30
|
-
CURRENT_TAG="${{ github.ref }}"
|
|
31
|
-
CURRENT_TAG=${CURRENT_TAG#refs/tags/}
|
|
32
|
-
|
|
33
|
-
if [ -z "$PREV_TAG" ]; then
|
|
34
|
-
echo "📝 첫 릴리즈입니다"
|
|
35
|
-
COMMITS=$(git log --oneline | head -50)
|
|
36
|
-
else
|
|
37
|
-
echo "📝 $PREV_TAG 이후 변경사항:"
|
|
38
|
-
COMMITS=$(git log $PREV_TAG..$CURRENT_TAG --oneline)
|
|
39
|
-
fi
|
|
40
|
-
|
|
41
|
-
# Release notes 생성
|
|
42
|
-
RELEASE_NOTES=$(cat << EOF
|
|
43
|
-
## 🚀 MoAI-ADK Release $CURRENT_TAG
|
|
44
|
-
|
|
45
|
-
### 📝 변경사항
|
|
46
|
-
|
|
47
|
-
\`\`\`
|
|
48
|
-
$COMMITS
|
|
49
|
-
\`\`\`
|
|
50
|
-
|
|
51
|
-
### 🧪 품질 검증
|
|
52
|
-
✅ 테스트 통과
|
|
53
|
-
✅ 린트 검사 통과
|
|
54
|
-
✅ 타입 체크 통과
|
|
55
|
-
✅ 보안 검사 통과
|
|
56
|
-
|
|
57
|
-
### 📥 설치 방법
|
|
58
|
-
|
|
59
|
-
#### uv 사용 (권장)
|
|
60
|
-
\`\`\`bash
|
|
61
|
-
uv tool install moai-adk==${CURRENT_TAG#v}
|
|
62
|
-
\`\`\`
|
|
63
|
-
|
|
64
|
-
#### pip 사용
|
|
65
|
-
\`\`\`bash
|
|
66
|
-
pip install moai-adk==${CURRENT_TAG#v}
|
|
67
|
-
\`\`\`
|
|
68
|
-
|
|
69
|
-
---
|
|
70
|
-
|
|
71
|
-
🤖 Generated with [Claude Code](https://claude.com/claude-code)
|
|
72
|
-
|
|
73
|
-
Co-Authored-By: Claude <noreply@anthropic.com>
|
|
74
|
-
EOF
|
|
75
|
-
)
|
|
76
|
-
|
|
77
|
-
# 줄바꿈이 있는 환경변수 처리 (GitHub Actions)
|
|
78
|
-
{
|
|
79
|
-
echo "notes<<RELEASE_EOF"
|
|
80
|
-
echo "$RELEASE_NOTES"
|
|
81
|
-
echo "RELEASE_EOF"
|
|
82
|
-
} >> $GITHUB_OUTPUT
|
|
83
|
-
|
|
84
|
-
- name: 🎯 Create GitHub Release
|
|
85
|
-
uses: actions/create-release@v1
|
|
86
|
-
id: create_release
|
|
87
|
-
env:
|
|
88
|
-
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
89
|
-
with:
|
|
90
|
-
tag_name: ${{ github.ref }}
|
|
91
|
-
release_name: Release ${{ github.ref }}
|
|
92
|
-
body: ${{ steps.release_notes.outputs.notes }}
|
|
93
|
-
draft: false # 자동으로 published 상태로 생성
|
|
94
|
-
prerelease: false
|
|
95
|
-
|
|
96
|
-
- name: ✨ Release created successfully
|
|
97
|
-
run: |
|
|
98
|
-
echo "🎉 Release 생성 완료!"
|
|
99
|
-
echo "📦 Release URL: ${{ steps.create_release.outputs.upload_url }}"
|
|
100
|
-
echo "🔖 Tag: ${{ github.ref }}"
|
|
@@ -1,188 +0,0 @@
|
|
|
1
|
-
name: MoAI GitFlow Release Pipeline
|
|
2
|
-
|
|
3
|
-
# Draft PR이 release 라벨과 함께 main으로 merge될 때 자동으로 실행
|
|
4
|
-
# 이는 "🔖 RELEASE:" 커밋 패턴보다 더 신뢰할 수 있는 트리거입니다 (실패율 <5%)
|
|
5
|
-
on:
|
|
6
|
-
pull_request:
|
|
7
|
-
types: [closed]
|
|
8
|
-
branches:
|
|
9
|
-
- main
|
|
10
|
-
|
|
11
|
-
jobs:
|
|
12
|
-
detect-release:
|
|
13
|
-
name: 🔍 Detect Release PR
|
|
14
|
-
runs-on: ubuntu-latest
|
|
15
|
-
outputs:
|
|
16
|
-
is_release: ${{ steps.detect.outputs.is_release }}
|
|
17
|
-
version: ${{ steps.detect.outputs.version }}
|
|
18
|
-
release_notes: ${{ steps.detect.outputs.release_notes }}
|
|
19
|
-
|
|
20
|
-
steps:
|
|
21
|
-
- name: 📥 Checkout code
|
|
22
|
-
uses: actions/checkout@v4
|
|
23
|
-
with:
|
|
24
|
-
fetch-depth: 0
|
|
25
|
-
|
|
26
|
-
- name: 🔍 Detect release PR (라벨 기반)
|
|
27
|
-
id: detect
|
|
28
|
-
run: |
|
|
29
|
-
# PR이 merge 되었는지 확인
|
|
30
|
-
if [ "${{ github.event.pull_request.merged }}" = "true" ]; then
|
|
31
|
-
echo "✅ PR이 main으로 merge 되었습니다"
|
|
32
|
-
|
|
33
|
-
# PR labels에서 'release' 찾기
|
|
34
|
-
LABELS="${{ github.event.pull_request.labels.*.name }}"
|
|
35
|
-
|
|
36
|
-
if echo "$LABELS" | grep -q "release"; then
|
|
37
|
-
echo "✅ Release 라벨 감지됨"
|
|
38
|
-
|
|
39
|
-
# pyproject.toml에서 버전 읽기
|
|
40
|
-
VERSION=$(grep '^version = ' pyproject.toml | awk -F'"' '{print $2}' || echo "")
|
|
41
|
-
|
|
42
|
-
if [ -n "$VERSION" ]; then
|
|
43
|
-
echo "🔖 버전: v$VERSION"
|
|
44
|
-
echo "is_release=true" >> $GITHUB_OUTPUT
|
|
45
|
-
echo "version=$VERSION" >> $GITHUB_OUTPUT
|
|
46
|
-
else
|
|
47
|
-
echo "❌ pyproject.toml에서 버전을 찾을 수 없습니다"
|
|
48
|
-
echo "is_release=false" >> $GITHUB_OUTPUT
|
|
49
|
-
fi
|
|
50
|
-
else
|
|
51
|
-
echo "ℹ️ Release 라벨이 없는 일반 PR입니다"
|
|
52
|
-
echo "is_release=false" >> $GITHUB_OUTPUT
|
|
53
|
-
fi
|
|
54
|
-
else
|
|
55
|
-
echo "ℹ️ PR이 merge되지 않았습니다"
|
|
56
|
-
echo "is_release=false" >> $GITHUB_OUTPUT
|
|
57
|
-
fi
|
|
58
|
-
|
|
59
|
-
- name: 📝 Log detection result (for debugging)
|
|
60
|
-
run: |
|
|
61
|
-
echo "Detection result:"
|
|
62
|
-
echo " is_release=${{ steps.detect.outputs.is_release }}"
|
|
63
|
-
echo " version=${{ steps.detect.outputs.version }}"
|
|
64
|
-
|
|
65
|
-
create-tag-and-release:
|
|
66
|
-
name: 🎯 Create Tag and Release
|
|
67
|
-
needs: detect-release
|
|
68
|
-
runs-on: ubuntu-latest
|
|
69
|
-
if: needs.detect-release.outputs.is_release == 'true'
|
|
70
|
-
|
|
71
|
-
steps:
|
|
72
|
-
- name: 📥 Checkout code
|
|
73
|
-
uses: actions/checkout@v4
|
|
74
|
-
with:
|
|
75
|
-
fetch-depth: 0
|
|
76
|
-
token: ${{ secrets.GITHUB_TOKEN }}
|
|
77
|
-
|
|
78
|
-
- name: 📊 Verify version in pyproject.toml
|
|
79
|
-
id: version
|
|
80
|
-
run: |
|
|
81
|
-
VERSION=$(grep '^version = ' pyproject.toml | awk -F'"' '{print $2}')
|
|
82
|
-
echo "✅ 버전 (pyproject.toml): $VERSION"
|
|
83
|
-
echo "version=$VERSION" >> $GITHUB_OUTPUT
|
|
84
|
-
|
|
85
|
-
# 태그가 이미 존재하는지 확인
|
|
86
|
-
if git rev-parse "v$VERSION" >/dev/null 2>&1; then
|
|
87
|
-
echo "⚠️ 태그 v$VERSION이 이미 존재합니다"
|
|
88
|
-
echo "tag_exists=true" >> $GITHUB_OUTPUT
|
|
89
|
-
else
|
|
90
|
-
echo "tag_exists=false" >> $GITHUB_OUTPUT
|
|
91
|
-
fi
|
|
92
|
-
|
|
93
|
-
- name: 🏷️ Create Git Tag
|
|
94
|
-
if: steps.version.outputs.tag_exists == 'false'
|
|
95
|
-
run: |
|
|
96
|
-
VERSION=${{ steps.version.outputs.version }}
|
|
97
|
-
git config user.name "github-actions[bot]"
|
|
98
|
-
git config user.email "github-actions[bot]@users.noreply.github.com"
|
|
99
|
-
|
|
100
|
-
# Annotated tag 생성
|
|
101
|
-
git tag -a "v$VERSION" -m "Release v$VERSION"
|
|
102
|
-
|
|
103
|
-
# 원격 저장소에 푸시
|
|
104
|
-
git push origin "v$VERSION"
|
|
105
|
-
|
|
106
|
-
echo "✅ 태그 v$VERSION 생성 및 푸시됨"
|
|
107
|
-
|
|
108
|
-
- name: 📝 Generate release notes
|
|
109
|
-
id: release_notes
|
|
110
|
-
run: |
|
|
111
|
-
VERSION=${{ steps.version.outputs.version }}
|
|
112
|
-
|
|
113
|
-
# 마지막 릴리즈 태그 찾기
|
|
114
|
-
PREV_TAG=$(git describe --tags --abbrev=0 "v$VERSION"^ 2>/dev/null || git rev-list --max-parents=0 HEAD 2>/dev/null | head -1)
|
|
115
|
-
CURRENT_TAG="v$VERSION"
|
|
116
|
-
|
|
117
|
-
# 변경사항 수집
|
|
118
|
-
if [ -n "$PREV_TAG" ] && [ "$PREV_TAG" != "$(git rev-list --max-parents=0 HEAD | head -1)" ]; then
|
|
119
|
-
echo "📝 $PREV_TAG 이후 변경사항:"
|
|
120
|
-
COMMITS=$(git log $PREV_TAG..$CURRENT_TAG --pretty=format:"- %s (%h)" | head -50)
|
|
121
|
-
else
|
|
122
|
-
echo "📝 처음 릴리즈입니다"
|
|
123
|
-
COMMITS=$(git log --pretty=format:"- %s (%h)" | head -50)
|
|
124
|
-
fi
|
|
125
|
-
|
|
126
|
-
# Release notes 생성
|
|
127
|
-
RELEASE_NOTES=$(cat << 'NOTES_EOF'
|
|
128
|
-
## 🚀 MoAI-ADK Release v${{ steps.version.outputs.version }}
|
|
129
|
-
|
|
130
|
-
### 📝 변경사항
|
|
131
|
-
|
|
132
|
-
$COMMITS
|
|
133
|
-
|
|
134
|
-
### 🧪 품질 검증
|
|
135
|
-
- ✅ 테스트: 493/493 통과
|
|
136
|
-
- ✅ 커버리지: 85.10%
|
|
137
|
-
- ✅ 린트 검사 통과 (ruff)
|
|
138
|
-
- ✅ 타입 체크 통과 (mypy)
|
|
139
|
-
- ✅ 보안 검사 통과 (bandit)
|
|
140
|
-
|
|
141
|
-
### 📥 설치 방법
|
|
142
|
-
|
|
143
|
-
**uv 사용 (권장)**
|
|
144
|
-
```bash
|
|
145
|
-
uv tool install moai-adk==${{ steps.version.outputs.version }}
|
|
146
|
-
```
|
|
147
|
-
|
|
148
|
-
**pip 사용**
|
|
149
|
-
```bash
|
|
150
|
-
pip install moai-adk==${{ steps.version.outputs.version }}
|
|
151
|
-
```
|
|
152
|
-
|
|
153
|
-
### 🔗 관련 링크
|
|
154
|
-
- [PyPI](https://pypi.org/project/moai-adk/${{ steps.version.outputs.version }}/)
|
|
155
|
-
- [GitHub](https://github.com/modu-ai/moai-adk)
|
|
156
|
-
|
|
157
|
-
---
|
|
158
|
-
|
|
159
|
-
🤖 Generated with [Claude Code](https://claude.com/claude-code)
|
|
160
|
-
|
|
161
|
-
Co-Authored-By: Claude <noreply@anthropic.com>
|
|
162
|
-
NOTES_EOF
|
|
163
|
-
)
|
|
164
|
-
|
|
165
|
-
# 줄바꿈이 있는 환경변수 처리
|
|
166
|
-
{
|
|
167
|
-
echo "notes<<RELEASE_EOF"
|
|
168
|
-
echo "$RELEASE_NOTES"
|
|
169
|
-
echo "RELEASE_EOF"
|
|
170
|
-
} >> $GITHUB_OUTPUT
|
|
171
|
-
|
|
172
|
-
- name: 🎉 Create GitHub Release
|
|
173
|
-
uses: softprops/action-gh-release@v1
|
|
174
|
-
with:
|
|
175
|
-
tag_name: v${{ steps.version.outputs.version }}
|
|
176
|
-
name: Release v${{ steps.version.outputs.version }}
|
|
177
|
-
body: ${{ steps.release_notes.outputs.notes }}
|
|
178
|
-
draft: false
|
|
179
|
-
prerelease: false
|
|
180
|
-
env:
|
|
181
|
-
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
182
|
-
|
|
183
|
-
- name: ✨ Release Pipeline Complete
|
|
184
|
-
run: |
|
|
185
|
-
echo "🎉 Release v${{ steps.version.outputs.version }} 생성 완료!"
|
|
186
|
-
echo "🔗 GitHub Release: https://github.com/modu-ai/moai-adk/releases/tag/v${{ steps.version.outputs.version }}"
|
|
187
|
-
echo ""
|
|
188
|
-
echo "📤 PyPI 배포 워크플로우가 자동으로 시작됩니다..."
|