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/rank/py.typed
ADDED
|
File without changes
|
moai_adk/statusline/__init__.py
CHANGED
|
@@ -16,6 +16,7 @@ __version__ = "0.1.0"
|
|
|
16
16
|
from .alfred_detector import AlfredDetector, AlfredTask
|
|
17
17
|
from .config import StatuslineConfig
|
|
18
18
|
from .git_collector import GitCollector, GitInfo
|
|
19
|
+
from .memory_collector import MemoryCollector, MemoryInfo
|
|
19
20
|
from .metrics_tracker import MetricsTracker
|
|
20
21
|
from .renderer import StatuslineData, StatuslineRenderer
|
|
21
22
|
from .update_checker import UpdateChecker, UpdateInfo
|
|
@@ -27,6 +28,8 @@ __all__ = [
|
|
|
27
28
|
"StatuslineConfig",
|
|
28
29
|
"GitCollector",
|
|
29
30
|
"GitInfo",
|
|
31
|
+
"MemoryCollector",
|
|
32
|
+
"MemoryInfo",
|
|
30
33
|
"MetricsTracker",
|
|
31
34
|
"AlfredDetector",
|
|
32
35
|
"AlfredTask",
|
|
@@ -58,7 +58,7 @@ class OutputStyleDetector:
|
|
|
58
58
|
|
|
59
59
|
def __init__(self):
|
|
60
60
|
self.cache = {}
|
|
61
|
-
self.cache_ttl = 5 # Cache for 5 seconds to balance performance and accuracy
|
|
61
|
+
self.cache_ttl: float = 5.0 # Cache for 5 seconds to balance performance and accuracy
|
|
62
62
|
|
|
63
63
|
def detect_from_session_context(self, session_data: Dict[str, Any]) -> Optional[str]:
|
|
64
64
|
"""
|
|
@@ -291,7 +291,7 @@ class OutputStyleDetector:
|
|
|
291
291
|
print(f"Message pattern analysis error: {e}", file=sys.stderr)
|
|
292
292
|
return None
|
|
293
293
|
|
|
294
|
-
def get_output_style(self, session_context: Dict[str, Any] = None) -> str:
|
|
294
|
+
def get_output_style(self, session_context: Optional[Dict[str, Any]] = None) -> str:
|
|
295
295
|
"""
|
|
296
296
|
Get the current output style using all available detection methods.
|
|
297
297
|
|
|
@@ -332,8 +332,8 @@ class OutputStyleDetector:
|
|
|
332
332
|
print(f"{method_name} detection failed: {e}", file=sys.stderr)
|
|
333
333
|
continue
|
|
334
334
|
|
|
335
|
-
# Default fallback
|
|
336
|
-
return "
|
|
335
|
+
# Default fallback - Mr. Alfred is the default output style
|
|
336
|
+
return "Mr. Alfred"
|
|
337
337
|
|
|
338
338
|
|
|
339
339
|
def safe_collect_output_style() -> str:
|
|
@@ -363,7 +363,7 @@ def safe_collect_output_style() -> str:
|
|
|
363
363
|
|
|
364
364
|
except Exception as e:
|
|
365
365
|
print(f"Output style detection failed: {e}", file=sys.stderr)
|
|
366
|
-
return "
|
|
366
|
+
return "Mr. Alfred"
|
|
367
367
|
|
|
368
368
|
|
|
369
369
|
# For backward compatibility
|
moai_adk/statusline/main.py
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
# type: ignore
|
|
2
|
+
# -*- coding: utf-8 -*-
|
|
2
3
|
#!/usr/bin/env python3
|
|
3
4
|
"""
|
|
4
5
|
Claude Code Statusline Integration
|
|
@@ -125,6 +126,23 @@ def safe_collect_version() -> str:
|
|
|
125
126
|
# safe_collect_output_style function removed - no longer needed
|
|
126
127
|
|
|
127
128
|
|
|
129
|
+
def safe_collect_memory() -> str:
|
|
130
|
+
"""
|
|
131
|
+
Safely collect memory usage with fallback.
|
|
132
|
+
|
|
133
|
+
Returns:
|
|
134
|
+
Formatted memory usage string (e.g., "128MB")
|
|
135
|
+
"""
|
|
136
|
+
try:
|
|
137
|
+
from .memory_collector import MemoryCollector
|
|
138
|
+
|
|
139
|
+
collector = MemoryCollector()
|
|
140
|
+
return collector.get_display_string(mode="process")
|
|
141
|
+
except (ImportError, OSError, AttributeError, RuntimeError):
|
|
142
|
+
# Memory collector errors
|
|
143
|
+
return "N/A"
|
|
144
|
+
|
|
145
|
+
|
|
128
146
|
def safe_check_update(current_version: str) -> tuple[bool, Optional[str]]:
|
|
129
147
|
"""
|
|
130
148
|
Safely check for updates with fallback.
|
|
@@ -246,6 +264,7 @@ def build_statusline_data(session_context: dict, mode: str = "compact") -> str:
|
|
|
246
264
|
duration = safe_collect_duration()
|
|
247
265
|
active_task = safe_collect_alfred_task()
|
|
248
266
|
version = safe_collect_version()
|
|
267
|
+
memory_usage = safe_collect_memory()
|
|
249
268
|
update_available, latest_version = safe_check_update(version)
|
|
250
269
|
|
|
251
270
|
# Build StatuslineData with dynamic fields
|
|
@@ -253,7 +272,7 @@ def build_statusline_data(session_context: dict, mode: str = "compact") -> str:
|
|
|
253
272
|
model=model,
|
|
254
273
|
claude_version=claude_version,
|
|
255
274
|
version=version,
|
|
256
|
-
memory_usage=
|
|
275
|
+
memory_usage=memory_usage,
|
|
257
276
|
branch=branch,
|
|
258
277
|
git_status=git_status,
|
|
259
278
|
duration=duration,
|
|
@@ -0,0 +1,268 @@
|
|
|
1
|
+
"""
|
|
2
|
+
Memory collector for MoAI-ADK statusline
|
|
3
|
+
|
|
4
|
+
Collects memory usage information for display in the status bar.
|
|
5
|
+
Uses psutil for cross-platform memory monitoring.
|
|
6
|
+
"""
|
|
7
|
+
|
|
8
|
+
import logging
|
|
9
|
+
import os
|
|
10
|
+
from dataclasses import dataclass
|
|
11
|
+
from datetime import datetime, timedelta
|
|
12
|
+
from typing import Optional
|
|
13
|
+
|
|
14
|
+
logger = logging.getLogger(__name__)
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
@dataclass
|
|
18
|
+
class MemoryInfo:
|
|
19
|
+
"""Memory usage information"""
|
|
20
|
+
|
|
21
|
+
# Process memory (current Python process)
|
|
22
|
+
process_rss_mb: float # Resident Set Size
|
|
23
|
+
process_vms_mb: float # Virtual Memory Size
|
|
24
|
+
|
|
25
|
+
# System memory
|
|
26
|
+
system_total_mb: float
|
|
27
|
+
system_available_mb: float
|
|
28
|
+
system_percent: float
|
|
29
|
+
|
|
30
|
+
# Formatted strings for display
|
|
31
|
+
display_process: str # e.g., "128MB"
|
|
32
|
+
display_system: str # e.g., "8.2GB/16GB"
|
|
33
|
+
display_percent: str # e.g., "51%"
|
|
34
|
+
|
|
35
|
+
timestamp: datetime
|
|
36
|
+
|
|
37
|
+
|
|
38
|
+
class MemoryCollector:
|
|
39
|
+
"""
|
|
40
|
+
Memory collector for statusline display.
|
|
41
|
+
|
|
42
|
+
Features:
|
|
43
|
+
- Process memory monitoring (current Python process)
|
|
44
|
+
- System memory monitoring
|
|
45
|
+
- Caching with configurable TTL
|
|
46
|
+
- Graceful degradation on errors
|
|
47
|
+
- Multiple display format options
|
|
48
|
+
"""
|
|
49
|
+
|
|
50
|
+
# Cache configuration
|
|
51
|
+
DEFAULT_CACHE_TTL_SECONDS = 10 # Memory doesn't change rapidly
|
|
52
|
+
|
|
53
|
+
def __init__(self, cache_ttl_seconds: Optional[int] = None):
|
|
54
|
+
"""
|
|
55
|
+
Initialize memory collector.
|
|
56
|
+
|
|
57
|
+
Args:
|
|
58
|
+
cache_ttl_seconds: Cache TTL in seconds. If None, uses default.
|
|
59
|
+
"""
|
|
60
|
+
self._cache_ttl = timedelta(seconds=cache_ttl_seconds or self.DEFAULT_CACHE_TTL_SECONDS)
|
|
61
|
+
self._cache: Optional[MemoryInfo] = None
|
|
62
|
+
self._cache_time: Optional[datetime] = None
|
|
63
|
+
self._logger = logging.getLogger(__name__)
|
|
64
|
+
|
|
65
|
+
# Check if psutil is available
|
|
66
|
+
self._psutil_available = self._check_psutil()
|
|
67
|
+
|
|
68
|
+
def _check_psutil(self) -> bool:
|
|
69
|
+
"""Check if psutil is available."""
|
|
70
|
+
try:
|
|
71
|
+
import psutil # noqa: F401
|
|
72
|
+
|
|
73
|
+
return True
|
|
74
|
+
except ImportError:
|
|
75
|
+
self._logger.warning("psutil not available, memory monitoring disabled")
|
|
76
|
+
return False
|
|
77
|
+
|
|
78
|
+
def get_memory_info(self, force_refresh: bool = False) -> Optional[MemoryInfo]:
|
|
79
|
+
"""
|
|
80
|
+
Get memory usage information.
|
|
81
|
+
|
|
82
|
+
Args:
|
|
83
|
+
force_refresh: If True, bypass cache and force fresh collection
|
|
84
|
+
|
|
85
|
+
Returns:
|
|
86
|
+
MemoryInfo object or None if collection fails
|
|
87
|
+
"""
|
|
88
|
+
if not self._psutil_available:
|
|
89
|
+
return None
|
|
90
|
+
|
|
91
|
+
# Check cache
|
|
92
|
+
if not force_refresh and self._is_cache_valid():
|
|
93
|
+
return self._cache
|
|
94
|
+
|
|
95
|
+
try:
|
|
96
|
+
memory_info = self._collect_memory_info()
|
|
97
|
+
self._update_cache(memory_info)
|
|
98
|
+
return memory_info
|
|
99
|
+
except Exception as e:
|
|
100
|
+
self._logger.error(f"Error collecting memory info: {e}")
|
|
101
|
+
return self._cache # Return stale cache on error
|
|
102
|
+
|
|
103
|
+
def get_display_string(self, mode: str = "process", force_refresh: bool = False) -> str:
|
|
104
|
+
"""
|
|
105
|
+
Get formatted memory string for statusline display.
|
|
106
|
+
|
|
107
|
+
Args:
|
|
108
|
+
mode: Display mode
|
|
109
|
+
- "process": Process memory (e.g., "128MB")
|
|
110
|
+
- "system": System memory usage (e.g., "8.2GB/16GB")
|
|
111
|
+
- "percent": System memory percentage (e.g., "51%")
|
|
112
|
+
- "compact": Process memory compact (e.g., "128M")
|
|
113
|
+
force_refresh: If True, bypass cache
|
|
114
|
+
|
|
115
|
+
Returns:
|
|
116
|
+
Formatted memory string, or "N/A" on error
|
|
117
|
+
"""
|
|
118
|
+
memory_info = self.get_memory_info(force_refresh)
|
|
119
|
+
|
|
120
|
+
if memory_info is None:
|
|
121
|
+
return "N/A"
|
|
122
|
+
|
|
123
|
+
if mode == "process":
|
|
124
|
+
return memory_info.display_process
|
|
125
|
+
elif mode == "system":
|
|
126
|
+
return memory_info.display_system
|
|
127
|
+
elif mode == "percent":
|
|
128
|
+
return memory_info.display_percent
|
|
129
|
+
elif mode == "compact":
|
|
130
|
+
# Compact format without "MB" suffix
|
|
131
|
+
return self._format_compact(memory_info.process_rss_mb)
|
|
132
|
+
else:
|
|
133
|
+
return memory_info.display_process
|
|
134
|
+
|
|
135
|
+
def _collect_memory_info(self) -> MemoryInfo:
|
|
136
|
+
"""
|
|
137
|
+
Collect memory information using psutil.
|
|
138
|
+
|
|
139
|
+
Returns:
|
|
140
|
+
MemoryInfo object with current memory usage
|
|
141
|
+
"""
|
|
142
|
+
import psutil
|
|
143
|
+
|
|
144
|
+
# Get current process info
|
|
145
|
+
process = psutil.Process(os.getpid())
|
|
146
|
+
process_memory = process.memory_info()
|
|
147
|
+
|
|
148
|
+
# Convert to MB
|
|
149
|
+
process_rss_mb = process_memory.rss / (1024 * 1024)
|
|
150
|
+
process_vms_mb = process_memory.vms / (1024 * 1024)
|
|
151
|
+
|
|
152
|
+
# Get system memory info
|
|
153
|
+
system_memory = psutil.virtual_memory()
|
|
154
|
+
system_total_mb = system_memory.total / (1024 * 1024)
|
|
155
|
+
system_available_mb = system_memory.available / (1024 * 1024)
|
|
156
|
+
system_percent = system_memory.percent
|
|
157
|
+
|
|
158
|
+
# Format display strings
|
|
159
|
+
display_process = self._format_size(process_rss_mb)
|
|
160
|
+
display_system = (
|
|
161
|
+
f"{self._format_size(system_total_mb - system_available_mb)}/{self._format_size(system_total_mb)}"
|
|
162
|
+
)
|
|
163
|
+
display_percent = f"{system_percent:.0f}%"
|
|
164
|
+
|
|
165
|
+
return MemoryInfo(
|
|
166
|
+
process_rss_mb=process_rss_mb,
|
|
167
|
+
process_vms_mb=process_vms_mb,
|
|
168
|
+
system_total_mb=system_total_mb,
|
|
169
|
+
system_available_mb=system_available_mb,
|
|
170
|
+
system_percent=system_percent,
|
|
171
|
+
display_process=display_process,
|
|
172
|
+
display_system=display_system,
|
|
173
|
+
display_percent=display_percent,
|
|
174
|
+
timestamp=datetime.now(),
|
|
175
|
+
)
|
|
176
|
+
|
|
177
|
+
def _format_size(self, size_mb: float) -> str:
|
|
178
|
+
"""
|
|
179
|
+
Format size in MB to human-readable string.
|
|
180
|
+
|
|
181
|
+
Args:
|
|
182
|
+
size_mb: Size in megabytes
|
|
183
|
+
|
|
184
|
+
Returns:
|
|
185
|
+
Formatted string (e.g., "128MB", "1.2GB")
|
|
186
|
+
"""
|
|
187
|
+
if size_mb >= 1024:
|
|
188
|
+
return f"{size_mb / 1024:.1f}GB"
|
|
189
|
+
elif size_mb >= 100:
|
|
190
|
+
return f"{size_mb:.0f}MB"
|
|
191
|
+
elif size_mb >= 10:
|
|
192
|
+
return f"{size_mb:.1f}MB"
|
|
193
|
+
else:
|
|
194
|
+
return f"{size_mb:.2f}MB"
|
|
195
|
+
|
|
196
|
+
def _format_compact(self, size_mb: float) -> str:
|
|
197
|
+
"""
|
|
198
|
+
Format size in compact format for tight spaces.
|
|
199
|
+
|
|
200
|
+
Args:
|
|
201
|
+
size_mb: Size in megabytes
|
|
202
|
+
|
|
203
|
+
Returns:
|
|
204
|
+
Compact formatted string (e.g., "128M", "1.2G")
|
|
205
|
+
"""
|
|
206
|
+
if size_mb >= 1024:
|
|
207
|
+
return f"{size_mb / 1024:.1f}G"
|
|
208
|
+
else:
|
|
209
|
+
return f"{size_mb:.0f}M"
|
|
210
|
+
|
|
211
|
+
def _is_cache_valid(self) -> bool:
|
|
212
|
+
"""Check if cache is still valid."""
|
|
213
|
+
if self._cache is None or self._cache_time is None:
|
|
214
|
+
return False
|
|
215
|
+
|
|
216
|
+
age = datetime.now() - self._cache_time
|
|
217
|
+
return age < self._cache_ttl
|
|
218
|
+
|
|
219
|
+
def _update_cache(self, memory_info: MemoryInfo) -> None:
|
|
220
|
+
"""Update cache with new memory info."""
|
|
221
|
+
self._cache = memory_info
|
|
222
|
+
self._cache_time = datetime.now()
|
|
223
|
+
|
|
224
|
+
def clear_cache(self) -> None:
|
|
225
|
+
"""Clear the memory cache."""
|
|
226
|
+
self._cache = None
|
|
227
|
+
self._cache_time = None
|
|
228
|
+
|
|
229
|
+
def get_cache_age_seconds(self) -> Optional[float]:
|
|
230
|
+
"""
|
|
231
|
+
Get cache age in seconds.
|
|
232
|
+
|
|
233
|
+
Returns:
|
|
234
|
+
Cache age in seconds, or None if no cache
|
|
235
|
+
"""
|
|
236
|
+
if self._cache_time is None:
|
|
237
|
+
return None
|
|
238
|
+
return (datetime.now() - self._cache_time).total_seconds()
|
|
239
|
+
|
|
240
|
+
|
|
241
|
+
# Singleton instance for convenience
|
|
242
|
+
_default_collector: Optional[MemoryCollector] = None
|
|
243
|
+
|
|
244
|
+
|
|
245
|
+
def get_memory_collector() -> MemoryCollector:
|
|
246
|
+
"""
|
|
247
|
+
Get the default memory collector instance.
|
|
248
|
+
|
|
249
|
+
Returns:
|
|
250
|
+
MemoryCollector singleton instance
|
|
251
|
+
"""
|
|
252
|
+
global _default_collector
|
|
253
|
+
if _default_collector is None:
|
|
254
|
+
_default_collector = MemoryCollector()
|
|
255
|
+
return _default_collector
|
|
256
|
+
|
|
257
|
+
|
|
258
|
+
def get_memory_display(mode: str = "process") -> str:
|
|
259
|
+
"""
|
|
260
|
+
Convenience function to get memory display string.
|
|
261
|
+
|
|
262
|
+
Args:
|
|
263
|
+
mode: Display mode ("process", "system", "percent", "compact")
|
|
264
|
+
|
|
265
|
+
Returns:
|
|
266
|
+
Formatted memory string
|
|
267
|
+
"""
|
|
268
|
+
return get_memory_collector().get_display_string(mode)
|
moai_adk/statusline/renderer.py
CHANGED
|
@@ -4,6 +4,7 @@ Statusline renderer for Claude Code status display
|
|
|
4
4
|
"""
|
|
5
5
|
|
|
6
6
|
# type: ignore
|
|
7
|
+
# -*- coding: utf-8 -*-
|
|
7
8
|
|
|
8
9
|
from dataclasses import dataclass
|
|
9
10
|
from typing import List
|
|
@@ -67,7 +68,7 @@ class StatuslineRenderer:
|
|
|
67
68
|
|
|
68
69
|
def _render_compact(self, data: StatuslineData) -> str:
|
|
69
70
|
"""
|
|
70
|
-
Render compact mode: 🤖 Model |
|
|
71
|
+
Render compact mode: 🤖 Model | 💰 Context | 💬 Style | 📁 Directory | 📊 Changes | 💾 Memory | 🔀 Branch
|
|
71
72
|
Constraint: <= 80 characters
|
|
72
73
|
|
|
73
74
|
Args:
|
|
@@ -91,7 +92,7 @@ class StatuslineRenderer:
|
|
|
91
92
|
def _build_compact_parts(self, data: StatuslineData) -> List[str]:
|
|
92
93
|
"""
|
|
93
94
|
Build parts list for compact mode with labeled sections
|
|
94
|
-
Format: 🤖 Model |
|
|
95
|
+
Format: 🤖 Model | 💰 Context | 💬 Style | 📁 Directory | 📊 Changes | 💾 Memory | 🔀 Branch
|
|
95
96
|
|
|
96
97
|
Args:
|
|
97
98
|
data: StatuslineData instance
|
|
@@ -101,32 +102,35 @@ class StatuslineRenderer:
|
|
|
101
102
|
"""
|
|
102
103
|
parts = []
|
|
103
104
|
|
|
104
|
-
# Add model
|
|
105
|
+
# 1. Add model first (cloud service context)
|
|
105
106
|
if self._display_config.model:
|
|
106
107
|
parts.append(f"🤖 {data.model}")
|
|
107
108
|
|
|
108
|
-
# Add
|
|
109
|
-
if data.claude_version:
|
|
110
|
-
claude_ver_str = data.claude_version if data.claude_version.startswith("v") else f"v{data.claude_version}"
|
|
111
|
-
parts.append(f"🔅 {claude_ver_str}")
|
|
112
|
-
|
|
113
|
-
# Add context window usage if available (💰 icon)
|
|
109
|
+
# 2. Add context window usage if available
|
|
114
110
|
if data.context_window:
|
|
115
111
|
parts.append(f"💰 {data.context_window}")
|
|
116
112
|
|
|
117
|
-
# Add output style if not empty
|
|
113
|
+
# 3. Add output style if not empty
|
|
118
114
|
if data.output_style:
|
|
119
115
|
parts.append(f"💬 {data.output_style}")
|
|
120
116
|
|
|
121
|
-
# Add
|
|
117
|
+
# 4. Add directory (project context)
|
|
118
|
+
if self._display_config.directory and data.directory:
|
|
119
|
+
parts.append(f"📁 {data.directory}")
|
|
120
|
+
|
|
121
|
+
# 5. Add git status if display enabled and status not empty
|
|
122
122
|
if self._display_config.git_status and data.git_status:
|
|
123
123
|
parts.append(f"📊 {data.git_status}")
|
|
124
124
|
|
|
125
|
-
# Add
|
|
125
|
+
# 6. Add memory usage if display enabled
|
|
126
|
+
if self._display_config.memory_usage and data.memory_usage:
|
|
127
|
+
parts.append(f"💾 {data.memory_usage}")
|
|
128
|
+
|
|
129
|
+
# 7. Add Git branch (development context)
|
|
126
130
|
if self._display_config.branch:
|
|
127
131
|
parts.append(f"🔀 {data.branch}")
|
|
128
132
|
|
|
129
|
-
# Add active_task if display enabled and not empty
|
|
133
|
+
# 8. Add active_task if display enabled and not empty
|
|
130
134
|
if self._display_config.active_task and data.active_task.strip():
|
|
131
135
|
parts.append(data.active_task)
|
|
132
136
|
|
|
@@ -135,7 +139,7 @@ class StatuslineRenderer:
|
|
|
135
139
|
def _fit_to_constraint(self, data: StatuslineData, max_length: int) -> str:
|
|
136
140
|
"""
|
|
137
141
|
Fit statusline to character constraint by truncating
|
|
138
|
-
Format: 🤖 Model |
|
|
142
|
+
Format: 🤖 Model | 💰 Context | 💬 Style | 📁 Directory | 📊 Changes | 💾 Memory | 🔀 Branch
|
|
139
143
|
|
|
140
144
|
Args:
|
|
141
145
|
data: StatuslineData instance
|
|
@@ -146,12 +150,10 @@ class StatuslineRenderer:
|
|
|
146
150
|
"""
|
|
147
151
|
truncated_branch = self._truncate_branch(data.branch, max_length=30)
|
|
148
152
|
|
|
149
|
-
# Build parts list
|
|
150
|
-
parts = [
|
|
153
|
+
# Build parts list in new order
|
|
154
|
+
parts = []
|
|
151
155
|
|
|
152
|
-
|
|
153
|
-
claude_ver_str = data.claude_version if data.claude_version.startswith("v") else f"v{data.claude_version}"
|
|
154
|
-
parts.append(f"🔅 {claude_ver_str}")
|
|
156
|
+
parts.append(f"🤖 {data.model}")
|
|
155
157
|
|
|
156
158
|
if data.context_window:
|
|
157
159
|
parts.append(f"💰 {data.context_window}")
|
|
@@ -159,9 +161,15 @@ class StatuslineRenderer:
|
|
|
159
161
|
if data.output_style:
|
|
160
162
|
parts.append(f"💬 {data.output_style}")
|
|
161
163
|
|
|
164
|
+
if self._display_config.directory and data.directory:
|
|
165
|
+
parts.append(f"📁 {data.directory}")
|
|
166
|
+
|
|
162
167
|
if self._display_config.git_status and data.git_status:
|
|
163
168
|
parts.append(f"📊 {data.git_status}")
|
|
164
169
|
|
|
170
|
+
if self._display_config.memory_usage and data.memory_usage:
|
|
171
|
+
parts.append(f"💾 {data.memory_usage}")
|
|
172
|
+
|
|
165
173
|
parts.append(f"🔀 {truncated_branch}")
|
|
166
174
|
|
|
167
175
|
if data.active_task.strip():
|
|
@@ -172,23 +180,22 @@ class StatuslineRenderer:
|
|
|
172
180
|
# If still too long, try more aggressive branch truncation
|
|
173
181
|
if len(result) > max_length:
|
|
174
182
|
truncated_branch = self._truncate_branch(data.branch, max_length=12)
|
|
175
|
-
parts = [
|
|
176
|
-
|
|
177
|
-
if data.claude_version:
|
|
178
|
-
claude_ver_str = (
|
|
179
|
-
data.claude_version if data.claude_version.startswith("v") else f"v{data.claude_version}"
|
|
180
|
-
)
|
|
181
|
-
parts.append(f"🔅 {claude_ver_str}")
|
|
183
|
+
parts = []
|
|
184
|
+
parts.append(f"🤖 {data.model}")
|
|
182
185
|
if data.context_window:
|
|
183
186
|
parts.append(f"💰 {data.context_window}")
|
|
184
187
|
if data.output_style:
|
|
185
188
|
parts.append(f"💬 {data.output_style}")
|
|
189
|
+
if self._display_config.directory and data.directory:
|
|
190
|
+
parts.append(f"📁 {data.directory}")
|
|
186
191
|
if data.git_status:
|
|
187
192
|
parts.append(f"📊 {data.git_status}")
|
|
193
|
+
if self._display_config.memory_usage and data.memory_usage:
|
|
194
|
+
parts.append(f"💾 {data.memory_usage}")
|
|
188
195
|
parts.append(f"🔀 {truncated_branch}")
|
|
189
196
|
result = self._format_config.separator.join(parts)
|
|
190
197
|
|
|
191
|
-
# If still too long, remove output_style
|
|
198
|
+
# If still too long, remove output_style and memory_usage
|
|
192
199
|
if len(result) > max_length:
|
|
193
200
|
parts = [f"🤖 {data.model}"]
|
|
194
201
|
if data.context_window:
|
|
@@ -208,7 +215,7 @@ class StatuslineRenderer:
|
|
|
208
215
|
"""
|
|
209
216
|
Render extended mode: Full path and detailed info with labels
|
|
210
217
|
Constraint: <= 120 characters
|
|
211
|
-
Format: 🤖 Model |
|
|
218
|
+
Format: 🤖 Model | 💰 Context | 💬 Style | 📁 Directory | 📊 Changes | 💾 Memory | 🔀 Branch
|
|
212
219
|
|
|
213
220
|
Args:
|
|
214
221
|
data: StatuslineData instance
|
|
@@ -218,28 +225,38 @@ class StatuslineRenderer:
|
|
|
218
225
|
"""
|
|
219
226
|
branch = self._truncate_branch(data.branch, max_length=30)
|
|
220
227
|
|
|
221
|
-
# Build parts list
|
|
228
|
+
# Build parts list in new order
|
|
222
229
|
parts = []
|
|
223
230
|
|
|
231
|
+
# 1. Model first
|
|
224
232
|
if self._display_config.model:
|
|
225
233
|
parts.append(f"🤖 {data.model}")
|
|
226
234
|
|
|
227
|
-
|
|
228
|
-
claude_ver_str = data.claude_version if data.claude_version.startswith("v") else f"v{data.claude_version}"
|
|
229
|
-
parts.append(f"🔅 {claude_ver_str}")
|
|
230
|
-
|
|
235
|
+
# 2. Context window
|
|
231
236
|
if data.context_window:
|
|
232
237
|
parts.append(f"💰 {data.context_window}")
|
|
233
238
|
|
|
239
|
+
# 3. Output style
|
|
234
240
|
if data.output_style:
|
|
235
241
|
parts.append(f"💬 {data.output_style}")
|
|
236
242
|
|
|
243
|
+
# 4. Directory
|
|
244
|
+
if self._display_config.directory and data.directory:
|
|
245
|
+
parts.append(f"📁 {data.directory}")
|
|
246
|
+
|
|
247
|
+
# 5. Git status
|
|
237
248
|
if self._display_config.git_status and data.git_status:
|
|
238
249
|
parts.append(f"📊 {data.git_status}")
|
|
239
250
|
|
|
251
|
+
# 6. Memory usage
|
|
252
|
+
if self._display_config.memory_usage and data.memory_usage:
|
|
253
|
+
parts.append(f"💾 {data.memory_usage}")
|
|
254
|
+
|
|
255
|
+
# 7. Git branch
|
|
240
256
|
if self._display_config.branch:
|
|
241
257
|
parts.append(f"🔀 {branch}")
|
|
242
258
|
|
|
259
|
+
# 8. Active task
|
|
243
260
|
if self._display_config.active_task and data.active_task.strip():
|
|
244
261
|
parts.append(data.active_task)
|
|
245
262
|
|
|
@@ -251,17 +268,16 @@ class StatuslineRenderer:
|
|
|
251
268
|
parts = []
|
|
252
269
|
if self._display_config.model:
|
|
253
270
|
parts.append(f"🤖 {data.model}")
|
|
254
|
-
if data.claude_version:
|
|
255
|
-
claude_ver_str = (
|
|
256
|
-
data.claude_version if data.claude_version.startswith("v") else f"v{data.claude_version}"
|
|
257
|
-
)
|
|
258
|
-
parts.append(f"🔅 {claude_ver_str}")
|
|
259
271
|
if data.context_window:
|
|
260
272
|
parts.append(f"💰 {data.context_window}")
|
|
261
273
|
if data.output_style:
|
|
262
274
|
parts.append(f"💬 {data.output_style}")
|
|
275
|
+
if self._display_config.directory and data.directory:
|
|
276
|
+
parts.append(f"📁 {data.directory}")
|
|
263
277
|
if data.git_status:
|
|
264
278
|
parts.append(f"📊 {data.git_status}")
|
|
279
|
+
if self._display_config.memory_usage and data.memory_usage:
|
|
280
|
+
parts.append(f"💾 {data.memory_usage}")
|
|
265
281
|
parts.append(f"🔀 {branch}")
|
|
266
282
|
result = self._format_config.separator.join(parts)
|
|
267
283
|
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
"""TAG System v2.0 for MoAI-ADK.
|
|
2
|
+
|
|
3
|
+
Provides TAG annotation, validation, parsing, and linkage management
|
|
4
|
+
for SPEC-First TDD workflow.
|
|
5
|
+
"""
|
|
6
|
+
|
|
7
|
+
from .linkage import (
|
|
8
|
+
LinkageManager,
|
|
9
|
+
spec_document_exists,
|
|
10
|
+
)
|
|
11
|
+
from .parser import (
|
|
12
|
+
extract_tags_from_directory,
|
|
13
|
+
extract_tags_from_file,
|
|
14
|
+
extract_tags_from_files,
|
|
15
|
+
extract_tags_from_source,
|
|
16
|
+
)
|
|
17
|
+
from .validator import (
|
|
18
|
+
DEFAULT_VERB,
|
|
19
|
+
TAG,
|
|
20
|
+
VALID_VERBS,
|
|
21
|
+
get_default_verb,
|
|
22
|
+
parse_tag_string,
|
|
23
|
+
validate_spec_id_format,
|
|
24
|
+
validate_tag,
|
|
25
|
+
validate_verb,
|
|
26
|
+
)
|
|
27
|
+
|
|
28
|
+
__all__ = [
|
|
29
|
+
# Validator
|
|
30
|
+
"TAG",
|
|
31
|
+
"VALID_VERBS",
|
|
32
|
+
"DEFAULT_VERB",
|
|
33
|
+
"validate_spec_id_format",
|
|
34
|
+
"validate_verb",
|
|
35
|
+
"get_default_verb",
|
|
36
|
+
"validate_tag",
|
|
37
|
+
"parse_tag_string",
|
|
38
|
+
# Parser
|
|
39
|
+
"extract_tags_from_source",
|
|
40
|
+
"extract_tags_from_file",
|
|
41
|
+
"extract_tags_from_files",
|
|
42
|
+
"extract_tags_from_directory",
|
|
43
|
+
# Linkage
|
|
44
|
+
"LinkageManager",
|
|
45
|
+
"spec_document_exists",
|
|
46
|
+
]
|
|
47
|
+
|
|
48
|
+
__version__ = "2.0.0"
|