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
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
# MoAI-ADK Hooks Library
|
|
2
|
+
|
|
3
|
+
Shared utilities for Claude Code hooks in MoAI-ADK.
|
|
4
|
+
|
|
5
|
+
## Module Overview
|
|
6
|
+
|
|
7
|
+
```
|
|
8
|
+
lib/
|
|
9
|
+
├── __init__.py # Package exports
|
|
10
|
+
├── common.py # Shared utilities (format_duration, merge_configs)
|
|
11
|
+
├── config_manager.py # Configuration loading and management
|
|
12
|
+
├── config_validator.py # Configuration schema validation
|
|
13
|
+
├── exceptions.py # Exception hierarchy
|
|
14
|
+
├── models.py # Data structures (HookPayload, HookResult)
|
|
15
|
+
├── path_utils.py # Project root detection, safe paths
|
|
16
|
+
├── project.py # Project metadata (language, Git, SPEC)
|
|
17
|
+
├── timeout.py # Cross-platform timeout (Windows/Unix)
|
|
18
|
+
├── unified_timeout_manager.py # Advanced timeout with retry
|
|
19
|
+
├── git_operations_manager.py # Optimized Git operations
|
|
20
|
+
├── checkpoint.py # Risky operation detection
|
|
21
|
+
├── language_validator.py # Language config validation
|
|
22
|
+
└── tool_registry.py # Formatter/linter tool registry
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
## Exit Codes
|
|
26
|
+
|
|
27
|
+
| Code | Meaning | Usage |
|
|
28
|
+
|------|---------|-------|
|
|
29
|
+
| 0 | Success | Normal completion |
|
|
30
|
+
| 1 | Warning/Error | Non-critical error, logged |
|
|
31
|
+
| 2 | Critical Error | Blocks operation |
|
|
32
|
+
| 3 | Configuration Error | Invalid config |
|
|
33
|
+
|
|
34
|
+
## Exception Hierarchy
|
|
35
|
+
|
|
36
|
+
```
|
|
37
|
+
HooksBaseError (base)
|
|
38
|
+
├── TimeoutError
|
|
39
|
+
│ └── HookTimeoutError (with context)
|
|
40
|
+
├── GitOperationError
|
|
41
|
+
├── ConfigurationError
|
|
42
|
+
├── ValidationError
|
|
43
|
+
└── SecurityError
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
## Key Functions
|
|
47
|
+
|
|
48
|
+
### Path Management (`path_utils.py`)
|
|
49
|
+
|
|
50
|
+
```python
|
|
51
|
+
from lib.path_utils import find_project_root, get_safe_moai_path
|
|
52
|
+
|
|
53
|
+
# Find project root (with caching)
|
|
54
|
+
root = find_project_root()
|
|
55
|
+
|
|
56
|
+
# Get safe path within .moai/
|
|
57
|
+
cache_path = get_safe_moai_path("cache/version.json")
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
### Configuration (`config_manager.py`)
|
|
61
|
+
|
|
62
|
+
```python
|
|
63
|
+
from lib.config_manager import ConfigManager, get_config
|
|
64
|
+
|
|
65
|
+
# Load configuration
|
|
66
|
+
config = ConfigManager().load_config()
|
|
67
|
+
|
|
68
|
+
# Get specific value
|
|
69
|
+
timeout = get_config("hooks.timeout_ms", default=5000)
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
### Timeout Handling (`timeout.py`, `unified_timeout_manager.py`)
|
|
73
|
+
|
|
74
|
+
```python
|
|
75
|
+
# Basic timeout
|
|
76
|
+
from lib.timeout import CrossPlatformTimeout
|
|
77
|
+
|
|
78
|
+
with CrossPlatformTimeout(5):
|
|
79
|
+
long_running_operation()
|
|
80
|
+
|
|
81
|
+
# Advanced timeout with retry
|
|
82
|
+
from lib.unified_timeout_manager import get_timeout_manager
|
|
83
|
+
|
|
84
|
+
manager = get_timeout_manager()
|
|
85
|
+
result = manager.execute_with_timeout("hook_name", func, config=config)
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
### Common Utilities (`common.py`)
|
|
89
|
+
|
|
90
|
+
```python
|
|
91
|
+
from lib.common import merge_configs, format_duration
|
|
92
|
+
|
|
93
|
+
# Merge configs recursively
|
|
94
|
+
merged = merge_configs(base_config, override_config)
|
|
95
|
+
|
|
96
|
+
# Format duration
|
|
97
|
+
formatted = format_duration(125.5) # "2.1m"
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
## Configuration Files
|
|
101
|
+
|
|
102
|
+
### Main Config
|
|
103
|
+
Location: `.moai/config/config.yaml`
|
|
104
|
+
|
|
105
|
+
### Section Files
|
|
106
|
+
Location: `.moai/config/sections/`
|
|
107
|
+
- `user.yaml` - User name
|
|
108
|
+
- `language.yaml` - Language preferences
|
|
109
|
+
- `project.yaml` - Project metadata
|
|
110
|
+
- `git-strategy.yaml` - Git workflow
|
|
111
|
+
- `quality.yaml` - TDD settings
|
|
112
|
+
|
|
113
|
+
## Hook Data Flow
|
|
114
|
+
|
|
115
|
+
```
|
|
116
|
+
Claude Code Event
|
|
117
|
+
↓
|
|
118
|
+
stdin (JSON)
|
|
119
|
+
↓
|
|
120
|
+
Hook Process
|
|
121
|
+
↓
|
|
122
|
+
stdout (JSON response)
|
|
123
|
+
↓
|
|
124
|
+
Claude Code
|
|
125
|
+
```
|
|
126
|
+
|
|
127
|
+
### Response Format
|
|
128
|
+
|
|
129
|
+
```json
|
|
130
|
+
{
|
|
131
|
+
"continue": true,
|
|
132
|
+
"systemMessage": "...",
|
|
133
|
+
"hookSpecificOutput": {
|
|
134
|
+
"hookEventName": "PreToolUse",
|
|
135
|
+
"permissionDecision": "allow|deny|ask"
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
```
|
|
139
|
+
|
|
140
|
+
## Version
|
|
141
|
+
|
|
142
|
+
- Library Version: 1.0.0
|
|
143
|
+
- Last Updated: 2025-01
|
|
@@ -1,85 +1,41 @@
|
|
|
1
|
+
# type: ignore
|
|
1
2
|
"""
|
|
2
|
-
|
|
3
|
+
Statusline module for Claude Code status display
|
|
3
4
|
|
|
4
|
-
|
|
5
|
-
- Configuration management (ConfigManager)
|
|
6
|
-
- Core utilities (timeout, common utilities)
|
|
7
|
-
- Data models (HookPayload, HookResult)
|
|
8
|
-
- Project utilities (language detection, git info, SPEC counting)
|
|
9
|
-
- Checkpoint utilities (risky operation detection, checkpoint creation)
|
|
10
|
-
"""
|
|
11
|
-
|
|
12
|
-
try:
|
|
13
|
-
# Import core components
|
|
14
|
-
# Import checkpoint utilities
|
|
15
|
-
from lib.checkpoint import (
|
|
16
|
-
create_checkpoint,
|
|
17
|
-
detect_risky_operation,
|
|
18
|
-
list_checkpoints,
|
|
19
|
-
)
|
|
20
|
-
|
|
21
|
-
# Import utilities
|
|
22
|
-
from lib.common import (
|
|
23
|
-
format_duration,
|
|
24
|
-
get_file_pattern_category,
|
|
25
|
-
get_summary_stats,
|
|
26
|
-
is_root_whitelisted,
|
|
27
|
-
suggest_moai_location,
|
|
28
|
-
)
|
|
29
|
-
from lib.config_manager import (
|
|
30
|
-
ConfigManager,
|
|
31
|
-
get_config,
|
|
32
|
-
get_config_manager,
|
|
33
|
-
get_exit_code,
|
|
34
|
-
get_graceful_degradation,
|
|
35
|
-
get_timeout_seconds,
|
|
36
|
-
)
|
|
37
|
-
|
|
38
|
-
# Import models
|
|
39
|
-
from lib.models import HookPayload, HookResult
|
|
5
|
+
Provides real-time status information display in Claude Code terminal
|
|
40
6
|
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
from lib.timeout import CrossPlatformTimeout, TimeoutError, timeout_context
|
|
48
|
-
|
|
49
|
-
__all__ = [
|
|
50
|
-
# Core - Timeout
|
|
51
|
-
"CrossPlatformTimeout",
|
|
52
|
-
"TimeoutError",
|
|
53
|
-
"timeout_context",
|
|
54
|
-
# Core - Configuration
|
|
55
|
-
"ConfigManager",
|
|
56
|
-
"get_config_manager",
|
|
57
|
-
"get_config",
|
|
58
|
-
"get_timeout_seconds",
|
|
59
|
-
"get_graceful_degradation",
|
|
60
|
-
"get_exit_code",
|
|
61
|
-
# Common utilities
|
|
62
|
-
"format_duration",
|
|
63
|
-
"get_summary_stats",
|
|
64
|
-
"is_root_whitelisted",
|
|
65
|
-
"get_file_pattern_category",
|
|
66
|
-
"suggest_moai_location",
|
|
67
|
-
# Models
|
|
68
|
-
"HookPayload",
|
|
69
|
-
"HookResult",
|
|
70
|
-
# Checkpoint
|
|
71
|
-
"create_checkpoint",
|
|
72
|
-
"detect_risky_operation",
|
|
73
|
-
"list_checkpoints",
|
|
74
|
-
# Project
|
|
75
|
-
"find_project_root",
|
|
76
|
-
"get_git_info",
|
|
77
|
-
"count_specs",
|
|
78
|
-
]
|
|
79
|
-
|
|
80
|
-
except ImportError:
|
|
81
|
-
# Fallback if not all imports are available
|
|
82
|
-
__all__ = []
|
|
7
|
+
Enhanced version includes:
|
|
8
|
+
- Improved version reader with caching and error handling
|
|
9
|
+
- Async support for better performance
|
|
10
|
+
- Configurable version reading behavior
|
|
11
|
+
- Comprehensive fallback strategies
|
|
12
|
+
"""
|
|
83
13
|
|
|
84
|
-
__version__ = "1.0
|
|
85
|
-
|
|
14
|
+
__version__ = "0.1.0"
|
|
15
|
+
|
|
16
|
+
from .alfred_detector import AlfredDetector, AlfredTask
|
|
17
|
+
from .config import StatuslineConfig
|
|
18
|
+
from .git_collector import GitCollector, GitInfo
|
|
19
|
+
from .memory_collector import MemoryCollector, MemoryInfo
|
|
20
|
+
from .metrics_tracker import MetricsTracker
|
|
21
|
+
from .renderer import StatuslineData, StatuslineRenderer
|
|
22
|
+
from .update_checker import UpdateChecker, UpdateInfo
|
|
23
|
+
from .version_reader import VersionConfig, VersionReader, VersionReadError
|
|
24
|
+
|
|
25
|
+
__all__ = [
|
|
26
|
+
"StatuslineRenderer",
|
|
27
|
+
"StatuslineData",
|
|
28
|
+
"StatuslineConfig",
|
|
29
|
+
"GitCollector",
|
|
30
|
+
"GitInfo",
|
|
31
|
+
"MemoryCollector",
|
|
32
|
+
"MemoryInfo",
|
|
33
|
+
"MetricsTracker",
|
|
34
|
+
"AlfredDetector",
|
|
35
|
+
"AlfredTask",
|
|
36
|
+
"VersionReader",
|
|
37
|
+
"VersionConfig",
|
|
38
|
+
"VersionReadError",
|
|
39
|
+
"UpdateChecker",
|
|
40
|
+
"UpdateInfo",
|
|
41
|
+
]
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
# type: ignore
|
|
2
|
+
"""
|
|
3
|
+
Alfred task detector for statusline
|
|
4
|
+
|
|
5
|
+
"""
|
|
6
|
+
|
|
7
|
+
import json
|
|
8
|
+
import logging
|
|
9
|
+
from dataclasses import dataclass
|
|
10
|
+
from datetime import datetime, timedelta
|
|
11
|
+
from pathlib import Path
|
|
12
|
+
from typing import Optional
|
|
13
|
+
|
|
14
|
+
logger = logging.getLogger(__name__)
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
@dataclass
|
|
18
|
+
class AlfredTask:
|
|
19
|
+
"""Alfred task information"""
|
|
20
|
+
|
|
21
|
+
command: Optional[str]
|
|
22
|
+
spec_id: Optional[str]
|
|
23
|
+
stage: Optional[str]
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
class AlfredDetector:
|
|
27
|
+
"""Detects active Alfred tasks with 1-second caching"""
|
|
28
|
+
|
|
29
|
+
# Configuration
|
|
30
|
+
_CACHE_TTL_SECONDS = 1
|
|
31
|
+
|
|
32
|
+
def __init__(self):
|
|
33
|
+
"""Initialize Alfred detector"""
|
|
34
|
+
self._cache: Optional[AlfredTask] = None
|
|
35
|
+
self._cache_time: Optional[datetime] = None
|
|
36
|
+
self._cache_ttl = timedelta(seconds=self._CACHE_TTL_SECONDS)
|
|
37
|
+
self._session_state_path = Path.home() / ".moai" / "memory" / "last-session-state.json"
|
|
38
|
+
|
|
39
|
+
def detect_active_task(self) -> AlfredTask:
|
|
40
|
+
"""
|
|
41
|
+
Detect currently active Alfred task
|
|
42
|
+
|
|
43
|
+
Returns:
|
|
44
|
+
AlfredTask with command and spec_id
|
|
45
|
+
"""
|
|
46
|
+
# Check cache
|
|
47
|
+
if self._is_cache_valid():
|
|
48
|
+
return self._cache
|
|
49
|
+
|
|
50
|
+
# Read and parse session state
|
|
51
|
+
task = self._read_session_state()
|
|
52
|
+
self._update_cache(task)
|
|
53
|
+
return task
|
|
54
|
+
|
|
55
|
+
def _read_session_state(self) -> AlfredTask:
|
|
56
|
+
"""
|
|
57
|
+
Read Alfred task from session state file
|
|
58
|
+
|
|
59
|
+
Returns:
|
|
60
|
+
AlfredTask from file or defaults
|
|
61
|
+
"""
|
|
62
|
+
try:
|
|
63
|
+
if not self._session_state_path.exists():
|
|
64
|
+
return self._create_default_task()
|
|
65
|
+
|
|
66
|
+
with open(self._session_state_path, "r") as f:
|
|
67
|
+
data = json.load(f)
|
|
68
|
+
|
|
69
|
+
active_task = data.get("active_task")
|
|
70
|
+
if active_task is None:
|
|
71
|
+
return self._create_default_task()
|
|
72
|
+
|
|
73
|
+
# Parse command and spec_id
|
|
74
|
+
command = active_task.get("command")
|
|
75
|
+
spec_id = active_task.get("spec_id")
|
|
76
|
+
|
|
77
|
+
return AlfredTask(
|
|
78
|
+
command=command,
|
|
79
|
+
spec_id=spec_id,
|
|
80
|
+
stage=active_task.get("stage"),
|
|
81
|
+
)
|
|
82
|
+
|
|
83
|
+
except Exception as e:
|
|
84
|
+
logger.debug(f"Error reading Alfred task: {e}")
|
|
85
|
+
return self._create_default_task()
|
|
86
|
+
|
|
87
|
+
def _is_cache_valid(self) -> bool:
|
|
88
|
+
"""Check if task cache is still valid"""
|
|
89
|
+
if self._cache is None or self._cache_time is None:
|
|
90
|
+
return False
|
|
91
|
+
return datetime.now() - self._cache_time < self._cache_ttl
|
|
92
|
+
|
|
93
|
+
def _update_cache(self, task: AlfredTask) -> None:
|
|
94
|
+
"""Update task cache"""
|
|
95
|
+
self._cache = task
|
|
96
|
+
self._cache_time = datetime.now()
|
|
97
|
+
|
|
98
|
+
@staticmethod
|
|
99
|
+
def _create_default_task() -> AlfredTask:
|
|
100
|
+
"""Create default task (no active task)"""
|
|
101
|
+
return AlfredTask(
|
|
102
|
+
command=None,
|
|
103
|
+
spec_id=None,
|
|
104
|
+
stage=None,
|
|
105
|
+
)
|
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
#!/usr/bin/env python3
|
|
2
|
+
"""Atomic file operations for MoAI hooks.
|
|
3
|
+
|
|
4
|
+
Provides safe file write operations with atomic semantics
|
|
5
|
+
to prevent race conditions and data corruption.
|
|
6
|
+
"""
|
|
7
|
+
|
|
8
|
+
from __future__ import annotations
|
|
9
|
+
|
|
10
|
+
import json
|
|
11
|
+
import os
|
|
12
|
+
import tempfile
|
|
13
|
+
from pathlib import Path
|
|
14
|
+
from typing import Any
|
|
15
|
+
|
|
16
|
+
# Maximum file size for state/cache files (1MB)
|
|
17
|
+
MAX_STATE_FILE_SIZE = 1024 * 1024 # 1MB
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
def atomic_write_text(
|
|
21
|
+
file_path: Path | str,
|
|
22
|
+
content: str,
|
|
23
|
+
encoding: str = "utf-8",
|
|
24
|
+
make_dirs: bool = True,
|
|
25
|
+
) -> bool:
|
|
26
|
+
"""Atomically write text content to a file.
|
|
27
|
+
|
|
28
|
+
Uses write-to-temp-then-rename pattern to prevent race conditions
|
|
29
|
+
and partial writes from corrupting data.
|
|
30
|
+
|
|
31
|
+
Args:
|
|
32
|
+
file_path: Path to the file
|
|
33
|
+
content: Content to write
|
|
34
|
+
encoding: File encoding (default: utf-8)
|
|
35
|
+
make_dirs: Create parent directories if needed (default: True)
|
|
36
|
+
|
|
37
|
+
Returns:
|
|
38
|
+
True if write succeeded, False otherwise
|
|
39
|
+
"""
|
|
40
|
+
path = Path(file_path)
|
|
41
|
+
|
|
42
|
+
if make_dirs:
|
|
43
|
+
path.parent.mkdir(parents=True, exist_ok=True)
|
|
44
|
+
|
|
45
|
+
try:
|
|
46
|
+
# Write to temporary file first
|
|
47
|
+
fd, temp_path = tempfile.mkstemp(dir=path.parent, prefix=".tmp_", suffix=path.suffix or ".tmp")
|
|
48
|
+
try:
|
|
49
|
+
# Write content to temp file
|
|
50
|
+
with os.fdopen(fd, "w", encoding=encoding) as f:
|
|
51
|
+
f.write(content)
|
|
52
|
+
|
|
53
|
+
# Atomic rename (overwrites target if exists)
|
|
54
|
+
os.replace(temp_path, path)
|
|
55
|
+
return True
|
|
56
|
+
except Exception:
|
|
57
|
+
# Clean up temp file on error
|
|
58
|
+
try:
|
|
59
|
+
os.unlink(temp_path)
|
|
60
|
+
except OSError:
|
|
61
|
+
pass
|
|
62
|
+
return False
|
|
63
|
+
except (OSError, ValueError):
|
|
64
|
+
return False
|
|
65
|
+
|
|
66
|
+
|
|
67
|
+
def atomic_write_json(
|
|
68
|
+
file_path: Path | str,
|
|
69
|
+
data: Any,
|
|
70
|
+
indent: int = 2,
|
|
71
|
+
encoding: str = "utf-8",
|
|
72
|
+
ensure_ascii: bool = True,
|
|
73
|
+
make_dirs: bool = True,
|
|
74
|
+
) -> bool:
|
|
75
|
+
"""Atomically write JSON data to a file.
|
|
76
|
+
|
|
77
|
+
Uses write-to-temp-then-rename pattern to prevent race conditions
|
|
78
|
+
and partial writes from corrupting data.
|
|
79
|
+
|
|
80
|
+
Args:
|
|
81
|
+
file_path: Path to the file
|
|
82
|
+
data: Data to serialize as JSON
|
|
83
|
+
indent: JSON indentation (default: 2)
|
|
84
|
+
encoding: File encoding (default: utf-8)
|
|
85
|
+
ensure_ascii: Escape non-ASCII characters (default: True)
|
|
86
|
+
make_dirs: Create parent directories if needed (default: True)
|
|
87
|
+
|
|
88
|
+
Returns:
|
|
89
|
+
True if write succeeded, False otherwise
|
|
90
|
+
"""
|
|
91
|
+
path = Path(file_path)
|
|
92
|
+
|
|
93
|
+
if make_dirs:
|
|
94
|
+
path.parent.mkdir(parents=True, exist_ok=True)
|
|
95
|
+
|
|
96
|
+
try:
|
|
97
|
+
# Write to temporary file first
|
|
98
|
+
fd, temp_path = tempfile.mkstemp(dir=path.parent, prefix=".tmp_", suffix=".json")
|
|
99
|
+
try:
|
|
100
|
+
# Write JSON to temp file
|
|
101
|
+
with os.fdopen(fd, "w", encoding=encoding) as f:
|
|
102
|
+
json.dump(data, f, indent=indent, ensure_ascii=ensure_ascii)
|
|
103
|
+
|
|
104
|
+
# Atomic rename (overwrites target if exists)
|
|
105
|
+
os.replace(temp_path, path)
|
|
106
|
+
return True
|
|
107
|
+
except Exception:
|
|
108
|
+
# Clean up temp file on error
|
|
109
|
+
try:
|
|
110
|
+
os.unlink(temp_path)
|
|
111
|
+
except OSError:
|
|
112
|
+
pass
|
|
113
|
+
return False
|
|
114
|
+
except (OSError, ValueError, TypeError):
|
|
115
|
+
return False
|
|
116
|
+
|
|
117
|
+
|
|
118
|
+
__all__ = [
|
|
119
|
+
"MAX_STATE_FILE_SIZE",
|
|
120
|
+
"atomic_write_text",
|
|
121
|
+
"atomic_write_json",
|
|
122
|
+
]
|
|
@@ -70,9 +70,12 @@ def detect_risky_operation(tool_name: str, tool_args: dict[str, Any], cwd: str)
|
|
|
70
70
|
critical_files = [
|
|
71
71
|
"CLAUDE.md",
|
|
72
72
|
"config.json",
|
|
73
|
+
"config.yaml",
|
|
73
74
|
".claude/skills/moai-core-dev-guide/reference.md",
|
|
74
75
|
".claude/skills/moai-core-spec-metadata-extended/reference.md",
|
|
75
|
-
".moai/config/config.json",
|
|
76
|
+
".moai/config/config.json", # Legacy monolithic config
|
|
77
|
+
".moai/config/config.yaml", # Legacy monolithic config
|
|
78
|
+
".moai/config/sections/", # Section-based config (any file in sections/)
|
|
76
79
|
]
|
|
77
80
|
|
|
78
81
|
if any(cf in file_path for cf in critical_files):
|
|
@@ -3,9 +3,39 @@
|
|
|
3
3
|
Consolidated fallback implementations used across multiple hooks.
|
|
4
4
|
"""
|
|
5
5
|
|
|
6
|
+
from __future__ import annotations
|
|
7
|
+
|
|
6
8
|
import re
|
|
7
9
|
import statistics
|
|
8
|
-
from typing import Any
|
|
10
|
+
from typing import Any
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
def merge_configs(base: dict[str, Any], override: dict[str, Any]) -> dict[str, Any]:
|
|
14
|
+
"""Recursively merge configuration dictionaries.
|
|
15
|
+
|
|
16
|
+
Deep merges two configuration dictionaries, with override values
|
|
17
|
+
taking precedence. Nested dictionaries are merged recursively.
|
|
18
|
+
|
|
19
|
+
Args:
|
|
20
|
+
base: Base configuration dictionary
|
|
21
|
+
override: Override configuration dictionary (values take precedence)
|
|
22
|
+
|
|
23
|
+
Returns:
|
|
24
|
+
Merged configuration dictionary
|
|
25
|
+
|
|
26
|
+
Examples:
|
|
27
|
+
>>> base = {"a": 1, "b": {"c": 2}}
|
|
28
|
+
>>> override = {"b": {"d": 3}}
|
|
29
|
+
>>> merge_configs(base, override)
|
|
30
|
+
{'a': 1, 'b': {'c': 2, 'd': 3}}
|
|
31
|
+
"""
|
|
32
|
+
result = base.copy()
|
|
33
|
+
for key, value in override.items():
|
|
34
|
+
if key in result and isinstance(result[key], dict) and isinstance(value, dict):
|
|
35
|
+
result[key] = merge_configs(result[key], value)
|
|
36
|
+
else:
|
|
37
|
+
result[key] = value
|
|
38
|
+
return result
|
|
9
39
|
|
|
10
40
|
|
|
11
41
|
def format_duration(seconds: float) -> str:
|
|
@@ -28,7 +58,7 @@ def format_duration(seconds: float) -> str:
|
|
|
28
58
|
return f"{hours:.1f}h"
|
|
29
59
|
|
|
30
60
|
|
|
31
|
-
def get_summary_stats(values:
|
|
61
|
+
def get_summary_stats(values: list[float]) -> dict[str, float]:
|
|
32
62
|
"""Get summary statistics for a list of values.
|
|
33
63
|
|
|
34
64
|
Calculates mean, min, max, and standard deviation.
|
|
@@ -50,7 +80,7 @@ def get_summary_stats(values: List[float]) -> Dict[str, float]:
|
|
|
50
80
|
}
|
|
51
81
|
|
|
52
82
|
|
|
53
|
-
def is_root_whitelisted(filename: str, config:
|
|
83
|
+
def is_root_whitelisted(filename: str, config: dict[str, Any]) -> bool:
|
|
54
84
|
"""Check if file is allowed in project root.
|
|
55
85
|
|
|
56
86
|
Consolidated from pre_tool__document_management.py and session_end__auto_cleanup.py
|
|
@@ -73,7 +103,7 @@ def is_root_whitelisted(filename: str, config: Dict[str, Any]) -> bool:
|
|
|
73
103
|
return False
|
|
74
104
|
|
|
75
105
|
|
|
76
|
-
def get_file_pattern_category(filename: str, config:
|
|
106
|
+
def get_file_pattern_category(filename: str, config: dict[str, Any]) -> tuple[str, str] | None:
|
|
77
107
|
"""Match filename against patterns to determine category.
|
|
78
108
|
|
|
79
109
|
Consolidated from pre_tool__document_management.py and session_end__auto_cleanup.py
|
|
@@ -98,7 +128,7 @@ def get_file_pattern_category(filename: str, config: Dict[str, Any]) -> Optional
|
|
|
98
128
|
return None
|
|
99
129
|
|
|
100
130
|
|
|
101
|
-
def suggest_moai_location(filename: str, config:
|
|
131
|
+
def suggest_moai_location(filename: str, config: dict[str, Any]) -> str:
|
|
102
132
|
"""Suggest appropriate .moai/ location based on file pattern.
|
|
103
133
|
|
|
104
134
|
Consolidated from pre_tool__document_management.py and session_end__auto_cleanup.py
|