tapps-agents 3.6.0__py3-none-any.whl → 3.6.1__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.
- tapps_agents/__init__.py +2 -2
- tapps_agents/agents/__init__.py +22 -22
- tapps_agents/agents/analyst/__init__.py +5 -5
- tapps_agents/agents/architect/__init__.py +5 -5
- tapps_agents/agents/architect/agent.py +1033 -1033
- tapps_agents/agents/architect/pattern_detector.py +75 -75
- tapps_agents/agents/cleanup/__init__.py +7 -7
- tapps_agents/agents/cleanup/agent.py +445 -445
- tapps_agents/agents/debugger/__init__.py +7 -7
- tapps_agents/agents/debugger/agent.py +310 -310
- tapps_agents/agents/debugger/error_analyzer.py +437 -437
- tapps_agents/agents/designer/__init__.py +5 -5
- tapps_agents/agents/designer/agent.py +786 -786
- tapps_agents/agents/designer/visual_designer.py +638 -638
- tapps_agents/agents/documenter/__init__.py +7 -7
- tapps_agents/agents/documenter/agent.py +531 -531
- tapps_agents/agents/documenter/doc_generator.py +472 -472
- tapps_agents/agents/documenter/doc_validator.py +393 -393
- tapps_agents/agents/documenter/framework_doc_updater.py +493 -493
- tapps_agents/agents/enhancer/__init__.py +7 -7
- tapps_agents/agents/evaluator/__init__.py +7 -7
- tapps_agents/agents/evaluator/agent.py +443 -443
- tapps_agents/agents/evaluator/priority_evaluator.py +641 -641
- tapps_agents/agents/evaluator/quality_analyzer.py +147 -147
- tapps_agents/agents/evaluator/report_generator.py +344 -344
- tapps_agents/agents/evaluator/usage_analyzer.py +192 -192
- tapps_agents/agents/evaluator/workflow_analyzer.py +189 -189
- tapps_agents/agents/implementer/__init__.py +7 -7
- tapps_agents/agents/implementer/agent.py +798 -798
- tapps_agents/agents/implementer/auto_fix.py +1119 -1119
- tapps_agents/agents/implementer/code_generator.py +73 -73
- tapps_agents/agents/improver/__init__.py +1 -1
- tapps_agents/agents/improver/agent.py +753 -753
- tapps_agents/agents/ops/__init__.py +1 -1
- tapps_agents/agents/ops/agent.py +619 -619
- tapps_agents/agents/ops/dependency_analyzer.py +600 -600
- tapps_agents/agents/orchestrator/__init__.py +5 -5
- tapps_agents/agents/orchestrator/agent.py +522 -522
- tapps_agents/agents/planner/__init__.py +7 -7
- tapps_agents/agents/planner/agent.py +1127 -1127
- tapps_agents/agents/reviewer/__init__.py +24 -24
- tapps_agents/agents/reviewer/agent.py +3513 -3513
- tapps_agents/agents/reviewer/aggregator.py +213 -213
- tapps_agents/agents/reviewer/batch_review.py +448 -448
- tapps_agents/agents/reviewer/cache.py +443 -443
- tapps_agents/agents/reviewer/context7_enhancer.py +630 -630
- tapps_agents/agents/reviewer/context_detector.py +203 -203
- tapps_agents/agents/reviewer/docker_compose_validator.py +158 -158
- tapps_agents/agents/reviewer/dockerfile_validator.py +176 -176
- tapps_agents/agents/reviewer/error_handling.py +126 -126
- tapps_agents/agents/reviewer/feedback_generator.py +490 -490
- tapps_agents/agents/reviewer/influxdb_validator.py +316 -316
- tapps_agents/agents/reviewer/issue_tracking.py +169 -169
- tapps_agents/agents/reviewer/library_detector.py +295 -295
- tapps_agents/agents/reviewer/library_patterns.py +268 -268
- tapps_agents/agents/reviewer/maintainability_scorer.py +593 -593
- tapps_agents/agents/reviewer/metric_strategies.py +276 -276
- tapps_agents/agents/reviewer/mqtt_validator.py +160 -160
- tapps_agents/agents/reviewer/output_enhancer.py +105 -105
- tapps_agents/agents/reviewer/pattern_detector.py +241 -241
- tapps_agents/agents/reviewer/performance_scorer.py +357 -357
- tapps_agents/agents/reviewer/phased_review.py +516 -516
- tapps_agents/agents/reviewer/progressive_review.py +435 -435
- tapps_agents/agents/reviewer/react_scorer.py +331 -331
- tapps_agents/agents/reviewer/score_constants.py +228 -228
- tapps_agents/agents/reviewer/score_validator.py +507 -507
- tapps_agents/agents/reviewer/scorer_registry.py +373 -373
- tapps_agents/agents/reviewer/service_discovery.py +534 -534
- tapps_agents/agents/reviewer/tools/parallel_executor.py +581 -581
- tapps_agents/agents/reviewer/tools/ruff_grouping.py +250 -250
- tapps_agents/agents/reviewer/tools/scoped_mypy.py +284 -284
- tapps_agents/agents/reviewer/typescript_scorer.py +1142 -1142
- tapps_agents/agents/reviewer/validation.py +208 -208
- tapps_agents/agents/reviewer/websocket_validator.py +132 -132
- tapps_agents/agents/tester/__init__.py +7 -7
- tapps_agents/agents/tester/accessibility_auditor.py +309 -309
- tapps_agents/agents/tester/agent.py +1080 -1080
- tapps_agents/agents/tester/batch_generator.py +54 -54
- tapps_agents/agents/tester/context_learner.py +51 -51
- tapps_agents/agents/tester/coverage_analyzer.py +386 -386
- tapps_agents/agents/tester/coverage_test_generator.py +290 -290
- tapps_agents/agents/tester/debug_enhancer.py +238 -238
- tapps_agents/agents/tester/device_emulator.py +241 -241
- tapps_agents/agents/tester/integration_generator.py +62 -62
- tapps_agents/agents/tester/network_recorder.py +300 -300
- tapps_agents/agents/tester/performance_monitor.py +320 -320
- tapps_agents/agents/tester/test_fixer.py +316 -316
- tapps_agents/agents/tester/test_generator.py +632 -632
- tapps_agents/agents/tester/trace_manager.py +234 -234
- tapps_agents/agents/tester/visual_regression.py +291 -291
- tapps_agents/analysis/pattern_detector.py +36 -36
- tapps_agents/beads/hydration.py +213 -213
- tapps_agents/beads/parse.py +32 -32
- tapps_agents/beads/specs.py +206 -206
- tapps_agents/cli/__init__.py +9 -9
- tapps_agents/cli/__main__.py +8 -8
- tapps_agents/cli/base.py +478 -478
- tapps_agents/cli/command_classifier.py +72 -72
- tapps_agents/cli/commands/__init__.py +2 -2
- tapps_agents/cli/commands/analyst.py +173 -173
- tapps_agents/cli/commands/architect.py +109 -109
- tapps_agents/cli/commands/cleanup_agent.py +92 -92
- tapps_agents/cli/commands/common.py +126 -126
- tapps_agents/cli/commands/debugger.py +90 -90
- tapps_agents/cli/commands/designer.py +112 -112
- tapps_agents/cli/commands/documenter.py +136 -136
- tapps_agents/cli/commands/enhancer.py +110 -110
- tapps_agents/cli/commands/evaluator.py +255 -255
- tapps_agents/cli/commands/implementer.py +301 -301
- tapps_agents/cli/commands/improver.py +91 -91
- tapps_agents/cli/commands/knowledge.py +111 -111
- tapps_agents/cli/commands/learning.py +172 -172
- tapps_agents/cli/commands/observability.py +283 -283
- tapps_agents/cli/commands/ops.py +135 -135
- tapps_agents/cli/commands/orchestrator.py +116 -116
- tapps_agents/cli/commands/planner.py +237 -237
- tapps_agents/cli/commands/reviewer.py +1872 -1872
- tapps_agents/cli/commands/status.py +285 -285
- tapps_agents/cli/commands/task.py +227 -227
- tapps_agents/cli/commands/tester.py +191 -191
- tapps_agents/cli/feedback.py +936 -936
- tapps_agents/cli/formatters.py +608 -608
- tapps_agents/cli/help/__init__.py +7 -7
- tapps_agents/cli/help/static_help.py +425 -425
- tapps_agents/cli/network_detection.py +110 -110
- tapps_agents/cli/output_compactor.py +274 -274
- tapps_agents/cli/parsers/__init__.py +2 -2
- tapps_agents/cli/parsers/analyst.py +186 -186
- tapps_agents/cli/parsers/architect.py +167 -167
- tapps_agents/cli/parsers/cleanup_agent.py +228 -228
- tapps_agents/cli/parsers/debugger.py +116 -116
- tapps_agents/cli/parsers/designer.py +182 -182
- tapps_agents/cli/parsers/documenter.py +134 -134
- tapps_agents/cli/parsers/enhancer.py +113 -113
- tapps_agents/cli/parsers/evaluator.py +213 -213
- tapps_agents/cli/parsers/implementer.py +168 -168
- tapps_agents/cli/parsers/improver.py +132 -132
- tapps_agents/cli/parsers/ops.py +159 -159
- tapps_agents/cli/parsers/orchestrator.py +98 -98
- tapps_agents/cli/parsers/planner.py +145 -145
- tapps_agents/cli/parsers/reviewer.py +462 -462
- tapps_agents/cli/parsers/tester.py +124 -124
- tapps_agents/cli/progress_heartbeat.py +254 -254
- tapps_agents/cli/streaming_progress.py +336 -336
- tapps_agents/cli/utils/__init__.py +6 -6
- tapps_agents/cli/utils/agent_lifecycle.py +48 -48
- tapps_agents/cli/utils/error_formatter.py +82 -82
- tapps_agents/cli/utils/error_recovery.py +188 -188
- tapps_agents/cli/utils/output_handler.py +59 -59
- tapps_agents/cli/utils/prompt_enhancer.py +319 -319
- tapps_agents/cli/validators/__init__.py +9 -9
- tapps_agents/cli/validators/command_validator.py +81 -81
- tapps_agents/context7/__init__.py +112 -112
- tapps_agents/context7/agent_integration.py +869 -869
- tapps_agents/context7/analytics.py +382 -382
- tapps_agents/context7/analytics_dashboard.py +299 -299
- tapps_agents/context7/async_cache.py +681 -681
- tapps_agents/context7/backup_client.py +958 -958
- tapps_agents/context7/cache_locking.py +194 -194
- tapps_agents/context7/cache_metadata.py +214 -214
- tapps_agents/context7/cache_prewarm.py +488 -488
- tapps_agents/context7/cache_structure.py +168 -168
- tapps_agents/context7/cache_warming.py +604 -604
- tapps_agents/context7/circuit_breaker.py +376 -376
- tapps_agents/context7/cleanup.py +461 -461
- tapps_agents/context7/commands.py +858 -858
- tapps_agents/context7/credential_validation.py +276 -276
- tapps_agents/context7/cross_reference_resolver.py +168 -168
- tapps_agents/context7/cross_references.py +424 -424
- tapps_agents/context7/doc_manager.py +225 -225
- tapps_agents/context7/fuzzy_matcher.py +369 -369
- tapps_agents/context7/kb_cache.py +404 -404
- tapps_agents/context7/language_detector.py +219 -219
- tapps_agents/context7/library_detector.py +725 -725
- tapps_agents/context7/lookup.py +738 -738
- tapps_agents/context7/metadata.py +258 -258
- tapps_agents/context7/refresh_queue.py +300 -300
- tapps_agents/context7/security.py +373 -373
- tapps_agents/context7/staleness_policies.py +278 -278
- tapps_agents/context7/tiles_integration.py +47 -47
- tapps_agents/continuous_bug_fix/__init__.py +20 -20
- tapps_agents/continuous_bug_fix/bug_finder.py +306 -306
- tapps_agents/continuous_bug_fix/bug_fix_coordinator.py +177 -177
- tapps_agents/continuous_bug_fix/commit_manager.py +178 -178
- tapps_agents/continuous_bug_fix/continuous_bug_fixer.py +322 -322
- tapps_agents/continuous_bug_fix/proactive_bug_finder.py +285 -285
- tapps_agents/core/__init__.py +298 -298
- tapps_agents/core/adaptive_cache_config.py +432 -432
- tapps_agents/core/agent_base.py +647 -647
- tapps_agents/core/agent_cache.py +466 -466
- tapps_agents/core/agent_learning.py +1865 -1865
- tapps_agents/core/analytics_dashboard.py +563 -563
- tapps_agents/core/analytics_enhancements.py +597 -597
- tapps_agents/core/anonymization.py +274 -274
- tapps_agents/core/ast_parser.py +228 -228
- tapps_agents/core/async_file_ops.py +402 -402
- tapps_agents/core/best_practice_consultant.py +299 -299
- tapps_agents/core/brownfield_analyzer.py +299 -299
- tapps_agents/core/brownfield_review.py +541 -541
- tapps_agents/core/browser_controller.py +513 -513
- tapps_agents/core/capability_registry.py +418 -418
- tapps_agents/core/change_impact_analyzer.py +190 -190
- tapps_agents/core/checkpoint_manager.py +377 -377
- tapps_agents/core/code_generator.py +329 -329
- tapps_agents/core/code_validator.py +276 -276
- tapps_agents/core/command_registry.py +327 -327
- tapps_agents/core/context_gathering/__init__.py +2 -2
- tapps_agents/core/context_gathering/repository_explorer.py +28 -28
- tapps_agents/core/context_intelligence/__init__.py +2 -2
- tapps_agents/core/context_intelligence/relevance_scorer.py +24 -24
- tapps_agents/core/context_intelligence/token_budget_manager.py +27 -27
- tapps_agents/core/context_manager.py +240 -240
- tapps_agents/core/cursor_feedback_monitor.py +146 -146
- tapps_agents/core/cursor_verification.py +290 -290
- tapps_agents/core/customization_loader.py +280 -280
- tapps_agents/core/customization_schema.py +260 -260
- tapps_agents/core/customization_template.py +238 -238
- tapps_agents/core/debug_logger.py +124 -124
- tapps_agents/core/design_validator.py +298 -298
- tapps_agents/core/diagram_generator.py +226 -226
- tapps_agents/core/docker_utils.py +232 -232
- tapps_agents/core/document_generator.py +617 -617
- tapps_agents/core/domain_detector.py +30 -30
- tapps_agents/core/error_envelope.py +454 -454
- tapps_agents/core/error_handler.py +270 -270
- tapps_agents/core/estimation_tracker.py +189 -189
- tapps_agents/core/eval_prompt_engine.py +116 -116
- tapps_agents/core/evaluation_base.py +119 -119
- tapps_agents/core/evaluation_models.py +320 -320
- tapps_agents/core/evaluation_orchestrator.py +225 -225
- tapps_agents/core/evaluators/__init__.py +7 -7
- tapps_agents/core/evaluators/architectural_evaluator.py +205 -205
- tapps_agents/core/evaluators/behavioral_evaluator.py +160 -160
- tapps_agents/core/evaluators/performance_profile_evaluator.py +160 -160
- tapps_agents/core/evaluators/security_posture_evaluator.py +148 -148
- tapps_agents/core/evaluators/spec_compliance_evaluator.py +181 -181
- tapps_agents/core/exceptions.py +107 -107
- tapps_agents/core/expert_config_generator.py +293 -293
- tapps_agents/core/export_schema.py +202 -202
- tapps_agents/core/external_feedback_models.py +102 -102
- tapps_agents/core/external_feedback_storage.py +213 -213
- tapps_agents/core/fallback_strategy.py +314 -314
- tapps_agents/core/feedback_analyzer.py +162 -162
- tapps_agents/core/feedback_collector.py +178 -178
- tapps_agents/core/git_operations.py +445 -445
- tapps_agents/core/hardware_profiler.py +151 -151
- tapps_agents/core/instructions.py +324 -324
- tapps_agents/core/io_guardrails.py +69 -69
- tapps_agents/core/issue_manifest.py +249 -249
- tapps_agents/core/issue_schema.py +139 -139
- tapps_agents/core/json_utils.py +128 -128
- tapps_agents/core/knowledge_graph.py +446 -446
- tapps_agents/core/language_detector.py +296 -296
- tapps_agents/core/learning_confidence.py +242 -242
- tapps_agents/core/learning_dashboard.py +246 -246
- tapps_agents/core/learning_decision.py +384 -384
- tapps_agents/core/learning_explainability.py +578 -578
- tapps_agents/core/learning_export.py +287 -287
- tapps_agents/core/learning_integration.py +228 -228
- tapps_agents/core/llm_behavior.py +232 -232
- tapps_agents/core/long_duration_support.py +786 -786
- tapps_agents/core/mcp_setup.py +106 -106
- tapps_agents/core/memory_integration.py +396 -396
- tapps_agents/core/meta_learning.py +666 -666
- tapps_agents/core/module_path_sanitizer.py +199 -199
- tapps_agents/core/multi_agent_orchestrator.py +382 -382
- tapps_agents/core/network_errors.py +125 -125
- tapps_agents/core/nfr_validator.py +336 -336
- tapps_agents/core/offline_mode.py +158 -158
- tapps_agents/core/output_contracts.py +300 -300
- tapps_agents/core/output_formatter.py +300 -300
- tapps_agents/core/path_normalizer.py +174 -174
- tapps_agents/core/path_validator.py +322 -322
- tapps_agents/core/pattern_library.py +250 -250
- tapps_agents/core/performance_benchmark.py +301 -301
- tapps_agents/core/performance_monitor.py +184 -184
- tapps_agents/core/playwright_mcp_controller.py +771 -771
- tapps_agents/core/policy_loader.py +135 -135
- tapps_agents/core/progress.py +166 -166
- tapps_agents/core/project_profile.py +354 -354
- tapps_agents/core/project_type_detector.py +454 -454
- tapps_agents/core/prompt_base.py +223 -223
- tapps_agents/core/prompt_learning/__init__.py +2 -2
- tapps_agents/core/prompt_learning/learning_loop.py +24 -24
- tapps_agents/core/prompt_learning/project_prompt_store.py +25 -25
- tapps_agents/core/prompt_learning/skills_prompt_analyzer.py +35 -35
- tapps_agents/core/prompt_optimization/__init__.py +6 -6
- tapps_agents/core/prompt_optimization/ab_tester.py +114 -114
- tapps_agents/core/prompt_optimization/correlation_analyzer.py +160 -160
- tapps_agents/core/prompt_optimization/progressive_refiner.py +129 -129
- tapps_agents/core/prompt_optimization/prompt_library.py +37 -37
- tapps_agents/core/requirements_evaluator.py +431 -431
- tapps_agents/core/resource_aware_executor.py +449 -449
- tapps_agents/core/resource_monitor.py +343 -343
- tapps_agents/core/resume_handler.py +298 -298
- tapps_agents/core/retry_handler.py +197 -197
- tapps_agents/core/review_checklists.py +479 -479
- tapps_agents/core/role_loader.py +201 -201
- tapps_agents/core/role_template_loader.py +201 -201
- tapps_agents/core/runtime_mode.py +60 -60
- tapps_agents/core/security_scanner.py +342 -342
- tapps_agents/core/skill_agent_registry.py +194 -194
- tapps_agents/core/skill_integration.py +208 -208
- tapps_agents/core/skill_loader.py +492 -492
- tapps_agents/core/skill_template.py +341 -341
- tapps_agents/core/skill_validator.py +478 -478
- tapps_agents/core/stack_analyzer.py +35 -35
- tapps_agents/core/startup.py +174 -174
- tapps_agents/core/storage_manager.py +397 -397
- tapps_agents/core/storage_models.py +166 -166
- tapps_agents/core/story_evaluator.py +410 -410
- tapps_agents/core/subprocess_utils.py +170 -170
- tapps_agents/core/task_duration.py +296 -296
- tapps_agents/core/task_memory.py +582 -582
- tapps_agents/core/task_state.py +226 -226
- tapps_agents/core/tech_stack_priorities.py +208 -208
- tapps_agents/core/temp_directory.py +194 -194
- tapps_agents/core/template_merger.py +600 -600
- tapps_agents/core/template_selector.py +280 -280
- tapps_agents/core/test_generator.py +286 -286
- tapps_agents/core/tiered_context.py +253 -253
- tapps_agents/core/token_monitor.py +345 -345
- tapps_agents/core/traceability.py +254 -254
- tapps_agents/core/trajectory_tracker.py +50 -50
- tapps_agents/core/unicode_safe.py +143 -143
- tapps_agents/core/unified_cache_config.py +170 -170
- tapps_agents/core/unified_state.py +324 -324
- tapps_agents/core/validate_cursor_setup.py +237 -237
- tapps_agents/core/validation_registry.py +136 -136
- tapps_agents/core/validators/__init__.py +4 -4
- tapps_agents/core/validators/python_validator.py +87 -87
- tapps_agents/core/verification_agent.py +90 -90
- tapps_agents/core/visual_feedback.py +644 -644
- tapps_agents/core/workflow_validator.py +197 -197
- tapps_agents/core/worktree.py +367 -367
- tapps_agents/docker/__init__.py +10 -10
- tapps_agents/docker/analyzer.py +186 -186
- tapps_agents/docker/debugger.py +229 -229
- tapps_agents/docker/error_patterns.py +216 -216
- tapps_agents/epic/__init__.py +22 -22
- tapps_agents/epic/beads_sync.py +115 -115
- tapps_agents/epic/markdown_sync.py +105 -105
- tapps_agents/epic/models.py +96 -96
- tapps_agents/experts/__init__.py +163 -163
- tapps_agents/experts/agent_integration.py +243 -243
- tapps_agents/experts/auto_generator.py +331 -331
- tapps_agents/experts/base_expert.py +536 -536
- tapps_agents/experts/builtin_registry.py +261 -261
- tapps_agents/experts/business_metrics.py +565 -565
- tapps_agents/experts/cache.py +266 -266
- tapps_agents/experts/confidence_breakdown.py +306 -306
- tapps_agents/experts/confidence_calculator.py +336 -336
- tapps_agents/experts/confidence_metrics.py +236 -236
- tapps_agents/experts/domain_config.py +311 -311
- tapps_agents/experts/domain_detector.py +550 -550
- tapps_agents/experts/domain_utils.py +84 -84
- tapps_agents/experts/expert_config.py +113 -113
- tapps_agents/experts/expert_engine.py +465 -465
- tapps_agents/experts/expert_registry.py +744 -744
- tapps_agents/experts/expert_synthesizer.py +70 -70
- tapps_agents/experts/governance.py +197 -197
- tapps_agents/experts/history_logger.py +312 -312
- tapps_agents/experts/knowledge/README.md +180 -180
- tapps_agents/experts/knowledge/accessibility/accessible-forms.md +331 -331
- tapps_agents/experts/knowledge/accessibility/aria-patterns.md +344 -344
- tapps_agents/experts/knowledge/accessibility/color-contrast.md +285 -285
- tapps_agents/experts/knowledge/accessibility/keyboard-navigation.md +332 -332
- tapps_agents/experts/knowledge/accessibility/screen-readers.md +282 -282
- tapps_agents/experts/knowledge/accessibility/semantic-html.md +355 -355
- tapps_agents/experts/knowledge/accessibility/testing-accessibility.md +369 -369
- tapps_agents/experts/knowledge/accessibility/wcag-2.1.md +296 -296
- tapps_agents/experts/knowledge/accessibility/wcag-2.2.md +211 -211
- tapps_agents/experts/knowledge/agent-learning/best-practices.md +715 -715
- tapps_agents/experts/knowledge/agent-learning/pattern-extraction.md +282 -282
- tapps_agents/experts/knowledge/agent-learning/prompt-optimization.md +320 -320
- tapps_agents/experts/knowledge/ai-frameworks/model-optimization.md +90 -90
- tapps_agents/experts/knowledge/ai-frameworks/openvino-patterns.md +260 -260
- tapps_agents/experts/knowledge/api-design-integration/api-gateway-patterns.md +309 -309
- tapps_agents/experts/knowledge/api-design-integration/api-security-patterns.md +521 -521
- tapps_agents/experts/knowledge/api-design-integration/api-versioning.md +421 -421
- tapps_agents/experts/knowledge/api-design-integration/async-protocol-patterns.md +61 -61
- tapps_agents/experts/knowledge/api-design-integration/contract-testing.md +221 -221
- tapps_agents/experts/knowledge/api-design-integration/external-api-integration.md +489 -489
- tapps_agents/experts/knowledge/api-design-integration/fastapi-patterns.md +360 -360
- tapps_agents/experts/knowledge/api-design-integration/fastapi-testing.md +262 -262
- tapps_agents/experts/knowledge/api-design-integration/graphql-patterns.md +582 -582
- tapps_agents/experts/knowledge/api-design-integration/grpc-best-practices.md +499 -499
- tapps_agents/experts/knowledge/api-design-integration/mqtt-patterns.md +455 -455
- tapps_agents/experts/knowledge/api-design-integration/rate-limiting.md +507 -507
- tapps_agents/experts/knowledge/api-design-integration/restful-api-design.md +618 -618
- tapps_agents/experts/knowledge/api-design-integration/websocket-patterns.md +480 -480
- tapps_agents/experts/knowledge/cloud-infrastructure/cloud-native-patterns.md +175 -175
- tapps_agents/experts/knowledge/cloud-infrastructure/container-health-checks.md +261 -261
- tapps_agents/experts/knowledge/cloud-infrastructure/containerization.md +222 -222
- tapps_agents/experts/knowledge/cloud-infrastructure/cost-optimization.md +122 -122
- tapps_agents/experts/knowledge/cloud-infrastructure/disaster-recovery.md +153 -153
- tapps_agents/experts/knowledge/cloud-infrastructure/dockerfile-patterns.md +285 -285
- tapps_agents/experts/knowledge/cloud-infrastructure/infrastructure-as-code.md +187 -187
- tapps_agents/experts/knowledge/cloud-infrastructure/kubernetes-patterns.md +253 -253
- tapps_agents/experts/knowledge/cloud-infrastructure/multi-cloud-strategies.md +155 -155
- tapps_agents/experts/knowledge/cloud-infrastructure/serverless-architecture.md +200 -200
- tapps_agents/experts/knowledge/code-quality-analysis/README.md +16 -16
- tapps_agents/experts/knowledge/code-quality-analysis/code-metrics.md +137 -137
- tapps_agents/experts/knowledge/code-quality-analysis/complexity-analysis.md +181 -181
- tapps_agents/experts/knowledge/code-quality-analysis/technical-debt-patterns.md +191 -191
- tapps_agents/experts/knowledge/data-privacy-compliance/anonymization.md +313 -313
- tapps_agents/experts/knowledge/data-privacy-compliance/ccpa.md +255 -255
- tapps_agents/experts/knowledge/data-privacy-compliance/consent-management.md +282 -282
- tapps_agents/experts/knowledge/data-privacy-compliance/data-minimization.md +275 -275
- tapps_agents/experts/knowledge/data-privacy-compliance/data-retention.md +297 -297
- tapps_agents/experts/knowledge/data-privacy-compliance/data-subject-rights.md +383 -383
- tapps_agents/experts/knowledge/data-privacy-compliance/encryption-privacy.md +285 -285
- tapps_agents/experts/knowledge/data-privacy-compliance/gdpr.md +344 -344
- tapps_agents/experts/knowledge/data-privacy-compliance/hipaa.md +385 -385
- tapps_agents/experts/knowledge/data-privacy-compliance/privacy-by-design.md +280 -280
- tapps_agents/experts/knowledge/database-data-management/acid-vs-cap.md +164 -164
- tapps_agents/experts/knowledge/database-data-management/backup-and-recovery.md +182 -182
- tapps_agents/experts/knowledge/database-data-management/data-modeling.md +172 -172
- tapps_agents/experts/knowledge/database-data-management/database-design.md +187 -187
- tapps_agents/experts/knowledge/database-data-management/flux-query-optimization.md +342 -342
- tapps_agents/experts/knowledge/database-data-management/influxdb-connection-patterns.md +432 -432
- tapps_agents/experts/knowledge/database-data-management/influxdb-patterns.md +442 -442
- tapps_agents/experts/knowledge/database-data-management/migration-strategies.md +216 -216
- tapps_agents/experts/knowledge/database-data-management/nosql-patterns.md +259 -259
- tapps_agents/experts/knowledge/database-data-management/scalability-patterns.md +184 -184
- tapps_agents/experts/knowledge/database-data-management/sql-optimization.md +175 -175
- tapps_agents/experts/knowledge/database-data-management/time-series-modeling.md +444 -444
- tapps_agents/experts/knowledge/development-workflow/README.md +16 -16
- tapps_agents/experts/knowledge/development-workflow/automation-best-practices.md +216 -216
- tapps_agents/experts/knowledge/development-workflow/build-strategies.md +198 -198
- tapps_agents/experts/knowledge/development-workflow/deployment-patterns.md +205 -205
- tapps_agents/experts/knowledge/development-workflow/git-workflows.md +205 -205
- tapps_agents/experts/knowledge/documentation-knowledge-management/README.md +16 -16
- tapps_agents/experts/knowledge/documentation-knowledge-management/api-documentation-patterns.md +231 -231
- tapps_agents/experts/knowledge/documentation-knowledge-management/documentation-standards.md +191 -191
- tapps_agents/experts/knowledge/documentation-knowledge-management/knowledge-management.md +171 -171
- tapps_agents/experts/knowledge/documentation-knowledge-management/technical-writing-guide.md +192 -192
- tapps_agents/experts/knowledge/observability-monitoring/alerting-patterns.md +461 -461
- tapps_agents/experts/knowledge/observability-monitoring/apm-tools.md +459 -459
- tapps_agents/experts/knowledge/observability-monitoring/distributed-tracing.md +367 -367
- tapps_agents/experts/knowledge/observability-monitoring/logging-strategies.md +478 -478
- tapps_agents/experts/knowledge/observability-monitoring/metrics-and-monitoring.md +510 -510
- tapps_agents/experts/knowledge/observability-monitoring/observability-best-practices.md +492 -492
- tapps_agents/experts/knowledge/observability-monitoring/open-telemetry.md +573 -573
- tapps_agents/experts/knowledge/observability-monitoring/slo-sli-sla.md +419 -419
- tapps_agents/experts/knowledge/performance/anti-patterns.md +284 -284
- tapps_agents/experts/knowledge/performance/api-performance.md +256 -256
- tapps_agents/experts/knowledge/performance/caching.md +327 -327
- tapps_agents/experts/knowledge/performance/database-performance.md +252 -252
- tapps_agents/experts/knowledge/performance/optimization-patterns.md +327 -327
- tapps_agents/experts/knowledge/performance/profiling.md +297 -297
- tapps_agents/experts/knowledge/performance/resource-management.md +293 -293
- tapps_agents/experts/knowledge/performance/scalability.md +306 -306
- tapps_agents/experts/knowledge/security/owasp-top10.md +209 -209
- tapps_agents/experts/knowledge/security/secure-coding-practices.md +207 -207
- tapps_agents/experts/knowledge/security/threat-modeling.md +220 -220
- tapps_agents/experts/knowledge/security/vulnerability-patterns.md +342 -342
- tapps_agents/experts/knowledge/software-architecture/docker-compose-patterns.md +314 -314
- tapps_agents/experts/knowledge/software-architecture/microservices-patterns.md +379 -379
- tapps_agents/experts/knowledge/software-architecture/service-communication.md +316 -316
- tapps_agents/experts/knowledge/testing/best-practices.md +310 -310
- tapps_agents/experts/knowledge/testing/coverage-analysis.md +293 -293
- tapps_agents/experts/knowledge/testing/mocking.md +256 -256
- tapps_agents/experts/knowledge/testing/test-automation.md +276 -276
- tapps_agents/experts/knowledge/testing/test-data.md +271 -271
- tapps_agents/experts/knowledge/testing/test-design-patterns.md +280 -280
- tapps_agents/experts/knowledge/testing/test-maintenance.md +236 -236
- tapps_agents/experts/knowledge/testing/test-strategies.md +311 -311
- tapps_agents/experts/knowledge/user-experience/information-architecture.md +325 -325
- tapps_agents/experts/knowledge/user-experience/interaction-design.md +363 -363
- tapps_agents/experts/knowledge/user-experience/prototyping.md +293 -293
- tapps_agents/experts/knowledge/user-experience/usability-heuristics.md +337 -337
- tapps_agents/experts/knowledge/user-experience/usability-testing.md +311 -311
- tapps_agents/experts/knowledge/user-experience/user-journeys.md +296 -296
- tapps_agents/experts/knowledge/user-experience/user-research.md +373 -373
- tapps_agents/experts/knowledge/user-experience/ux-principles.md +340 -340
- tapps_agents/experts/knowledge_freshness.py +321 -321
- tapps_agents/experts/knowledge_ingestion.py +438 -438
- tapps_agents/experts/knowledge_need_detector.py +93 -93
- tapps_agents/experts/knowledge_validator.py +382 -382
- tapps_agents/experts/observability.py +440 -440
- tapps_agents/experts/passive_notifier.py +238 -238
- tapps_agents/experts/proactive_orchestrator.py +32 -32
- tapps_agents/experts/rag_chunker.py +205 -205
- tapps_agents/experts/rag_embedder.py +152 -152
- tapps_agents/experts/rag_evaluation.py +299 -299
- tapps_agents/experts/rag_index.py +303 -303
- tapps_agents/experts/rag_metrics.py +293 -293
- tapps_agents/experts/rag_safety.py +263 -263
- tapps_agents/experts/report_generator.py +296 -296
- tapps_agents/experts/setup_wizard.py +441 -441
- tapps_agents/experts/simple_rag.py +431 -431
- tapps_agents/experts/vector_rag.py +354 -354
- tapps_agents/experts/weight_distributor.py +304 -304
- tapps_agents/health/__init__.py +24 -24
- tapps_agents/health/base.py +75 -75
- tapps_agents/health/checks/__init__.py +22 -22
- tapps_agents/health/checks/automation.py +127 -127
- tapps_agents/health/checks/context7_cache.py +210 -210
- tapps_agents/health/checks/environment.py +116 -116
- tapps_agents/health/checks/execution.py +170 -170
- tapps_agents/health/checks/knowledge_base.py +187 -187
- tapps_agents/health/checks/outcomes.backup_20260204_064058.py +324 -0
- tapps_agents/health/checks/outcomes.backup_20260204_064256.py +324 -0
- tapps_agents/health/checks/outcomes.backup_20260204_064600.py +324 -0
- tapps_agents/health/checks/outcomes.py +324 -324
- tapps_agents/health/collector.py +280 -280
- tapps_agents/health/dashboard.py +137 -137
- tapps_agents/health/metrics.py +151 -151
- tapps_agents/health/registry.py +166 -166
- tapps_agents/hooks/__init__.py +33 -33
- tapps_agents/hooks/config.py +140 -140
- tapps_agents/hooks/events.py +135 -135
- tapps_agents/hooks/executor.py +128 -128
- tapps_agents/hooks/manager.py +143 -143
- tapps_agents/integration/__init__.py +8 -8
- tapps_agents/integration/service_integrator.py +121 -121
- tapps_agents/integrations/__init__.py +10 -10
- tapps_agents/integrations/clawdbot.py +525 -525
- tapps_agents/integrations/memory_bridge.py +356 -356
- tapps_agents/mcp/__init__.py +18 -18
- tapps_agents/mcp/gateway.py +112 -112
- tapps_agents/mcp/servers/__init__.py +13 -13
- tapps_agents/mcp/servers/analysis.py +204 -204
- tapps_agents/mcp/servers/context7.py +198 -198
- tapps_agents/mcp/servers/filesystem.py +218 -218
- tapps_agents/mcp/servers/git.py +201 -201
- tapps_agents/mcp/tool_registry.py +115 -115
- tapps_agents/quality/__init__.py +54 -54
- tapps_agents/quality/coverage_analyzer.py +379 -379
- tapps_agents/quality/enforcement.py +82 -82
- tapps_agents/quality/gates/__init__.py +37 -37
- tapps_agents/quality/gates/approval_gate.py +255 -255
- tapps_agents/quality/gates/base.py +84 -84
- tapps_agents/quality/gates/exceptions.py +43 -43
- tapps_agents/quality/gates/policy_gate.py +195 -195
- tapps_agents/quality/gates/registry.py +239 -239
- tapps_agents/quality/gates/security_gate.py +156 -156
- tapps_agents/quality/quality_gates.py +369 -369
- tapps_agents/quality/secret_scanner.py +335 -335
- tapps_agents/resources/__init__.py +5 -0
- tapps_agents/resources/claude/__init__.py +1 -0
- tapps_agents/resources/claude/commands/README.md +156 -0
- tapps_agents/resources/claude/commands/__init__.py +1 -0
- tapps_agents/resources/claude/commands/build-fix.md +22 -0
- tapps_agents/resources/claude/commands/build.md +77 -0
- tapps_agents/resources/claude/commands/debug.md +53 -0
- tapps_agents/resources/claude/commands/design.md +68 -0
- tapps_agents/resources/claude/commands/docs.md +53 -0
- tapps_agents/resources/claude/commands/e2e.md +22 -0
- tapps_agents/resources/claude/commands/fix.md +54 -0
- tapps_agents/resources/claude/commands/implement.md +53 -0
- tapps_agents/resources/claude/commands/improve.md +53 -0
- tapps_agents/resources/claude/commands/library-docs.md +64 -0
- tapps_agents/resources/claude/commands/lint.md +52 -0
- tapps_agents/resources/claude/commands/plan.md +65 -0
- tapps_agents/resources/claude/commands/refactor-clean.md +21 -0
- tapps_agents/resources/claude/commands/refactor.md +55 -0
- tapps_agents/resources/claude/commands/review.md +67 -0
- tapps_agents/resources/claude/commands/score.md +60 -0
- tapps_agents/resources/claude/commands/security-review.md +22 -0
- tapps_agents/resources/claude/commands/security-scan.md +54 -0
- tapps_agents/resources/claude/commands/tdd.md +24 -0
- tapps_agents/resources/claude/commands/test-coverage.md +21 -0
- tapps_agents/resources/claude/commands/test.md +54 -0
- tapps_agents/resources/claude/commands/update-codemaps.md +20 -0
- tapps_agents/resources/claude/commands/update-docs.md +21 -0
- tapps_agents/resources/claude/skills/__init__.py +1 -0
- tapps_agents/resources/claude/skills/analyst/SKILL.md +272 -0
- tapps_agents/resources/claude/skills/analyst/__init__.py +1 -0
- tapps_agents/resources/claude/skills/architect/SKILL.md +282 -0
- tapps_agents/resources/claude/skills/architect/__init__.py +1 -0
- tapps_agents/resources/claude/skills/backend-patterns/SKILL.md +30 -0
- tapps_agents/resources/claude/skills/backend-patterns/__init__.py +1 -0
- tapps_agents/resources/claude/skills/coding-standards/SKILL.md +29 -0
- tapps_agents/resources/claude/skills/coding-standards/__init__.py +1 -0
- tapps_agents/resources/claude/skills/debugger/SKILL.md +203 -0
- tapps_agents/resources/claude/skills/debugger/__init__.py +1 -0
- tapps_agents/resources/claude/skills/designer/SKILL.md +243 -0
- tapps_agents/resources/claude/skills/designer/__init__.py +1 -0
- tapps_agents/resources/claude/skills/documenter/SKILL.md +252 -0
- tapps_agents/resources/claude/skills/documenter/__init__.py +1 -0
- tapps_agents/resources/claude/skills/enhancer/SKILL.md +307 -0
- tapps_agents/resources/claude/skills/enhancer/__init__.py +1 -0
- tapps_agents/resources/claude/skills/evaluator/SKILL.md +204 -0
- tapps_agents/resources/claude/skills/evaluator/__init__.py +1 -0
- tapps_agents/resources/claude/skills/frontend-patterns/SKILL.md +29 -0
- tapps_agents/resources/claude/skills/frontend-patterns/__init__.py +1 -0
- tapps_agents/resources/claude/skills/implementer/SKILL.md +188 -0
- tapps_agents/resources/claude/skills/implementer/__init__.py +1 -0
- tapps_agents/resources/claude/skills/improver/SKILL.md +218 -0
- tapps_agents/resources/claude/skills/improver/__init__.py +1 -0
- tapps_agents/resources/claude/skills/ops/SKILL.md +281 -0
- tapps_agents/resources/claude/skills/ops/__init__.py +1 -0
- tapps_agents/resources/claude/skills/orchestrator/SKILL.md +390 -0
- tapps_agents/resources/claude/skills/orchestrator/__init__.py +1 -0
- tapps_agents/resources/claude/skills/planner/SKILL.md +254 -0
- tapps_agents/resources/claude/skills/planner/__init__.py +1 -0
- tapps_agents/resources/claude/skills/reviewer/SKILL.md +434 -0
- tapps_agents/resources/claude/skills/reviewer/__init__.py +1 -0
- tapps_agents/resources/claude/skills/security-review/SKILL.md +31 -0
- tapps_agents/resources/claude/skills/security-review/__init__.py +1 -0
- tapps_agents/resources/claude/skills/simple-mode/SKILL.md +695 -0
- tapps_agents/resources/claude/skills/simple-mode/__init__.py +1 -0
- tapps_agents/resources/claude/skills/tester/SKILL.md +219 -0
- tapps_agents/resources/claude/skills/tester/__init__.py +1 -0
- tapps_agents/resources/cursor/.cursorignore +35 -0
- tapps_agents/resources/cursor/__init__.py +1 -0
- tapps_agents/resources/cursor/commands/__init__.py +1 -0
- tapps_agents/resources/cursor/commands/build-fix.md +11 -0
- tapps_agents/resources/cursor/commands/build.md +11 -0
- tapps_agents/resources/cursor/commands/e2e.md +11 -0
- tapps_agents/resources/cursor/commands/fix.md +11 -0
- tapps_agents/resources/cursor/commands/refactor-clean.md +11 -0
- tapps_agents/resources/cursor/commands/review.md +11 -0
- tapps_agents/resources/cursor/commands/security-review.md +11 -0
- tapps_agents/resources/cursor/commands/tdd.md +11 -0
- tapps_agents/resources/cursor/commands/test-coverage.md +11 -0
- tapps_agents/resources/cursor/commands/test.md +11 -0
- tapps_agents/resources/cursor/commands/update-codemaps.md +10 -0
- tapps_agents/resources/cursor/commands/update-docs.md +11 -0
- tapps_agents/resources/cursor/rules/__init__.py +1 -0
- tapps_agents/resources/cursor/rules/agent-capabilities.mdc +687 -0
- tapps_agents/resources/cursor/rules/coding-style.mdc +31 -0
- tapps_agents/resources/cursor/rules/command-reference.mdc +2081 -0
- tapps_agents/resources/cursor/rules/cursor-mode-usage.mdc +125 -0
- tapps_agents/resources/cursor/rules/git-workflow.mdc +29 -0
- tapps_agents/resources/cursor/rules/performance.mdc +29 -0
- tapps_agents/resources/cursor/rules/project-context.mdc +163 -0
- tapps_agents/resources/cursor/rules/project-profiling.mdc +197 -0
- tapps_agents/resources/cursor/rules/quick-reference.mdc +630 -0
- tapps_agents/resources/cursor/rules/security.mdc +32 -0
- tapps_agents/resources/cursor/rules/simple-mode.mdc +500 -0
- tapps_agents/resources/cursor/rules/testing.mdc +31 -0
- tapps_agents/resources/cursor/rules/when-to-use.mdc +156 -0
- tapps_agents/resources/cursor/rules/workflow-presets.mdc +179 -0
- tapps_agents/resources/customizations/__init__.py +1 -0
- tapps_agents/resources/customizations/example-custom.yaml +83 -0
- tapps_agents/resources/hooks/__init__.py +1 -0
- tapps_agents/resources/hooks/templates/README.md +5 -0
- tapps_agents/resources/hooks/templates/__init__.py +1 -0
- tapps_agents/resources/hooks/templates/add-project-context.yaml +8 -0
- tapps_agents/resources/hooks/templates/auto-format-js.yaml +10 -0
- tapps_agents/resources/hooks/templates/auto-format-python.yaml +10 -0
- tapps_agents/resources/hooks/templates/git-commit-check.yaml +7 -0
- tapps_agents/resources/hooks/templates/notify-on-complete.yaml +8 -0
- tapps_agents/resources/hooks/templates/quality-gate.yaml +8 -0
- tapps_agents/resources/hooks/templates/security-scan-on-edit.yaml +10 -0
- tapps_agents/resources/hooks/templates/session-end-log.yaml +7 -0
- tapps_agents/resources/hooks/templates/show-beads-ready.yaml +8 -0
- tapps_agents/resources/hooks/templates/test-on-edit.yaml +10 -0
- tapps_agents/resources/hooks/templates/update-docs-on-complete.yaml +8 -0
- tapps_agents/resources/hooks/templates/user-prompt-log.yaml +7 -0
- tapps_agents/resources/scripts/__init__.py +1 -0
- tapps_agents/resources/scripts/set_bd_path.ps1 +51 -0
- tapps_agents/resources/workflows/__init__.py +1 -0
- tapps_agents/resources/workflows/presets/__init__.py +1 -0
- tapps_agents/resources/workflows/presets/brownfield-analysis.yaml +235 -0
- tapps_agents/resources/workflows/presets/fix.yaml +78 -0
- tapps_agents/resources/workflows/presets/full-sdlc.yaml +122 -0
- tapps_agents/resources/workflows/presets/quality.yaml +82 -0
- tapps_agents/resources/workflows/presets/rapid-dev.yaml +84 -0
- tapps_agents/session/__init__.py +19 -19
- tapps_agents/session/manager.py +256 -256
- tapps_agents/simple_mode/__init__.py +66 -66
- tapps_agents/simple_mode/agent_contracts.py +357 -357
- tapps_agents/simple_mode/beads_hooks.py +151 -151
- tapps_agents/simple_mode/code_snippet_handler.py +382 -382
- tapps_agents/simple_mode/documentation_manager.py +395 -395
- tapps_agents/simple_mode/documentation_reader.py +187 -187
- tapps_agents/simple_mode/file_inference.py +292 -292
- tapps_agents/simple_mode/framework_change_detector.py +268 -268
- tapps_agents/simple_mode/intent_parser.py +510 -510
- tapps_agents/simple_mode/learning_progression.py +358 -358
- tapps_agents/simple_mode/nl_handler.py +700 -700
- tapps_agents/simple_mode/onboarding.py +253 -253
- tapps_agents/simple_mode/orchestrators/__init__.py +38 -38
- tapps_agents/simple_mode/orchestrators/breakdown_orchestrator.py +49 -49
- tapps_agents/simple_mode/orchestrators/brownfield_orchestrator.py +135 -135
- tapps_agents/simple_mode/orchestrators/deliverable_checklist.py +349 -349
- tapps_agents/simple_mode/orchestrators/enhance_orchestrator.py +53 -53
- tapps_agents/simple_mode/orchestrators/epic_orchestrator.py +122 -122
- tapps_agents/simple_mode/orchestrators/explore_orchestrator.py +184 -184
- tapps_agents/simple_mode/orchestrators/plan_analysis_orchestrator.py +206 -206
- tapps_agents/simple_mode/orchestrators/pr_orchestrator.py +237 -237
- tapps_agents/simple_mode/orchestrators/refactor_orchestrator.py +222 -222
- tapps_agents/simple_mode/orchestrators/requirements_tracer.py +262 -262
- tapps_agents/simple_mode/orchestrators/resume_orchestrator.py +210 -210
- tapps_agents/simple_mode/orchestrators/review_orchestrator.py +161 -161
- tapps_agents/simple_mode/orchestrators/test_orchestrator.py +82 -82
- tapps_agents/simple_mode/output_aggregator.py +340 -340
- tapps_agents/simple_mode/result_formatters.py +598 -598
- tapps_agents/simple_mode/step_dependencies.py +382 -382
- tapps_agents/simple_mode/step_results.py +276 -276
- tapps_agents/simple_mode/streaming.py +388 -388
- tapps_agents/simple_mode/variations.py +129 -129
- tapps_agents/simple_mode/visual_feedback.py +238 -238
- tapps_agents/simple_mode/zero_config.py +274 -274
- tapps_agents/suggestions/__init__.py +8 -8
- tapps_agents/suggestions/inline_suggester.py +52 -52
- tapps_agents/templates/__init__.py +8 -8
- tapps_agents/templates/microservice_generator.py +274 -274
- tapps_agents/utils/env_validator.py +291 -291
- tapps_agents/workflow/__init__.py +171 -171
- tapps_agents/workflow/acceptance_verifier.py +132 -132
- tapps_agents/workflow/agent_handlers/__init__.py +41 -41
- tapps_agents/workflow/agent_handlers/analyst_handler.py +75 -75
- tapps_agents/workflow/agent_handlers/architect_handler.py +107 -107
- tapps_agents/workflow/agent_handlers/base.py +84 -84
- tapps_agents/workflow/agent_handlers/debugger_handler.py +100 -100
- tapps_agents/workflow/agent_handlers/designer_handler.py +110 -110
- tapps_agents/workflow/agent_handlers/documenter_handler.py +94 -94
- tapps_agents/workflow/agent_handlers/implementer_handler.py +235 -235
- tapps_agents/workflow/agent_handlers/ops_handler.py +62 -62
- tapps_agents/workflow/agent_handlers/orchestrator_handler.py +43 -43
- tapps_agents/workflow/agent_handlers/planner_handler.py +98 -98
- tapps_agents/workflow/agent_handlers/registry.py +119 -119
- tapps_agents/workflow/agent_handlers/reviewer_handler.py +119 -119
- tapps_agents/workflow/agent_handlers/tester_handler.py +69 -69
- tapps_agents/workflow/analytics_accessor.py +337 -337
- tapps_agents/workflow/analytics_alerts.py +416 -416
- tapps_agents/workflow/analytics_dashboard_cursor.py +281 -281
- tapps_agents/workflow/analytics_dual_write.py +103 -103
- tapps_agents/workflow/analytics_integration.py +119 -119
- tapps_agents/workflow/analytics_query_parser.py +278 -278
- tapps_agents/workflow/analytics_visualizer.py +259 -259
- tapps_agents/workflow/artifact_helper.py +204 -204
- tapps_agents/workflow/audit_logger.py +263 -263
- tapps_agents/workflow/auto_execution_config.py +340 -340
- tapps_agents/workflow/auto_progression.py +586 -586
- tapps_agents/workflow/branch_cleanup.py +349 -349
- tapps_agents/workflow/checkpoint.py +256 -256
- tapps_agents/workflow/checkpoint_manager.py +178 -178
- tapps_agents/workflow/code_artifact.py +179 -179
- tapps_agents/workflow/common_enums.py +96 -96
- tapps_agents/workflow/confirmation_handler.py +130 -130
- tapps_agents/workflow/context_analyzer.py +222 -222
- tapps_agents/workflow/context_artifact.py +230 -230
- tapps_agents/workflow/cursor_chat.py +94 -94
- tapps_agents/workflow/cursor_skill_helper.py +516 -516
- tapps_agents/workflow/dependency_resolver.py +244 -244
- tapps_agents/workflow/design_artifact.py +156 -156
- tapps_agents/workflow/detector.py +751 -751
- tapps_agents/workflow/direct_execution_fallback.py +301 -301
- tapps_agents/workflow/docs_artifact.py +168 -168
- tapps_agents/workflow/enforcer.py +389 -389
- tapps_agents/workflow/enhancement_artifact.py +142 -142
- tapps_agents/workflow/error_recovery.py +806 -806
- tapps_agents/workflow/event_bus.py +183 -183
- tapps_agents/workflow/event_log.py +612 -612
- tapps_agents/workflow/events.py +63 -63
- tapps_agents/workflow/exceptions.py +43 -43
- tapps_agents/workflow/execution_graph.py +498 -498
- tapps_agents/workflow/execution_plan.py +126 -126
- tapps_agents/workflow/file_utils.py +186 -186
- tapps_agents/workflow/gate_evaluator.py +182 -182
- tapps_agents/workflow/gate_integration.py +200 -200
- tapps_agents/workflow/graph_visualizer.py +130 -130
- tapps_agents/workflow/health_checker.py +206 -206
- tapps_agents/workflow/logging_helper.py +243 -243
- tapps_agents/workflow/manifest.py +582 -582
- tapps_agents/workflow/marker_writer.py +250 -250
- tapps_agents/workflow/messaging.py +325 -325
- tapps_agents/workflow/metadata_models.py +91 -91
- tapps_agents/workflow/metrics_integration.py +226 -226
- tapps_agents/workflow/migration_utils.py +116 -116
- tapps_agents/workflow/models.py +148 -148
- tapps_agents/workflow/nlp_config.py +198 -198
- tapps_agents/workflow/nlp_error_handler.py +207 -207
- tapps_agents/workflow/nlp_executor.py +163 -163
- tapps_agents/workflow/nlp_parser.py +528 -528
- tapps_agents/workflow/observability_dashboard.py +451 -451
- tapps_agents/workflow/observer.py +170 -170
- tapps_agents/workflow/ops_artifact.py +257 -257
- tapps_agents/workflow/output_passing.py +214 -214
- tapps_agents/workflow/parallel_executor.py +463 -463
- tapps_agents/workflow/planning_artifact.py +179 -179
- tapps_agents/workflow/preset_loader.py +285 -285
- tapps_agents/workflow/preset_recommender.py +270 -270
- tapps_agents/workflow/progress_logger.py +145 -145
- tapps_agents/workflow/progress_manager.py +303 -303
- tapps_agents/workflow/progress_monitor.py +186 -186
- tapps_agents/workflow/progress_updates.py +423 -423
- tapps_agents/workflow/quality_artifact.py +158 -158
- tapps_agents/workflow/quality_loopback.py +101 -101
- tapps_agents/workflow/recommender.py +387 -387
- tapps_agents/workflow/remediation_loop.py +166 -166
- tapps_agents/workflow/result_aggregator.py +300 -300
- tapps_agents/workflow/review_artifact.py +185 -185
- tapps_agents/workflow/schema_validator.py +522 -522
- tapps_agents/workflow/session_handoff.py +178 -178
- tapps_agents/workflow/skill_invoker.py +648 -648
- tapps_agents/workflow/state_manager.py +756 -756
- tapps_agents/workflow/state_persistence_config.py +331 -331
- tapps_agents/workflow/status_monitor.py +449 -449
- tapps_agents/workflow/step_checkpoint.py +314 -314
- tapps_agents/workflow/step_details.py +201 -201
- tapps_agents/workflow/story_models.py +147 -147
- tapps_agents/workflow/streaming.py +416 -416
- tapps_agents/workflow/suggestion_engine.py +552 -552
- tapps_agents/workflow/testing_artifact.py +186 -186
- tapps_agents/workflow/timeline.py +158 -158
- tapps_agents/workflow/token_integration.py +209 -209
- tapps_agents/workflow/validation.py +217 -217
- tapps_agents/workflow/visual_feedback.py +391 -391
- tapps_agents/workflow/workflow_chain.py +95 -95
- tapps_agents/workflow/workflow_summary.py +219 -219
- tapps_agents/workflow/worktree_manager.py +724 -724
- {tapps_agents-3.6.0.dist-info → tapps_agents-3.6.1.dist-info}/METADATA +672 -672
- tapps_agents-3.6.1.dist-info/RECORD +883 -0
- {tapps_agents-3.6.0.dist-info → tapps_agents-3.6.1.dist-info}/licenses/LICENSE +22 -22
- tapps_agents-3.6.0.dist-info/RECORD +0 -758
- {tapps_agents-3.6.0.dist-info → tapps_agents-3.6.1.dist-info}/WHEEL +0 -0
- {tapps_agents-3.6.0.dist-info → tapps_agents-3.6.1.dist-info}/entry_points.txt +0 -0
- {tapps_agents-3.6.0.dist-info → tapps_agents-3.6.1.dist-info}/top_level.txt +0 -0
|
@@ -1,444 +1,444 @@
|
|
|
1
|
-
# Time-Series Data Modeling
|
|
2
|
-
|
|
3
|
-
## Overview
|
|
4
|
-
|
|
5
|
-
Time-series data modeling requires different patterns than traditional relational databases. This guide covers time-series data architecture, schema design, and optimization strategies for HomeIQ and similar IoT/home automation systems.
|
|
6
|
-
|
|
7
|
-
## Time-Series Data Characteristics
|
|
8
|
-
|
|
9
|
-
### Key Properties
|
|
10
|
-
|
|
11
|
-
1. **Temporal Ordering:** Data points are ordered by time
|
|
12
|
-
2. **High Write Throughput:** Many writes, fewer reads
|
|
13
|
-
3. **Append-Only:** Data is typically inserted, rarely updated
|
|
14
|
-
4. **Time-Based Queries:** Most queries filter by time range
|
|
15
|
-
5. **Downsampling:** Older data is often aggregated
|
|
16
|
-
|
|
17
|
-
### Data Lifecycle
|
|
18
|
-
|
|
19
|
-
```
|
|
20
|
-
Raw Data (1-minute intervals)
|
|
21
|
-
↓ [7 days]
|
|
22
|
-
Downsampled Data (1-hour averages)
|
|
23
|
-
↓ [90 days]
|
|
24
|
-
Aggregated Data (1-day averages)
|
|
25
|
-
↓ [Indefinite]
|
|
26
|
-
Archived Data (1-week averages)
|
|
27
|
-
```
|
|
28
|
-
|
|
29
|
-
## Schema Design Patterns
|
|
30
|
-
|
|
31
|
-
### Pattern 1: Single Measurement, Multiple Sensors
|
|
32
|
-
|
|
33
|
-
**Use Case:** Multiple sensors of the same type
|
|
34
|
-
|
|
35
|
-
```flux
|
|
36
|
-
measurement: "temperature"
|
|
37
|
-
tags:
|
|
38
|
-
- device_id: "sensor_001"
|
|
39
|
-
- location: "kitchen"
|
|
40
|
-
- unit: "fahrenheit"
|
|
41
|
-
fields:
|
|
42
|
-
- value: 72.5
|
|
43
|
-
- battery: 85
|
|
44
|
-
```
|
|
45
|
-
|
|
46
|
-
**Pros:**
|
|
47
|
-
- Simple queries across all sensors
|
|
48
|
-
- Easy aggregation
|
|
49
|
-
- Consistent schema
|
|
50
|
-
|
|
51
|
-
**Cons:**
|
|
52
|
-
- Can't store sensor-specific metadata easily
|
|
53
|
-
|
|
54
|
-
### Pattern 2: Separate Measurements per Sensor Type
|
|
55
|
-
|
|
56
|
-
**Use Case:** Different sensor types with different fields
|
|
57
|
-
|
|
58
|
-
```flux
|
|
59
|
-
measurement: "temperature"
|
|
60
|
-
tags: device_id, location
|
|
61
|
-
fields: value, unit
|
|
62
|
-
|
|
63
|
-
measurement: "humidity"
|
|
64
|
-
tags: device_id, location
|
|
65
|
-
fields: value, unit
|
|
66
|
-
|
|
67
|
-
measurement: "motion"
|
|
68
|
-
tags: device_id, location
|
|
69
|
-
fields: detected, confidence
|
|
70
|
-
```
|
|
71
|
-
|
|
72
|
-
**Pros:**
|
|
73
|
-
- Type-specific fields
|
|
74
|
-
- Clear separation
|
|
75
|
-
- Optimized for each type
|
|
76
|
-
|
|
77
|
-
**Cons:**
|
|
78
|
-
- Harder to query across types
|
|
79
|
-
- More complex queries
|
|
80
|
-
|
|
81
|
-
### Pattern 3: Hierarchical Tags
|
|
82
|
-
|
|
83
|
-
**Use Case:** Multi-level organization (home → room → device)
|
|
84
|
-
|
|
85
|
-
```flux
|
|
86
|
-
measurement: "sensors"
|
|
87
|
-
tags:
|
|
88
|
-
- home_id: "home_001"
|
|
89
|
-
- floor: "first"
|
|
90
|
-
- room: "kitchen"
|
|
91
|
-
- device_id: "sensor_001"
|
|
92
|
-
- sensor_type: "temperature"
|
|
93
|
-
fields:
|
|
94
|
-
- value: 72.5
|
|
95
|
-
```
|
|
96
|
-
|
|
97
|
-
**Pros:**
|
|
98
|
-
- Flexible querying at any level
|
|
99
|
-
- Easy aggregation by level
|
|
100
|
-
|
|
101
|
-
**Cons:**
|
|
102
|
-
- Higher tag cardinality
|
|
103
|
-
- More complex queries
|
|
104
|
-
|
|
105
|
-
## Data Modeling Best Practices
|
|
106
|
-
|
|
107
|
-
### 1. Tag vs Field Decision
|
|
108
|
-
|
|
109
|
-
**Use Tags For:**
|
|
110
|
-
- Frequently filtered values
|
|
111
|
-
- Low cardinality (< 100,000 unique values)
|
|
112
|
-
- Metadata that doesn't change often
|
|
113
|
-
- Values used in GROUP BY
|
|
114
|
-
|
|
115
|
-
**Use Fields For:**
|
|
116
|
-
- Actual measurements
|
|
117
|
-
- High cardinality values
|
|
118
|
-
- Values that change frequently
|
|
119
|
-
- Values used in aggregations (sum, mean, etc.)
|
|
120
|
-
|
|
121
|
-
**Example:**
|
|
122
|
-
```flux
|
|
123
|
-
// GOOD: device_id as tag (low cardinality, frequently filtered)
|
|
124
|
-
tags: device_id="sensor_001"
|
|
125
|
-
fields: temperature=72.5, humidity=45.2
|
|
126
|
-
|
|
127
|
-
// BAD: temperature as tag (high cardinality)
|
|
128
|
-
tags: temperature="72.5"
|
|
129
|
-
fields: device_id="sensor_001"
|
|
130
|
-
```
|
|
131
|
-
|
|
132
|
-
### 2. Cardinality Management
|
|
133
|
-
|
|
134
|
-
**Problem:** High tag cardinality slows queries
|
|
135
|
-
|
|
136
|
-
**Solution:** Limit unique tag combinations
|
|
137
|
-
```flux
|
|
138
|
-
// BAD: High cardinality (unique per write)
|
|
139
|
-
tags: timestamp="2026-01-15T10:30:00.123456Z"
|
|
140
|
-
|
|
141
|
-
// GOOD: Low cardinality (reusable values)
|
|
142
|
-
tags: device_id="sensor_001", location="kitchen"
|
|
143
|
-
```
|
|
144
|
-
|
|
145
|
-
**Cardinality Limits:**
|
|
146
|
-
- **Low:** < 1,000 unique values (ideal)
|
|
147
|
-
- **Medium:** 1,000 - 10,000 (acceptable)
|
|
148
|
-
- **High:** 10,000 - 100,000 (monitor performance)
|
|
149
|
-
- **Very High:** > 100,000 (avoid if possible)
|
|
150
|
-
|
|
151
|
-
### 3. Field Type Selection
|
|
152
|
-
|
|
153
|
-
**Numeric Fields:**
|
|
154
|
-
- Use for measurements (temperature, power, etc.)
|
|
155
|
-
- Supports aggregations (mean, sum, etc.)
|
|
156
|
-
|
|
157
|
-
**String Fields:**
|
|
158
|
-
- Use for status, state, messages
|
|
159
|
-
- Limited aggregation support
|
|
160
|
-
|
|
161
|
-
**Boolean Fields:**
|
|
162
|
-
- Use for binary states (on/off, detected/not detected)
|
|
163
|
-
|
|
164
|
-
**Example:**
|
|
165
|
-
```flux
|
|
166
|
-
fields:
|
|
167
|
-
- temperature: 72.5 // float (numeric)
|
|
168
|
-
- status: "online" // string
|
|
169
|
-
- motion_detected: true // boolean
|
|
170
|
-
```
|
|
171
|
-
|
|
172
|
-
## Retention and Downsampling Strategies
|
|
173
|
-
|
|
174
|
-
### Strategy 1: Tiered Retention
|
|
175
|
-
|
|
176
|
-
**Raw Data (High Resolution):**
|
|
177
|
-
- Retention: 7 days
|
|
178
|
-
- Resolution: 1 minute
|
|
179
|
-
- Use: Real-time monitoring, debugging
|
|
180
|
-
|
|
181
|
-
**Downsampled Data (Medium Resolution):**
|
|
182
|
-
- Retention: 90 days
|
|
183
|
-
- Resolution: 1 hour
|
|
184
|
-
- Use: Trend analysis, daily reports
|
|
185
|
-
|
|
186
|
-
**Aggregated Data (Low Resolution):**
|
|
187
|
-
- Retention: 1 year
|
|
188
|
-
- Resolution: 1 day
|
|
189
|
-
- Use: Historical analysis, compliance
|
|
190
|
-
|
|
191
|
-
**Archived Data (Very Low Resolution):**
|
|
192
|
-
- Retention: Indefinite
|
|
193
|
-
- Resolution: 1 week
|
|
194
|
-
- Use: Long-term trends, research
|
|
195
|
-
|
|
196
|
-
### Strategy 2: Continuous Queries
|
|
197
|
-
|
|
198
|
-
**Automated Downsampling:**
|
|
199
|
-
```flux
|
|
200
|
-
// Downsample 1-minute data to 1-hour averages
|
|
201
|
-
option task = {name: "downsample_hourly", every: 1h}
|
|
202
|
-
|
|
203
|
-
from(bucket: "homeiq_raw")
|
|
204
|
-
|> range(start: -1h)
|
|
205
|
-
|> filter(fn: (r) => r["_measurement"] == "sensors")
|
|
206
|
-
|> aggregateWindow(every: 1h, fn: mean, createEmpty: false)
|
|
207
|
-
|> to(bucket: "homeiq_hourly", org: "homeiq")
|
|
208
|
-
```
|
|
209
|
-
|
|
210
|
-
### Strategy 3: Data Lifecycle Policies
|
|
211
|
-
|
|
212
|
-
**Automated Deletion:**
|
|
213
|
-
```flux
|
|
214
|
-
// Delete data older than retention period
|
|
215
|
-
from(bucket: "homeiq_raw")
|
|
216
|
-
|> range(start: -30d)
|
|
217
|
-
|> filter(fn: (r) => r["_time"] < now() - duration(v: 7d))
|
|
218
|
-
|> delete()
|
|
219
|
-
```
|
|
220
|
-
|
|
221
|
-
## Query Optimization Patterns
|
|
222
|
-
|
|
223
|
-
### Pattern 1: Time Range Filtering
|
|
224
|
-
|
|
225
|
-
**Always specify time range first:**
|
|
226
|
-
```flux
|
|
227
|
-
// GOOD: Time range first
|
|
228
|
-
from(bucket: "homeiq")
|
|
229
|
-
|> range(start: -1h) // Limits data scanned
|
|
230
|
-
|> filter(fn: (r) => r["device_id"] == "sensor_001")
|
|
231
|
-
|
|
232
|
-
// BAD: Filter before time range
|
|
233
|
-
from(bucket: "homeiq")
|
|
234
|
-
|> filter(fn: (r) => r["device_id"] == "sensor_001")
|
|
235
|
-
|> range(start: -1h) // Scans all data first
|
|
236
|
-
```
|
|
237
|
-
|
|
238
|
-
### Pattern 2: Tag Filtering Before Field Filtering
|
|
239
|
-
|
|
240
|
-
**Filter tags before fields:**
|
|
241
|
-
```flux
|
|
242
|
-
// GOOD: Tags first (indexed)
|
|
243
|
-
from(bucket: "homeiq")
|
|
244
|
-
|> range(start: -1h)
|
|
245
|
-
|> filter(fn: (r) => r["device_id"] == "sensor_001") // Tag (indexed)
|
|
246
|
-
|> filter(fn: (r) => r["_value"] > 70.0) // Field (not indexed)
|
|
247
|
-
|
|
248
|
-
// BAD: Fields first
|
|
249
|
-
from(bucket: "homeiq")
|
|
250
|
-
|> range(start: -1h)
|
|
251
|
-
|> filter(fn: (r) => r["_value"] > 70.0) // Field (full scan)
|
|
252
|
-
|> filter(fn: (r) => r["device_id"] == "sensor_001") // Tag
|
|
253
|
-
```
|
|
254
|
-
|
|
255
|
-
### Pattern 3: Aggregation Window Size
|
|
256
|
-
|
|
257
|
-
**Match window size to query needs:**
|
|
258
|
-
```flux
|
|
259
|
-
// Real-time monitoring: 1-minute windows
|
|
260
|
-
|> aggregateWindow(every: 1m, fn: mean)
|
|
261
|
-
|
|
262
|
-
// Daily reports: 1-hour windows
|
|
263
|
-
|> aggregateWindow(every: 1h, fn: mean)
|
|
264
|
-
|
|
265
|
-
// Historical analysis: 1-day windows
|
|
266
|
-
|> aggregateWindow(every: 1d, fn: mean)
|
|
267
|
-
```
|
|
268
|
-
|
|
269
|
-
## HomeIQ-Specific Patterns
|
|
270
|
-
|
|
271
|
-
### Pattern 1: Home Assistant State Tracking
|
|
272
|
-
|
|
273
|
-
**Schema:**
|
|
274
|
-
```flux
|
|
275
|
-
measurement: "home_assistant_states"
|
|
276
|
-
tags:
|
|
277
|
-
- entity_id: "sensor.kitchen_temperature"
|
|
278
|
-
- domain: "sensor"
|
|
279
|
-
- device_id: "sensor_001"
|
|
280
|
-
- location: "kitchen"
|
|
281
|
-
fields:
|
|
282
|
-
- state: "72.5"
|
|
283
|
-
- attributes: '{"unit_of_measurement": "°F", "friendly_name": "Kitchen Temperature"}'
|
|
284
|
-
```
|
|
285
|
-
|
|
286
|
-
**Query Pattern:**
|
|
287
|
-
```flux
|
|
288
|
-
// Get latest state for all entities
|
|
289
|
-
from(bucket: "homeiq")
|
|
290
|
-
|> range(start: -1h)
|
|
291
|
-
|> filter(fn: (r) => r["_measurement"] == "home_assistant_states")
|
|
292
|
-
|> group(columns: ["entity_id"])
|
|
293
|
-
|> last()
|
|
294
|
-
```
|
|
295
|
-
|
|
296
|
-
### Pattern 2: Energy Consumption Tracking
|
|
297
|
-
|
|
298
|
-
**Schema:**
|
|
299
|
-
```flux
|
|
300
|
-
measurement: "energy_consumption"
|
|
301
|
-
tags:
|
|
302
|
-
- device_id: "smart_plug_001"
|
|
303
|
-
- circuit: "kitchen_appliances"
|
|
304
|
-
- device_type: "smart_plug"
|
|
305
|
-
fields:
|
|
306
|
-
- power_watts: 1250.5
|
|
307
|
-
- voltage: 120.2
|
|
308
|
-
- current_amps: 10.4
|
|
309
|
-
- energy_kwh: 0.125
|
|
310
|
-
```
|
|
311
|
-
|
|
312
|
-
**Query Pattern:**
|
|
313
|
-
```flux
|
|
314
|
-
// Calculate daily energy consumption
|
|
315
|
-
from(bucket: "homeiq")
|
|
316
|
-
|> range(start: -24h)
|
|
317
|
-
|> filter(fn: (r) => r["_measurement"] == "energy_consumption")
|
|
318
|
-
|> filter(fn: (r) => r["circuit"] == "kitchen_appliances")
|
|
319
|
-
|> integral(unit: 1h, column: "_value")
|
|
320
|
-
|> map(fn: (r) => ({ r with total_kwh: r._value / 1000.0 }))
|
|
321
|
-
```
|
|
322
|
-
|
|
323
|
-
### Pattern 3: Device Health Monitoring
|
|
324
|
-
|
|
325
|
-
**Schema:**
|
|
326
|
-
```flux
|
|
327
|
-
measurement: "device_health"
|
|
328
|
-
tags:
|
|
329
|
-
- device_id: "sensor_001"
|
|
330
|
-
- device_type: "temperature_sensor"
|
|
331
|
-
- location: "kitchen"
|
|
332
|
-
fields:
|
|
333
|
-
- battery_level: 85
|
|
334
|
-
- signal_strength: -65
|
|
335
|
-
- last_seen: 1633024800
|
|
336
|
-
- status: "online"
|
|
337
|
-
```
|
|
338
|
-
|
|
339
|
-
**Query Pattern:**
|
|
340
|
-
```flux
|
|
341
|
-
// Find devices with low battery
|
|
342
|
-
from(bucket: "homeiq")
|
|
343
|
-
|> range(start: -1h)
|
|
344
|
-
|> filter(fn: (r) => r["_measurement"] == "device_health")
|
|
345
|
-
|> filter(fn: (r) => r["battery_level"] < 20)
|
|
346
|
-
|> group(columns: ["device_id"])
|
|
347
|
-
|> last()
|
|
348
|
-
```
|
|
349
|
-
|
|
350
|
-
## Common Anti-Patterns
|
|
351
|
-
|
|
352
|
-
### 1. Storing Non-Time-Series Data
|
|
353
|
-
|
|
354
|
-
**Anti-Pattern:**
|
|
355
|
-
```flux
|
|
356
|
-
// BAD: User profiles in time-series DB
|
|
357
|
-
measurement: "users"
|
|
358
|
-
tags: user_id="user_001"
|
|
359
|
-
fields: name="John", email="john@example.com"
|
|
360
|
-
```
|
|
361
|
-
|
|
362
|
-
**Solution:** Use SQLite or PostgreSQL for metadata
|
|
363
|
-
|
|
364
|
-
### 2. High Tag Cardinality
|
|
365
|
-
|
|
366
|
-
**Anti-Pattern:**
|
|
367
|
-
```flux
|
|
368
|
-
// BAD: Unique timestamp as tag
|
|
369
|
-
tags: timestamp="2026-01-15T10:30:00.123456Z"
|
|
370
|
-
```
|
|
371
|
-
|
|
372
|
-
**Solution:** Timestamp is automatic, don't duplicate
|
|
373
|
-
|
|
374
|
-
### 3. Storing Computed Values
|
|
375
|
-
|
|
376
|
-
**Anti-Pattern:**
|
|
377
|
-
```flux
|
|
378
|
-
// BAD: Storing computed daily total
|
|
379
|
-
fields: daily_total_kwh=12.5
|
|
380
|
-
```
|
|
381
|
-
|
|
382
|
-
**Solution:** Compute on-the-fly or use downsampling
|
|
383
|
-
|
|
384
|
-
### 4. Over-Normalization
|
|
385
|
-
|
|
386
|
-
**Anti-Pattern:**
|
|
387
|
-
```flux
|
|
388
|
-
// BAD: Too many separate measurements
|
|
389
|
-
measurement: "temperature_kitchen_sensor_001"
|
|
390
|
-
measurement: "temperature_kitchen_sensor_002"
|
|
391
|
-
```
|
|
392
|
-
|
|
393
|
-
**Solution:** Use tags for differentiation
|
|
394
|
-
```flux
|
|
395
|
-
// GOOD: Single measurement with tags
|
|
396
|
-
measurement: "temperature"
|
|
397
|
-
tags: location="kitchen", device_id="sensor_001"
|
|
398
|
-
```
|
|
399
|
-
|
|
400
|
-
## Performance Considerations
|
|
401
|
-
|
|
402
|
-
### Write Performance
|
|
403
|
-
|
|
404
|
-
**Batch Writes:**
|
|
405
|
-
- Write multiple points in single request
|
|
406
|
-
- Optimal batch size: 5,000-10,000 points
|
|
407
|
-
- Use async writes for high throughput
|
|
408
|
-
|
|
409
|
-
**Connection Pooling:**
|
|
410
|
-
- Reuse client instances
|
|
411
|
-
- Use connection pooling
|
|
412
|
-
- Implement retry logic
|
|
413
|
-
|
|
414
|
-
### Read Performance
|
|
415
|
-
|
|
416
|
-
**Index Usage:**
|
|
417
|
-
- Tags are indexed automatically
|
|
418
|
-
- Fields are not indexed
|
|
419
|
-
- Filter by tags first, then fields
|
|
420
|
-
|
|
421
|
-
**Query Optimization:**
|
|
422
|
-
- Use specific time ranges
|
|
423
|
-
- Filter early in query pipeline
|
|
424
|
-
- Use appropriate aggregation windows
|
|
425
|
-
- Limit result sets
|
|
426
|
-
|
|
427
|
-
### Storage Optimization
|
|
428
|
-
|
|
429
|
-
**Data Compression:**
|
|
430
|
-
- InfluxDB compresses data automatically
|
|
431
|
-
- Use appropriate field types
|
|
432
|
-
- Avoid storing redundant data
|
|
433
|
-
|
|
434
|
-
**Retention Policies:**
|
|
435
|
-
- Delete old data automatically
|
|
436
|
-
- Use downsampling to reduce storage
|
|
437
|
-
- Archive old data to cheaper storage
|
|
438
|
-
|
|
439
|
-
## References
|
|
440
|
-
|
|
441
|
-
- [InfluxDB Data Modeling](https://docs.influxdata.com/influxdb/v2.7/write-data/best-practices/)
|
|
442
|
-
- [Time-Series Database Design](https://www.influxdata.com/time-series-database/)
|
|
443
|
-
- [Flux Query Optimization](https://docs.influxdata.com/flux/v0.x/optimize-queries/)
|
|
444
|
-
|
|
1
|
+
# Time-Series Data Modeling
|
|
2
|
+
|
|
3
|
+
## Overview
|
|
4
|
+
|
|
5
|
+
Time-series data modeling requires different patterns than traditional relational databases. This guide covers time-series data architecture, schema design, and optimization strategies for HomeIQ and similar IoT/home automation systems.
|
|
6
|
+
|
|
7
|
+
## Time-Series Data Characteristics
|
|
8
|
+
|
|
9
|
+
### Key Properties
|
|
10
|
+
|
|
11
|
+
1. **Temporal Ordering:** Data points are ordered by time
|
|
12
|
+
2. **High Write Throughput:** Many writes, fewer reads
|
|
13
|
+
3. **Append-Only:** Data is typically inserted, rarely updated
|
|
14
|
+
4. **Time-Based Queries:** Most queries filter by time range
|
|
15
|
+
5. **Downsampling:** Older data is often aggregated
|
|
16
|
+
|
|
17
|
+
### Data Lifecycle
|
|
18
|
+
|
|
19
|
+
```
|
|
20
|
+
Raw Data (1-minute intervals)
|
|
21
|
+
↓ [7 days]
|
|
22
|
+
Downsampled Data (1-hour averages)
|
|
23
|
+
↓ [90 days]
|
|
24
|
+
Aggregated Data (1-day averages)
|
|
25
|
+
↓ [Indefinite]
|
|
26
|
+
Archived Data (1-week averages)
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
## Schema Design Patterns
|
|
30
|
+
|
|
31
|
+
### Pattern 1: Single Measurement, Multiple Sensors
|
|
32
|
+
|
|
33
|
+
**Use Case:** Multiple sensors of the same type
|
|
34
|
+
|
|
35
|
+
```flux
|
|
36
|
+
measurement: "temperature"
|
|
37
|
+
tags:
|
|
38
|
+
- device_id: "sensor_001"
|
|
39
|
+
- location: "kitchen"
|
|
40
|
+
- unit: "fahrenheit"
|
|
41
|
+
fields:
|
|
42
|
+
- value: 72.5
|
|
43
|
+
- battery: 85
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
**Pros:**
|
|
47
|
+
- Simple queries across all sensors
|
|
48
|
+
- Easy aggregation
|
|
49
|
+
- Consistent schema
|
|
50
|
+
|
|
51
|
+
**Cons:**
|
|
52
|
+
- Can't store sensor-specific metadata easily
|
|
53
|
+
|
|
54
|
+
### Pattern 2: Separate Measurements per Sensor Type
|
|
55
|
+
|
|
56
|
+
**Use Case:** Different sensor types with different fields
|
|
57
|
+
|
|
58
|
+
```flux
|
|
59
|
+
measurement: "temperature"
|
|
60
|
+
tags: device_id, location
|
|
61
|
+
fields: value, unit
|
|
62
|
+
|
|
63
|
+
measurement: "humidity"
|
|
64
|
+
tags: device_id, location
|
|
65
|
+
fields: value, unit
|
|
66
|
+
|
|
67
|
+
measurement: "motion"
|
|
68
|
+
tags: device_id, location
|
|
69
|
+
fields: detected, confidence
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
**Pros:**
|
|
73
|
+
- Type-specific fields
|
|
74
|
+
- Clear separation
|
|
75
|
+
- Optimized for each type
|
|
76
|
+
|
|
77
|
+
**Cons:**
|
|
78
|
+
- Harder to query across types
|
|
79
|
+
- More complex queries
|
|
80
|
+
|
|
81
|
+
### Pattern 3: Hierarchical Tags
|
|
82
|
+
|
|
83
|
+
**Use Case:** Multi-level organization (home → room → device)
|
|
84
|
+
|
|
85
|
+
```flux
|
|
86
|
+
measurement: "sensors"
|
|
87
|
+
tags:
|
|
88
|
+
- home_id: "home_001"
|
|
89
|
+
- floor: "first"
|
|
90
|
+
- room: "kitchen"
|
|
91
|
+
- device_id: "sensor_001"
|
|
92
|
+
- sensor_type: "temperature"
|
|
93
|
+
fields:
|
|
94
|
+
- value: 72.5
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
**Pros:**
|
|
98
|
+
- Flexible querying at any level
|
|
99
|
+
- Easy aggregation by level
|
|
100
|
+
|
|
101
|
+
**Cons:**
|
|
102
|
+
- Higher tag cardinality
|
|
103
|
+
- More complex queries
|
|
104
|
+
|
|
105
|
+
## Data Modeling Best Practices
|
|
106
|
+
|
|
107
|
+
### 1. Tag vs Field Decision
|
|
108
|
+
|
|
109
|
+
**Use Tags For:**
|
|
110
|
+
- Frequently filtered values
|
|
111
|
+
- Low cardinality (< 100,000 unique values)
|
|
112
|
+
- Metadata that doesn't change often
|
|
113
|
+
- Values used in GROUP BY
|
|
114
|
+
|
|
115
|
+
**Use Fields For:**
|
|
116
|
+
- Actual measurements
|
|
117
|
+
- High cardinality values
|
|
118
|
+
- Values that change frequently
|
|
119
|
+
- Values used in aggregations (sum, mean, etc.)
|
|
120
|
+
|
|
121
|
+
**Example:**
|
|
122
|
+
```flux
|
|
123
|
+
// GOOD: device_id as tag (low cardinality, frequently filtered)
|
|
124
|
+
tags: device_id="sensor_001"
|
|
125
|
+
fields: temperature=72.5, humidity=45.2
|
|
126
|
+
|
|
127
|
+
// BAD: temperature as tag (high cardinality)
|
|
128
|
+
tags: temperature="72.5"
|
|
129
|
+
fields: device_id="sensor_001"
|
|
130
|
+
```
|
|
131
|
+
|
|
132
|
+
### 2. Cardinality Management
|
|
133
|
+
|
|
134
|
+
**Problem:** High tag cardinality slows queries
|
|
135
|
+
|
|
136
|
+
**Solution:** Limit unique tag combinations
|
|
137
|
+
```flux
|
|
138
|
+
// BAD: High cardinality (unique per write)
|
|
139
|
+
tags: timestamp="2026-01-15T10:30:00.123456Z"
|
|
140
|
+
|
|
141
|
+
// GOOD: Low cardinality (reusable values)
|
|
142
|
+
tags: device_id="sensor_001", location="kitchen"
|
|
143
|
+
```
|
|
144
|
+
|
|
145
|
+
**Cardinality Limits:**
|
|
146
|
+
- **Low:** < 1,000 unique values (ideal)
|
|
147
|
+
- **Medium:** 1,000 - 10,000 (acceptable)
|
|
148
|
+
- **High:** 10,000 - 100,000 (monitor performance)
|
|
149
|
+
- **Very High:** > 100,000 (avoid if possible)
|
|
150
|
+
|
|
151
|
+
### 3. Field Type Selection
|
|
152
|
+
|
|
153
|
+
**Numeric Fields:**
|
|
154
|
+
- Use for measurements (temperature, power, etc.)
|
|
155
|
+
- Supports aggregations (mean, sum, etc.)
|
|
156
|
+
|
|
157
|
+
**String Fields:**
|
|
158
|
+
- Use for status, state, messages
|
|
159
|
+
- Limited aggregation support
|
|
160
|
+
|
|
161
|
+
**Boolean Fields:**
|
|
162
|
+
- Use for binary states (on/off, detected/not detected)
|
|
163
|
+
|
|
164
|
+
**Example:**
|
|
165
|
+
```flux
|
|
166
|
+
fields:
|
|
167
|
+
- temperature: 72.5 // float (numeric)
|
|
168
|
+
- status: "online" // string
|
|
169
|
+
- motion_detected: true // boolean
|
|
170
|
+
```
|
|
171
|
+
|
|
172
|
+
## Retention and Downsampling Strategies
|
|
173
|
+
|
|
174
|
+
### Strategy 1: Tiered Retention
|
|
175
|
+
|
|
176
|
+
**Raw Data (High Resolution):**
|
|
177
|
+
- Retention: 7 days
|
|
178
|
+
- Resolution: 1 minute
|
|
179
|
+
- Use: Real-time monitoring, debugging
|
|
180
|
+
|
|
181
|
+
**Downsampled Data (Medium Resolution):**
|
|
182
|
+
- Retention: 90 days
|
|
183
|
+
- Resolution: 1 hour
|
|
184
|
+
- Use: Trend analysis, daily reports
|
|
185
|
+
|
|
186
|
+
**Aggregated Data (Low Resolution):**
|
|
187
|
+
- Retention: 1 year
|
|
188
|
+
- Resolution: 1 day
|
|
189
|
+
- Use: Historical analysis, compliance
|
|
190
|
+
|
|
191
|
+
**Archived Data (Very Low Resolution):**
|
|
192
|
+
- Retention: Indefinite
|
|
193
|
+
- Resolution: 1 week
|
|
194
|
+
- Use: Long-term trends, research
|
|
195
|
+
|
|
196
|
+
### Strategy 2: Continuous Queries
|
|
197
|
+
|
|
198
|
+
**Automated Downsampling:**
|
|
199
|
+
```flux
|
|
200
|
+
// Downsample 1-minute data to 1-hour averages
|
|
201
|
+
option task = {name: "downsample_hourly", every: 1h}
|
|
202
|
+
|
|
203
|
+
from(bucket: "homeiq_raw")
|
|
204
|
+
|> range(start: -1h)
|
|
205
|
+
|> filter(fn: (r) => r["_measurement"] == "sensors")
|
|
206
|
+
|> aggregateWindow(every: 1h, fn: mean, createEmpty: false)
|
|
207
|
+
|> to(bucket: "homeiq_hourly", org: "homeiq")
|
|
208
|
+
```
|
|
209
|
+
|
|
210
|
+
### Strategy 3: Data Lifecycle Policies
|
|
211
|
+
|
|
212
|
+
**Automated Deletion:**
|
|
213
|
+
```flux
|
|
214
|
+
// Delete data older than retention period
|
|
215
|
+
from(bucket: "homeiq_raw")
|
|
216
|
+
|> range(start: -30d)
|
|
217
|
+
|> filter(fn: (r) => r["_time"] < now() - duration(v: 7d))
|
|
218
|
+
|> delete()
|
|
219
|
+
```
|
|
220
|
+
|
|
221
|
+
## Query Optimization Patterns
|
|
222
|
+
|
|
223
|
+
### Pattern 1: Time Range Filtering
|
|
224
|
+
|
|
225
|
+
**Always specify time range first:**
|
|
226
|
+
```flux
|
|
227
|
+
// GOOD: Time range first
|
|
228
|
+
from(bucket: "homeiq")
|
|
229
|
+
|> range(start: -1h) // Limits data scanned
|
|
230
|
+
|> filter(fn: (r) => r["device_id"] == "sensor_001")
|
|
231
|
+
|
|
232
|
+
// BAD: Filter before time range
|
|
233
|
+
from(bucket: "homeiq")
|
|
234
|
+
|> filter(fn: (r) => r["device_id"] == "sensor_001")
|
|
235
|
+
|> range(start: -1h) // Scans all data first
|
|
236
|
+
```
|
|
237
|
+
|
|
238
|
+
### Pattern 2: Tag Filtering Before Field Filtering
|
|
239
|
+
|
|
240
|
+
**Filter tags before fields:**
|
|
241
|
+
```flux
|
|
242
|
+
// GOOD: Tags first (indexed)
|
|
243
|
+
from(bucket: "homeiq")
|
|
244
|
+
|> range(start: -1h)
|
|
245
|
+
|> filter(fn: (r) => r["device_id"] == "sensor_001") // Tag (indexed)
|
|
246
|
+
|> filter(fn: (r) => r["_value"] > 70.0) // Field (not indexed)
|
|
247
|
+
|
|
248
|
+
// BAD: Fields first
|
|
249
|
+
from(bucket: "homeiq")
|
|
250
|
+
|> range(start: -1h)
|
|
251
|
+
|> filter(fn: (r) => r["_value"] > 70.0) // Field (full scan)
|
|
252
|
+
|> filter(fn: (r) => r["device_id"] == "sensor_001") // Tag
|
|
253
|
+
```
|
|
254
|
+
|
|
255
|
+
### Pattern 3: Aggregation Window Size
|
|
256
|
+
|
|
257
|
+
**Match window size to query needs:**
|
|
258
|
+
```flux
|
|
259
|
+
// Real-time monitoring: 1-minute windows
|
|
260
|
+
|> aggregateWindow(every: 1m, fn: mean)
|
|
261
|
+
|
|
262
|
+
// Daily reports: 1-hour windows
|
|
263
|
+
|> aggregateWindow(every: 1h, fn: mean)
|
|
264
|
+
|
|
265
|
+
// Historical analysis: 1-day windows
|
|
266
|
+
|> aggregateWindow(every: 1d, fn: mean)
|
|
267
|
+
```
|
|
268
|
+
|
|
269
|
+
## HomeIQ-Specific Patterns
|
|
270
|
+
|
|
271
|
+
### Pattern 1: Home Assistant State Tracking
|
|
272
|
+
|
|
273
|
+
**Schema:**
|
|
274
|
+
```flux
|
|
275
|
+
measurement: "home_assistant_states"
|
|
276
|
+
tags:
|
|
277
|
+
- entity_id: "sensor.kitchen_temperature"
|
|
278
|
+
- domain: "sensor"
|
|
279
|
+
- device_id: "sensor_001"
|
|
280
|
+
- location: "kitchen"
|
|
281
|
+
fields:
|
|
282
|
+
- state: "72.5"
|
|
283
|
+
- attributes: '{"unit_of_measurement": "°F", "friendly_name": "Kitchen Temperature"}'
|
|
284
|
+
```
|
|
285
|
+
|
|
286
|
+
**Query Pattern:**
|
|
287
|
+
```flux
|
|
288
|
+
// Get latest state for all entities
|
|
289
|
+
from(bucket: "homeiq")
|
|
290
|
+
|> range(start: -1h)
|
|
291
|
+
|> filter(fn: (r) => r["_measurement"] == "home_assistant_states")
|
|
292
|
+
|> group(columns: ["entity_id"])
|
|
293
|
+
|> last()
|
|
294
|
+
```
|
|
295
|
+
|
|
296
|
+
### Pattern 2: Energy Consumption Tracking
|
|
297
|
+
|
|
298
|
+
**Schema:**
|
|
299
|
+
```flux
|
|
300
|
+
measurement: "energy_consumption"
|
|
301
|
+
tags:
|
|
302
|
+
- device_id: "smart_plug_001"
|
|
303
|
+
- circuit: "kitchen_appliances"
|
|
304
|
+
- device_type: "smart_plug"
|
|
305
|
+
fields:
|
|
306
|
+
- power_watts: 1250.5
|
|
307
|
+
- voltage: 120.2
|
|
308
|
+
- current_amps: 10.4
|
|
309
|
+
- energy_kwh: 0.125
|
|
310
|
+
```
|
|
311
|
+
|
|
312
|
+
**Query Pattern:**
|
|
313
|
+
```flux
|
|
314
|
+
// Calculate daily energy consumption
|
|
315
|
+
from(bucket: "homeiq")
|
|
316
|
+
|> range(start: -24h)
|
|
317
|
+
|> filter(fn: (r) => r["_measurement"] == "energy_consumption")
|
|
318
|
+
|> filter(fn: (r) => r["circuit"] == "kitchen_appliances")
|
|
319
|
+
|> integral(unit: 1h, column: "_value")
|
|
320
|
+
|> map(fn: (r) => ({ r with total_kwh: r._value / 1000.0 }))
|
|
321
|
+
```
|
|
322
|
+
|
|
323
|
+
### Pattern 3: Device Health Monitoring
|
|
324
|
+
|
|
325
|
+
**Schema:**
|
|
326
|
+
```flux
|
|
327
|
+
measurement: "device_health"
|
|
328
|
+
tags:
|
|
329
|
+
- device_id: "sensor_001"
|
|
330
|
+
- device_type: "temperature_sensor"
|
|
331
|
+
- location: "kitchen"
|
|
332
|
+
fields:
|
|
333
|
+
- battery_level: 85
|
|
334
|
+
- signal_strength: -65
|
|
335
|
+
- last_seen: 1633024800
|
|
336
|
+
- status: "online"
|
|
337
|
+
```
|
|
338
|
+
|
|
339
|
+
**Query Pattern:**
|
|
340
|
+
```flux
|
|
341
|
+
// Find devices with low battery
|
|
342
|
+
from(bucket: "homeiq")
|
|
343
|
+
|> range(start: -1h)
|
|
344
|
+
|> filter(fn: (r) => r["_measurement"] == "device_health")
|
|
345
|
+
|> filter(fn: (r) => r["battery_level"] < 20)
|
|
346
|
+
|> group(columns: ["device_id"])
|
|
347
|
+
|> last()
|
|
348
|
+
```
|
|
349
|
+
|
|
350
|
+
## Common Anti-Patterns
|
|
351
|
+
|
|
352
|
+
### 1. Storing Non-Time-Series Data
|
|
353
|
+
|
|
354
|
+
**Anti-Pattern:**
|
|
355
|
+
```flux
|
|
356
|
+
// BAD: User profiles in time-series DB
|
|
357
|
+
measurement: "users"
|
|
358
|
+
tags: user_id="user_001"
|
|
359
|
+
fields: name="John", email="john@example.com"
|
|
360
|
+
```
|
|
361
|
+
|
|
362
|
+
**Solution:** Use SQLite or PostgreSQL for metadata
|
|
363
|
+
|
|
364
|
+
### 2. High Tag Cardinality
|
|
365
|
+
|
|
366
|
+
**Anti-Pattern:**
|
|
367
|
+
```flux
|
|
368
|
+
// BAD: Unique timestamp as tag
|
|
369
|
+
tags: timestamp="2026-01-15T10:30:00.123456Z"
|
|
370
|
+
```
|
|
371
|
+
|
|
372
|
+
**Solution:** Timestamp is automatic, don't duplicate
|
|
373
|
+
|
|
374
|
+
### 3. Storing Computed Values
|
|
375
|
+
|
|
376
|
+
**Anti-Pattern:**
|
|
377
|
+
```flux
|
|
378
|
+
// BAD: Storing computed daily total
|
|
379
|
+
fields: daily_total_kwh=12.5
|
|
380
|
+
```
|
|
381
|
+
|
|
382
|
+
**Solution:** Compute on-the-fly or use downsampling
|
|
383
|
+
|
|
384
|
+
### 4. Over-Normalization
|
|
385
|
+
|
|
386
|
+
**Anti-Pattern:**
|
|
387
|
+
```flux
|
|
388
|
+
// BAD: Too many separate measurements
|
|
389
|
+
measurement: "temperature_kitchen_sensor_001"
|
|
390
|
+
measurement: "temperature_kitchen_sensor_002"
|
|
391
|
+
```
|
|
392
|
+
|
|
393
|
+
**Solution:** Use tags for differentiation
|
|
394
|
+
```flux
|
|
395
|
+
// GOOD: Single measurement with tags
|
|
396
|
+
measurement: "temperature"
|
|
397
|
+
tags: location="kitchen", device_id="sensor_001"
|
|
398
|
+
```
|
|
399
|
+
|
|
400
|
+
## Performance Considerations
|
|
401
|
+
|
|
402
|
+
### Write Performance
|
|
403
|
+
|
|
404
|
+
**Batch Writes:**
|
|
405
|
+
- Write multiple points in single request
|
|
406
|
+
- Optimal batch size: 5,000-10,000 points
|
|
407
|
+
- Use async writes for high throughput
|
|
408
|
+
|
|
409
|
+
**Connection Pooling:**
|
|
410
|
+
- Reuse client instances
|
|
411
|
+
- Use connection pooling
|
|
412
|
+
- Implement retry logic
|
|
413
|
+
|
|
414
|
+
### Read Performance
|
|
415
|
+
|
|
416
|
+
**Index Usage:**
|
|
417
|
+
- Tags are indexed automatically
|
|
418
|
+
- Fields are not indexed
|
|
419
|
+
- Filter by tags first, then fields
|
|
420
|
+
|
|
421
|
+
**Query Optimization:**
|
|
422
|
+
- Use specific time ranges
|
|
423
|
+
- Filter early in query pipeline
|
|
424
|
+
- Use appropriate aggregation windows
|
|
425
|
+
- Limit result sets
|
|
426
|
+
|
|
427
|
+
### Storage Optimization
|
|
428
|
+
|
|
429
|
+
**Data Compression:**
|
|
430
|
+
- InfluxDB compresses data automatically
|
|
431
|
+
- Use appropriate field types
|
|
432
|
+
- Avoid storing redundant data
|
|
433
|
+
|
|
434
|
+
**Retention Policies:**
|
|
435
|
+
- Delete old data automatically
|
|
436
|
+
- Use downsampling to reduce storage
|
|
437
|
+
- Archive old data to cheaper storage
|
|
438
|
+
|
|
439
|
+
## References
|
|
440
|
+
|
|
441
|
+
- [InfluxDB Data Modeling](https://docs.influxdata.com/influxdb/v2.7/write-data/best-practices/)
|
|
442
|
+
- [Time-Series Database Design](https://www.influxdata.com/time-series-database/)
|
|
443
|
+
- [Flux Query Optimization](https://docs.influxdata.com/flux/v0.x/optimize-queries/)
|
|
444
|
+
|