moai-adk 0.34.0__py3-none-any.whl → 1.1.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- moai_adk/__main__.py +136 -5
- moai_adk/astgrep/__init__.py +37 -0
- moai_adk/astgrep/analyzer.py +522 -0
- moai_adk/astgrep/models.py +124 -0
- moai_adk/astgrep/rules.py +179 -0
- moai_adk/cli/commands/analyze.py +11 -2
- moai_adk/cli/commands/doctor.py +7 -1
- moai_adk/cli/commands/init.py +321 -11
- moai_adk/cli/commands/language.py +7 -1
- moai_adk/cli/commands/rank.py +449 -0
- moai_adk/cli/commands/status.py +7 -1
- moai_adk/cli/commands/switch.py +325 -0
- moai_adk/cli/commands/update.py +296 -23
- moai_adk/cli/prompts/init_prompts.py +362 -66
- moai_adk/cli/prompts/translations/__init__.py +573 -0
- moai_adk/cli/ui/prompts.py +61 -2
- moai_adk/cli/worktree/cli.py +106 -1
- moai_adk/cli/worktree/manager.py +155 -0
- moai_adk/core/config/unified.py +244 -63
- moai_adk/core/credentials.py +264 -0
- moai_adk/core/error_recovery_system.py +22 -4
- moai_adk/core/git/conflict_detector.py +10 -1
- moai_adk/core/git/event_detector.py +16 -5
- moai_adk/core/integration/engine.py +2 -2
- moai_adk/core/integration/integration_tester.py +5 -5
- moai_adk/core/language_config_resolver.py +9 -3
- moai_adk/core/merge/analyzer.py +509 -324
- moai_adk/core/migration/alfred_to_moai_migrator.py +7 -1
- moai_adk/core/migration/backup_manager.py +54 -4
- moai_adk/core/migration/file_migrator.py +174 -2
- moai_adk/core/migration/interactive_checkbox_ui.py +42 -31
- moai_adk/core/migration/version_detector.py +123 -19
- moai_adk/core/migration/version_migrator.py +44 -9
- moai_adk/core/model_allocator.py +241 -0
- moai_adk/core/project/backup_utils.py +12 -2
- moai_adk/core/project/initializer.py +44 -87
- moai_adk/core/project/phase_executor.py +95 -33
- moai_adk/core/project/validator.py +16 -1
- moai_adk/core/quality/trust_checker.py +30 -10
- moai_adk/core/rollback_manager.py +60 -25
- moai_adk/core/template/backup.py +88 -6
- moai_adk/core/template/config.py +33 -9
- moai_adk/core/template/merger.py +34 -8
- moai_adk/core/template/processor.py +334 -11
- moai_adk/core/template_engine.py +10 -1
- moai_adk/core/template_variable_synchronizer.py +16 -2
- moai_adk/core/version_sync.py +54 -6
- moai_adk/foundation/__init__.py +1 -20
- moai_adk/foundation/testing.py +1 -1
- moai_adk/loop/__init__.py +54 -0
- moai_adk/loop/controller.py +305 -0
- moai_adk/loop/feedback.py +230 -0
- moai_adk/loop/state.py +209 -0
- moai_adk/loop/storage.py +220 -0
- moai_adk/lsp/__init__.py +70 -0
- moai_adk/lsp/client.py +320 -0
- moai_adk/lsp/models.py +261 -0
- moai_adk/lsp/protocol.py +404 -0
- moai_adk/lsp/server_manager.py +248 -0
- moai_adk/project/configuration.py +8 -1
- moai_adk/py.typed +0 -0
- moai_adk/ralph/__init__.py +37 -0
- moai_adk/ralph/engine.py +307 -0
- moai_adk/rank/__init__.py +21 -0
- moai_adk/rank/auth.py +425 -0
- moai_adk/rank/client.py +557 -0
- moai_adk/rank/config.py +147 -0
- moai_adk/rank/hook.py +1503 -0
- moai_adk/rank/py.typed +0 -0
- moai_adk/statusline/__init__.py +3 -0
- moai_adk/statusline/enhanced_output_style_detector.py +5 -5
- moai_adk/statusline/main.py +20 -1
- moai_adk/statusline/memory_collector.py +268 -0
- moai_adk/statusline/renderer.py +54 -38
- moai_adk/tag_system/__init__.py +48 -0
- moai_adk/tag_system/atomic_ops.py +117 -0
- moai_adk/tag_system/linkage.py +335 -0
- moai_adk/tag_system/parser.py +176 -0
- moai_adk/tag_system/validator.py +200 -0
- moai_adk/templates/.claude/agents/moai/builder-agent.md +19 -3
- moai_adk/templates/.claude/agents/moai/builder-command.md +62 -16
- moai_adk/templates/.claude/agents/moai/builder-plugin.md +763 -0
- moai_adk/templates/.claude/agents/moai/builder-skill.md +21 -5
- moai_adk/templates/.claude/agents/moai/expert-backend.md +103 -39
- moai_adk/templates/.claude/agents/moai/expert-debug.md +9 -3
- moai_adk/templates/.claude/agents/moai/expert-devops.md +16 -14
- moai_adk/templates/.claude/agents/moai/expert-frontend.md +45 -31
- moai_adk/templates/.claude/agents/moai/expert-performance.md +13 -9
- moai_adk/templates/.claude/agents/moai/expert-refactoring.md +228 -0
- moai_adk/templates/.claude/agents/moai/expert-security.md +19 -3
- moai_adk/templates/.claude/agents/moai/expert-testing.md +13 -9
- moai_adk/templates/.claude/agents/moai/manager-claude-code.md +8 -2
- moai_adk/templates/.claude/agents/moai/manager-docs.md +10 -5
- moai_adk/templates/.claude/agents/moai/manager-git.md +99 -27
- moai_adk/templates/.claude/agents/moai/manager-project.md +87 -7
- moai_adk/templates/.claude/agents/moai/manager-quality.md +22 -5
- moai_adk/templates/.claude/agents/moai/manager-spec.md +8 -2
- moai_adk/templates/.claude/agents/moai/manager-strategy.md +45 -14
- moai_adk/templates/.claude/agents/moai/manager-tdd.md +16 -3
- moai_adk/templates/.claude/commands/moai/0-project.md +239 -1185
- moai_adk/templates/.claude/commands/moai/1-plan.md +383 -363
- moai_adk/templates/.claude/commands/moai/2-run.md +254 -347
- moai_adk/templates/.claude/commands/moai/3-sync.md +174 -100
- moai_adk/templates/.claude/commands/moai/9-feedback.md +49 -33
- moai_adk/templates/.claude/commands/moai/alfred.md +339 -0
- moai_adk/templates/.claude/commands/moai/cancel-loop.md +163 -0
- moai_adk/templates/.claude/commands/moai/fix.md +264 -0
- moai_adk/templates/.claude/commands/moai/loop.md +363 -0
- moai_adk/templates/.claude/hooks/moai/lib/README.md +143 -0
- moai_adk/templates/.claude/hooks/moai/lib/__init__.py +37 -81
- moai_adk/templates/.claude/hooks/moai/lib/alfred_detector.py +105 -0
- moai_adk/templates/.claude/hooks/moai/lib/atomic_write.py +122 -0
- moai_adk/templates/.claude/hooks/moai/lib/checkpoint.py +4 -1
- moai_adk/templates/.claude/hooks/moai/lib/common.py +35 -5
- moai_adk/templates/.claude/hooks/moai/lib/config.py +376 -0
- moai_adk/templates/.claude/hooks/moai/lib/config_manager.py +24 -28
- moai_adk/templates/.claude/hooks/moai/lib/config_validator.py +14 -14
- moai_adk/templates/.claude/hooks/moai/lib/enhanced_output_style_detector.py +372 -0
- moai_adk/templates/.claude/hooks/moai/lib/exceptions.py +171 -0
- moai_adk/templates/.claude/hooks/moai/lib/file_utils.py +95 -0
- moai_adk/templates/.claude/hooks/moai/lib/git_collector.py +190 -0
- moai_adk/templates/.claude/hooks/moai/lib/git_operations_manager.py +15 -13
- moai_adk/templates/.claude/hooks/moai/lib/language_detector.py +298 -0
- moai_adk/templates/.claude/hooks/moai/lib/language_validator.py +125 -25
- moai_adk/templates/.claude/hooks/moai/lib/main.py +341 -0
- moai_adk/templates/.claude/hooks/moai/lib/memory_collector.py +268 -0
- moai_adk/templates/.claude/hooks/moai/lib/metrics_tracker.py +78 -0
- moai_adk/templates/.claude/hooks/moai/lib/models.py +9 -7
- moai_adk/templates/.claude/hooks/moai/lib/path_utils.py +204 -13
- moai_adk/templates/.claude/hooks/moai/lib/project.py +23 -14
- moai_adk/templates/.claude/hooks/moai/lib/renderer.py +359 -0
- moai_adk/templates/.claude/hooks/moai/lib/tag_linkage.py +333 -0
- moai_adk/templates/.claude/hooks/moai/lib/tag_parser.py +176 -0
- moai_adk/templates/.claude/hooks/moai/lib/tag_validator.py +200 -0
- moai_adk/templates/.claude/hooks/moai/lib/timeout.py +5 -5
- moai_adk/templates/.claude/hooks/moai/lib/tool_registry.py +896 -0
- moai_adk/templates/.claude/hooks/moai/lib/unified_timeout_manager.py +30 -18
- moai_adk/templates/.claude/hooks/moai/lib/update_checker.py +129 -0
- moai_adk/templates/.claude/hooks/moai/lib/version_reader.py +741 -0
- moai_adk/templates/.claude/hooks/moai/post_tool__ast_grep_scan.py +276 -0
- moai_adk/templates/.claude/hooks/moai/post_tool__code_formatter.py +255 -0
- moai_adk/templates/.claude/hooks/moai/post_tool__coverage_guard.py +325 -0
- moai_adk/templates/.claude/hooks/moai/post_tool__linter.py +315 -0
- moai_adk/templates/.claude/hooks/moai/post_tool__lsp_diagnostic.py +508 -0
- moai_adk/templates/.claude/hooks/moai/pre_commit__tag_validator.py +287 -0
- moai_adk/templates/.claude/hooks/moai/pre_tool__security_guard.py +268 -0
- moai_adk/templates/.claude/hooks/moai/pre_tool__tdd_enforcer.py +208 -0
- moai_adk/templates/.claude/hooks/moai/session_end__auto_cleanup.py +93 -61
- moai_adk/templates/.claude/hooks/moai/session_end__rank_submit.py +69 -0
- moai_adk/templates/.claude/hooks/moai/session_start__show_project_info.py +165 -70
- moai_adk/templates/.claude/hooks/moai/shared/utils/announcement_translator.py +206 -0
- moai_adk/templates/.claude/hooks/moai/stop__loop_controller.py +621 -0
- moai_adk/templates/.claude/output-styles/moai/alfred.md +758 -0
- moai_adk/templates/.claude/output-styles/moai/r2d2.md +86 -3
- moai_adk/templates/.claude/output-styles/moai/yoda.md +2 -2
- moai_adk/templates/.claude/settings.json +154 -77
- moai_adk/templates/.claude/skills/moai-docs-generation/SKILL.md +252 -198
- moai_adk/templates/.claude/skills/moai-docs-generation/examples.md +169 -323
- moai_adk/templates/.claude/skills/moai-docs-generation/modules/README.md +39 -27
- moai_adk/templates/.claude/skills/moai-docs-generation/modules/api-documentation.md +115 -125
- moai_adk/templates/.claude/skills/moai-docs-generation/modules/code-documentation.md +150 -150
- moai_adk/templates/.claude/skills/moai-docs-generation/modules/multi-format-output.md +182 -175
- moai_adk/templates/.claude/skills/moai-docs-generation/modules/user-guides.md +198 -138
- moai_adk/templates/.claude/skills/moai-docs-generation/reference.md +226 -320
- moai_adk/templates/.claude/skills/moai-domain-backend/SKILL.md +43 -222
- moai_adk/templates/.claude/skills/moai-domain-database/SKILL.md +75 -219
- moai_adk/templates/.claude/skills/moai-domain-frontend/SKILL.md +103 -463
- moai_adk/templates/.claude/skills/moai-domain-frontend/modules/component-architecture.md +723 -0
- moai_adk/templates/.claude/skills/moai-domain-frontend/modules/nextjs16-patterns.md +713 -0
- moai_adk/templates/.claude/skills/moai-domain-frontend/modules/performance-optimization.md +694 -0
- moai_adk/templates/.claude/skills/moai-domain-frontend/modules/react19-patterns.md +591 -0
- moai_adk/templates/.claude/skills/moai-domain-frontend/modules/state-management.md +680 -0
- moai_adk/templates/.claude/skills/moai-domain-frontend/modules/vue35-patterns.md +802 -0
- moai_adk/templates/.claude/skills/moai-domain-uiux/SKILL.md +118 -339
- moai_adk/templates/.claude/skills/moai-formats-data/SKILL.md +74 -377
- moai_adk/templates/.claude/skills/moai-formats-data/modules/README.md +299 -70
- moai_adk/templates/.claude/skills/moai-foundation-claude/SKILL.md +205 -182
- moai_adk/templates/.claude/skills/moai-foundation-claude/reference/advanced-agent-patterns.md +370 -0
- moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-cli-reference-official.md +420 -0
- moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-custom-slash-commands-official.md +32 -22
- moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-devcontainers-official.md +381 -0
- moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-discover-plugins-official.md +379 -0
- moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-headless-official.md +378 -0
- moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-hooks-official.md +110 -0
- moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-plugin-marketplaces-official.md +308 -0
- moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-plugins-official.md +640 -0
- moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-sandboxing-official.md +282 -0
- moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-skills-official.md +425 -71
- moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-statusline-official.md +293 -0
- moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-sub-agents-official.md +325 -143
- moai_adk/templates/.claude/skills/moai-foundation-context/SKILL.md +96 -316
- moai_adk/templates/.claude/skills/moai-foundation-core/SKILL.md +116 -294
- moai_adk/templates/.claude/skills/moai-foundation-core/modules/delegation-advanced.md +279 -0
- moai_adk/templates/.claude/skills/moai-foundation-core/modules/delegation-implementation.md +267 -0
- moai_adk/templates/.claude/skills/moai-foundation-core/modules/delegation-patterns.md +121 -650
- moai_adk/templates/.claude/skills/moai-foundation-core/modules/patterns.md +22 -0
- moai_adk/templates/.claude/skills/moai-foundation-core/modules/spec-ears-format.md +200 -0
- moai_adk/templates/.claude/skills/moai-foundation-core/modules/spec-first-tdd.md +37 -730
- moai_adk/templates/.claude/skills/moai-foundation-core/modules/spec-tdd-implementation.md +275 -0
- moai_adk/templates/.claude/skills/moai-foundation-core/modules/trust-5-framework.md +77 -819
- moai_adk/templates/.claude/skills/moai-foundation-core/modules/trust-5-implementation.md +244 -0
- moai_adk/templates/.claude/skills/moai-foundation-core/modules/trust-5-validation.md +219 -0
- moai_adk/templates/.claude/skills/moai-foundation-philosopher/SKILL.md +14 -18
- moai_adk/templates/.claude/skills/moai-foundation-quality/SKILL.md +86 -270
- moai_adk/templates/.claude/skills/moai-framework-electron/SKILL.md +288 -0
- moai_adk/templates/.claude/skills/moai-framework-electron/examples.md +2082 -0
- moai_adk/templates/.claude/skills/moai-framework-electron/reference.md +1649 -0
- moai_adk/templates/.claude/skills/moai-lang-cpp/SKILL.md +76 -582
- moai_adk/templates/.claude/skills/moai-lang-cpp/examples.md +1239 -0
- moai_adk/templates/.claude/skills/moai-lang-cpp/modules/advanced-patterns.md +401 -0
- moai_adk/templates/.claude/skills/moai-lang-cpp/reference.md +1136 -0
- moai_adk/templates/.claude/skills/moai-lang-csharp/SKILL.md +82 -436
- moai_adk/templates/.claude/skills/moai-lang-csharp/examples.md +585 -0
- moai_adk/templates/.claude/skills/moai-lang-csharp/modules/aspnet-core.md +627 -0
- moai_adk/templates/.claude/skills/moai-lang-csharp/modules/blazor-components.md +767 -0
- moai_adk/templates/.claude/skills/moai-lang-csharp/modules/cqrs-validation.md +626 -0
- moai_adk/templates/.claude/skills/moai-lang-csharp/modules/csharp12-features.md +580 -0
- moai_adk/templates/.claude/skills/moai-lang-csharp/modules/efcore-patterns.md +622 -0
- moai_adk/templates/.claude/skills/moai-lang-csharp/reference.md +403 -0
- moai_adk/templates/.claude/skills/moai-lang-elixir/SKILL.md +65 -542
- moai_adk/templates/.claude/skills/moai-lang-elixir/examples.md +1171 -0
- moai_adk/templates/.claude/skills/moai-lang-elixir/modules/advanced-patterns.md +531 -0
- moai_adk/templates/.claude/skills/moai-lang-elixir/reference.md +889 -0
- moai_adk/templates/.claude/skills/moai-lang-flutter/SKILL.md +32 -405
- moai_adk/templates/.claude/skills/moai-lang-go/SKILL.md +114 -293
- moai_adk/templates/.claude/skills/moai-lang-java/SKILL.md +83 -307
- moai_adk/templates/.claude/skills/moai-lang-javascript/SKILL.md +179 -0
- moai_adk/templates/.claude/skills/moai-lang-javascript/examples.md +973 -0
- moai_adk/templates/.claude/skills/moai-lang-javascript/reference.md +1543 -0
- moai_adk/templates/.claude/skills/moai-lang-kotlin/SKILL.md +42 -279
- moai_adk/templates/.claude/skills/moai-lang-php/SKILL.md +94 -556
- moai_adk/templates/.claude/skills/moai-lang-php/examples.md +1608 -0
- moai_adk/templates/.claude/skills/moai-lang-php/modules/advanced-patterns.md +538 -0
- moai_adk/templates/.claude/skills/moai-lang-php/reference.md +1323 -0
- moai_adk/templates/.claude/skills/moai-lang-python/SKILL.md +108 -358
- moai_adk/templates/.claude/skills/moai-lang-r/SKILL.md +84 -482
- moai_adk/templates/.claude/skills/moai-lang-r/examples.md +1154 -0
- moai_adk/templates/.claude/skills/moai-lang-r/modules/advanced-patterns.md +489 -0
- moai_adk/templates/.claude/skills/moai-lang-r/reference.md +1087 -0
- moai_adk/templates/.claude/skills/moai-lang-ruby/SKILL.md +106 -610
- moai_adk/templates/.claude/skills/moai-lang-ruby/examples.md +1106 -0
- moai_adk/templates/.claude/skills/moai-lang-ruby/modules/advanced-patterns.md +309 -0
- moai_adk/templates/.claude/skills/moai-lang-ruby/modules/testing-patterns.md +306 -0
- moai_adk/templates/.claude/skills/moai-lang-ruby/reference.md +1024 -0
- moai_adk/templates/.claude/skills/moai-lang-rust/SKILL.md +51 -265
- moai_adk/templates/.claude/skills/moai-lang-scala/SKILL.md +106 -442
- moai_adk/templates/.claude/skills/moai-lang-scala/modules/akka-actors.md +479 -0
- moai_adk/templates/.claude/skills/moai-lang-scala/modules/cats-effect.md +489 -0
- moai_adk/templates/.claude/skills/moai-lang-scala/modules/functional-programming.md +460 -0
- moai_adk/templates/.claude/skills/moai-lang-scala/modules/spark-data.md +498 -0
- moai_adk/templates/.claude/skills/moai-lang-scala/modules/zio-patterns.md +541 -0
- moai_adk/templates/.claude/skills/moai-lang-swift/SKILL.md +88 -457
- moai_adk/templates/.claude/skills/moai-lang-swift/modules/combine-reactive.md +256 -0
- moai_adk/templates/.claude/skills/moai-lang-swift/modules/concurrency.md +270 -0
- moai_adk/templates/.claude/skills/moai-lang-swift/modules/swift6-features.md +265 -0
- moai_adk/templates/.claude/skills/moai-lang-swift/modules/swiftui-patterns.md +314 -0
- moai_adk/templates/.claude/skills/moai-lang-typescript/SKILL.md +75 -283
- moai_adk/templates/.claude/skills/moai-library-mermaid/SKILL.md +97 -252
- moai_adk/templates/.claude/skills/moai-library-nextra/SKILL.md +64 -240
- moai_adk/templates/.claude/skills/moai-library-nextra/modules/advanced-patterns.md +331 -12
- moai_adk/templates/.claude/skills/moai-library-nextra/modules/configuration.md +330 -37
- moai_adk/templates/.claude/skills/moai-library-shadcn/SKILL.md +90 -287
- moai_adk/templates/.claude/skills/moai-platform-auth0/SKILL.md +200 -206
- moai_adk/templates/.claude/skills/moai-platform-auth0/examples.md +2446 -0
- moai_adk/templates/.claude/skills/moai-platform-auth0/modules/adaptive-mfa.md +233 -0
- moai_adk/templates/.claude/skills/moai-platform-auth0/modules/akamai-integration.md +214 -0
- moai_adk/templates/.claude/skills/moai-platform-auth0/modules/application-credentials.md +280 -0
- moai_adk/templates/.claude/skills/moai-platform-auth0/modules/attack-protection-log-events.md +224 -0
- moai_adk/templates/.claude/skills/moai-platform-auth0/modules/attack-protection-overview.md +140 -0
- moai_adk/templates/.claude/skills/moai-platform-auth0/modules/bot-detection.md +144 -0
- moai_adk/templates/.claude/skills/moai-platform-auth0/modules/breached-password-detection.md +187 -0
- moai_adk/templates/.claude/skills/moai-platform-auth0/modules/brute-force-protection.md +189 -0
- moai_adk/templates/.claude/skills/moai-platform-auth0/modules/certifications.md +282 -0
- moai_adk/templates/.claude/skills/moai-platform-auth0/modules/compliance-overview.md +263 -0
- moai_adk/templates/.claude/skills/moai-platform-auth0/modules/continuous-session-protection.md +307 -0
- moai_adk/templates/.claude/skills/moai-platform-auth0/modules/customize-mfa.md +177 -0
- moai_adk/templates/.claude/skills/moai-platform-auth0/modules/dpop-implementation.md +283 -0
- moai_adk/templates/.claude/skills/moai-platform-auth0/modules/fapi-implementation.md +259 -0
- moai_adk/templates/.claude/skills/moai-platform-auth0/modules/gdpr-compliance.md +313 -0
- moai_adk/templates/.claude/skills/moai-platform-auth0/modules/guardian-configuration.md +269 -0
- moai_adk/templates/.claude/skills/moai-platform-auth0/modules/highly-regulated-identity.md +272 -0
- moai_adk/templates/.claude/skills/moai-platform-auth0/modules/jwt-fundamentals.md +248 -0
- moai_adk/templates/.claude/skills/moai-platform-auth0/modules/mdl-verification.md +210 -0
- moai_adk/templates/.claude/skills/moai-platform-auth0/modules/mfa-api-management.md +278 -0
- moai_adk/templates/.claude/skills/moai-platform-auth0/modules/mfa-factors.md +226 -0
- moai_adk/templates/.claude/skills/moai-platform-auth0/modules/mfa-overview.md +174 -0
- moai_adk/templates/.claude/skills/moai-platform-auth0/modules/mtls-sender-constraining.md +316 -0
- moai_adk/templates/.claude/skills/moai-platform-auth0/modules/ropg-flow-mfa.md +216 -0
- moai_adk/templates/.claude/skills/moai-platform-auth0/modules/security-center.md +325 -0
- moai_adk/templates/.claude/skills/moai-platform-auth0/modules/security-guidance.md +277 -0
- moai_adk/templates/.claude/skills/moai-platform-auth0/modules/state-parameters.md +177 -0
- moai_adk/templates/.claude/skills/moai-platform-auth0/modules/step-up-authentication.md +251 -0
- moai_adk/templates/.claude/skills/moai-platform-auth0/modules/suspicious-ip-throttling.md +240 -0
- moai_adk/templates/.claude/skills/moai-platform-auth0/modules/tenant-access-control.md +179 -0
- moai_adk/templates/.claude/skills/moai-platform-auth0/modules/webauthn-fido.md +235 -0
- moai_adk/templates/.claude/skills/moai-platform-auth0/reference.md +224 -0
- moai_adk/templates/.claude/skills/moai-platform-clerk/SKILL.md +75 -330
- moai_adk/templates/.claude/skills/moai-platform-clerk/examples.md +1426 -0
- moai_adk/templates/.claude/skills/moai-platform-clerk/modules/advanced-patterns.md +417 -0
- moai_adk/templates/.claude/skills/moai-platform-clerk/reference.md +273 -0
- moai_adk/templates/.claude/skills/moai-platform-convex/SKILL.md +100 -340
- moai_adk/templates/.claude/skills/moai-platform-convex/examples.md +506 -0
- moai_adk/templates/.claude/skills/moai-platform-convex/modules/auth-integration.md +421 -0
- moai_adk/templates/.claude/skills/moai-platform-convex/modules/file-storage.md +474 -0
- moai_adk/templates/.claude/skills/moai-platform-convex/modules/reactive-queries.md +302 -0
- moai_adk/templates/.claude/skills/moai-platform-convex/modules/server-functions.md +452 -0
- moai_adk/templates/.claude/skills/moai-platform-convex/reference.md +385 -0
- moai_adk/templates/.claude/skills/moai-platform-firebase-auth/SKILL.md +113 -326
- moai_adk/templates/.claude/skills/moai-platform-firebase-auth/examples.md +514 -0
- moai_adk/templates/.claude/skills/moai-platform-firebase-auth/modules/custom-claims.md +374 -0
- moai_adk/templates/.claude/skills/moai-platform-firebase-auth/modules/phone-auth.md +372 -0
- moai_adk/templates/.claude/skills/moai-platform-firebase-auth/modules/social-auth.md +339 -0
- moai_adk/templates/.claude/skills/moai-platform-firebase-auth/reference.md +382 -0
- moai_adk/templates/.claude/skills/moai-platform-firestore/SKILL.md +71 -302
- moai_adk/templates/.claude/skills/moai-platform-firestore/examples.md +445 -0
- moai_adk/templates/.claude/skills/moai-platform-firestore/modules/offline-cache.md +392 -0
- moai_adk/templates/.claude/skills/moai-platform-firestore/modules/realtime-listeners.md +441 -0
- moai_adk/templates/.claude/skills/moai-platform-firestore/modules/security-rules.md +352 -0
- moai_adk/templates/.claude/skills/moai-platform-firestore/modules/transactions.md +452 -0
- moai_adk/templates/.claude/skills/moai-platform-firestore/reference.md +322 -0
- moai_adk/templates/.claude/skills/moai-platform-neon/SKILL.md +101 -412
- moai_adk/templates/.claude/skills/moai-platform-neon/examples.md +470 -0
- moai_adk/templates/.claude/skills/moai-platform-neon/modules/auto-scaling.md +349 -0
- moai_adk/templates/.claude/skills/moai-platform-neon/modules/branching-workflows.md +354 -0
- moai_adk/templates/.claude/skills/moai-platform-neon/modules/connection-pooling.md +412 -0
- moai_adk/templates/.claude/skills/moai-platform-neon/modules/pitr-backups.md +458 -0
- moai_adk/templates/.claude/skills/moai-platform-neon/reference.md +272 -0
- moai_adk/templates/.claude/skills/moai-platform-railway/SKILL.md +96 -327
- moai_adk/templates/.claude/skills/moai-platform-railway/examples.md +539 -0
- moai_adk/templates/.claude/skills/moai-platform-railway/modules/docker-deployment.md +261 -0
- moai_adk/templates/.claude/skills/moai-platform-railway/modules/multi-service.md +291 -0
- moai_adk/templates/.claude/skills/moai-platform-railway/modules/networking-domains.md +338 -0
- moai_adk/templates/.claude/skills/moai-platform-railway/modules/volumes-storage.md +353 -0
- moai_adk/templates/.claude/skills/moai-platform-railway/reference.md +374 -0
- moai_adk/templates/.claude/skills/moai-platform-supabase/SKILL.md +103 -428
- moai_adk/templates/.claude/skills/moai-platform-supabase/examples.md +502 -0
- moai_adk/templates/.claude/skills/moai-platform-supabase/modules/auth-integration.md +384 -0
- moai_adk/templates/.claude/skills/moai-platform-supabase/modules/edge-functions.md +371 -0
- moai_adk/templates/.claude/skills/moai-platform-supabase/modules/postgresql-pgvector.md +231 -0
- moai_adk/templates/.claude/skills/moai-platform-supabase/modules/realtime-presence.md +354 -0
- moai_adk/templates/.claude/skills/moai-platform-supabase/modules/row-level-security.md +286 -0
- moai_adk/templates/.claude/skills/moai-platform-supabase/modules/storage-cdn.md +319 -0
- moai_adk/templates/.claude/skills/moai-platform-supabase/modules/typescript-patterns.md +453 -0
- moai_adk/templates/.claude/skills/moai-platform-supabase/reference.md +284 -0
- moai_adk/templates/.claude/skills/moai-platform-vercel/SKILL.md +96 -446
- moai_adk/templates/.claude/skills/moai-platform-vercel/examples.md +502 -0
- moai_adk/templates/.claude/skills/moai-platform-vercel/modules/analytics-speed.md +348 -0
- moai_adk/templates/.claude/skills/moai-platform-vercel/modules/deployment-config.md +344 -0
- moai_adk/templates/.claude/skills/moai-platform-vercel/modules/edge-functions.md +222 -0
- moai_adk/templates/.claude/skills/moai-platform-vercel/modules/isr-caching.md +306 -0
- moai_adk/templates/.claude/skills/moai-platform-vercel/modules/kv-storage.md +399 -0
- moai_adk/templates/.claude/skills/moai-platform-vercel/reference.md +360 -0
- moai_adk/templates/.claude/skills/moai-tool-ast-grep/SKILL.md +193 -0
- moai_adk/templates/.claude/skills/moai-tool-ast-grep/examples.md +1099 -0
- moai_adk/templates/.claude/skills/moai-tool-ast-grep/modules/language-specific.md +307 -0
- moai_adk/templates/.claude/skills/moai-tool-ast-grep/modules/pattern-syntax.md +237 -0
- moai_adk/templates/.claude/skills/moai-tool-ast-grep/modules/refactoring-patterns.md +260 -0
- moai_adk/templates/.claude/skills/moai-tool-ast-grep/modules/security-rules.md +239 -0
- moai_adk/templates/.claude/skills/moai-tool-ast-grep/reference.md +288 -0
- moai_adk/templates/.claude/skills/moai-tool-ast-grep/rules/languages/go.yml +90 -0
- moai_adk/templates/.claude/skills/moai-tool-ast-grep/rules/languages/python.yml +101 -0
- moai_adk/templates/.claude/skills/moai-tool-ast-grep/rules/languages/typescript.yml +83 -0
- moai_adk/templates/.claude/skills/moai-tool-ast-grep/rules/quality/complexity-check.yml +94 -0
- moai_adk/templates/.claude/skills/moai-tool-ast-grep/rules/quality/deprecated-apis.yml +84 -0
- moai_adk/templates/.claude/skills/moai-tool-ast-grep/rules/security/secrets-detection.yml +89 -0
- moai_adk/templates/.claude/skills/moai-tool-ast-grep/rules/security/sql-injection.yml +45 -0
- moai_adk/templates/.claude/skills/moai-tool-ast-grep/rules/security/xss-prevention.yml +50 -0
- moai_adk/templates/.claude/skills/moai-tool-ast-grep/rules/sgconfig.yml +54 -0
- moai_adk/templates/.claude/skills/moai-workflow-jit-docs/SKILL.md +225 -423
- moai_adk/templates/.claude/skills/moai-workflow-loop/SKILL.md +197 -0
- moai_adk/templates/.claude/skills/moai-workflow-loop/examples.md +1063 -0
- moai_adk/templates/.claude/skills/moai-workflow-loop/reference.md +1414 -0
- moai_adk/templates/.claude/skills/moai-workflow-project/SKILL.md +211 -314
- moai_adk/templates/.claude/skills/moai-workflow-project/schemas/tab_schema.json +15 -43
- moai_adk/templates/.claude/skills/moai-workflow-spec/SKILL.md +119 -316
- moai_adk/templates/.claude/skills/moai-workflow-spec/modules/advanced-patterns.md +237 -0
- moai_adk/templates/.claude/skills/moai-workflow-templates/SKILL.md +96 -203
- moai_adk/templates/.claude/skills/moai-workflow-testing/SKILL.md +201 -388
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/README.md +52 -3
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/ai-debugging.md +263 -806
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/automated-code-review/context7-integration.md +286 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/automated-code-review/review-workflows.md +500 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/automated-code-review/trust5-framework/relevance-analysis.md +154 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/automated-code-review/trust5-framework/safety-analysis.md +148 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/automated-code-review/trust5-framework/scoring-algorithms.md +196 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/automated-code-review/trust5-framework/timeliness-analysis.md +168 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/automated-code-review/trust5-framework/truthfulness-analysis.md +136 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/automated-code-review/trust5-framework/usability-analysis.md +153 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/automated-code-review/trust5-framework.md +257 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/automated-code-review.md +191 -1344
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/code-review/analysis-patterns.md +340 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/code-review/core-classes.md +299 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/code-review/tool-integration.md +380 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/debugging/debugging-workflows.md +451 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/debugging/error-analysis.md +442 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/performance/optimization-patterns.md +473 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/performance/profiling-techniques.md +481 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/performance-optimization/ai-optimization.md +241 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/performance-optimization/bottleneck-detection.md +397 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/performance-optimization/optimization-plan.md +315 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/performance-optimization/profiler-core.md +277 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/performance-optimization/real-time-monitoring.md +187 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/performance-optimization.md +287 -1194
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/quality-metrics.md +415 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/refactoring/ai-workflows.md +620 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/refactoring/patterns.md +692 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/security-analysis.md +429 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/smart-refactoring.md +262 -1192
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/static-analysis.md +438 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/tdd/core-classes.md +397 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/tdd-context7/advanced-features.md +494 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/tdd-context7/red-green-refactor.md +316 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/tdd-context7/test-generation.md +471 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/tdd-context7/test-patterns.md +371 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/tdd-context7.md +227 -1222
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/trust5-validation.md +428 -0
- moai_adk/templates/.claude/skills/moai-workflow-worktree/SKILL.md +228 -0
- moai_adk/templates/.claude/skills/moai-workflow-worktree/modules/integration-patterns.md +149 -0
- moai_adk/templates/.claude/skills/moai-workflow-worktree/modules/moai-adk-integration.md +245 -0
- moai_adk/templates/.claude/skills/moai-workflow-worktree/modules/parallel-advanced.md +310 -0
- moai_adk/templates/.claude/skills/moai-workflow-worktree/modules/parallel-development.md +202 -0
- moai_adk/templates/.claude/skills/moai-workflow-worktree/modules/parallel-workflows.md +302 -0
- moai_adk/templates/.claude/skills/moai-workflow-worktree/modules/registry-architecture.md +271 -0
- moai_adk/templates/.claude/skills/moai-workflow-worktree/modules/resource-optimization.md +300 -0
- moai_adk/templates/.claude/skills/moai-workflow-worktree/modules/tools-integration.md +280 -0
- moai_adk/templates/.claude/skills/moai-workflow-worktree/modules/troubleshooting.md +397 -0
- moai_adk/templates/.claude/skills/moai-workflow-worktree/modules/worktree-commands.md +296 -0
- moai_adk/templates/.claude/skills/moai-workflow-worktree/modules/worktree-management.md +217 -0
- moai_adk/templates/.git-hooks/pre-push +162 -59
- moai_adk/templates/.github/workflows/ci-universal.yml +934 -133
- moai_adk/templates/.gitignore +65 -107
- moai_adk/templates/.lsp.json +152 -0
- moai_adk/templates/.mcp.json +2 -20
- moai_adk/templates/.moai/announcements/en.json +18 -0
- moai_adk/templates/.moai/announcements/ja.json +18 -0
- moai_adk/templates/.moai/announcements/ko.json +18 -0
- moai_adk/templates/.moai/announcements/zh.json +18 -0
- moai_adk/templates/.moai/config/config.yaml +8 -2
- moai_adk/templates/.moai/config/multilingual-triggers.yaml +213 -0
- moai_adk/templates/.moai/config/sections/language.yaml +2 -2
- moai_adk/templates/.moai/config/sections/llm.yaml +41 -0
- moai_adk/templates/.moai/config/sections/pricing.yaml +30 -0
- moai_adk/templates/.moai/config/sections/project.yaml +2 -2
- moai_adk/templates/.moai/config/sections/quality.yaml +43 -5
- moai_adk/templates/.moai/config/sections/ralph.yaml +55 -0
- moai_adk/templates/.moai/config/sections/system.yaml +46 -1
- moai_adk/templates/.moai/config/sections/user.yaml +1 -1
- moai_adk/templates/.moai/config/statusline-config.yaml +2 -2
- moai_adk/templates/.moai/llm-configs/glm.json +22 -0
- moai_adk/templates/CLAUDE.ja.md +343 -0
- moai_adk/templates/CLAUDE.ko.md +343 -0
- moai_adk/templates/CLAUDE.md +200 -499
- moai_adk/templates/CLAUDE.zh.md +343 -0
- moai_adk/utils/common.py +37 -0
- moai_adk/version.py +1 -1
- moai_adk-1.1.0.dist-info/METADATA +2443 -0
- moai_adk-1.1.0.dist-info/RECORD +701 -0
- {moai_adk-0.34.0.dist-info → moai_adk-1.1.0.dist-info}/entry_points.txt +2 -0
- moai_adk-1.1.0.dist-info/licenses/LICENSE +99 -0
- moai_adk/core/config/auto_spec_config.py +0 -340
- moai_adk/core/hooks/post_tool_auto_spec_completion.py +0 -901
- moai_adk/core/spec/confidence_scoring.py +0 -680
- moai_adk/core/spec/ears_template_engine.py +0 -1247
- moai_adk/core/spec/quality_validator.py +0 -687
- moai_adk/templates/.claude/agents/moai/ai-nano-banana.md +0 -670
- moai_adk/templates/.claude/agents/moai/expert-database.md +0 -777
- moai_adk/templates/.claude/agents/moai/expert-uiux.md +0 -1041
- moai_adk/templates/.claude/agents/moai/mcp-context7.md +0 -458
- moai_adk/templates/.claude/agents/moai/mcp-figma.md +0 -1607
- moai_adk/templates/.claude/agents/moai/mcp-notion.md +0 -789
- moai_adk/templates/.claude/agents/moai/mcp-playwright.md +0 -469
- moai_adk/templates/.claude/agents/moai/mcp-sequential-thinking.md +0 -1032
- moai_adk/templates/.claude/skills/moai-ai-nano-banana/SKILL.md +0 -438
- moai_adk/templates/.claude/skills/moai-ai-nano-banana/examples.md +0 -431
- moai_adk/templates/.claude/skills/moai-domain-uiux/modules/design-system-tokens.md +0 -405
- moai_adk/templates/.claude/skills/moai-library-nextra/advanced-patterns.md +0 -336
- moai_adk/templates/.claude/skills/moai-mcp-figma/SKILL.md +0 -402
- moai_adk/templates/.claude/skills/moai-mcp-figma/advanced-patterns.md +0 -607
- moai_adk/templates/.claude/skills/moai-mcp-notion/SKILL.md +0 -300
- moai_adk/templates/.claude/skills/moai-mcp-notion/advanced-patterns.md +0 -537
- moai_adk/templates/.claude/skills/moai-workflow-project/__init__.py +0 -520
- moai_adk/templates/.claude/skills/moai-workflow-project/complete_workflow_demo_fixed.py +0 -574
- moai_adk/templates/.claude/skills/moai-workflow-project/examples/complete_project_setup.py +0 -317
- moai_adk/templates/.claude/skills/moai-workflow-project/examples/complete_workflow_demo.py +0 -663
- moai_adk/templates/.claude/skills/moai-workflow-project/examples/config-migration-example.json +0 -190
- moai_adk/templates/.claude/skills/moai-workflow-project/examples/question-examples.json +0 -175
- moai_adk/templates/.claude/skills/moai-workflow-project/examples/quick_start.py +0 -196
- moai_adk/templates/.claude/skills/moai-workflow-project/modules/__init__.py +0 -17
- moai_adk/templates/.claude/skills/moai-workflow-project/modules/advanced-patterns.md +0 -158
- moai_adk/templates/.claude/skills/moai-workflow-project/modules/ask_user_integration.py +0 -340
- moai_adk/templates/.claude/skills/moai-workflow-project/modules/batch_questions.py +0 -713
- moai_adk/templates/.claude/skills/moai-workflow-project/modules/config_manager.py +0 -538
- moai_adk/templates/.claude/skills/moai-workflow-project/modules/documentation_manager.py +0 -1336
- moai_adk/templates/.claude/skills/moai-workflow-project/modules/language_initializer.py +0 -730
- moai_adk/templates/.claude/skills/moai-workflow-project/modules/migration_manager.py +0 -608
- moai_adk/templates/.claude/skills/moai-workflow-project/modules/template_optimizer.py +0 -1005
- moai_adk/templates/.claude/skills/moai-workflow-project/test_integration_simple.py +0 -436
- moai_adk/templates/.claude/skills/moai-worktree/SKILL.md +0 -411
- moai_adk/templates/.claude/skills/moai-worktree/modules/integration-patterns.md +0 -982
- moai_adk/templates/.claude/skills/moai-worktree/modules/parallel-development.md +0 -778
- moai_adk/templates/.claude/skills/moai-worktree/modules/worktree-commands.md +0 -646
- moai_adk/templates/.claude/skills/moai-worktree/modules/worktree-management.md +0 -782
- moai_adk/templates/.moai/config/questions/_schema.yaml +0 -151
- moai_adk/templates/.moai/config/questions/tab0-init.yaml +0 -251
- moai_adk/templates/.moai/config/questions/tab1-user.yaml +0 -108
- moai_adk/templates/.moai/config/questions/tab2-project.yaml +0 -81
- moai_adk/templates/.moai/config/questions/tab3-git.yaml +0 -634
- moai_adk/templates/.moai/config/questions/tab4-quality.yaml +0 -170
- moai_adk/templates/.moai/config/questions/tab5-system.yaml +0 -87
- moai_adk/templates/.moai/scripts/setup-glm.py +0 -136
- moai_adk-0.34.0.dist-info/METADATA +0 -2999
- moai_adk-0.34.0.dist-info/RECORD +0 -463
- moai_adk-0.34.0.dist-info/licenses/LICENSE +0 -21
- /moai_adk/foundation/{git.py → git/__init__.py} +0 -0
- /moai_adk/templates/.claude/skills/moai-library-mermaid/{advanced-patterns.md → modules/advanced-patterns.md} +0 -0
- /moai_adk/templates/.claude/skills/moai-library-mermaid/{optimization.md → modules/optimization.md} +0 -0
- /moai_adk/templates/.claude/skills/moai-library-nextra/{optimization.md → modules/optimization.md} +0 -0
- /moai_adk/templates/.claude/skills/moai-workflow-jit-docs/{advanced-patterns.md → modules/advanced-patterns.md} +0 -0
- /moai_adk/templates/.claude/skills/moai-workflow-jit-docs/{optimization.md → modules/optimization.md} +0 -0
- /moai_adk/templates/.claude/skills/moai-workflow-testing/{advanced-patterns.md → modules/advanced-patterns.md} +0 -0
- /moai_adk/templates/.claude/skills/moai-workflow-testing/{optimization.md → modules/optimization.md} +0 -0
- /moai_adk/templates/.claude/skills/{moai-worktree → moai-workflow-worktree}/examples.md +0 -0
- /moai_adk/templates/.claude/skills/{moai-worktree → moai-workflow-worktree}/reference.md +0 -0
- {moai_adk-0.34.0.dist-info → moai_adk-1.1.0.dist-info}/WHEEL +0 -0
moai_adk/loop/state.py
ADDED
|
@@ -0,0 +1,209 @@
|
|
|
1
|
+
# Loop State Data Models
|
|
2
|
+
"""Data models for the Ralph-style autonomous feedback loop controller.
|
|
3
|
+
|
|
4
|
+
These dataclasses represent the core types used for tracking loop execution,
|
|
5
|
+
diagnostic snapshots, AST issue snapshots, and feedback results.
|
|
6
|
+
"""
|
|
7
|
+
|
|
8
|
+
from __future__ import annotations
|
|
9
|
+
|
|
10
|
+
from dataclasses import dataclass, field, replace
|
|
11
|
+
from datetime import datetime
|
|
12
|
+
from enum import Enum
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
class LoopStatus(Enum):
|
|
16
|
+
"""Status of a feedback loop execution.
|
|
17
|
+
|
|
18
|
+
Values represent the current state of a loop:
|
|
19
|
+
- RUNNING: Loop is actively executing
|
|
20
|
+
- COMPLETED: Loop finished successfully (promise fulfilled)
|
|
21
|
+
- CANCELLED: Loop was cancelled by user
|
|
22
|
+
- FAILED: Loop failed due to an error
|
|
23
|
+
- PAUSED: Loop is temporarily paused
|
|
24
|
+
"""
|
|
25
|
+
|
|
26
|
+
RUNNING = "running"
|
|
27
|
+
COMPLETED = "completed"
|
|
28
|
+
CANCELLED = "cancelled"
|
|
29
|
+
FAILED = "failed"
|
|
30
|
+
PAUSED = "paused"
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
@dataclass
|
|
34
|
+
class DiagnosticSnapshot:
|
|
35
|
+
"""A snapshot of LSP diagnostics at a point in time.
|
|
36
|
+
|
|
37
|
+
Captures the state of LSP diagnostics during a loop iteration,
|
|
38
|
+
including counts by severity and affected files.
|
|
39
|
+
|
|
40
|
+
Attributes:
|
|
41
|
+
timestamp: When the snapshot was taken.
|
|
42
|
+
error_count: Number of error-level diagnostics.
|
|
43
|
+
warning_count: Number of warning-level diagnostics.
|
|
44
|
+
info_count: Number of info-level diagnostics.
|
|
45
|
+
files_affected: List of file paths with diagnostics.
|
|
46
|
+
"""
|
|
47
|
+
|
|
48
|
+
timestamp: datetime
|
|
49
|
+
error_count: int
|
|
50
|
+
warning_count: int
|
|
51
|
+
info_count: int
|
|
52
|
+
files_affected: list[str]
|
|
53
|
+
|
|
54
|
+
def total_issues(self) -> int:
|
|
55
|
+
"""Calculate total number of issues across all severities.
|
|
56
|
+
|
|
57
|
+
Returns:
|
|
58
|
+
Sum of error, warning, and info counts.
|
|
59
|
+
"""
|
|
60
|
+
return self.error_count + self.warning_count + self.info_count
|
|
61
|
+
|
|
62
|
+
def has_errors(self) -> bool:
|
|
63
|
+
"""Check if there are any error-level diagnostics.
|
|
64
|
+
|
|
65
|
+
Returns:
|
|
66
|
+
True if error_count > 0, False otherwise.
|
|
67
|
+
"""
|
|
68
|
+
return self.error_count > 0
|
|
69
|
+
|
|
70
|
+
|
|
71
|
+
@dataclass
|
|
72
|
+
class ASTIssueSnapshot:
|
|
73
|
+
"""A snapshot of AST-grep issues at a point in time.
|
|
74
|
+
|
|
75
|
+
Captures the state of AST-grep analysis during a loop iteration,
|
|
76
|
+
including issue counts by severity and rule.
|
|
77
|
+
|
|
78
|
+
Attributes:
|
|
79
|
+
timestamp: When the snapshot was taken.
|
|
80
|
+
total_issues: Total number of AST issues found.
|
|
81
|
+
by_severity: Count of issues by severity level.
|
|
82
|
+
by_rule: Count of issues by rule ID.
|
|
83
|
+
files_affected: List of file paths with issues.
|
|
84
|
+
"""
|
|
85
|
+
|
|
86
|
+
timestamp: datetime
|
|
87
|
+
total_issues: int
|
|
88
|
+
by_severity: dict[str, int]
|
|
89
|
+
by_rule: dict[str, int]
|
|
90
|
+
files_affected: list[str]
|
|
91
|
+
|
|
92
|
+
def has_critical_issues(self) -> bool:
|
|
93
|
+
"""Check if there are any critical (error) issues.
|
|
94
|
+
|
|
95
|
+
Returns:
|
|
96
|
+
True if there are error-severity issues, False otherwise.
|
|
97
|
+
"""
|
|
98
|
+
return self.by_severity.get("error", 0) > 0
|
|
99
|
+
|
|
100
|
+
|
|
101
|
+
@dataclass
|
|
102
|
+
class LoopState:
|
|
103
|
+
"""State of a feedback loop execution.
|
|
104
|
+
|
|
105
|
+
Tracks the complete state of a feedback loop including iteration
|
|
106
|
+
count, status, and history of diagnostics and AST issues.
|
|
107
|
+
|
|
108
|
+
Attributes:
|
|
109
|
+
loop_id: Unique identifier for the loop.
|
|
110
|
+
promise: The completion condition (e.g., "Fix all LSP errors").
|
|
111
|
+
current_iteration: Current iteration number (1-based).
|
|
112
|
+
max_iterations: Maximum allowed iterations.
|
|
113
|
+
status: Current loop status.
|
|
114
|
+
created_at: When the loop was created.
|
|
115
|
+
updated_at: When the loop was last updated.
|
|
116
|
+
diagnostics_history: History of diagnostic snapshots.
|
|
117
|
+
ast_issues_history: History of AST issue snapshots.
|
|
118
|
+
"""
|
|
119
|
+
|
|
120
|
+
loop_id: str
|
|
121
|
+
promise: str
|
|
122
|
+
current_iteration: int
|
|
123
|
+
max_iterations: int
|
|
124
|
+
status: LoopStatus
|
|
125
|
+
created_at: datetime
|
|
126
|
+
updated_at: datetime
|
|
127
|
+
diagnostics_history: list[DiagnosticSnapshot] = field(default_factory=list)
|
|
128
|
+
ast_issues_history: list[ASTIssueSnapshot] = field(default_factory=list)
|
|
129
|
+
|
|
130
|
+
def is_active(self) -> bool:
|
|
131
|
+
"""Check if the loop is in an active state.
|
|
132
|
+
|
|
133
|
+
Active states are RUNNING and PAUSED. Completed, cancelled,
|
|
134
|
+
and failed loops are not active.
|
|
135
|
+
|
|
136
|
+
Returns:
|
|
137
|
+
True if the loop is active, False otherwise.
|
|
138
|
+
"""
|
|
139
|
+
return self.status in (LoopStatus.RUNNING, LoopStatus.PAUSED)
|
|
140
|
+
|
|
141
|
+
def can_continue(self) -> bool:
|
|
142
|
+
"""Check if the loop can continue to the next iteration.
|
|
143
|
+
|
|
144
|
+
A loop can continue if it is active and has not reached
|
|
145
|
+
the maximum iteration limit.
|
|
146
|
+
|
|
147
|
+
Returns:
|
|
148
|
+
True if the loop can continue, False otherwise.
|
|
149
|
+
"""
|
|
150
|
+
return self.is_active() and self.current_iteration < self.max_iterations
|
|
151
|
+
|
|
152
|
+
def increment_iteration(self) -> LoopState:
|
|
153
|
+
"""Create a new LoopState with incremented iteration count.
|
|
154
|
+
|
|
155
|
+
Returns a new LoopState instance with current_iteration + 1,
|
|
156
|
+
preserving immutability of the original state.
|
|
157
|
+
|
|
158
|
+
Returns:
|
|
159
|
+
New LoopState with incremented iteration.
|
|
160
|
+
"""
|
|
161
|
+
return replace(self, current_iteration=self.current_iteration + 1)
|
|
162
|
+
|
|
163
|
+
|
|
164
|
+
@dataclass
|
|
165
|
+
class CompletionResult:
|
|
166
|
+
"""Result of checking loop completion conditions.
|
|
167
|
+
|
|
168
|
+
Contains information about whether the loop's promise has been
|
|
169
|
+
fulfilled and progress towards completion.
|
|
170
|
+
|
|
171
|
+
Attributes:
|
|
172
|
+
is_complete: Whether the completion condition is met.
|
|
173
|
+
reason: Human-readable explanation of the result.
|
|
174
|
+
remaining_issues: Number of issues still remaining.
|
|
175
|
+
progress_percentage: Percentage of progress towards completion.
|
|
176
|
+
"""
|
|
177
|
+
|
|
178
|
+
is_complete: bool
|
|
179
|
+
reason: str
|
|
180
|
+
remaining_issues: int
|
|
181
|
+
progress_percentage: float
|
|
182
|
+
|
|
183
|
+
|
|
184
|
+
@dataclass
|
|
185
|
+
class FeedbackResult:
|
|
186
|
+
"""Result of executing a feedback loop iteration.
|
|
187
|
+
|
|
188
|
+
Contains the diagnostic and AST snapshots from the iteration,
|
|
189
|
+
along with formatted feedback text and priority issues.
|
|
190
|
+
|
|
191
|
+
Attributes:
|
|
192
|
+
lsp_diagnostics: Snapshot of LSP diagnostics.
|
|
193
|
+
ast_issues: Snapshot of AST-grep issues.
|
|
194
|
+
feedback_text: Formatted feedback text for Claude.
|
|
195
|
+
priority_issues: List of highest-priority issues to address.
|
|
196
|
+
"""
|
|
197
|
+
|
|
198
|
+
lsp_diagnostics: DiagnosticSnapshot
|
|
199
|
+
ast_issues: ASTIssueSnapshot
|
|
200
|
+
feedback_text: str
|
|
201
|
+
priority_issues: list[str]
|
|
202
|
+
|
|
203
|
+
def has_issues(self) -> bool:
|
|
204
|
+
"""Check if there are any issues (LSP or AST).
|
|
205
|
+
|
|
206
|
+
Returns:
|
|
207
|
+
True if there are any LSP diagnostics or AST issues.
|
|
208
|
+
"""
|
|
209
|
+
return self.lsp_diagnostics.total_issues() > 0 or self.ast_issues.total_issues > 0
|
moai_adk/loop/storage.py
ADDED
|
@@ -0,0 +1,220 @@
|
|
|
1
|
+
# Loop Storage
|
|
2
|
+
"""Persistent storage for loop state management.
|
|
3
|
+
|
|
4
|
+
Provides file-based storage for LoopState objects, enabling persistence
|
|
5
|
+
across sessions and recovery of loop execution state.
|
|
6
|
+
"""
|
|
7
|
+
|
|
8
|
+
from __future__ import annotations
|
|
9
|
+
|
|
10
|
+
import json
|
|
11
|
+
from datetime import datetime
|
|
12
|
+
from pathlib import Path
|
|
13
|
+
from typing import Any
|
|
14
|
+
|
|
15
|
+
from moai_adk.loop.state import (
|
|
16
|
+
ASTIssueSnapshot,
|
|
17
|
+
DiagnosticSnapshot,
|
|
18
|
+
LoopState,
|
|
19
|
+
LoopStatus,
|
|
20
|
+
)
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
class LoopStorage:
|
|
24
|
+
"""File-based storage for loop states.
|
|
25
|
+
|
|
26
|
+
Manages persistence of LoopState objects to JSON files, enabling
|
|
27
|
+
state recovery and history tracking across sessions.
|
|
28
|
+
|
|
29
|
+
Attributes:
|
|
30
|
+
storage_dir: Path to the storage directory.
|
|
31
|
+
"""
|
|
32
|
+
|
|
33
|
+
def __init__(self, storage_dir: str = ".moai/loop"):
|
|
34
|
+
"""Initialize the loop storage.
|
|
35
|
+
|
|
36
|
+
Creates the storage directory if it doesn't exist.
|
|
37
|
+
|
|
38
|
+
Args:
|
|
39
|
+
storage_dir: Path to the storage directory.
|
|
40
|
+
"""
|
|
41
|
+
self.storage_dir = Path(storage_dir)
|
|
42
|
+
self.storage_dir.mkdir(parents=True, exist_ok=True)
|
|
43
|
+
|
|
44
|
+
def save_state(self, state: LoopState) -> None:
|
|
45
|
+
"""Save a loop state to storage.
|
|
46
|
+
|
|
47
|
+
Serializes the LoopState to JSON and writes it to a file
|
|
48
|
+
named after the loop_id.
|
|
49
|
+
|
|
50
|
+
Args:
|
|
51
|
+
state: The LoopState to save.
|
|
52
|
+
"""
|
|
53
|
+
state_file = self.storage_dir / f"{state.loop_id}.json"
|
|
54
|
+
data = self._serialize_state(state)
|
|
55
|
+
with open(state_file, "w", encoding="utf-8") as f:
|
|
56
|
+
json.dump(data, f, indent=2, default=str)
|
|
57
|
+
|
|
58
|
+
def load_state(self, loop_id: str) -> LoopState | None:
|
|
59
|
+
"""Load a loop state from storage.
|
|
60
|
+
|
|
61
|
+
Reads and deserializes a LoopState from the JSON file
|
|
62
|
+
corresponding to the loop_id.
|
|
63
|
+
|
|
64
|
+
Args:
|
|
65
|
+
loop_id: The ID of the loop to load.
|
|
66
|
+
|
|
67
|
+
Returns:
|
|
68
|
+
The loaded LoopState, or None if not found.
|
|
69
|
+
"""
|
|
70
|
+
state_file = self.storage_dir / f"{loop_id}.json"
|
|
71
|
+
if not state_file.exists():
|
|
72
|
+
return None
|
|
73
|
+
|
|
74
|
+
with open(state_file, "r", encoding="utf-8") as f:
|
|
75
|
+
data = json.load(f)
|
|
76
|
+
|
|
77
|
+
return self._deserialize_state(data)
|
|
78
|
+
|
|
79
|
+
def get_active_loop_id(self) -> str | None:
|
|
80
|
+
"""Get the ID of the currently active loop.
|
|
81
|
+
|
|
82
|
+
Scans all stored loops and returns the ID of the most recently
|
|
83
|
+
updated loop that is in an active state (RUNNING or PAUSED).
|
|
84
|
+
|
|
85
|
+
Returns:
|
|
86
|
+
The loop_id of the active loop, or None if no active loop.
|
|
87
|
+
"""
|
|
88
|
+
active_loops: list[tuple[str, datetime]] = []
|
|
89
|
+
|
|
90
|
+
for loop_id in self.list_loops():
|
|
91
|
+
state = self.load_state(loop_id)
|
|
92
|
+
if state is not None and state.is_active():
|
|
93
|
+
active_loops.append((loop_id, state.updated_at))
|
|
94
|
+
|
|
95
|
+
if not active_loops:
|
|
96
|
+
return None
|
|
97
|
+
|
|
98
|
+
# Return the most recently updated active loop
|
|
99
|
+
active_loops.sort(key=lambda x: x[1], reverse=True)
|
|
100
|
+
return active_loops[0][0]
|
|
101
|
+
|
|
102
|
+
def list_loops(self) -> list[str]:
|
|
103
|
+
"""List all stored loop IDs.
|
|
104
|
+
|
|
105
|
+
Scans the storage directory for loop state files and
|
|
106
|
+
returns their IDs.
|
|
107
|
+
|
|
108
|
+
Returns:
|
|
109
|
+
List of loop IDs.
|
|
110
|
+
"""
|
|
111
|
+
loop_ids = []
|
|
112
|
+
for file_path in self.storage_dir.glob("*.json"):
|
|
113
|
+
loop_ids.append(file_path.stem)
|
|
114
|
+
return loop_ids
|
|
115
|
+
|
|
116
|
+
def delete_state(self, loop_id: str) -> bool:
|
|
117
|
+
"""Delete a loop state from storage.
|
|
118
|
+
|
|
119
|
+
Removes the JSON file corresponding to the loop_id.
|
|
120
|
+
|
|
121
|
+
Args:
|
|
122
|
+
loop_id: The ID of the loop to delete.
|
|
123
|
+
|
|
124
|
+
Returns:
|
|
125
|
+
True if the state was deleted, False if it didn't exist.
|
|
126
|
+
"""
|
|
127
|
+
state_file = self.storage_dir / f"{loop_id}.json"
|
|
128
|
+
if not state_file.exists():
|
|
129
|
+
return False
|
|
130
|
+
|
|
131
|
+
state_file.unlink()
|
|
132
|
+
return True
|
|
133
|
+
|
|
134
|
+
def _serialize_state(self, state: LoopState) -> dict[str, Any]:
|
|
135
|
+
"""Serialize a LoopState to a dictionary.
|
|
136
|
+
|
|
137
|
+
Converts the LoopState and its nested objects to a JSON-serializable
|
|
138
|
+
dictionary format.
|
|
139
|
+
|
|
140
|
+
Args:
|
|
141
|
+
state: The LoopState to serialize.
|
|
142
|
+
|
|
143
|
+
Returns:
|
|
144
|
+
Dictionary representation of the state.
|
|
145
|
+
"""
|
|
146
|
+
return {
|
|
147
|
+
"loop_id": state.loop_id,
|
|
148
|
+
"promise": state.promise,
|
|
149
|
+
"current_iteration": state.current_iteration,
|
|
150
|
+
"max_iterations": state.max_iterations,
|
|
151
|
+
"status": state.status.value,
|
|
152
|
+
"created_at": state.created_at.isoformat(),
|
|
153
|
+
"updated_at": state.updated_at.isoformat(),
|
|
154
|
+
"diagnostics_history": [self._serialize_diagnostic_snapshot(s) for s in state.diagnostics_history],
|
|
155
|
+
"ast_issues_history": [self._serialize_ast_snapshot(s) for s in state.ast_issues_history],
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
def _serialize_diagnostic_snapshot(self, snapshot: DiagnosticSnapshot) -> dict[str, Any]:
|
|
159
|
+
"""Serialize a DiagnosticSnapshot to a dictionary."""
|
|
160
|
+
return {
|
|
161
|
+
"timestamp": snapshot.timestamp.isoformat(),
|
|
162
|
+
"error_count": snapshot.error_count,
|
|
163
|
+
"warning_count": snapshot.warning_count,
|
|
164
|
+
"info_count": snapshot.info_count,
|
|
165
|
+
"files_affected": snapshot.files_affected,
|
|
166
|
+
}
|
|
167
|
+
|
|
168
|
+
def _serialize_ast_snapshot(self, snapshot: ASTIssueSnapshot) -> dict[str, Any]:
|
|
169
|
+
"""Serialize an ASTIssueSnapshot to a dictionary."""
|
|
170
|
+
return {
|
|
171
|
+
"timestamp": snapshot.timestamp.isoformat(),
|
|
172
|
+
"total_issues": snapshot.total_issues,
|
|
173
|
+
"by_severity": snapshot.by_severity,
|
|
174
|
+
"by_rule": snapshot.by_rule,
|
|
175
|
+
"files_affected": snapshot.files_affected,
|
|
176
|
+
}
|
|
177
|
+
|
|
178
|
+
def _deserialize_state(self, data: dict[str, Any]) -> LoopState:
|
|
179
|
+
"""Deserialize a dictionary to a LoopState.
|
|
180
|
+
|
|
181
|
+
Converts a JSON-deserialized dictionary back to a LoopState
|
|
182
|
+
with proper typing.
|
|
183
|
+
|
|
184
|
+
Args:
|
|
185
|
+
data: Dictionary representation of the state.
|
|
186
|
+
|
|
187
|
+
Returns:
|
|
188
|
+
The deserialized LoopState.
|
|
189
|
+
"""
|
|
190
|
+
return LoopState(
|
|
191
|
+
loop_id=data["loop_id"],
|
|
192
|
+
promise=data["promise"],
|
|
193
|
+
current_iteration=data["current_iteration"],
|
|
194
|
+
max_iterations=data["max_iterations"],
|
|
195
|
+
status=LoopStatus(data["status"]),
|
|
196
|
+
created_at=datetime.fromisoformat(data["created_at"]),
|
|
197
|
+
updated_at=datetime.fromisoformat(data["updated_at"]),
|
|
198
|
+
diagnostics_history=[self._deserialize_diagnostic_snapshot(s) for s in data.get("diagnostics_history", [])],
|
|
199
|
+
ast_issues_history=[self._deserialize_ast_snapshot(s) for s in data.get("ast_issues_history", [])],
|
|
200
|
+
)
|
|
201
|
+
|
|
202
|
+
def _deserialize_diagnostic_snapshot(self, data: dict[str, Any]) -> DiagnosticSnapshot:
|
|
203
|
+
"""Deserialize a dictionary to a DiagnosticSnapshot."""
|
|
204
|
+
return DiagnosticSnapshot(
|
|
205
|
+
timestamp=datetime.fromisoformat(data["timestamp"]),
|
|
206
|
+
error_count=data["error_count"],
|
|
207
|
+
warning_count=data["warning_count"],
|
|
208
|
+
info_count=data["info_count"],
|
|
209
|
+
files_affected=data["files_affected"],
|
|
210
|
+
)
|
|
211
|
+
|
|
212
|
+
def _deserialize_ast_snapshot(self, data: dict[str, Any]) -> ASTIssueSnapshot:
|
|
213
|
+
"""Deserialize a dictionary to an ASTIssueSnapshot."""
|
|
214
|
+
return ASTIssueSnapshot(
|
|
215
|
+
timestamp=datetime.fromisoformat(data["timestamp"]),
|
|
216
|
+
total_issues=data["total_issues"],
|
|
217
|
+
by_severity=data["by_severity"],
|
|
218
|
+
by_rule=data["by_rule"],
|
|
219
|
+
files_affected=data["files_affected"],
|
|
220
|
+
)
|
moai_adk/lsp/__init__.py
ADDED
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
# LSP Module
|
|
2
|
+
"""MoAI-ADK LSP (Language Server Protocol) client implementation.
|
|
3
|
+
|
|
4
|
+
This module provides:
|
|
5
|
+
- LSP data models (Position, Range, Diagnostic, etc.)
|
|
6
|
+
- JSON-RPC 2.0 protocol implementation
|
|
7
|
+
- LSP server lifecycle management
|
|
8
|
+
- LSP client interface for diagnostics, references, and more
|
|
9
|
+
"""
|
|
10
|
+
|
|
11
|
+
from moai_adk.lsp.client import LSPClientError, MoAILSPClient
|
|
12
|
+
from moai_adk.lsp.models import (
|
|
13
|
+
Diagnostic,
|
|
14
|
+
DiagnosticSeverity,
|
|
15
|
+
HoverInfo,
|
|
16
|
+
Location,
|
|
17
|
+
Position,
|
|
18
|
+
Range,
|
|
19
|
+
TextDocumentIdentifier,
|
|
20
|
+
TextDocumentPositionParams,
|
|
21
|
+
TextEdit,
|
|
22
|
+
WorkspaceEdit,
|
|
23
|
+
)
|
|
24
|
+
from moai_adk.lsp.protocol import (
|
|
25
|
+
ContentLengthError,
|
|
26
|
+
JsonRpcError,
|
|
27
|
+
JsonRpcNotification,
|
|
28
|
+
JsonRpcRequest,
|
|
29
|
+
JsonRpcResponse,
|
|
30
|
+
LSPProtocol,
|
|
31
|
+
ProtocolError,
|
|
32
|
+
)
|
|
33
|
+
from moai_adk.lsp.server_manager import (
|
|
34
|
+
LSPServer,
|
|
35
|
+
LSPServerConfig,
|
|
36
|
+
LSPServerManager,
|
|
37
|
+
ServerNotFoundError,
|
|
38
|
+
ServerStartError,
|
|
39
|
+
)
|
|
40
|
+
|
|
41
|
+
__all__ = [
|
|
42
|
+
# Client
|
|
43
|
+
"MoAILSPClient",
|
|
44
|
+
"LSPClientError",
|
|
45
|
+
# Models
|
|
46
|
+
"Position",
|
|
47
|
+
"Range",
|
|
48
|
+
"Location",
|
|
49
|
+
"DiagnosticSeverity",
|
|
50
|
+
"Diagnostic",
|
|
51
|
+
"TextDocumentIdentifier",
|
|
52
|
+
"TextDocumentPositionParams",
|
|
53
|
+
"TextEdit",
|
|
54
|
+
"WorkspaceEdit",
|
|
55
|
+
"HoverInfo",
|
|
56
|
+
# Protocol
|
|
57
|
+
"LSPProtocol",
|
|
58
|
+
"JsonRpcRequest",
|
|
59
|
+
"JsonRpcResponse",
|
|
60
|
+
"JsonRpcNotification",
|
|
61
|
+
"JsonRpcError",
|
|
62
|
+
"ProtocolError",
|
|
63
|
+
"ContentLengthError",
|
|
64
|
+
# Server Manager
|
|
65
|
+
"LSPServerManager",
|
|
66
|
+
"LSPServer",
|
|
67
|
+
"LSPServerConfig",
|
|
68
|
+
"ServerNotFoundError",
|
|
69
|
+
"ServerStartError",
|
|
70
|
+
]
|