moai-adk 0.25.4__py3-none-any.whl → 0.32.8__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of moai-adk might be problematic. Click here for more details.

Files changed (378) hide show
  1. moai_adk/__init__.py +2 -5
  2. moai_adk/__main__.py +114 -82
  3. moai_adk/cli/__init__.py +6 -1
  4. moai_adk/cli/commands/__init__.py +1 -3
  5. moai_adk/cli/commands/analyze.py +5 -16
  6. moai_adk/cli/commands/doctor.py +6 -18
  7. moai_adk/cli/commands/init.py +56 -125
  8. moai_adk/cli/commands/language.py +14 -35
  9. moai_adk/cli/commands/status.py +9 -15
  10. moai_adk/cli/commands/update.py +1555 -190
  11. moai_adk/cli/prompts/init_prompts.py +112 -56
  12. moai_adk/cli/spec_status.py +263 -0
  13. moai_adk/cli/ui/__init__.py +44 -0
  14. moai_adk/cli/ui/progress.py +422 -0
  15. moai_adk/cli/ui/prompts.py +389 -0
  16. moai_adk/cli/ui/theme.py +129 -0
  17. moai_adk/cli/worktree/__init__.py +27 -0
  18. moai_adk/cli/worktree/__main__.py +31 -0
  19. moai_adk/cli/worktree/cli.py +672 -0
  20. moai_adk/cli/worktree/exceptions.py +89 -0
  21. moai_adk/cli/worktree/manager.py +490 -0
  22. moai_adk/cli/worktree/models.py +65 -0
  23. moai_adk/cli/worktree/registry.py +128 -0
  24. moai_adk/core/PHASE2_OPTIMIZATIONS.md +467 -0
  25. moai_adk/core/analysis/session_analyzer.py +17 -56
  26. moai_adk/core/claude_integration.py +26 -54
  27. moai_adk/core/command_helpers.py +10 -10
  28. moai_adk/core/comprehensive_monitoring_system.py +1183 -0
  29. moai_adk/core/config/auto_spec_config.py +5 -11
  30. moai_adk/core/config/migration.py +19 -9
  31. moai_adk/core/config/unified.py +436 -0
  32. moai_adk/core/context_manager.py +6 -12
  33. moai_adk/core/enterprise_features.py +1404 -0
  34. moai_adk/core/error_recovery_system.py +725 -112
  35. moai_adk/core/event_driven_hook_system.py +1371 -0
  36. moai_adk/core/git/__init__.py +8 -0
  37. moai_adk/core/git/branch_manager.py +3 -11
  38. moai_adk/core/git/checkpoint.py +1 -3
  39. moai_adk/core/git/conflict_detector.py +413 -0
  40. moai_adk/core/git/manager.py +91 -1
  41. moai_adk/core/hooks/post_tool_auto_spec_completion.py +56 -80
  42. moai_adk/core/input_validation_middleware.py +1006 -0
  43. moai_adk/core/integration/engine.py +6 -18
  44. moai_adk/core/integration/integration_tester.py +10 -9
  45. moai_adk/core/integration/utils.py +1 -1
  46. moai_adk/core/issue_creator.py +10 -28
  47. moai_adk/core/jit_context_loader.py +956 -0
  48. moai_adk/core/jit_enhanced_hook_manager.py +1987 -0
  49. moai_adk/core/language_config_resolver.py +485 -0
  50. moai_adk/core/language_validator.py +28 -41
  51. moai_adk/core/mcp/setup.py +15 -12
  52. moai_adk/core/merge/__init__.py +9 -0
  53. moai_adk/core/merge/analyzer.py +481 -0
  54. moai_adk/core/migration/alfred_to_moai_migrator.py +383 -0
  55. moai_adk/core/migration/backup_manager.py +78 -9
  56. moai_adk/core/migration/custom_element_scanner.py +358 -0
  57. moai_adk/core/migration/file_migrator.py +8 -17
  58. moai_adk/core/migration/interactive_checkbox_ui.py +488 -0
  59. moai_adk/core/migration/selective_restorer.py +470 -0
  60. moai_adk/core/migration/template_utils.py +74 -0
  61. moai_adk/core/migration/user_selection_ui.py +338 -0
  62. moai_adk/core/migration/version_detector.py +6 -10
  63. moai_adk/core/migration/version_migrator.py +3 -3
  64. moai_adk/core/performance/cache_system.py +8 -10
  65. moai_adk/core/phase_optimized_hook_scheduler.py +879 -0
  66. moai_adk/core/project/checker.py +2 -4
  67. moai_adk/core/project/detector.py +1 -3
  68. moai_adk/core/project/initializer.py +135 -23
  69. moai_adk/core/project/phase_executor.py +54 -81
  70. moai_adk/core/project/validator.py +6 -12
  71. moai_adk/core/quality/trust_checker.py +9 -27
  72. moai_adk/core/realtime_monitoring_dashboard.py +1724 -0
  73. moai_adk/core/robust_json_parser.py +611 -0
  74. moai_adk/core/rollback_manager.py +73 -148
  75. moai_adk/core/session_manager.py +10 -26
  76. moai_adk/core/skill_loading_system.py +579 -0
  77. moai_adk/core/spec/confidence_scoring.py +31 -100
  78. moai_adk/core/spec/ears_template_engine.py +351 -286
  79. moai_adk/core/spec/quality_validator.py +35 -69
  80. moai_adk/core/spec_status_manager.py +64 -74
  81. moai_adk/core/template/backup.py +45 -20
  82. moai_adk/core/template/config.py +112 -39
  83. moai_adk/core/template/merger.py +11 -19
  84. moai_adk/core/template/processor.py +253 -149
  85. moai_adk/core/template_engine.py +73 -40
  86. moai_adk/core/template_variable_synchronizer.py +417 -0
  87. moai_adk/core/unified_permission_manager.py +745 -0
  88. moai_adk/core/user_behavior_analytics.py +851 -0
  89. moai_adk/core/version_sync.py +429 -0
  90. moai_adk/foundation/__init__.py +56 -0
  91. moai_adk/foundation/backend.py +1027 -0
  92. moai_adk/foundation/database.py +1115 -0
  93. moai_adk/foundation/devops.py +1585 -0
  94. moai_adk/foundation/ears.py +431 -0
  95. moai_adk/foundation/frontend.py +870 -0
  96. moai_adk/foundation/git/commit_templates.py +4 -12
  97. moai_adk/foundation/git.py +376 -0
  98. moai_adk/foundation/langs.py +484 -0
  99. moai_adk/foundation/ml_ops.py +1162 -0
  100. moai_adk/foundation/testing.py +1524 -0
  101. moai_adk/foundation/trust/trust_principles.py +23 -72
  102. moai_adk/foundation/trust/validation_checklist.py +57 -162
  103. moai_adk/project/__init__.py +0 -0
  104. moai_adk/project/configuration.py +1084 -0
  105. moai_adk/project/documentation.py +566 -0
  106. moai_adk/project/schema.py +447 -0
  107. moai_adk/statusline/alfred_detector.py +1 -3
  108. moai_adk/statusline/config.py +13 -4
  109. moai_adk/statusline/enhanced_output_style_detector.py +23 -15
  110. moai_adk/statusline/main.py +51 -15
  111. moai_adk/statusline/renderer.py +104 -48
  112. moai_adk/statusline/update_checker.py +3 -9
  113. moai_adk/statusline/version_reader.py +140 -46
  114. moai_adk/templates/.claude/agents/moai/ai-nano-banana.md +549 -0
  115. moai_adk/templates/.claude/agents/moai/builder-agent.md +445 -0
  116. moai_adk/templates/.claude/agents/moai/builder-command.md +1132 -0
  117. moai_adk/templates/.claude/agents/moai/builder-skill.md +601 -0
  118. moai_adk/templates/.claude/agents/moai/expert-backend.md +831 -0
  119. moai_adk/templates/.claude/agents/moai/expert-database.md +774 -0
  120. moai_adk/templates/.claude/agents/moai/expert-debug.md +396 -0
  121. moai_adk/templates/.claude/agents/moai/expert-devops.md +711 -0
  122. moai_adk/templates/.claude/agents/moai/expert-frontend.md +666 -0
  123. moai_adk/templates/.claude/agents/moai/expert-security.md +474 -0
  124. moai_adk/templates/.claude/agents/moai/expert-uiux.md +1038 -0
  125. moai_adk/templates/.claude/agents/moai/manager-claude-code.md +429 -0
  126. moai_adk/templates/.claude/agents/moai/manager-docs.md +570 -0
  127. moai_adk/templates/.claude/agents/moai/manager-git.md +937 -0
  128. moai_adk/templates/.claude/agents/moai/manager-project.md +891 -0
  129. moai_adk/templates/.claude/agents/moai/manager-quality.md +598 -0
  130. moai_adk/templates/.claude/agents/moai/manager-spec.md +713 -0
  131. moai_adk/templates/.claude/agents/moai/manager-strategy.md +600 -0
  132. moai_adk/templates/.claude/agents/moai/manager-tdd.md +603 -0
  133. moai_adk/templates/.claude/agents/moai/mcp-context7.md +369 -0
  134. moai_adk/templates/.claude/agents/moai/mcp-figma.md +1567 -0
  135. moai_adk/templates/.claude/agents/moai/mcp-notion.md +749 -0
  136. moai_adk/templates/.claude/agents/moai/mcp-playwright.md +427 -0
  137. moai_adk/templates/.claude/agents/moai/mcp-sequential-thinking.md +994 -0
  138. moai_adk/templates/.claude/commands/moai/0-project.md +1143 -0
  139. moai_adk/templates/.claude/commands/moai/1-plan.md +1435 -0
  140. moai_adk/templates/.claude/commands/moai/2-run.md +883 -0
  141. moai_adk/templates/.claude/commands/moai/3-sync.md +993 -0
  142. moai_adk/templates/.claude/commands/moai/9-feedback.md +314 -0
  143. moai_adk/templates/.claude/hooks/__init__.py +8 -0
  144. moai_adk/templates/.claude/hooks/moai/__init__.py +8 -0
  145. moai_adk/templates/.claude/hooks/moai/lib/__init__.py +85 -0
  146. moai_adk/templates/.claude/hooks/moai/lib/checkpoint.py +244 -0
  147. moai_adk/templates/.claude/hooks/moai/lib/common.py +131 -0
  148. moai_adk/templates/.claude/hooks/moai/lib/config_manager.py +446 -0
  149. moai_adk/templates/.claude/hooks/moai/lib/config_validator.py +639 -0
  150. moai_adk/templates/.claude/hooks/moai/lib/example_config.json +104 -0
  151. moai_adk/templates/.claude/hooks/moai/lib/git_operations_manager.py +590 -0
  152. moai_adk/templates/.claude/hooks/moai/lib/language_validator.py +317 -0
  153. moai_adk/templates/.claude/hooks/moai/lib/models.py +102 -0
  154. moai_adk/templates/.claude/hooks/moai/lib/path_utils.py +28 -0
  155. moai_adk/templates/.claude/hooks/moai/lib/project.py +768 -0
  156. moai_adk/templates/.claude/hooks/moai/lib/test_hooks_improvements.py +443 -0
  157. moai_adk/templates/.claude/hooks/moai/lib/timeout.py +160 -0
  158. moai_adk/templates/.claude/hooks/moai/lib/unified_timeout_manager.py +530 -0
  159. moai_adk/templates/.claude/hooks/moai/session_end__auto_cleanup.py +862 -0
  160. moai_adk/templates/.claude/hooks/moai/session_start__show_project_info.py +921 -0
  161. moai_adk/templates/.claude/output-styles/moai/r2d2.md +380 -0
  162. moai_adk/templates/.claude/output-styles/moai/yoda.md +338 -0
  163. moai_adk/templates/.claude/settings.json +172 -0
  164. moai_adk/templates/.claude/skills/moai-docs-generation/SKILL.md +247 -0
  165. moai_adk/templates/.claude/skills/moai-docs-generation/modules/README.md +44 -0
  166. moai_adk/templates/.claude/skills/moai-docs-generation/modules/api-documentation.md +130 -0
  167. moai_adk/templates/.claude/skills/moai-docs-generation/modules/code-documentation.md +152 -0
  168. moai_adk/templates/.claude/skills/moai-docs-generation/modules/multi-format-output.md +178 -0
  169. moai_adk/templates/.claude/skills/moai-docs-generation/modules/user-guides.md +147 -0
  170. moai_adk/templates/.claude/skills/moai-domain-backend/SKILL.md +319 -0
  171. moai_adk/templates/.claude/skills/moai-domain-database/SKILL.md +320 -0
  172. moai_adk/templates/.claude/skills/moai-domain-database/modules/README.md +53 -0
  173. moai_adk/templates/.claude/skills/moai-domain-database/modules/mongodb.md +231 -0
  174. moai_adk/templates/.claude/skills/moai-domain-database/modules/postgresql.md +169 -0
  175. moai_adk/templates/.claude/skills/moai-domain-database/modules/redis.md +262 -0
  176. moai_adk/templates/.claude/skills/moai-domain-frontend/SKILL.md +496 -0
  177. moai_adk/templates/.claude/skills/moai-domain-uiux/SKILL.md +453 -0
  178. moai_adk/templates/.claude/skills/moai-domain-uiux/examples.md +560 -0
  179. moai_adk/templates/.claude/skills/moai-domain-uiux/modules/accessibility-wcag.md +260 -0
  180. moai_adk/templates/.claude/skills/moai-domain-uiux/modules/component-architecture.md +228 -0
  181. moai_adk/templates/.claude/skills/moai-domain-uiux/modules/design-system-tokens.md +405 -0
  182. moai_adk/templates/.claude/skills/moai-domain-uiux/modules/icon-libraries.md +401 -0
  183. moai_adk/templates/.claude/skills/moai-domain-uiux/modules/theming-system.md +373 -0
  184. moai_adk/templates/.claude/skills/moai-domain-uiux/reference.md +243 -0
  185. moai_adk/templates/.claude/skills/moai-formats-data/SKILL.md +491 -0
  186. moai_adk/templates/.claude/skills/moai-formats-data/modules/README.md +98 -0
  187. moai_adk/templates/.claude/skills/moai-formats-data/modules/SKILL-MODULARIZATION-TEMPLATE.md +278 -0
  188. moai_adk/templates/.claude/skills/moai-formats-data/modules/caching-performance.md +459 -0
  189. moai_adk/templates/.claude/skills/moai-formats-data/modules/data-validation.md +485 -0
  190. moai_adk/templates/.claude/skills/moai-formats-data/modules/json-optimization.md +374 -0
  191. moai_adk/templates/.claude/skills/moai-formats-data/modules/toon-encoding.md +308 -0
  192. moai_adk/templates/.claude/skills/moai-foundation-claude/SKILL.md +201 -0
  193. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/best-practices-checklist.md +616 -0
  194. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-custom-slash-commands-official.md +729 -0
  195. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-hooks-official.md +560 -0
  196. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-iam-official.md +635 -0
  197. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-memory-official.md +543 -0
  198. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-settings-official.md +663 -0
  199. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-skills-official.md +113 -0
  200. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-sub-agents-official.md +238 -0
  201. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/complete-configuration-guide.md +175 -0
  202. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/skill-examples.md +1674 -0
  203. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/skill-formatting-guide.md +729 -0
  204. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/sub-agents/sub-agent-examples.md +1513 -0
  205. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/sub-agents/sub-agent-formatting-guide.md +1086 -0
  206. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/sub-agents/sub-agent-integration-patterns.md +1100 -0
  207. moai_adk/templates/.claude/skills/moai-foundation-context/SKILL.md +438 -0
  208. moai_adk/templates/.claude/skills/moai-foundation-core/SKILL.md +515 -0
  209. moai_adk/templates/.claude/skills/moai-foundation-core/modules/README.md +296 -0
  210. moai_adk/templates/.claude/skills/moai-foundation-core/modules/agents-reference.md +346 -0
  211. moai_adk/templates/.claude/skills/moai-foundation-core/modules/commands-reference.md +432 -0
  212. moai_adk/templates/.claude/skills/moai-foundation-core/modules/delegation-patterns.md +757 -0
  213. moai_adk/templates/.claude/skills/moai-foundation-core/modules/execution-rules.md +687 -0
  214. moai_adk/templates/.claude/skills/moai-foundation-core/modules/modular-system.md +665 -0
  215. moai_adk/templates/.claude/skills/moai-foundation-core/modules/progressive-disclosure.md +649 -0
  216. moai_adk/templates/.claude/skills/moai-foundation-core/modules/spec-first-tdd.md +864 -0
  217. moai_adk/templates/.claude/skills/moai-foundation-core/modules/token-optimization.md +708 -0
  218. moai_adk/templates/.claude/skills/moai-foundation-core/modules/trust-5-framework.md +981 -0
  219. moai_adk/templates/.claude/skills/moai-foundation-quality/SKILL.md +362 -0
  220. moai_adk/templates/.claude/skills/moai-foundation-quality/examples.md +1232 -0
  221. moai_adk/templates/.claude/skills/moai-foundation-quality/modules/best-practices.md +261 -0
  222. moai_adk/templates/.claude/skills/moai-foundation-quality/modules/integration-patterns.md +194 -0
  223. moai_adk/templates/.claude/skills/moai-foundation-quality/modules/proactive-analysis.md +229 -0
  224. moai_adk/templates/.claude/skills/moai-foundation-quality/modules/trust5-validation.md +169 -0
  225. moai_adk/templates/.claude/skills/moai-foundation-quality/reference.md +1266 -0
  226. moai_adk/templates/.claude/skills/moai-foundation-quality/scripts/quality-gate.sh +668 -0
  227. moai_adk/templates/.claude/skills/moai-foundation-quality/templates/github-actions-quality.yml +481 -0
  228. moai_adk/templates/.claude/skills/moai-foundation-quality/templates/quality-config.yaml +519 -0
  229. moai_adk/templates/.claude/skills/moai-integration-mcp/SKILL.md +352 -0
  230. moai_adk/templates/.claude/skills/moai-integration-mcp/modules/README.md +52 -0
  231. moai_adk/templates/.claude/skills/moai-integration-mcp/modules/error-handling.md +334 -0
  232. moai_adk/templates/.claude/skills/moai-integration-mcp/modules/integration-patterns.md +310 -0
  233. moai_adk/templates/.claude/skills/moai-integration-mcp/modules/security-authentication.md +256 -0
  234. moai_adk/templates/.claude/skills/moai-integration-mcp/modules/server-architecture.md +253 -0
  235. moai_adk/templates/.claude/skills/moai-lang-unified/README.md +133 -0
  236. moai_adk/templates/.claude/skills/moai-lang-unified/SKILL.md +296 -0
  237. moai_adk/templates/.claude/skills/moai-lang-unified/examples.md +1269 -0
  238. moai_adk/templates/.claude/skills/moai-lang-unified/reference.md +331 -0
  239. moai_adk/templates/.claude/skills/moai-library-mermaid/SKILL.md +298 -0
  240. moai_adk/templates/.claude/skills/moai-library-mermaid/advanced-patterns.md +465 -0
  241. moai_adk/templates/.claude/skills/moai-library-mermaid/examples.md +270 -0
  242. moai_adk/templates/.claude/skills/moai-library-mermaid/optimization.md +440 -0
  243. moai_adk/templates/.claude/skills/moai-library-mermaid/reference.md +228 -0
  244. moai_adk/templates/.claude/skills/moai-library-nextra/SKILL.md +316 -0
  245. moai_adk/templates/.claude/skills/moai-library-nextra/advanced-patterns.md +336 -0
  246. moai_adk/templates/.claude/skills/moai-library-nextra/modules/advanced-deployment-patterns.md +182 -0
  247. moai_adk/templates/.claude/skills/moai-library-nextra/modules/advanced-patterns.md +17 -0
  248. moai_adk/templates/.claude/skills/moai-library-nextra/modules/configuration.md +57 -0
  249. moai_adk/templates/.claude/skills/moai-library-nextra/modules/content-architecture-optimization.md +162 -0
  250. moai_adk/templates/.claude/skills/moai-library-nextra/modules/deployment.md +52 -0
  251. moai_adk/templates/.claude/skills/moai-library-nextra/modules/framework-core-configuration.md +186 -0
  252. moai_adk/templates/.claude/skills/moai-library-nextra/modules/i18n-setup.md +55 -0
  253. moai_adk/templates/.claude/skills/moai-library-nextra/modules/mdx-components.md +52 -0
  254. moai_adk/templates/.claude/skills/moai-library-nextra/optimization.md +303 -0
  255. moai_adk/templates/.claude/skills/moai-library-shadcn/SKILL.md +370 -0
  256. moai_adk/templates/.claude/skills/moai-library-shadcn/examples.md +575 -0
  257. moai_adk/templates/.claude/skills/moai-library-shadcn/modules/advanced-patterns.md +394 -0
  258. moai_adk/templates/.claude/skills/moai-library-shadcn/modules/optimization.md +278 -0
  259. moai_adk/templates/.claude/skills/moai-library-shadcn/modules/shadcn-components.md +457 -0
  260. moai_adk/templates/.claude/skills/moai-library-shadcn/modules/shadcn-theming.md +373 -0
  261. moai_adk/templates/.claude/skills/moai-library-shadcn/reference.md +74 -0
  262. moai_adk/templates/.claude/skills/moai-platform-baas/README.md +186 -0
  263. moai_adk/templates/.claude/skills/moai-platform-baas/SKILL.md +290 -0
  264. moai_adk/templates/.claude/skills/moai-platform-baas/examples.md +1225 -0
  265. moai_adk/templates/.claude/skills/moai-platform-baas/reference.md +567 -0
  266. moai_adk/templates/.claude/skills/moai-platform-baas/scripts/provider-selector.py +323 -0
  267. moai_adk/templates/.claude/skills/moai-platform-baas/templates/stack-config.yaml +204 -0
  268. moai_adk/templates/.claude/skills/moai-workflow-jit-docs/SKILL.md +446 -0
  269. moai_adk/templates/.claude/skills/moai-workflow-jit-docs/advanced-patterns.md +379 -0
  270. moai_adk/templates/.claude/skills/moai-workflow-jit-docs/optimization.md +286 -0
  271. moai_adk/templates/.claude/skills/moai-workflow-project/README.md +190 -0
  272. moai_adk/templates/.claude/skills/moai-workflow-project/SKILL.md +387 -0
  273. moai_adk/templates/.claude/skills/moai-workflow-project/__init__.py +520 -0
  274. moai_adk/templates/.claude/skills/moai-workflow-project/complete_workflow_demo_fixed.py +574 -0
  275. moai_adk/templates/.claude/skills/moai-workflow-project/examples/complete_project_setup.py +317 -0
  276. moai_adk/templates/.claude/skills/moai-workflow-project/examples/complete_workflow_demo.py +663 -0
  277. moai_adk/templates/.claude/skills/moai-workflow-project/examples/config-migration-example.json +190 -0
  278. moai_adk/templates/.claude/skills/moai-workflow-project/examples/question-examples.json +135 -0
  279. moai_adk/templates/.claude/skills/moai-workflow-project/examples/quick_start.py +196 -0
  280. moai_adk/templates/.claude/skills/moai-workflow-project/modules/__init__.py +17 -0
  281. moai_adk/templates/.claude/skills/moai-workflow-project/modules/advanced-patterns.md +158 -0
  282. moai_adk/templates/.claude/skills/moai-workflow-project/modules/ask_user_integration.py +340 -0
  283. moai_adk/templates/.claude/skills/moai-workflow-project/modules/batch_questions.py +713 -0
  284. moai_adk/templates/.claude/skills/moai-workflow-project/modules/config_manager.py +538 -0
  285. moai_adk/templates/.claude/skills/moai-workflow-project/modules/documentation_manager.py +1336 -0
  286. moai_adk/templates/.claude/skills/moai-workflow-project/modules/language_initializer.py +730 -0
  287. moai_adk/templates/.claude/skills/moai-workflow-project/modules/migration_manager.py +608 -0
  288. moai_adk/templates/.claude/skills/moai-workflow-project/modules/template_optimizer.py +1005 -0
  289. moai_adk/templates/.claude/skills/moai-workflow-project/schemas/config-schema.json +316 -0
  290. moai_adk/templates/.claude/skills/moai-workflow-project/schemas/tab_schema.json +1362 -0
  291. moai_adk/templates/.claude/skills/moai-workflow-project/templates/config-template.json +71 -0
  292. moai_adk/templates/.claude/skills/moai-workflow-project/templates/doc-templates/product-template.md +44 -0
  293. moai_adk/templates/.claude/skills/moai-workflow-project/templates/doc-templates/structure-template.md +48 -0
  294. moai_adk/templates/.claude/skills/moai-workflow-project/templates/doc-templates/tech-template.md +71 -0
  295. moai_adk/templates/.claude/skills/moai-workflow-project/templates/question-templates/config-manager-setup.json +109 -0
  296. moai_adk/templates/.claude/skills/moai-workflow-project/templates/question-templates/language-initializer.json +228 -0
  297. moai_adk/templates/.claude/skills/moai-workflow-project/templates/question-templates/menu-project-config.json +130 -0
  298. moai_adk/templates/.claude/skills/moai-workflow-project/templates/question-templates/project-batch-questions.json +97 -0
  299. moai_adk/templates/.claude/skills/moai-workflow-project/templates/question-templates/spec-workflow-setup.json +150 -0
  300. moai_adk/templates/.claude/skills/moai-workflow-project/test_integration_simple.py +436 -0
  301. moai_adk/templates/.claude/skills/moai-workflow-templates/SKILL.md +374 -0
  302. moai_adk/templates/.claude/skills/moai-workflow-templates/modules/code-templates.md +124 -0
  303. moai_adk/templates/.claude/skills/moai-workflow-templates/modules/feedback-templates.md +100 -0
  304. moai_adk/templates/.claude/skills/moai-workflow-templates/modules/template-optimizer.md +138 -0
  305. moai_adk/templates/.claude/skills/moai-workflow-testing/LICENSE.txt +202 -0
  306. moai_adk/templates/.claude/skills/moai-workflow-testing/SKILL.md +453 -0
  307. moai_adk/templates/.claude/skills/moai-workflow-testing/advanced-patterns.md +576 -0
  308. moai_adk/templates/.claude/skills/moai-workflow-testing/examples/ai-powered-testing.py +294 -0
  309. moai_adk/templates/.claude/skills/moai-workflow-testing/examples/console_logging.py +35 -0
  310. moai_adk/templates/.claude/skills/moai-workflow-testing/examples/element_discovery.py +40 -0
  311. moai_adk/templates/.claude/skills/moai-workflow-testing/examples/static_html_automation.py +34 -0
  312. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/README.md +220 -0
  313. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/ai-debugging.md +845 -0
  314. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/automated-code-review.md +1416 -0
  315. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/performance-optimization.md +1234 -0
  316. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/smart-refactoring.md +1243 -0
  317. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/tdd-context7.md +1260 -0
  318. moai_adk/templates/.claude/skills/moai-workflow-testing/optimization.md +505 -0
  319. moai_adk/templates/.claude/skills/moai-workflow-testing/reference/playwright-best-practices.md +57 -0
  320. moai_adk/templates/.claude/skills/moai-workflow-testing/scripts/with_server.py +218 -0
  321. moai_adk/templates/.claude/skills/moai-workflow-testing/templates/alfred-integration.md +376 -0
  322. moai_adk/templates/.claude/skills/moai-workflow-testing/workflows/enterprise-testing-workflow.py +571 -0
  323. moai_adk/templates/.claude/skills/moai-worktree/SKILL.md +410 -0
  324. moai_adk/templates/.claude/skills/moai-worktree/examples.md +606 -0
  325. moai_adk/templates/.claude/skills/moai-worktree/modules/integration-patterns.md +982 -0
  326. moai_adk/templates/.claude/skills/moai-worktree/modules/parallel-development.md +778 -0
  327. moai_adk/templates/.claude/skills/moai-worktree/modules/worktree-commands.md +646 -0
  328. moai_adk/templates/.claude/skills/moai-worktree/modules/worktree-management.md +782 -0
  329. moai_adk/templates/.claude/skills/moai-worktree/reference.md +357 -0
  330. moai_adk/templates/.git-hooks/pre-commit +103 -41
  331. moai_adk/templates/.git-hooks/pre-push +116 -21
  332. moai_adk/templates/.github/workflows/ci-universal.yml +513 -0
  333. moai_adk/templates/.github/workflows/security-secrets-check.yml +179 -0
  334. moai_adk/templates/.gitignore +184 -44
  335. moai_adk/templates/.mcp.json +7 -9
  336. moai_adk/templates/.moai/cache/personalization.json +10 -0
  337. moai_adk/templates/.moai/config/config.yaml +344 -0
  338. moai_adk/templates/.moai/config/presets/manual.yaml +28 -0
  339. moai_adk/templates/.moai/config/presets/personal.yaml +30 -0
  340. moai_adk/templates/.moai/config/presets/team.yaml +33 -0
  341. moai_adk/templates/.moai/config/questions/_schema.yaml +79 -0
  342. moai_adk/templates/.moai/config/questions/tab1-user.yaml +108 -0
  343. moai_adk/templates/.moai/config/questions/tab2-project.yaml +122 -0
  344. moai_adk/templates/.moai/config/questions/tab3-git.yaml +542 -0
  345. moai_adk/templates/.moai/config/questions/tab4-quality.yaml +167 -0
  346. moai_adk/templates/.moai/config/questions/tab5-system.yaml +152 -0
  347. moai_adk/templates/.moai/config/sections/git-strategy.yaml +40 -0
  348. moai_adk/templates/.moai/config/sections/language.yaml +11 -0
  349. moai_adk/templates/.moai/config/sections/project.yaml +13 -0
  350. moai_adk/templates/.moai/config/sections/quality.yaml +15 -0
  351. moai_adk/templates/.moai/config/sections/system.yaml +14 -0
  352. moai_adk/templates/.moai/config/sections/user.yaml +5 -0
  353. moai_adk/templates/.moai/config/statusline-config.yaml +86 -0
  354. moai_adk/templates/.moai/scripts/setup-glm.py +136 -0
  355. moai_adk/templates/CLAUDE.md +382 -501
  356. moai_adk/utils/__init__.py +24 -1
  357. moai_adk/utils/banner.py +7 -10
  358. moai_adk/utils/common.py +16 -30
  359. moai_adk/utils/link_validator.py +4 -12
  360. moai_adk/utils/safe_file_reader.py +2 -6
  361. moai_adk/utils/timeout.py +160 -0
  362. moai_adk/utils/toon_utils.py +256 -0
  363. moai_adk/version.py +22 -0
  364. moai_adk-0.32.8.dist-info/METADATA +2478 -0
  365. moai_adk-0.32.8.dist-info/RECORD +396 -0
  366. {moai_adk-0.25.4.dist-info → moai_adk-0.32.8.dist-info}/WHEEL +1 -1
  367. {moai_adk-0.25.4.dist-info → moai_adk-0.32.8.dist-info}/entry_points.txt +1 -0
  368. moai_adk/cli/commands/backup.py +0 -82
  369. moai_adk/cli/commands/improve_user_experience.py +0 -348
  370. moai_adk/cli/commands/migrate.py +0 -158
  371. moai_adk/cli/commands/validate_links.py +0 -118
  372. moai_adk/templates/.github/workflows/moai-gitflow.yml +0 -413
  373. moai_adk/templates/.github/workflows/moai-release-create.yml +0 -100
  374. moai_adk/templates/.github/workflows/moai-release-pipeline.yml +0 -188
  375. moai_adk/utils/user_experience.py +0 -531
  376. moai_adk-0.25.4.dist-info/METADATA +0 -2279
  377. moai_adk-0.25.4.dist-info/RECORD +0 -112
  378. {moai_adk-0.25.4.dist-info → moai_adk-0.32.8.dist-info}/licenses/LICENSE +0 -0
