empathy-framework 5.2.1__py3-none-any.whl → 5.4.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.
- empathy_framework-5.4.0.dist-info/METADATA +47 -0
- empathy_framework-5.4.0.dist-info/RECORD +8 -0
- {empathy_framework-5.2.1.dist-info → empathy_framework-5.4.0.dist-info}/top_level.txt +0 -1
- empathy_healthcare_plugin/__init__.py +12 -11
- empathy_llm_toolkit/__init__.py +12 -26
- empathy_os/__init__.py +12 -356
- empathy_software_plugin/__init__.py +12 -11
- empathy_framework-5.2.1.dist-info/METADATA +0 -1002
- empathy_framework-5.2.1.dist-info/RECORD +0 -478
- empathy_framework-5.2.1.dist-info/entry_points.txt +0 -26
- empathy_framework-5.2.1.dist-info/licenses/LICENSE +0 -201
- empathy_framework-5.2.1.dist-info/licenses/LICENSE_CHANGE_ANNOUNCEMENT.md +0 -101
- empathy_healthcare_plugin/monitors/__init__.py +0 -9
- empathy_healthcare_plugin/monitors/clinical_protocol_monitor.py +0 -315
- empathy_healthcare_plugin/monitors/monitoring/__init__.py +0 -44
- empathy_healthcare_plugin/monitors/monitoring/protocol_checker.py +0 -300
- empathy_healthcare_plugin/monitors/monitoring/protocol_loader.py +0 -214
- empathy_healthcare_plugin/monitors/monitoring/sensor_parsers.py +0 -306
- empathy_healthcare_plugin/monitors/monitoring/trajectory_analyzer.py +0 -389
- empathy_healthcare_plugin/protocols/cardiac.json +0 -93
- empathy_healthcare_plugin/protocols/post_operative.json +0 -92
- empathy_healthcare_plugin/protocols/respiratory.json +0 -92
- empathy_healthcare_plugin/protocols/sepsis.json +0 -141
- empathy_llm_toolkit/README.md +0 -553
- empathy_llm_toolkit/agent_factory/__init__.py +0 -53
- empathy_llm_toolkit/agent_factory/adapters/__init__.py +0 -85
- empathy_llm_toolkit/agent_factory/adapters/autogen_adapter.py +0 -312
- empathy_llm_toolkit/agent_factory/adapters/crewai_adapter.py +0 -483
- empathy_llm_toolkit/agent_factory/adapters/haystack_adapter.py +0 -298
- empathy_llm_toolkit/agent_factory/adapters/langchain_adapter.py +0 -362
- empathy_llm_toolkit/agent_factory/adapters/langgraph_adapter.py +0 -333
- empathy_llm_toolkit/agent_factory/adapters/native.py +0 -228
- empathy_llm_toolkit/agent_factory/adapters/wizard_adapter.py +0 -423
- empathy_llm_toolkit/agent_factory/base.py +0 -305
- empathy_llm_toolkit/agent_factory/crews/__init__.py +0 -67
- empathy_llm_toolkit/agent_factory/crews/code_review.py +0 -1113
- empathy_llm_toolkit/agent_factory/crews/health_check.py +0 -1262
- empathy_llm_toolkit/agent_factory/crews/refactoring.py +0 -1128
- empathy_llm_toolkit/agent_factory/crews/security_audit.py +0 -1018
- empathy_llm_toolkit/agent_factory/decorators.py +0 -287
- empathy_llm_toolkit/agent_factory/factory.py +0 -558
- empathy_llm_toolkit/agent_factory/framework.py +0 -193
- empathy_llm_toolkit/agent_factory/memory_integration.py +0 -328
- empathy_llm_toolkit/agent_factory/resilient.py +0 -320
- empathy_llm_toolkit/agents_md/__init__.py +0 -22
- empathy_llm_toolkit/agents_md/loader.py +0 -218
- empathy_llm_toolkit/agents_md/parser.py +0 -271
- empathy_llm_toolkit/agents_md/registry.py +0 -307
- empathy_llm_toolkit/claude_memory.py +0 -466
- empathy_llm_toolkit/cli/__init__.py +0 -8
- empathy_llm_toolkit/cli/sync_claude.py +0 -487
- empathy_llm_toolkit/code_health.py +0 -1313
- empathy_llm_toolkit/commands/__init__.py +0 -51
- empathy_llm_toolkit/commands/context.py +0 -375
- empathy_llm_toolkit/commands/loader.py +0 -301
- empathy_llm_toolkit/commands/models.py +0 -231
- empathy_llm_toolkit/commands/parser.py +0 -371
- empathy_llm_toolkit/commands/registry.py +0 -429
- empathy_llm_toolkit/config/__init__.py +0 -29
- empathy_llm_toolkit/config/unified.py +0 -291
- empathy_llm_toolkit/context/__init__.py +0 -22
- empathy_llm_toolkit/context/compaction.py +0 -455
- empathy_llm_toolkit/context/manager.py +0 -434
- empathy_llm_toolkit/contextual_patterns.py +0 -361
- empathy_llm_toolkit/core.py +0 -907
- empathy_llm_toolkit/git_pattern_extractor.py +0 -435
- empathy_llm_toolkit/hooks/__init__.py +0 -24
- empathy_llm_toolkit/hooks/config.py +0 -306
- empathy_llm_toolkit/hooks/executor.py +0 -289
- empathy_llm_toolkit/hooks/registry.py +0 -302
- empathy_llm_toolkit/hooks/scripts/__init__.py +0 -39
- empathy_llm_toolkit/hooks/scripts/evaluate_session.py +0 -201
- empathy_llm_toolkit/hooks/scripts/first_time_init.py +0 -285
- empathy_llm_toolkit/hooks/scripts/pre_compact.py +0 -207
- empathy_llm_toolkit/hooks/scripts/session_end.py +0 -183
- empathy_llm_toolkit/hooks/scripts/session_start.py +0 -163
- empathy_llm_toolkit/hooks/scripts/suggest_compact.py +0 -225
- empathy_llm_toolkit/learning/__init__.py +0 -30
- empathy_llm_toolkit/learning/evaluator.py +0 -438
- empathy_llm_toolkit/learning/extractor.py +0 -514
- empathy_llm_toolkit/learning/storage.py +0 -560
- empathy_llm_toolkit/levels.py +0 -227
- empathy_llm_toolkit/pattern_confidence.py +0 -414
- empathy_llm_toolkit/pattern_resolver.py +0 -272
- empathy_llm_toolkit/pattern_summary.py +0 -350
- empathy_llm_toolkit/providers.py +0 -967
- empathy_llm_toolkit/routing/__init__.py +0 -32
- empathy_llm_toolkit/routing/model_router.py +0 -362
- empathy_llm_toolkit/security/IMPLEMENTATION_SUMMARY.md +0 -413
- empathy_llm_toolkit/security/PHASE2_COMPLETE.md +0 -384
- empathy_llm_toolkit/security/PHASE2_SECRETS_DETECTOR_COMPLETE.md +0 -271
- empathy_llm_toolkit/security/QUICK_REFERENCE.md +0 -316
- empathy_llm_toolkit/security/README.md +0 -262
- empathy_llm_toolkit/security/__init__.py +0 -62
- empathy_llm_toolkit/security/audit_logger.py +0 -929
- empathy_llm_toolkit/security/audit_logger_example.py +0 -152
- empathy_llm_toolkit/security/pii_scrubber.py +0 -640
- empathy_llm_toolkit/security/secrets_detector.py +0 -678
- empathy_llm_toolkit/security/secrets_detector_example.py +0 -304
- empathy_llm_toolkit/security/secure_memdocs.py +0 -1192
- empathy_llm_toolkit/security/secure_memdocs_example.py +0 -278
- empathy_llm_toolkit/session_status.py +0 -745
- empathy_llm_toolkit/state.py +0 -246
- empathy_llm_toolkit/utils/__init__.py +0 -5
- empathy_llm_toolkit/utils/tokens.py +0 -349
- empathy_os/adaptive/__init__.py +0 -13
- empathy_os/adaptive/task_complexity.py +0 -127
- empathy_os/agent_monitoring.py +0 -414
- empathy_os/cache/__init__.py +0 -117
- empathy_os/cache/base.py +0 -166
- empathy_os/cache/dependency_manager.py +0 -256
- empathy_os/cache/hash_only.py +0 -251
- empathy_os/cache/hybrid.py +0 -453
- empathy_os/cache/storage.py +0 -285
- empathy_os/cache_monitor.py +0 -356
- empathy_os/cache_stats.py +0 -298
- empathy_os/cli/__init__.py +0 -152
- empathy_os/cli/__main__.py +0 -12
- empathy_os/cli/commands/__init__.py +0 -1
- empathy_os/cli/commands/batch.py +0 -256
- empathy_os/cli/commands/cache.py +0 -248
- empathy_os/cli/commands/help.py +0 -331
- empathy_os/cli/commands/info.py +0 -140
- empathy_os/cli/commands/inspect.py +0 -436
- empathy_os/cli/commands/inspection.py +0 -57
- empathy_os/cli/commands/memory.py +0 -48
- empathy_os/cli/commands/metrics.py +0 -92
- empathy_os/cli/commands/orchestrate.py +0 -184
- empathy_os/cli/commands/patterns.py +0 -207
- empathy_os/cli/commands/profiling.py +0 -198
- empathy_os/cli/commands/provider.py +0 -98
- empathy_os/cli/commands/routing.py +0 -285
- empathy_os/cli/commands/setup.py +0 -96
- empathy_os/cli/commands/status.py +0 -235
- empathy_os/cli/commands/sync.py +0 -166
- empathy_os/cli/commands/tier.py +0 -121
- empathy_os/cli/commands/utilities.py +0 -114
- empathy_os/cli/commands/workflow.py +0 -575
- empathy_os/cli/core.py +0 -32
- empathy_os/cli/parsers/__init__.py +0 -68
- empathy_os/cli/parsers/batch.py +0 -118
- empathy_os/cli/parsers/cache 2.py +0 -65
- empathy_os/cli/parsers/cache.py +0 -65
- empathy_os/cli/parsers/help.py +0 -41
- empathy_os/cli/parsers/info.py +0 -26
- empathy_os/cli/parsers/inspect.py +0 -66
- empathy_os/cli/parsers/metrics.py +0 -42
- empathy_os/cli/parsers/orchestrate.py +0 -61
- empathy_os/cli/parsers/patterns.py +0 -54
- empathy_os/cli/parsers/provider.py +0 -40
- empathy_os/cli/parsers/routing.py +0 -110
- empathy_os/cli/parsers/setup.py +0 -42
- empathy_os/cli/parsers/status.py +0 -47
- empathy_os/cli/parsers/sync.py +0 -31
- empathy_os/cli/parsers/tier.py +0 -33
- empathy_os/cli/parsers/workflow.py +0 -77
- empathy_os/cli/utils/__init__.py +0 -1
- empathy_os/cli/utils/data.py +0 -242
- empathy_os/cli/utils/helpers.py +0 -68
- empathy_os/cli_legacy.py +0 -3957
- empathy_os/cli_minimal.py +0 -1159
- empathy_os/cli_router 2.py +0 -416
- empathy_os/cli_router.py +0 -437
- empathy_os/cli_unified.py +0 -814
- empathy_os/config/__init__.py +0 -66
- empathy_os/config/xml_config.py +0 -286
- empathy_os/config.py +0 -532
- empathy_os/coordination.py +0 -870
- empathy_os/core.py +0 -1511
- empathy_os/core_modules/__init__.py +0 -15
- empathy_os/cost_tracker.py +0 -626
- empathy_os/dashboard/__init__.py +0 -41
- empathy_os/dashboard/app 2.py +0 -512
- empathy_os/dashboard/app.py +0 -512
- empathy_os/dashboard/simple_server 2.py +0 -403
- empathy_os/dashboard/simple_server.py +0 -403
- empathy_os/dashboard/standalone_server 2.py +0 -536
- empathy_os/dashboard/standalone_server.py +0 -547
- empathy_os/discovery.py +0 -306
- empathy_os/emergence.py +0 -306
- empathy_os/exceptions.py +0 -123
- empathy_os/feedback_loops.py +0 -373
- empathy_os/hot_reload/README.md +0 -473
- empathy_os/hot_reload/__init__.py +0 -62
- empathy_os/hot_reload/config.py +0 -83
- empathy_os/hot_reload/integration.py +0 -229
- empathy_os/hot_reload/reloader.py +0 -298
- empathy_os/hot_reload/watcher.py +0 -183
- empathy_os/hot_reload/websocket.py +0 -177
- empathy_os/levels.py +0 -577
- empathy_os/leverage_points.py +0 -441
- empathy_os/logging_config.py +0 -261
- empathy_os/mcp/__init__.py +0 -10
- empathy_os/mcp/server.py +0 -506
- empathy_os/memory/__init__.py +0 -237
- empathy_os/memory/claude_memory.py +0 -469
- empathy_os/memory/config.py +0 -224
- empathy_os/memory/control_panel.py +0 -1290
- empathy_os/memory/control_panel_support.py +0 -145
- empathy_os/memory/cross_session.py +0 -845
- empathy_os/memory/edges.py +0 -179
- empathy_os/memory/encryption.py +0 -159
- empathy_os/memory/file_session.py +0 -770
- empathy_os/memory/graph.py +0 -570
- empathy_os/memory/long_term.py +0 -913
- empathy_os/memory/long_term_types.py +0 -99
- empathy_os/memory/mixins/__init__.py +0 -25
- empathy_os/memory/mixins/backend_init_mixin.py +0 -244
- empathy_os/memory/mixins/capabilities_mixin.py +0 -199
- empathy_os/memory/mixins/handoff_mixin.py +0 -208
- empathy_os/memory/mixins/lifecycle_mixin.py +0 -49
- empathy_os/memory/mixins/long_term_mixin.py +0 -352
- empathy_os/memory/mixins/promotion_mixin.py +0 -109
- empathy_os/memory/mixins/short_term_mixin.py +0 -182
- empathy_os/memory/nodes.py +0 -179
- empathy_os/memory/redis_bootstrap.py +0 -540
- empathy_os/memory/security/__init__.py +0 -31
- empathy_os/memory/security/audit_logger.py +0 -932
- empathy_os/memory/security/pii_scrubber.py +0 -640
- empathy_os/memory/security/secrets_detector.py +0 -678
- empathy_os/memory/short_term.py +0 -2150
- empathy_os/memory/simple_storage.py +0 -302
- empathy_os/memory/storage/__init__.py +0 -15
- empathy_os/memory/storage_backend.py +0 -167
- empathy_os/memory/summary_index.py +0 -583
- empathy_os/memory/types.py +0 -441
- empathy_os/memory/unified.py +0 -182
- empathy_os/meta_workflows/__init__.py +0 -74
- empathy_os/meta_workflows/agent_creator.py +0 -248
- empathy_os/meta_workflows/builtin_templates.py +0 -567
- empathy_os/meta_workflows/cli_commands/__init__.py +0 -56
- empathy_os/meta_workflows/cli_commands/agent_commands.py +0 -321
- empathy_os/meta_workflows/cli_commands/analytics_commands.py +0 -442
- empathy_os/meta_workflows/cli_commands/config_commands.py +0 -232
- empathy_os/meta_workflows/cli_commands/memory_commands.py +0 -182
- empathy_os/meta_workflows/cli_commands/template_commands.py +0 -354
- empathy_os/meta_workflows/cli_commands/workflow_commands.py +0 -382
- empathy_os/meta_workflows/cli_meta_workflows.py +0 -59
- empathy_os/meta_workflows/form_engine.py +0 -292
- empathy_os/meta_workflows/intent_detector.py +0 -409
- empathy_os/meta_workflows/models.py +0 -569
- empathy_os/meta_workflows/pattern_learner.py +0 -738
- empathy_os/meta_workflows/plan_generator.py +0 -384
- empathy_os/meta_workflows/session_context.py +0 -397
- empathy_os/meta_workflows/template_registry.py +0 -229
- empathy_os/meta_workflows/workflow.py +0 -984
- empathy_os/metrics/__init__.py +0 -12
- empathy_os/metrics/collector.py +0 -31
- empathy_os/metrics/prompt_metrics.py +0 -194
- empathy_os/models/__init__.py +0 -172
- empathy_os/models/__main__.py +0 -13
- empathy_os/models/adaptive_routing 2.py +0 -437
- empathy_os/models/adaptive_routing.py +0 -437
- empathy_os/models/auth_cli.py +0 -444
- empathy_os/models/auth_strategy.py +0 -450
- empathy_os/models/cli.py +0 -655
- empathy_os/models/empathy_executor.py +0 -354
- empathy_os/models/executor.py +0 -257
- empathy_os/models/fallback.py +0 -762
- empathy_os/models/provider_config.py +0 -282
- empathy_os/models/registry.py +0 -472
- empathy_os/models/tasks.py +0 -359
- empathy_os/models/telemetry/__init__.py +0 -71
- empathy_os/models/telemetry/analytics.py +0 -594
- empathy_os/models/telemetry/backend.py +0 -196
- empathy_os/models/telemetry/data_models.py +0 -431
- empathy_os/models/telemetry/storage.py +0 -489
- empathy_os/models/token_estimator.py +0 -420
- empathy_os/models/validation.py +0 -280
- empathy_os/monitoring/__init__.py +0 -52
- empathy_os/monitoring/alerts.py +0 -946
- empathy_os/monitoring/alerts_cli.py +0 -448
- empathy_os/monitoring/multi_backend.py +0 -271
- empathy_os/monitoring/otel_backend.py +0 -362
- empathy_os/optimization/__init__.py +0 -19
- empathy_os/optimization/context_optimizer.py +0 -272
- empathy_os/orchestration/__init__.py +0 -67
- empathy_os/orchestration/agent_templates.py +0 -707
- empathy_os/orchestration/config_store.py +0 -499
- empathy_os/orchestration/execution_strategies.py +0 -2111
- empathy_os/orchestration/meta_orchestrator.py +0 -1168
- empathy_os/orchestration/pattern_learner.py +0 -696
- empathy_os/orchestration/real_tools.py +0 -931
- empathy_os/pattern_cache.py +0 -187
- empathy_os/pattern_library.py +0 -542
- empathy_os/patterns/debugging/all_patterns.json +0 -81
- empathy_os/patterns/debugging/workflow_20260107_1770825e.json +0 -77
- empathy_os/patterns/refactoring_memory.json +0 -89
- empathy_os/persistence.py +0 -564
- empathy_os/platform_utils.py +0 -265
- empathy_os/plugins/__init__.py +0 -28
- empathy_os/plugins/base.py +0 -361
- empathy_os/plugins/registry.py +0 -268
- empathy_os/project_index/__init__.py +0 -32
- empathy_os/project_index/cli.py +0 -335
- empathy_os/project_index/index.py +0 -667
- empathy_os/project_index/models.py +0 -504
- empathy_os/project_index/reports.py +0 -474
- empathy_os/project_index/scanner.py +0 -777
- empathy_os/project_index/scanner_parallel 2.py +0 -291
- empathy_os/project_index/scanner_parallel.py +0 -291
- empathy_os/prompts/__init__.py +0 -61
- empathy_os/prompts/config.py +0 -77
- empathy_os/prompts/context.py +0 -177
- empathy_os/prompts/parser.py +0 -285
- empathy_os/prompts/registry.py +0 -313
- empathy_os/prompts/templates.py +0 -208
- empathy_os/redis_config.py +0 -302
- empathy_os/redis_memory.py +0 -799
- empathy_os/resilience/__init__.py +0 -56
- empathy_os/resilience/circuit_breaker.py +0 -256
- empathy_os/resilience/fallback.py +0 -179
- empathy_os/resilience/health.py +0 -300
- empathy_os/resilience/retry.py +0 -209
- empathy_os/resilience/timeout.py +0 -135
- empathy_os/routing/__init__.py +0 -43
- empathy_os/routing/chain_executor.py +0 -433
- empathy_os/routing/classifier.py +0 -217
- empathy_os/routing/smart_router.py +0 -234
- empathy_os/routing/workflow_registry.py +0 -343
- empathy_os/scaffolding/README.md +0 -589
- empathy_os/scaffolding/__init__.py +0 -35
- empathy_os/scaffolding/__main__.py +0 -14
- empathy_os/scaffolding/cli.py +0 -240
- empathy_os/socratic/__init__.py +0 -256
- empathy_os/socratic/ab_testing.py +0 -958
- empathy_os/socratic/blueprint.py +0 -533
- empathy_os/socratic/cli.py +0 -703
- empathy_os/socratic/collaboration.py +0 -1114
- empathy_os/socratic/domain_templates.py +0 -924
- empathy_os/socratic/embeddings.py +0 -738
- empathy_os/socratic/engine.py +0 -794
- empathy_os/socratic/explainer.py +0 -682
- empathy_os/socratic/feedback.py +0 -772
- empathy_os/socratic/forms.py +0 -629
- empathy_os/socratic/generator.py +0 -732
- empathy_os/socratic/llm_analyzer.py +0 -637
- empathy_os/socratic/mcp_server.py +0 -702
- empathy_os/socratic/session.py +0 -312
- empathy_os/socratic/storage.py +0 -667
- empathy_os/socratic/success.py +0 -730
- empathy_os/socratic/visual_editor.py +0 -860
- empathy_os/socratic/web_ui.py +0 -958
- empathy_os/telemetry/__init__.py +0 -39
- empathy_os/telemetry/agent_coordination 2.py +0 -478
- empathy_os/telemetry/agent_coordination.py +0 -476
- empathy_os/telemetry/agent_tracking 2.py +0 -350
- empathy_os/telemetry/agent_tracking.py +0 -348
- empathy_os/telemetry/approval_gates 2.py +0 -563
- empathy_os/telemetry/approval_gates.py +0 -551
- empathy_os/telemetry/cli.py +0 -1231
- empathy_os/telemetry/commands/__init__.py +0 -14
- empathy_os/telemetry/commands/dashboard_commands.py +0 -696
- empathy_os/telemetry/event_streaming 2.py +0 -405
- empathy_os/telemetry/event_streaming.py +0 -405
- empathy_os/telemetry/feedback_loop 2.py +0 -557
- empathy_os/telemetry/feedback_loop.py +0 -554
- empathy_os/telemetry/usage_tracker.py +0 -591
- empathy_os/templates.py +0 -754
- empathy_os/test_generator/__init__.py +0 -38
- empathy_os/test_generator/__main__.py +0 -14
- empathy_os/test_generator/cli.py +0 -234
- empathy_os/test_generator/generator.py +0 -355
- empathy_os/test_generator/risk_analyzer.py +0 -216
- empathy_os/tier_recommender.py +0 -384
- empathy_os/tools.py +0 -183
- empathy_os/trust/__init__.py +0 -28
- empathy_os/trust/circuit_breaker.py +0 -579
- empathy_os/trust_building.py +0 -527
- empathy_os/validation/__init__.py +0 -19
- empathy_os/validation/xml_validator.py +0 -281
- empathy_os/vscode_bridge 2.py +0 -173
- empathy_os/vscode_bridge.py +0 -173
- empathy_os/workflow_commands.py +0 -780
- empathy_os/workflow_patterns/__init__.py +0 -33
- empathy_os/workflow_patterns/behavior.py +0 -249
- empathy_os/workflow_patterns/core.py +0 -76
- empathy_os/workflow_patterns/output.py +0 -99
- empathy_os/workflow_patterns/registry.py +0 -255
- empathy_os/workflow_patterns/structural.py +0 -288
- empathy_os/workflows/__init__.py +0 -539
- empathy_os/workflows/autonomous_test_gen.py +0 -1268
- empathy_os/workflows/base.py +0 -2667
- empathy_os/workflows/batch_processing.py +0 -342
- empathy_os/workflows/bug_predict.py +0 -1084
- empathy_os/workflows/builder.py +0 -273
- empathy_os/workflows/caching.py +0 -253
- empathy_os/workflows/code_review.py +0 -1048
- empathy_os/workflows/code_review_adapters.py +0 -312
- empathy_os/workflows/code_review_pipeline.py +0 -722
- empathy_os/workflows/config.py +0 -645
- empathy_os/workflows/dependency_check.py +0 -644
- empathy_os/workflows/document_gen/__init__.py +0 -25
- empathy_os/workflows/document_gen/config.py +0 -30
- empathy_os/workflows/document_gen/report_formatter.py +0 -162
- empathy_os/workflows/document_gen/workflow.py +0 -1426
- empathy_os/workflows/document_gen.py +0 -29
- empathy_os/workflows/document_manager.py +0 -216
- empathy_os/workflows/document_manager_README.md +0 -134
- empathy_os/workflows/documentation_orchestrator.py +0 -1205
- empathy_os/workflows/history.py +0 -510
- empathy_os/workflows/keyboard_shortcuts/__init__.py +0 -39
- empathy_os/workflows/keyboard_shortcuts/generators.py +0 -391
- empathy_os/workflows/keyboard_shortcuts/parsers.py +0 -416
- empathy_os/workflows/keyboard_shortcuts/prompts.py +0 -295
- empathy_os/workflows/keyboard_shortcuts/schema.py +0 -193
- empathy_os/workflows/keyboard_shortcuts/workflow.py +0 -509
- empathy_os/workflows/llm_base.py +0 -363
- empathy_os/workflows/manage_docs.py +0 -87
- empathy_os/workflows/manage_docs_README.md +0 -134
- empathy_os/workflows/manage_documentation.py +0 -821
- empathy_os/workflows/new_sample_workflow1.py +0 -149
- empathy_os/workflows/new_sample_workflow1_README.md +0 -150
- empathy_os/workflows/orchestrated_health_check.py +0 -849
- empathy_os/workflows/orchestrated_release_prep.py +0 -600
- empathy_os/workflows/output.py +0 -410
- empathy_os/workflows/perf_audit.py +0 -863
- empathy_os/workflows/pr_review.py +0 -762
- empathy_os/workflows/progress.py +0 -779
- empathy_os/workflows/progress_server.py +0 -322
- empathy_os/workflows/progressive/README 2.md +0 -454
- empathy_os/workflows/progressive/README.md +0 -454
- empathy_os/workflows/progressive/__init__ 2.py +0 -92
- empathy_os/workflows/progressive/__init__.py +0 -82
- empathy_os/workflows/progressive/cli 2.py +0 -242
- empathy_os/workflows/progressive/cli.py +0 -219
- empathy_os/workflows/progressive/core 2.py +0 -488
- empathy_os/workflows/progressive/core.py +0 -488
- empathy_os/workflows/progressive/orchestrator 2.py +0 -701
- empathy_os/workflows/progressive/orchestrator.py +0 -723
- empathy_os/workflows/progressive/reports 2.py +0 -528
- empathy_os/workflows/progressive/reports.py +0 -520
- empathy_os/workflows/progressive/telemetry 2.py +0 -280
- empathy_os/workflows/progressive/telemetry.py +0 -274
- empathy_os/workflows/progressive/test_gen 2.py +0 -514
- empathy_os/workflows/progressive/test_gen.py +0 -495
- empathy_os/workflows/progressive/workflow 2.py +0 -628
- empathy_os/workflows/progressive/workflow.py +0 -589
- empathy_os/workflows/refactor_plan.py +0 -694
- empathy_os/workflows/release_prep.py +0 -895
- empathy_os/workflows/release_prep_crew.py +0 -969
- empathy_os/workflows/research_synthesis.py +0 -404
- empathy_os/workflows/routing.py +0 -168
- empathy_os/workflows/secure_release.py +0 -593
- empathy_os/workflows/security_adapters.py +0 -297
- empathy_os/workflows/security_audit.py +0 -1329
- empathy_os/workflows/security_audit_phase3.py +0 -355
- empathy_os/workflows/seo_optimization.py +0 -633
- empathy_os/workflows/step_config.py +0 -234
- empathy_os/workflows/telemetry_mixin.py +0 -269
- empathy_os/workflows/test5.py +0 -125
- empathy_os/workflows/test5_README.md +0 -158
- empathy_os/workflows/test_coverage_boost_crew.py +0 -849
- empathy_os/workflows/test_gen/__init__.py +0 -52
- empathy_os/workflows/test_gen/ast_analyzer.py +0 -249
- empathy_os/workflows/test_gen/config.py +0 -88
- empathy_os/workflows/test_gen/data_models.py +0 -38
- empathy_os/workflows/test_gen/report_formatter.py +0 -289
- empathy_os/workflows/test_gen/test_templates.py +0 -381
- empathy_os/workflows/test_gen/workflow.py +0 -655
- empathy_os/workflows/test_gen.py +0 -54
- empathy_os/workflows/test_gen_behavioral.py +0 -477
- empathy_os/workflows/test_gen_parallel.py +0 -341
- empathy_os/workflows/test_lifecycle.py +0 -526
- empathy_os/workflows/test_maintenance.py +0 -627
- empathy_os/workflows/test_maintenance_cli.py +0 -590
- empathy_os/workflows/test_maintenance_crew.py +0 -840
- empathy_os/workflows/test_runner.py +0 -622
- empathy_os/workflows/tier_tracking.py +0 -531
- empathy_os/workflows/xml_enhanced_crew.py +0 -285
- empathy_software_plugin/SOFTWARE_PLUGIN_README.md +0 -57
- empathy_software_plugin/cli/__init__.py +0 -120
- empathy_software_plugin/cli/inspect.py +0 -362
- empathy_software_plugin/cli.py +0 -574
- empathy_software_plugin/plugin.py +0 -188
- workflow_scaffolding/__init__.py +0 -11
- workflow_scaffolding/__main__.py +0 -12
- workflow_scaffolding/cli.py +0 -206
- workflow_scaffolding/generator.py +0 -265
- {empathy_framework-5.2.1.dist-info → empathy_framework-5.4.0.dist-info}/WHEEL +0 -0
empathy_os/prompts/registry.py
DELETED
|
@@ -1,313 +0,0 @@
|
|
|
1
|
-
"""Built-in XML Prompt Templates Registry
|
|
2
|
-
|
|
3
|
-
Provides pre-configured XML templates for common workflows.
|
|
4
|
-
|
|
5
|
-
Copyright 2025 Smart-AI-Memory
|
|
6
|
-
Licensed under Fair Source License 0.9
|
|
7
|
-
"""
|
|
8
|
-
|
|
9
|
-
from __future__ import annotations
|
|
10
|
-
|
|
11
|
-
from .templates import XmlPromptTemplate
|
|
12
|
-
|
|
13
|
-
# =============================================================================
|
|
14
|
-
# Response Format Definitions
|
|
15
|
-
# =============================================================================
|
|
16
|
-
|
|
17
|
-
SECURITY_AUDIT_RESPONSE = """<response>
|
|
18
|
-
<summary>Brief overall security assessment (1-2 sentences)</summary>
|
|
19
|
-
<findings>
|
|
20
|
-
<finding severity="critical|high|medium|low|info">
|
|
21
|
-
<title>Issue title</title>
|
|
22
|
-
<location>file:line or component</location>
|
|
23
|
-
<details>Description of the vulnerability and potential impact</details>
|
|
24
|
-
<fix>Specific remediation steps with code example if applicable</fix>
|
|
25
|
-
</finding>
|
|
26
|
-
<!-- Additional findings... -->
|
|
27
|
-
</findings>
|
|
28
|
-
<remediation-checklist>
|
|
29
|
-
<item>Priority action item 1</item>
|
|
30
|
-
<item>Priority action item 2</item>
|
|
31
|
-
<!-- Additional items... -->
|
|
32
|
-
</remediation-checklist>
|
|
33
|
-
</response>"""
|
|
34
|
-
|
|
35
|
-
CODE_REVIEW_RESPONSE = """<response>
|
|
36
|
-
<summary>Brief review summary (1-2 sentences)</summary>
|
|
37
|
-
<verdict>approve|approve_with_suggestions|request_changes|reject</verdict>
|
|
38
|
-
<findings>
|
|
39
|
-
<finding severity="critical|high|medium|low|info">
|
|
40
|
-
<title>Issue title</title>
|
|
41
|
-
<location>file:line</location>
|
|
42
|
-
<details>Description of the issue</details>
|
|
43
|
-
<fix>Suggested fix or improvement</fix>
|
|
44
|
-
</finding>
|
|
45
|
-
<!-- Additional findings... -->
|
|
46
|
-
</findings>
|
|
47
|
-
<suggestions>
|
|
48
|
-
<suggestion>Optional improvement suggestion</suggestion>
|
|
49
|
-
<!-- Additional suggestions... -->
|
|
50
|
-
</suggestions>
|
|
51
|
-
<remediation-checklist>
|
|
52
|
-
<item>Required change 1</item>
|
|
53
|
-
<item>Required change 2</item>
|
|
54
|
-
<!-- Additional items if request_changes... -->
|
|
55
|
-
</remediation-checklist>
|
|
56
|
-
</response>"""
|
|
57
|
-
|
|
58
|
-
RESEARCH_RESPONSE = """<response>
|
|
59
|
-
<summary>Research synthesis summary (2-3 sentences)</summary>
|
|
60
|
-
<key-insights>
|
|
61
|
-
<insight>Key insight or finding 1</insight>
|
|
62
|
-
<insight>Key insight or finding 2</insight>
|
|
63
|
-
<!-- Additional insights... -->
|
|
64
|
-
</key-insights>
|
|
65
|
-
<findings>
|
|
66
|
-
<finding severity="info">
|
|
67
|
-
<title>Topic or concept</title>
|
|
68
|
-
<details>Explanation with context</details>
|
|
69
|
-
</finding>
|
|
70
|
-
<!-- Additional topics if needed... -->
|
|
71
|
-
</findings>
|
|
72
|
-
<confidence level="high|medium|low">Reasoning for confidence level</confidence>
|
|
73
|
-
<remediation-checklist>
|
|
74
|
-
<item>Recommended next step 1</item>
|
|
75
|
-
<item>Recommended next step 2</item>
|
|
76
|
-
</remediation-checklist>
|
|
77
|
-
</response>"""
|
|
78
|
-
|
|
79
|
-
BUG_ANALYSIS_RESPONSE = """<response>
|
|
80
|
-
<summary>Root cause summary (1-2 sentences)</summary>
|
|
81
|
-
<findings>
|
|
82
|
-
<finding severity="critical|high|medium|low">
|
|
83
|
-
<title>Bug description</title>
|
|
84
|
-
<location>file:line where issue originates</location>
|
|
85
|
-
<details>Root cause analysis</details>
|
|
86
|
-
<fix>Recommended fix with code</fix>
|
|
87
|
-
</finding>
|
|
88
|
-
</findings>
|
|
89
|
-
<remediation-checklist>
|
|
90
|
-
<item>Fix step 1</item>
|
|
91
|
-
<item>Verification step</item>
|
|
92
|
-
<item>Test to add</item>
|
|
93
|
-
</remediation-checklist>
|
|
94
|
-
</response>"""
|
|
95
|
-
|
|
96
|
-
PERF_AUDIT_RESPONSE = """<response>
|
|
97
|
-
<summary>Performance assessment summary (1-2 sentences)</summary>
|
|
98
|
-
<performance-score>0-100</performance-score>
|
|
99
|
-
<findings>
|
|
100
|
-
<finding severity="critical|high|medium|low">
|
|
101
|
-
<title>Performance issue title</title>
|
|
102
|
-
<location>file:line or component</location>
|
|
103
|
-
<details>Description of the bottleneck and its impact</details>
|
|
104
|
-
<fix>Optimization recommendation with code example</fix>
|
|
105
|
-
</finding>
|
|
106
|
-
</findings>
|
|
107
|
-
<remediation-checklist>
|
|
108
|
-
<item>Optimization priority 1</item>
|
|
109
|
-
<item>Optimization priority 2</item>
|
|
110
|
-
</remediation-checklist>
|
|
111
|
-
</response>"""
|
|
112
|
-
|
|
113
|
-
REFACTOR_PLAN_RESPONSE = """<response>
|
|
114
|
-
<summary>Tech debt assessment (1-2 sentences)</summary>
|
|
115
|
-
<trajectory>increasing|stable|decreasing</trajectory>
|
|
116
|
-
<findings>
|
|
117
|
-
<finding severity="high|medium|low">
|
|
118
|
-
<title>Debt item description</title>
|
|
119
|
-
<location>file:line</location>
|
|
120
|
-
<details>Impact and complexity assessment</details>
|
|
121
|
-
<fix>Refactoring approach</fix>
|
|
122
|
-
</finding>
|
|
123
|
-
</findings>
|
|
124
|
-
<roadmap>
|
|
125
|
-
<phase priority="1|2|3">
|
|
126
|
-
<name>Phase name</name>
|
|
127
|
-
<description>What to accomplish</description>
|
|
128
|
-
<effort>high|medium|low</effort>
|
|
129
|
-
</phase>
|
|
130
|
-
</roadmap>
|
|
131
|
-
<remediation-checklist>
|
|
132
|
-
<item>Immediate action 1</item>
|
|
133
|
-
<item>Immediate action 2</item>
|
|
134
|
-
</remediation-checklist>
|
|
135
|
-
</response>"""
|
|
136
|
-
|
|
137
|
-
TEST_GEN_RESPONSE = """<response>
|
|
138
|
-
<summary>Test generation summary (1-2 sentences)</summary>
|
|
139
|
-
<coverage-improvement>Estimated coverage improvement</coverage-improvement>
|
|
140
|
-
<findings>
|
|
141
|
-
<finding severity="info">
|
|
142
|
-
<title>Untested area</title>
|
|
143
|
-
<location>file:function or class</location>
|
|
144
|
-
<details>Why this needs testing</details>
|
|
145
|
-
<fix>Test approach recommendation</fix>
|
|
146
|
-
</finding>
|
|
147
|
-
</findings>
|
|
148
|
-
<tests>
|
|
149
|
-
<test target="function or class name">
|
|
150
|
-
<type>unit|integration|edge-case</type>
|
|
151
|
-
<description>What this test verifies</description>
|
|
152
|
-
<code><![CDATA[
|
|
153
|
-
def test_example():
|
|
154
|
-
# Test code here
|
|
155
|
-
pass
|
|
156
|
-
]]></code>
|
|
157
|
-
</test>
|
|
158
|
-
</tests>
|
|
159
|
-
<remediation-checklist>
|
|
160
|
-
<item>Test to add first</item>
|
|
161
|
-
<item>Test to add second</item>
|
|
162
|
-
</remediation-checklist>
|
|
163
|
-
</response>"""
|
|
164
|
-
|
|
165
|
-
DOC_GEN_RESPONSE = """<response>
|
|
166
|
-
<summary>Documentation summary (1-2 sentences)</summary>
|
|
167
|
-
<sections>
|
|
168
|
-
<section name="Section Title">
|
|
169
|
-
<content>Section content in markdown</content>
|
|
170
|
-
</section>
|
|
171
|
-
</sections>
|
|
172
|
-
<findings>
|
|
173
|
-
<finding severity="info">
|
|
174
|
-
<title>Documentation gap or improvement</title>
|
|
175
|
-
<details>What needs documentation</details>
|
|
176
|
-
</finding>
|
|
177
|
-
</findings>
|
|
178
|
-
<remediation-checklist>
|
|
179
|
-
<item>Documentation improvement 1</item>
|
|
180
|
-
<item>Documentation improvement 2</item>
|
|
181
|
-
</remediation-checklist>
|
|
182
|
-
</response>"""
|
|
183
|
-
|
|
184
|
-
RELEASE_PREP_RESPONSE = """<response>
|
|
185
|
-
<summary>Release readiness assessment (1-2 sentences)</summary>
|
|
186
|
-
<verdict>approved|blocked|needs-review</verdict>
|
|
187
|
-
<confidence>high|medium|low</confidence>
|
|
188
|
-
<findings>
|
|
189
|
-
<finding severity="blocker|warning|info">
|
|
190
|
-
<title>Issue title</title>
|
|
191
|
-
<location>Component or area</location>
|
|
192
|
-
<details>Description of the issue</details>
|
|
193
|
-
<fix>Required action before release</fix>
|
|
194
|
-
</finding>
|
|
195
|
-
</findings>
|
|
196
|
-
<checklist>
|
|
197
|
-
<item status="pass|fail|skip">Check description</item>
|
|
198
|
-
</checklist>
|
|
199
|
-
<remediation-checklist>
|
|
200
|
-
<item>Pre-release action 1</item>
|
|
201
|
-
<item>Pre-release action 2</item>
|
|
202
|
-
</remediation-checklist>
|
|
203
|
-
</response>"""
|
|
204
|
-
|
|
205
|
-
DEPENDENCY_CHECK_RESPONSE = """<response>
|
|
206
|
-
<summary>Dependency security assessment (1-2 sentences)</summary>
|
|
207
|
-
<risk-level>critical|high|medium|low</risk-level>
|
|
208
|
-
<risk-score>0-100</risk-score>
|
|
209
|
-
<findings>
|
|
210
|
-
<finding severity="critical|high|medium|low">
|
|
211
|
-
<title>Vulnerability or issue</title>
|
|
212
|
-
<location>package@version</location>
|
|
213
|
-
<details>CVE or issue description</details>
|
|
214
|
-
<fix>Upgrade or mitigation recommendation</fix>
|
|
215
|
-
</finding>
|
|
216
|
-
</findings>
|
|
217
|
-
<remediation-checklist>
|
|
218
|
-
<item>Upgrade package X to version Y</item>
|
|
219
|
-
<item>Review dependency Z</item>
|
|
220
|
-
</remediation-checklist>
|
|
221
|
-
</response>"""
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
# =============================================================================
|
|
225
|
-
# Built-in Templates
|
|
226
|
-
# =============================================================================
|
|
227
|
-
|
|
228
|
-
BUILTIN_TEMPLATES: dict[str, XmlPromptTemplate] = {
|
|
229
|
-
"security-audit": XmlPromptTemplate(
|
|
230
|
-
name="security-audit",
|
|
231
|
-
schema_version="1.0",
|
|
232
|
-
response_format=SECURITY_AUDIT_RESPONSE,
|
|
233
|
-
),
|
|
234
|
-
"code-review": XmlPromptTemplate(
|
|
235
|
-
name="code-review",
|
|
236
|
-
schema_version="1.0",
|
|
237
|
-
response_format=CODE_REVIEW_RESPONSE,
|
|
238
|
-
),
|
|
239
|
-
"research": XmlPromptTemplate(
|
|
240
|
-
name="research",
|
|
241
|
-
schema_version="1.0",
|
|
242
|
-
response_format=RESEARCH_RESPONSE,
|
|
243
|
-
),
|
|
244
|
-
"bug-analysis": XmlPromptTemplate(
|
|
245
|
-
name="bug-analysis",
|
|
246
|
-
schema_version="1.0",
|
|
247
|
-
response_format=BUG_ANALYSIS_RESPONSE,
|
|
248
|
-
),
|
|
249
|
-
"perf-audit": XmlPromptTemplate(
|
|
250
|
-
name="perf-audit",
|
|
251
|
-
schema_version="1.0",
|
|
252
|
-
response_format=PERF_AUDIT_RESPONSE,
|
|
253
|
-
),
|
|
254
|
-
"refactor-plan": XmlPromptTemplate(
|
|
255
|
-
name="refactor-plan",
|
|
256
|
-
schema_version="1.0",
|
|
257
|
-
response_format=REFACTOR_PLAN_RESPONSE,
|
|
258
|
-
),
|
|
259
|
-
"test-gen": XmlPromptTemplate(
|
|
260
|
-
name="test-gen",
|
|
261
|
-
schema_version="1.0",
|
|
262
|
-
response_format=TEST_GEN_RESPONSE,
|
|
263
|
-
),
|
|
264
|
-
"doc-gen": XmlPromptTemplate(
|
|
265
|
-
name="doc-gen",
|
|
266
|
-
schema_version="1.0",
|
|
267
|
-
response_format=DOC_GEN_RESPONSE,
|
|
268
|
-
),
|
|
269
|
-
"release-prep": XmlPromptTemplate(
|
|
270
|
-
name="release-prep",
|
|
271
|
-
schema_version="1.0",
|
|
272
|
-
response_format=RELEASE_PREP_RESPONSE,
|
|
273
|
-
),
|
|
274
|
-
"dependency-check": XmlPromptTemplate(
|
|
275
|
-
name="dependency-check",
|
|
276
|
-
schema_version="1.0",
|
|
277
|
-
response_format=DEPENDENCY_CHECK_RESPONSE,
|
|
278
|
-
),
|
|
279
|
-
}
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
def get_template(name: str) -> XmlPromptTemplate | None:
|
|
283
|
-
"""Get a built-in template by name.
|
|
284
|
-
|
|
285
|
-
Args:
|
|
286
|
-
name: Template name (e.g., "security-audit", "code-review").
|
|
287
|
-
|
|
288
|
-
Returns:
|
|
289
|
-
XmlPromptTemplate if found, None otherwise.
|
|
290
|
-
|
|
291
|
-
"""
|
|
292
|
-
return BUILTIN_TEMPLATES.get(name)
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
def list_templates() -> list[str]:
|
|
296
|
-
"""List all available built-in template names.
|
|
297
|
-
|
|
298
|
-
Returns:
|
|
299
|
-
List of template names.
|
|
300
|
-
|
|
301
|
-
"""
|
|
302
|
-
return list(BUILTIN_TEMPLATES.keys())
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
def register_template(name: str, template: XmlPromptTemplate) -> None:
|
|
306
|
-
"""Register a custom template.
|
|
307
|
-
|
|
308
|
-
Args:
|
|
309
|
-
name: Template name for lookup.
|
|
310
|
-
template: XmlPromptTemplate instance.
|
|
311
|
-
|
|
312
|
-
"""
|
|
313
|
-
BUILTIN_TEMPLATES[name] = template
|
empathy_os/prompts/templates.py
DELETED
|
@@ -1,208 +0,0 @@
|
|
|
1
|
-
"""Prompt Templates
|
|
2
|
-
|
|
3
|
-
Provides protocol and implementations for prompt templates,
|
|
4
|
-
including XML-structured prompts.
|
|
5
|
-
|
|
6
|
-
Copyright 2025 Smart-AI-Memory
|
|
7
|
-
Licensed under Fair Source License 0.9
|
|
8
|
-
"""
|
|
9
|
-
|
|
10
|
-
from __future__ import annotations
|
|
11
|
-
|
|
12
|
-
from dataclasses import dataclass, field
|
|
13
|
-
from typing import Any, Protocol
|
|
14
|
-
|
|
15
|
-
from .context import PromptContext
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
class PromptTemplate(Protocol):
|
|
19
|
-
"""Protocol for prompt templates."""
|
|
20
|
-
|
|
21
|
-
def render(self, context: PromptContext) -> str:
|
|
22
|
-
"""Render the template with given context.
|
|
23
|
-
|
|
24
|
-
Args:
|
|
25
|
-
context: The prompt context containing role, goal, instructions, etc.
|
|
26
|
-
|
|
27
|
-
Returns:
|
|
28
|
-
The rendered prompt string.
|
|
29
|
-
|
|
30
|
-
"""
|
|
31
|
-
...
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
@dataclass
|
|
35
|
-
class PlainTextPromptTemplate:
|
|
36
|
-
"""Simple plain text prompt template.
|
|
37
|
-
|
|
38
|
-
Renders prompts in a straightforward text format without XML structure.
|
|
39
|
-
"""
|
|
40
|
-
|
|
41
|
-
name: str
|
|
42
|
-
include_role: bool = True
|
|
43
|
-
include_constraints: bool = True
|
|
44
|
-
|
|
45
|
-
def render(self, context: PromptContext) -> str:
|
|
46
|
-
"""Render as plain text prompt."""
|
|
47
|
-
parts = []
|
|
48
|
-
|
|
49
|
-
if self.include_role:
|
|
50
|
-
parts.append(f"You are a {context.role}.")
|
|
51
|
-
parts.append("")
|
|
52
|
-
|
|
53
|
-
parts.append(f"Goal: {context.goal}")
|
|
54
|
-
parts.append("")
|
|
55
|
-
|
|
56
|
-
if context.instructions:
|
|
57
|
-
parts.append("Instructions:")
|
|
58
|
-
for i, inst in enumerate(context.instructions, 1):
|
|
59
|
-
parts.append(f"{i}. {inst}")
|
|
60
|
-
parts.append("")
|
|
61
|
-
|
|
62
|
-
if self.include_constraints and context.constraints:
|
|
63
|
-
parts.append("Guidelines:")
|
|
64
|
-
for constraint in context.constraints:
|
|
65
|
-
parts.append(f"- {constraint}")
|
|
66
|
-
parts.append("")
|
|
67
|
-
|
|
68
|
-
if context.input_payload:
|
|
69
|
-
parts.append(f"Input ({context.input_type}):")
|
|
70
|
-
parts.append(context.input_payload)
|
|
71
|
-
|
|
72
|
-
return "\n".join(parts)
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
@dataclass
|
|
76
|
-
class XmlPromptTemplate:
|
|
77
|
-
"""XML-structured prompt template.
|
|
78
|
-
|
|
79
|
-
Renders prompts in XML format for consistent parsing and
|
|
80
|
-
structured LLM interactions.
|
|
81
|
-
"""
|
|
82
|
-
|
|
83
|
-
name: str
|
|
84
|
-
schema_version: str = "1.0"
|
|
85
|
-
response_format: str | None = None
|
|
86
|
-
extra_tags: dict[str, str] = field(default_factory=dict)
|
|
87
|
-
|
|
88
|
-
def render(self, context: PromptContext) -> str:
|
|
89
|
-
"""Render XML prompt from context.
|
|
90
|
-
|
|
91
|
-
Args:
|
|
92
|
-
context: The prompt context.
|
|
93
|
-
|
|
94
|
-
Returns:
|
|
95
|
-
XML-formatted prompt string.
|
|
96
|
-
|
|
97
|
-
"""
|
|
98
|
-
# Build instructions XML
|
|
99
|
-
instructions_xml = self._render_instructions(context.instructions)
|
|
100
|
-
|
|
101
|
-
# Build constraints XML
|
|
102
|
-
constraints_xml = self._render_constraints(context.constraints)
|
|
103
|
-
|
|
104
|
-
# Build extra context XML if present
|
|
105
|
-
extra_xml = self._render_extra(context.extra)
|
|
106
|
-
|
|
107
|
-
# Build input section with CDATA for safety
|
|
108
|
-
input_content = self._escape_cdata(context.input_payload)
|
|
109
|
-
|
|
110
|
-
prompt = f"""<request schema="{self.schema_version}">
|
|
111
|
-
<role>{self._escape_xml(context.role)}</role>
|
|
112
|
-
<goal>{self._escape_xml(context.goal)}</goal>
|
|
113
|
-
<instructions>
|
|
114
|
-
{instructions_xml}
|
|
115
|
-
</instructions>
|
|
116
|
-
<constraints>
|
|
117
|
-
{constraints_xml}
|
|
118
|
-
</constraints>{extra_xml}
|
|
119
|
-
<input type="{context.input_type}">
|
|
120
|
-
<![CDATA[
|
|
121
|
-
{input_content}
|
|
122
|
-
]]>
|
|
123
|
-
</input>
|
|
124
|
-
</request>"""
|
|
125
|
-
|
|
126
|
-
# Add response format instructions if specified
|
|
127
|
-
if self.response_format:
|
|
128
|
-
prompt += f"\n\n{self._response_instructions()}"
|
|
129
|
-
|
|
130
|
-
return prompt
|
|
131
|
-
|
|
132
|
-
def _render_instructions(self, instructions: list[str]) -> str:
|
|
133
|
-
"""Render instructions as XML steps."""
|
|
134
|
-
if not instructions:
|
|
135
|
-
return " <!-- No specific instructions -->"
|
|
136
|
-
lines = []
|
|
137
|
-
for i, inst in enumerate(instructions, 1):
|
|
138
|
-
escaped = self._escape_xml(inst)
|
|
139
|
-
lines.append(f" <step>{i}. {escaped}</step>")
|
|
140
|
-
return "\n".join(lines)
|
|
141
|
-
|
|
142
|
-
def _render_constraints(self, constraints: list[str]) -> str:
|
|
143
|
-
"""Render constraints as XML rules."""
|
|
144
|
-
if not constraints:
|
|
145
|
-
return " <!-- No specific constraints -->"
|
|
146
|
-
lines = []
|
|
147
|
-
for constraint in constraints:
|
|
148
|
-
escaped = self._escape_xml(constraint)
|
|
149
|
-
lines.append(f" <rule>{escaped}</rule>")
|
|
150
|
-
return "\n".join(lines)
|
|
151
|
-
|
|
152
|
-
def _render_extra(self, extra: dict[str, Any]) -> str:
|
|
153
|
-
"""Render extra context as XML if present."""
|
|
154
|
-
if not extra:
|
|
155
|
-
return ""
|
|
156
|
-
|
|
157
|
-
lines = ["\n <context>"]
|
|
158
|
-
for key, value in extra.items():
|
|
159
|
-
if value: # Only include non-empty values
|
|
160
|
-
escaped_key = self._escape_xml(str(key))
|
|
161
|
-
escaped_value = self._escape_xml(str(value))
|
|
162
|
-
lines.append(f" <{escaped_key}>{escaped_value}</{escaped_key}>")
|
|
163
|
-
lines.append(" </context>")
|
|
164
|
-
|
|
165
|
-
return "\n".join(lines)
|
|
166
|
-
|
|
167
|
-
def _response_instructions(self) -> str:
|
|
168
|
-
"""Generate response format instructions."""
|
|
169
|
-
return f"""Please respond using ONLY this XML format (no other text before or after):
|
|
170
|
-
|
|
171
|
-
{self.response_format}
|
|
172
|
-
|
|
173
|
-
Important:
|
|
174
|
-
- Use the exact XML structure shown above
|
|
175
|
-
- Include all required tags even if empty
|
|
176
|
-
- Use severity values: critical, high, medium, low, info
|
|
177
|
-
- Wrap code examples in CDATA sections"""
|
|
178
|
-
|
|
179
|
-
def _escape_xml(self, text: str) -> str:
|
|
180
|
-
"""Escape special XML characters."""
|
|
181
|
-
if not text:
|
|
182
|
-
return ""
|
|
183
|
-
return (
|
|
184
|
-
text.replace("&", "&")
|
|
185
|
-
.replace("<", "<")
|
|
186
|
-
.replace(">", ">")
|
|
187
|
-
.replace('"', """)
|
|
188
|
-
.replace("'", "'")
|
|
189
|
-
)
|
|
190
|
-
|
|
191
|
-
def _escape_cdata(self, text: str) -> str:
|
|
192
|
-
"""Escape text for use in CDATA section.
|
|
193
|
-
|
|
194
|
-
CDATA sections can contain anything except the closing sequence ]]>
|
|
195
|
-
"""
|
|
196
|
-
if not text:
|
|
197
|
-
return ""
|
|
198
|
-
# Replace ]]> with ]]]]><![CDATA[> to escape it
|
|
199
|
-
return text.replace("]]>", "]]]]><![CDATA[>")
|
|
200
|
-
|
|
201
|
-
def with_response_format(self, response_format: str) -> XmlPromptTemplate:
|
|
202
|
-
"""Return a new template with the specified response format."""
|
|
203
|
-
return XmlPromptTemplate(
|
|
204
|
-
name=self.name,
|
|
205
|
-
schema_version=self.schema_version,
|
|
206
|
-
response_format=response_format,
|
|
207
|
-
extra_tags=self.extra_tags.copy(),
|
|
208
|
-
)
|