attune-ai 2.0.2__tar.gz → 2.1.1__tar.gz
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.
- {attune_ai-2.0.2 → attune_ai-2.1.1}/CHANGELOG.md +7 -25
- {attune_ai-2.0.2 → attune_ai-2.1.1}/CONTRIBUTING.md +29 -25
- {attune_ai-2.0.2 → attune_ai-2.1.1}/PKG-INFO +41 -80
- {attune_ai-2.0.2 → attune_ai-2.1.1}/README.md +40 -79
- {attune_ai-2.0.2 → attune_ai-2.1.1}/SECURITY.md +4 -5
- {attune_ai-2.0.2 → attune_ai-2.1.1}/attune_ai.egg-info/PKG-INFO +41 -80
- {attune_ai-2.0.2 → attune_ai-2.1.1}/attune_ai.egg-info/SOURCES.txt +0 -19
- {attune_ai-2.0.2 → attune_ai-2.1.1}/docs/api-reference/README.md +3 -3
- {attune_ai-2.0.2 → attune_ai-2.1.1}/docs/api-reference/config.md +3 -3
- {attune_ai-2.0.2 → attune_ai-2.1.1}/docs/api-reference/core.md +2 -2
- {attune_ai-2.0.2 → attune_ai-2.1.1}/docs/api-reference/empathy-os.md +2 -2
- {attune_ai-2.0.2 → attune_ai-2.1.1}/docs/api-reference/index.md +3 -3
- {attune_ai-2.0.2 → attune_ai-2.1.1}/docs/api-reference/security-scanner.md +1 -1
- {attune_ai-2.0.2 → attune_ai-2.1.1}/docs/api-reference/wizards.md +1 -1
- {attune_ai-2.0.2 → attune_ai-2.1.1}/docs/examples/adaptive-learning-system.md +1 -1
- {attune_ai-2.0.2 → attune_ai-2.1.1}/docs/examples/generated-plan-release-prep.md +2 -2
- {attune_ai-2.0.2 → attune_ai-2.1.1}/docs/examples/sbar-clinical-handoff.md +3 -3
- {attune_ai-2.0.2 → attune_ai-2.1.1}/docs/examples/simple-chatbot.md +1 -1
- {attune_ai-2.0.2 → attune_ai-2.1.1}/docs/examples/webhook-event-integration.md +6 -6
- {attune_ai-2.0.2 → attune_ai-2.1.1}/docs/getting-started/choose-your-path.md +2 -2
- {attune_ai-2.0.2 → attune_ai-2.1.1}/docs/getting-started/first-steps.md +2 -2
- {attune_ai-2.0.2 → attune_ai-2.1.1}/docs/getting-started/index.md +4 -4
- {attune_ai-2.0.2 → attune_ai-2.1.1}/docs/getting-started/installation.md +3 -3
- {attune_ai-2.0.2 → attune_ai-2.1.1}/docs/getting-started/mcp-integration.md +5 -5
- {attune_ai-2.0.2 → attune_ai-2.1.1}/docs/getting-started/redis-setup.md +2 -2
- {attune_ai-2.0.2 → attune_ai-2.1.1}/docs/guides/DISTRIBUTION_POLICY.md +1 -1
- {attune_ai-2.0.2 → attune_ai-2.1.1}/docs/guides/MCP_PUBLISH_INSTRUCTIONS.md +1 -1
- {attune_ai-2.0.2 → attune_ai-2.1.1}/docs/guides/MKDOCS_TUTORIAL.md +13 -13
- {attune_ai-2.0.2 → attune_ai-2.1.1}/docs/guides/RELEASE_PREPARATION.md +4 -4
- {attune_ai-2.0.2 → attune_ai-2.1.1}/docs/guides/WORKFLOW_PATTERNS.md +2 -2
- {attune_ai-2.0.2 → attune_ai-2.1.1}/docs/guides/claude-memory-integration.md +2 -2
- {attune_ai-2.0.2 → attune_ai-2.1.1}/docs/guides/five-levels-of-empathy.md +10 -10
- {attune_ai-2.0.2 → attune_ai-2.1.1}/docs/guides/foreword.md +2 -2
- {attune_ai-2.0.2 → attune_ai-2.1.1}/docs/guides/how-to-read-this-book.md +1 -1
- {attune_ai-2.0.2 → attune_ai-2.1.1}/docs/guides/pattern-catalog.md +2 -2
- {attune_ai-2.0.2 → attune_ai-2.1.1}/docs/guides/preface.md +1 -1
- {attune_ai-2.0.2 → attune_ai-2.1.1}/docs/guides/signoz-integration.md +10 -10
- {attune_ai-2.0.2 → attune_ai-2.1.1}/docs/guides/teaching-ai-your-standards.md +4 -4
- {attune_ai-2.0.2 → attune_ai-2.1.1}/docs/guides/xml-enhanced-prompts.md +5 -5
- {attune_ai-2.0.2 → attune_ai-2.1.1}/docs/index.md +4 -4
- {attune_ai-2.0.2 → attune_ai-2.1.1}/pyproject.toml +1 -1
- {attune_ai-2.0.2 → attune_ai-2.1.1}/src/attune/workflows/perf_audit.py +11 -15
- attune_ai-2.0.2/docs/api-reference/memory 2.md +0 -305
- attune_ai-2.0.2/docs/api-reference/security-scanner 2.md +0 -859
- attune_ai-2.0.2/docs/api-reference/workflows 2.md +0 -406
- attune_ai-2.0.2/docs/getting-started/installation 2.md +0 -175
- attune_ai-2.0.2/docs/getting-started/mcp-integration 2.md +0 -140
- attune_ai-2.0.2/examples/adaptive_routing_workflow_demo 2.py +0 -157
- attune_ai-2.0.2/examples/agent_coordination_demo 2.py +0 -234
- attune_ai-2.0.2/examples/agent_tracking_demo 2.py +0 -169
- attune_ai-2.0.2/examples/approval_gates_demo 2.py +0 -365
- attune_ai-2.0.2/examples/coordinated_workflow_demo 2.py +0 -363
- attune_ai-2.0.2/examples/dashboard_demo 2.py +0 -227
- attune_ai-2.0.2/examples/event_streaming_demo 2.py +0 -318
- attune_ai-2.0.2/examples/feedback_loop_demo 2.py +0 -382
- attune_ai-2.0.2/examples/scanner_usage 2.py +0 -277
- attune_ai-2.0.2/examples/suggest_adaptive_routing 2.py +0 -153
- attune_ai-2.0.2/examples/test_approval_gates 2.py +0 -121
- attune_ai-2.0.2/examples/workflow_chaining_demo 2.py +0 -254
- attune_ai-2.0.2/src/.empathy/discovery_stats.json +0 -15
- attune_ai-2.0.2/src/attune/workflows/progressive/README 2.md +0 -454
- {attune_ai-2.0.2 → attune_ai-2.1.1}/.bandit +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/CODE_OF_CONDUCT.md +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/LICENSE +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/LICENSE_CHANGE_ANNOUNCEMENT.md +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/MANIFEST.in +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/agents/code_inspection/patterns/inspection/recurring_B112.json +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/agents/code_inspection/patterns/inspection/recurring_F541.json +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/agents/code_inspection/patterns/inspection/recurring_FORMAT.json +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/agents/code_inspection/patterns/inspection/recurring_bug_20250822_def456.json +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/agents/code_inspection/patterns/inspection/recurring_bug_20250915_abc123.json +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/agents/code_inspection/patterns/inspection/recurring_bug_20251212_3c5b9951.json +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/agents/code_inspection/patterns/inspection/recurring_bug_20251212_97c0f72f.json +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/agents/code_inspection/patterns/inspection/recurring_bug_20251212_a0871d53.json +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/agents/code_inspection/patterns/inspection/recurring_bug_20251212_a9b6ec41.json +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/agents/code_inspection/patterns/inspection/recurring_bug_null_001.json +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/agents/code_inspection/patterns/inspection/recurring_builtin.json +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/attune_ai.egg-info/dependency_links.txt +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/attune_ai.egg-info/entry_points.txt +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/attune_ai.egg-info/requires.txt +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/attune_ai.egg-info/top_level.txt +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/attune_healthcare/__init__.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/attune_healthcare/monitors/__init__.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/attune_healthcare/monitors/clinical_protocol_monitor.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/attune_healthcare/monitors/monitoring/__init__.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/attune_healthcare/monitors/monitoring/protocol_checker.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/attune_healthcare/monitors/monitoring/protocol_loader.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/attune_healthcare/monitors/monitoring/sensor_parsers.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/attune_healthcare/monitors/monitoring/trajectory_analyzer.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/attune_llm/README.md +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/attune_llm/__init__.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/attune_llm/agent_factory/__init__.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/attune_llm/agent_factory/adapters/__init__.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/attune_llm/agent_factory/adapters/autogen_adapter.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/attune_llm/agent_factory/adapters/crewai_adapter.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/attune_llm/agent_factory/adapters/haystack_adapter.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/attune_llm/agent_factory/adapters/langchain_adapter.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/attune_llm/agent_factory/adapters/langgraph_adapter.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/attune_llm/agent_factory/adapters/native.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/attune_llm/agent_factory/adapters/wizard_adapter.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/attune_llm/agent_factory/base.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/attune_llm/agent_factory/crews/__init__.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/attune_llm/agent_factory/crews/code_review.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/attune_llm/agent_factory/crews/health_check.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/attune_llm/agent_factory/crews/refactoring.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/attune_llm/agent_factory/crews/security_audit.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/attune_llm/agent_factory/decorators.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/attune_llm/agent_factory/factory.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/attune_llm/agent_factory/framework.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/attune_llm/agent_factory/memory_integration.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/attune_llm/agent_factory/resilient.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/attune_llm/agents_md/__init__.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/attune_llm/agents_md/loader.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/attune_llm/agents_md/parser.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/attune_llm/agents_md/registry.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/attune_llm/claude_memory.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/attune_llm/cli/__init__.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/attune_llm/cli/sync_claude.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/attune_llm/code_health.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/attune_llm/commands/__init__.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/attune_llm/commands/context.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/attune_llm/commands/loader.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/attune_llm/commands/models.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/attune_llm/commands/parser.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/attune_llm/commands/registry.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/attune_llm/config/__init__.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/attune_llm/config/unified.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/attune_llm/context/__init__.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/attune_llm/context/compaction.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/attune_llm/context/manager.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/attune_llm/contextual_patterns.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/attune_llm/core.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/attune_llm/git_pattern_extractor.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/attune_llm/hooks/__init__.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/attune_llm/hooks/config.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/attune_llm/hooks/executor.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/attune_llm/hooks/registry.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/attune_llm/hooks/scripts/__init__.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/attune_llm/hooks/scripts/evaluate_session.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/attune_llm/hooks/scripts/first_time_init.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/attune_llm/hooks/scripts/pre_compact.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/attune_llm/hooks/scripts/session_end.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/attune_llm/hooks/scripts/session_start.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/attune_llm/hooks/scripts/suggest_compact.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/attune_llm/learning/__init__.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/attune_llm/learning/evaluator.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/attune_llm/learning/extractor.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/attune_llm/learning/storage.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/attune_llm/levels.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/attune_llm/pattern_confidence.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/attune_llm/pattern_resolver.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/attune_llm/pattern_summary.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/attune_llm/providers.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/attune_llm/routing/__init__.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/attune_llm/routing/model_router.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/attune_llm/security/IMPLEMENTATION_SUMMARY.md +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/attune_llm/security/PHASE2_COMPLETE.md +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/attune_llm/security/PHASE2_SECRETS_DETECTOR_COMPLETE.md +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/attune_llm/security/QUICK_REFERENCE.md +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/attune_llm/security/README.md +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/attune_llm/security/__init__.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/attune_llm/security/audit_logger.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/attune_llm/security/audit_logger_example.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/attune_llm/security/pii_scrubber.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/attune_llm/security/secrets_detector.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/attune_llm/security/secrets_detector_example.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/attune_llm/security/secure_memdocs.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/attune_llm/security/secure_memdocs_example.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/attune_llm/session_status.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/attune_llm/state.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/attune_llm/utils/__init__.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/attune_llm/utils/tokens.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/attune_software/SOFTWARE_PLUGIN_README.md +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/attune_software/__init__.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/attune_software/cli/__init__.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/attune_software/cli/inspect.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/attune_software/cli.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/attune_software/plugin.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/docs/api-reference/llm-toolkit.md +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/docs/api-reference/memory.md +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/docs/api-reference/meta-orchestration.md +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/docs/api-reference/multi-agent.md +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/docs/api-reference/pattern-library.md +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/docs/api-reference/persistence.md +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/docs/api-reference/software-wizards.md +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/docs/api-reference/workflows.md +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/docs/examples/multi-agent-team-coordination.md +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/docs/guides/PUBLISHING.md +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/docs/guides/healthcare-wizards.md +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/docs/guides/multi-model-workflows.md +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/docs/guides/trust-circuit-breaker.md +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/examples/README.md +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/examples/WIZARD_DASHBOARD_IMPLEMENTATION.md +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/examples/WIZARD_DASHBOARD_STATE_MANAGEMENT.md +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/examples/WIZARD_DASHBOARD_WIREFRAMES.md +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/examples/adaptive_routing_demo.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/examples/adaptive_routing_workflow_demo.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/examples/agent_coordination_demo.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/examples/agent_tracking_demo.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/examples/anthropic_patterns_demo.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/examples/anthropic_patterns_simple_demo.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/examples/approval_gates_demo.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/examples/claude_memory/README-SECURITY.md +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/examples/claude_memory/enterprise-CLAUDE-secure.md +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/examples/claude_memory/example-with-imports.md +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/examples/claude_memory/project-CLAUDE.md +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/examples/claude_memory/user-CLAUDE.md +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/examples/complete-workflow/README.md +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/examples/complete-workflow/workflow_example.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/examples/config/empathy.config.example.yml +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/examples/coordinated_workflow_demo.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/examples/dashboard_demo.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/examples/demos/demo_end_to_end_workflow.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/examples/demos/demo_memory_integration.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/examples/demos/demo_meta_workflows.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/examples/demos/demo_progressive_demo.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/examples/demos/demo_security_complete.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/examples/demos/demo_test_workflow.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/examples/domain_wizards/all_domain_wizards_demo.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/examples/domain_wizards/healthcare_example.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/examples/domain_wizards/tests/test_healthcare_wizard.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/examples/event_streaming_demo.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/examples/feedback_loop_demo.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/examples/hybrid_cli_demo.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/examples/interactive_team_creation.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/examples/level_5_transformative/BLOG_POST.md +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/examples/level_5_transformative/README.md +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/examples/level_5_transformative/data/deployment_pipeline.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/examples/level_5_transformative/data/healthcare_handoff_code.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/examples/llm_toolkit_demo.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/examples/meta_orchestrator_demo.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/examples/multi_llm_usage.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/examples/orchestration/advanced_composition.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/examples/orchestration/basic_usage.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/examples/orchestration/custom_workflow.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/examples/progressive_test_gen_demo.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/examples/quickstart/README.md +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/examples/quickstart.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/examples/redis_exploration.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/examples/scanner_usage.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/examples/security_integration_example.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/examples/seo_optimization/README.md +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/examples/seo_optimization/SOCRATIC_DEMO.md +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/examples/seo_optimization/complete_demo.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/examples/seo_optimization/config.yaml +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/examples/seo_optimization/dashboard_demo.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/examples/seo_optimization/demo.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/examples/seo_optimization/live_demo.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/examples/seo_optimization/seo_agent.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/examples/seo_optimization/utils.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/examples/seo_optimization/with_memory_backend.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/examples/simple_usage.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/examples/smart_team_quickstart.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/examples/sonnet_opus_fallback_example.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/examples/suggest_adaptive_routing.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/examples/test_approval_gates.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/examples/test_debugging_wizard.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/examples/workflow_chaining_demo.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/examples/workflows/README.md +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/examples/workflows/code_review_example.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/examples/workflows/doc_gen_example.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/examples/workflows/multi_model_example.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/examples/workflows/research_example.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/requirements.txt +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/setup.cfg +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/src/attune/__init__.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/src/attune/adaptive/__init__.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/src/attune/adaptive/task_complexity.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/src/attune/agent_monitoring.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/src/attune/cache/__init__.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/src/attune/cache/base.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/src/attune/cache/dependency_manager.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/src/attune/cache/hash_only.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/src/attune/cache/hybrid.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/src/attune/cache/storage.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/src/attune/cache_monitor.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/src/attune/cache_stats.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/src/attune/cli/__init__.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/src/attune/cli/__main__.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/src/attune/cli/commands/__init__.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/src/attune/cli/commands/batch.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/src/attune/cli/commands/cache.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/src/attune/cli/commands/help.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/src/attune/cli/commands/info.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/src/attune/cli/commands/inspect.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/src/attune/cli/commands/inspection.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/src/attune/cli/commands/memory.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/src/attune/cli/commands/metrics.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/src/attune/cli/commands/orchestrate.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/src/attune/cli/commands/patterns.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/src/attune/cli/commands/profiling.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/src/attune/cli/commands/provider.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/src/attune/cli/commands/routing.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/src/attune/cli/commands/setup.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/src/attune/cli/commands/status.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/src/attune/cli/commands/sync.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/src/attune/cli/commands/tier.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/src/attune/cli/commands/utilities.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/src/attune/cli/commands/workflow.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/src/attune/cli/core.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/src/attune/cli/parsers/__init__.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/src/attune/cli/parsers/batch.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/src/attune/cli/parsers/cache.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/src/attune/cli/parsers/help.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/src/attune/cli/parsers/info.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/src/attune/cli/parsers/inspect.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/src/attune/cli/parsers/metrics.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/src/attune/cli/parsers/orchestrate.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/src/attune/cli/parsers/patterns.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/src/attune/cli/parsers/provider.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/src/attune/cli/parsers/routing.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/src/attune/cli/parsers/setup.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/src/attune/cli/parsers/status.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/src/attune/cli/parsers/sync.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/src/attune/cli/parsers/tier.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/src/attune/cli/parsers/workflow.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/src/attune/cli/utils/__init__.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/src/attune/cli/utils/data.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/src/attune/cli/utils/helpers.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/src/attune/cli_legacy.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/src/attune/cli_minimal.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/src/attune/cli_router.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/src/attune/cli_unified.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/src/attune/config/__init__.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/src/attune/config/xml_config.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/src/attune/config.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/src/attune/coordination.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/src/attune/core.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/src/attune/core_modules/__init__.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/src/attune/cost_tracker.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/src/attune/dashboard/__init__.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/src/attune/dashboard/app.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/src/attune/dashboard/simple_server.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/src/attune/dashboard/standalone_server.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/src/attune/discovery.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/src/attune/emergence.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/src/attune/exceptions.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/src/attune/feedback_loops.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/src/attune/hot_reload/README.md +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/src/attune/hot_reload/__init__.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/src/attune/hot_reload/config.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/src/attune/hot_reload/integration.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/src/attune/hot_reload/reloader.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/src/attune/hot_reload/watcher.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/src/attune/hot_reload/websocket.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/src/attune/levels.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/src/attune/leverage_points.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/src/attune/logging_config.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/src/attune/mcp/__init__.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/src/attune/mcp/server.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/src/attune/memory/__init__.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/src/attune/memory/claude_memory.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/src/attune/memory/config.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/src/attune/memory/control_panel.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/src/attune/memory/control_panel_support.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/src/attune/memory/cross_session.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/src/attune/memory/edges.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/src/attune/memory/encryption.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/src/attune/memory/file_session.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/src/attune/memory/graph.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/src/attune/memory/long_term.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/src/attune/memory/long_term_types.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/src/attune/memory/mixins/__init__.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/src/attune/memory/mixins/backend_init_mixin.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/src/attune/memory/mixins/capabilities_mixin.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/src/attune/memory/mixins/handoff_mixin.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/src/attune/memory/mixins/lifecycle_mixin.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/src/attune/memory/mixins/long_term_mixin.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/src/attune/memory/mixins/promotion_mixin.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/src/attune/memory/mixins/short_term_mixin.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/src/attune/memory/nodes.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/src/attune/memory/redis_bootstrap.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/src/attune/memory/security/__init__.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/src/attune/memory/security/audit_logger.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/src/attune/memory/security/pii_scrubber.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/src/attune/memory/security/secrets_detector.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/src/attune/memory/short_term.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/src/attune/memory/simple_storage.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/src/attune/memory/storage/__init__.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/src/attune/memory/storage_backend.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/src/attune/memory/summary_index.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/src/attune/memory/types.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/src/attune/memory/unified.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/src/attune/meta_workflows/__init__.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/src/attune/meta_workflows/agent_creator.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/src/attune/meta_workflows/builtin_templates.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/src/attune/meta_workflows/cli_commands/__init__.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/src/attune/meta_workflows/cli_commands/agent_commands.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/src/attune/meta_workflows/cli_commands/analytics_commands.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/src/attune/meta_workflows/cli_commands/config_commands.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/src/attune/meta_workflows/cli_commands/memory_commands.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/src/attune/meta_workflows/cli_commands/template_commands.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/src/attune/meta_workflows/cli_commands/workflow_commands.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/src/attune/meta_workflows/cli_meta_workflows.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/src/attune/meta_workflows/form_engine.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/src/attune/meta_workflows/intent_detector.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/src/attune/meta_workflows/models.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/src/attune/meta_workflows/pattern_learner.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/src/attune/meta_workflows/plan_generator.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/src/attune/meta_workflows/session_context.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/src/attune/meta_workflows/template_registry.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/src/attune/meta_workflows/workflow.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/src/attune/metrics/__init__.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/src/attune/metrics/collector.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/src/attune/metrics/prompt_metrics.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/src/attune/models/__init__.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/src/attune/models/__main__.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/src/attune/models/adaptive_routing.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/src/attune/models/auth_cli.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/src/attune/models/auth_strategy.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/src/attune/models/cli.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/src/attune/models/empathy_executor.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/src/attune/models/executor.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/src/attune/models/fallback.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/src/attune/models/provider_config.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/src/attune/models/registry.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/src/attune/models/tasks.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/src/attune/models/telemetry/__init__.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/src/attune/models/telemetry/analytics.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/src/attune/models/telemetry/backend.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/src/attune/models/telemetry/data_models.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/src/attune/models/telemetry/storage.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/src/attune/models/token_estimator.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/src/attune/models/validation.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/src/attune/monitoring/__init__.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/src/attune/monitoring/alerts.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/src/attune/monitoring/alerts_cli.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/src/attune/monitoring/multi_backend.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/src/attune/monitoring/otel_backend.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/src/attune/optimization/__init__.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/src/attune/optimization/context_optimizer.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/src/attune/orchestration/__init__.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/src/attune/orchestration/agent_templates.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/src/attune/orchestration/config_store.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/src/attune/orchestration/execution_strategies.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/src/attune/orchestration/meta_orchestrator.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/src/attune/orchestration/pattern_learner.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/src/attune/orchestration/real_tools.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/src/attune/pattern_cache.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/src/attune/pattern_library.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/src/attune/patterns/debugging/all_patterns.json +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/src/attune/patterns/debugging/workflow_20260107_1770825e.json +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/src/attune/patterns/refactoring_memory.json +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/src/attune/persistence.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/src/attune/platform_utils.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/src/attune/plugins/__init__.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/src/attune/plugins/base.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/src/attune/plugins/registry.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/src/attune/project_index/__init__.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/src/attune/project_index/cli.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/src/attune/project_index/index.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/src/attune/project_index/models.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/src/attune/project_index/reports.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/src/attune/project_index/scanner.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/src/attune/project_index/scanner_parallel.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/src/attune/prompts/__init__.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/src/attune/prompts/config.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/src/attune/prompts/context.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/src/attune/prompts/parser.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/src/attune/prompts/registry.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/src/attune/prompts/templates.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/src/attune/redis_config.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/src/attune/redis_memory.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/src/attune/resilience/__init__.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/src/attune/resilience/circuit_breaker.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/src/attune/resilience/fallback.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/src/attune/resilience/health.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/src/attune/resilience/retry.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/src/attune/resilience/timeout.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/src/attune/routing/__init__.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/src/attune/routing/chain_executor.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/src/attune/routing/classifier.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/src/attune/routing/smart_router.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/src/attune/routing/workflow_registry.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/src/attune/scaffolding/README.md +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/src/attune/scaffolding/__init__.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/src/attune/scaffolding/__main__.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/src/attune/scaffolding/cli.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/src/attune/scaffolding/templates/base_wizard.py.jinja2 +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/src/attune/scaffolding/templates/coach_wizard.py.jinja2 +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/src/attune/scaffolding/templates/domain_wizard.py.jinja2 +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/src/attune/scaffolding/templates/linear_flow_wizard.py.jinja2 +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/src/attune/socratic/__init__.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/src/attune/socratic/ab_testing.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/src/attune/socratic/blueprint.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/src/attune/socratic/cli.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/src/attune/socratic/collaboration.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/src/attune/socratic/domain_templates.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/src/attune/socratic/embeddings.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/src/attune/socratic/engine.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/src/attune/socratic/explainer.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/src/attune/socratic/feedback.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/src/attune/socratic/forms.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/src/attune/socratic/generator.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/src/attune/socratic/llm_analyzer.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/src/attune/socratic/mcp_server.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/src/attune/socratic/session.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/src/attune/socratic/storage.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/src/attune/socratic/success.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/src/attune/socratic/visual_editor.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/src/attune/socratic/web_ui.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/src/attune/telemetry/__init__.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/src/attune/telemetry/agent_coordination.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/src/attune/telemetry/agent_tracking.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/src/attune/telemetry/approval_gates.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/src/attune/telemetry/cli.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/src/attune/telemetry/commands/__init__.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/src/attune/telemetry/commands/dashboard_commands.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/src/attune/telemetry/event_streaming.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/src/attune/telemetry/feedback_loop.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/src/attune/telemetry/usage_tracker.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/src/attune/templates.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/src/attune/test_generator/__init__.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/src/attune/test_generator/__main__.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/src/attune/test_generator/cli.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/src/attune/test_generator/generator.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/src/attune/test_generator/risk_analyzer.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/src/attune/test_generator/templates/unit_test.py.jinja2 +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/src/attune/tier_recommender.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/src/attune/tools.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/src/attune/trust/__init__.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/src/attune/trust/circuit_breaker.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/src/attune/trust_building.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/src/attune/validation/__init__.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/src/attune/validation/xml_validator.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/src/attune/vscode_bridge.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/src/attune/workflow_commands.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/src/attune/workflow_patterns/__init__.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/src/attune/workflow_patterns/behavior.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/src/attune/workflow_patterns/core.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/src/attune/workflow_patterns/output.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/src/attune/workflow_patterns/registry.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/src/attune/workflow_patterns/structural.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/src/attune/workflows/__init__.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/src/attune/workflows/autonomous_test_gen.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/src/attune/workflows/base.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/src/attune/workflows/batch_processing.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/src/attune/workflows/bug_predict.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/src/attune/workflows/builder.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/src/attune/workflows/caching.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/src/attune/workflows/code_review.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/src/attune/workflows/code_review_adapters.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/src/attune/workflows/code_review_pipeline.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/src/attune/workflows/config.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/src/attune/workflows/dependency_check.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/src/attune/workflows/document_gen/__init__.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/src/attune/workflows/document_gen/config.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/src/attune/workflows/document_gen/report_formatter.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/src/attune/workflows/document_gen/workflow.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/src/attune/workflows/document_manager.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/src/attune/workflows/document_manager_README.md +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/src/attune/workflows/documentation_orchestrator.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/src/attune/workflows/history.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/src/attune/workflows/keyboard_shortcuts/__init__.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/src/attune/workflows/keyboard_shortcuts/generators.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/src/attune/workflows/keyboard_shortcuts/parsers.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/src/attune/workflows/keyboard_shortcuts/prompts.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/src/attune/workflows/keyboard_shortcuts/schema.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/src/attune/workflows/keyboard_shortcuts/workflow.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/src/attune/workflows/llm_base.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/src/attune/workflows/manage_docs.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/src/attune/workflows/manage_docs_README.md +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/src/attune/workflows/manage_documentation.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/src/attune/workflows/new_sample_workflow1.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/src/attune/workflows/new_sample_workflow1_README.md +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/src/attune/workflows/orchestrated_health_check.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/src/attune/workflows/orchestrated_release_prep.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/src/attune/workflows/output.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/src/attune/workflows/pr_review.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/src/attune/workflows/progress.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/src/attune/workflows/progress_server.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/src/attune/workflows/progressive/README.md +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/src/attune/workflows/progressive/__init__.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/src/attune/workflows/progressive/cli.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/src/attune/workflows/progressive/core.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/src/attune/workflows/progressive/orchestrator.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/src/attune/workflows/progressive/reports.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/src/attune/workflows/progressive/telemetry.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/src/attune/workflows/progressive/test_gen.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/src/attune/workflows/progressive/workflow.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/src/attune/workflows/refactor_plan.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/src/attune/workflows/release_prep.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/src/attune/workflows/release_prep_crew.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/src/attune/workflows/research_synthesis.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/src/attune/workflows/routing.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/src/attune/workflows/secure_release.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/src/attune/workflows/security_adapters.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/src/attune/workflows/security_audit.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/src/attune/workflows/security_audit_phase3.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/src/attune/workflows/seo_optimization.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/src/attune/workflows/step_config.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/src/attune/workflows/telemetry_mixin.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/src/attune/workflows/test5.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/src/attune/workflows/test5_README.md +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/src/attune/workflows/test_coverage_boost_crew.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/src/attune/workflows/test_gen/__init__.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/src/attune/workflows/test_gen/ast_analyzer.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/src/attune/workflows/test_gen/config.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/src/attune/workflows/test_gen/data_models.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/src/attune/workflows/test_gen/report_formatter.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/src/attune/workflows/test_gen/test_templates.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/src/attune/workflows/test_gen/workflow.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/src/attune/workflows/test_gen.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/src/attune/workflows/test_gen_behavioral.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/src/attune/workflows/test_gen_parallel.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/src/attune/workflows/test_lifecycle.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/src/attune/workflows/test_maintenance.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/src/attune/workflows/test_maintenance_cli.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/src/attune/workflows/test_maintenance_crew.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/src/attune/workflows/test_runner.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/src/attune/workflows/tier_tracking.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/src/attune/workflows/xml_enhanced_crew.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/tests/test_agent_factory.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/tests/test_agent_factory_memory.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/tests/test_agent_factory_resilience.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/tests/test_audit_logger.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/tests/test_audit_logger_extended.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/tests/test_base.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/tests/test_baseline.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/tests/test_book_production_agents.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/tests/test_bug_predict_workflow.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/tests/test_claude_memory.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/tests/test_claude_memory_extended.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/tests/test_clinical_protocol_monitor.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/tests/test_code_health.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/tests/test_code_review.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/tests/test_code_review_crew_integration.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/tests/test_code_review_pipeline.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/tests/test_code_review_pipeline_workflow.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/tests/test_code_review_workflow.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/tests/test_config.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/tests/test_control_panel.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/tests/test_control_panel_security.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/tests/test_coordination.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/tests/test_core.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/tests/test_core_reliability.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/tests/test_cost_tracker.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/tests/test_dependency_check.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/tests/test_dependency_check_workflow.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/tests/test_discovery.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/tests/test_document_gen.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/tests/test_document_gen_workflow.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/tests/test_emergence.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/tests/test_empathy_llm_core.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/tests/test_empathy_llm_security.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/tests/test_empathy_os.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/tests/test_exceptions.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/tests/test_executor_integration.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/tests/test_fallback.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/tests/test_fallback_suite.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/tests/test_feedback_loops.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/tests/test_finding_extraction.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/tests/test_graph.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/tests/test_health_check.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/tests/test_healthcare_plugin.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/tests/test_intelligence_integration.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/tests/test_levels.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/tests/test_leverage_points.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/tests/test_llm_integration.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/tests/test_llm_toolkit_agents.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/tests/test_llm_toolkit_core.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/tests/test_llm_toolkit_decorators.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/tests/test_llm_toolkit_empathy_core.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/tests/test_llm_toolkit_langgraph_adapter.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/tests/test_llm_toolkit_levels.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/tests/test_llm_toolkit_memory.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/tests/test_llm_toolkit_patterns.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/tests/test_llm_toolkit_providers.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/tests/test_llm_toolkit_security.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/tests/test_llm_toolkit_session_status.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/tests/test_llm_toolkit_wizard_adapter.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/tests/test_logging_config.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/tests/test_long_term.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/tests/test_memory_graph.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/tests/test_model_registry.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/tests/test_model_router.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/tests/test_monitoring.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/tests/test_pattern_cache.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/tests/test_pattern_library.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/tests/test_perf_audit_workflow.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/tests/test_persistence.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/tests/test_pii_scrubber.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/tests/test_pii_scrubber_extended.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/tests/test_platform_compat_ci.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/tests/test_platform_utils.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/tests/test_plugin_base.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/tests/test_plugin_registry.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/tests/test_pr_review.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/tests/test_pr_review_workflow.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/tests/test_production_smoke.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/tests/test_progress.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/tests/test_protocol_checker.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/tests/test_protocol_loader.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/tests/test_provider_config.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/tests/test_providers.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/tests/test_redis_bootstrap.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/tests/test_redis_config.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/tests/test_redis_integration.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/tests/test_redis_memory.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/tests/test_redis_memory_errors.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/tests/test_refactor_golden.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/tests/test_refactor_plan_workflow.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/tests/test_refactoring.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/tests/test_refactoring_crew.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/tests/test_registry.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/tests/test_release_prep.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/tests/test_reporting.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/tests/test_reports.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/tests/test_resilience.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/tests/test_sbar_wizard.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/tests/test_scanner.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/tests/test_scanner_exceptions.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/tests/test_secrets_detector.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/tests/test_secure_memdocs.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/tests/test_secure_memdocs_extended.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/tests/test_secure_release.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/tests/test_secure_release_workflow.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/tests/test_security_audit.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/tests/test_security_audit_crew.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/tests/test_security_audit_workflow.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/tests/test_security_crew_integration.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/tests/test_security_integration.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/tests/test_security_negative_cases.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/tests/test_security_scan.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/tests/test_sensor_parsers.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/tests/test_session_status.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/tests/test_short_term.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/tests/test_smart_router.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/tests/test_smoke.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/tests/test_sonnet_opus_fallback.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/tests/test_state.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/tests/test_step_config.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/tests/test_summary_index.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/tests/test_sync_claude.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/tests/test_tech_debt_wizard.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/tests/test_telemetry.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/tests/test_templates.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/tests/test_timeout.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/tests/test_token_estimator.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/tests/test_trajectory_analyzer.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/tests/test_trust_building.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/tests/test_trust_circuit_breaker.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/tests/test_unified_memory.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/tests/test_validation.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/tests/test_wizard_outputs.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/tests/test_wizard_site_comprehensive.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/tests/test_workflow_base.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/tests/test_workflow_commands.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/tests/test_workflow_wizard_integration.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/tests/test_xml_prompts.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/tests/test_xml_spec_generation.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/workflow_scaffolding/__init__.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/workflow_scaffolding/__main__.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/workflow_scaffolding/cli.py +0 -0
- {attune_ai-2.0.2 → attune_ai-2.1.1}/workflow_scaffolding/generator.py +0 -0
|
@@ -7,39 +7,21 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
7
7
|
|
|
8
8
|
## [Unreleased]
|
|
9
9
|
|
|
10
|
-
## [2.0
|
|
10
|
+
## [2.1.0] - 2026-02-01
|
|
11
11
|
|
|
12
|
-
###
|
|
13
|
-
|
|
14
|
-
- **README.md**: Removed outdated "Transitioning to Claude-Native Architecture" section
|
|
15
|
-
- Eliminated confusing timeline with old version numbers (v4.8.0, v5.0.0, v5.0.2)
|
|
16
|
-
- Package is already Claude-native, no need for transition messaging
|
|
17
|
-
- Cleaner, more focused README presentation
|
|
12
|
+
### Added
|
|
18
13
|
|
|
19
|
-
|
|
14
|
+
- **Unified `/attune` command**: Single entry point with Socratic discovery for all workflows
|
|
15
|
+
- **Interactive workflow navigation**: Question-based flow guides users to the right tool
|
|
20
16
|
|
|
21
17
|
### Changed
|
|
22
18
|
|
|
23
|
-
- **
|
|
24
|
-
|
|
25
|
-
- Clean, focused presentation of Attune AI features
|
|
26
|
-
- Updated test badge to show 13,489 tests collected
|
|
27
|
-
- Clarified $0 workflows caveat for 1M API context requirement
|
|
28
|
-
|
|
29
|
-
- **Website Branding**: Updated all references across 20+ pages
|
|
30
|
-
- "Empathy Framework" → "Attune AI"
|
|
31
|
-
- `empathy-framework` → `attune-ai` in all install commands
|
|
32
|
-
- GitHub URLs updated to `Smart-AI-Memory/attune-ai`
|
|
33
|
-
|
|
34
|
-
- **Documentation**: Comprehensive branding updates
|
|
35
|
-
- 1,116+ references updated across all markdown files
|
|
36
|
-
- All package names and commands updated
|
|
37
|
-
- Consistent "Attune AI" branding throughout
|
|
19
|
+
- **Consolidated command hubs**: Removed 9 separate hub commands in favor of unified `/attune`
|
|
20
|
+
- **Performance audit**: Removed `large_list_copy` false positive detection
|
|
38
21
|
|
|
39
22
|
### Fixed
|
|
40
23
|
|
|
41
|
-
-
|
|
42
|
-
- Accurate description of cost model for workflows
|
|
24
|
+
- **perf_audit.py**: No longer flags intentional patterns like `dirs[:]` for os.walk or defensive list copies
|
|
43
25
|
|
|
44
26
|
## [2.0.0] - 2026-02-01
|
|
45
27
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
# Contributing to
|
|
1
|
+
# Contributing to Attune AI
|
|
2
2
|
|
|
3
|
-
Thank you for your interest in contributing to
|
|
3
|
+
Thank you for your interest in contributing to Attune AI! This document provides guidelines and best practices for contributing.
|
|
4
4
|
|
|
5
5
|
## Table of Contents
|
|
6
6
|
|
|
@@ -28,8 +28,8 @@ We are committed to providing a welcoming and inclusive environment. Please be r
|
|
|
28
28
|
|
|
29
29
|
```bash
|
|
30
30
|
# Clone the repository
|
|
31
|
-
git clone https://github.com/
|
|
32
|
-
cd
|
|
31
|
+
git clone https://github.com/Smart-AI-Memory/attune-ai.git
|
|
32
|
+
cd attune-ai
|
|
33
33
|
|
|
34
34
|
# Create virtual environment
|
|
35
35
|
python3 -m venv venv
|
|
@@ -49,8 +49,7 @@ pytest tests/
|
|
|
49
49
|
|
|
50
50
|
### Branch Strategy
|
|
51
51
|
|
|
52
|
-
- `main` - Stable releases
|
|
53
|
-
- `develop` - Development branch
|
|
52
|
+
- `main` - Stable releases (merge via pull request)
|
|
54
53
|
- `feature/*` - New features
|
|
55
54
|
- `fix/*` - Bug fixes
|
|
56
55
|
- `docs/*` - Documentation updates
|
|
@@ -58,9 +57,9 @@ pytest tests/
|
|
|
58
57
|
### Creating a Feature
|
|
59
58
|
|
|
60
59
|
```bash
|
|
61
|
-
# Create feature branch from
|
|
62
|
-
git checkout
|
|
63
|
-
git pull origin
|
|
60
|
+
# Create feature branch from main
|
|
61
|
+
git checkout main
|
|
62
|
+
git pull origin main
|
|
64
63
|
git checkout -b feature/your-feature-name
|
|
65
64
|
|
|
66
65
|
# Make your changes
|
|
@@ -82,7 +81,7 @@ git push origin feature/your-feature-name
|
|
|
82
81
|
|
|
83
82
|
We follow conventional commits:
|
|
84
83
|
|
|
85
|
-
```
|
|
84
|
+
```text
|
|
86
85
|
<type>: <subject>
|
|
87
86
|
|
|
88
87
|
<body>
|
|
@@ -91,6 +90,7 @@ We follow conventional commits:
|
|
|
91
90
|
```
|
|
92
91
|
|
|
93
92
|
**Types:**
|
|
93
|
+
|
|
94
94
|
- `feat`: New feature
|
|
95
95
|
- `fix`: Bug fix
|
|
96
96
|
- `docs`: Documentation changes
|
|
@@ -102,7 +102,7 @@ We follow conventional commits:
|
|
|
102
102
|
|
|
103
103
|
**Examples:**
|
|
104
104
|
|
|
105
|
-
```
|
|
105
|
+
```text
|
|
106
106
|
feat: Add Level 5 systems thinking module
|
|
107
107
|
|
|
108
108
|
Implements pattern sharing between multiple AI agents
|
|
@@ -111,7 +111,7 @@ for emergent collaboration capabilities.
|
|
|
111
111
|
Closes #42
|
|
112
112
|
```
|
|
113
113
|
|
|
114
|
-
```
|
|
114
|
+
```text
|
|
115
115
|
fix: Correct trust calculation in feedback loops
|
|
116
116
|
|
|
117
117
|
Trust erosion was not properly clamped to [0,1] range.
|
|
@@ -132,8 +132,8 @@ All new code must include tests. We aim for **70%+ coverage**.
|
|
|
132
132
|
"""
|
|
133
133
|
Tests for Module Name
|
|
134
134
|
|
|
135
|
-
Copyright 2025
|
|
136
|
-
Licensed under
|
|
135
|
+
Copyright 2025 Patrick Roebuck
|
|
136
|
+
Licensed under Apache License 2.0
|
|
137
137
|
"""
|
|
138
138
|
|
|
139
139
|
import pytest
|
|
@@ -186,9 +186,9 @@ pytest tests/ -s
|
|
|
186
186
|
|
|
187
187
|
### Coverage Requirements
|
|
188
188
|
|
|
189
|
-
- Minimum **
|
|
190
|
-
- New modules should have **
|
|
191
|
-
- Critical modules (core,
|
|
189
|
+
- Minimum **80% overall coverage**
|
|
190
|
+
- New modules should have **90%+ coverage**
|
|
191
|
+
- Critical modules (core, workflows, security) should have **95%+ coverage**
|
|
192
192
|
|
|
193
193
|
### Test Categories
|
|
194
194
|
|
|
@@ -256,6 +256,7 @@ class LeveragePointAnalyzer:
|
|
|
256
256
|
```
|
|
257
257
|
|
|
258
258
|
**Docstring Sections:**
|
|
259
|
+
|
|
259
260
|
- **Summary**: One-line description
|
|
260
261
|
- **Extended Description**: Detailed explanation (optional)
|
|
261
262
|
- **Example**: Usage example with >>> prompts
|
|
@@ -332,6 +333,7 @@ def process_data(data: List[Dict]) -> Dict:
|
|
|
332
333
|
### When to Update Documentation
|
|
333
334
|
|
|
334
335
|
Update documentation when:
|
|
336
|
+
|
|
335
337
|
- Adding new features
|
|
336
338
|
- Changing public APIs
|
|
337
339
|
- Adding examples
|
|
@@ -348,6 +350,7 @@ Update documentation when:
|
|
|
348
350
|
### Writing Examples
|
|
349
351
|
|
|
350
352
|
Good examples are:
|
|
353
|
+
|
|
351
354
|
- **Self-contained**: Run without external dependencies
|
|
352
355
|
- **Well-commented**: Explain what and why
|
|
353
356
|
- **Practical**: Show real-world use cases
|
|
@@ -360,8 +363,8 @@ Example: Building Trust Through Anticipation
|
|
|
360
363
|
Demonstrates Level 4 Anticipatory Empathy by predicting
|
|
361
364
|
user needs before they arise.
|
|
362
365
|
|
|
363
|
-
Copyright 2025
|
|
364
|
-
Licensed under
|
|
366
|
+
Copyright 2025 Patrick Roebuck
|
|
367
|
+
Licensed under Apache License 2.0
|
|
365
368
|
"""
|
|
366
369
|
|
|
367
370
|
from attune import EmpathyOS
|
|
@@ -386,7 +389,7 @@ if __name__ == "__main__":
|
|
|
386
389
|
### Before Submitting
|
|
387
390
|
|
|
388
391
|
1. **Run all tests**: `pytest tests/ --cov=src/attune`
|
|
389
|
-
2. **Check coverage**: Ensure
|
|
392
|
+
2. **Check coverage**: Ensure 80%+ coverage
|
|
390
393
|
3. **Update documentation**: Add/update relevant docs
|
|
391
394
|
4. **Add examples**: If adding features, add example
|
|
392
395
|
5. **Self-review**: Read through your changes
|
|
@@ -394,13 +397,13 @@ if __name__ == "__main__":
|
|
|
394
397
|
### PR Checklist
|
|
395
398
|
|
|
396
399
|
- [ ] Tests pass locally
|
|
397
|
-
- [ ] Coverage is
|
|
398
|
-
- [ ] New code has tests (
|
|
400
|
+
- [ ] Coverage is 80%+ overall
|
|
401
|
+
- [ ] New code has tests (90%+ coverage for new modules)
|
|
399
402
|
- [ ] Documentation updated
|
|
400
403
|
- [ ] Examples added/updated if relevant
|
|
401
404
|
- [ ] Commit messages follow conventional format
|
|
402
405
|
- [ ] Code follows style guide
|
|
403
|
-
- [ ] No merge conflicts with
|
|
406
|
+
- [ ] No merge conflicts with main
|
|
404
407
|
|
|
405
408
|
### PR Template
|
|
406
409
|
|
|
@@ -445,7 +448,7 @@ Any additional context or notes for reviewers.
|
|
|
445
448
|
|
|
446
449
|
- Your contribution will be included in next release
|
|
447
450
|
- You'll be added to contributors list
|
|
448
|
-
- Thank you for improving
|
|
451
|
+
- Thank you for improving Attune AI!
|
|
449
452
|
|
|
450
453
|
## Getting Help
|
|
451
454
|
|
|
@@ -456,6 +459,7 @@ Any additional context or notes for reviewers.
|
|
|
456
459
|
## Recognition
|
|
457
460
|
|
|
458
461
|
Contributors are recognized in:
|
|
462
|
+
|
|
459
463
|
- README.md contributors section
|
|
460
464
|
- Release notes
|
|
461
465
|
- Project documentation
|
|
@@ -466,4 +470,4 @@ By contributing, you agree that your contributions will be licensed under the Ap
|
|
|
466
470
|
|
|
467
471
|
---
|
|
468
472
|
|
|
469
|
-
Thank you for contributing to
|
|
473
|
+
Thank you for contributing to Attune AI! 🤝
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: attune-ai
|
|
3
|
-
Version: 2.
|
|
3
|
+
Version: 2.1.1
|
|
4
4
|
Summary: AI collaboration framework with real LLM agent execution, AskUserQuestion tool integration, Socratic agent generation, progressive tier escalation (70-85% cost savings), meta-orchestration, dynamic agent composition (10 patterns including Anthropic-inspired), intelligent caching (85% hit rate), semantic workflow discovery, visual workflow editor, MCP integration for Claude Code, and multi-agent orchestration.
|
|
5
5
|
Author-email: Patrick Roebuck <admin@smartaimemory.com>
|
|
6
6
|
Maintainer-email: Smart-AI-Memory <admin@smartaimemory.com>
|
|
@@ -421,17 +421,16 @@ Requires-Dist: aiohttp<4.0.0,>=3.10.0; extra == "all"
|
|
|
421
421
|
Requires-Dist: filelock<4.0.0,>=3.16.0; extra == "all"
|
|
422
422
|
Dynamic: license-file
|
|
423
423
|
|
|
424
|
-
#
|
|
424
|
+
# attune-ai
|
|
425
425
|
|
|
426
|
-
**AI-powered developer workflows with
|
|
426
|
+
**AI-powered developer workflows with Socratic discovery.**
|
|
427
427
|
|
|
428
|
-
Run code review, debugging, testing, and release workflows from
|
|
428
|
+
Run code review, debugging, testing, and release workflows from Claude Code. One command guides you to the right workflow.
|
|
429
429
|
|
|
430
430
|
[](https://pypi.org/project/attune-ai/)
|
|
431
|
-
[-brightgreen)](https://github.com/Smart-AI-Memory/attune-ai/actions)
|
|
432
432
|
[](https://www.python.org)
|
|
433
433
|
[](LICENSE)
|
|
434
|
-
[](https://github.com/Smart-AI-Memory/attune-ai/blob/main/CHANGELOG.md)
|
|
435
434
|
|
|
436
435
|
```bash
|
|
437
436
|
pip install attune-ai[developer]
|
|
@@ -439,64 +438,26 @@ pip install attune-ai[developer]
|
|
|
439
438
|
|
|
440
439
|
---
|
|
441
440
|
|
|
442
|
-
## What's New in v2.
|
|
441
|
+
## What's New in v2.1.0
|
|
443
442
|
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
**Package Rebrand**: `empathy-framework` is now `attune-ai`
|
|
447
|
-
|
|
448
|
-
- New package name, same powerful features
|
|
449
|
-
- All capabilities from v5.x preserved
|
|
450
|
-
- Starting fresh at v2.0.0 to mark the new brand
|
|
451
|
-
|
|
452
|
-
**🤖 Multi-Agent Orchestration** - Build and coordinate specialized AI agents:
|
|
453
|
-
|
|
454
|
-
- **Agent Coordination Dashboard** - Real-time monitoring with 6 coordination patterns
|
|
455
|
-
- **Custom Agents** - Create specialized agents for your workflow needs
|
|
456
|
-
- **LLM Agents** - Leverage Claude's advanced capabilities
|
|
457
|
-
- Dashboard at `http://localhost:8000` with `python examples/dashboard_demo.py` (requires Redis)
|
|
458
|
-
|
|
459
|
-
**💰 Intelligent Cost Optimization**:
|
|
460
|
-
|
|
461
|
-
- **Authentication Strategy** - Smart routing between Claude subscription (free) and Anthropic API
|
|
462
|
-
- **Batch API** - 50% cost savings for non-urgent tasks
|
|
463
|
-
- **Smart Tier Routing** - Automatic model selection saves 34-86% on costs
|
|
464
|
-
- **Precise Token Counting** - >98% accurate cost tracking
|
|
465
|
-
|
|
466
|
-
**⚡ Performance & Scale**:
|
|
467
|
-
|
|
468
|
-
- **18x Faster** - Redis caching, parallel scanning, incremental updates
|
|
469
|
-
- **99.9% Memory Reduction** - Generator expressions across 27 optimizations
|
|
470
|
-
- **Natural Language** - Use plain English for workflow commands
|
|
471
|
-
- **13,489 Tests** - Comprehensive test coverage (99.9% passing)
|
|
472
|
-
|
|
473
|
-
**🔐 Security & Quality**:
|
|
474
|
-
|
|
475
|
-
- **Automated Security Scanning** - 82% accuracy, blocks critical issues
|
|
476
|
-
- **Path Traversal Protection** - All file operations validated
|
|
477
|
-
- **HIPAA/GDPR Compliance** - Enterprise-ready security options
|
|
478
|
-
|
|
479
|
-
**🧭 Developer Experience**:
|
|
480
|
-
|
|
481
|
-
- **MCP Integration** - 10 tools auto-discovered by Claude Code
|
|
482
|
-
- **Hub-Based Commands** - Organized workflows (`/dev`, `/testing`, `/release`, etc.)
|
|
483
|
-
- **Socratic Workflows** - Interactive discovery through guided questions
|
|
484
|
-
- **$0 Workflows** - Run via Claude Code with no API costs, unless a 1 million API context is required.
|
|
485
|
-
|
|
486
|
-
**Migration from Empathy Framework**:
|
|
443
|
+
**🎯 Unified `/attune` Command** - One entry point for all workflows:
|
|
487
444
|
|
|
488
445
|
```bash
|
|
489
|
-
#
|
|
490
|
-
|
|
446
|
+
/attune # Start Socratic discovery
|
|
447
|
+
/attune "fix a bug" # Natural language
|
|
448
|
+
/attune debug # Direct shortcut
|
|
449
|
+
```
|
|
491
450
|
|
|
492
|
-
|
|
493
|
-
pip install attune-ai[developer]
|
|
451
|
+
**Socratic Discovery** - Ask what you're trying to accomplish, not which tool to use:
|
|
494
452
|
|
|
495
|
-
|
|
496
|
-
|
|
497
|
-
|
|
453
|
+
- 🔧 **Fix or improve** → Debug, review, refactor
|
|
454
|
+
- ✅ **Validate work** → Tests, coverage, security audit
|
|
455
|
+
- 🚀 **Ship changes** → Commit, PR, release
|
|
456
|
+
- 📚 **Understand** → Explain code, generate docs
|
|
457
|
+
|
|
458
|
+
**Performance Audit Improvements** - Removed false positive detection for intentional patterns like `dirs[:]` and defensive list copies.
|
|
498
459
|
|
|
499
|
-
[See Full Changelog](CHANGELOG.md)
|
|
460
|
+
[See Full Changelog](CHANGELOG.md)
|
|
500
461
|
|
|
501
462
|
---
|
|
502
463
|
|
|
@@ -535,7 +496,7 @@ python -m attune.models.cli provider --set anthropic
|
|
|
535
496
|
/plan "review my code"
|
|
536
497
|
|
|
537
498
|
# Direct tool access via MCP (v5.1.1+):
|
|
538
|
-
# Claude Code automatically discovers
|
|
499
|
+
# Claude Code automatically discovers Empathy tools through the MCP server
|
|
539
500
|
# Just describe what you need in natural language:
|
|
540
501
|
"Run a security audit on src/" → Invokes security_audit tool
|
|
541
502
|
"Generate tests for config.py" → Invokes test_generation tool
|
|
@@ -545,7 +506,7 @@ python -m attune.models.cli provider --set anthropic
|
|
|
545
506
|
|
|
546
507
|
**MCP Server Integration (v5.1.1+):**
|
|
547
508
|
|
|
548
|
-
|
|
509
|
+
Empathy Framework now includes a Model Context Protocol (MCP) server that exposes all workflows as native Claude Code tools:
|
|
549
510
|
|
|
550
511
|
- **10 Tools Available:** security_audit, bug_predict, code_review, test_generation, performance_audit, release_prep, auth_status, auth_recommend, telemetry_stats, dashboard_status
|
|
551
512
|
- **Automatic Discovery:** No manual configuration needed - Claude Code finds tools via `.claude/mcp.json`
|
|
@@ -567,9 +528,9 @@ See [.claude/MCP_TEST_RESULTS.md](.claude/MCP_TEST_RESULTS.md) for full integrat
|
|
|
567
528
|
**CLI:**
|
|
568
529
|
|
|
569
530
|
```bash
|
|
570
|
-
|
|
571
|
-
|
|
572
|
-
|
|
531
|
+
empathy workflow run security-audit --path ./src
|
|
532
|
+
empathy workflow run test-coverage --target 90
|
|
533
|
+
empathy telemetry show # View cost savings
|
|
573
534
|
```
|
|
574
535
|
|
|
575
536
|
**Python:**
|
|
@@ -577,8 +538,8 @@ attune telemetry show # View cost savings
|
|
|
577
538
|
```python
|
|
578
539
|
from attune import EmpathyOS
|
|
579
540
|
|
|
580
|
-
async with EmpathyOS() as
|
|
581
|
-
result = await
|
|
541
|
+
async with EmpathyOS() as empathy:
|
|
542
|
+
result = await empathy.level_2_guided(
|
|
582
543
|
"Review this code for security issues"
|
|
583
544
|
)
|
|
584
545
|
print(result["response"])
|
|
@@ -688,7 +649,7 @@ For programmatic use, smart tier routing saves 34-86%:
|
|
|
688
649
|
|
|
689
650
|
```bash
|
|
690
651
|
# Track API usage and savings
|
|
691
|
-
|
|
652
|
+
empathy telemetry savings --days 30
|
|
692
653
|
```
|
|
693
654
|
|
|
694
655
|
---
|
|
@@ -699,10 +660,10 @@ attune telemetry savings --days 30
|
|
|
699
660
|
|
|
700
661
|
```bash
|
|
701
662
|
# 4 parallel agents check release readiness
|
|
702
|
-
|
|
663
|
+
empathy orchestrate release-prep
|
|
703
664
|
|
|
704
665
|
# Sequential coverage improvement
|
|
705
|
-
|
|
666
|
+
empathy orchestrate test-coverage --target 90
|
|
706
667
|
```
|
|
707
668
|
|
|
708
669
|
### Response Caching
|
|
@@ -750,21 +711,21 @@ python -m attune.models.cli provider
|
|
|
750
711
|
python -m attune.models.cli provider --set hybrid
|
|
751
712
|
|
|
752
713
|
# Workflows
|
|
753
|
-
|
|
754
|
-
|
|
714
|
+
empathy workflow list
|
|
715
|
+
empathy workflow run <workflow-name>
|
|
755
716
|
|
|
756
717
|
# Cost tracking
|
|
757
|
-
|
|
758
|
-
|
|
759
|
-
|
|
718
|
+
empathy telemetry show
|
|
719
|
+
empathy telemetry savings --days 30
|
|
720
|
+
empathy telemetry export --format csv
|
|
760
721
|
|
|
761
722
|
# Orchestration
|
|
762
|
-
|
|
763
|
-
|
|
723
|
+
empathy orchestrate release-prep
|
|
724
|
+
empathy orchestrate test-coverage --target 90
|
|
764
725
|
|
|
765
726
|
# Meta-workflows
|
|
766
|
-
|
|
767
|
-
|
|
727
|
+
empathy meta-workflow list
|
|
728
|
+
empathy meta-workflow run release-prep --real
|
|
768
729
|
```
|
|
769
730
|
|
|
770
731
|
---
|
|
@@ -810,7 +771,7 @@ export REDIS_URL="redis://localhost:6379"
|
|
|
810
771
|
|
|
811
772
|
## VSCode Extension
|
|
812
773
|
|
|
813
|
-
Install the
|
|
774
|
+
Install the Empathy VSCode extension for:
|
|
814
775
|
|
|
815
776
|
- **Dashboard** - Health score, costs, patterns
|
|
816
777
|
- **One-Click Workflows** - Run from command palette
|
|
@@ -845,10 +806,10 @@ See [SECURITY.md](SECURITY.md) for vulnerability reporting.
|
|
|
845
806
|
|
|
846
807
|
```bash
|
|
847
808
|
# Run security audit locally
|
|
848
|
-
|
|
809
|
+
empathy workflow run security-audit
|
|
849
810
|
|
|
850
811
|
# Scan specific directory
|
|
851
|
-
|
|
812
|
+
empathy workflow run security-audit --input '{"path":"./src"}'
|
|
852
813
|
```
|
|
853
814
|
|
|
854
815
|
**Documentation:**
|
|
@@ -1,14 +1,13 @@
|
|
|
1
|
-
#
|
|
1
|
+
# attune-ai
|
|
2
2
|
|
|
3
|
-
**AI-powered developer workflows with
|
|
3
|
+
**AI-powered developer workflows with Socratic discovery.**
|
|
4
4
|
|
|
5
|
-
Run code review, debugging, testing, and release workflows from
|
|
5
|
+
Run code review, debugging, testing, and release workflows from Claude Code. One command guides you to the right workflow.
|
|
6
6
|
|
|
7
7
|
[](https://pypi.org/project/attune-ai/)
|
|
8
|
-
[-brightgreen)](https://github.com/Smart-AI-Memory/attune-ai/actions)
|
|
9
9
|
[](https://www.python.org)
|
|
10
10
|
[](LICENSE)
|
|
11
|
-
[](https://github.com/Smart-AI-Memory/attune-ai/blob/main/CHANGELOG.md)
|
|
12
11
|
|
|
13
12
|
```bash
|
|
14
13
|
pip install attune-ai[developer]
|
|
@@ -16,64 +15,26 @@ pip install attune-ai[developer]
|
|
|
16
15
|
|
|
17
16
|
---
|
|
18
17
|
|
|
19
|
-
## What's New in v2.
|
|
18
|
+
## What's New in v2.1.0
|
|
20
19
|
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
**Package Rebrand**: `empathy-framework` is now `attune-ai`
|
|
24
|
-
|
|
25
|
-
- New package name, same powerful features
|
|
26
|
-
- All capabilities from v5.x preserved
|
|
27
|
-
- Starting fresh at v2.0.0 to mark the new brand
|
|
28
|
-
|
|
29
|
-
**🤖 Multi-Agent Orchestration** - Build and coordinate specialized AI agents:
|
|
30
|
-
|
|
31
|
-
- **Agent Coordination Dashboard** - Real-time monitoring with 6 coordination patterns
|
|
32
|
-
- **Custom Agents** - Create specialized agents for your workflow needs
|
|
33
|
-
- **LLM Agents** - Leverage Claude's advanced capabilities
|
|
34
|
-
- Dashboard at `http://localhost:8000` with `python examples/dashboard_demo.py` (requires Redis)
|
|
35
|
-
|
|
36
|
-
**💰 Intelligent Cost Optimization**:
|
|
37
|
-
|
|
38
|
-
- **Authentication Strategy** - Smart routing between Claude subscription (free) and Anthropic API
|
|
39
|
-
- **Batch API** - 50% cost savings for non-urgent tasks
|
|
40
|
-
- **Smart Tier Routing** - Automatic model selection saves 34-86% on costs
|
|
41
|
-
- **Precise Token Counting** - >98% accurate cost tracking
|
|
42
|
-
|
|
43
|
-
**⚡ Performance & Scale**:
|
|
44
|
-
|
|
45
|
-
- **18x Faster** - Redis caching, parallel scanning, incremental updates
|
|
46
|
-
- **99.9% Memory Reduction** - Generator expressions across 27 optimizations
|
|
47
|
-
- **Natural Language** - Use plain English for workflow commands
|
|
48
|
-
- **13,489 Tests** - Comprehensive test coverage (99.9% passing)
|
|
49
|
-
|
|
50
|
-
**🔐 Security & Quality**:
|
|
51
|
-
|
|
52
|
-
- **Automated Security Scanning** - 82% accuracy, blocks critical issues
|
|
53
|
-
- **Path Traversal Protection** - All file operations validated
|
|
54
|
-
- **HIPAA/GDPR Compliance** - Enterprise-ready security options
|
|
55
|
-
|
|
56
|
-
**🧭 Developer Experience**:
|
|
57
|
-
|
|
58
|
-
- **MCP Integration** - 10 tools auto-discovered by Claude Code
|
|
59
|
-
- **Hub-Based Commands** - Organized workflows (`/dev`, `/testing`, `/release`, etc.)
|
|
60
|
-
- **Socratic Workflows** - Interactive discovery through guided questions
|
|
61
|
-
- **$0 Workflows** - Run via Claude Code with no API costs, unless a 1 million API context is required.
|
|
62
|
-
|
|
63
|
-
**Migration from Empathy Framework**:
|
|
20
|
+
**🎯 Unified `/attune` Command** - One entry point for all workflows:
|
|
64
21
|
|
|
65
22
|
```bash
|
|
66
|
-
#
|
|
67
|
-
|
|
23
|
+
/attune # Start Socratic discovery
|
|
24
|
+
/attune "fix a bug" # Natural language
|
|
25
|
+
/attune debug # Direct shortcut
|
|
26
|
+
```
|
|
68
27
|
|
|
69
|
-
|
|
70
|
-
pip install attune-ai[developer]
|
|
28
|
+
**Socratic Discovery** - Ask what you're trying to accomplish, not which tool to use:
|
|
71
29
|
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
30
|
+
- 🔧 **Fix or improve** → Debug, review, refactor
|
|
31
|
+
- ✅ **Validate work** → Tests, coverage, security audit
|
|
32
|
+
- 🚀 **Ship changes** → Commit, PR, release
|
|
33
|
+
- 📚 **Understand** → Explain code, generate docs
|
|
34
|
+
|
|
35
|
+
**Performance Audit Improvements** - Removed false positive detection for intentional patterns like `dirs[:]` and defensive list copies.
|
|
75
36
|
|
|
76
|
-
[See Full Changelog](CHANGELOG.md)
|
|
37
|
+
[See Full Changelog](CHANGELOG.md)
|
|
77
38
|
|
|
78
39
|
---
|
|
79
40
|
|
|
@@ -112,7 +73,7 @@ python -m attune.models.cli provider --set anthropic
|
|
|
112
73
|
/plan "review my code"
|
|
113
74
|
|
|
114
75
|
# Direct tool access via MCP (v5.1.1+):
|
|
115
|
-
# Claude Code automatically discovers
|
|
76
|
+
# Claude Code automatically discovers Empathy tools through the MCP server
|
|
116
77
|
# Just describe what you need in natural language:
|
|
117
78
|
"Run a security audit on src/" → Invokes security_audit tool
|
|
118
79
|
"Generate tests for config.py" → Invokes test_generation tool
|
|
@@ -122,7 +83,7 @@ python -m attune.models.cli provider --set anthropic
|
|
|
122
83
|
|
|
123
84
|
**MCP Server Integration (v5.1.1+):**
|
|
124
85
|
|
|
125
|
-
|
|
86
|
+
Empathy Framework now includes a Model Context Protocol (MCP) server that exposes all workflows as native Claude Code tools:
|
|
126
87
|
|
|
127
88
|
- **10 Tools Available:** security_audit, bug_predict, code_review, test_generation, performance_audit, release_prep, auth_status, auth_recommend, telemetry_stats, dashboard_status
|
|
128
89
|
- **Automatic Discovery:** No manual configuration needed - Claude Code finds tools via `.claude/mcp.json`
|
|
@@ -144,9 +105,9 @@ See [.claude/MCP_TEST_RESULTS.md](.claude/MCP_TEST_RESULTS.md) for full integrat
|
|
|
144
105
|
**CLI:**
|
|
145
106
|
|
|
146
107
|
```bash
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
108
|
+
empathy workflow run security-audit --path ./src
|
|
109
|
+
empathy workflow run test-coverage --target 90
|
|
110
|
+
empathy telemetry show # View cost savings
|
|
150
111
|
```
|
|
151
112
|
|
|
152
113
|
**Python:**
|
|
@@ -154,8 +115,8 @@ attune telemetry show # View cost savings
|
|
|
154
115
|
```python
|
|
155
116
|
from attune import EmpathyOS
|
|
156
117
|
|
|
157
|
-
async with EmpathyOS() as
|
|
158
|
-
result = await
|
|
118
|
+
async with EmpathyOS() as empathy:
|
|
119
|
+
result = await empathy.level_2_guided(
|
|
159
120
|
"Review this code for security issues"
|
|
160
121
|
)
|
|
161
122
|
print(result["response"])
|
|
@@ -265,7 +226,7 @@ For programmatic use, smart tier routing saves 34-86%:
|
|
|
265
226
|
|
|
266
227
|
```bash
|
|
267
228
|
# Track API usage and savings
|
|
268
|
-
|
|
229
|
+
empathy telemetry savings --days 30
|
|
269
230
|
```
|
|
270
231
|
|
|
271
232
|
---
|
|
@@ -276,10 +237,10 @@ attune telemetry savings --days 30
|
|
|
276
237
|
|
|
277
238
|
```bash
|
|
278
239
|
# 4 parallel agents check release readiness
|
|
279
|
-
|
|
240
|
+
empathy orchestrate release-prep
|
|
280
241
|
|
|
281
242
|
# Sequential coverage improvement
|
|
282
|
-
|
|
243
|
+
empathy orchestrate test-coverage --target 90
|
|
283
244
|
```
|
|
284
245
|
|
|
285
246
|
### Response Caching
|
|
@@ -327,21 +288,21 @@ python -m attune.models.cli provider
|
|
|
327
288
|
python -m attune.models.cli provider --set hybrid
|
|
328
289
|
|
|
329
290
|
# Workflows
|
|
330
|
-
|
|
331
|
-
|
|
291
|
+
empathy workflow list
|
|
292
|
+
empathy workflow run <workflow-name>
|
|
332
293
|
|
|
333
294
|
# Cost tracking
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
295
|
+
empathy telemetry show
|
|
296
|
+
empathy telemetry savings --days 30
|
|
297
|
+
empathy telemetry export --format csv
|
|
337
298
|
|
|
338
299
|
# Orchestration
|
|
339
|
-
|
|
340
|
-
|
|
300
|
+
empathy orchestrate release-prep
|
|
301
|
+
empathy orchestrate test-coverage --target 90
|
|
341
302
|
|
|
342
303
|
# Meta-workflows
|
|
343
|
-
|
|
344
|
-
|
|
304
|
+
empathy meta-workflow list
|
|
305
|
+
empathy meta-workflow run release-prep --real
|
|
345
306
|
```
|
|
346
307
|
|
|
347
308
|
---
|
|
@@ -387,7 +348,7 @@ export REDIS_URL="redis://localhost:6379"
|
|
|
387
348
|
|
|
388
349
|
## VSCode Extension
|
|
389
350
|
|
|
390
|
-
Install the
|
|
351
|
+
Install the Empathy VSCode extension for:
|
|
391
352
|
|
|
392
353
|
- **Dashboard** - Health score, costs, patterns
|
|
393
354
|
- **One-Click Workflows** - Run from command palette
|
|
@@ -422,10 +383,10 @@ See [SECURITY.md](SECURITY.md) for vulnerability reporting.
|
|
|
422
383
|
|
|
423
384
|
```bash
|
|
424
385
|
# Run security audit locally
|
|
425
|
-
|
|
386
|
+
empathy workflow run security-audit
|
|
426
387
|
|
|
427
388
|
# Scan specific directory
|
|
428
|
-
|
|
389
|
+
empathy workflow run security-audit --input '{"path":"./src"}'
|
|
429
390
|
```
|
|
430
391
|
|
|
431
392
|
**Documentation:**
|