@@ -0,0 +1,379 @@
1
+ ---
2
+ name: moai-workflow-jit-docs/advanced-patterns
3
+ description: Advanced JIT documentation patterns, intelligent doc discovery, lazy loading, and content optimization
4
+ ---
5
+
6
+ # Advanced JIT Documentation Patterns (v5.0.0)
7
+
8
+ ## Intelligent Document Discovery
9
+
10
+ ### 1. Smart Doc Inference Engine
11
+
12
+ ```typescript
13
+ interface DocumentPattern {
14
+ name: string;
15
+ filePattern: RegExp;
16
+ contentPattern: RegExp;
17
+ priority: number;
18
+ extractor: (content: string) => string;
19
+ }
20
+
21
+ class IntelligentDocDiscovery {
22
+ private patterns: DocumentPattern[] = [
23
+ {
24
+ name: 'README',
25
+ filePattern: /README\.(md|mdx|txt)$/i,
26
+ contentPattern: /^#\s+/,
27
+ priority: 100,
28
+ extractor: (content) => content.split('\n').slice(0, 20).join('\n')
29
+ },
30
+ {
31
+ name: 'API Documentation',
32
+ filePattern: /\/api\//i,
33
+ contentPattern: /\/\*\*[\s\S]*?\*\/|\/\/\/.*$/m,
34
+ priority: 90,
35
+ extractor: (content) => this.extractJSDocComments(content)
36
+ },
37
+ {
38
+ name: 'Getting Started',
39
+ filePattern: /(getting-started|quick-start|introduction)\.(md|mdx)/i,
40
+ contentPattern: /##\s+(Getting Started|Quick Start|Introduction)/i,
41
+ priority: 80,
42
+ extractor: (content) => content.substring(0, 2000)
43
+ },
44
+ {
45
+ name: 'Configuration',
46
+ filePattern: /(config|configure|settings)\.(md|mdx|json|yaml|yml)/i,
47
+ contentPattern: /^#+\s+(Configuration|Settings|Config)/im,
48
+ priority: 70,
49
+ extractor: (content) => this.extractConfiguration(content)
50
+ },
51
+ {
52
+ name: 'Examples',
53
+ filePattern: /(examples?|samples?)\/(.*)\.(js|ts|jsx|tsx|py)/i,
54
+ contentPattern: /\/\*\*|\/\/|'''|"""/,
55
+ priority: 60,
56
+ extractor: (content) => content.substring(0, 1000)
57
+ }
58
+ ];
59
+
60
+ async discoverDocs(projectRoot: string): Promise<DiscoveredDoc[]> {
61
+ const docs: DiscoveredDoc[] = [];
62
+
63
+ // Scan entire project
64
+ const allFiles = await this.scanProject(projectRoot);
65
+
66
+ for (const file of allFiles) {
67
+ const content = await fs.readFile(file, 'utf-8');
68
+
69
+ // Try to match against patterns
70
+ for (const pattern of this.patterns) {
71
+ if (pattern.filePattern.test(file) && pattern.contentPattern.test(content)) {
72
+ docs.push({
73
+ type: pattern.name,
74
+ path: file,
75
+ content: pattern.extractor(content),
76
+ priority: pattern.priority,
77
+ relevance: this.calculateRelevance(file, content)
78
+ });
79
+
80
+ break; // Move to next file
81
+ }
82
+ }
83
+ }
84
+
85
+ // Sort by priority and relevance
86
+ return docs.sort((a, b) => {
87
+ const priorityDiff = b.priority - a.priority;
88
+ return priorityDiff !== 0 ? priorityDiff : b.relevance - a.relevance;
89
+ });
90
+ }
91
+
92
+ private calculateRelevance(filePath: string, content: string): number {
93
+ let score = 0;
94
+
95
+ // Filename relevance
96
+ const filename = path.basename(filePath);
97
+ if (filename.includes('readme')) score += 30;
98
+ if (filename.includes('guide')) score += 20;
99
+ if (filename.includes('tutorial')) score += 15;
100
+
101
+ // Content metrics
102
+ const lines = content.split('\n').length;
103
+ if (lines > 100) score += 10; // Substantial content
104
+ if (lines < 5) score -= 10; // Too brief
105
+
106
+ // Freshness (modified recently)
107
+ const stats = fs.statSync(filePath);
108
+ const daysSinceModified = (Date.now() - stats.mtime.getTime()) / (1000 * 60 * 60 * 24);
109
+ if (daysSinceModified < 7) score += 15;
110
+ if (daysSinceModified < 30) score += 10;
111
+
112
+ return Math.max(0, score);
113
+ }
114
+
115
+ private extractJSDocComments(content: string): string {
116
+ const comments = content.match(/\/\*\*[\s\S]*?\*\//g) || [];
117
+ return comments.slice(0, 10).join('\n\n');
118
+ }
119
+
120
+ private extractConfiguration(content: string): string {
121
+ // Extract key config sections
122
+ const lines = content.split('\n');
123
+ const sections: string[] = [];
124
+
125
+ let inConfig = false;
126
+ let currentSection = '';
127
+
128
+ for (const line of lines) {
129
+ if (line.match(/^#+\s+(Configuration|Settings|Config)/i)) {
130
+ inConfig = true;
131
+ } else if (inConfig && line.match(/^#+\s+(?!Configuration|Settings|Config)/)) {
132
+ break;
133
+ }
134
+
135
+ if (inConfig) {
136
+ currentSection += line + '\n';
137
+ if (currentSection.split('\n').length > 50) {
138
+ sections.push(currentSection);
139
+ currentSection = '';
140
+ }
141
+ }
142
+ }
143
+
144
+ return sections.join('\n\n');
145
+ }
146
+ }
147
+ ```
148
+
149
+ ## Lazy Loading Strategies
150
+
151
+ ### 1. On-Demand Documentation Loading
152
+
153
+ ```typescript
154
+ class LazyDocumentationLoader {
155
+ private docCache: Map<string, CachedDoc> = new Map();
156
+ private loadingQueue: Set<string> = new Set();
157
+
158
+ async loadDocLazy(docId: string, priority: 'high' | 'normal' | 'low' = 'normal'): Promise<DocumentContent> {
159
+ // Check cache first
160
+ const cached = this.docCache.get(docId);
161
+ if (cached && !this.isExpired(cached)) {
162
+ return cached.content;
163
+ }
164
+
165
+ // Prevent duplicate loads
166
+ if (this.loadingQueue.has(docId)) {
167
+ // Wait for ongoing load
168
+ return this.waitForLoad(docId);
169
+ }
170
+
171
+ this.loadingQueue.add(docId);
172
+
173
+ try {
174
+ const content = await this.loadDocumentContent(docId);
175
+
176
+ // Cache with priority-based TTL
177
+ const ttl = priority === 'high' ? 3600000 : priority === 'normal' ? 1800000 : 600000;
178
+
179
+ this.docCache.set(docId, {
180
+ content,
181
+ timestamp: Date.now(),
182
+ ttl,
183
+ size: Buffer.byteLength(JSON.stringify(content))
184
+ });
185
+
186
+ return content;
187
+ } finally {
188
+ this.loadingQueue.delete(docId);
189
+ }
190
+ }
191
+
192
+ // Batch lazy loading for multiple docs
193
+ async loadDocsBatch(docIds: string[]): Promise<Map<string, DocumentContent>> {
194
+ const results = new Map<string, DocumentContent>();
195
+
196
+ // Load high-priority items first
197
+ const highPriority = docIds.slice(0, 3);
198
+ const restPriority = docIds.slice(3);
199
+
200
+ // Load top 3 in parallel
201
+ const topResults = await Promise.all(
202
+ highPriority.map(id => this.loadDocLazy(id, 'high'))
203
+ );
204
+
205
+ topResults.forEach((content, i) => {
206
+ results.set(highPriority[i], content);
207
+ });
208
+
209
+ // Queue rest for background loading
210
+ for (const docId of restPriority) {
211
+ this.loadDocLazy(docId, 'low').then(content => {
212
+ results.set(docId, content);
213
+ });
214
+ }
215
+
216
+ return results;
217
+ }
218
+
219
+ private async loadDocumentContent(docId: string): Promise<DocumentContent> {
220
+ // Load from disk/database
221
+ const metadata = await this.getDocMetadata(docId);
222
+ const content = await this.readDocument(metadata.path);
223
+
224
+ return {
225
+ id: docId,
226
+ title: metadata.title,
227
+ content,
228
+ metadata: metadata
229
+ };
230
+ }
231
+
232
+ private isExpired(cached: CachedDoc): boolean {
233
+ return Date.now() - cached.timestamp > cached.ttl;
234
+ }
235
+ }
236
+ ```
237
+
238
+ ### 2. Progressive Enhancement
239
+
240
+ ```typescript
241
+ class ProgressiveDocumentEnhancer {
242
+ async enhanceDocumentProgressive(docId: string): Promise<EnhancedDocument> {
243
+ // Step 1: Load and parse immediately
244
+ const basic = await this.loadBasicDocument(docId);
245
+
246
+ // Step 2: Load metadata asynchronously
247
+ const withMetadata = await this.addMetadata(basic);
248
+
249
+ // Step 3: Process code examples asynchronously
250
+ const withExamples = await this.processCodeExamples(withMetadata);
251
+
252
+ // Step 4: Generate search index asynchronously
253
+ const withSearch = await this.generateSearchIndex(withExamples);
254
+
255
+ // Step 5: Generate related links asynchronously
256
+ const enhanced = await this.generateRelatedLinks(withSearch);
257
+
258
+ return enhanced;
259
+ }
260
+
261
+ // Return document as it loads (streaming approach)
262
+ async* streamDocumentEnhancement(docId: string) {
263
+ // Step 1: Basic content
264
+ const basic = await this.loadBasicDocument(docId);
265
+ yield { stage: 'basic', document: basic };
266
+
267
+ // Step 2: Metadata
268
+ const withMetadata = await this.addMetadata(basic);
269
+ yield { stage: 'metadata', document: withMetadata };
270
+
271
+ // Step 3: Examples
272
+ const withExamples = await this.processCodeExamples(withMetadata);
273
+ yield { stage: 'examples', document: withExamples };
274
+
275
+ // Step 4: Search
276
+ const withSearch = await this.generateSearchIndex(withExamples);
277
+ yield { stage: 'search', document: withSearch };
278
+
279
+ // Step 5: Related
280
+ const enhanced = await this.generateRelatedLinks(withSearch);
281
+ yield { stage: 'complete', document: enhanced };
282
+ }
283
+ }
284
+
285
+ // React hook for progressive loading
286
+ export function useProgressiveDoc(docId: string) {
287
+ const [document, setDocument] = useState<DocumentContent>();
288
+ const [stage, setStage] = useState<'loading' | 'basic' | 'enhanced' | 'complete'>('loading');
289
+
290
+ useEffect(() => {
291
+ const enhancer = new ProgressiveDocumentEnhancer();
292
+ const generator = enhancer.streamDocumentEnhancement(docId);
293
+
294
+ (async () => {
295
+ for await (const { stage, document } of generator) {
296
+ setDocument(document);
297
+ setStage(stage as any);
298
+ }
299
+ })();
300
+ }, [docId]);
301
+
302
+ return { document, stage };
303
+ }
304
+ ```
305
+
306
+ ## Intelligent Content Recommendation
307
+
308
+ ### 1. Related Documentation Discovery
309
+
310
+ ```typescript
311
+ class RelatedDocumentFinder {
312
+ async findRelated(currentDocId: string, limit: number = 5): Promise<RelatedDoc[]> {
313
+ const current = await this.getDocument(currentDocId);
314
+ const allDocs = await this.getAllDocuments();
315
+
316
+ // Extract features from current doc
317
+ const features = this.extractFeatures(current);
318
+
319
+ // Score all other docs
320
+ const scored = allDocs
321
+ .filter(doc => doc.id !== currentDocId)
322
+ .map(doc => ({
323
+ doc,
324
+ score: this.calculateSimilarity(features, this.extractFeatures(doc))
325
+ }));
326
+
327
+ // Return top N
328
+ return scored
329
+ .sort((a, b) => b.score - a.score)
330
+ .slice(0, limit)
331
+ .map(s => ({
332
+ ...s.doc,
333
+ relevance: s.score
334
+ }));
335
+ }
336
+
337
+ private extractFeatures(doc: DocumentContent): DocumentFeatures {
338
+ return {
339
+ keywords: this.extractKeywords(doc.content),
340
+ tags: doc.metadata?.tags || [],
341
+ section: doc.metadata?.section,
342
+ length: doc.content.length,
343
+ codeExamples: (doc.content.match(/```/g) || []).length / 2
344
+ };
345
+ }
346
+
347
+ private calculateSimilarity(features1: DocumentFeatures, features2: DocumentFeatures): number {
348
+ let score = 0;
349
+
350
+ // Keyword overlap (40%)
351
+ const keywordIntersection = features1.keywords.filter(k =>
352
+ features2.keywords.includes(k)
353
+ ).length;
354
+ score += (keywordIntersection / Math.max(1, features1.keywords.length)) * 0.4;
355
+
356
+ // Tag overlap (30%)
357
+ const tagIntersection = features1.tags.filter(t =>
358
+ features2.tags.includes(t)
359
+ ).length;
360
+ score += (tagIntersection / Math.max(1, features1.tags.length)) * 0.3;
361
+
362
+ // Same section (20%)
363
+ if (features1.section === features2.section) {
364
+ score += 0.2;
365
+ }
366
+
367
+ // Similar complexity (10%)
368
+ const lengthRatio = Math.min(features1.length, features2.length) /
369
+ Math.max(features1.length, features2.length);
370
+ score += (lengthRatio > 0.8 ? 0.1 : 0);
371
+
372
+ return score;
373
+ }
374
+ }
375
+ ```
376
+
377
+ ---
378
+
379
+ Version: 5.0.0 | Last Updated: 2025-11-22 | Enterprise Ready:
@@ -0,0 +1,286 @@
1
+ ---
2
+ name: moai-workflow-jit-docs/optimization
3
+ description: Performance optimization for JIT documentation, indexing, caching, and memory management
4
+ ---
5
+
6
+ # JIT Documentation Optimization (v5.0.0)
7
+
8
+ ## Memory-Efficient Caching
9
+
10
+ ### 1. LRU Cache with Size Limits
11
+
12
+ ```typescript
13
+ interface CacheEntry<T> {
14
+ value: T;
15
+ size: number;
16
+ timestamp: number;
17
+ accessCount: number;
18
+ }
19
+
20
+ class LRUDocumentCache<T> {
21
+ private cache: Map<string, CacheEntry<T>> = new Map();
22
+ private maxSize: number; // bytes
23
+ private currentSize: number = 0;
24
+
25
+ constructor(maxSizeInMB: number = 100) {
26
+ this.maxSize = maxSizeInMB * 1024 * 1024;
27
+ }
28
+
29
+ set(key: string, value: T, sizeEstimate: number) {
30
+ // Remove existing entry if present
31
+ if (this.cache.has(key)) {
32
+ const existing = this.cache.get(key)!;
33
+ this.currentSize -= existing.size;
34
+ }
35
+
36
+ // Evict LRU items if necessary
37
+ while (this.currentSize + sizeEstimate > this.maxSize && this.cache.size > 0) {
38
+ this.evictLRU();
39
+ }
40
+
41
+ // Add new entry
42
+ this.cache.set(key, {
43
+ value,
44
+ size: sizeEstimate,
45
+ timestamp: Date.now(),
46
+ accessCount: 0
47
+ });
48
+
49
+ this.currentSize += sizeEstimate;
50
+ }
51
+
52
+ get(key: string): T | undefined {
53
+ const entry = this.cache.get(key);
54
+ if (!entry) return undefined;
55
+
56
+ // Update access tracking
57
+ entry.accessCount++;
58
+ entry.timestamp = Date.now();
59
+
60
+ return entry.value;
61
+ }
62
+
63
+ private evictLRU() {
64
+ // Find least recently used item
65
+ let lruKey: string | null = null;
66
+ let lruScore = Infinity;
67
+
68
+ for (const [key, entry] of this.cache.entries()) {
69
+ const score = entry.timestamp + (entry.accessCount * 1000);
70
+ if (score < lruScore) {
71
+ lruScore = score;
72
+ lruKey = key;
73
+ }
74
+ }
75
+
76
+ if (lruKey) {
77
+ const removed = this.cache.get(lruKey)!;
78
+ this.currentSize -= removed.size;
79
+ this.cache.delete(lruKey);
80
+ }
81
+ }
82
+
83
+ getStats() {
84
+ return {
85
+ items: this.cache.size,
86
+ usedBytes: this.currentSize,
87
+ usedMB: (this.currentSize / 1024 / 1024).toFixed(2),
88
+ maxMB: (this.maxSize / 1024 / 1024).toFixed(2),
89
+ hitRate: this.calculateHitRate()
90
+ };
91
+ }
92
+ }
93
+ ```
94
+
95
+ ## Index Optimization
96
+
97
+ ### 1. Incremental Indexing
98
+
99
+ ```typescript
100
+ class IncrementalDocumentIndex {
101
+ private index: Map<string, Set<string>> = new Map(); // word -> docIds
102
+ private docHashes: Map<string, string> = new Map(); // docId -> contentHash
103
+
104
+ async indexDocuments(docs: DocumentContent[]): Promise<void> {
105
+ for (const doc of docs) {
106
+ const hash = this.calculateHash(doc.content);
107
+ const previousHash = this.docHashes.get(doc.id);
108
+
109
+ // Only reindex if content changed
110
+ if (previousHash !== hash) {
111
+ await this.indexDocument(doc);
112
+ this.docHashes.set(doc.id, hash);
113
+ }
114
+ }
115
+ }
116
+
117
+ private async indexDocument(doc: DocumentContent) {
118
+ // Extract and tokenize content
119
+ const tokens = this.tokenize(doc.content);
120
+
121
+ for (const token of new Set(tokens)) {
122
+ if (!this.index.has(token)) {
123
+ this.index.set(token, new Set());
124
+ }
125
+
126
+ this.index.get(token)!.add(doc.id);
127
+ }
128
+ }
129
+
130
+ async search(query: string): Promise<string[]> {
131
+ const tokens = this.tokenize(query);
132
+
133
+ // Find intersection of document sets
134
+ let results = this.index.get(tokens[0]) || new Set<string>();
135
+
136
+ for (let i = 1; i < tokens.length; i++) {
137
+ const tokenDocs = this.index.get(tokens[i]) || new Set();
138
+ results = new Set([...results].filter(id => tokenDocs.has(id)));
139
+ }
140
+
141
+ return Array.from(results);
142
+ }
143
+
144
+ private tokenize(text: string): string[] {
145
+ return text
146
+ .toLowerCase()
147
+ .match(/\b\w+\b/g) || [];
148
+ }
149
+
150
+ private calculateHash(content: string): string {
151
+ return require('crypto')
152
+ .createHash('sha256')
153
+ .update(content)
154
+ .digest('hex');
155
+ }
156
+ }
157
+ ```
158
+
159
+ ## Compression and Storage
160
+
161
+ ### 1. Content Compression
162
+
163
+ ```typescript
164
+ import zlib from 'zlib';
165
+ import brotli from 'brotli';
166
+
167
+ class CompressedDocumentStorage {
168
+ async compressDocument(doc: DocumentContent): Promise<CompressedDoc> {
169
+ const json = JSON.stringify(doc);
170
+
171
+ // Compress with brotli (better compression)
172
+ const compressed = await this.brotliCompress(json);
173
+
174
+ return {
175
+ id: doc.id,
176
+ compressed: compressed.toString('base64'),
177
+ originalSize: Buffer.byteLength(json),
178
+ compressedSize: compressed.length,
179
+ compressionRatio: (compressed.length / Buffer.byteLength(json) * 100).toFixed(1) + '%'
180
+ };
181
+ }
182
+
183
+ private async brotliCompress(data: string): Promise<Buffer> {
184
+ return new Promise((resolve, reject) => {
185
+ brotli.compress(Buffer.from(data), (err, output) => {
186
+ if (err) reject(err);
187
+ else resolve(output);
188
+ });
189
+ });
190
+ }
191
+
192
+ async decompressDocument(compressed: CompressedDoc): Promise<DocumentContent> {
193
+ const buffer = Buffer.from(compressed.compressed, 'base64');
194
+
195
+ return new Promise((resolve, reject) => {
196
+ brotli.decompress(buffer, (err, output) => {
197
+ if (err) reject(err);
198
+ else resolve(JSON.parse(output.toString()));
199
+ });
200
+ });
201
+ }
202
+ }
203
+ ```
204
+
205
+ ## Performance Monitoring
206
+
207
+ ### 1. Load Time Metrics
208
+
209
+ ```typescript
210
+ class DocumentLoadMetrics {
211
+ async trackLoadTime(docId: string, stage: 'fetch' | 'parse' | 'enhance' | 'render') {
212
+ const startTime = performance.now();
213
+
214
+ try {
215
+ const result = await this.loadDocument(docId);
216
+
217
+ const duration = performance.now() - startTime;
218
+
219
+ // Log metrics
220
+ logger.info('Document load', {
221
+ doc_id: docId,
222
+ stage,
223
+ duration_ms: duration,
224
+ cache_hit: this.wasCacheHit,
225
+ timestamp: new Date()
226
+ });
227
+
228
+ // Alert if slow
229
+ if (duration > 1000) {
230
+ metrics.increment('doc.load.slow', { stage });
231
+ logger.warn('Slow document load', { docId, stage, duration });
232
+ }
233
+
234
+ return result;
235
+ } catch (error) {
236
+ metrics.increment('doc.load.error', { stage });
237
+ logger.error('Document load failed', { docId, stage, error });
238
+ throw error;
239
+ }
240
+ }
241
+
242
+ // Performance budgets
243
+ validatePerformanceBudget(stage: string, duration: number): boolean {
244
+ const budgets = {
245
+ 'fetch': 500, // 500ms
246
+ 'parse': 200, // 200ms
247
+ 'enhance': 1000, // 1s
248
+ 'render': 300 // 300ms
249
+ };
250
+
251
+ const budget = budgets[stage as keyof typeof budgets];
252
+ return duration <= budget;
253
+ }
254
+ }
255
+ ```
256
+
257
+ ### 2. Memory Usage Monitoring
258
+
259
+ ```typescript
260
+ class MemoryMonitor {
261
+ trackMemoryUsage() {
262
+ const memUsage = process.memoryUsage();
263
+
264
+ metrics.gauge('memory.heapUsed', memUsage.heapUsed / 1024 / 1024); // MB
265
+ metrics.gauge('memory.heapTotal', memUsage.heapTotal / 1024 / 1024);
266
+ metrics.gauge('memory.external', memUsage.external / 1024 / 1024);
267
+
268
+ // Alert if heap usage > 80%
269
+ const heapUsagePercent = (memUsage.heapUsed / memUsage.heapTotal) * 100;
270
+ if (heapUsagePercent > 80) {
271
+ logger.warn('High memory usage', {
272
+ heapUsagePercent: heapUsagePercent.toFixed(1)
273
+ });
274
+
275
+ // Trigger garbage collection
276
+ if (global.gc) {
277
+ global.gc();
278
+ }
279
+ }
280
+ }
281
+ }
282
+ ```
283
+
284
+ ---
285
+
286
+ Version: 5.0.0 | Last Updated: 2025-11-22 | Enterprise Ready: