tapps-agents 3.5.40__py3-none-any.whl → 3.6.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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/scoring.py +1566 -1566
- tapps_agents/agents/reviewer/service_discovery.py +534 -534
- tapps_agents/agents/reviewer/tools/__init__.py +41 -41
- 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/health.py +665 -665
- 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 -219
- tapps_agents/cli/commands/tester.py +191 -191
- tapps_agents/cli/commands/top_level.py +3586 -3586
- 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/artifact_context_builder.py +293 -0
- 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/config.py +33 -0
- 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.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/orchestrator.py +271 -271
- 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/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/base.py +185 -185
- 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/build_orchestrator.py +2700 -2667
- 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/fix_orchestrator.py +723 -723
- 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_executor.py +2337 -2196
- 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/message_formatter.py +188 -188
- 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 -111
- 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.5.40.dist-info → tapps_agents-3.6.0.dist-info}/METADATA +672 -672
- tapps_agents-3.6.0.dist-info/RECORD +758 -0
- {tapps_agents-3.5.40.dist-info → tapps_agents-3.6.0.dist-info}/licenses/LICENSE +22 -22
- tapps_agents/health/checks/outcomes.backup_20260204_064058.py +0 -324
- tapps_agents/health/checks/outcomes.backup_20260204_064256.py +0 -324
- tapps_agents/health/checks/outcomes.backup_20260204_064600.py +0 -324
- tapps_agents-3.5.40.dist-info/RECORD +0 -760
- {tapps_agents-3.5.40.dist-info → tapps_agents-3.6.0.dist-info}/WHEEL +0 -0
- {tapps_agents-3.5.40.dist-info → tapps_agents-3.6.0.dist-info}/entry_points.txt +0 -0
- {tapps_agents-3.5.40.dist-info → tapps_agents-3.6.0.dist-info}/top_level.txt +0 -0
|
@@ -1,287 +1,287 @@
|
|
|
1
|
-
"""
|
|
2
|
-
Learning Data Export System
|
|
3
|
-
|
|
4
|
-
Enables users to export learning data from the self-improvement system
|
|
5
|
-
for feedback and framework improvement.
|
|
6
|
-
"""
|
|
7
|
-
|
|
8
|
-
import gzip
|
|
9
|
-
import hashlib
|
|
10
|
-
import json
|
|
11
|
-
import logging
|
|
12
|
-
from dataclasses import dataclass
|
|
13
|
-
from datetime import UTC, datetime
|
|
14
|
-
from pathlib import Path
|
|
15
|
-
from typing import Any
|
|
16
|
-
|
|
17
|
-
from .analytics_dashboard import AnalyticsDashboard
|
|
18
|
-
from .capability_registry import CapabilityRegistry
|
|
19
|
-
from .learning_dashboard import LearningDashboard
|
|
20
|
-
from .export_schema import ExportSchema
|
|
21
|
-
|
|
22
|
-
logger = logging.getLogger(__name__)
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
@dataclass
|
|
26
|
-
class ExportMetadata:
|
|
27
|
-
"""Export metadata."""
|
|
28
|
-
|
|
29
|
-
export_timestamp: str
|
|
30
|
-
framework_version: str
|
|
31
|
-
export_version: str
|
|
32
|
-
schema_version: str
|
|
33
|
-
project_hash: str
|
|
34
|
-
anonymization_applied: bool
|
|
35
|
-
privacy_notice: str
|
|
36
|
-
|
|
37
|
-
def to_dict(self) -> dict[str, Any]:
|
|
38
|
-
"""Convert to dictionary."""
|
|
39
|
-
return {
|
|
40
|
-
"export_timestamp": self.export_timestamp,
|
|
41
|
-
"framework_version": self.framework_version,
|
|
42
|
-
"export_version": self.export_version,
|
|
43
|
-
"schema_version": self.schema_version,
|
|
44
|
-
"project_hash": self.project_hash,
|
|
45
|
-
"anonymization_applied": self.anonymization_applied,
|
|
46
|
-
"privacy_notice": self.privacy_notice,
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
class LearningDataExporter:
|
|
51
|
-
"""Collects and exports learning data from all learning system components."""
|
|
52
|
-
|
|
53
|
-
def __init__(
|
|
54
|
-
self,
|
|
55
|
-
project_root: Path | None = None,
|
|
56
|
-
learning_dashboard: LearningDashboard | None = None,
|
|
57
|
-
capability_registry: CapabilityRegistry | None = None,
|
|
58
|
-
analytics_dashboard: AnalyticsDashboard | None = None,
|
|
59
|
-
):
|
|
60
|
-
"""
|
|
61
|
-
Initialize exporter with learning system components.
|
|
62
|
-
|
|
63
|
-
Args:
|
|
64
|
-
project_root: Project root directory
|
|
65
|
-
learning_dashboard: Optional LearningDashboard instance
|
|
66
|
-
capability_registry: Optional CapabilityRegistry instance
|
|
67
|
-
analytics_dashboard: Optional AnalyticsDashboard instance
|
|
68
|
-
"""
|
|
69
|
-
self.project_root = project_root or Path.cwd()
|
|
70
|
-
self.learning_dashboard = learning_dashboard
|
|
71
|
-
self.capability_registry = capability_registry
|
|
72
|
-
self.analytics_dashboard = analytics_dashboard
|
|
73
|
-
|
|
74
|
-
# Try to initialize components if not provided
|
|
75
|
-
if self.capability_registry is None:
|
|
76
|
-
try:
|
|
77
|
-
self.capability_registry = CapabilityRegistry()
|
|
78
|
-
except Exception as e:
|
|
79
|
-
logger.warning(f"Could not initialize CapabilityRegistry: {e}")
|
|
80
|
-
|
|
81
|
-
if self.learning_dashboard is None and self.capability_registry:
|
|
82
|
-
try:
|
|
83
|
-
self.learning_dashboard = LearningDashboard(
|
|
84
|
-
capability_registry=self.capability_registry
|
|
85
|
-
)
|
|
86
|
-
except Exception as e:
|
|
87
|
-
logger.warning(f"Could not initialize LearningDashboard: {e}")
|
|
88
|
-
|
|
89
|
-
if self.analytics_dashboard is None:
|
|
90
|
-
try:
|
|
91
|
-
self.analytics_dashboard = AnalyticsDashboard()
|
|
92
|
-
except Exception as e:
|
|
93
|
-
logger.warning(f"Could not initialize AnalyticsDashboard: {e}")
|
|
94
|
-
|
|
95
|
-
def collect_capability_metrics(
|
|
96
|
-
self, capability_id: str | None = None
|
|
97
|
-
) -> dict[str, Any]:
|
|
98
|
-
"""
|
|
99
|
-
Collect capability metrics from CapabilityRegistry.
|
|
100
|
-
|
|
101
|
-
Args:
|
|
102
|
-
capability_id: Optional filter by capability
|
|
103
|
-
|
|
104
|
-
Returns:
|
|
105
|
-
Capability metrics dictionary
|
|
106
|
-
"""
|
|
107
|
-
if not self.learning_dashboard:
|
|
108
|
-
return {"error": "LearningDashboard not available"}
|
|
109
|
-
|
|
110
|
-
try:
|
|
111
|
-
return self.learning_dashboard.get_capability_metrics(
|
|
112
|
-
capability_id=capability_id
|
|
113
|
-
)
|
|
114
|
-
except Exception as e:
|
|
115
|
-
logger.error(f"Error collecting capability metrics: {e}")
|
|
116
|
-
return {"error": str(e)}
|
|
117
|
-
|
|
118
|
-
def collect_pattern_statistics(self) -> dict[str, Any]:
|
|
119
|
-
"""
|
|
120
|
-
Collect pattern statistics from PatternExtractor.
|
|
121
|
-
|
|
122
|
-
Returns:
|
|
123
|
-
Pattern statistics dictionary
|
|
124
|
-
"""
|
|
125
|
-
if not self.learning_dashboard:
|
|
126
|
-
return {"error": "LearningDashboard not available"}
|
|
127
|
-
|
|
128
|
-
try:
|
|
129
|
-
return self.learning_dashboard.get_pattern_statistics()
|
|
130
|
-
except Exception as e:
|
|
131
|
-
logger.error(f"Error collecting pattern statistics: {e}")
|
|
132
|
-
return {"error": str(e)}
|
|
133
|
-
|
|
134
|
-
def collect_learning_effectiveness(self) -> dict[str, Any]:
|
|
135
|
-
"""
|
|
136
|
-
Collect learning effectiveness data from meta-learning components.
|
|
137
|
-
|
|
138
|
-
Returns:
|
|
139
|
-
Learning effectiveness dictionary
|
|
140
|
-
"""
|
|
141
|
-
if not self.learning_dashboard:
|
|
142
|
-
return {"error": "LearningDashboard not available"}
|
|
143
|
-
|
|
144
|
-
try:
|
|
145
|
-
effectiveness = {}
|
|
146
|
-
if self.learning_dashboard.impact_reporter:
|
|
147
|
-
effectiveness = (
|
|
148
|
-
self.learning_dashboard.impact_reporter.get_learning_effectiveness()
|
|
149
|
-
)
|
|
150
|
-
return effectiveness
|
|
151
|
-
except Exception as e:
|
|
152
|
-
logger.error(f"Error collecting learning effectiveness: {e}")
|
|
153
|
-
return {"error": str(e)}
|
|
154
|
-
|
|
155
|
-
def collect_analytics_data(self) -> dict[str, Any]:
|
|
156
|
-
"""
|
|
157
|
-
Collect analytics data from AnalyticsDashboard.
|
|
158
|
-
|
|
159
|
-
Returns:
|
|
160
|
-
Analytics data dictionary
|
|
161
|
-
"""
|
|
162
|
-
if not self.analytics_dashboard:
|
|
163
|
-
return {"error": "AnalyticsDashboard not available"}
|
|
164
|
-
|
|
165
|
-
try:
|
|
166
|
-
return self.analytics_dashboard.get_dashboard_data()
|
|
167
|
-
except Exception as e:
|
|
168
|
-
logger.error(f"Error collecting analytics data: {e}")
|
|
169
|
-
return {"error": str(e)}
|
|
170
|
-
|
|
171
|
-
def collect_all_data(self) -> dict[str, Any]:
|
|
172
|
-
"""
|
|
173
|
-
Collect all learning data from all components.
|
|
174
|
-
|
|
175
|
-
Returns:
|
|
176
|
-
Complete learning data dictionary
|
|
177
|
-
"""
|
|
178
|
-
data: dict[str, Any] = {
|
|
179
|
-
"capability_metrics": self.collect_capability_metrics(),
|
|
180
|
-
"pattern_statistics": self.collect_pattern_statistics(),
|
|
181
|
-
"learning_effectiveness": self.collect_learning_effectiveness(),
|
|
182
|
-
"analytics_data": self.collect_analytics_data(),
|
|
183
|
-
}
|
|
184
|
-
|
|
185
|
-
return data
|
|
186
|
-
|
|
187
|
-
def get_export_metadata(self) -> ExportMetadata:
|
|
188
|
-
"""
|
|
189
|
-
Get export metadata (timestamp, version, etc.).
|
|
190
|
-
|
|
191
|
-
Returns:
|
|
192
|
-
ExportMetadata instance
|
|
193
|
-
"""
|
|
194
|
-
# Get framework version
|
|
195
|
-
try:
|
|
196
|
-
from .. import __version__
|
|
197
|
-
|
|
198
|
-
framework_version = __version__
|
|
199
|
-
except Exception:
|
|
200
|
-
framework_version = "unknown"
|
|
201
|
-
|
|
202
|
-
# Generate project hash (anonymized identifier)
|
|
203
|
-
project_hash = hashlib.sha256(
|
|
204
|
-
str(self.project_root).encode()
|
|
205
|
-
).hexdigest()[:16]
|
|
206
|
-
|
|
207
|
-
return ExportMetadata(
|
|
208
|
-
export_timestamp=datetime.now(UTC).isoformat(),
|
|
209
|
-
framework_version=framework_version,
|
|
210
|
-
export_version="1.0",
|
|
211
|
-
schema_version="1.0",
|
|
212
|
-
project_hash=project_hash,
|
|
213
|
-
anonymization_applied=True,
|
|
214
|
-
privacy_notice="Exported data is anonymized and contains no sensitive information. Code snippets and project-specific paths have been removed.",
|
|
215
|
-
)
|
|
216
|
-
|
|
217
|
-
def export(
|
|
218
|
-
self,
|
|
219
|
-
output_path: Path | None = None,
|
|
220
|
-
anonymize: bool = True,
|
|
221
|
-
compress: bool = False,
|
|
222
|
-
format: str = "json",
|
|
223
|
-
) -> Path:
|
|
224
|
-
"""
|
|
225
|
-
Export learning data to file.
|
|
226
|
-
|
|
227
|
-
Args:
|
|
228
|
-
output_path: Output file path (default: .tapps-agents/exports/learning-export-{timestamp}.json)
|
|
229
|
-
anonymize: Whether to anonymize data (default: True)
|
|
230
|
-
compress: Whether to compress export (default: False)
|
|
231
|
-
format: Export format (default: "json")
|
|
232
|
-
|
|
233
|
-
Returns:
|
|
234
|
-
Path to exported file
|
|
235
|
-
"""
|
|
236
|
-
# Determine output path
|
|
237
|
-
if output_path is None:
|
|
238
|
-
export_dir = self.project_root / ".tapps-agents" / "exports"
|
|
239
|
-
export_dir.mkdir(parents=True, exist_ok=True)
|
|
240
|
-
timestamp = datetime.now(UTC).strftime("%Y%m%d-%H%M%S")
|
|
241
|
-
extension = ".json.gz" if compress else ".json"
|
|
242
|
-
output_path = export_dir / f"learning-export-{timestamp}{extension}"
|
|
243
|
-
|
|
244
|
-
# Collect all data
|
|
245
|
-
logger.info("Collecting learning data...")
|
|
246
|
-
data = self.collect_all_data()
|
|
247
|
-
|
|
248
|
-
# Anonymize if requested
|
|
249
|
-
if anonymize:
|
|
250
|
-
logger.info("Anonymizing data...")
|
|
251
|
-
from .anonymization import AnonymizationPipeline
|
|
252
|
-
|
|
253
|
-
pipeline = AnonymizationPipeline()
|
|
254
|
-
data = pipeline.anonymize_export_data(data)
|
|
255
|
-
|
|
256
|
-
# Add export metadata
|
|
257
|
-
metadata = self.get_export_metadata()
|
|
258
|
-
metadata.anonymization_applied = anonymize
|
|
259
|
-
|
|
260
|
-
export_data: dict[str, Any] = {
|
|
261
|
-
"export_metadata": metadata.to_dict(),
|
|
262
|
-
**data,
|
|
263
|
-
}
|
|
264
|
-
|
|
265
|
-
# Validate against schema
|
|
266
|
-
logger.info("Validating export data...")
|
|
267
|
-
validation_result = ExportSchema.validate(export_data)
|
|
268
|
-
if not validation_result.valid:
|
|
269
|
-
logger.warning(f"Validation warnings: {validation_result.warnings}")
|
|
270
|
-
if validation_result.errors:
|
|
271
|
-
raise ValueError(
|
|
272
|
-
f"Export validation failed: {validation_result.errors}"
|
|
273
|
-
)
|
|
274
|
-
|
|
275
|
-
# Write to file
|
|
276
|
-
logger.info(f"Writing export to {output_path}...")
|
|
277
|
-
output_path.parent.mkdir(parents=True, exist_ok=True)
|
|
278
|
-
|
|
279
|
-
if compress:
|
|
280
|
-
with gzip.open(output_path, "wt", encoding="utf-8") as f:
|
|
281
|
-
json.dump(export_data, f, indent=2)
|
|
282
|
-
else:
|
|
283
|
-
with open(output_path, "w", encoding="utf-8") as f:
|
|
284
|
-
json.dump(export_data, f, indent=2)
|
|
285
|
-
|
|
286
|
-
logger.info(f"Export completed: {output_path}")
|
|
287
|
-
return output_path
|
|
1
|
+
"""
|
|
2
|
+
Learning Data Export System
|
|
3
|
+
|
|
4
|
+
Enables users to export learning data from the self-improvement system
|
|
5
|
+
for feedback and framework improvement.
|
|
6
|
+
"""
|
|
7
|
+
|
|
8
|
+
import gzip
|
|
9
|
+
import hashlib
|
|
10
|
+
import json
|
|
11
|
+
import logging
|
|
12
|
+
from dataclasses import dataclass
|
|
13
|
+
from datetime import UTC, datetime
|
|
14
|
+
from pathlib import Path
|
|
15
|
+
from typing import Any
|
|
16
|
+
|
|
17
|
+
from .analytics_dashboard import AnalyticsDashboard
|
|
18
|
+
from .capability_registry import CapabilityRegistry
|
|
19
|
+
from .learning_dashboard import LearningDashboard
|
|
20
|
+
from .export_schema import ExportSchema
|
|
21
|
+
|
|
22
|
+
logger = logging.getLogger(__name__)
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
@dataclass
|
|
26
|
+
class ExportMetadata:
|
|
27
|
+
"""Export metadata."""
|
|
28
|
+
|
|
29
|
+
export_timestamp: str
|
|
30
|
+
framework_version: str
|
|
31
|
+
export_version: str
|
|
32
|
+
schema_version: str
|
|
33
|
+
project_hash: str
|
|
34
|
+
anonymization_applied: bool
|
|
35
|
+
privacy_notice: str
|
|
36
|
+
|
|
37
|
+
def to_dict(self) -> dict[str, Any]:
|
|
38
|
+
"""Convert to dictionary."""
|
|
39
|
+
return {
|
|
40
|
+
"export_timestamp": self.export_timestamp,
|
|
41
|
+
"framework_version": self.framework_version,
|
|
42
|
+
"export_version": self.export_version,
|
|
43
|
+
"schema_version": self.schema_version,
|
|
44
|
+
"project_hash": self.project_hash,
|
|
45
|
+
"anonymization_applied": self.anonymization_applied,
|
|
46
|
+
"privacy_notice": self.privacy_notice,
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
|
|
50
|
+
class LearningDataExporter:
|
|
51
|
+
"""Collects and exports learning data from all learning system components."""
|
|
52
|
+
|
|
53
|
+
def __init__(
|
|
54
|
+
self,
|
|
55
|
+
project_root: Path | None = None,
|
|
56
|
+
learning_dashboard: LearningDashboard | None = None,
|
|
57
|
+
capability_registry: CapabilityRegistry | None = None,
|
|
58
|
+
analytics_dashboard: AnalyticsDashboard | None = None,
|
|
59
|
+
):
|
|
60
|
+
"""
|
|
61
|
+
Initialize exporter with learning system components.
|
|
62
|
+
|
|
63
|
+
Args:
|
|
64
|
+
project_root: Project root directory
|
|
65
|
+
learning_dashboard: Optional LearningDashboard instance
|
|
66
|
+
capability_registry: Optional CapabilityRegistry instance
|
|
67
|
+
analytics_dashboard: Optional AnalyticsDashboard instance
|
|
68
|
+
"""
|
|
69
|
+
self.project_root = project_root or Path.cwd()
|
|
70
|
+
self.learning_dashboard = learning_dashboard
|
|
71
|
+
self.capability_registry = capability_registry
|
|
72
|
+
self.analytics_dashboard = analytics_dashboard
|
|
73
|
+
|
|
74
|
+
# Try to initialize components if not provided
|
|
75
|
+
if self.capability_registry is None:
|
|
76
|
+
try:
|
|
77
|
+
self.capability_registry = CapabilityRegistry()
|
|
78
|
+
except Exception as e:
|
|
79
|
+
logger.warning(f"Could not initialize CapabilityRegistry: {e}")
|
|
80
|
+
|
|
81
|
+
if self.learning_dashboard is None and self.capability_registry:
|
|
82
|
+
try:
|
|
83
|
+
self.learning_dashboard = LearningDashboard(
|
|
84
|
+
capability_registry=self.capability_registry
|
|
85
|
+
)
|
|
86
|
+
except Exception as e:
|
|
87
|
+
logger.warning(f"Could not initialize LearningDashboard: {e}")
|
|
88
|
+
|
|
89
|
+
if self.analytics_dashboard is None:
|
|
90
|
+
try:
|
|
91
|
+
self.analytics_dashboard = AnalyticsDashboard()
|
|
92
|
+
except Exception as e:
|
|
93
|
+
logger.warning(f"Could not initialize AnalyticsDashboard: {e}")
|
|
94
|
+
|
|
95
|
+
def collect_capability_metrics(
|
|
96
|
+
self, capability_id: str | None = None
|
|
97
|
+
) -> dict[str, Any]:
|
|
98
|
+
"""
|
|
99
|
+
Collect capability metrics from CapabilityRegistry.
|
|
100
|
+
|
|
101
|
+
Args:
|
|
102
|
+
capability_id: Optional filter by capability
|
|
103
|
+
|
|
104
|
+
Returns:
|
|
105
|
+
Capability metrics dictionary
|
|
106
|
+
"""
|
|
107
|
+
if not self.learning_dashboard:
|
|
108
|
+
return {"error": "LearningDashboard not available"}
|
|
109
|
+
|
|
110
|
+
try:
|
|
111
|
+
return self.learning_dashboard.get_capability_metrics(
|
|
112
|
+
capability_id=capability_id
|
|
113
|
+
)
|
|
114
|
+
except Exception as e:
|
|
115
|
+
logger.error(f"Error collecting capability metrics: {e}")
|
|
116
|
+
return {"error": str(e)}
|
|
117
|
+
|
|
118
|
+
def collect_pattern_statistics(self) -> dict[str, Any]:
|
|
119
|
+
"""
|
|
120
|
+
Collect pattern statistics from PatternExtractor.
|
|
121
|
+
|
|
122
|
+
Returns:
|
|
123
|
+
Pattern statistics dictionary
|
|
124
|
+
"""
|
|
125
|
+
if not self.learning_dashboard:
|
|
126
|
+
return {"error": "LearningDashboard not available"}
|
|
127
|
+
|
|
128
|
+
try:
|
|
129
|
+
return self.learning_dashboard.get_pattern_statistics()
|
|
130
|
+
except Exception as e:
|
|
131
|
+
logger.error(f"Error collecting pattern statistics: {e}")
|
|
132
|
+
return {"error": str(e)}
|
|
133
|
+
|
|
134
|
+
def collect_learning_effectiveness(self) -> dict[str, Any]:
|
|
135
|
+
"""
|
|
136
|
+
Collect learning effectiveness data from meta-learning components.
|
|
137
|
+
|
|
138
|
+
Returns:
|
|
139
|
+
Learning effectiveness dictionary
|
|
140
|
+
"""
|
|
141
|
+
if not self.learning_dashboard:
|
|
142
|
+
return {"error": "LearningDashboard not available"}
|
|
143
|
+
|
|
144
|
+
try:
|
|
145
|
+
effectiveness = {}
|
|
146
|
+
if self.learning_dashboard.impact_reporter:
|
|
147
|
+
effectiveness = (
|
|
148
|
+
self.learning_dashboard.impact_reporter.get_learning_effectiveness()
|
|
149
|
+
)
|
|
150
|
+
return effectiveness
|
|
151
|
+
except Exception as e:
|
|
152
|
+
logger.error(f"Error collecting learning effectiveness: {e}")
|
|
153
|
+
return {"error": str(e)}
|
|
154
|
+
|
|
155
|
+
def collect_analytics_data(self) -> dict[str, Any]:
|
|
156
|
+
"""
|
|
157
|
+
Collect analytics data from AnalyticsDashboard.
|
|
158
|
+
|
|
159
|
+
Returns:
|
|
160
|
+
Analytics data dictionary
|
|
161
|
+
"""
|
|
162
|
+
if not self.analytics_dashboard:
|
|
163
|
+
return {"error": "AnalyticsDashboard not available"}
|
|
164
|
+
|
|
165
|
+
try:
|
|
166
|
+
return self.analytics_dashboard.get_dashboard_data()
|
|
167
|
+
except Exception as e:
|
|
168
|
+
logger.error(f"Error collecting analytics data: {e}")
|
|
169
|
+
return {"error": str(e)}
|
|
170
|
+
|
|
171
|
+
def collect_all_data(self) -> dict[str, Any]:
|
|
172
|
+
"""
|
|
173
|
+
Collect all learning data from all components.
|
|
174
|
+
|
|
175
|
+
Returns:
|
|
176
|
+
Complete learning data dictionary
|
|
177
|
+
"""
|
|
178
|
+
data: dict[str, Any] = {
|
|
179
|
+
"capability_metrics": self.collect_capability_metrics(),
|
|
180
|
+
"pattern_statistics": self.collect_pattern_statistics(),
|
|
181
|
+
"learning_effectiveness": self.collect_learning_effectiveness(),
|
|
182
|
+
"analytics_data": self.collect_analytics_data(),
|
|
183
|
+
}
|
|
184
|
+
|
|
185
|
+
return data
|
|
186
|
+
|
|
187
|
+
def get_export_metadata(self) -> ExportMetadata:
|
|
188
|
+
"""
|
|
189
|
+
Get export metadata (timestamp, version, etc.).
|
|
190
|
+
|
|
191
|
+
Returns:
|
|
192
|
+
ExportMetadata instance
|
|
193
|
+
"""
|
|
194
|
+
# Get framework version
|
|
195
|
+
try:
|
|
196
|
+
from .. import __version__
|
|
197
|
+
|
|
198
|
+
framework_version = __version__
|
|
199
|
+
except Exception:
|
|
200
|
+
framework_version = "unknown"
|
|
201
|
+
|
|
202
|
+
# Generate project hash (anonymized identifier)
|
|
203
|
+
project_hash = hashlib.sha256(
|
|
204
|
+
str(self.project_root).encode()
|
|
205
|
+
).hexdigest()[:16]
|
|
206
|
+
|
|
207
|
+
return ExportMetadata(
|
|
208
|
+
export_timestamp=datetime.now(UTC).isoformat(),
|
|
209
|
+
framework_version=framework_version,
|
|
210
|
+
export_version="1.0",
|
|
211
|
+
schema_version="1.0",
|
|
212
|
+
project_hash=project_hash,
|
|
213
|
+
anonymization_applied=True,
|
|
214
|
+
privacy_notice="Exported data is anonymized and contains no sensitive information. Code snippets and project-specific paths have been removed.",
|
|
215
|
+
)
|
|
216
|
+
|
|
217
|
+
def export(
|
|
218
|
+
self,
|
|
219
|
+
output_path: Path | None = None,
|
|
220
|
+
anonymize: bool = True,
|
|
221
|
+
compress: bool = False,
|
|
222
|
+
format: str = "json",
|
|
223
|
+
) -> Path:
|
|
224
|
+
"""
|
|
225
|
+
Export learning data to file.
|
|
226
|
+
|
|
227
|
+
Args:
|
|
228
|
+
output_path: Output file path (default: .tapps-agents/exports/learning-export-{timestamp}.json)
|
|
229
|
+
anonymize: Whether to anonymize data (default: True)
|
|
230
|
+
compress: Whether to compress export (default: False)
|
|
231
|
+
format: Export format (default: "json")
|
|
232
|
+
|
|
233
|
+
Returns:
|
|
234
|
+
Path to exported file
|
|
235
|
+
"""
|
|
236
|
+
# Determine output path
|
|
237
|
+
if output_path is None:
|
|
238
|
+
export_dir = self.project_root / ".tapps-agents" / "exports"
|
|
239
|
+
export_dir.mkdir(parents=True, exist_ok=True)
|
|
240
|
+
timestamp = datetime.now(UTC).strftime("%Y%m%d-%H%M%S")
|
|
241
|
+
extension = ".json.gz" if compress else ".json"
|
|
242
|
+
output_path = export_dir / f"learning-export-{timestamp}{extension}"
|
|
243
|
+
|
|
244
|
+
# Collect all data
|
|
245
|
+
logger.info("Collecting learning data...")
|
|
246
|
+
data = self.collect_all_data()
|
|
247
|
+
|
|
248
|
+
# Anonymize if requested
|
|
249
|
+
if anonymize:
|
|
250
|
+
logger.info("Anonymizing data...")
|
|
251
|
+
from .anonymization import AnonymizationPipeline
|
|
252
|
+
|
|
253
|
+
pipeline = AnonymizationPipeline()
|
|
254
|
+
data = pipeline.anonymize_export_data(data)
|
|
255
|
+
|
|
256
|
+
# Add export metadata
|
|
257
|
+
metadata = self.get_export_metadata()
|
|
258
|
+
metadata.anonymization_applied = anonymize
|
|
259
|
+
|
|
260
|
+
export_data: dict[str, Any] = {
|
|
261
|
+
"export_metadata": metadata.to_dict(),
|
|
262
|
+
**data,
|
|
263
|
+
}
|
|
264
|
+
|
|
265
|
+
# Validate against schema
|
|
266
|
+
logger.info("Validating export data...")
|
|
267
|
+
validation_result = ExportSchema.validate(export_data)
|
|
268
|
+
if not validation_result.valid:
|
|
269
|
+
logger.warning(f"Validation warnings: {validation_result.warnings}")
|
|
270
|
+
if validation_result.errors:
|
|
271
|
+
raise ValueError(
|
|
272
|
+
f"Export validation failed: {validation_result.errors}"
|
|
273
|
+
)
|
|
274
|
+
|
|
275
|
+
# Write to file
|
|
276
|
+
logger.info(f"Writing export to {output_path}...")
|
|
277
|
+
output_path.parent.mkdir(parents=True, exist_ok=True)
|
|
278
|
+
|
|
279
|
+
if compress:
|
|
280
|
+
with gzip.open(output_path, "wt", encoding="utf-8") as f:
|
|
281
|
+
json.dump(export_data, f, indent=2)
|
|
282
|
+
else:
|
|
283
|
+
with open(output_path, "w", encoding="utf-8") as f:
|
|
284
|
+
json.dump(export_data, f, indent=2)
|
|
285
|
+
|
|
286
|
+
logger.info(f"Export completed: {output_path}")
|
|
287
|
+
return output_path
|